Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus
* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus: (27 commits) lguest: use __PAGE_KERNEL instead of _PAGE_KERNEL lguest: Use explicit includes rateher than indirect lguest: get rid of lg variable assignments lguest: change gpte_addr header lguest: move changed bitmap to lg_cpu lguest: move last_pages to lg_cpu lguest: change last_guest to last_cpu lguest: change spte_addr header lguest: per-vcpu lguest pgdir management lguest: make pending notifications per-vcpu lguest: makes special fields be per-vcpu lguest: per-vcpu lguest task management lguest: replace lguest_arch with lg_cpu_arch. lguest: make registers per-vcpu lguest: make emulate_insn receive a vcpu struct. lguest: map_switcher_in_guest() per-vcpu lguest: per-vcpu interrupt processing. lguest: per-vcpu lguest timers lguest: make hypercalls use the vcpu struct lguest: make write() operation smp aware ... Manual conflict resolved (maybe even correctly, who knows) in drivers/lguest/x86/core.c
This commit is contained in:
@@ -67,6 +67,7 @@
|
||||
#include <asm/mce.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/i387.h>
|
||||
#include <asm/reboot.h> /* for struct machine_ops */
|
||||
|
||||
/*G:010 Welcome to the Guest!
|
||||
*
|
||||
@@ -813,7 +814,7 @@ static void lguest_safe_halt(void)
|
||||
* rather than virtual addresses, so we use __pa() here. */
|
||||
static void lguest_power_off(void)
|
||||
{
|
||||
hcall(LHCALL_CRASH, __pa("Power down"), 0, 0);
|
||||
hcall(LHCALL_SHUTDOWN, __pa("Power down"), LGUEST_SHUTDOWN_POWEROFF, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -823,7 +824,7 @@ static void lguest_power_off(void)
|
||||
*/
|
||||
static int lguest_panic(struct notifier_block *nb, unsigned long l, void *p)
|
||||
{
|
||||
hcall(LHCALL_CRASH, __pa(p), 0, 0);
|
||||
hcall(LHCALL_SHUTDOWN, __pa(p), LGUEST_SHUTDOWN_POWEROFF, 0);
|
||||
/* The hcall won't return, but to keep gcc happy, we're "done". */
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
@@ -927,6 +928,11 @@ static unsigned lguest_patch(u8 type, u16 clobber, void *ibuf,
|
||||
return insn_len;
|
||||
}
|
||||
|
||||
static void lguest_restart(char *reason)
|
||||
{
|
||||
hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0);
|
||||
}
|
||||
|
||||
/*G:030 Once we get to lguest_init(), we know we're a Guest. The pv_ops
|
||||
* structures in the kernel provide points for (almost) every routine we have
|
||||
* to override to avoid privileged instructions. */
|
||||
@@ -1060,6 +1066,7 @@ __init void lguest_init(void)
|
||||
* the Guest routine to power off. */
|
||||
pm_power_off = lguest_power_off;
|
||||
|
||||
machine_ops.restart = lguest_restart;
|
||||
/* Now we're set up, call start_kernel() in init/main.c and we proceed
|
||||
* to boot as normal. It never returns. */
|
||||
start_kernel();
|
||||
|
Reference in New Issue
Block a user