Hi, all
In linux side, panic() call smp_send_stop() before panic_notifier_list.
And smp_send_stop() call PAL_HALT.
So we cannot coredump guest memory,
because smp_send_stop call domain_shutdown(SHUTDOWN_poweroff).
Which way shold we choice?
A. we don't call smp_send_stop in panic()
B. we don't call PAL_HALT in xen_pal_emulator(),
and we call EFI_RESET_SYSTEM in machine_halt().
A is very easy and simple, but we must modify common code.
If we choice B, we must fix domain_shutdown() and machine_halt().
I think B is probably better, but are there anything else to fix?
In linux, panic() is the below.
59
60 NORET_TYPE void panic(const char * fmt, ...)
61 {
[snip...]
90 #ifdef CONFIG_SMP
91 /*
92 * Note smp_send_stop is the usual smp shutdown function, which
93 * unfortunately means it may not be hardened to work in a panic
94 * situation.
95 */
96 smp_send_stop();
97 #endif
98
99 atomic_notifier_call_chain(&panic_notifier_list, 0, buf);
100
In xen, PAL_HALT is the below.
381 struct ia64_pal_retval
382 xen_pal_emulator(unsigned long index, u64 in1, u64 in2, u64 in3)
383 {
[snip...]
603 case PAL_HALT:
604 if (current->domain == dom0) {
605 printk ("Domain0 halts the machine\n");
606 console_start_sync();
607 (*efi.reset_system)(EFI_RESET_SHUTDOWN,0,0,NULL);
608 }
609 else
610 domain_shutdown(current->domain,
SHUTDOWN_poweroff);
611 break;
Best Regards,
Akio Takebe
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|