xen-devel
[Xen-devel] [PATCH 22 of 36] x86_64: split x86_64_start_kernel
Split x86_64_start_kernel() into two pieces:
The first essentially cleans up after head_64.S. It clears the
bss, zaps low identity mappings, sets up some early exception
handlers.
The second part preserves the boot data, reserves the kernel's
text/data/bss, pagetables and ramdisk, and then starts the kernel
proper.
This split is so that Xen can call the second part to do the set up it
needs done. It doesn't need any of the first part setups, because it
doesn't boot via head_64.S, and its redundant or actively damaging.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
---
arch/x86/kernel/head64.c | 5 +++++
include/asm-x86/setup.h | 2 ++
2 files changed, 7 insertions(+)
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -108,6 +108,11 @@
early_printk("Kernel really alive\n");
+ x86_64_start_reservations(real_mode_data);
+}
+
+void __init x86_64_start_reservations(char *real_mode_data)
+{
copy_bootdata(__va(real_mode_data));
reserve_early(__pa_symbol(&_text), __pa_symbol(&_end), "TEXT DATA BSS");
diff --git a/include/asm-x86/setup.h b/include/asm-x86/setup.h
--- a/include/asm-x86/setup.h
+++ b/include/asm-x86/setup.h
@@ -63,6 +63,8 @@
#else
void __init x86_64_start_kernel(char *real_mode);
+void __init x86_64_start_reservations(char *real_mode_data);
+
#endif /* __i386__ */
#endif /* _SETUP */
#endif /* __ASSEMBLY__ */
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [PATCH 13 of 36] x86_64: add prototype for x86_64_start_kernel(), (continued)
- [Xen-devel] [PATCH 13 of 36] x86_64: add prototype for x86_64_start_kernel(), Jeremy Fitzhardinge
- [Xen-devel] [PATCH 11 of 36] x86: unify mmu_context.h, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 10 of 36] x86: unify pgd_index, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 05 of 36] x86_64: use write_gdt_entry in vsyscall_set_cpu, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 12 of 36] x86_64: replace end_pfn with num_physpages, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 14 of 36] x86_64: add sync_cmpxchg, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 18 of 36] x86/paravirt: add debugging for missing operations, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 15 of 36] x86: simplify vmalloc_sync_all, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 17 of 36] x86: preallocate and prepopulate separately, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 16 of 36] x86/paravirt: add a pgd_alloc/free hooks, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 22 of 36] x86_64: split x86_64_start_kernel,
Jeremy Fitzhardinge <=
- [Xen-devel] [PATCH 21 of 36] x86-64: add FIX_PARAVIRT_BOOTMAP fixmap slot, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 20 of 36] paravirt/x86_64: move __PAGE_OFFSET to leave a space for hypervisor, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 19 of 36] paravirt_ops: define PARA_INDIRECT for indirect asm calls, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 28 of 36] Save %fs and %gs before load_TLS() and arch_leave_lazy_cpu_mode(), Jeremy Fitzhardinge
- [Xen-devel] [PATCH 29 of 36] Use __KERNEL_DS as SS when returning to a kernel thread (VERIFY), Jeremy Fitzhardinge
- [Xen-devel] [PATCH 23 of 36] x86_64: adjust mapping of physical pagetables to work with Xen, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 27 of 36] x86_64: __switch_to(): Move arch_leave_lazy_cpu_mode() to the right place, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 31 of 36] x86_64 pvops: don't restore user rsp within sysret, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 33 of 36] x86_64: ia32entry: replace privileged instructions with pvops, Jeremy Fitzhardinge
- [Xen-devel] [PATCH 32 of 36] Add sysret/sysexit pvops for returning to 32-bit compatibility userspace, Jeremy Fitzhardinge
|
|
|