1
2#ifndef __TPM_EVENTLOG_H__
3#define __TPM_EVENTLOG_H__
4
5#define TCG_EVENT_NAME_LEN_MAX	255
6#define MAX_TEXT_EVENT		1000	/* Max event string length */
7#define ACPI_TCPA_SIG		"TCPA"	/* 0x41504354 /'TCPA' */
8
9enum bios_platform_class {
10	BIOS_CLIENT = 0x00,
11	BIOS_SERVER = 0x01,
12};
13
14struct tpm_bios_log {
15	void *bios_event_log;
16	void *bios_event_log_end;
17};
18
19struct tcpa_event {
20	u32 pcr_index;
21	u32 event_type;
22	u8 pcr_value[20];	/* SHA1 */
23	u32 event_size;
24	u8 event_data[0];
25};
26
27enum tcpa_event_types {
28	PREBOOT = 0,
29	POST_CODE,
30	UNUSED,
31	NO_ACTION,
32	SEPARATOR,
33	ACTION,
34	EVENT_TAG,
35	SCRTM_CONTENTS,
36	SCRTM_VERSION,
37	CPU_MICROCODE,
38	PLATFORM_CONFIG_FLAGS,
39	TABLE_OF_DEVICES,
40	COMPACT_HASH,
41	IPL,
42	IPL_PARTITION_DATA,
43	NONHOST_CODE,
44	NONHOST_CONFIG,
45	NONHOST_INFO,
46};
47
48struct tcpa_pc_event {
49	u32 event_id;
50	u32 event_size;
51	u8 event_data[0];
52};
53
54enum tcpa_pc_event_ids {
55	SMBIOS = 1,
56	BIS_CERT,
57	POST_BIOS_ROM,
58	ESCD,
59	CMOS,
60	NVRAM,
61	OPTION_ROM_EXEC,
62	OPTION_ROM_CONFIG,
63	OPTION_ROM_MICROCODE = 10,
64	S_CRTM_VERSION,
65	S_CRTM_CONTENTS,
66	POST_CONTENTS,
67	HOST_TABLE_OF_DEVICES,
68};
69
70int read_log(struct tpm_bios_log *log);
71
72#if defined(CONFIG_TCG_IBMVTPM) || defined(CONFIG_TCG_IBMVTPM_MODULE) || \
73	defined(CONFIG_ACPI)
74extern struct dentry **tpm_bios_log_setup(char *);
75extern void tpm_bios_log_teardown(struct dentry **);
76#else
77static inline struct dentry **tpm_bios_log_setup(char *name)
78{
79	return NULL;
80}
81static inline void tpm_bios_log_teardown(struct dentry **dir)
82{
83}
84#endif
85
86#endif
87