STRUCT X86_LEGACY_DEVICES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct x86_legacy_devices(9) β€” the kernel API manual, but make it make sense

okay so bestie, welcome to struct x86_legacy_devices(9), straight out of the Kernel API Manual. this is a tiny little struct with exactly one job, and honestly? it ate. let's get into it πŸŽ€


✨ NAME ✨

struct x86_legacy_devices β€” legacy x86 devices. that's it. that's the whole name. short, sweet, iconic πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

struct x86_legacy_devices {
    int pnpbios;
 };

yes she's just one int in a trench coat. no cap. πŸ’€


🌸 Members 🌸

  • pnpbios β€” this platform can have a PNPBIOS. and if this is disabled, the platform is known to never have a PNPBIOS. like, ever. periodt. so this lil flag is basically the vibe check for whether PNPBIOS is even possible here 🫢

πŸ”₯ Description πŸ”₯

so these are devices known to require LPC or ISA bus β€” the legacy squad. the definition of legacy devices here adheres to the ACPI 5.2.9.3 IA-PC Boot Architecture flag ACPI_FADT_LEGACY_DEVICES. literally the whole point of this struct, iykyk.

these devices consist of user visible devices on the LPC or ISA bus. and "user visible devices" means devices that have end-user accessible connectors β€” for example, the LPT parallel port. like, a port you can physically plug something into. main character energy ✨

legacy devices on the LPC bus consist, for example, of:

  • serial and parallel ports
  • PS/2 keyboard / mouse
  • the floppy disk controller

yes the floppy disk controller is still in the chat. she's vintage πŸ’…

here's the important part: a system that lacks all known legacy devices can assume all devices can be detected exclusively via standard device enumeration mechanisms, including the ACPI namespace. no legacy scavenger hunt needed, bestie.

⚠️ and a system that does not have ACPI_FADT_LEGACY_DEVICES enabled must not have any of the legacy devices enumerated below present. that's a hard rule, fr fr. no exceptions, no "just this once" πŸ™ˆ

πŸ‘‘ SEE ALSO πŸ‘‘

kernel file ./arch/x86/include/asm/x86_init.h, plus the whole extended universe:

  • struct x86_init_mpparse(9)
  • struct x86_init_resources(9)
  • struct x86_init_irqs(9)
  • struct x86_init_oem(9)
  • struct x86_init_paging(9)
  • struct x86_init_timers(9)
  • struct x86_init_iommu(9)
  • struct x86_init_pci(9)
  • struct x86_hyper_init(9)
  • struct x86_init_acpi(9)
  • struct x86_guest(9)
  • struct x86_init_ops(9)
  • struct x86_cpuinit_ops(9)
  • enum x86_legacy_i8042_state(9)
  • struct x86_legacy_features(9)
  • struct x86_hyper_runtime(9)
  • struct x86_platform_ops(9)

that's the whole friend group right there. go read them, they're all linked in ./arch/x86/include/asm 🧚


🌈 and that's the page, bestie! sigggnning off from ./arch/x86/include/asm, dated October 2026, for struct x86_legacy_devices(9) β€” stay legacy, stay iconic, slay πŸ’–β­πŸŽ€

πŸ“¦ where this page comes from