summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2008-05-10 15:06:18 +1000
committerDave Airlie <airlied@linux.ie>2008-05-10 15:06:18 +1000
commita01c9d12938f977a4310e0547866f01517059a3e (patch)
tree1773411acd8a258bb3c082c7dbd26a136343fe9f
parent69eca3b8340966874ee3ffdc0d0a3f73de7a816a (diff)
savage/pciaccess: don't try to map aperture larger than region window
-rw-r--r--src/savage_driver.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/savage_driver.c b/src/savage_driver.c
index 5fd7d66..2205dc8 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -3097,10 +3097,16 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
/* On Paramount and Savage 2000, aperture 0 is PCI base 2. On other
* chipsets it's in the same BAR as the framebuffer.
*/
+
+ psav->ApertureRegion.size = (psav->IsPrimary || psav->IsSecondary)
+ ? (0x01000000 * 2) : (0x01000000 * 5);
+
if ((psav->Chipset == S3_SUPERSAVAGE)
|| (psav->Chipset == S3_SAVAGE2000)) {
#ifdef XSERVER_LIBPCIACCESS
psav->ApertureRegion.base = psav->PciInfo->regions[2].base_addr;
+ if (psav->ApertureRegion.size > psav->PciInfo->regions[2].size)
+ psav->ApertureRegion.size = psav->PciInfo->regions[2].size;
#else
psav->ApertureRegion.base = psav->PciInfo->memBase[2];
#endif
@@ -3108,8 +3114,6 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
psav->ApertureRegion.base = psav->FbRegion.base + 0x02000000;
}
- psav->ApertureRegion.size = (psav->IsPrimary || psav->IsSecondary)
- ? (0x01000000 * 2) : (0x01000000 * 5);
if (psav->FbRegion.size != 0) {