thesofproject / linux

Linux kernel source tree
Other
91 stars 131 forks source link

[HDA] ipc tx error is seen with pause_release after system suspend #3127

Closed 1994lwz closed 3 years ago

1994lwz commented 3 years ago

kernel: topic/sof-dev branch commit: 973aa02

To reproduce: Start a sdw pcm. eg. "aplay -D hw:0,0 -r 48000 -c 2 -f S16_LE -vv -i /dev/zero -q" on terminal 1 Press "space" to pause the stream on terminal 1. Run "sudo rtcwake -m mem -s 5" on terminal 2. Press "space" again on terminal 1 to release the stream after the system is resume. and we will see ipc tx error

Test platform: ADLS-RVP-HDA

[Terminal]

ubuntu@sh-adls-rvp-hda-05:~$ aplay -D hw:0,0 -r 48000 -c 2 -f S16_LE -vv -i /dev/zero -q
Hardware PCM card 0 'sof-hda-dsp' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 16384
  period_size  : 4096
  period_time  : 85333
  tstamp_mode  : NONE
  tstamp_type  : MONOTONIC
  period_step  : 1
  avail_min    : 4096
  period_event : 0
  start_threshold  : 16384
  stop_threshold   : 16384
  silence_threshold: 0
  silence_size : 0
  boundary     : 4611686018427387904
  appl_ptr     : 0
  hw_ptr       : 0
=== PAUSE ===                                                             
aplay: suspend:1691: suspend: prepare error: Invalid argument

[dmesg]

[dmesg.txt](https://github.com/thesofproject/linux/files/7080496/dmesg.txt)

[   35.881682] sof-audio-pci-intel-tgl 0000:00:1f.3: hda_dsp_stream_setup_bdl: period_bytes:0x0
[   35.881687] sof-audio-pci-intel-tgl 0000:00:1f.3: hda_dsp_stream_setup_bdl: periods:1
[   35.881754] sof-audio-pci-intel-tgl 0000:00:1f.3: snd_sof_init_trace_ipc: stream_tag: 1
[   35.881770] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx: 0x90030000: GLB_TRACE_MSG
[   35.882476] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx succeeded: 0x90030000: GLB_TRACE_MSG
[   35.883180] sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x80]=0x2014001e successful
[   35.883234] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx: 0x40020000: GLB_PM_MSG: CTX_RESTORE
[   35.883599] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx succeeded: 0x40020000: GLB_PM_MSG: CTX_RESTORE
[   36.067099] ata6: SATA link down (SStatus 4 SControl 300)
[   36.074697] ata8: SATA link down (SStatus 4 SControl 300)
[   36.074853] ata5: SATA link down (SStatus 4 SControl 300)
[   36.074988] ata7: SATA link down (SStatus 4 SControl 300)
[   36.399387] OOM killer enabled.
[   36.399393] Restarting tasks ...
[   36.404443] asix 1-7.1:1.0 enx000ec6675360: Link is Down
[   36.404618] done.
[   36.410298] rfkill: input handler enabled
[   36.882147] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc rx: 0x90020000: GLB_TRACE_MSG
[   36.882220] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc rx done: 0x90020000: GLB_TRACE_MSG
[   37.043636] video LNXVIDEO:00: Restoring backlight state
[   37.043661] PM: suspend exit
[   37.046277] rfkill: input handler disabled
[   38.447616] asix 1-7.1:1.0 enx000ec6675360: Link is Up - 100Mbps/Full - flow control off
[   47.998718] sof-audio-pci-intel-tgl 0000:00:1f.3: hda: prepare stream dir 0
[   47.998730] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx: 0x80010000: GLB_DAI_MSG: CONFIG
[   47.999043] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx error for 0x80010000 (msg/reply size: 216/12): -19
[   47.999058] sof-audio-pci-intel-tgl 0000:00:1f.3: error: failed resetting DAI config for HDA0.OUT
[   47.999075] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[   47.999428] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx succeeded: 0x30010000: GLB_TPLG_MSG: COMP_NEW
[   47.999437] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx: 0x80010000: GLB_DAI_MSG: CONFIG
[   47.999785] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx succeeded: 0x80010000: GLB_DAI_MSG: CONFIG
[   47.999800] sof-audio-pci-intel-tgl 0000:00:1f.3: widget HDA0.OUT setup complete
[   47.999814] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx: 0x80010000: GLB_DAI_MSG: CONFIG
[   48.000160] sof-audio-pci-intel-tgl 0000:00:1f.3: ipc tx succeeded: 0x80010000: GLB_DAI_MSG: CONFIG
[   48.000277] sof-audio-pci-intel-tgl 0000:00:1f.3: format_val=49, rate=48000, ch=2, format=10
[   48.001274] sof-audio-pci-intel-tgl 0000:00:1f.3: pcm: prepare stream 0 dir 0
[   48.001283] sof-audio-pci-intel-tgl 0000:00:1f.3: pcm: hw params stream 0 dir 0
[   48.001287] sof-audio-pci-intel-tgl 0000:00:1f.3: generating page table for 000000004c0cf284 size 0x10000 pages 16
[   48.001315] sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x160]=0x40000 successful
[   48.001428] sof-audio-pci-intel-tgl 0000:00:1f.3: FW Poll Status: reg[0x160]=0x40000 successful
[   48.001458] sof-audio-pci-intel-tgl 0000:00:1f.3: hda_dsp_stream_setup_bdl: period_bytes:0x4000
[   48.001463] sof-audio-pci-intel-tgl 0000:00:1f.3: hda_dsp_stream_setup_bdl: periods:4
[   48.001524] sof-audio-pci-intel-tgl 0000:00:1f.3: stream_tag 1
plbossart commented 3 years ago

reproduced on UpExtreme in default HDaudio mode

terminal 1: aplay -Dhw:0,0 -c2 -r48000 -fS16_LE -i /dev/zero press on space to pause terminal 2: rtcwake -m mem -s 2 wait for resume terminal 1: press on space

root@plb-UP-WHL01:~# aplay -Dhw:0,0 -c2 -r48000 -fS16_LE -i /dev/zero
Playing raw data '/dev/zero' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
=== PAUSE ===                                                             Suspended. Trying resume. Failed. Restarting stream. aplay: suspend:1714: suspend: prepare error: Invalid argument
[  119.580720] sof-audio-pci-intel-cnl 0000:00:1f.3: hda: prepare stream dir 0
[  119.580751] sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx: 0x80010000: GLB_DAI_MSG: CONFIG
[  119.580906] sof-audio-pci-intel-cnl 0000:00:1f.3: ipc tx error for 0x80010000 (msg/reply size: 216/12): -19
[  119.580921] sof-audio-pci-intel-cnl 0000:00:1f.3: error: failed resetting DAI config for HDA0.OUT

logger.log dmesg.log

@ranj063 can you take a look?

plbossart commented 3 years ago

kernel SHA1: bed17efc810a fixup! ASoC: SOF: handle paused streams during system suspend SOF SHA1: 6b650bd95 xtensa-build-zephyr: add imx8 as supported platform

plbossart commented 3 years ago

@1994lwz can you please try https://github.com/thesofproject/linux/pull/3133, it solves the problem for me. Thanks!

1994lwz commented 3 years ago

@1994lwz can you please try #3133, it solves the problem for me. Thanks!

I didn't see any issue with the updated #3133