ENUM PCI_EPC_BAR_TYPE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… enum pci_epc_bar_type(9)

the Kernel API Manual, but make it make sense ✨

okay so bestie, this is a page from the Kernel API Manual, and it's literally all about enum pci_epc_bar_type β€” aka the vibes check for how configurable an endpoint BAR actually is πŸŽ€ no cap, that's the whole NAME energy: configurability of endpoint BAR.


✨ SYNOPSIS ✨

fr fr, here's the whole enum, character for character, don't touch it:

enum pci_epc_bar_type {
    BAR_PROGRAMMABLE ,
    BAR_FIXED ,
    BAR_RESIZABLE ,
    BAR_RESERVED ,
    BAR_DISABLED

};

🌸 Constants 🌸

these are the five icons of the enum, and yes each one has main character energy of its own:

  • BAR_PROGRAMMABLE β€” the BAR mask can be configured by the EPC. it's giving flexible, it's giving we can work with this πŸ’–
  • BAR_FIXED β€” the BAR mask is fixed by the hardware. no notes, no edits, the hardware said what it said πŸ”’
  • BAR_RESIZABLE β€” this BAR implements the PCI-SIG Resizable BAR Capability. resize era, we love to see it πŸ¦‹
  • BAR_RESERVED β€” used for HW-backed BARs (e.g. MSI-X table, DMA regs). so listen: the BAR should not be disabled by an EPC driver, and the BAR should not be reprogrammed by an EPF driver. an EPF driver is allowed to disable the BAR if absolutely necessary β€” and then there's the parenthetical that lives rent free in my head: (However, right now there is no EPC operation to disable a BAR that has not been programmed using pci_epc_set_bar.) πŸ™ˆ like, the door exists but there's no handle, iykyk
  • BAR_DISABLED β€” the BAR should be disabled by an EPC driver, and the BAR will be unavailable to an EPF driver. it's gone, bestie, don't look for it πŸ’€

⚠️ NOTE ⚠️

an EPC driver can currently only set a single supported size. that's it. one size. don't come asking for a menu, there is no menu 🫢

πŸ”₯ SEE ALSO πŸ”₯

go read these next, they're all in the kernel file ./include/linux/pci-epc.h:

  • struct pci_epc_map(9)
  • enum pci_epc_aux_resource_type(9)
  • struct pci_epc_aux_resource(9)
  • struct pci_epc_ops(9)
  • struct pci_epc_mem_window(9)
  • struct pci_epc_mem(9)
  • struct pci_epc(9)
  • enum pci_epc_bar_rsvd_region_type(9)
  • struct pci_epc_bar_rsvd_region(9)
  • struct pci_epc_bar_desc(9)
  • struct pci_epc_features(9)

okay that's the whole page, you ate that πŸ’… this lil gem lives at ./include/linux and the version is stamped October 2026 β€” so go forth, understand your BAR types, and slay πŸ’œπŸŒˆβ­

πŸ“¦ where this page comes from