diff options
Diffstat (limited to 'src/hurd_pci.c')
-rw-r--r-- | src/hurd_pci.c | 11 |
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; } |