Samuel Thibault, le dim. 09 janv. 2022 01:02:57 +0100, a ecrit: > Joan Lledó via Bug reports for the GNU Hurd, le mer. 05 janv. 2022 13:08:01 > +0100, a ecrit: > > @@ -523,18 +637,18 @@ pci_system_hurd_create(void) > > > > pci_sys->num_devices = 0; > > > > - if ((err = get_privileged_ports (NULL, &device_master)) || > > (device_master == MACH_PORT_NULL)) { > > - pci_system_cleanup(); > > - return err; > > - } > > - > > - err = device_open (device_master, D_READ|D_WRITE, "pci", &pci_port); > > - if (!err) { > > - root = file_name_lookup_under (pci_port, ".", O_DIRECTORY | O_RDWR > > | O_EXEC, 0); > > - } > > - > > - if (!root) { > > - root = file_name_lookup (_SERVERS_BUS_PCI, O_RDWR, 0); > > + if ((err = get_privileged_ports (NULL, &device_master)) > > + || (device_master == MACH_PORT_NULL)) { > > + root = file_name_lookup (_SERVERS_BUS_PCI, O_RDONLY, 0); > > + } else { > > + err = device_open (device_master, D_READ, "pci", &pci_port); > > + mach_port_deallocate (mach_task_self (), device_master); > > + if (!err) { > > + root = file_name_lookup_under (pci_port, ".", > > + O_DIRECTORY | O_RDONLY | > > O_EXEC, 0); > > + device_close (pci_port); > > + mach_port_deallocate (mach_task_self (), pci_port); > > + } > > Err, this is breaking everything when pci-arbiter is not running as a > bootstrap translator. In that case e.g. netdde succeeds getting the > privileged port, and thus tries to open pci, but fails, and thus the > whole thing aborts. What problem the older approach had?
I uploaded a version with that ordering fixed back to debian-ports, to be seen on mirrors within about 6h. Samuel