On Sun, 14 Jun 2015, Takashi Iwai wrote:
At Sun, 14 Jun 2015 10:20:59 +0200, Nicholas Mc Guire wrote:
PI compliance scanning with coccinelle flagged: ./sound/mips/ad1843.c:503:2-32: WARNING: timeout (5) seems HZ dependent
This was introduced in 'commit 862c2c0a61c5 ("ALSA: ALSA driver for SGI O2 audio board")'. schedule_timeout_interruptible() expects a timeout in jiffies so the numeric constant makes the effective timeout HZ dependent. Simply put it through msecs_to_jiffies() to make it HZ independent.
Signed-off-by: Nicholas Mc Guire hofrat@osadl.org
The loop here is bounded by 500 jiffies and it does not seem reasonable that it would loop 10 times faster on HZ=1000 configs over HZ=100 configs. The conversion via msecs_to_jiffies(5) ensures that it will loop at most 100 times for all configs of HZ which seems reasonable (to me) but needs to be checked by someone that knows the details of this driver.
Using 5ms looks reasonable for this case. However, schedule_timeout_interruptible() isn't. This is a loop that won't break. So, the best would be to replace it with msleep() or its friends.
Note that the CONFIG_SND_PCM_OSS dependency was not listed in the Depends on: in Kconfig (which it probably should)
Why at all? It has nothing to do with OSS.
the procedure to see the problem I used was (linux-next 20150612) make ip32_defconfig ARCH=mips make menuconfig ARCH=mips Device Drivers ... <M> Sound card support ---> <M> Advanced Linux Sound Architecture ---> [*] MIPS sound devices ---> <M> SGI O2 Audio
compiling fails with: MODPOST 95 modules ERROR: "snd_pcm_period_elapsed" [sound/mips/snd-sgi-o2.ko] undefined! ERROR: "snd_pcm_set_ops" [sound/mips/snd-sgi-o2.ko] undefined! ERROR: "snd_pcm_lib_get_vmalloc_page" [sound/mips/snd-sgi-o2.ko] undefined! ERROR: "snd_pcm_lib_ioctl" [sound/mips/snd-sgi-o2.ko] undefined! ERROR: "_snd_pcm_lib_alloc_vmalloc_buffer" [sound/mips/snd-sgi-o2.ko] undefined! ERROR: "snd_pcm_new" [sound/mips/snd-sgi-o2.ko] undefined! ERROR: "snd_pcm_lib_free_vmalloc_buffer" [sound/mips/snd-sgi-o2.ko] undefined! make[1]: *** [__modpost] Error 1 make: *** [modules] Error 2
as the pcm_lib functions depend on SND_PCM I added that - So if I add the below patch the problem goes away and the module build correclty - not saying that this is the right fix though (did not look into it in more detail yet)
From d9cb7d166613e6129f021a913f66f377f5ac56c0 Mon Sep 17 00:00:00 2001
From: Nicholas Mc Guire hofrat@osadl.org Date: Sun, 14 Jun 2015 19:06:19 +0200 Subject: [PATCH] ALSA: let SND_SGI_O2 select SND_PCM
Signed-off-by: Nicholas Mc Guire hofrat@osadl.org --- sound/mips/Kconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/mips/Kconfig b/sound/mips/Kconfig index d2f615a..7875af0 100644 --- a/sound/mips/Kconfig +++ b/sound/mips/Kconfig @@ -12,6 +12,7 @@ if SND_MIPS config SND_SGI_O2 tristate "SGI O2 Audio" depends on SGI_IP32 + select SND_PCM help Sound support for the SGI O2 Workstation.