Re: [PATCH] drm/radeon: insist on 32-bit DMA for Cedar

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

 



Alex, Christian, et al.

Thanks for your rapid response!

I can certainly make the change PPC-only (#ifdef CONFIG_PPC64...) and I think
that's the safest way to go right now.  It makes the patch very specific to Cedar
on PowerPC64, so it doesn't break anything that may have come to depend on
Russell's and Alistair's changes, and my timetable for getting a fix in is very short.

-- Ben



On Thu, Feb 22, 2018 at 2:25 AM, Christian König <ckoenig.leichtzumerken@xxxxxxxxx> wrote:
Am 22.02.2018 um 03:05 schrieb Alex Deucher:
On Wed, Feb 21, 2018 at 6:41 PM, Ben Crocker <bcrocker@xxxxxxxxxx> wrote:
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.
Can we make this ppc only?  40 bit DMA works fine on x86.

Yeah and at least when the dma_coherent allocator path is used it should work fine on PPC as well.

So that is not really a driver bug, but a platform bug and we should think about reverting or at least disabling those two patches instead.

Christian.


Alex

Signed-off-by: Ben Crocker <bcrocker@xxxxxxxxxx>
---
  drivers/gpu/drm/radeon/radeon_device.c | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index ffc10cadcf34..02538903830d 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -1395,7 +1395,10 @@ int radeon_device_init(struct radeon_device *rdev,
         if (rdev->flags & RADEON_IS_AGP)
                 rdev->need_dma32 = true;
         if ((rdev->flags & RADEON_IS_PCI) &&
-           (rdev->family <= CHIP_RS740))
+           (rdev->family <= CHIP_RS740 || rdev->family == CHIP_CEDAR))
+               rdev->need_dma32 = true;
+       if ((rdev->flags & RADEON_IS_PCIE) &&
+           (rdev->family == CHIP_CEDAR))
                 rdev->need_dma32 = true;

         dma_bits = rdev->need_dma32 ? 32 : 40;
--
2.13.6

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxg
https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux