enumeratePci, addBars, pciConfigurationPtr, and the PciHeader struct are deleted; the kernel seeds only the host bridge, and the ring-3 pci-bus driver's reports are the sole source of PCI function nodes. The manager matches PCI drivers from reported identity, deduped by registered device id so a bus restart never double-spawns. The flip did its job by exposing a latent SMP race: ring-3 device_register made the broker table concurrent for the first time, and mmio_map read it lock-free — under load a torn resource length mapped hpet's window wrong (its user fault) and underflowed r.len-1 into a kernel integer-overflow panic. Fixed: the broker read in mmio_map (and claim) runs under the big kernel lock, the arithmetic rejects zero-length and wrapping windows cleanly, and pci-bus no longer registers unimplemented size-0 BARs. driver-restart hammered 6x, suite 55/55. |
||
|---|---|---|
| .. | ||
| aml | ||
| acpi-ids.zig | ||
| acpi.zig | ||
| device-abi.zig | ||
| device-model.zig | ||
| device-tree.zig | ||
| pci-class.zig | ||
| platform.zig | ||
| power.zig | ||
| usb-abi.zig | ||
| usb-ids.zig | ||