STRUCT FW_RSC_VDEV_VRING(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct fw_rsc_vdev_vring(9) πŸ’…

okay bestie, welcome to the Kernel API Manual β€” today's main character is struct fw_rsc_vdev_vring, and no cap, she's lowkey iconic. this is the vring descriptor entry, and we're gonna get into it ✨


✨ NAME ✨

struct fw_rsc_vdev_vring β€” the vring descriptor entry πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

struct fw_rsc_vdev_vring {
    u32 da;
    u32 align;
    u32 num;
    u32 notifyid;
    u32 pa;
 };

that's her. five u32 fields, zero drama (mostly). let's meet the members 🫢


🌸 Members 🌸

  • da β€” the device address, periodt. (more on this queen in Description, she's got lore)
  • align β€” the alignment between the consumer and producer parts of the vring. it's giving "personal space, but make it architecture" πŸ’…
  • num β€” the num of buffers supported by this vring. and heads up: it must be power of two ⚠️ like, non-negotiable, fr fr
  • notifyid β€” a unique rproc-wide notify index for this vring πŸ”₯ this notify index is literally what gets used when kicking a remote processor, so it can know that this vring is triggered. think of it as the vring's very own ringtone 😭
  • pa β€” physical address 🏠

πŸ’€ Description πŸ’€

okay so important vibe check: this descriptor is not a resource entry by itself. nope. she's part of the vdev resource type (see below, iykyk) 🌈

and not me warning you about da β€” note that da should either contain the device address where the remote processor is expecting the vring, or indicate that dynamically allocation of the vring's device address is supported. two moods, pick one 🧚

bestie do NOT forget: this is a part of something bigger, not a standalone resource entry. num still has to be a power of two, and da has to be one of those two things. miss that and it's πŸ’€

πŸ‘‘ SEE ALSO πŸ‘‘

the whole squad, all here, all slaying:

  • Kernel file ./include/linux/rsc_table.h
  • struct resource_table(9)
  • struct fw_rsc_hdr(9)
  • enum fw_resource_type(9)
  • struct fw_rsc_carveout(9)
  • struct fw_rsc_devmem(9)
  • struct fw_rsc_trace(9)
  • struct fw_rsc_vdev(9)
  • rsc_table_for_each_entry(9)

anyway that's the whole page, you ate that πŸ’– this came from ./include/linux, dated October 2026, and it's still filed under struct fw_rsc_vdev_vring(9) β€” go read the rest of the squad now, mwah πŸŽ€πŸ¦‹βœ¨

πŸ“¦ where this page comes from