STRUCT IOATDMA_DEVICE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct ioatdma_device(9) β€” from the Kernel API Manual ✨

okay so bestie, this is the page for struct ioatdma_device β€” the internal representation of a IOAT device πŸŽ€ that's it, that's the whole vibe. it's the struct that holds the whole situation together, and we're gonna go through every single field together, no skipping, no cap πŸ’–


✨ SYNOPSIS ✨

struct ioatdma_device {
    struct pci_dev *pdev;
    void __iomem *reg_base;
    struct dma_pool *completion_pool;
  #define MAX_SED_POOLS   5;
    struct dma_pool *sed_hw_pool[MAX_SED_POOLS];
    struct dma_device dma_dev;
    u8 version;
  #define IOAT_MAX_CHANS 4;
    struct msix_entry msix_entries[IOAT_MAX_CHANS];
    struct ioatdma_chan *idx[IOAT_MAX_CHANS];
    struct dca_provider *dca;
    enum ioat_irq_mode irq_mode;
    u32 cap;
    int chancnt;
    u64 msixtba0;
    u64 msixdata0;
    u32 msixpba;
 };

like, look at her. main character struct energy fr fr πŸ‘‘

also peep the little defines living inside the struct β€” MAX_SED_POOLS is 5 and IOAT_MAX_CHANS is 4. iconic behavior, honestly 🌸

πŸ¦‹ Members πŸ¦‹

  • pdev β€” the PCI-Express device. like, the actual hardware she's attached to πŸ’³
  • reg_base β€” MMIO register space base address. where the registers live, address-wise πŸ“
  • completion_pool β€” DMA buffers for completion ops. the pool of buffers for finishing things off ✨
  • sed_hw_pool β€” DMA super descriptor pools. yes plural, it's an array, she's got layers πŸŽ€
  • dma_dev β€” an embedded struct dma_device, tucked right in there 🫢
  • version β€” version of the ioatdma device. classic, love a version field πŸ’œ
  • msix_entries β€” irq handlers πŸ‘‘
  • idx β€” per channel data. one entry per channel, organized bestie πŸ—‚οΈ
  • dca β€” direct cache access context. fancy πŸ’…
  • irq_mode β€” interrupt mode, and the modes are INTX, MSI, MSIX β€” pick your fighter ⚑
  • cap β€” read DMA capabilities register. the receipts of what this thing can do πŸ”₯
ngl the struct also carries chancnt, msixtba0, msixdata0 and msixpba 😭 they're right there in the synopsis, so don't act surprised when you see them in the wild β€” the manpage doesn't spill any tea about those ones, so neither will I πŸ™ˆ

🌈 SEE ALSO 🌈

  • Kernel file ./drivers/dma/ioat/dma.h
  • struct ioat_sed_ent(9)
  • struct ioat_ring_ent(9)

go read those next, iykyk πŸ“š


that's the whole page bestie, you ate that πŸ“ β€” this little gem comes from ./drivers/dma/ioat, dated October 2026, and the header up top literally just reads struct ioatdma_device(9). slay πŸ’–

πŸ“¦ where this page comes from