Module Name:    xsrc
Committed By:   mrg
Date:           Sat Sep 24 23:14:21 UTC 2016

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

Log Message:
use PCI_IOC_DRVNAMEONBUS if it exists.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 \
    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.15 xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c:1.16
--- xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c:1.15	Sun Jul 19 23:32:00 2015
+++ xsrc/external/mit/libpciaccess/dist/src/netbsd_pci.c	Sat Sep 24 23:14:21 2016
@@ -848,9 +848,11 @@ pci_device_netbsd_has_kernel_driver(stru
 {
 #ifdef PCI_IOC_DRVNAME
 	/*
-	 * NetBSD PCI_IOC_DRVNAME appears at the same time as pci_drvname(3)
+	 * NetBSD PCI_IOC_DRVNAME appears at the same time as pci_drvname(3),
+	 * same as the better onbus version.
 	 */
 	char drvname[16];
+	int i;
 
 	if (dev->bus >= nbuses)
 		return 0;
@@ -858,10 +860,22 @@ pci_device_netbsd_has_kernel_driver(stru
 	/*
 	 * vga(4) should be considered "not bound".
 	 */
-	if (pci_drvname(buses[dev->bus].fd, dev->dev, dev->func,
-			drvname, sizeof drvname) == 0 &&
-	    strncmp(drvname, "vga", 3) != 0)
-		return 1;
+	for (i = 0; i < nbuses; i++) {
+		if (buses[i].num == dev->bus) {
+			int rv;
+
+#ifdef PCI_IOC_DRVNAMEONBUS
+			rv = pci_drvnameonbus(buses[i].fd, dev->bus,
+			    dev->dev, dev->func, drvname, sizeof drvname);
+#else
+			rv = pci_drvname(buses[i].fd,
+			    dev->dev, dev->func, drvname, sizeof drvname);
+#endif
+			if (rv == 0 && strncmp(drvname, "vga", 3) != 0)
+				return 1;
+			return 0;
+		}
+	}
 #endif
 	return 0;
 }

Reply via email to