AMD IOMMU + SME + amdgpu regression

From: Alex Xu (Hello71)
Date: Thu Jun 11 2020 - 19:05:33 EST


Hi,

amdgpu + IOMMU + SME is now working for me on 5.7, yay! But, it is
broken on torvalds master, boo. On boot, depending on which exact commit
I test, it either hangs immediately (with built-in driver, before
starting initramfs), displays some errors then hangs, or spams the
screen with many amdgpu errors.

I bisected the black screen hang to:

commit dce8d6964ebdb333383bacf5e7ab8c27df151218
Author: Joerg Roedel <jroedel@xxxxxxx>
Date: Wed Apr 29 15:36:53 2020 +0200

iommu/amd: Convert to probe/release_device() call-backs

Convert the AMD IOMMU Driver to use the probe_device() and
release_device() call-backs of iommu_ops, so that the iommu core code
does the group and sysfs setup.

Signed-off-by: Joerg Roedel <jroedel@xxxxxxx>
Link: https://lore.kernel.org/r/20200429133712.31431-16-joro@xxxxxxxxxx
Signed-off-by: Joerg Roedel <jroedel@xxxxxxx>

Testing torvalds master (623f6dc593) with the containing merge
(98bdc74b36) plus the DMA mapping merge (4e94d08734) reverted allows
amdgpu + IOMMU + SME to once again work.

I think that nobody is really working on amdgpu + SME, but it would be a
shame if it was supported and then incidentally broken by a small
change.

I am using an ASRock B450 Pro4 with Ryzen 1600 and ASUS RX 480. I don't
understand this code at all, but let me know what I can do to
troubleshoot.

Thanks,
Alex.