Merge tag 'char-misc-4.15-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / arch / x86 / hyperv / hv_init.c
index a0b86cf486e0adcf1e7d505bd003056a3e2a1b87..189a398290dbb220dcff2bcaa6ef4ebc1ef25ae3 100644 (file)
@@ -210,9 +210,10 @@ void hyperv_cleanup(void)
 }
 EXPORT_SYMBOL_GPL(hyperv_cleanup);
 
-void hyperv_report_panic(struct pt_regs *regs)
+void hyperv_report_panic(struct pt_regs *regs, long err)
 {
        static bool panic_reported;
+       u64 guest_id;
 
        /*
         * We prefer to report panic on 'die' chain as we have proper
@@ -223,11 +224,13 @@ void hyperv_report_panic(struct pt_regs *regs)
                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);
+       rdmsrl(HV_X64_MSR_GUEST_OS_ID, guest_id);
+
+       wrmsrl(HV_X64_MSR_CRASH_P0, err);
+       wrmsrl(HV_X64_MSR_CRASH_P1, guest_id);
+       wrmsrl(HV_X64_MSR_CRASH_P2, regs->ip);
+       wrmsrl(HV_X64_MSR_CRASH_P3, regs->ax);
+       wrmsrl(HV_X64_MSR_CRASH_P4, regs->sp);
 
        /*
         * Let Hyper-V know there is crash data available