summaryrefslogtreecommitdiff
path: root/src/hurd_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hurd_pci.c')
-rw-r--r--src/hurd_pci.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/hurd_pci.c b/src/hurd_pci.c
index abdcb0e..eefb618 100644
--- a/src/hurd_pci.c
+++ b/src/hurd_pci.c
@@ -460,14 +460,17 @@ pci_system_hurd_create(void)
pci_sys->methods = &hurd_pci_methods;
pci_server_port = file_name_lookup(_SERVERS_BUS_PCI, 0, 0);
- if (pci_server_port == MACH_PORT_NULL)
- return errno;
+ if (!pci_server_port) {
+ /* Fall back to x86 access method */
+ return pci_system_x86_create();
+ }
/* The server gives us the number of available devices for us */
err = pci_get_ndevs (pci_server_port, &ndevs);
if (err) {
mach_port_deallocate (mach_task_self (), pci_server_port);
- return err;
+ /* Fall back to x86 access method */
+ return pci_system_x86_create();
}
mach_port_deallocate (mach_task_self (), pci_server_port);
@@ -484,7 +487,7 @@ pci_system_hurd_create(void)
err = enum_devices(_SERVERS_BUS_PCI, &device, -1, -1, -1, -1,
LEVEL_DOMAIN);
if (err)
- return err;
+ return pci_system_x86_create();
return 0;
}