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

Ben Crocker bcrocker at redhat.com
Thu Feb 22 15:55:58 UTC 2018


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 at gmail.com> wrote:

> Am 22.02.2018 um 03:05 schrieb Alex Deucher:
>
>> On Wed, Feb 21, 2018 at 6:41 PM, Ben Crocker <bcrocker at redhat.com> 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 at redhat.com>
>>> ---
>>>   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 at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180222/625050f2/attachment-0001.html>


More information about the dri-devel mailing list