ENUM PCI_EPC_BAR_TYPE(9)
π 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 usingpci_epc_set_bar.) π like, the door exists but there's no handle, iykykBAR_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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms