STRUCT PDS_LM_DIRTY_SEQ_ACK_CMD(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct pds_..._seq_ack_cmd(9) β€” Kernel API Manual, bestie edition πŸŽ€

okay so this is a page from the Kernel API Manual, which is genuinely iconic documentation energy, and today's main character is struct pds_..._seq_ack_cmd(9). buckle up πŸ¦‹


✨ NAME ✨

struct pds_lm_dirty_seq_ack_cmd β€” it's the DIRTY_READ_SEQ or _WRITE_ACK command. that's the whole vibe, no cap πŸ’–


🌸 SYNOPSIS 🌸

struct pds_lm_dirty_seq_ack_cmd {
    u8 opcode;
    u8 rsvd;
    __le16 vf_id;
    __le32 off_bytes;
    __le32 len_bytes;
    __le16 num_sge;
    u8 rsvd2[2];
    __le64 sgl_addr;
 };

literally just a struct, but make it fashion 😌 look at those fields, they ate πŸ”₯


🧚 Members 🧚

  • opcode β€” the opcode. it's PDS_LM_CMD_DIRTY_[READ_SEQ|WRITE_ACK], iykyk πŸ‘‘
  • rsvd β€” word boundary padding. it's giving filler episode but it's important πŸ’…
  • vf_id β€” the VF id. that's it, that's the field 🫢
  • off_bytes β€” byte offset in the bitmap, so like where we starting πŸ“
  • len_bytes β€” number of bytes to transfer. how much we moving, bestie πŸ“
  • num_sge β€” number of DMA scatter gather elements ✨
  • rsvd2 β€” more word boundary padding. yes there's two of them, and honestly? obsessed πŸ’œ
  • sgl_addr β€” DMA address of scatter gather list. where the list actually lives πŸ”₯

πŸ¦‹ Description πŸ¦‹

so what does it do: it reads bytes from the SEQ bitmap, or writes bytes into the ACK bitmap. two moods, one struct πŸ’…

here's the tea though β€” this command treats the entire bitmap as a byte buffer. it does not distinguish between guest memory regions. like, zero acknowledgement of boundaries. πŸ™ˆ

so the driver should refer to the number of pages in each region, according to PDS_LM_CMD_DIRTY_STATUS, to figure out the region boundaries in the bitmap. that's how you know where one region ends and the next begins, fr fr.

and each region will be represented by exactly the number of bits as the page count for that region, immediately following the last bit of the previous region. so they're just lined up back to back, no gaps, no drama, periodt ✨


🌈 SEE ALSO 🌈

Kernel file ./include/linux/pds/pds_adminq.h struct β€” and honestly the whole extended friend group is here, so let's do the roll call πŸ’–

  • pds_core_notifyq_event(9)
  • struct pds_core_link_change_event(9)
  • struct pds_core_reset_event(9)
  • struct pds_core_client_event(9)
  • struct pds_core_notifyq_cmd(9)
  • struct pds_core_client_reg_cmd(9)
  • struct pds_core_client_reg_comp(9)
  • struct pds_core_client_unreg_cmd(9)
  • struct pds_core_client_request_cmd(9)
  • enum pds_core_logical_qtype(9)
  • union pds_core_lif_config(9)
  • struct pds_core_lif_status(9)
  • struct pds_core_lif_info(9)
  • struct pds_core_lif_identity(9)
  • struct pds_core_lif_identify_cmd(9)
  • struct pds_core_lif_identify_comp(9)
  • struct pds_core_lif_init_cmd(9)
  • struct pds_core_lif_init_comp(9)
  • struct pds_core_lif_reset_cmd(9)
  • enum pds_core_lif_attr(9)
  • struct pds_core_lif_setattr_cmd(9)
  • struct pds_core_lif_setattr_comp(9)
  • struct pds_core_lif_getattr_cmd(9)
  • struct pds_core_lif_getattr_comp(9)
  • struct pds_core_q_identity(9)
  • struct pds_core_q_identify_cmd(9)
  • struct pds_core_q_identify_comp(9)
  • struct pds_core_q_init_cmd(9)
  • struct pds_core_q_init_comp(9)
  • struct pds_vdpa_cmd(9)
  • struct pds_vdpa_init_cmd(9)
  • struct pds_vdpa_ident(9)
  • struct pds_vdpa_ident_cmd(9)
  • struct pds_vdpa_status_cmd(9)
  • enum pds_vdpa_attr(9)
  • struct pds_vdpa_setattr_cmd(9)
  • struct pds_vdpa_vq_init_cmd(9)
  • struct pds_vdpa_vq_init_comp(9)
  • struct pds_vdpa_vq_reset_cmd(9)
  • struct pds_vdpa_vq_reset_comp(9)
  • struct pds_vdpa_set_features_cmd(9)
  • struct pds_lm_cmd(9)
  • struct pds_lm_state_size_cmd(9)
  • struct pds_lm_state_size_comp(9)
  • struct pds_lm_suspend_cmd(9)
  • struct pds_lm_suspend_status_cmd(9)
  • struct pds_lm_resume_cmd(9)
  • struct pds_lm_sg_elem(9)
  • struct pds_lm_save_cmd(9)
  • struct pds_lm_restore_cmd(9)
  • union pds_lm_dev_state(9)
  • struct pds_lm_dirty_region_info(9)
  • struct pds_lm_dirty_status_cmd(9)
  • enum pds_lm_dirty_bmp_type(9)
  • struct pds_lm_dirty_status_comp(9)
  • struct pds_lm_dirty_enable_cmd(9)
  • struct pds_lm_dirty_disable_cmd(9)
  • struct pds_lm_host_vf_status_cmd(9)
  • struct pds_fwctl_cmd(9)
  • struct pds_fwctl_comp(9)
  • struct pds_fwctl_ident_cmd(9)
  • struct pds_fwctl_ident(9)
  • struct pds_fwctl_query_cmd(9)
  • struct pds_fwctl_query_comp(9)
  • struct pds_fwctl_query_data_endpoint(9)
  • struct pds_fwctl_query_data_operation(9)
  • struct pds_fwctl_query_data(9)
  • struct pds_fwctl_rpc_cmd(9)
  • struct pds_sg_elem(9)
  • struct pds_fwctl_rpc_comp(9)

like I said. the whole friend group. 🫢


and that's the page!! sourced straight from ./include/linux/pds, dated October 2026 β€” so mark your calendars bestie, this one's stamped and official πŸŽ€βœ¨πŸ’–

πŸ“¦ where this page comes from