Index: sys/dev/pci/agp_i810.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/agp_i810.c,v
retrieving revision 1.112
diff -p -u -r1.112 agp_i810.c
--- sys/dev/pci/agp_i810.c	25 Jul 2014 23:05:54 -0000	1.112
+++ sys/dev/pci/agp_i810.c	4 Aug 2014 22:56:52 -0000
@@ -405,7 +405,9 @@ agp_i810_attach(device_t parent, device_
 		apbase = AGP_I965_GMADR;
 		mmadr_bar = AGP_I965_MMADR;
 		mmadr_type |= PCI_MAPREG_MEM_TYPE_64BIT;
-		isc->size = 512*1024;
+		if (pci_mapreg_info(isc->vga_pa.pa_pc, isc->vga_pa.pa_tag,
+			AGP_I965_MMADR, mmadr_type, NULL, &isc->size, NULL))
+			isc->size = 512*1024; /* XXX */
 		gtt_bar = 0;
 		gtt_off = AGP_I965_GTT;
 		break;
@@ -413,14 +415,18 @@ agp_i810_attach(device_t parent, device_
 		apbase = AGP_I965_GMADR;
 		mmadr_bar = AGP_I965_MMADR;
 		mmadr_type |= PCI_MAPREG_MEM_TYPE_64BIT;
-		isc->size = 512*1024;
+		if (pci_mapreg_info(isc->vga_pa.pa_pc, isc->vga_pa.pa_tag,
+			AGP_I965_MMADR, mmadr_type, NULL, &isc->size, NULL))
+			isc->size = 512*1024; /* XXX */
 		gtt_bar = 0;
 		gtt_off = AGP_G4X_GTT;
 		break;
 	default:
 		apbase = AGP_I810_GMADR;
 		mmadr_bar = AGP_I810_MMADR;
-		isc->size = 512*1024;
+		if (pci_mapreg_info(isc->vga_pa.pa_pc, isc->vga_pa.pa_tag,
+			AGP_I965_MMADR, mmadr_type, NULL, &isc->size, NULL))
+			isc->size = 512*1024; /* XXX */
 		gtt_bar = 0;
 		gtt_off = AGP_I810_GTT;
 		break;
@@ -1305,6 +1311,7 @@ agp_i810_bind_memory(struct agp_softc *s
 
 	/* Success!  */
 	mem->am_is_bound = 1;
+	agp_flush_cache();
 	return 0;
 }