diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/efi_api.h | 59 | ||||
-rw-r--r-- | include/lmb.h | 72 |
2 files changed, 79 insertions, 52 deletions
diff --git a/include/efi_api.h b/include/efi_api.h index 0accad08c8e..80109f012bc 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -20,8 +20,8 @@ #include <charset.h> #include <pe.h> -/* UEFI spec version 2.8 */ -#define EFI_SPECIFICATION_VERSION (2 << 16 | 80) +/* UEFI spec version 2.9 */ +#define EFI_SPECIFICATION_VERSION (2 << 16 | 90) /* Types and defines for EFI CreateEvent */ enum efi_timer_delay { @@ -360,10 +360,15 @@ struct efi_runtime_services { }; /* EFI event group GUID definitions */ + #define EFI_EVENT_GROUP_EXIT_BOOT_SERVICES \ EFI_GUID(0x27abf055, 0xb1b8, 0x4c26, 0x80, 0x48, \ 0x74, 0x8f, 0x37, 0xba, 0xa2, 0xdf) +#define EFI_EVENT_GROUP_BEFORE_EXIT_BOOT_SERVICES \ + EFI_GUID(0x8be0e274, 0x3970, 0x4b44, 0x80, 0xc5, \ + 0x1a, 0xb9, 0x50, 0x2f, 0x3b, 0xfc) + #define EFI_EVENT_GROUP_VIRTUAL_ADDRESS_CHANGE \ EFI_GUID(0x13fa7698, 0xc831, 0x49c7, 0x87, 0xea, \ 0x8f, 0x43, 0xfc, 0xc2, 0x51, 0x96) @@ -376,6 +381,10 @@ struct efi_runtime_services { EFI_GUID(0x7ce88fb3, 0x4bd7, 0x4679, 0x87, 0xa8, \ 0xa8, 0xd8, 0xde, 0xe5, 0x0d, 0x2b) +#define EFI_EVENT_GROUP_AFTER_READY_TO_BOOT \ + EFI_GUID(0x3a2a00ad, 0x98b9, 0x4cdf, 0xa4, 0x78, \ + 0x70, 0x27, 0x77, 0xf1, 0xc1, 0xb) + #define EFI_EVENT_GROUP_RESET_SYSTEM \ EFI_GUID(0x62da6a56, 0x13fb, 0x485a, 0xa8, 0xda, \ 0xa3, 0xdd, 0x79, 0x12, 0xcb, 0x6b) @@ -417,6 +426,15 @@ struct efi_runtime_services { EFI_GUID(0x1e2ed096, 0x30e2, 0x4254, 0xbd, \ 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25) +/** + * struct efi_configuration_table - EFI Configuration Table + * + * This table contains a set of GUID/pointer pairs. + * The EFI Configuration Table may contain at most one instance of each table type. + * + * @guid: GUID that uniquely identifies the system configuration table + * @table: A pointer to the table associated with guid + */ struct efi_configuration_table { efi_guid_t guid; void *table; @@ -424,6 +442,29 @@ struct efi_configuration_table { #define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL) +/** + * struct efi_system_table - EFI System Table + * + * EFI System Table contains pointers to the runtime and boot services tables. + * + * @hdr: The table header for the EFI System Table + * @fw_vendor: A pointer to a null terminated string that identifies the vendor + * that produces the system firmware + * @fw_revision: The revision of the system firmware + * @con_in_handle: The handle for the active console input device + * @con_in: A pointer to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL interface + * that is associated with con_in_handle + * @con_out_handle: The handle for the active console output device + * @con_out: A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface + * that is associated with con_out_handle + * @stderr_handle: The handle for the active standard error console device + * @std_err: A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface + * that is associated with stderr_handle + * @runtime: A pointer to the EFI Runtime Services Table + * @boottime: A pointer to the EFI Boot Services Table + * @nr_tables: The number of system configuration tables + * @tables: A pointer to the system configuration tables + */ struct efi_system_table { struct efi_table_hdr hdr; u16 *fw_vendor; /* physical addr of wchar_t vendor string */ @@ -870,8 +911,8 @@ struct efi_hii_package_list_header { * @fields: 'fields' replaces the bit-fields defined in the EFI * specification to to avoid possible compiler incompatibilities:: * - * u32 length:24; - * u32 type:8; + * u32 length:24; + * u32 type:8; */ struct efi_hii_package_header { u32 fields; @@ -1809,7 +1850,7 @@ struct efi_system_resource_table { 0x34, 0x7d, 0x37, 0x56, 0x65, 0xa7) /** - * win_certificate_uefi_guid - A certificate that encapsulates + * struct win_certificate_uefi_guid - A certificate that encapsulates * a GUID-specific signature * * @hdr: Windows certificate header @@ -1823,7 +1864,7 @@ struct win_certificate_uefi_guid { } __attribute__((__packed__)); /** - * efi_variable_authentication_2 - A time-based authentication method + * struct efi_variable_authentication_2 - A time-based authentication method * descriptor * * This structure describes an authentication information for @@ -1840,7 +1881,7 @@ struct efi_variable_authentication_2 { } __attribute__((__packed__)); /** - * efi_firmware_image_authentication - Capsule authentication method + * struct efi_firmware_image_authentication - Capsule authentication method * descriptor * * This structure describes an authentication information for @@ -1858,7 +1899,7 @@ struct efi_firmware_image_authentication { /** - * efi_signature_data - A format of signature + * struct efi_signature_data - A format of signature * * This structure describes a single signature in signature database. * @@ -1871,7 +1912,7 @@ struct efi_signature_data { } __attribute__((__packed__)); /** - * efi_signature_list - A format of signature database + * struct efi_signature_list - A format of signature database * * This structure describes a list of signatures with the same type. * An authenticated variable's value is a concatenation of one or more diff --git a/include/lmb.h b/include/lmb.h index 19842911322..ab277ca8000 100644 --- a/include/lmb.h +++ b/include/lmb.h @@ -25,8 +25,9 @@ enum lmb_flags { /** * struct lmb_property - Description of one region. * - * @base: Base address of the region. - * @size: Size of the region + * @base: Base address of the region. + * @size: Size of the region + * @flags: memory region attributes */ struct lmb_property { phys_addr_t base; @@ -73,64 +74,49 @@ struct lmb { #endif }; -extern void lmb_init(struct lmb *lmb); -extern void lmb_init_and_reserve(struct lmb *lmb, struct bd_info *bd, - void *fdt_blob); -extern void lmb_init_and_reserve_range(struct lmb *lmb, phys_addr_t base, - phys_size_t size, void *fdt_blob); -extern long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size); -extern long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size); +void lmb_init(struct lmb *lmb); +void lmb_init_and_reserve(struct lmb *lmb, struct bd_info *bd, void *fdt_blob); +void lmb_init_and_reserve_range(struct lmb *lmb, phys_addr_t base, + phys_size_t size, void *fdt_blob); +long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size); +long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size); /** * lmb_reserve_flags - Reserve one region with a specific flags bitfield. * - * @lmb the logical memory block struct - * @base base address of the memory region - * @size size of the memory region - * @flags flags for the memory region - * @return 0 if OK, > 0 for coalesced region or a negative error code. + * @lmb: the logical memory block struct + * @base: base address of the memory region + * @size: size of the memory region + * @flags: flags for the memory region + * Return: 0 if OK, > 0 for coalesced region or a negative error code. */ long lmb_reserve_flags(struct lmb *lmb, phys_addr_t base, phys_size_t size, enum lmb_flags flags); -extern phys_addr_t lmb_alloc(struct lmb *lmb, phys_size_t size, ulong align); -extern phys_addr_t lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, - phys_addr_t max_addr); -extern phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, - phys_addr_t max_addr); -extern phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base, - phys_size_t size); -extern phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr); -extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr); +phys_addr_t lmb_alloc(struct lmb *lmb, phys_size_t size, ulong align); +phys_addr_t lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, + phys_addr_t max_addr); +phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, + phys_addr_t max_addr); +phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base, phys_size_t size); +phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr); +int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr); /** * lmb_is_reserved_flags - test if tha address is in reserved region with a bitfield flag * - * @lmb the logical memory block struct - * @addr address to be tested - * @flags flags bitfied to be tested - * @return 0 if not reserved or reserved without the requested flag else 1 + * @lmb: the logical memory block struct + * @addr: address to be tested + * @flags: flags bitfied to be tested + * Return: if not reserved or reserved without the requested flag else 1 */ int lmb_is_reserved_flags(struct lmb *lmb, phys_addr_t addr, int flags); -extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size); +long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size); -extern void lmb_dump_all(struct lmb *lmb); -extern void lmb_dump_all_force(struct lmb *lmb); - -static inline phys_size_t -lmb_size_bytes(struct lmb_region *type, unsigned long region_nr) -{ - return type->region[region_nr].size; -} +void lmb_dump_all(struct lmb *lmb); +void lmb_dump_all_force(struct lmb *lmb); void board_lmb_reserve(struct lmb *lmb); void arch_lmb_reserve(struct lmb *lmb); void arch_lmb_reserve_generic(struct lmb *lmb, ulong sp, ulong end, ulong align); -/* Low level functions */ - -static inline bool lmb_is_nomap(struct lmb_property *m) -{ - return m->flags & LMB_NOMAP; -} - #endif /* __KERNEL__ */ #endif /* _LINUX_LMB_H */ |