Commit b7e42643 authored by Matthew Green's avatar Matthew Green Committed by Thomas Klausner
Browse files

Implement the kernel_has_driver() method for NetBSD.



This has the benefit of stopping the "vesa" driver from loading on
hardware that has been claimed by a kernel driver and thus shouldn't
be using "vesa".
Reviewed-by: Matthieu Herrb's avatarMatthieu Herrb <matthieu@herrb.eu>
Signed-off-by: Thomas Klausner's avatarThomas Klausner <wiz@NetBSD.org>
parent 1654a046
......@@ -843,6 +843,29 @@ pci_device_netbsd_unmap_legacy(struct pci_device *dev, void *addr,
return pci_device_netbsd_unmap_range(dev, &map);
}
static int
pci_device_netbsd_has_kernel_driver(struct pci_device *dev)
{
#ifdef PCI_IOC_DRVNAME
/*
* NetBSD PCI_IOC_DRVNAME appears at the same time as pci_drvname(3)
*/
char drvname[16];
if (dev->bus >= nbuses)
return 0;
/*
* 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;
#endif
return 0;
}
static const struct pci_system_methods netbsd_pci_methods = {
.destroy = pci_system_netbsd_destroy,
.destroy_device = NULL,
......@@ -867,6 +890,7 @@ static const struct pci_system_methods netbsd_pci_methods = {
.write8 = pci_device_netbsd_write8,
.map_legacy = pci_device_netbsd_map_legacy,
.unmap_legacy = pci_device_netbsd_unmap_legacy,
.has_kernel_driver = pci_device_netbsd_has_kernel_driver,
};
int
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment