| From 82e14a6215cbc9804ecc35281e973c6c8ce22fe7 Mon Sep 17 00:00:00 2001 |
| From: Eric Anholt <eric@anholt.net> |
| Date: Tue, 14 Oct 2008 11:28:58 -0700 |
| Subject: agp: Fix stolen memory counting on G4X. |
| |
| From: Eric Anholt <eric@anholt.net> |
| |
| commit 82e14a6215cbc9804ecc35281e973c6c8ce22fe7 upstream |
| |
| On the GM45, the amount of stolen memory mapped to the GTT was underestimated, |
| even though we had 508KB more available since the GTT doesn't take from |
| stolen memory. On the non-GM45 G4X, we overestimated how much stolen was |
| mapped to the GTT by 4KB, resulting in GPU page faults when that page was |
| accessed. |
| |
| This update requires a corresponding update to xf86-video-intel to work |
| correctly. |
| |
| Signed-off-by: Eric Anholt <eric@anholt.net> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/char/agp/intel-agp.c | 12 +++++++----- |
| 1 file changed, 7 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/char/agp/intel-agp.c |
| +++ b/drivers/char/agp/intel-agp.c |
| @@ -54,8 +54,7 @@ |
| 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_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 || \ |
| 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 || \ |
| 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; |
| |
| @@ -525,8 +525,10 @@ static void intel_i830_init_gtt_entries( |
| size += 4; |
| } else if (IS_G4X) { |
| /* 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 { |
| /* On previous hardware, the GTT size was just what was |
| * required to map the aperture. |