hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/arch/x86/include/asm/realmode.h
....@@ -14,14 +14,16 @@
1414 #include <linux/types.h>
1515 #include <asm/io.h>
1616
17
-/* This must match data at realmode.S */
17
+/* This must match data at realmode/rm/header.S */
1818 struct real_mode_header {
1919 u32 text_start;
2020 u32 ro_end;
2121 /* SMP trampoline */
2222 u32 trampoline_start;
23
- u32 trampoline_status;
2423 u32 trampoline_header;
24
+#ifdef CONFIG_AMD_MEM_ENCRYPT
25
+ u32 sev_es_trampoline_start;
26
+#endif
2527 #ifdef CONFIG_X86_64
2628 u32 trampoline_pgd;
2729 #endif
....@@ -37,7 +39,7 @@
3739 #endif
3840 };
3941
40
-/* This must match data at trampoline_32/64.S */
42
+/* This must match data at realmode/rm/trampoline_{32,64}.S */
4143 struct trampoline_header {
4244 #ifdef CONFIG_X86_32
4345 u32 start;
....@@ -58,6 +60,9 @@
5860 extern unsigned long initial_code;
5961 extern unsigned long initial_gs;
6062 extern unsigned long initial_stack;
63
+#ifdef CONFIG_AMD_MEM_ENCRYPT
64
+extern unsigned long initial_vc_handler;
65
+#endif
6166
6267 extern unsigned char real_mode_blob[];
6368 extern unsigned char real_mode_relocs[];
....@@ -67,6 +72,7 @@
6772 extern unsigned char boot_gdt[];
6873 #else
6974 extern unsigned char secondary_startup_64[];
75
+extern unsigned char secondary_startup_64_no_verify[];
7076 #endif
7177
7278 static inline size_t real_mode_size_needed(void)
....@@ -77,8 +83,13 @@
7783 return ALIGN(real_mode_blob_end - real_mode_blob, PAGE_SIZE);
7884 }
7985
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
+
8191 void reserve_real_mode(void);
92
+void load_trampoline_pgtable(void);
8293
8394 #endif /* __ASSEMBLY__ */
8495