libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ’– NAME πŸ’–

Okay bestie, welcome to the libnvme(9) page πŸŽ€. This one is all about struct nvme_tdisp_device_interface_report β€” the NVMe TDISP DEVICE_INTERFACE_REPORT Reporting Structure. Yes, that is a whole mouthful, and yes, we are going to decode it together πŸ’…βœ¨.

✨ SYNOPSIS ✨

       struct nvme_tdisp_device_interface_report {
           __le32 tni;
           __le32 ti;
           __u8 cu;
           __u8 vu;
           __u8 rsvd10[2];
           __le32 aqv;
           __le32 asv;
           __le32 acv;
           __le32 cv;
           __le32 pmv;
           __le32 pcv;
           __u8 qh[48];
           __u8 rsvd84[44];
        };

🧚 Members 🧚

  • tni β€” TDISP NVMe Identifier, and it shall be NVME_TDISP_NVME_IDENTIFIER. Periodt πŸ’….
  • ti β€” TDISP Information, see enum nvme_tdisp_ti. Go peek at the enum, iykyk πŸ‘€.
  • cu β€” CSVL Used: the Controller State Version Index of the NVMe Controller State data structure used to generate qh. Very main character bookkeeping energy ✨.
  • vu β€” VER Used: the Version field in the NVMe Controller State data structure used to generate qh. Matching vibes with cu, fr fr πŸ¦‹.
  • rsvd10 β€” Reserved. Nothing to see here, bestie πŸ™ˆ.
  • aqv β€” AQA Value. That's the whole tea β˜•.
  • asv β€” ASQ Value. Noted and slaying πŸ’–.
  • acv β€” ACQ Value. Also noted πŸ‘‘.
  • cv β€” CMBMSC Value. Yup, exactly that πŸ’«.
  • pmv β€” PMRMSC Value. Keep it moving 🌸.
  • pcv β€” PMRCTL Value. Iconic little field name πŸŽ€.
  • qh β€” Queue Hash: a SHA-384 hash of all the fields in the NVMe Controller State data structure, see struct nvme_lm_controller_state_data. Obsessed with a good hash, ngl πŸ”₯.
  • rsvd84 β€” Reserved. More padding, more chill 😌.

🌈 Description 🌈

So picture this 🫢: this struct is the NVMe class-specific DEVICE_SPECIFIC_INFO payload that a PCIe Function returns in response to a PCIe TDISP GET_DEVICE_INTERFACE_REPORT request β€” refer to the NVM Express over PCIe Transport Specification for the full lore πŸ“š.

And no cap: there is no NVMe Admin, I/O, or MI command that transfers this structure. It is produced by the device's Device Security Module and consumed by a platform TEE Security Module entirely via the PCIe TDISP protocol, outside of any NVMe command/response mechanism. The way that this type is provided is purely so that software which has otherwise obtained a DEVICE_INTERFACE_REPORT (e.g., from a TDISP/SPDM stack) can decode its NVMe-specific portion. It's giving "decoder helper with zero NVMe command drama," and honestly? We respect it πŸ’œ.


That's the whole page, bestie 🫢. Source/version tea: this is libnvme(9) from the API Manual, the page is struct nvme_tdisp_device_interface_report, and the date at the very end is October 2026 βœ¨πŸ’‹.

πŸ“¦ where this page comes from