On Mon, Mar 15, 2021 at 11:05:21AM -0400, Alex Deucher wrote: > On Mon, Mar 15, 2021 at 4:04 AM Nicholas Johnson > <nicholas.johnson-opensource@xxxxxxxxxxxxxx> wrote: > > > > When using some Thunderbolt hosts using BIOS-assisted PCI enumeration > > with IO BAR assigned, we get an atombios timeout, such as: > > > > [drm:atom_op_jump [amdgpu]] *ERROR* atombios stuck in loop for more than 20secs aborting > > [drm:amdgpu_atom_execute_table_locked [amdgpu]] *ERROR* atombios stuck executing B456 (len 304, WS 4, PS 0) @ 0xB51B > > [drm:amdgpu_atom_execute_table_locked [amdgpu]] *ERROR* atombios stuck executing B104 (len 183, WS 0, PS 8) @ 0xB17E > > amdgpu 0000:08:00.0: amdgpu: gpu post error! > > amdgpu 0000:08:00.0: amdgpu: Fatal error during GPU init > > amdgpu: probe of 0000:08:00.0 failed with error -22 > > > > A workaround is to use MMIO to access ATOMBIOS when device is > > Thunderbolt / USB4 attached. > > Missing your signed-off-by. Also, we can just remove the legacy IO > callbacks altogether. They are leftover from radeon and not required > at all on amdgpu. Sorry, it's been a while; I forgot "-s". And I like your patch much better. I look forward to the day when all new PCIe devices only have 64-bit MMIO_PREF BARs. Thanks for looking at this! If you are still doing work on surprise removal / driver unloading for Thunderbolt, then I am happy to do testing for you. Removal of DRM devices in Linux is the main sore point for me, and I would love to see it through. Regards, Nicholas Johnson > > Alex > > > > --- > > drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > > index 86add0f4e..5d16ec10d 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > > @@ -1999,11 +1999,15 @@ int amdgpu_atombios_init(struct amdgpu_device *adev) > > atom_card_info->reg_read = cail_reg_read; > > atom_card_info->reg_write = cail_reg_write; > > /* needed for iio ops */ > > - if (adev->rio_mem) { > > + if (adev->rio_mem && !pci_is_thunderbolt_attached(adev->pdev)) { > > atom_card_info->ioreg_read = cail_ioreg_read; > > atom_card_info->ioreg_write = cail_ioreg_write; > > } else { > > - DRM_DEBUG("PCI I/O BAR is not found. Using MMIO to access ATOM BIOS\n"); > > + if (pci_is_thunderbolt_attached(adev->pdev)) > > + DRM_DEBUG("Device is attached via Thunderbolt / USB4. Using MMIO to access ATOM BIOS\n"); > > + else > > + DRM_DEBUG("PCI I/O BAR is not found. Using MMIO to access ATOM BIOS\n"); > > + > > atom_card_info->ioreg_read = cail_reg_read; > > atom_card_info->ioreg_write = cail_reg_write; > > } > > -- > > 2.30.2 > > > > _______________________________________________ > > amd-gfx mailing list > > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx