STRUCT XILINX_PCIE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct xilinx_pcie β€” PCIe port information πŸ’–

Okay bestie, so this is from the Kernel API Manual and it's literally the glow-up of PCIe port info for Xilinx, no cap. Let me walk you through it like we're studying together at 2am with iced coffee πŸ§Šβ˜•


✨ SYNOPSIS ✨

Here's the whole struct, laid out exactly as-is. Don't touch, just vibe:

struct xilinx_pcie {
    struct device *dev;
    void __iomem *reg_base;
    unsigned long msi_map[BITS_TO_LONGS(XILINX_NUM_MSI_IRQS)];
    struct mutex map_lock;
    struct irq_domain *msi_domain;
    struct irq_domain *leg_domain;
    struct list_head resources;
 };

πŸŽ€ Members (the main characters) πŸŽ€

  • dev β€” Device pointer. This is the device's whole identity, its main character energy πŸ’…
  • reg_base β€” IO Mapped Register Base. Where the registers live, mapped into memory fr.
  • msi_map β€” Bitmap of allocated MSIs. A literal bitmap tracking which MSIs are taken πŸ”₯
  • map_lock β€” Mutex protecting the MSI allocation. Bestie this is the lock that keeps things from getting messy β€” if two people grab the MSI map at once it's giving chaos, and this mutex says not today πŸ™ˆ
  • msi_domain β€” MSI IRQ domain pointer. Points at the MSI interrupt domain, periodt.
  • leg_domain β€” Legacy IRQ domain pointer. Same vibe but for legacy IRQs, iconic.
  • resources β€” Bus Resources. Holds all the bus resource info, like the struct's little tote bag of stuff πŸ‘œ

πŸ” SEE ALSO πŸ”

All of these are in ./drivers/pci/controller, iykyk πŸ¦‹


Okay so like, if you're messing with the MSI map without holding map_lock, bestie I'm gonna need you to stop. That's the whole reason the mutex is there. It's protecting the allocation, fr fr 🫢

That's the whole thing, no skips, no cuts, every detail retained πŸ‘‘ Slay.

October 2026 Β· ./drivers/pci/controller Β· struct xilinx_pcie(9) β€” and that's the official sign-off, mwah πŸ’‹πŸŒˆ

πŸ“¦ where this page comes from