--- src/savage_driver.c	2007-07-11 21:51:42.000000000 -0600
+++ src/savage_driver.c.fixed	2007-11-20 16:34:09.000000000 -0700
@@ -111,7 +111,7 @@
 static unsigned int SavageDDC1Read(ScrnInfoPtr pScrn);
 static void SavageProbeDDC(ScrnInfoPtr pScrn, int index);
 static void SavageGetTvMaxSize(SavagePtr psav);
-static Bool SavagePanningCheck(ScrnInfoPtr pScrn);
+static Bool SavagePanningCheck(ScrnInfoPtr pScrn, DisplayModePtr pMode);
 #ifdef XF86DRI
 static Bool SavageCheckAvailableRamFor3D(ScrnInfoPtr pScrn);
 #endif
@@ -3413,7 +3413,7 @@
     }
 #endif
 
-    SavagePanningCheck(pScrn);
+    SavagePanningCheck(pScrn, pScrn->currentMode);
 #ifdef XvExtension
     if( !psav->FBStart2nd && !psav->NoAccel  /*&& !SavagePanningCheck(pScrn)*/ ) {
 	if (psav->IsSecondary)
@@ -4057,7 +4057,7 @@
         pSavEnt = pPriv->ptr;
         SavageModeInit(pSavEnt->pSecondaryScrn, pSavEnt->pSecondaryScrn->currentMode);
     }
-    SavagePanningCheck(pScrn);
+    SavagePanningCheck(pScrn, mode);
 
     return success;
 }
@@ -4536,12 +4536,10 @@
 
 
 static Bool
-SavagePanningCheck(ScrnInfoPtr pScrn)
+SavagePanningCheck(ScrnInfoPtr pScrn, DisplayModePtr pMode)
 {
     SavagePtr psav = SAVPTR(pScrn);
-    DisplayModePtr pMode;
 
-    pMode = pScrn->currentMode;
     psav->iResX = pMode->CrtcHDisplay;
     psav->iResY = pMode->CrtcVDisplay;
 
