Module Name:    xsrc
Committed By:   macallan
Date:           Thu Nov 18 04:47:01 UTC 2010

Modified Files:
        xsrc/external/mit/libpciaccess/dist/src: netbsd_pci.c

Log Message:
when trying to map a ROM go through the appropriate /dev/pci* instance
instead of opening /dev/mem
With this Xorg should be able to read graphics card ROMs on all ports.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c
diff -u xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c:1.6 xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c:1.7
--- xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c:1.6	Tue Jan 12 03:05:31 2010
+++ xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c	Thu Nov 18 04:47:00 2010
@@ -388,7 +388,7 @@
     pciaddr_t rom_base;
     size_t rom_size;
     uint32_t bios_val, command_val;
-    int pci_rom, memfd;
+    int pci_rom;
 
     if (((priv->base.device_class >> 16) & 0xff) != PCI_CLASS_DISPLAY ||
 	((priv->base.device_class >> 8) & 0xff) != PCI_SUBCLASS_DISPLAY_VGA)
@@ -434,23 +434,19 @@
 	}
     }
 
-    fprintf(stderr, "Using rom_base = 0x%lx (pci_rom=%d)\n", (long)rom_base,
-	pci_rom);
-    memfd = open("/dev/mem", O_RDONLY);
-    if (memfd == -1)
-	return errno;
+    fprintf(stderr, "Using rom_base = 0x%lx 0x%lx (pci_rom=%d)\n", 
+        (long)rom_base, (long)rom_size, pci_rom);
 
-    bios = mmap(NULL, rom_size, PROT_READ, MAP_SHARED, memfd, (off_t)rom_base);
+    bios = mmap(NULL, rom_size, PROT_READ, MAP_SHARED, buses[dev->domain].fd, 
+        (off_t)rom_base);
     if (bios == MAP_FAILED) {
 	int serrno = errno;
-	close(memfd);
 	return serrno;
     }
 
     memcpy(buffer, bios, rom_size);
 
     munmap(bios, rom_size);
-    close(memfd);
 
     if (pci_rom) {
 	if ((command_val & PCI_COMMAND_MEM_ENABLE) == 0) {

Reply via email to