| .. | .. | 
|---|
| 14 | 14 |  #include <linux/types.h> | 
|---|
| 15 | 15 |  #include <asm/io.h> | 
|---|
| 16 | 16 |   | 
|---|
| 17 |  | -/* This must match data at realmode.S */  | 
|---|
 | 17 | +/* This must match data at realmode/rm/header.S */  | 
|---|
| 18 | 18 |  struct real_mode_header { | 
|---|
| 19 | 19 |  	u32	text_start; | 
|---|
| 20 | 20 |  	u32	ro_end; | 
|---|
| 21 | 21 |  	/* SMP trampoline */ | 
|---|
| 22 | 22 |  	u32	trampoline_start; | 
|---|
| 23 |  | -	u32	trampoline_status;  | 
|---|
| 24 | 23 |  	u32	trampoline_header; | 
|---|
 | 24 | +#ifdef CONFIG_AMD_MEM_ENCRYPT  | 
|---|
 | 25 | +	u32	sev_es_trampoline_start;  | 
|---|
 | 26 | +#endif  | 
|---|
| 25 | 27 |  #ifdef CONFIG_X86_64 | 
|---|
| 26 | 28 |  	u32	trampoline_pgd; | 
|---|
| 27 | 29 |  #endif | 
|---|
| .. | .. | 
|---|
| 37 | 39 |  #endif | 
|---|
| 38 | 40 |  }; | 
|---|
| 39 | 41 |   | 
|---|
| 40 |  | -/* This must match data at trampoline_32/64.S */  | 
|---|
 | 42 | +/* This must match data at realmode/rm/trampoline_{32,64}.S */  | 
|---|
| 41 | 43 |  struct trampoline_header { | 
|---|
| 42 | 44 |  #ifdef CONFIG_X86_32 | 
|---|
| 43 | 45 |  	u32 start; | 
|---|
| .. | .. | 
|---|
| 58 | 60 |  extern unsigned long initial_code; | 
|---|
| 59 | 61 |  extern unsigned long initial_gs; | 
|---|
| 60 | 62 |  extern unsigned long initial_stack; | 
|---|
 | 63 | +#ifdef CONFIG_AMD_MEM_ENCRYPT  | 
|---|
 | 64 | +extern unsigned long initial_vc_handler;  | 
|---|
 | 65 | +#endif  | 
|---|
| 61 | 66 |   | 
|---|
| 62 | 67 |  extern unsigned char real_mode_blob[]; | 
|---|
| 63 | 68 |  extern unsigned char real_mode_relocs[]; | 
|---|
| .. | .. | 
|---|
| 67 | 72 |  extern unsigned char boot_gdt[]; | 
|---|
| 68 | 73 |  #else | 
|---|
| 69 | 74 |  extern unsigned char secondary_startup_64[]; | 
|---|
 | 75 | +extern unsigned char secondary_startup_64_no_verify[];  | 
|---|
| 70 | 76 |  #endif | 
|---|
| 71 | 77 |   | 
|---|
| 72 | 78 |  static inline size_t real_mode_size_needed(void) | 
|---|
| .. | .. | 
|---|
| 77 | 83 |  	return ALIGN(real_mode_blob_end - real_mode_blob, PAGE_SIZE); | 
|---|
| 78 | 84 |  } | 
|---|
| 79 | 85 |   | 
|---|
| 80 |  | -void set_real_mode_mem(phys_addr_t mem, size_t size);  | 
|---|
 | 86 | +static inline void set_real_mode_mem(phys_addr_t mem)  | 
|---|
 | 87 | +{  | 
|---|
 | 88 | +	real_mode_header = (struct real_mode_header *) __va(mem);  | 
|---|
 | 89 | +}  | 
|---|
 | 90 | +  | 
|---|
| 81 | 91 |  void reserve_real_mode(void); | 
|---|
 | 92 | +void load_trampoline_pgtable(void);  | 
|---|
| 82 | 93 |   | 
|---|
| 83 | 94 |  #endif /* __ASSEMBLY__ */ | 
|---|
| 84 | 95 |   | 
|---|