Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 EFI changes from Ingo Molnar: "Main changes: - Add support for earlyprintk=efi which uses the EFI framebuffer. Very useful for debugging boot problems. - EFI stub support for large memory maps (more than 128 entries) - EFI ARM support - this was mostly done by generalizing x86 <-> ARM platform differences, such as by moving x86 EFI code into drivers/firmware/efi/ and sharing it with ARM. - Documentation updates - misc fixes" * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits) x86/efi: Add EFI framebuffer earlyprintk support boot, efi: Remove redundant memset() x86/efi: Fix config_table_type array termination x86 efi: bugfix interrupt disabling sequence x86: EFI stub support for large memory maps efi: resolve warnings found on ARM compile efi: Fix types in EFI calls to match EFI function definitions. efi: Renames in handle_cmdline_files() to complete generalization. efi: Generalize handle_ramdisks() and rename to handle_cmdline_files(). efi: Allow efi_free() to be called with size of 0 efi: use efi_get_memory_map() to get final map for x86 efi: generalize efi_get_memory_map() efi: Rename __get_map() to efi_get_memory_map() efi: Move unicode to ASCII conversion to shared function. efi: Generalize relocate_kernel() for use by other architectures. efi: Move relocate_kernel() to shared file. efi: Enforce minimum alignment of 1 page on allocations. efi: Rename memory allocation/free functions efi: Add system table pointer argument to shared functions. efi: Move common EFI stub code from x86 arch code to common location ...
This commit is contained in:
@@ -39,6 +39,8 @@
|
||||
typedef unsigned long efi_status_t;
|
||||
typedef u8 efi_bool_t;
|
||||
typedef u16 efi_char16_t; /* UNICODE character */
|
||||
typedef u64 efi_physical_addr_t;
|
||||
typedef void *efi_handle_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
@@ -96,6 +98,7 @@ typedef struct {
|
||||
#define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
||||
|
||||
#define EFI_PAGE_SHIFT 12
|
||||
#define EFI_PAGE_SIZE (1UL << EFI_PAGE_SHIFT)
|
||||
|
||||
typedef struct {
|
||||
u32 type;
|
||||
@@ -157,11 +160,13 @@ typedef struct {
|
||||
efi_table_hdr_t hdr;
|
||||
void *raise_tpl;
|
||||
void *restore_tpl;
|
||||
void *allocate_pages;
|
||||
void *free_pages;
|
||||
void *get_memory_map;
|
||||
void *allocate_pool;
|
||||
void *free_pool;
|
||||
efi_status_t (*allocate_pages)(int, int, unsigned long,
|
||||
efi_physical_addr_t *);
|
||||
efi_status_t (*free_pages)(efi_physical_addr_t, unsigned long);
|
||||
efi_status_t (*get_memory_map)(unsigned long *, void *, unsigned long *,
|
||||
unsigned long *, u32 *);
|
||||
efi_status_t (*allocate_pool)(int, unsigned long, void **);
|
||||
efi_status_t (*free_pool)(void *);
|
||||
void *create_event;
|
||||
void *set_timer;
|
||||
void *wait_for_event;
|
||||
@@ -171,7 +176,7 @@ typedef struct {
|
||||
void *install_protocol_interface;
|
||||
void *reinstall_protocol_interface;
|
||||
void *uninstall_protocol_interface;
|
||||
void *handle_protocol;
|
||||
efi_status_t (*handle_protocol)(efi_handle_t, efi_guid_t *, void **);
|
||||
void *__reserved;
|
||||
void *register_protocol_notify;
|
||||
void *locate_handle;
|
||||
@@ -181,7 +186,7 @@ typedef struct {
|
||||
void *start_image;
|
||||
void *exit;
|
||||
void *unload_image;
|
||||
void *exit_boot_services;
|
||||
efi_status_t (*exit_boot_services)(efi_handle_t, unsigned long);
|
||||
void *get_next_monotonic_count;
|
||||
void *stall;
|
||||
void *set_watchdog_timer;
|
||||
@@ -404,6 +409,12 @@ typedef struct {
|
||||
unsigned long table;
|
||||
} efi_config_table_t;
|
||||
|
||||
typedef struct {
|
||||
efi_guid_t guid;
|
||||
const char *name;
|
||||
unsigned long *ptr;
|
||||
} efi_config_table_type_t;
|
||||
|
||||
#define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL)
|
||||
|
||||
#define EFI_2_30_SYSTEM_TABLE_REVISION ((2 << 16) | (30))
|
||||
@@ -488,10 +499,6 @@ typedef struct {
|
||||
unsigned long unload;
|
||||
} efi_loaded_image_t;
|
||||
|
||||
typedef struct {
|
||||
u64 revision;
|
||||
void *open_volume;
|
||||
} efi_file_io_interface_t;
|
||||
|
||||
typedef struct {
|
||||
u64 size;
|
||||
@@ -504,20 +511,30 @@ typedef struct {
|
||||
efi_char16_t filename[1];
|
||||
} efi_file_info_t;
|
||||
|
||||
typedef struct {
|
||||
typedef struct _efi_file_handle {
|
||||
u64 revision;
|
||||
void *open;
|
||||
void *close;
|
||||
efi_status_t (*open)(struct _efi_file_handle *,
|
||||
struct _efi_file_handle **,
|
||||
efi_char16_t *, u64, u64);
|
||||
efi_status_t (*close)(struct _efi_file_handle *);
|
||||
void *delete;
|
||||
void *read;
|
||||
efi_status_t (*read)(struct _efi_file_handle *, unsigned long *,
|
||||
void *);
|
||||
void *write;
|
||||
void *get_position;
|
||||
void *set_position;
|
||||
void *get_info;
|
||||
efi_status_t (*get_info)(struct _efi_file_handle *, efi_guid_t *,
|
||||
unsigned long *, void *);
|
||||
void *set_info;
|
||||
void *flush;
|
||||
} efi_file_handle_t;
|
||||
|
||||
typedef struct _efi_file_io_interface {
|
||||
u64 revision;
|
||||
int (*open_volume)(struct _efi_file_io_interface *,
|
||||
efi_file_handle_t **);
|
||||
} efi_file_io_interface_t;
|
||||
|
||||
#define EFI_FILE_MODE_READ 0x0000000000000001
|
||||
#define EFI_FILE_MODE_WRITE 0x0000000000000002
|
||||
#define EFI_FILE_MODE_CREATE 0x8000000000000000
|
||||
@@ -552,6 +569,7 @@ extern struct efi {
|
||||
efi_get_next_high_mono_count_t *get_next_high_mono_count;
|
||||
efi_reset_system_t *reset_system;
|
||||
efi_set_virtual_address_map_t *set_virtual_address_map;
|
||||
struct efi_memory_map *memmap;
|
||||
} efi;
|
||||
|
||||
static inline int
|
||||
@@ -587,6 +605,7 @@ static inline efi_status_t efi_query_variable_store(u32 attributes, unsigned lon
|
||||
}
|
||||
#endif
|
||||
extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr);
|
||||
extern int efi_config_init(efi_config_table_type_t *arch_tables);
|
||||
extern u64 efi_get_iobase (void);
|
||||
extern u32 efi_mem_type (unsigned long phys_addr);
|
||||
extern u64 efi_mem_attributes (unsigned long phys_addr);
|
||||
@@ -784,6 +803,13 @@ struct efivar_entry {
|
||||
struct kobject kobj;
|
||||
};
|
||||
|
||||
|
||||
struct efi_simple_text_output_protocol {
|
||||
void *reset;
|
||||
efi_status_t (*output_string)(void *, void *);
|
||||
void *test_string;
|
||||
};
|
||||
|
||||
extern struct list_head efivar_sysfs_list;
|
||||
|
||||
static inline void
|
||||
|
Reference in New Issue
Block a user