vgapci doesn't want to attach agp on ASUS M5A
jhb at freebsd.org
Wed Dec 28 05:53:40 PST 2005
On Wednesday 28 December 2005 01:39 am, Eric Anholt wrote:
> On Wed, 2005-12-28 at 08:25 +0200, Dmitry Pryanishnikov wrote:
> > Hello!
> > On Tue, 27 Dec 2005, John Baldwin wrote:
> > >> I have same problem in my i830M, too and fixed Dmitry's patch.
> > >> According to my pciconf -rb, pci_find_extcap(dev, PCIY_AGP, NULL)
> > >> never find PCIY_AGP(because of 0x01).
> > >
> > > Ok. I don't see any patch anywhere,
> > It's trivial:
> > --- vga_pci.c.orig Thu Dec 22 18:25:22 2005
> > +++ vga_pci.c Sun Dec 25 13:04:09 2005
> > @@ -74,7 +74,7 @@
> > * If AGP capabilities are present on this device, then create
> > * an AGP child.
> > */
> > - if (pci_find_extcap(dev, PCIY_AGP, NULL) == 0)
> > +// if (pci_find_extcap(dev, PCIY_AGP, NULL) == 0)
> > device_add_child(dev, "agp", -1);
> > > but it sounds like you'll need to fix the
> > > DRM driver to not expect an AGP capability for this specific card or
> > > some such.
> > I'm not sure here. Yes, Intel's Mobile 915 PM/GM/GMS and 910GML Express
> > Chipsets don't claim AGP capability. But they still contain AGP-related
> > registers for compatibility. Moreover, we've just added those chipsets
> > support to our sys/pci/agp_i810.c! So now we have an inconsistency
> > between agp_i810.c and vga_pci.c and this should be fixed in order to get
> > working DRM on those chipsets (people DO report that this hack makes DRM
> > happy, I've not tried to explore it's actual functionality under XFree
> > yet). For long-term solution, maybe we should have PCI Express-specific
> > module which should attach to vga_pci and provide service similar to agp
> > module.
> This is my understanding:
> The PCIE i915 chipsets have an internal gart which happens to do just
> the same thing for the graphics hardware as AGP did, in a rather similar
> way for us to program as how AGP used to be. So Linux and FreeBSD both
> just expose an AGP device using this gart, and the DRM happily uses it.
> However, because it's not *actually* AGP, it doesn't have the AGP
> capability set, so we need to pretend like it's set.
What I will do to fix this is to change all the agp drivers to use identify
routines, then the hostb and vgapci drivers won't have to know to create agp
child devices at all. Eventually I'd like to change drm in the same way, but
I will do agp first as it's in the tree.
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-current