Subject: Re: AGPGART driver for ArticiaS - ioremap() problem

From: Benjamin Herrenschmidt <[email-masked]>
Date: Wed, 18 Jan 2006 08:24:31 +1100

> That's the problem: we don't have the datasheet for the ArticiaS. :-( 
> But the driver initializes correctly with the Uninorth code now and with the
> DRI/DRM code changed. (The code in drm_vm.c checks for Apple's PCI vendor
> ID. Therefore I just added a check for MAI's PCI vendor ID.) But the X
> server freezes after the login screen is displayed (IIRC the mouse still
> works, but the keyboard is dead!?).

That check is only necessary because Apple bridge puts the AGP aperture
at bus address 0. This is probably not the case for you. You may not
have that right. Check what you put in agp_bridge->gart_bus_addr

> BTW: A "agp_special_page" is reserved in init.c. Is this page necessary for
> the DRI/DRM drivers to work with the Uninorth driver? I enabled this code
> snipped for the AmigaONE too to be on the safe side. :-)

It's, I think, still used by the r128 one, but it's not a very good
workaround.

> There may be another problem: it seems that it is not possible to flush the 
> TLB cache of the ArticiaS with a specific register setting. At least MAI
> didn't specify a bit for this purpose in the code. I have to do some reverse
> engineering here. :-)

Hrm... You definitely need a way to flush it

> >  - The AGP aperture itself. The main issue there is wether your chipset
> > makes the AGP aperture visible to the CPU or not. The Apple UniNorth one
> > doesn't for example, it;'s only visible to the graphic chip. That is why
> > the uninorth driver sets cant_use_aperture to 1. That forces the DRM to
> > generate AGP mappings by using the real memory pages and putting them
> > together into a virtual mapping instead of doing a direct mapping of the
> > AGP aperture on the bus. Most x86 chipsets however _can_, thus a simple
> > remapping of pages is enough.

> Good question! How would I have to modify the Uninorth driver to use a
> direct mapping of the AGP aperture on the bus?

Don't set cant_use_aperture to 1 :)

Ben.