~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm64/include/asm/efi.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/arm64/include/asm/efi.h (Architecture ppc) and /arch/mips/include/asm-mips/efi.h (Architecture mips)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 
  2 #ifndef _ASM_EFI_H                                
  3 #define _ASM_EFI_H                                
  4                                                   
  5 #include <asm/boot.h>                             
  6 #include <asm/cpufeature.h>                       
  7 #include <asm/fpsimd.h>                           
  8 #include <asm/io.h>                               
  9 #include <asm/memory.h>                           
 10 #include <asm/mmu_context.h>                      
 11 #include <asm/neon.h>                             
 12 #include <asm/ptrace.h>                           
 13 #include <asm/tlbflush.h>                         
 14                                                   
 15 #ifdef CONFIG_EFI                                 
 16 extern void efi_init(void);                       
 17                                                   
 18 bool efi_runtime_fixup_exception(struct pt_reg    
 19 #else                                             
 20 #define efi_init()                                
 21                                                   
 22 static inline                                     
 23 bool efi_runtime_fixup_exception(struct pt_reg    
 24 {                                                 
 25         return false;                             
 26 }                                                 
 27 #endif                                            
 28                                                   
 29 int efi_create_mapping(struct mm_struct *mm, e    
 30 int efi_set_mapping_permissions(struct mm_stru    
 31                                 bool has_bti);    
 32                                                   
 33 #undef arch_efi_call_virt                         
 34 #define arch_efi_call_virt(p, f, args...)         
 35         __efi_rt_asm_wrapper((p)->f, #f, args)    
 36                                                   
 37 extern u64 *efi_rt_stack_top;                     
 38 efi_status_t __efi_rt_asm_wrapper(void *, cons    
 39                                                   
 40 void arch_efi_call_virt_setup(void);              
 41 void arch_efi_call_virt_teardown(void);           
 42                                                   
 43 /*                                                
 44  * efi_rt_stack_top[-1] contains the value the    
 45  * switching to the EFI runtime stack.            
 46  */                                               
 47 #define current_in_efi()                          
 48         (!preemptible() && efi_rt_stack_top !=    
 49          on_task_stack(current, READ_ONCE(efi_    
 50                                                   
 51 #define ARCH_EFI_IRQ_FLAGS_MASK (PSR_D_BIT | P    
 52                                                   
 53 /*                                                
 54  * Even when Linux uses IRQ priorities for IRQ    
 55  * And EFI shouldn't really play around with p    
 56  * which priorities the OS has assigned to its    
 57  */                                               
 58 #define arch_efi_save_flags(state_flags)          
 59         ((void)((state_flags) = read_sysreg(da    
 60                                                   
 61 #define arch_efi_restore_flags(state_flags)       
 62                                                   
 63                                                   
 64 /* arch specific definitions used by the stub     
 65                                                   
 66 /*                                                
 67  * In some configurations (e.g. VMAP_STACK &&     
 68  * kernel need greater alignment than we requi    
 69  */                                               
 70 #define EFI_KIMG_ALIGN  \                         
 71         (SEGMENT_ALIGN > THREAD_ALIGN ? SEGMEN    
 72                                                   
 73 /*                                                
 74  * On arm64, we have to ensure that the initrd    
 75  * which is a 1 GB aligned region of size '1UL    
 76  * guaranteed to cover the kernel Image.          
 77  *                                                
 78  * Since the EFI stub is part of the kernel Im    
 79  * usual requirements in Documentation/arch/ar    
 80  * apply to other bootloaders, and are require    
 81  * configurations.                                
 82  */                                               
 83 static inline unsigned long efi_get_max_initrd    
 84 {                                                 
 85         return (image_addr & ~(SZ_1G - 1UL)) +    
 86 }                                                 
 87                                                   
 88 static inline unsigned long efi_get_kimg_min_a    
 89 {                                                 
 90         extern bool efi_nokaslr;                  
 91                                                   
 92         /*                                        
 93          * Although relocatable kernels can fi    
 94          * respect to MIN_KIMG_ALIGN, the resu    
 95          * subtly out of sync with those recor    
 96          * disabled but the image required rel    
 97          * 2M alignment if KASLR was explicitl    
 98          * going to be activated to begin with    
 99          */                                       
100         return efi_nokaslr ? MIN_KIMG_ALIGN :     
101 }                                                 
102                                                   
103 #define EFI_ALLOC_ALIGN         SZ_64K            
104 #define EFI_ALLOC_LIMIT         ((1UL << 48) -    
105                                                   
106 extern unsigned long primary_entry_offset(void    
107                                                   
108 /*                                                
109  * On ARM systems, virtually remapped UEFI run    
110  * distinct stages:                               
111  * - The stub retrieves the final version of t    
112  *   the virt_addr fields and calls the SetVir    
113  *   service to communicate the new mapping to    
114  *   mapping is not live at this time)            
115  * - During an early initcall(), the EFI syste    
116  *   and the virtual remapping of the UEFI Run    
117  *   into a private set of page tables. If thi    
118  *   Services are enabled and the EFI_RUNTIME_    
119  */                                               
120                                                   
121 static inline void efi_set_pgd(struct mm_struc    
122 {                                                 
123         __switch_mm(mm);                          
124                                                   
125         if (system_uses_ttbr0_pan()) {            
126                 if (mm != current->active_mm)     
127                         /*                        
128                          * Update the current     
129                          * restored as part of    
130                          * access to the valid    
131                          * workaround directly    
132                          * exception when invo    
133                          */                       
134                         update_saved_ttbr0(cur    
135                         uaccess_ttbr0_enable()    
136                         post_ttbr_update_worka    
137                 } else {                          
138                         /*                        
139                          * Defer the switch to    
140                          * until uaccess_enabl    
141                          * thread's saved ttbr    
142                          */                       
143                         uaccess_ttbr0_disable(    
144                         update_saved_ttbr0(cur    
145                 }                                 
146         }                                         
147 }                                                 
148                                                   
149 void efi_virtmap_load(void);                      
150 void efi_virtmap_unload(void);                    
151                                                   
152 static inline void efi_capsule_flush_cache_ran    
153 {                                                 
154         dcache_clean_inval_poc((unsigned long)    
155 }                                                 
156                                                   
157 efi_status_t efi_handle_corrupted_x18(efi_stat    
158                                                   
159 void efi_icache_sync(unsigned long start, unsi    
160                                                   
161 #endif /* _ASM_EFI_H */                           
162                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php