aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/packages/rpm/sle11/SOURCES/pci-legacy-mem-fallback.diff
blob: 5929972fdf49074f0ccd26b72d28f37236cef006 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Index: hw/xfree86/os-support/bus/linuxPci.c
================================================================================
--- hw/xfree86/os-support/bus/linuxPci.c
+++ hw/xfree86/os-support/bus/linuxPci.c
@@ -397,6 +397,7 @@
      * legacy_mem interface is unavailable.
      */
     if ((Base > 1024*1024) || ((fd = linuxOpenLegacy(dev, "legacy_mem")) < 0))
+    fallback:
 	return linuxMapPci(ScreenNum, Flags, dev, Base, Size,
 			   PCIIOC_MMAP_IS_MEM);
     else
@@ -405,6 +406,8 @@
     if (fd >= 0)
 	close(fd);
     if (addr == NULL || addr == MAP_FAILED) {
+        if (errno == ENXIO)
+	    goto fallback;
 	perror("mmap failure");
 	FatalError("xf86MapDomainMem():  mmap() failure\n");
     }