mirror of
https://github.com/X11Libre/xf86-video-sis.git
synced 2026-03-24 01:25:01 +00:00
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>
This commit is contained in:
committed by
Julien Cristau
parent
8c5127a681
commit
339fb3bc03
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user