diff options
| author | Ingo Molnar <mingo@kernel.org> | 2022-09-21 09:58:02 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2022-09-21 09:58:02 +0200 | 
| commit | 74656d03ac36fabb16b9df5221cf398ee3a9ca08 (patch) | |
| tree | 0600e619ac817e2c016c148810814f55280316cc /include/linux/efi.h | |
| parent | 0d97db026509c1a13f732b22670ab1f0ac9d8d87 (diff) | |
| parent | 521a547ced6477c54b4b0cc206000406c221b4d6 (diff) | |
Merge tag 'v6.0-rc6' into locking/core, to refresh the branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/linux/efi.h')
| -rw-r--r-- | include/linux/efi.h | 85 | 
1 files changed, 25 insertions, 60 deletions
diff --git a/include/linux/efi.h b/include/linux/efi.h index 7d9b0bb47eb3..d2b84c2fec39 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -872,6 +872,7 @@ static inline bool efi_rt_services_supported(unsigned int mask)  {  	return (efi.runtime_supported_mask & mask) == mask;  } +extern void efi_find_mirror(void);  #else  static inline bool efi_enabled(int feature)  { @@ -889,6 +890,8 @@ static inline bool efi_rt_services_supported(unsigned int mask)  {  	return false;  } + +static inline void efi_find_mirror(void) {}  #endif  extern int efi_status_to_err(efi_status_t status); @@ -1027,29 +1030,6 @@ struct efivars {  #define EFI_VAR_NAME_LEN	1024 -struct efi_variable { -	efi_char16_t  VariableName[EFI_VAR_NAME_LEN/sizeof(efi_char16_t)]; -	efi_guid_t    VendorGuid; -	unsigned long DataSize; -	__u8          Data[1024]; -	efi_status_t  Status; -	__u32         Attributes; -} __attribute__((packed)); - -struct efivar_entry { -	struct efi_variable var; -	struct list_head list; -	struct kobject kobj; -	bool scanning; -	bool deleting; -}; - -static inline void -efivar_unregister(struct efivar_entry *var) -{ -	kobject_put(&var->kobj); -} -  int efivars_register(struct efivars *efivars,  		     const struct efivar_operations *ops,  		     struct kobject *kobject); @@ -1057,43 +1037,26 @@ int efivars_unregister(struct efivars *efivars);  struct kobject *efivars_kobject(void);  int efivar_supports_writes(void); -int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *), -		void *data, bool duplicates, struct list_head *head); - -int efivar_entry_add(struct efivar_entry *entry, struct list_head *head); -int efivar_entry_remove(struct efivar_entry *entry); - -int __efivar_entry_delete(struct efivar_entry *entry); -int efivar_entry_delete(struct efivar_entry *entry); - -int efivar_entry_size(struct efivar_entry *entry, unsigned long *size); -int __efivar_entry_get(struct efivar_entry *entry, u32 *attributes, -		       unsigned long *size, void *data); -int efivar_entry_get(struct efivar_entry *entry, u32 *attributes, -		     unsigned long *size, void *data); -int efivar_entry_set(struct efivar_entry *entry, u32 attributes, -		     unsigned long size, void *data, struct list_head *head); -int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, -			      unsigned long *size, void *data, bool *set); -int efivar_entry_set_safe(efi_char16_t *name, efi_guid_t vendor, u32 attributes, -			  bool block, unsigned long size, void *data); - -int efivar_entry_iter_begin(void); -void efivar_entry_iter_end(void); - -int __efivar_entry_iter(int (*func)(struct efivar_entry *, void *), -			struct list_head *head, void *data, -			struct efivar_entry **prev); -int efivar_entry_iter(int (*func)(struct efivar_entry *, void *), -		      struct list_head *head, void *data); - -struct efivar_entry *efivar_entry_find(efi_char16_t *name, efi_guid_t guid, -				       struct list_head *head, bool remove); - -bool efivar_validate(efi_guid_t vendor, efi_char16_t *var_name, u8 *data, -		     unsigned long data_size); -bool efivar_variable_is_removable(efi_guid_t vendor, const char *name, -				  size_t len); + +int efivar_lock(void); +int efivar_trylock(void); +void efivar_unlock(void); + +efi_status_t efivar_get_variable(efi_char16_t *name, efi_guid_t *vendor, +				 u32 *attr, unsigned long *size, void *data); + +efi_status_t efivar_get_next_variable(unsigned long *name_size, +				      efi_char16_t *name, efi_guid_t *vendor); + +efi_status_t efivar_set_variable_locked(efi_char16_t *name, efi_guid_t *vendor, +					u32 attr, unsigned long data_size, +					void *data, bool nonblocking); + +efi_status_t efivar_set_variable(efi_char16_t *name, efi_guid_t *vendor, +				 u32 attr, unsigned long data_size, void *data); + +efi_status_t check_var_size(u32 attributes, unsigned long size); +efi_status_t check_var_size_nonblocking(u32 attributes, unsigned long size);  #if IS_ENABLED(CONFIG_EFI_CAPSULE_LOADER)  extern bool efi_capsule_pending(int *reset_type); @@ -1181,6 +1144,8 @@ static inline void efi_check_for_embedded_firmwares(void) { }  efi_status_t efi_random_get_seed(void); +#define arch_efi_call_virt(p, f, args...)	((p)->f(args)) +  /*   * Arch code can implement the following three template macros, avoiding   * reptition for the void/non-void return cases of {__,}efi_call_virt():  | 
