STRUCT INTEL_VSEC_DEVICE(9)
π struct intel_vsec_device(9) β like, the Kernel API Manual, but make it make sense
okay so bestie, gather round, because today we're reading struct intel_vsec_device from the struct intel_vsec_device(9) page and honestly? it's giving "auxbus but make it extra." no cap, this is the struct that carries all the Auxbus-specific device info, and once you see it laid out you'll be like ohhh that's what that field was for. π«Ά
β¨ NAME β¨
struct intel_vsec_device β Auxbus specific device information. that's it, that's the whole vibe check. π
πΈ SYNOPSIS πΈ
here's the whole struct, character for character, because we do NOT paraphrase code in this house:
struct intel_vsec_device {
struct auxiliary_device auxdev;
struct device *dev;
u32 (*acpi_disc)[PMT_DISC_DWORDS];
enum intel_vsec_disc_source src;
struct ida *ida;
int num_resources;
int id;
void *priv_data;
size_t priv_data_size;
unsigned long quirks;
u64 base_addr;
unsigned long cap_id;
struct resource resource[];
};
like, look at her. main character struct energy fr fr. π
π Members π
okay now we go field by field, bestie, no skipping, we're doing ALL of them:
auxdevβ the auxbus device struct for auxbus access. literally her whole reason for existing, the auxbus entry pass. β¨devβ thestruct deviceassociated with the device. yes it's a device inside a device situation, don't overthink it, it's fine. π¦acpi_discβ the ACPI discovery tables! each entry is twoQWORDs in little-endian format, exactly as defined by the PMT ACPI spec. heads up though: this one is valid only whensrc == INTEL_VSEC_DISC_ACPI. so like, read thesrcfield first, bestie, i'm begging. πsrcβ the source of the discovery table data. this is your "which flavor of discovery are we doing" field, and it decides whetheracpi_discorresourceis even real. πidaβ id reference. short, sweet, iconic. πnum_resourcesβ number of resources. it does what it says on the tin, no notes. βidβ xarray id. yes it's an id and there's anidafield, no they're not the same thing, we don't ask questions, we just copy them correctly. πpriv_dataβ any private data needed. your little pocket of secrets, bestie. πpriv_data_sizeβ size of the private data area. becausepriv_dataneeds apriv_data_size, they're a matching set, obsessed. πquirksβ specified quirks. every good struct has some quirks, honestly relatable. πΈbase_addrβ base address of entries (if specified). the "(if specified)" is doing a lot of heavy lifting there so keep it in mind. π₯cap_idβ the enumerated id of the vsec feature. not to be confused withid, which is the xarray id, we've been over this. πresourceβ PCI discovery resources (BAR windows), one per discovery instance. and just likeacpi_dischad a condition, this one does too: valid only whensrc == INTEL_VSEC_DISC_PCI. ok so the pattern is: checksrc, then touch the pointer. periodt. π
fr fr the two "valid only when" caveats are the whole point of this struct βsrctells you which ofacpi_disc/resourceactually means anything. don't go reading a field that isn't valid for yoursrc, that's how you get sad undefined-behavior vibes. π
π§ SEE ALSO π§
go read these next, bestie, they're all in Kernel file ./include/linux/intel_vsec.h:
struct intel_vsec_header(9)struct pmt_callbacks(9)struct intel_vsec_platform_info(9)struct oobmsm_plat_info(9)
iykyk, it's a whole little friend group of structs and they all reference each other. π«Ά
π the cute sign-off π
and that's the page!! this one lives in ./include/linux, dated October 2026, in the Kernel API Manual. slay, ate, left no crumbs. now go check your src field before you dereference anything, bestie, and i'll see you in the next manpage. β¨ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms