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

Alex Deucher alexdeucher at gmail.com
Thu Feb 22 16:07:43 UTC 2018


On Thu, Feb 22, 2018 at 10:55 AM, Ben Crocker <bcrocker at redhat.com> wrote:
> 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.

If you want to go this route, you might just set need_dma32
unconditionally for PPC64.  The bus interface hw is pretty much the
same across all asics in this time period.

Alex


>
> -- 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
>>
>>
>


More information about the dri-devel mailing list