[REGRESSION] Invalid gather when using Tegra210 media engines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Commit c8cc2655cc6c introduced a regression when trying to use the media
accelerators present on the Tegra X1 SoC.

I came across this regression when testing the branch [1] that leverages
the NVJPG engine in the Tegra X1 for decoding a JPEG file. After commit
c8cc2655cc6c we see the following error messages after submitting a job
through the TEGRA_CHANNEL_SUBMIT IOCTL:

[ 46.879757] tegra-nvjpg 54380000.nvjpg: invalid gather for push buffer 0x0000000108f08000 [ 46.888018] tegra-mc 70019000.memory-controller: host1xdmar: read @0x00000000021f7000: EMEM address decode error (EMEM decode error)
[   57.052256] ---- mlocks ----
[   57.055156] 0: unlocked
[   57.057620] 1: unlocked
[   57.060069] 2: unlocked
[   57.062533] 3: unlocked
[   57.064993] 4: unlocked
[   57.067439] 5: unlocked
[   57.069896] 6: unlocked
[   57.072351] 7: unlocked
[   57.074798] 8: unlocked
[   57.077254] 9: unlocked
[   57.079702] 10: unlocked
[   57.082251] 11: unlocked
[   57.084796] 12: unlocked
[   57.087329] 13: unlocked
[   57.089871] 14: unlocked
[   57.092411] 15: unlocked
[   57.094945]
[   57.096449] ---- syncpts ----
[   57.099423] id 0 (0-reserved-nop) min 0 max 0 (0 waiters)
[   57.104836] id 1 (1-54200000.dc) min 3261 max 0 (0 waiters)
[   57.110420] id 2 (2-54240000.dc) min 0 max 0 (0 waiters)
[   57.115745] id 3 (3-54340000.vic) min 0 max 0 (0 waiters)
[   57.121155] id 4 (4-ffmpeg) min 0 max 1 (1 waiters)
[   57.126275]
[   57.127766] ---- channels ----
[   57.130834] 0: fifo:
[   57.133029] FIFOSTAT 80100840
[   57.135997] [empty]
[   57.138109] 0-54340000.vic:
[   57.138113] inactive
[   57.138113]
[   57.144669] 1: fifo:
[   57.146856] FIFOSTAT 80100840
[   57.149833] [empty]
[   57.151936] 1-54340000.vic:
[   57.151940] inactive
[   57.151940]
[   57.158499] 2: fifo:
[   57.160694] FIFOSTAT 80100840
[   57.163661] [empty]
[   57.165775] 2-54380000.nvjpg:
[   57.165780] active class 00, offset 0fff, val ffffffff
[   57.173987] DMASTART 0x00000000021f7000, DMAEND 0x0000000000000ffc
[   57.180183] DMAPUT 00000010 DMAGET 00000010 DMACTL 00000000
[   57.185766] CBREAD ffffffff CBSTAT 00000fff
[   57.189960] JOB, syncpt 4: 1 timeout: 10000 num_slots: 2 num_handles: 1
[ 57.196587] 0x00000001021f7000: 00080041: SETCL(class=001, offset=008, mask=01, [04000000])
[   57.205314]     0x00000001021f7008: 00003000: SETCL(class=0c0)
[   57.211161]     0x00000001021f700c: 20000000: NONINCR(offset=000, [])
[   57.217622]   GATHER at 0x0000000108f08000+0x0, 32 words
[ 57.222944] 0x0000000108f08000: 10100002: INCR(offset=010, [00000080, 00000001]) [ 57.230708] 0x0000000108f0800c: 10100002: INCR(offset=010, [000001c0, 00000000]) [ 57.238472] 0x0000000108f08018: 10100002: INCR(offset=010, [000001c1, 00000000]) [ 57.246235] 0x0000000108f08024: 10100002: INCR(offset=010, [000001c2, 0005ae60]) [ 57.253998] 0x0000000108f08030: 10100002: INCR(offset=010, [000001c3, 0001fa40]) [ 57.261761] 0x0000000108f0803c: 10100002: INCR(offset=010, [000001c4, 000516a0]) [ 57.269524] 0x0000000108f08048: 10100002: INCR(offset=010, [000001c5, 0001fa60]) [ 57.277287] 0x0000000108f08054: 10100002: INCR(offset=010, [000001c6, 00000000]) [ 57.285050] 0x0000000108f08060: 10100002: INCR(offset=010, [000001c7, 00000000]) [ 57.292814] 0x0000000108f0806c: 10100002: INCR(offset=010, [000000c0, 00000100]) [ 57.300577] 0x0000000108f08078: 20000001: NONINCR(offset=000, [00000104])
[   57.307729]
[ 57.309236] tegra-host1x 50000000.host1x: cdma_timeout_handler: timeout: 4 (4-ffmpeg), HW thresh 0, done 1

These error messages are printed with commit fae6e669cdc5 applied. If
this commit is not applied not even the Display Controllers work, as mentioned in
the regression report [2], and there is no display output, which we at
least get with the fix from fae6e669cdc5.

Something interesting here is that prior to c8cc2655cc6c we see the
following messages in dmesg:

[    0.044463] platform 50000000.host1x: Adding to iommu group 0
[    0.044547] platform 57000000.gpu: Adding to iommu group 1
[ 1.385557] Failed to set up IOMMU for device 50000000.host1x; retaining platform DMA ops
[    1.395120] platform 54200000.dc: Adding to iommu group 2
[    1.400834] platform 54240000.dc: Adding to iommu group 2
[    1.406930] platform 54340000.vic: Adding to iommu group 3
[    1.412762] platform 54380000.nvjpg: Adding to iommu group 4
[ 1.420438] Failed to set up IOMMU for device 54200000.dc; retaining platform DMA ops [ 1.436616] Failed to set up IOMMU for device 54240000.dc; retaining platform DMA ops [ 1.456545] Failed to set up IOMMU for device 54340000.vic; retaining platform DMA ops [ 1.465057] Failed to set up IOMMU for device 54380000.nvjpg; retaining platform DMA ops

whereas after c8cc2655cc6c + fae6e669cdc5 we only get:

[    1.818480] tegra-host1x 50000000.host1x: Adding to iommu group 0
[    1.829288] tegra-dc 54200000.dc: Adding to iommu group 1
[    1.839705] tegra-dc 54240000.dc: Adding to iommu group 1
[    1.855328] tegra-vic 54340000.vic: Adding to iommu group 2
[    1.859287] tegra-nvjpg 54380000.nvjpg: Adding to iommu group 3

Here GPU does not show up because I disabled the compilation of Nouveau but
the results are the same.

Please let me know if you need more information on my side and I'll be
happy to provide it.

Best regards,
Diogo

#regzbot introduced: c8cc2655cc6c

[1]: https://gitlab.freedesktop.org/d.ivo/mesa/-/tree/diogo/vaapi_remove_gpu
[2]: https://lore.kernel.org/linux-tegra/bbmhcoghrprmbdibnjum6lefix2eoquxrde7wyqeulm4xabmlm@b6jy32saugqh/




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux