From: awilliam@xenbuild.aw Date: Thu, 15 Jun 2006 15:51:58 +0000 (-0600) Subject: [IA64] reset_system X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15959 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=331da5acb21df84aa3b9775330c4a586e062b2bd;p=xen.git [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 --- diff --git a/xen/arch/ia64/linux-xen/head.S b/xen/arch/ia64/linux-xen/head.S index fbdbf47bef..22145109da 100644 --- a/xen/arch/ia64/linux-xen/head.S +++ b/xen/arch/ia64/linux-xen/head.S @@ -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 diff --git a/xen/arch/ia64/linux-xen/smpboot.c b/xen/arch/ia64/linux-xen/smpboot.c index 11e1b1bbc3..ac96fb8cc9 100644 --- a/xen/arch/ia64/linux-xen/smpboot.c +++ b/xen/arch/ia64/linux-xen/smpboot.c @@ -64,7 +64,6 @@ #ifdef XEN #include #include -int ht_per_core = 1; #ifndef CONFIG_SMP cpumask_t cpu_online_map = CPU_MASK_CPU0; EXPORT_SYMBOL(cpu_online_map); diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index 98db0f9645..939b27e5e3 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -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); } diff --git a/xen/arch/ia64/xen/fw_emul.c b/xen/arch/ia64/xen/fw_emul.c index 484375d089..0f9289fa59 100644 --- a/xen/arch/ia64/xen/fw_emul.c +++ b/xen/arch/ia64/xen/fw_emul.c @@ -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; diff --git a/xen/arch/ia64/xen/regionreg.c b/xen/arch/ia64/xen/regionreg.c index 278cf19b02..58c89201fb 100644 --- a/xen/arch/ia64/xen/regionreg.c +++ b/xen/arch/ia64/xen/regionreg.c @@ -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; diff --git a/xen/arch/ia64/xen/xenmisc.c b/xen/arch/ia64/xen/xenmisc.c index 29f8d11e5f..ca40c7b2fe 100644 --- a/xen/arch/ia64/xen/xenmisc.c +++ b/xen/arch/ia64/xen/xenmisc.c @@ -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 //////////////////////////////////// diff --git a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h index 5e197f8849..51b05e600b 100644 --- a/xen/include/asm-ia64/config.h +++ b/xen/include/asm-ia64/config.h @@ -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