Samuel Thibault, le dim. 03 nov. 2019 20:07:46 +0100, a ecrit: > I tried the hack I mentioned previously (attached), to properly detect > that we are the PCI arbiter. Now my system boots, but that's because > netdde crashes instead of just hanging. It looks like it does not manage > to use the PCI arbiter.
My bad, my patch wasn't enough, here is a fixed version. I'm now getting a netdde SIGILL crash inside the atp_init function. Samuel
Use netfs_server_name to detect whether we are the PCI arbiter. Index: libpciaccess-0.14/src/hurd_pci.c =================================================================== --- libpciaccess-0.14.orig/src/hurd_pci.c +++ libpciaccess-0.14/src/hurd_pci.c @@ -447,11 +447,14 @@ pci_system_hurd_create(void) size_t ndevs; mach_port_t pci_server_port; - /* If we can open pci cfg io ports on hurd, - * we are the arbiter, therefore try x86 method first */ - err = pci_system_x86_create(); - if (!err) - return 0; + extern char *netfs_server_name; +#pragma weak netfs_server_name + if (&netfs_server_name && netfs_server_name && !strcmp(netfs_server_name, "pci-arbiter")) { + /* We are a PCI arbiter, try the x86 way */ + err = pci_system_x86_create(); + if (!err) + return 0; + } pci_sys_hurd = calloc(1, sizeof(struct pci_system_hurd)); if (pci_sys_hurd == NULL) {