|
@@ -54,8 +54,7 @@
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965Q_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965Q_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965G_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965G_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GM_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GM_HB || \
|
|
- agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB || \
|
|
|
|
- agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB)
|
|
|
|
|
|
+ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB)
|
|
|
|
|
|
#define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \
|
|
#define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \
|
|
@@ -63,7 +62,8 @@
|
|
|
|
|
|
#define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_E_HB || \
|
|
#define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_E_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \
|
|
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \
|
|
- agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB)
|
|
|
|
|
|
+ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB || \
|
|
|
|
+ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB)
|
|
|
|
|
|
extern int agp_memory_reserved;
|
|
extern int agp_memory_reserved;
|
|
|
|
|
|
@@ -214,8 +214,8 @@ static int intel_i810_configure(void)
|
|
if (agp_bridge->driver->needs_scratch_page) {
|
|
if (agp_bridge->driver->needs_scratch_page) {
|
|
for (i = 0; i < current_size->num_entries; i++) {
|
|
for (i = 0; i < current_size->num_entries; i++) {
|
|
writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4));
|
|
writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4));
|
|
- readl(intel_private.registers+I810_PTE_BASE+(i*4)); /* PCI posting. */
|
|
|
|
}
|
|
}
|
|
|
|
+ readl(intel_private.registers+I810_PTE_BASE+((i-1)*4)); /* PCI posting. */
|
|
}
|
|
}
|
|
global_cache_flush();
|
|
global_cache_flush();
|
|
return 0;
|
|
return 0;
|
|
@@ -525,8 +525,10 @@ static void intel_i830_init_gtt_entries(void)
|
|
size += 4;
|
|
size += 4;
|
|
} else if (IS_G4X) {
|
|
} else if (IS_G4X) {
|
|
/* On 4 series hardware, GTT stolen is separate from graphics
|
|
/* On 4 series hardware, GTT stolen is separate from graphics
|
|
- * stolen, ignore it in stolen gtt entries counting */
|
|
|
|
- size = 0;
|
|
|
|
|
|
+ * stolen, ignore it in stolen gtt entries counting. However,
|
|
|
|
+ * 4KB of the stolen memory doesn't get mapped to the GTT.
|
|
|
|
+ */
|
|
|
|
+ size = 4;
|
|
} else {
|
|
} else {
|
|
/* On previous hardware, the GTT size was just what was
|
|
/* On previous hardware, the GTT size was just what was
|
|
* required to map the aperture.
|
|
* required to map the aperture.
|
|
@@ -773,8 +775,8 @@ static int intel_i830_configure(void)
|
|
if (agp_bridge->driver->needs_scratch_page) {
|
|
if (agp_bridge->driver->needs_scratch_page) {
|
|
for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
|
|
for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
|
|
writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4));
|
|
writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4));
|
|
- readl(intel_private.registers+I810_PTE_BASE+(i*4)); /* PCI Posting. */
|
|
|
|
}
|
|
}
|
|
|
|
+ readl(intel_private.registers+I810_PTE_BASE+((i-1)*4)); /* PCI Posting. */
|
|
}
|
|
}
|
|
|
|
|
|
global_cache_flush();
|
|
global_cache_flush();
|
|
@@ -989,8 +991,8 @@ static int intel_i915_configure(void)
|
|
if (agp_bridge->driver->needs_scratch_page) {
|
|
if (agp_bridge->driver->needs_scratch_page) {
|
|
for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
|
|
for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) {
|
|
writel(agp_bridge->scratch_page, intel_private.gtt+i);
|
|
writel(agp_bridge->scratch_page, intel_private.gtt+i);
|
|
- readl(intel_private.gtt+i); /* PCI Posting. */
|
|
|
|
}
|
|
}
|
|
|
|
+ readl(intel_private.gtt+i-1); /* PCI Posting. */
|
|
}
|
|
}
|
|
|
|
|
|
global_cache_flush();
|
|
global_cache_flush();
|