Skip to content

Can't recover from FW initiated Xrun #902

Closed

Description

@keyonjie

Today's FW can't recover from FW initiated Xrun, that means, once underrun/overrun happens on component copy, the FW will dead and will not response to any IPC from host.

We can easily expose this issue with test code pasted here:
keyonjie@6ffaa89

dmesg error:

[   16.230595] rfkill: input handler enabled
[   27.047404] sof-audio sof-audio: pcm: open stream 0 dir 0
[   27.047409] sof-audio sof-audio: period min 192 max 16384 bytes
[   27.047411] sof-audio sof-audio: period count 2 max 16
[   27.047413] sof-audio sof-audio: buffer max 65536 bytes
[   27.047957] sof-audio sof-audio: rate_min: 48000 rate_max: 48000
[   27.047961] sof-audio sof-audio: channels_min: 2 channels_max: 2
[   27.047965] sof-audio sof-audio: rate_min: 48000 rate_max: 48000
[   27.047966] sof-audio sof-audio: channels_min: 2 channels_max: 2
[   27.047969] sof-audio sof-audio: rate_min: 48000 rate_max: 48000
[   27.047970] sof-audio sof-audio: channels_min: 2 channels_max: 2
[   27.047976] sof-audio sof-audio: pcm: hw params stream 0 dir 0
[   27.047980] sof-audio sof-audio: generating page table for 00000000e97e5175 size 0xff00 pages 16
[   27.048001] sof-audio sof-audio: period_bytes:0xfc0
[   27.048003] sof-audio sof-audio: periods:16
[   27.048011] sof-audio sof-audio: stream_tag 1
[   27.048039] sof-audio sof-audio: ipc tx: 0x60010000: GLB_STREAM_MSG: PCM_PARAMS
[   27.048234] sof-audio sof-audio: ipc tx succeeded: 0x60010000: GLB_STREAM_MSG: PCM_PARAMS
[   27.049583] sof-audio sof-audio: pcm: trigger stream 0 dir 0 cmd 1
[   27.049602] sof-audio sof-audio: ipc tx: 0x60040000: GLB_STREAM_MSG: TRIG_START
[   27.049805] sof-audio sof-audio: ipc tx succeeded: 0x60040000: GLB_STREAM_MSG: TRIG_START
[   27.965456] sof-audio sof-audio: ipc rx: 0x90020000: GLB_TRACE_MSG
[   27.965539] sof-audio sof-audio: ipc rx done: 0x90020000: GLB_TRACE_MSG
[   32.965339] sof-audio sof-audio: ipc rx: 0x90020000: GLB_TRACE_MSG
[   32.965377] sof-audio sof-audio: ipc rx done: 0x90020000: GLB_TRACE_MSG
[   37.965460] sof-audio sof-audio: ipc rx: 0x90020000: GLB_TRACE_MSG
[   37.965502] sof-audio sof-audio: ipc rx done: 0x90020000: GLB_TRACE_MSG
[   43.213014] sof-audio sof-audio: pcm: trigger stream 0 dir 0 cmd 0
[   43.213061] sof-audio sof-audio: ipc tx: 0x60050000: GLB_STREAM_MSG: TRIG_STOP
[   43.213381] sof-audio sof-audio: error: ipc error for 0x60050000 size 0xc
[   43.213406]  Port0: ASoC: trigger FE failed -22
[   43.213444] sof-audio sof-audio: pcm: free stream 0 dir 0
[   43.213465] sof-audio sof-audio: ipc tx: 0x60030000: GLB_STREAM_MSG: PCM_FREE
[   43.213672] sof-audio sof-audio: ipc tx succeeded: 0x60030000: GLB_STREAM_MSG: PCM_FREE
[   43.213788] sof-audio sof-audio: pcm: close stream 0 dir 0
[   43.965457] sof-audio sof-audio: ipc rx: 0x90020000: GLB_TRACE_MSG
[   43.965499] sof-audio sof-audio: ipc rx done: 0x90020000: GLB_TRACE_MSG

sof-logger dma trace:

    0      2       VOLUME            848072.760417         4.114583 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:326 	volume_ctrl_set_cmd(), SOF_CTRL_CMD_VOLUME, cdata->comp_id = 37
    0      2       VOLUME            848076.406250         3.645833 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:331 	volume_ctrl_set_cmd(), SOF_CTRL_CMD_VOLUME, channel = 0, value = 520
    0      2       VOLUME            848079.791667         3.385417 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:331 	volume_ctrl_set_cmd(), SOF_CTRL_CMD_VOLUME, channel = 1, value = 2608
    0      2          IPC            848218.645833       138.854172 /home/keyon/hdd/github/keyonjie/sof/src/ipc/handler.c:851 	ipc: hdr 0x50010000 tx (108) > rx (92)
    0      2          IPC            848222.812500         4.166667 /home/keyon/hdd/github/keyonjie/sof/src/ipc/handler.c:853 	ipc: comp 43 -> cmd 0
    0      2       VOLUME            848240.885417        18.072916 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:433 	volume_cmd()
    0      2       VOLUME            848244.843750         3.958333 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:326 	volume_ctrl_set_cmd(), SOF_CTRL_CMD_VOLUME, cdata->comp_id = 43
    0      2       VOLUME            848248.489583         3.645833 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:331 	volume_ctrl_set_cmd(), SOF_CTRL_CMD_VOLUME, channel = 0, value = 520



    0      2          IPC          22146618.020833  21298370.000000 /home/keyon/hdd/github/keyonjie/sof/src/ipc/handler.c:238 	ipc: comp 0 -> params
    0      2         PIPE 1.5      22146623.437500         5.416667 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:303 	pipeline_params()
    0      2         HOST          22146628.125000         4.687500 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:460 	host_params()
    0      2          DMA          22146635.781250         7.656250 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:594 	hda-dmac: 5 channel 0 -> get
    0      2          DMA          22146640.312500         4.531250 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:829 	hda-dmac: 5 channel 0 -> config
    0      2       VOLUME          22146646.927083         6.614583 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:241 	volume_params()
    0      2          DAI 1.4      22146651.927083         5.000000 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:412 	dai_params()
    0      2         PIPE 1.5      22146660.000000         8.072917 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:341 	pipeline_prepare()
    0      2         HOST          22146664.166667         4.166667 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:570 	host_prepare()
    0      2       VOLUME          22146669.739583         5.572917 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:532 	volume_prepare()
    0      2          DAI 1.4      22146676.822917         7.083333 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:461 	dai_prepare()
    0      2          IPC          22148183.645833      1506.822876 /home/keyon/hdd/github/keyonjie/sof/src/ipc/handler.c:463 	ipc: comp 0 -> trigger cmd 4
    0      2         PIPE 1.5      22148188.958333         5.312500 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:505 	pipeline_trigger()
    0      2         HOST          22148193.333333         4.375000 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:279 	host_trigger()
    0      2          DMA          22148197.708333         4.375000 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:664 	hda-dmac: 5 channel 0 -> start
    0      2          DMA          22148201.770833         4.062500 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:483 	hda-dmac: 5 channel 0 -> enable
    0      2       VOLUME          22148244.375000        42.604168 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:453 	volume_trigger()
    0      2          DAI 1.4      22148248.906250         4.531250 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:569 	dai_comp_trigger(), command = 1
    0      2          DAI 1.4      22148252.864583         3.958333 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:577 	dai_comp_trigger(), START
    0      2          DMA          22148260.572917         7.708333 /home/keyon/hdd/github/keyonjie/sof/src/drivers/dw-dma.c:1222	dw_dma_interrupt_register()
    0      2          SSP          22148269.895833         9.322917 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/ssp.c:868 	ssp_trigger() cmd 1






    0      1          DAI          27148282.187500   5000012.500000 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:676 	Keyon: hack for xrun debug!
    0      2         COMP          27148288.333333         6.145833 /home/keyon/hdd/github/keyonjie/sof/src/include/sof/audio/component.h:399 	comp_underrun(), ((dev->comp.id << 16) | source->avail) = 262528, ((min_bytes << 16) | copy_bytes) = 576
    0      2         PIPE 1.5      27148292.552083         4.218750 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:505 	pipeline_trigger()
    0      2         HOST          27148296.927083         4.375000 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:279 	host_trigger()
    0      2          DMA          27148301.614583         4.687500 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:768 	hda-dmac: 5 channel 0 -> stop
    0      2       VOLUME          27148306.406250         4.791667 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:453 	volume_trigger()
    0      2          DAI 1.4      27148310.572917         4.166667 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:569 	dai_comp_trigger(), command = 8
    0      2          DAI 1.4      27148314.427083         3.854167 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:646 	dai_comp_trigger(), XRUN
    0      2          DAI 1.4      27148318.072917         3.645833 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:652 	dai_comp_trigger(), PAUSE/STOP
    0      2          DMA          27148322.343750         4.270833 /home/keyon/hdd/github/keyonjie/sof/src/drivers/dw-dma.c:596 	dw-dma: 0 channel 0 stop
    0      2          SSP          27148331.458333         9.114583 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/ssp.c:868 	ssp_trigger() cmd 0
    0      2          SSP          27148462.760417       131.302078 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/ssp.c:849 	ssp_stop(), TX stop
    0      2          SSP          27148467.708333         4.947917 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/ssp.c:858 	ssp_stop(), SSP port disabled
    0      1          IPC          27148473.802083         6.093750 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:602 	pipeline_copy() error: ret = -5, dev->comp.id = 4, dir = 1
    0      1         PIPE 1.5      27148480.364583         6.562500 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:718 	pipeline_xrun_recover()
    0      2         PIPE 1.5      27148485.312500         4.947917 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:341 	pipeline_prepare()
    0      2         HOST          27148489.479167         4.166667 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:570 	host_prepare()
    0      2       VOLUME          27148495.000000         5.520833 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:532 	volume_prepare()
    0      2          DAI 1.4      27148501.822917         6.822917 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:461 	dai_prepare()
    0      2         PIPE 1.5      27148507.500000         5.677083 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:505 	pipeline_trigger()
    0      2         HOST          27148511.562500         4.062500 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:279 	host_trigger()
    0      2          DMA          27148515.989583         4.427083 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:664 	hda-dmac: 5 channel 0 -> start
    0      2          DMA          27148520.156250         4.166667 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:483 	hda-dmac: 5 channel 0 -> enable
    0      2       VOLUME          27148561.093750        40.937500 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:453 	volume_trigger()
    0      2          DAI 1.4      27148565.625000         4.531250 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:569 	dai_comp_trigger(), command = 1
    0      2          DAI 1.4      27148569.479167         3.854167 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:577 	dai_comp_trigger(), START
    0      2          DMA          27148576.927083         7.447917 /home/keyon/hdd/github/keyonjie/sof/src/drivers/dw-dma.c:1222	dw_dma_interrupt_register()









    0      1       VOLUME          32147593.177083   4999016.000000 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:480 	Keyon: hack for xrun debug!
    0      2         COMP          32147599.479167         6.302083 /home/keyon/hdd/github/keyonjie/sof/src/include/sof/audio/component.h:399 	comp_underrun(), ((dev->comp.id << 16) | source->avail) = 65920, ((min_bytes << 16) | copy_bytes) = 576
    0      2         PIPE 1.5      32147603.489583         4.010417 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:505 	pipeline_trigger()
    0      2         HOST          32147607.760417         4.270833 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:279 	host_trigger()
    0      2          DMA          32147612.395833         4.635417 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:768 	hda-dmac: 5 channel 0 -> stop
    0      2       VOLUME          32147617.031250         4.635417 /home/keyon/hdd/github/keyonjie/sof/src/audio/volume.c:453 	volume_trigger()
    0      2          DAI 1.4      32147621.197917         4.166667 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:569 	dai_comp_trigger(), command = 8
    0      2          DAI 1.4      32147625.052083         3.854167 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:646 	dai_comp_trigger(), XRUN
    0      2          DAI 1.4      32147628.697917         3.645833 /home/keyon/hdd/github/keyonjie/sof/src/audio/dai.c:652 	dai_comp_trigger(), PAUSE/STOP
    0      2          DMA          32147632.760417         4.062500 /home/keyon/hdd/github/keyonjie/sof/src/drivers/dw-dma.c:596 	dw-dma: 0 channel 0 stop
    0      2          SSP          32147641.145833         8.385417 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/ssp.c:868 	ssp_trigger() cmd 0
    0      2          SSP          32147773.020833       131.875000 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/ssp.c:849 	ssp_stop(), TX stop





    0      2          IPC          38311636.250000   6163863.000000 /home/keyon/hdd/github/keyonjie/sof/src/ipc/handler.c:463 	ipc: comp 0 -> trigger cmd 5
    0      2         PIPE 1.5      38311641.718750         5.468750 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:505 	pipeline_trigger()
    0      2         HOST          38311645.833333         4.114583 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:279 	host_trigger()
    0      1         COMP          38311649.947917         4.114583 /home/keyon/hdd/github/keyonjie/sof/src/audio/component.c:153 	comp_set_state() error: wrong state = 3, COMP_TRIGGER_STOP/XRUN
    0      1          IPC          38311655.625000         5.677083 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:520 	pipeline_trigger() error: ret = -22, host->comp.id = 0, cmd = 0
    0      1          IPC          38311662.239583         6.614583 /home/keyon/hdd/github/keyonjie/sof/src/ipc/handler.c:497 	ipc: comp 0 trigger 5 failed -22
    0      2          IPC          38312040.833333       378.593750 /home/keyon/hdd/github/keyonjie/sof/src/ipc/handler.c:366 	ipc: comp 0 -> free
    0      2         PIPE 1.5      38312046.093750         5.260417 /home/keyon/hdd/github/keyonjie/sof/src/audio/pipeline.c:548 	pipeline_reset()
    0      2         HOST          38312050.208333         4.114583 /home/keyon/hdd/github/keyonjie/sof/src/audio/host.c:632 	host_reset()
    0      2          DMA          38312054.531250         4.322917 /home/keyon/hdd/github/keyonjie/sof/src/drivers/intel/cavs/hda-dma.c:768 	hda-dmac: 5 channel 0 -> stop

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working as expected

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions