drivers/firmware/efi/libstub/efistub.h

Source file repositories/reference/linux-study-clean/drivers/firmware/efi/libstub/efistub.h

File Facts

System
Linux kernel
Corpus path
drivers/firmware/efi/libstub/efistub.h
Extension
.h
Size
34800 bytes
Lines
1264
Domain
Driver Families
Bucket
drivers/firmware
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct efi_tcg2_event {
	u32		event_size;
	struct {
		u32	header_size;
		u16	header_version;
		u32	pcr_index;
		u32	event_type;
	} __packed event_header;
	/* u8[] event follows here */
} __packed;

/* from TCG PC Client Platform Firmware Profile Specification */
typedef struct tdTCG_PCClientTaggedEvent {
	u32	tagged_event_id;
	u32	tagged_event_data_size;
	u8	tagged_event_data[];
} TCG_PCClientTaggedEvent;

typedef struct efi_tcg2_event efi_tcg2_event_t;
typedef union efi_tcg2_protocol efi_tcg2_protocol_t;

union efi_tcg2_protocol {
	struct {
		void *get_capability;
		efi_status_t (__efiapi *get_event_log)(efi_tcg2_protocol_t *,
						       efi_tcg2_event_log_format,
						       efi_physical_addr_t *,
						       efi_physical_addr_t *,
						       efi_bool_t *);
		efi_status_t (__efiapi *hash_log_extend_event)(efi_tcg2_protocol_t *,
							       u64,
							       efi_physical_addr_t,
							       u64,
							       const efi_tcg2_event_t *);
		void *submit_command;
		void *get_active_pcr_banks;
		void *set_active_pcr_banks;
		void *get_result_of_set_active_pcr_banks;
	};
	struct {
		u32 get_capability;
		u32 get_event_log;
		u32 hash_log_extend_event;
		u32 submit_command;
		u32 get_active_pcr_banks;
		u32 set_active_pcr_banks;
		u32 get_result_of_set_active_pcr_banks;
	} mixed_mode;
};

typedef struct {
	u8 major;
	u8 minor;
} efi_cc_version_t;

typedef struct {
	u8 type;
	u8 sub_type;
} efi_cc_type_t;

/* EFI CC type/subtype defines */
#define EFI_CC_TYPE_NONE		0
#define EFI_CC_TYPE_AMD_SEV		1
#define EFI_CC_TYPE_INTEL_TDX		2

typedef u32 efi_cc_mr_index_t;

struct efi_cc_event {
	u32 event_size;
	struct {
		u32 header_size;
		u16 header_version;
		u32 mr_index;
		u32 event_type;
	} __packed event_header;
	/* u8[] event follows here */
} __packed;

typedef struct efi_cc_event efi_cc_event_t;

typedef u32 efi_cc_event_log_bitmap_t;
typedef u32 efi_cc_event_log_format_t;
typedef u32 efi_cc_event_algorithm_bitmap_t;

typedef struct {
	u8				size;
	efi_cc_version_t		structure_version;
	efi_cc_version_t		protocol_version;
	efi_cc_event_algorithm_bitmap_t	hash_algorithm_bitmap;
	efi_cc_event_log_bitmap_t	supported_event_logs;

Annotation

Implementation Notes