? patch Index: common.h =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/common.h,v retrieving revision 1.1.1.9 diff -u -r1.1.1.9 common.h --- common.h 6 Jul 2004 15:12:24 -0000 1.1.1.9 +++ common.h 29 Sep 2004 11:27:04 -0000 @@ -173,7 +173,7 @@ #define BEGIN_LP_RING(n) \ unsigned int outring, ringmask; \ volatile unsigned char *virt; \ - unsigned int needed; \ + int needed; \ if ((n) & 1) \ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \ @@ -206,7 +206,7 @@ #define BEGIN_LP_RING(n) \ unsigned int outring, ringmask; \ volatile unsigned char *virt; \ - unsigned int needed; \ + int needed; \ if ((n) & 1) \ ErrorF("BEGIN_LP_RING called with odd argument: %d\n", n); \ if ((n) > 2 && (I810_DEBUG&DEBUG_ALWAYS_SYNC)) \ Index: i810.h =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i810.h,v retrieving revision 1.1.1.31 retrieving revision 1.1.1.31.14.2 diff -u -r1.1.1.31 -r1.1.1.31.14.2 --- i810.h 6 Jul 2004 15:12:24 -0000 1.1.1.31 +++ i810.h 29 Sep 2004 11:26:01 -0000 1.1.1.31.14.2 @@ -172,7 +172,7 @@ unsigned long OverlayPhysical; unsigned long OverlayStart; int colorKey; - int surfaceAllocation[I810_TOTAL_SURFACES]; + unsigned int surfaceAllocation[I810_TOTAL_SURFACES]; int numSurfaces; DGAModePtr DGAModes; @@ -295,9 +295,10 @@ extern void I810Sync(ScrnInfoPtr pScrn); extern unsigned long I810LocalToPhysical(ScrnInfoPtr pScrn, unsigned long local); -extern int I810AllocLow(I810MemRange * result, I810MemRange * pool, int size); +extern int I810AllocLow(I810MemRange * result, I810MemRange * pool, + int size); extern int I810AllocHigh(I810MemRange * result, I810MemRange * pool, - int size); + int size); extern Bool I810AllocateFront(ScrnInfoPtr pScrn); extern int I810AllocateGARTMemory(ScrnInfoPtr pScrn); Index: i810_accel.c =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_accel.c,v retrieving revision 1.1.1.10 diff -u -r1.1.1.10 i810_accel.c --- i810_accel.c 2 Aug 2004 13:30:41 -0000 1.1.1.10 +++ i810_accel.c 29 Sep 2004 11:27:04 -0000 @@ -259,7 +259,7 @@ #ifdef XF86DRI /* VT switching tries to do this. */ - if (!pI810->LockHeld && pI810->directRenderingEnabled) { + if ((!pI810->LockHeld && pI810->directRenderingEnabled) || !pScrn->vtSema) { return; } #endif Index: i810_dri.c =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c,v retrieving revision 1.1.1.32 retrieving revision 1.1.1.32.14.2 diff -u -r1.1.1.32 -r1.1.1.32.14.2 --- i810_dri.c 6 Jul 2004 15:12:25 -0000 1.1.1.32 +++ i810_dri.c 29 Sep 2004 11:26:01 -0000 1.1.1.32.14.2 @@ -290,7 +290,7 @@ unsigned long dcacheHandle; int sysmem_size = 0; int back_size = 0; - int pitch_idx = 0; + unsigned int pitch_idx = 0; int bufs; int width = pScrn->displayWidth * pI810->cpp; int i; Index: i810_driver.c =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c,v retrieving revision 1.1.1.53 retrieving revision 1.1.1.53.4.3 diff -u -r1.1.1.53 -r1.1.1.53.4.3 --- i810_driver.c 26 Aug 2004 12:08:41 -0000 1.1.1.53 +++ i810_driver.c 29 Sep 2004 11:26:01 -0000 1.1.1.53.4.3 @@ -1124,14 +1124,6 @@ xf86SetOperatingState(resVgaIo, pI810->pEnt->index, ResUnusedOpr); xf86SetOperatingState(resVgaMem, pI810->pEnt->index, ResDisableOpr); - pI810->LpRing = xalloc(sizeof(I810RingBuffer)); - if (!pI810->LpRing) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Could not allocate lpring data structure.\n"); - I810FreeRec(pScrn); - return FALSE; - } - return TRUE; } @@ -1159,7 +1151,7 @@ I810MapMem(ScrnInfoPtr pScrn) { I810Ptr pI810 = I810PTR(pScrn); - unsigned i; + long i; for (i = 2; i < pI810->FbMapSize; i <<= 1) ; pI810->FbMapSize = i; @@ -2074,6 +2066,13 @@ pI810 = I810PTR(pScrn); hwp = VGAHWPTR(pScrn); + pI810->LpRing = xcalloc(sizeof(I810RingBuffer),1); + if (!pI810->LpRing) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Could not allocate lpring data structure.\n"); + return FALSE; + } + miClearVisualTypes(); /* Re-implemented Direct Color support, -jens */ Index: i810_memory.c =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_memory.c,v retrieving revision 1.1.1.20 retrieving revision 1.1.1.20.2.2 diff -u -r1.1.1.20 -r1.1.1.20.2.2 --- i810_memory.c 14 Sep 2004 10:57:19 -0000 1.1.1.20 +++ i810_memory.c 29 Sep 2004 11:26:01 -0000 1.1.1.20.2.2 @@ -55,7 +55,7 @@ int I810AllocLow(I810MemRange * result, I810MemRange * pool, int size) { - if (size > pool->Size) + if (size > (long)pool->Size) return 0; pool->Size -= size; @@ -69,7 +69,7 @@ int I810AllocHigh(I810MemRange * result, I810MemRange * pool, int size) { - if (size > pool->Size) + if (size > (long)pool->Size) return 0; pool->Size -= size; Index: i810_reg.h =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_reg.h,v retrieving revision 1.1.1.11 diff -u -r1.1.1.11 i810_reg.h --- i810_reg.h 6 Jul 2004 15:12:25 -0000 1.1.1.11 +++ i810_reg.h 29 Sep 2004 11:27:04 -0000 @@ -459,11 +459,11 @@ #define I830_HEAD_MASK 0x001FFFFC #define RING_START 0x08 -#define START_ADDR 0x00FFFFF8 +#define START_ADDR 0x03FFFFF8 #define I830_RING_START_MASK 0xFFFFF000 #define RING_LEN 0x0C -#define RING_NR_PAGES 0x000FF000 +#define RING_NR_PAGES 0x001FF000 #define I830_RING_NR_PAGES 0x001FF000 #define RING_REPORT_MASK 0x00000006 #define RING_REPORT_64K 0x00000002 Index: i830.h =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i830.h,v retrieving revision 1.1.1.11 retrieving revision 1.1.1.11.14.2 diff -u -r1.1.1.11 -r1.1.1.11.14.2 --- i830.h 6 Jul 2004 15:12:24 -0000 1.1.1.11 +++ i830.h 29 Sep 2004 11:26:01 -0000 1.1.1.11.14.2 @@ -180,17 +180,17 @@ int CacheLines; /* These are set in PreInit and never changed. */ - unsigned long FbMapSize; - unsigned long TotalVideoRam; + long FbMapSize; + long TotalVideoRam; I830MemRange StolenMemory; /* pre-allocated memory */ - unsigned long BIOSMemorySize; /* min stolen pool size */ + long BIOSMemorySize; /* min stolen pool size */ int BIOSMemSizeLoc; /* These change according to what has been allocated. */ long FreeMemory; I830MemRange MemoryAperture; I830MemPool StolenPool; - unsigned long allocatedMemory; + long allocatedMemory; /* Regions allocated either from the above pools, or from agpgart. */ /* for single and dual head configurations */ @@ -348,7 +348,7 @@ int xoffset; int yoffset; - int SaveGeneration; + unsigned int SaveGeneration; Bool vbeRestoreWorkaround; Bool displayInfo; Bool devicePresence; @@ -415,7 +415,7 @@ extern Bool I830BindGARTMemory(ScrnInfoPtr pScrn); extern Bool I830UnbindGARTMemory(ScrnInfoPtr pScrn); extern unsigned long I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result, - I830MemPool *pool, unsigned long size, + I830MemPool *pool, long size, unsigned long alignment, int flags); extern void I830PrintAllRegisters(I830RegPtr i830Reg); Index: i830_driver.c =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c,v retrieving revision 1.1.1.23 retrieving revision 1.1.1.23.8.2 diff -u -r1.1.1.23 -r1.1.1.23.8.2 --- i830_driver.c 2 Aug 2004 13:30:42 -0000 1.1.1.23 +++ i830_driver.c 29 Sep 2004 11:26:01 -0000 1.1.1.23.8.2 @@ -594,6 +594,7 @@ I830Ptr pI830 = I830PTR(pScrn); vbeInfoPtr pVbe = pI830->pVbe; CARD32 temp; + #ifdef I915G_WORKAROUND int getmode; int mode; @@ -1018,7 +1019,7 @@ I830MapMem(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - unsigned i; + long i; for (i = 2; i < pI830->FbMapSize; i <<= 1) ; pI830->FbMapSize = i; @@ -2898,7 +2899,7 @@ OUTREG(LP_RING + RING_TAIL, 0); OUTREG(LP_RING + RING_HEAD, 0); - if ((pI830->LpRing->mem.Start & I830_RING_START_MASK) != + if ((long)(pI830->LpRing->mem.Start & I830_RING_START_MASK) != pI830->LpRing->mem.Start) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "I830SetRingRegs: Ring buffer start (%lx) violates its " @@ -3441,7 +3442,7 @@ I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); temp = INREG(stridereg); - if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) { + if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe), (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth); @@ -3459,7 +3460,7 @@ sizereg = pI830->pipe ? DSPASIZE : DSPBSIZE; temp = INREG(stridereg); - if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) { + if (temp / pI8302->cpp != (CARD32)(pI830->entityPrivate->pScrn_2->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe), (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth); @@ -3478,7 +3479,7 @@ I830Ptr pI8302 = I830PTR(pI830->entityPrivate->pScrn_2); temp = INREG(stridereg); - if (temp / pI8301->cpp != pI830->entityPrivate->pScrn_1->displayWidth) { + if (temp / pI8301->cpp != (CARD32)(pI830->entityPrivate->pScrn_1->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(pI830->pipe), (int)(temp / pI8301->cpp), pI830->entityPrivate->pScrn_1->displayWidth); @@ -3494,7 +3495,7 @@ sizereg = !pI830->pipe ? DSPASIZE : DSPBSIZE; temp = INREG(stridereg); - if (temp / pI8302->cpp != pI830->entityPrivate->pScrn_2->displayWidth) { + if (temp / pI8302->cpp != ((CARD32)pI830->entityPrivate->pScrn_2->displayWidth)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(!pI830->pipe), (int)(temp / pI8302->cpp), pI830->entityPrivate->pScrn_2->displayWidth); @@ -3515,7 +3516,7 @@ continue; temp = INREG(stridereg); - if (temp / pI830->cpp != pScrn->displayWidth) { + if (temp / pI830->cpp != (CARD32)pScrn->displayWidth) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Correcting plane %c stride (%d -> %d)\n", PIPE_NAME(i), (int)(temp / pI830->cpp), pScrn->displayWidth); @@ -4354,6 +4355,9 @@ SaveHWOperatingState(pScrn); #endif + ResetState(pScrn, TRUE); + RestoreHWState(pScrn); + if (IsPrimary(pScrn)) { if (!SetDisplayDevices(pScrn, pI830->savedDevices)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, @@ -4365,8 +4369,6 @@ } } - ResetState(pScrn, TRUE); - RestoreHWState(pScrn); RestoreBIOSMemSize(pScrn); if (IsPrimary(pScrn)) I830UnbindGARTMemory(pScrn); @@ -4506,7 +4508,8 @@ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); Bool on = xf86IsUnblank(mode); - CARD32 temp, ctrl, base, i; + CARD32 temp, ctrl, base; + int i; DPRINTF(PFX, "I830BIOSSaveScreen: %d, on is %s\n", mode, BOOLTOSTRING(on)); Index: i830_memory.c =================================================================== RCS file: /home/eich/cvs/xc/programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c,v retrieving revision 1.1.1.8 retrieving revision 1.1.1.8.14.2 diff -u -r1.1.1.8 -r1.1.1.8.14.2 --- i830_memory.c 6 Jul 2004 15:12:24 -0000 1.1.1.8 +++ i830_memory.c 29 Sep 2004 11:26:01 -0000 1.1.1.8.14.2 @@ -63,10 +63,10 @@ */ static unsigned long AllocFromPool(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool, - unsigned long size, unsigned long alignment, int flags) + long size, unsigned long alignment, int flags) { I830Ptr pI830 = I830PTR(pScrn); - unsigned long needed, start, end; + long needed, start, end; Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0); if (!result || !pool || !size) @@ -94,7 +94,7 @@ } } if (needed > pool->Free.Size) { - unsigned long extra; + long extra; /* See if the pool can be grown. */ if (pI830->StolenOnly && !dryrun) return 0; @@ -107,7 +107,7 @@ return 0; } - if (!dryrun && (extra > pI830->MemoryAperture.Size)) + if (!dryrun && ((long)extra > pI830->MemoryAperture.Size)) return 0; pool->Free.Size += extra; @@ -136,7 +136,7 @@ } static unsigned long -AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, unsigned long size, +AllocFromAGP(ScrnInfoPtr pScrn, I830MemRange *result, long size, unsigned long alignment, int flags) { I830Ptr pI830 = I830PTR(pScrn); @@ -212,7 +212,7 @@ unsigned long I830AllocVidMem(ScrnInfoPtr pScrn, I830MemRange *result, I830MemPool *pool, - unsigned long size, unsigned long alignment, int flags) + long size, unsigned long alignment, int flags) { I830Ptr pI830 = I830PTR(pScrn); Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0); @@ -392,7 +392,7 @@ I830Allocate2DMemory(ScrnInfoPtr pScrn, const int flags) { I830Ptr pI830 = I830PTR(pScrn); - unsigned long size, alloced; + long size, alloced; Bool dryrun = ((flags & ALLOCATE_DRY_RUN) != 0); int verbosity = dryrun ? 4 : 1; const char *s = dryrun ? "[dryrun] " : ""; @@ -610,9 +610,9 @@ return FALSE; } } else { - unsigned long lineSize; - unsigned long extra = 0; - unsigned long maxFb = 0; + long lineSize; + long extra = 0; + long maxFb = 0; /* * XXX Need to "free" up any 3D allocations if the DRI ended up @@ -857,7 +857,7 @@ I830GetExcessMemoryAllocations(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - unsigned long allocated; + long allocated; allocated = pI830->StolenPool.Total.Size + pI830->allocatedMemory; if (allocated > pI830->TotalVideoRam) @@ -1367,7 +1367,7 @@ I830Ptr pI830 = I830PTR(pScrn); int pitch, ntiles, i; static int nextTile = 0; - static int tileGeneration = -1; + static unsigned int tileGeneration = -1; #if 0 /* Hack to "improve" the alignment of the front buffer.