mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
[IA64] reset_system
Cleanup: EFI_RESET_SYSTEM now always calls domain_shutdown. machine_restart and machine_halt calls efi reset_system to do their job. Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
This commit is contained in:
1 parent
7515eac375
commit
331da5acb2
7 files changed
+26
-38
No files matched your search
@@ -1010,6 +1010,7 @@ GLOBAL_ENTRY(ia64_delay_loop)
|
||||
br.ret.sptk.many rp
|
||||
END(ia64_delay_loop)
|
||||
|
||||
#ifndef XEN
|
||||
/*
|
||||
* Return a CPU-local timestamp in nano-seconds. This timestamp is
|
||||
* NOT synchronized across CPUs its return value must never be
|
||||
@@ -1062,6 +1063,7 @@ GLOBAL_ENTRY(start_kernel_thread)
|
||||
br.call.sptk.many rp = sys_exit;;
|
||||
1: br.sptk.few 1b // not reached
|
||||
END(start_kernel_thread)
|
||||
#endif /* XEN */
|
||||
|
||||
#ifdef CONFIG_IA64_BRL_EMU
|
||||
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
#ifdef XEN
|
||||
#include <xen/domain.h>
|
||||
#include <asm/hw_irq.h>
|
||||
int ht_per_core = 1;
|
||||
#ifndef CONFIG_SMP
|
||||
cpumask_t cpu_online_map = CPU_MASK_CPU0;
|
||||
EXPORT_SYMBOL(cpu_online_map);
|
||||
|
||||
@@ -891,22 +891,19 @@ int construct_dom0(struct domain *d,
|
||||
|
||||
void machine_restart(char * __unused)
|
||||
{
|
||||
if (running_on_sim) dummy();
|
||||
printf("machine_restart called: spinning....\n");
|
||||
if (running_on_sim)
|
||||
printf ("machine_restart called. spinning...\n");
|
||||
else
|
||||
(*efi.reset_system)(EFI_RESET_WARM,0,0,NULL);
|
||||
while(1);
|
||||
}
|
||||
|
||||
void machine_halt(void)
|
||||
{
|
||||
if (running_on_sim) dummy();
|
||||
printf("machine_halt called: spinning....\n");
|
||||
while(1);
|
||||
}
|
||||
|
||||
void dummy_called(char *function)
|
||||
{
|
||||
if (running_on_sim) asm("break 0;;");
|
||||
printf("dummy called in %s: spinning....\n", function);
|
||||
if (running_on_sim)
|
||||
printf ("machine_halt called. spinning...\n");
|
||||
else
|
||||
(*efi.reset_system)(EFI_RESET_SHUTDOWN,0,0,NULL);
|
||||
while(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -475,13 +475,21 @@ efi_emulator (struct pt_regs *regs, IA64FAULT *fault)
|
||||
|
||||
switch (regs->r2) {
|
||||
case FW_HYPERCALL_EFI_RESET_SYSTEM:
|
||||
printf("efi.reset_system called ");
|
||||
if (current->domain == dom0) {
|
||||
printf("(by dom0)\n ");
|
||||
(*efi.reset_system)(EFI_RESET_WARM,0,0,NULL);
|
||||
} else {
|
||||
printf("\n");
|
||||
domain_shutdown (current->domain, SHUTDOWN_reboot);
|
||||
{
|
||||
u8 reason;
|
||||
unsigned long val = vcpu_get_gr(v,32);
|
||||
switch (val)
|
||||
{
|
||||
case EFI_RESET_SHUTDOWN:
|
||||
reason = SHUTDOWN_poweroff;
|
||||
break;
|
||||
case EFI_RESET_COLD:
|
||||
case EFI_RESET_WARM:
|
||||
default:
|
||||
reason = SHUTDOWN_reboot;
|
||||
break;
|
||||
}
|
||||
domain_shutdown (current->domain, reason);
|
||||
}
|
||||
status = EFI_UNSUPPORTED;
|
||||
break;
|
||||
|
||||
@@ -287,7 +287,7 @@ void init_all_rr(struct vcpu *v)
|
||||
//rrv.rrval = v->domain->arch.metaphysical_rr0;
|
||||
rrv.ps = PAGE_SHIFT;
|
||||
rrv.ve = 1;
|
||||
if (!v->vcpu_info) { printf("Stopping in init_all_rr\n"); dummy(); }
|
||||
if (!v->vcpu_info) { panic("Stopping in init_all_rr\n"); }
|
||||
VCPU(v,rrs[0]) = -1;
|
||||
VCPU(v,rrs[1]) = rrv.rrval;
|
||||
VCPU(v,rrs[2]) = rrv.rrval;
|
||||
|
||||
@@ -94,18 +94,6 @@ void console_print(char *msg)
|
||||
printk("console_print called, how did start_kernel return???\n");
|
||||
}
|
||||
|
||||
void kernel_thread_helper(void)
|
||||
{
|
||||
printk("kernel_thread_helper not implemented\n");
|
||||
dummy();
|
||||
}
|
||||
|
||||
void sys_exit(void)
|
||||
{
|
||||
printk("sys_exit not implemented\n");
|
||||
dummy();
|
||||
}
|
||||
|
||||
////////////////////////////////////
|
||||
// called from unaligned.c
|
||||
////////////////////////////////////
|
||||
|
||||
@@ -235,12 +235,6 @@ struct screen_info { };
|
||||
#define seq_printf(a,b...) printf(b)
|
||||
//#define CONFIG_BLK_DEV_INITRD // needed to reserve memory for domain0
|
||||
|
||||
void dummy_called(char *function);
|
||||
#define dummy() dummy_called((char *) __FUNCTION__)
|
||||
|
||||
// these declarations got moved at some point, find a better place for them
|
||||
extern int ht_per_core;
|
||||
|
||||
#ifdef CONFIG_XEN_IA64_DOM0_VP
|
||||
#define CONFIG_SHADOW 1
|
||||
#endif
|
||||
|
||||