[alsa-devel] `hda-intel: spurious response` several times in output of `dmesg`
Takashi Iwai
tiwai at suse.de
Thu Sep 29 15:33:21 CEST 2011
At Thu, 29 Sep 2011 15:27:07 +0200,
Paul Menzel wrote:
>
> Am Dienstag, den 27.09.2011, 14:52 +0200 schrieb Takashi Iwai:
> > At Mon, 19 Sep 2011 20:39:58 +0200,
> > Paul Menzel wrote:
> > >
> > > Am Montag, den 19.09.2011, 15:19 +0200 schrieb Takashi Iwai:
> > > > At Mon, 19 Sep 2011 14:50:35 +0200, Paul Menzel wrote:
> > > > >
> > > > > Am Montag, den 19.09.2011, 11:27 +0200 schrieb Takashi Iwai:
> > > > > > At Sun, 18 Sep 2011 20:28:03 +0200, Paul Menzel wrote:
> > > > > > >
> > > > > > > Am Mittwoch, den 14.09.2011, 00:11 +0200 schrieb Paul Menzel:
> > > > > > > > Am Montag, den 12.09.2011, 11:28 +0200 schrieb Takashi Iwai:
> > > > > > > > > At Wed, 31 Aug 2011 12:37:28 +0200, Daniel Mack wrote:
> > > > > > > > > >
> > > > > > > > > > On Wed, Aug 31, 2011 at 12:19 PM, Paul Menzel wrote:
> > > > > > > >
> > > > > > > > > > > Am Donnerstag, den 25.08.2011, 17:01 +0200 schrieb Paul Menzel:
> > > > > > > > > > >
> > > > > > > > > > > […]
> > > > > > > > > > >
> > > > > > > > > > >> I just want to add that I also see these messages with Linux kernel
> > > > > > > > > > >> 3.0.2 and say seem to be related to suspend and resume.
> > > > > > > > > > >>
> > > > > > > > > > >> The values seem to differ though every time.
> > > > > > > > > > >>
> > > > > > > > > > >> [ 1130.984969] hda-intel: spurious response 0x0:0x0, last cmd=0x620000
> > > > > > > > > > >> [ 1130.984990] hda-intel: spurious response 0x1003c:0x0, last cmd=0x620000
> > > > > > > > > > >> [ 1130.985011] hda-intel: spurious response 0x0:0x0, last cmd=0x620000
> > > > > > > > > > >> [ 1130.985032] hda-intel: spurious response 0x10034:0x0, last cmd=0x620000
> > > > > > > > > > >> [ 1130.985053] hda-intel: spurious response 0x0:0x0, last cmd=0x620000
> > > > > > > > > > >>
> > > > > > > > > > >> [ … another suspend/resume … ]
> > > > > > > > > > >>
> > > > > > > > > > >> [ 2726.277102] hda-intel: spurious response 0x0:0x0, last cmd=0x1e70700
> > > > > > > > > > >> [ 2726.277123] hda-intel: spurious response 0x0:0x0, last cmd=0x1e70700
> > > > > > > > > > >> [ 2726.277144] hda-intel: spurious response 0x0:0x0, last cmd=0x1e70700
> > > > > > > > > > >> [ 2726.277165] hda-intel: spurious response 0xb:0x0, last cmd=0x1e70700
> > > > > > > > > > >>
> > > > > > > > > > >> Please find the output of `alsa-info.sh` [1] with this Linux version at
> > > > > > > > > > >> the end.
> > > > > > >
> > > > > > > […]
> > > > > > >
> > > > > > > > > The verb 0x620000 is to set a stream format to NID 0x06.
> > > > > > > > > For further debugging, more detailed information is needed.
> > > > > > > > >
> > > > > > > > > I seem to have lost the original post, so could you attach
> > > > > > > > > alsa-info.sh output again, Paul?
> > > > > > > >
> > > > > > > > Unfortunately I have to compress them due to the size limit. (Could you
> > > > > > > > increase that to for example 150 kB?)
> > > > > > >
> > > > > > > The output of `alsa-info.sh` with Linux 3.1-rc6 (3ab0fcd6c)
> > > > > > >
> > > > > > > commit 3ab0fcd6cd45d0d0cac114e498848f37e7a463b2
> > > > > > > Merge: 9183834 14515a0
> > > > > > > Author: Takashi Iwai <tiwai at suse.de>
> > > > > > > Date: Fri Sep 16 08:34:05 2011 +0200
> > > > > > >
> > > > > > > Merge branch 'topic/misc'
> > > > > > >
> > > > > > > is as follows.
> > > > > >
> > > > > > Thanks. Judging from the alsa-info.sh output, the relevant widgets
> > > > > > are for the SPDIF output, and I guess the messages are harmless.
> > > > > >
> > > > > > Anyway, could you try the patch below?
> > > > >
> > > > > > ---
> > > > > > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> > > > > > index 2a8bed9..ef7e8de 100644
> > > > > > --- a/sound/pci/hda/hda_intel.c
> > > > > > +++ b/sound/pci/hda/hda_intel.c
> > > > > > @@ -2925,7 +2925,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
> > > > > > .driver_data = AZX_DRIVER_ATIHDMI | AZX_DCAPS_PRESET_ATI_HDMI },
> > > > > > /* VIA VT8251/VT8237A */
> > > > > > { PCI_DEVICE(0x1106, 0x3288),
> > > > > > - .driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA },
> > > > > > + .driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA | AZX_DCAPS_SYNC_WRITE },
> > > > > > /* SIS966 */
> > > > > > { PCI_DEVICE(0x1039, 0x7502), .driver_data = AZX_DRIVER_SIS },
> > > > > > /* ULI M5461 */
> > > > >
> > > > > I applied your patch, did `make oldconfig`, `make -j2 deb-pkg`,
> > > > > installed the packages and rebooted. But the message are still there as
> > > > > far as I can see.
> > > >
> > > > OK, then it's really spurious interrupts.
> > > > This should be harmless, so you can ignore these messages.
> > > >
> > > > Or, the patch below might work (just hide the messages).
> > > >
> > > > ---
> > > > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> > > > index 2a8bed9..3449024 100644
> > > > --- a/sound/pci/hda/hda_intel.c
> > > > +++ b/sound/pci/hda/hda_intel.c
> > > > @@ -443,6 +443,7 @@ struct azx {
> > > > unsigned int msi :1;
> > > > unsigned int irq_pending_warned :1;
> > > > unsigned int probing :1; /* codec probing phase */
> > > > + unsigned int in_suspend:1;
> > > >
> > > > /* for debugging */
> > > > unsigned int last_cmd[AZX_MAX_CODECS];
> > > > @@ -696,11 +697,15 @@ static void azx_update_rirb(struct azx *chip)
> > > > chip->rirb.res[addr] = res;
> > > > smp_wmb();
> > > > chip->rirb.cmds[addr]--;
> > > > - } else
> > > > + } else if (!chip->in_suspend) {
> > > > + /* we ignore spurious response messages during susepnd,
> > >
> > > sus*pe*nd
> > >
> > > > + * as some chips actually send bogus messages
> > > > + */
> > > > snd_printk(KERN_ERR SFX "spurious response %#x:%#x, "
> > > > "last cmd=%#08x\n",
> > > > res, res_ex,
> > > > chip->last_cmd[addr]);
> > > > + }
> > > > }
> > > > }
> > > >
> > > > @@ -2267,6 +2272,7 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state)
> > > > struct azx *chip = card->private_data;
> > > > int i;
> > > >
> > > > + chip->in_suspend = 1;
> > > > snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
> > > > azx_clear_irq_pending(chip);
> > > > for (i = 0; i < HDA_MAX_PCMS; i++)
> > > > @@ -2283,6 +2289,7 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state)
> > > > pci_disable_device(pci);
> > > > pci_save_state(pci);
> > > > pci_set_power_state(pci, pci_choose_state(pci, state));
> > > > + chip->in_suspend = 0;
> > > > return 0;
> > > > }
> > >
> > > Takashi, thank you very much for help and bearing with me. I applied
> > > your patch on top of the other one. The messages after resuming are gone
> > > but I still get these messages on start up (I think logging into GNOME).
> >
> > OK, so something must be done not only suppressing the PM warnings.
> >
> > BTW, I'm checking the non-snooping mode, and it might help in some
> > corner cases like yours, too. Could you test the patch below?
> > It might be fuzzy to apply to 3.0, but should be trivial to edit by
> > hand.
>
> […]
>
> I applied your patch on top of 72179668d9bab7cc2d4ceb8de564f2e8835a1fdb.
> But I am still seeing these messages. Sound playback works though.
OK, then it's irrelevant.
I have no more clue what could be wrong.
A simple way to reduce this annoying log is to put prink_ratelimit()
like the patch below. Does it help a bit?
Takashi
---
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index fbf5cfc..cd19d8e 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -754,7 +754,7 @@ static void azx_update_rirb(struct azx *chip)
chip->rirb.res[addr] = res;
smp_wmb();
chip->rirb.cmds[addr]--;
- } else
+ } else if (printk_ratelimit())
snd_printk(KERN_ERR SFX "spurious response %#x:%#x, "
"last cmd=%#08x\n",
res, res_ex,
More information about the Alsa-devel
mailing list