(Third try, after turning on Plain Text mode in Gmail; apologies if you got this more than once)
Hi Greg,
Thanks for the note. I think this is a case of the same change having been checked in on different branches. I downloaded the linux-4.16.3 tarball, unpacked it, and examined radeon_device.c; the correct change is there in radeon_device_init (the four lines beginning "#ifdef CONFIG_PPC64").
Looking at the whole git log, I see two instances of exactly the same patch:
commit bcb0b981c5571744ac446a6c906aa05a28d21446 Author: Ben Crocker bcrocker@redhat.com Date: Thu Feb 22 17:52:19 2018 -0500
drm/radeon: insist on 32-bit DMA for Cedar on PPC64/PPC64LE
and
commit 2c83029cda55a5e7665c7c6326909427d6a01350 Author: Ben Crocker bcrocker@redhat.com Date: Thu Feb 22 17:52:19 2018 -0500
drm/radeon: insist on 32-bit DMA for Cedar on PPC64/PPC64LE
A colleague of mine here at Red Hat thinks that no further action is necessary; please let me know what you think.
Thanks, Ben
On Sun, Apr 22, 2018 at 4:19 AM, gregkh@linuxfoundation.org wrote:
The patch below does not apply to the 4.16-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to stable@vger.kernel.org.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From bcb0b981c5571744ac446a6c906aa05a28d21446 Mon Sep 17 00:00:00 2001 From: Ben Crocker bcrocker@redhat.com Date: Thu, 22 Feb 2018 17:52:19 -0500 Subject: [PATCH] drm/radeon: insist on 32-bit DMA for Cedar on PPC64/PPC64LE
In radeon_device_init, set the need_dma32 flag for Cedar chips (e.g. FirePro 2270). This fixes, or at least works around, a bug on PowerPC exposed by last year's commits
8e3f1b1d8255105f31556aacf8aeb6071b00d469 (Russell Currey)
and
253fd51e2f533552ae35a0c661705da6c4842c1b (Alistair Popple)
which enabled the 64-bit DMA iommu bypass.
This caused the device to freeze, in some cases unrecoverably, and is the subject of several bug reports internal to Red Hat.
Signed-off-by: Ben Crocker bcrocker@redhat.com Signed-off-by: Alex Deucher alexander.deucher@amd.com Cc: stable@vger.kernel.org
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 7f40c6f7c4dd..e415d2c097a7 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -1366,6 +1366,10 @@ int radeon_device_init(struct radeon_device *rdev, if ((rdev->flags & RADEON_IS_PCI) && (rdev->family <= CHIP_RS740)) rdev->need_dma32 = true; +#ifdef CONFIG_PPC64
if (rdev->family == CHIP_CEDAR)
rdev->need_dma32 = true;
+#endif
dma_bits = rdev->need_dma32 ? 32 : 40; r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits));