|
@@ -56,31 +56,6 @@ static struct completion probe_event;
|
|
|
|
|
|
static int hyperv_cpuhp_online;
|
|
static int hyperv_cpuhp_online;
|
|
|
|
|
|
-static void hyperv_report_panic(struct pt_regs *regs)
|
|
|
|
-{
|
|
|
|
- static bool panic_reported;
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- * We prefer to report panic on 'die' chain as we have proper
|
|
|
|
- * registers to report, but if we miss it (e.g. on BUG()) we need
|
|
|
|
- * to report it on 'panic'.
|
|
|
|
- */
|
|
|
|
- if (panic_reported)
|
|
|
|
- return;
|
|
|
|
- panic_reported = true;
|
|
|
|
-
|
|
|
|
- wrmsrl(HV_X64_MSR_CRASH_P0, regs->ip);
|
|
|
|
- wrmsrl(HV_X64_MSR_CRASH_P1, regs->ax);
|
|
|
|
- wrmsrl(HV_X64_MSR_CRASH_P2, regs->bx);
|
|
|
|
- wrmsrl(HV_X64_MSR_CRASH_P3, regs->cx);
|
|
|
|
- wrmsrl(HV_X64_MSR_CRASH_P4, regs->dx);
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- * Let Hyper-V know there is crash data available
|
|
|
|
- */
|
|
|
|
- wrmsrl(HV_X64_MSR_CRASH_CTL, HV_CRASH_CTL_CRASH_NOTIFY);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static int hyperv_panic_event(struct notifier_block *nb, unsigned long val,
|
|
static int hyperv_panic_event(struct notifier_block *nb, unsigned long val,
|
|
void *args)
|
|
void *args)
|
|
{
|
|
{
|