STRUCT PCI_TSM(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

struct pci_tsm β€” the core TSM context for a given PCIe endpoint. This is the struct pci_tsm(9) page from the Kernel API Manual, and bestie, it's literally the vibe check for one endpoint's TSM world. Slay. πŸ’–

πŸ“¦ SYNOPSIS πŸ“¦

Here's the whole struct, copied exactly so you can trust it fr fr:

       struct pci_tsm {
           struct pci_dev *pdev;
           struct pci_dev *dsm_dev;
           struct tsm_dev *tsm_dev;
           struct pci_tdi *tdi;
        };

🧩 Members 🧩

  • pdev β€” back ref to the device function; it distinguishes the type of pci_tsm context. πŸ‘‘
  • dsm_dev β€” the PCI Device Security Manager for link operations on pdev. πŸ’…
  • tsm_dev β€” the PCI TEE Security Manager device for Link Confidentiality or Device Function Security operations. πŸ”₯
  • tdi β€” the TDI context established by the bind link operation. πŸ¦‹

πŸ’– Description πŸ’–

Okay so this structure is wrapped by low level TSM driver data and returned by probe/lock; it is freed by the corresponding remove/unlock. Periodt. 🫢

For link operations, it serves to cache the association between a Device Security Manager (DSM) and the functions that manager can assign to a TVM. That can be "self", for assigning function0 of a TEE I/O device, a sub-function (SR-IOV virtual function, or non-function0 multifunction-device), or a downstream endpoint (PCIe upstream switch-port as DSM). No cap, that's the whole link-up lore. 🌈

πŸ‘€ SEE ALSO πŸ‘€

  • Kernel file ./include/linux/pci-tsm.h
  • struct pci_tdi(9)
  • struct pci_tsm_pf0(9)
  • enum pci_tsm_req_scope(9)

Source/version: ./include/linux Β· Date: October 2026 Β· page: struct pci_tsm(9) πŸ’– xoxo, bestie.

πŸ“¦ where this page comes from