87 lines
3.2 KiB
Diff
87 lines
3.2 KiB
Diff
|
From 339fb3bc032b9f35b07b90480ae82a0fd352e078 Mon Sep 17 00:00:00 2001
|
||
|
From: Jan Lindemann <jan@jannet.de>
|
||
|
Date: Thu, 30 Aug 2012 18:09:10 +0000
|
||
|
Subject: Replace xf86UnMapVidMem with pci_device_unmap_range
|
||
|
|
||
|
Mixing pci_device_map_range with xf86UnMapVidMem doesn't work too well.
|
||
|
|
||
|
X.Org bug#18028 <https://bugs.freedesktop.org/show_bug.cgi?id=18028>
|
||
|
|
||
|
Bug found by Bryan Henderson <bryanh@giraffe-data.com>
|
||
|
|
||
|
Signed-off-by: Julien Cristau <jcristau@debian.org>
|
||
|
---
|
||
|
Fetch from:
|
||
|
http://cgit.freedesktop.org/xorg/driver/xf86-video-sis/commit/?id=339fb3bc032b9f35b07b90480ae82a0fd352e078
|
||
|
|
||
|
Signed-off-by: Bernd Kuhls <berndkuhls@hotmail.com>
|
||
|
|
||
|
diff --git a/src/sis_driver.c b/src/sis_driver.c
|
||
|
index 61e8075..4c9b9cb 100644
|
||
|
--- a/src/sis_driver.c
|
||
|
+++ b/src/sis_driver.c
|
||
|
@@ -7344,7 +7344,11 @@ SISUnmapMem(ScrnInfoPtr pScrn)
|
||
|
if(pSiSEnt->MapCountIOBase) {
|
||
|
pSiSEnt->MapCountIOBase--;
|
||
|
if((pSiSEnt->MapCountIOBase == 0) || (pSiSEnt->forceUnmapIOBase)) {
|
||
|
+#ifndef XSERVER_LIBPCIACCESS
|
||
|
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiSEnt->IOBase, (pSiS->mmioSize * 1024));
|
||
|
+#else
|
||
|
+ pci_device_unmap_range(pSiS->PciInfo, pSiSEnt->IOBase, (pSiS->mmioSize * 1024));
|
||
|
+#endif
|
||
|
pSiSEnt->IOBase = NULL;
|
||
|
pSiSEnt->MapCountIOBase = 0;
|
||
|
pSiSEnt->forceUnmapIOBase = FALSE;
|
||
|
@@ -7355,7 +7359,11 @@ SISUnmapMem(ScrnInfoPtr pScrn)
|
||
|
if(pSiSEnt->MapCountIOBaseDense) {
|
||
|
pSiSEnt->MapCountIOBaseDense--;
|
||
|
if((pSiSEnt->MapCountIOBaseDense == 0) || (pSiSEnt->forceUnmapIOBaseDense)) {
|
||
|
+#ifndef XSERVER_LIBPCIACCESS
|
||
|
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiSEnt->IOBaseDense, (pSiS->mmioSize * 1024));
|
||
|
+#else
|
||
|
+ pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiSEnt->IOBaseDense, (pSiS->mmioSize * 1024));
|
||
|
+#endif
|
||
|
pSiSEnt->IOBaseDense = NULL;
|
||
|
pSiSEnt->MapCountIOBaseDense = 0;
|
||
|
pSiSEnt->forceUnmapIOBaseDense = FALSE;
|
||
|
@@ -7366,7 +7374,11 @@ SISUnmapMem(ScrnInfoPtr pScrn)
|
||
|
if(pSiSEnt->MapCountFbBase) {
|
||
|
pSiSEnt->MapCountFbBase--;
|
||
|
if((pSiSEnt->MapCountFbBase == 0) || (pSiSEnt->forceUnmapFbBase)) {
|
||
|
+#ifndef XSERVER_LIBPCIACCESS
|
||
|
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiSEnt->RealFbBase, pSiS->FbMapSize);
|
||
|
+#else
|
||
|
+ pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiSEnt->RealFbBase, pSiS->FbMapSize);
|
||
|
+#endif
|
||
|
pSiSEnt->FbBase = pSiSEnt->RealFbBase = NULL;
|
||
|
pSiSEnt->MapCountFbBase = 0;
|
||
|
pSiSEnt->forceUnmapFbBase = FALSE;
|
||
|
@@ -7376,13 +7388,25 @@ SISUnmapMem(ScrnInfoPtr pScrn)
|
||
|
}
|
||
|
} else {
|
||
|
#endif
|
||
|
+#ifndef XSERVER_LIBPCIACCESS
|
||
|
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiS->IOBase, (pSiS->mmioSize * 1024));
|
||
|
+#else
|
||
|
+ pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiS->IOBase, (pSiS->mmioSize * 1024));
|
||
|
+#endif
|
||
|
pSiS->IOBase = NULL;
|
||
|
#ifdef __alpha__
|
||
|
+#ifndef XSERVER_LIBPCIACCESS
|
||
|
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiS->IOBaseDense, (pSiS->mmioSize * 1024));
|
||
|
+#else
|
||
|
+ pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiS->IOBaseDense, (pSiS->mmioSize * 1024));
|
||
|
+#endif
|
||
|
pSiS->IOBaseDense = NULL;
|
||
|
#endif
|
||
|
+#ifndef XSERVER_LIBPCIACCESS
|
||
|
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiS->RealFbBase, pSiS->FbMapSize);
|
||
|
+#else
|
||
|
+ pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiS->RealFbBase, pSiS->FbMapSize);
|
||
|
+#endif
|
||
|
pSiS->FbBase = pSiS->RealFbBase = NULL;
|
||
|
#ifdef SISDUALHEAD
|
||
|
}
|
||
|
--
|
||
|
cgit v0.9.0.2-2-gbebe
|