On Mon, Apr 09, 2018 at 09:39:06PM +0200, Takashi Iwai wrote:
On Mon, 09 Apr 2018 20:57:43 +0200, Pierre-Louis Bossart wrote:
On 4/9/18 5:46 AM, Jia-Ju Bai wrote:
broxton_audio_probe() is never called in atomic context. This function is only set as ".probe" in "struct platform_driver".
Despite never getting called from atomic context, broxton_audio_probe() calls devm_kzalloc() with GFP_ATOMIC, which waits busily for allocation. GFP_ATOMIC is not necessary and can be replaced with GFP_KERNEL, to avoid busy waiting and improve the possibility of sucessful allocation.
[answering for the series] Humm, this is interesting. If indeed we can afford to sleep then the change should be done on ALL 14 boards in sound/soc/intel/boards which follow the same code pattern. If we cannot sleep then then none of these changes should be applied. Liam and Vinod?
It must be sleepable context as it's a standard platform driver probe callback.
And now looking at grep output, only sound/soc/intel contains so many calls with GFP_ATOMIC. I bet that almost all can be done with GFP_KERNEL, maybe only one or two in atom/sst would be conditionally with GFP_ATOMIC.
Yeah I don't see many cases which would warrant atomic context, I will review them and fix these after merge window closes. Clearly machines have no reason for that, and I guess most are copy-paste from 1st culprit