radeon ring 0 test failed on arm64

Christian König ckoenig.leichtzumerken at gmail.com
Tue May 25 15:09:59 UTC 2021


Am 25.05.21 um 16:19 schrieb Peter Geis:
> On Tue, May 25, 2021 at 10:08 AM Christian König
> <christian.koenig at amd.com> wrote:
>> Hi Peter,
>>
>> some comment additionally what Alex said.
>>
>> Am 25.05.21 um 04:34 schrieb Peter Geis:
>> [SNIP]
>>>           Memory at 300900000 (64-bit, non-prefetchable) [size=128K]
>> This here...
>>
>>>       [SNIP]
>>>           Memory at 300940000 (64-bit, non-prefetchable) [size=16K]
>> And that look rather fishy to me. The non-prefetchable memory on AMD
>> GPUs is 32bit, bit 64bit.
>>
>> Looks like something is wrong with the detection code here.
>>
>> Christian.
> Yes, you are correct. There's something weird with the allocation
> detection code and flags.
> It's currently being discussed on [1].
> Perhaps some crosstalk would be beneficial.
>
> I did notice that even if I flag the memory in the device-tree ranges
> as 32bit when the final allocation occurs it's flagged as 64bit.
> But it changes the behavior, because if it's flagged as 64bit in the
> device tree the allocation fails for most of the AMD BARs.

Well that the allocation fails is the least of your problems.

When you program a 32bit BAR as 64bit you overwrite the register behind 
the BAR address with the upper 32bits of the 64bit address value.

So even if the allocation fits into 32bits, the extra register write 
will certainly put your device into a banana state.

Feel free to loop me in on those discussions.

Regards,
Christian.


> [1]https://lore.kernel.org/lkml/7a1e2ebc-f7d8-8431-d844-41a9c36a8911@arm.com/
>
>>>           Capabilities: [50] Power Management version 3
>>>           Capabilities: [58] Express Legacy Endpoint, MSI 00
>>>           Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
>>>           Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1
>>> Len=010 <?>
>>>           Capabilities: [150] Advanced Error Reporting
>>>           Kernel driver in use: snd_hda_intel
>>>
>>> [    6.431312] rockchip-dw-pcie 3c0000000.pcie: Looking up
>>> vpcie3v3-supply from device tree
>>> [    6.434619] rockchip-dw-pcie 3c0000000.pcie: host bridge
>>> /pcie at fe260000 ranges:
>>> [    6.435350] rockchip-dw-pcie 3c0000000.pcie: Parsing ranges property...
>>> [    6.436018] rockchip-dw-pcie 3c0000000.pcie:       IO
>>> 0x0300800000..0x03008fffff -> 0x0000800000
>>> [    6.436978] rockchip-dw-pcie 3c0000000.pcie:      MEM
>>> 0x0300900000..0x033fffffff -> 0x0000900000
>>> [    6.438065] rockchip-dw-pcie 3c0000000.pcie: got 49 for legacy interrupt
>>> [    6.439386] rockchip-dw-pcie 3c0000000.pcie: found 5 interrupts
>>> [    6.439934] rockchip-dw-pcie 3c0000000.pcie: invalid resource
>>> [    6.440473] rockchip-dw-pcie 3c0000000.pcie: iATU unroll: enabled
>>> [    6.441029] rockchip-dw-pcie 3c0000000.pcie: Detected iATU regions:
>>> 8 outbound, 8 inbound
>>> [    6.650165] rockchip-dw-pcie 3c0000000.pcie: Link up
>>> [    6.652438] rockchip-dw-pcie 3c0000000.pcie: PCI host bridge to bus 0000:00
>>> [    6.653142] pci_bus 0000:00: root bus resource [bus 00]
>>> [    6.653899] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
>>> (bus address [0x800000-0x8fffff])
>>> [    6.654781] pci_bus 0000:00: root bus resource [mem
>>> 0x300900000-0x33fffffff] (bus address [0x00900000-0x3fffffff])
>>> [    6.655782] pci_bus 0000:00: scanning bus
>>> [    6.656689] pci 0000:00:00.0: disabling Extended Tags (this device
>>> can't handle them)
>>> [    6.657605] pci 0000:00:00.0: [1d87:3566] type 01 class 0x060400
>>> [    6.658418] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]
>>> [    6.659923] pci 0000:00:00.0: supports D1 D2
>>> [    6.660360] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
>>> [    6.661053] pci 0000:00:00.0: PME# disabled
>>> [    6.672578] pci_bus 0000:00: fixups for bus
>>> [    6.673063] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 0
>>> [    6.675021] pci_bus 0000:01: busn_res: can not insert [bus 01-ff]
>>> under [bus 00] (conflicts with (null) [bus 00])
>>> [    6.675993] pci_bus 0000:01: scanning bus
>>> [    6.676705] pci 0000:01:00.0: [1002:675d] type 00 class 0x030000
>>> [    6.677672] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x0fffffff
>>> 64bit pref]
>>> [    6.678493] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x0001ffff 64bit]
>>> [    6.679217] pci 0000:01:00.0: reg 0x20: initial BAR value 0x00000000 invalid
>>> [    6.679894] pci 0000:01:00.0: reg 0x20: [io  size 0x0100]
>>> [    6.680565] pci 0000:01:00.0: reg 0x30: [mem 0x00000000-0x0001ffff pref]
>>> [    6.682170] pci 0000:01:00.0: supports D1 D2
>>> [    6.682897] pci 0000:01:00.0: 2.000 Gb/s available PCIe bandwidth,
>>> limited by 2.5 GT/s PCIe x1 link at 0000:00:00.0 (capable of 32.000
>>> Gb/s with 2.5 GT/s PCIe x16 link)
>>> [    6.686670] pci 0000:01:00.0: vgaarb: VGA device added:
>>> decodes=io+mem,owns=none,locks=none
>>> [    6.688367] pci 0000:01:00.1: [1002:aa90] type 00 class 0x040300
>>> [    6.689168] pci 0000:01:00.1: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
>>> [    6.691099] pci 0000:01:00.1: supports D1 D2
>>> [    6.702495] pci_bus 0000:01: fixups for bus
>>> [    6.702935] pci_bus 0000:01: bus scan returning with max=01
>>> [    6.703500] pci 0000:00:00.0: scanning [bus 01-ff] behind bridge, pass 1
>>> [    6.704171] pci_bus 0000:00: bus scan returning with max=ff
>>> [    6.704768] pci 0000:00:00.0: BAR 15: assigned [mem
>>> 0x310000000-0x31fffffff 64bit pref]
>>> [    6.705664] pci 0000:00:00.0: BAR 14: assigned [mem 0x300900000-0x3009fffff]
>>> [    6.706337] pci 0000:00:00.0: BAR 6: assigned [mem
>>> 0x300a00000-0x300a0ffff pref]
>>> [    6.707035] pci 0000:00:00.0: BAR 13: assigned [io  0x1000-0x1fff]
>>> [    6.707687] pci 0000:01:00.0: BAR 0: assigned [mem
>>> 0x310000000-0x31fffffff 64bit pref]
>>> [    6.708522] pci 0000:01:00.0: BAR 2: assigned [mem
>>> 0x300900000-0x30091ffff 64bit]
>>> [    6.709411] pci 0000:01:00.0: BAR 6: assigned [mem
>>> 0x300920000-0x30093ffff pref]
>>> [    6.710116] pci 0000:01:00.1: BAR 0: assigned [mem
>>> 0x300940000-0x300943fff 64bit]
>>> [    6.710897] pci 0000:01:00.0: BAR 4: assigned [io  0x1000-0x10ff]
>>> [    6.711516] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
>>> [    6.712022] pci 0000:00:00.0:   bridge window [io  0x1000-0x1fff]
>>> [    6.712617] pci 0000:00:00.0:   bridge window [mem 0x300900000-0x3009fffff]
>>> [    6.713278] pci 0000:00:00.0:   bridge window [mem
>>> 0x310000000-0x31fffffff 64bit pref]
>>> [    6.716165] pcieport 0000:00:00.0: assign IRQ: got 95
>>> [    6.749839] pcieport 0000:00:00.0: PME: Signaling with IRQ 96
>>> [    6.751738] pcieport 0000:00:00.0: saving config space at offset
>>> 0x0 (reading 0x35661d87)
>>> [    6.752495] pcieport 0000:00:00.0: saving config space at offset
>>> 0x4 (reading 0x100507)
>>> [    6.753224] pcieport 0000:00:00.0: saving config space at offset
>>> 0x8 (reading 0x6040001)
>>> [    6.754217] pcieport 0000:00:00.0: saving config space at offset
>>> 0xc (reading 0x10000)
>>> [    6.754942] pcieport 0000:00:00.0: saving config space at offset
>>> 0x10 (reading 0x0)
>>> [    6.755640] pcieport 0000:00:00.0: saving config space at offset
>>> 0x14 (reading 0x0)
>>> [    6.756337] pcieport 0000:00:00.0: saving config space at offset
>>> 0x18 (reading 0xff0100)
>>> [    6.757073] pcieport 0000:00:00.0: saving config space at offset
>>> 0x1c (reading 0x20001010)
>>> [    6.757878] pcieport 0000:00:00.0: saving config space at offset
>>> 0x20 (reading 0x900090)
>>> [    6.758614] pcieport 0000:00:00.0: saving config space at offset
>>> 0x24 (reading 0x1ff11001)
>>> [    6.759361] pcieport 0000:00:00.0: saving config space at offset
>>> 0x28 (reading 0x0)
>>> [    6.760057] pcieport 0000:00:00.0: saving config space at offset
>>> 0x2c (reading 0x0)
>>> [    6.760752] pcieport 0000:00:00.0: saving config space at offset
>>> 0x30 (reading 0x0)
>>> [    6.761501] pcieport 0000:00:00.0: saving config space at offset
>>> 0x34 (reading 0x40)
>>> [    6.762206] pcieport 0000:00:00.0: saving config space at offset
>>> 0x38 (reading 0x0)
>>> [    6.762902] pcieport 0000:00:00.0: saving config space at offset
>>> 0x3c (reading 0x2015f)
>>> [    6.764350] radeon 0000:01:00.0: assign IRQ: got 95
>>> [    6.766212] radeon 0000:01:00.0: enabling device (0000 -> 0003)
>>> [    6.766911] [drm:drm_minor_register]
>>> [    6.770051] [drm:drm_minor_register] new minor registered 128
>>> [    6.770606] [drm:drm_minor_register]
>>> [    6.771958] [drm:drm_minor_register] new minor registered 0
>>> [    6.772640] [drm] initializing kernel modesetting (TURKS
>>> 0x1002:0x675D 0x1028:0x2B20 0x00).
>>> [    7.029251] [drm:radeon_get_bios] ATOMBIOS detected
>>> [    7.029814] ATOM BIOS: TURKS
>>> [    7.030100] [drm:atom_allocate_fb_scratch] atom firmware requested
>>> 00000000 0kb
>>> [    7.030901] [drm] GPU not posted. posting now...
>>> [    7.037575] radeon 0000:01:00.0: VRAM: 1024M 0x0000000000000000 -
>>> 0x000000003FFFFFFF (1024M used)
>>> [    7.038388] radeon 0000:01:00.0: GTT: 1024M 0x0000000040000000 -
>>> 0x000000007FFFFFFF
>>> [    7.039082] [drm] Detected VRAM RAM=1024M, BAR=256M
>>> [    7.039533] [drm] RAM width 128bits DDR
>>> [    7.040975] [drm] radeon: 1024M of VRAM memory ready
>>> [    7.041543] [drm] radeon: 1024M of GTT memory ready.
>>> [    7.042289] [drm:ni_init_microcode]
>>> [    7.042639] [drm] Loading TURKS Microcode
>>> [    7.043047] [drm] Internal thermal controller with fan control
>>> [    7.059713] [drm] radeon: dpm initialized
>>> [    7.060375] [drm] GART: num cpu pages 262144, num gpu pages 262144
>>> [    7.069457] [drm] enabling PCIE gen 2 link speeds, disable with
>>> radeon.pcie_gen2=0
>>> [    7.167901] [drm] PCIE GART of 1024M enabled (table at 0x0000000000162000).
>>> [    7.169257] radeon 0000:01:00.0: WB enabled
>>> [    7.169770] radeon 0000:01:00.0: fence driver on ring 0 use gpu
>>> addr 0x0000000040000c00
>>> [    7.170496] radeon 0000:01:00.0: fence driver on ring 3 use gpu
>>> addr 0x0000000040000c0c
>>> [    7.177636] radeon 0000:01:00.0: fence driver on ring 5 use gpu
>>> addr 0x0000000000072118
>>> [    7.182365] radeon 0000:01:00.0: radeon: MSI limited to 32-bit
>>> [    7.184105] radeon 0000:01:00.0: radeon: using MSI.
>>> [    7.184571] [drm:drm_irq_install] irq=97
>>> [    7.185619] [drm] radeon: irq initialized.
>>> [    7.186795] radeon 0000:01:00.0: enabling bus mastering
>>> [    7.187346] [drm:evergreen_irq_process] evergreen_irq_process
>>> start: rptr 0, wptr 96
>>> [    7.188118] [drm:evergreen_irq_process] IH: D1 flip
>>> [    7.188563] [drm:evergreen_irq_process] IH: D2 flip
>>> [    7.189006] [drm:evergreen_irq_process] IH: D3 flip
>>> [    7.189450] [drm:evergreen_irq_process] IH: D4 flip
>>> [    7.189894] [drm:evergreen_irq_process] IH: D5 flip
>>> [    7.190337] [drm:evergreen_irq_process] IH: D6 flip
>>> [    7.190811] [drm:evergreen_irq_process] evergreen_irq_process
>>> start: rptr 96, wptr 96
>>> [    7.530753] [drm:r600_ring_test] *ERROR* radeon: ring 0 test failed
>>> (scratch(0x8504)=0xCAFEDEAD)
>>> [    7.531564] radeon 0000:01:00.0: disabling GPU acceleration
>>> [    7.533961] [drm:drm_irq_uninstall] irq=97
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx



More information about the amd-gfx mailing list