linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Lu, Brent" <brent.lu@intel.com>
To: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
	"alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>
Cc: Pierre-Louis Bossart DRIVERS 
	<pierre-louis.bossart@linux.intel.com>,
	"authored:2/16=12%,added_lines:21/248=8%,removed_lines:5/84=6%,),Liam
	Girdwood DRIVERS )" <lgirdwood@gmail.com>,
	"commit_signer:6/16=38%,authored:6/16=38%,added_lines:123/248=50%
	 ,removed_lines:36/84=43%,Kai Vehmanen DRIVERS )" 
	<kai.vehmanen@linux.intel.com>,
	"Daniel Baluta DRIVERS )" <daniel.baluta@nxp.com>,
	Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	"Rojewski, Cezary" <cezary.rojewski@intel.com>,
	Zhu Yingjiang <yingjiang.zhu@linux.intel.com>,
	Keyon Jie <yang.jie@linux.intel.com>,
	Bard Liao <yung-chuan.liao@linux.intel.com>,
	"sound-open-firmware@alsa-project.orgDRIVERS" 
	<sound-open-firmware@alsa-project.orgDRIVERS>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH] ASoC: SOF: Intel: hda: unsolicited RIRB response
Date: Thu, 11 Jun 2020 17:09:08 +0000	[thread overview]
Message-ID: <DM6PR11MB4316108BCF449D52E49C7E4297800@DM6PR11MB4316.namprd11.prod.outlook.com> (raw)
In-Reply-To: <b7e0b822a9deea506acaa40e0e31cc9f488bb446.camel@linux.intel.com>

> Hi Brent,
> 
> Thanks for the patch. Is this fix for a specific issue you're seeing?
> If so, could you please give us some details about it?
> 
> Thanks,
> Ranjani

Hi Ranjani,

It's reported to happen on GLK Chromebook 'Fleex' that sometimes it
cannot output the audio stream to external display. The kernel is
Chrome v4.14 branch. Following is the reproduce step provided by
ODM but I could reproduce it simply running aplay or cras_test_client
so I think it's not about the cable plug/unplug handling.

What steps will reproduce the problem?
1.      Play YouTube video on Chromebook and connect it to external monitor with Type C to DP dongle
2.      Press monitor power button to turn off the monitor
3.      Press monitor power button again to turn on the monitor
4.      Continue to play YouTube video and check audio playback
5.      No sound comes out from built-in speaker of external monitor when turn on external monitor

I added debug messages to print the RIRBWP register and realize that
response could come between the read of RIRBWP in the
snd_hdac_bus_update_rirb() function and the interrupt clear in the
hda_dsp_stream_interrupt() function. The response is not handled but
the interrupt is already cleared. It will cause timeout unless more
responses coming to RIRB.

[   69.173507] sof-audio-pci 0000:00:0e.0: snd_hdac_bus_get_response: addr 0x2
[   69.173567] sof-audio-pci 0000:00:0e.0: snd_hdac_bus_update_rirb: cmds 1 res 0 rp 21 wp 21
=> handle the response in slot 21
[   69.173570] sof-audio-pci 0000:00:0e.0: snd_hdac_bus_update_rirb: updated wp 22
=> new response in slot 22 but not handled
[   70.174089] sof-audio-pci 0000:00:0e.0: snd_hdac_bus_get_response: timeout, wp 22
[   70.174106] HDMI HDA Codec ehdaudio0D2: codec_read: fail to read codec

I found there is a commit addressing this issue and cherry-pick it to the
Chrome v4.14 but the issue is still there. I think more loop does not help
because eventually there will be response coming in the
snd_hdac_bus_update_rirb() function and become unhandled response
in the last loop.

commit 6297a0dc4c14a62bea5a9137ceef280cb7a80665
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Date:   Wed Jun 12 12:23:40 2019 -0500

    ASoC: SOF: Intel: hda: modify stream interrupt handler

    Modify the stream interrupt handler to always wake up the
    IRQ thread if the status register is valid. The IRQ thread
    performs the check for stream interrupts and RIRB interrupts
    in a loop to handle the case of missed interrupts when an
    unsolicited response from the codec is received just before the
    stream interrupt handler is completed.


Regards,
Brent


       reply	other threads:[~2020-06-11 17:09 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1591883073-17190-1-git-send-email-brent.lu@intel.com>
     [not found] ` <b7e0b822a9deea506acaa40e0e31cc9f488bb446.camel@linux.intel.com>
2020-06-11 17:09   ` Lu, Brent [this message]
2020-06-11 17:59     ` [PATCH] ASoC: SOF: Intel: hda: unsolicited RIRB response Takashi Iwai
2020-06-11 18:12       ` Ranjani Sridharan
2020-06-11 20:14         ` Takashi Iwai
2020-06-11 20:36           ` Pierre-Louis Bossart
2020-06-11 23:33             ` Lu, Brent
2020-06-12  6:15       ` Lu, Brent
2020-06-11 18:01     ` Pierre-Louis Bossart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM6PR11MB4316108BCF449D52E49C7E4297800@DM6PR11MB4316.namprd11.prod.outlook.com \
    --to=brent.lu@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=cezary.rojewski@intel.com \
    --cc=daniel.baluta@nxp.com \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=ranjani.sridharan@linux.intel.com \
    --cc=sound-open-firmware@alsa-project.orgDRIVERS \
    --cc=tiwai@suse.com \
    --cc=yang.jie@linux.intel.com \
    --cc=yingjiang.zhu@linux.intel.com \
    --cc=yung-chuan.liao@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).