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

Reply via email to