ccio_io_pdir_entry(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so this is ccio_io_pdir_entry(9) from the Kernel API Manual, and it's giving β€œinitialize an I/O Pdir” energy πŸ’– bestie, it's short, it's technical, and we're gonna get every little bit of it.


✨ NAME ✨

ccio_io_pdir_entry β€” Initialize an I/O Pdir. That's the whole assignment, no cap. πŸŽ€


🌸 SYNOPSIS 🌸

the signature, verbatim, right here 🫢

void ccio_io_pdir_entry (__le64 *pdir_ptr , space_t sid , phys_addr_t
       pba , unsigned long hints );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • pdir_ptr β€” A pointer into I/O Pdir. it's literally pointing at the spot we're working with πŸ’…
  • sid β€” The Space Identifier. iconic little id, fr fr ✨
  • pba β€” The physical address. the physical-address main character πŸ‘‘
  • hints β€” The DMA Hint. yes bestie, hints πŸ”₯

πŸ’œ DESCRIPTION πŸ’œ

okay so here's the tea: given a physical address (pba, arg2) and a space id (sid, arg1), this loads the I/O PDIR entry pointed to by pdir_ptr (arg0) πŸ’–. each I/O Pdir entry consists of 8 bytes, laid out like this β€” and yes, MSB == bit 0, keep that in mind:

WORD 0:

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ Phys     Virtual Index   Phys    β”‚
       β”‚ 0:3      0:11            4:19    β”‚
       β”‚ 4 bits   12 bits         16 bits β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       WORD 1:

       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ Phys      Rsvd     Prefetch   Update   Rsvd     Lock     Safe    Valid β”‚
       β”‚ 20:39              Enable     Enable            Enable   DMA           β”‚
       β”‚ 20 bits   5 bits   1 bit      1 bit    2 bits   1 bit    1 bit   1 bit β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

the virtual index field is filled with the results of the LCI (Load Coherence Index) instruction. the 8 bits used for the virtual index are bits 12:19 of the value returned by LCI. that's the field update, literally, no extra drama 🌈


πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./drivers/parisc/ccio-dma.c is the source-file bestie for this whole crew. also go peek at:


xoxo, bestie πŸ’– β€” source/version: ./drivers/parisc, date: October 2026, page: ccio_io_pdir_entry(9). periodt. πŸ’…

πŸ“¦ where this page comes from