STRUCT RZG3S_PCIE_MSI(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 struct rzg3s_pcie_msi(9) β€” RZ/G3S PCIe MSI data structure πŸ’…

Ok so bestie, welcome to the Kernel API Manual ✨ and buckle up, because this page is all about one little struct: struct rzg3s_pcie_msi. It's the RZ/G3S PCIe MSI data structure, and it's honestly carrying a lot of the MSI situation on its back. Let's get into it 🫢


✨ SYNOPSIS ✨

Here's the shape of it, no cap β€” copy it exactly, we do not freestyle struct definitions:

struct rzg3s_pcie_msi {
    struct irq_domain *domain;
    unsigned long map[BITS_TO_LONGS( RZG3S_PCI_MSI_INT_NR)];
    dma_addr_t dma_addr;
    dma_addr_t window_base;
    unsigned long pages;
    struct mutex map_lock;
    int irq;
 };

πŸŽ€ Members πŸŽ€

Every field is kind of a main character here, so let's give them all their moment 🌟:

  • domain β€” the IRQ domain, literally the whole IRQ situation lives here
  • map β€” a bitmap holding all the allocated MSIs πŸ’–
  • dma_addr β€” the address of the allocated MSI window
  • window_base β€” the base address of that MSI window, iykyk
  • pages β€” how many pages got allocated for MSI window mapping
  • map_lock β€” the lock guarding the bitmap with the allocated MSIs πŸ”’ (mutex behaviour, respectfully)
  • irq β€” the MSI interrupt, the moment we've all been waiting for ⚑

🌈 SEE ALSO 🌈

If you're obsessed and want the whole friend group, they're all right here, fr fr:

Kernel file ./drivers/pci/controller/pcie-rzg3s-host.c, plus enum rzg3s_sysc_link_mode(9), struct rzg3s_sysc_function(9), enum rzg3s_sysc_func_id(9), struct rzg3s_sysc_info(9), struct rzg3s_sysc(9), enum rzg3s_pcie_controller_id(9), struct rzg3s_pcie_soc_data(9), struct rzg3s_pcie_port(9), and struct rzg3s_pcie_host(9).


Go read them all in order bestie, that's the vibe check βœ…

And that's the whole page, mwah πŸ’‹ β€” brought to you from ./drivers/pci/controller, dated October 2026. Slay, go allocate some MSIs responsibly πŸ‘‘πŸ¦‹

πŸ“¦ where this page comes from