After loosing some hairs trying to figure out where I screw up in mmaping the AGP aperture, here's a trivial fix.
Diff below corrects the first argument of the agpmmap() function that should be a dev_t and not a pointer to the driver's descriptor. Ok? Index: agp.c =================================================================== RCS file: /cvs/src/sys/dev/pci/agp.c,v retrieving revision 1.34 diff -u -p -r1.34 agp.c --- agp.c 26 Dec 2010 15:41:00 -0000 1.34 +++ agp.c 12 Nov 2012 18:20:48 -0000 @@ -60,7 +60,7 @@ int agp_generic_free_memory(struct agp_s void agp_attach(struct device *, struct device *, void *); int agp_probe(struct device *, void *, void *); int agpbusprint(void *, const char *); -paddr_t agpmmap(void *, off_t, int); +paddr_t agpmmap(dev_t, off_t, int); int agpioctl(dev_t, u_long, caddr_t, int, struct proc *); int agpopen(dev_t, int, int, struct proc *); int agpclose(dev_t, int, int , struct proc *); @@ -206,9 +206,12 @@ struct cfdriver agp_cd = { }; paddr_t -agpmmap(void *v, off_t off, int prot) +agpmmap(dev_t dev, off_t off, int prot) { - struct agp_softc* sc = (struct agp_softc *)v; + struct agp_softc *sc = agp_find_device(AGPUNIT(dev)); + + if (sc == NULL || sc->sc_chipc == NULL) + return (-1); if (sc->sc_apaddr) {