]> err.no Git - linux-2.6/commitdiff
Revert "[PATCH] paravirt: Add startup infrastructure for paravirtualization"
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 10 May 2007 10:15:36 +0000 (03:15 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 10 May 2007 16:26:53 +0000 (09:26 -0700)
This reverts commit c9ccf30d77f04064fe5436027ab9d2230c7cdd94.

Entering the kernel at startup_32 without passing our real mode data in
%esi, and without guaranteeing that physical and virtual addresses are
identity mapped makes head.S impossible to maintain.

The only user of this infrastructure is lguest which is not merged so
nothing we currently support will break by removing this over designed
nightmare, and only the pending lguest patches will be affected.  The
pending Xen patches have a different entry point that they use.

We are currently discussing what Xen and lguest need to do to boot the
kernel in a more normal fashion so using startup_32 in this weird manner is
clearly not their long term direction.

So let's remove this code in head.S before it causes brain damage to people
trying to maintain head.S

Cc: Chris Wright <chrisw@sous-sol.org>
Cc: Andi Kleen <ak@suse.de>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Zachary Amsden <zach@vmware.com>
CC: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/i386/kernel/head.S
arch/i386/kernel/paravirt.c
arch/i386/kernel/vmlinux.lds.S
include/asm-i386/paravirt.h

index 9b10af65faaadbf400a6f219338dc9c76e61f6e4..f74dfc419b56739f3cc7e854271f5106ef701911 100644 (file)
@@ -71,12 +71,6 @@ INIT_MAP_BEYOND_END = BOOTBITMAP_SIZE + (PAGE_TABLE_SIZE + ALLOCATOR_SLOP)*PAGE_
 .section .text.head,"ax",@progbits
 ENTRY(startup_32)
 
-#ifdef CONFIG_PARAVIRT
-        movl %cs, %eax
-        testl $0x3, %eax
-        jnz startup_paravirt
-#endif
-
 /*
  * Set segments to known values.
  */
@@ -501,38 +495,6 @@ ignore_int:
        iret
 
 .section .text
-#ifdef CONFIG_PARAVIRT
-startup_paravirt:
-       cld
-       movl $(init_thread_union+THREAD_SIZE),%esp
-
-       /* We take pains to preserve all the regs. */
-       pushl   %edx
-       pushl   %ecx
-       pushl   %eax
-
-       pushl   $__start_paravirtprobe
-1:
-       movl    0(%esp), %eax
-       cmpl    $__stop_paravirtprobe, %eax
-       je      unhandled_paravirt
-       pushl   (%eax)
-       movl    8(%esp), %eax
-       call    *(%esp)
-       popl    %eax
-
-       movl    4(%esp), %eax
-       movl    8(%esp), %ecx
-       movl    12(%esp), %edx
-
-       addl    $4, (%esp)
-       jmp     1b
-
-unhandled_paravirt:
-       /* Nothing wanted us: we're screwed. */
-       ud2
-#endif
-
 /*
  * Real beginning of normal "text" segment
  */
index 5c10f376bce1e36b437c6a76ba28e5a6c4eb0026..faab09abca5e33a3bb1cff6b50848a788bc20349 100644 (file)
@@ -19,7 +19,6 @@
 #include <linux/module.h>
 #include <linux/efi.h>
 #include <linux/bcd.h>
-#include <linux/start_kernel.h>
 #include <linux/highmem.h>
 
 #include <asm/bug.h>
index 23e8614edeee42e10728364f386a49976ced06ff..80bec6640230c9df5e4e9264c055685728004123 100644 (file)
@@ -78,12 +78,6 @@ SECTIONS
        CONSTRUCTORS
        } :data
 
-  .paravirtprobe : AT(ADDR(.paravirtprobe) - LOAD_OFFSET) {
-       __start_paravirtprobe = .;
-       *(.paravirtprobe)
-       __stop_paravirtprobe = .;
-  }
-
   . = ALIGN(4096);
   .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
        __nosave_begin = .;
index bc5c12c135817c2c2b8da89c27656a91a9a2b280..d7a0512f88e0a9a148a815e16a1146c0efe59985 100644 (file)
@@ -222,11 +222,6 @@ struct paravirt_ops
        void (*iret)(void);
 };
 
-/* Mark a paravirt probe function. */
-#define paravirt_probe(fn)                                             \
- static asmlinkage void (*__paravirtprobe_##fn)(void) __attribute_used__ \
-               __attribute__((__section__(".paravirtprobe"))) = fn
-
 extern struct paravirt_ops paravirt_ops;
 
 #define PARAVIRT_PATCH(x)                                      \