Re: [PATCH] disable CPU side GART accesses

Dave Airlie
2008-11-03T23:56:03Z

On Tue, Nov 4, 2008 at 9:36 AM, Bob Montgomery <bob.montgomery@hp.com> wrote:
> On Wed, 2008-10-29 at 21:40 +0000, Dave Airlie wrote:
>> On Thu, Oct 30, 2008 at 7:32 AM, Dave Jones <davej@redhat.com> wrote:
>> > On Thu, Oct 30, 2008 at 07:24:34AM +1000, Dave Airlie wrote:
>> >
>> > > This stops the CPU from using the aperture for most DRI things. I
>> > > can't confirm this won't regress working systems
>> > > though. The whole AMD GART thing scares me, esp if some of the host
>> > > chipsets also have an AGP GART.
>> >
>> > The easy cop-out for those in the past has been 'dont support them'.
>> > It's why we removed some K8 chipset PCI IDs from the via driver for eg.
>> > iirc, if we leave them unprogrammed, they're essentially irrelevant.
>> >
>>
>> I was more going the other way, why use the IOMMU for AGP when it has
>> other tasks to
>> do, and we have a host chipset GART.
>>
>> Granted I've never had an AMD + AGP system to ever care about this.
>
> We're specifically talking about AMD64, and we're not using an IOMMU for
> AGP, we're using the AMD64 implementation of the GART for an IOMMU.
> The (possible) danger is that some old AMD64 system could also (or
> instead) try using the GART for AGP and run into a problem since my
> patch wants to disable CPU side access to the aperture, which is fine
> when we're using it as an IOMMU.
>
> In drivers/gpu/drm/drm_memory.c:agp_remap(), there are these comments
> about the part of the code that deals with "cant_use_aperture":
>
> /*
> * OK, we're mapping AGP space on a chipset/platform on which
> * memory accesses by the CPU do not get remapped by the GART.
> * We fix this by using the kernel's page-table instead (that's
> * probably faster anyhow...).
> */
>
> So that's encouraging. Now the question is this: Can I just go into
> amd64-agp.c and add ".cant_use_aperture=true" to the agp_bridge_driver
> struct? Who's brave enough to say that will just work? :-)

I have serious doubts about including such a patch without testing on
a large range of AMD64 systems
with a large range of distro/X servers.

Dave.

>
> static const struct agp_bridge_driver amd_8151_driver = {
> ...
>
> The "cant_use_aperture" paths have possibly
> never been tested on amd64 agp systems, but
> are in use on these systems:
>
> alpha-agp.c: .cant_use_aperture = true,
> hp-agp.c: .cant_use_aperture = true,
> i460-agp.c: .cant_use_aperture = true,
> parisc-agp.c: .cant_use_aperture = true,
> sgi-agp.c: .cant_use_aperture = true,
> uninorth-agp.c: .cant_use_aperture = true,
> uninorth-agp.c: .cant_use_aperture = true,
>
> Thanks for any more enlightenment,
> Bob Montgomery
>
>
>
>
>
>
>
>