diff options
Diffstat (limited to 'include/linux/efi.h')
| -rw-r--r-- | include/linux/efi.h | 27 | 
1 files changed, 21 insertions, 6 deletions
| diff --git a/include/linux/efi.h b/include/linux/efi.h index 7f5a58225385..0148a3046b48 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -118,6 +118,15 @@ typedef struct {  	u32 imagesize;  } efi_capsule_header_t; +struct efi_boot_memmap { +	efi_memory_desc_t	**map; +	unsigned long		*map_size; +	unsigned long		*desc_size; +	u32			*desc_ver; +	unsigned long		*key_ptr; +	unsigned long		*buff_size; +}; +  /*   * EFI capsule flags   */ @@ -946,7 +955,7 @@ extern int efi_memattr_apply_permissions(struct mm_struct *mm,  /* Iterate through an efi_memory_map */  #define for_each_efi_memory_desc_in_map(m, md)				   \  	for ((md) = (m)->map;						   \ -	     ((void *)(md) + (m)->desc_size) <= (m)->map_end;		   \ +	     (md) && ((void *)(md) + (m)->desc_size) <= (m)->map_end;	   \  	     (md) = (void *)(md) + (m)->desc_size)  /** @@ -1371,11 +1380,7 @@ char *efi_convert_cmdline(efi_system_table_t *sys_table_arg,  			  efi_loaded_image_t *image, int *cmd_line_len);  efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, -				efi_memory_desc_t **map, -				unsigned long *map_size, -				unsigned long *desc_size, -				u32 *desc_ver, -				unsigned long *key_ptr); +				struct efi_boot_memmap *map);  efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg,  			   unsigned long size, unsigned long align, @@ -1457,4 +1462,14 @@ extern void efi_call_virt_check_flags(unsigned long flags, const char *call);  	arch_efi_call_virt_teardown();					\  }) +typedef efi_status_t (*efi_exit_boot_map_processing)( +	efi_system_table_t *sys_table_arg, +	struct efi_boot_memmap *map, +	void *priv); + +efi_status_t efi_exit_boot_services(efi_system_table_t *sys_table, +				    void *handle, +				    struct efi_boot_memmap *map, +				    void *priv, +				    efi_exit_boot_map_processing priv_func);  #endif /* _LINUX_EFI_H */ | 
