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) {