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