[PATCH] paravirt: header and stubs for paravirtualisation
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 7 Dec 2006 01:14:07 +0000 (02:14 +0100)
committerAndi Kleen <andi@basil.nowhere.org>
Thu, 7 Dec 2006 01:14:07 +0000 (02:14 +0100)
commitd3561b7fa0fb0fc583bab0eeda32bec9e4c4056d
tree39d835965878622d052ef3b3c7b759d83b6bc327
parentdb91b882aabd0b3b55a87cbfb344f2798bb740b4
[PATCH] paravirt: header and stubs for paravirtualisation

Create a paravirt.h header for all the critical operations which need to be
replaced with hypervisor calls, and include that instead of defining native
operations, when CONFIG_PARAVIRT.

This patch does the dumbest possible replacement of paravirtualized
instructions: calls through a "paravirt_ops" structure.  Currently these are
function implementations of native hardware: hypervisors will override the ops
structure with their own variants.

All the pv-ops functions are declared "fastcall" so that a specific
register-based ABI is used, to make inlining assember easier.

And:

+From: Andy Whitcroft <apw@shadowen.org>

The paravirt ops introduce a 'weak' attribute onto memory_setup().
Code ordering leads to the following warnings on x86:

    arch/i386/kernel/setup.c:651: warning: weak declaration of
                `memory_setup' after first use results in unspecified behavior

Move memory_setup() to avoid this.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Zachary Amsden <zach@vmware.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andy Whitcroft <apw@shadowen.org>
27 files changed:
arch/i386/Kconfig
arch/i386/boot/compressed/misc.c
arch/i386/kernel/Makefile
arch/i386/kernel/asm-offsets.c
arch/i386/kernel/entry.S
arch/i386/kernel/i8259.c
arch/i386/kernel/paravirt.c [new file with mode: 0644]
arch/i386/kernel/setup.c
arch/i386/kernel/smpboot.c
arch/i386/kernel/time.c
arch/i386/power/cpu.c
drivers/net/de600.c
include/asm-i386/delay.h
include/asm-i386/desc.h
include/asm-i386/io.h
include/asm-i386/irq.h
include/asm-i386/irqflags.h
include/asm-i386/mach-default/setup_arch.h
include/asm-i386/msr.h
include/asm-i386/paravirt.h [new file with mode: 0644]
include/asm-i386/processor.h
include/asm-i386/segment.h
include/asm-i386/setup.h
include/asm-i386/spinlock.h
include/asm-i386/suspend.h
include/asm-i386/system.h
include/asm-i386/time.h [new file with mode: 0644]