danos/system/devices
Daniel Samson cd812cc00e
display: framebuffer handoff primitive + service design (D1)
Kick off the display service track (docs/display.md, docs/display-plan.md): a
user-space compositor that owns the framebuffer. GOP and the PCI display device
are two views of one controller; GOP dies at ExitBootServices, so the portable
base is the boot-handoff linear framebuffer.

D1 makes that framebuffer reachable from user space over the existing device
claim/mmio_map path rather than a bespoke syscall:

- device-abi: a `display` DeviceClass, a DisplayInfo{w,h,pitch,format} on the
  descriptor, and a flags field on resources with a write-combining bit.
- devices-broker: seedDisplay() publishes the loader's framebuffer as a
  root-level `display` node (one WC-flagged memory resource); kmain seeds it
  after discovery. displayDevice()/displayClaimed() track the claim.
- paging/mmio_map: mapUserDeviceInto gains a write_combining bool — a WC-flagged
  resource maps through PAT entry 4 instead of strong-uncacheable (an
  uncacheable framebuffer blit is glacial).
- console: falls silent while a display service holds the framebuffer, and is
  forced back on by the panic/exception paths.

Gate: the `display` kernel test asserts the seeded node's shape and that the
claim + mmio_map leaf is genuinely write-combining (PAT bit set, PCD/PWT clear).
Regression-checked discovery/ioport/claim-release/supervision/device-list/
device-manager with the +1 device in the table.
2026-07-14 00:54:56 +01:00
..
aml Add runtime.time, drop demo drivers, harden TSC timekeeping 2026-07-13 11:56:43 +01:00
acpi-ids.zig Name ACPI hardware IDs instead of magic _HID strings 2026-07-11 23:23:16 +01:00
acpi.zig acpi: stop parsing AML in the kernel; power management is userspace's 2026-07-13 23:09:30 +01:00
device-abi.zig display: framebuffer handoff primitive + service design (D1) 2026-07-14 00:54:56 +01:00
device-model.zig zig fmt 2026-07-12 16:04:58 +01:00
device-tree.zig Re-organize the source tree as a monorepo mirroring the FHS 2026-07-10 12:55:56 +01:00
pci-class.zig Decode PCI/ACPI device identities and name their class codes as enums 2026-07-13 05:05:25 +01:00
platform.zig acpi: stop parsing AML in the kernel; power management is userspace's 2026-07-13 23:09:30 +01:00
power.zig acpi: stop parsing AML in the kernel; power management is userspace's 2026-07-13 23:09:30 +01:00
usb-abi.zig USB driver stack: xHCI transfers, HID keyboard/mouse, mass storage 2026-07-13 14:11:00 +01:00
usb-ids.zig USB driver stack: xHCI transfers, HID keyboard/mouse, mass storage 2026-07-13 14:11:00 +01:00