.. | .. |
---|
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 | |
---|