Re: [v3.16.y-ckt][v3.18.y][v3.19.y-ckt][v4.0.y][PATCH 1/1]Drivers: hv: vmbus: Add support for VMBus panic notifier handler

2015-06-30 Thread Kamal Mostafa
On Fri, 2015-06-26 at 17:47 -0700, Greg KH wrote:
 On Tue, Jun 16, 2015 at 04:22:12PM -0400, Joseph Salisbury wrote:
  From: Nick Meier nme...@microsoft.com
  
  BugLink: http://bugs.launchpad.net/bugs/1463584
  
  Hyper-V allows a guest to notify the Hyper-V host that a panic
  condition occured.  This notification can include up to five 64
  bit values.  These 64 bit values are written into crash MSRs.
  Once the data has been written into the crash MSRs, the host is
  then notified by writing into a Crash Control MSR.  On the Hyper-V
  host, the panic notification data is captured in the Windows Event
  log as a 18590 event.
  
  Crash MSRs are defined in appendix H of the Hypervisor Top Level
  Functional Specification.  At the time of this patch, v4.0 is the
  current functional spec.  The URL for the v4.0 document is:
  
  http://download.microsoft.com/download/A/B/4/AB43A34E-BDD0-4FA6-BDEF-79EEF16E880B/Hypervisor
   Top Level Functional Specification v4.0.docx
  
  Signed-off-by: Nick Meier nme...@microsoft.com
  Signed-off-by: K. Y. Srinivasan k...@microsoft.com
  Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org
  (Backported from commit 96c1d0581d00f7abe033350edb021a9d947d8d81)
  Signed-off-by: Joseph Salisbury joseph.salisb...@canonical.com
  ---
   drivers/hv/hyperv_vmbus.h | 11 +++
   drivers/hv/vmbus_drv.c| 35 +++
   2 files changed, 46 insertions(+)
 
 This is a new feature, why should it be added to -stable releases?
 
 Sorry, not going to take it, upgrade to 4.1 if you want this feature.
 
 greg k-h

Greg is right: this isn't suitable for stable, so Luís and I will also
drop/revert these from the -ckt stable kernels (3.13, 3.16, and 3.19):

Drivers: hv: vmbus: Add support for VMBus panic notifier handler
Drivers: hv: vmbus: Correcting truncation error for constant 
HV_CRASH_CTL_CRASH_NOTIFY

Sasha, it looks like you've already dropped them from 3.18 but heads-up
just in case.

Thanks Greg!

 -Kamal

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [v3.16.y-ckt][v3.18.y][v3.19.y-ckt][v4.0.y][PATCH 1/1]Drivers: hv: vmbus: Add support for VMBus panic notifier handler

2015-06-26 Thread Greg KH
On Tue, Jun 16, 2015 at 04:22:12PM -0400, Joseph Salisbury wrote:
 From: Nick Meier nme...@microsoft.com
 
 BugLink: http://bugs.launchpad.net/bugs/1463584
 
 Hyper-V allows a guest to notify the Hyper-V host that a panic
 condition occured.  This notification can include up to five 64
 bit values.  These 64 bit values are written into crash MSRs.
 Once the data has been written into the crash MSRs, the host is
 then notified by writing into a Crash Control MSR.  On the Hyper-V
 host, the panic notification data is captured in the Windows Event
 log as a 18590 event.
 
 Crash MSRs are defined in appendix H of the Hypervisor Top Level
 Functional Specification.  At the time of this patch, v4.0 is the
 current functional spec.  The URL for the v4.0 document is:
 
 http://download.microsoft.com/download/A/B/4/AB43A34E-BDD0-4FA6-BDEF-79EEF16E880B/Hypervisor
  Top Level Functional Specification v4.0.docx
 
 Signed-off-by: Nick Meier nme...@microsoft.com
 Signed-off-by: K. Y. Srinivasan k...@microsoft.com
 Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org
 (Backported from commit 96c1d0581d00f7abe033350edb021a9d947d8d81)
 Signed-off-by: Joseph Salisbury joseph.salisb...@canonical.com
 ---
  drivers/hv/hyperv_vmbus.h | 11 +++
  drivers/hv/vmbus_drv.c| 35 +++
  2 files changed, 46 insertions(+)

This is a new feature, why should it be added to -stable releases?

Sorry, not going to take it, upgrade to 4.1 if you want this feature.

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[v3.16.y-ckt][v3.18.y][v3.19.y-ckt][v4.0.y][PATCH 1/1]Drivers: hv: vmbus: Add support for VMBus panic notifier handler

2015-06-16 Thread Joseph Salisbury
From: Nick Meier nme...@microsoft.com

BugLink: http://bugs.launchpad.net/bugs/1463584

Hyper-V allows a guest to notify the Hyper-V host that a panic
condition occured.  This notification can include up to five 64
bit values.  These 64 bit values are written into crash MSRs.
Once the data has been written into the crash MSRs, the host is
then notified by writing into a Crash Control MSR.  On the Hyper-V
host, the panic notification data is captured in the Windows Event
log as a 18590 event.

Crash MSRs are defined in appendix H of the Hypervisor Top Level
Functional Specification.  At the time of this patch, v4.0 is the
current functional spec.  The URL for the v4.0 document is:

http://download.microsoft.com/download/A/B/4/AB43A34E-BDD0-4FA6-BDEF-79EEF16E880B/Hypervisor
 Top Level Functional Specification v4.0.docx

Signed-off-by: Nick Meier nme...@microsoft.com
Signed-off-by: K. Y. Srinivasan k...@microsoft.com
Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org
(Backported from commit 96c1d0581d00f7abe033350edb021a9d947d8d81)
Signed-off-by: Joseph Salisbury joseph.salisb...@canonical.com
---
 drivers/hv/hyperv_vmbus.h | 11 +++
 drivers/hv/vmbus_drv.c| 35 +++
 2 files changed, 46 insertions(+)

diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
index 44b1c94..e54825c 100644
--- a/drivers/hv/hyperv_vmbus.h
+++ b/drivers/hv/hyperv_vmbus.h
@@ -49,6 +49,17 @@ enum hv_cpuid_function {
HVCPUID_IMPLEMENTATION_LIMITS   = 0x4005,
 };
 
+#define  HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE   0x400
+
+#define HV_X64_MSR_CRASH_P0   0x4100
+#define HV_X64_MSR_CRASH_P1   0x4101
+#define HV_X64_MSR_CRASH_P2   0x4102
+#define HV_X64_MSR_CRASH_P3   0x4103
+#define HV_X64_MSR_CRASH_P4   0x4104
+#define HV_X64_MSR_CRASH_CTL  0x4105
+
+#define HV_CRASH_CTL_CRASH_NOTIFY 0x8000
+
 /* Define version of the synthetic interrupt controller. */
 #define HV_SYNIC_VERSION   (1)
 
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
index 35e3f42..c28e225 100644
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@ -36,6 +36,8 @@
 #include asm/hyperv.h
 #include asm/hypervisor.h
 #include asm/mshyperv.h
+#include linux/notifier.h
+#include linux/ptrace.h
 #include hyperv_vmbus.h
 
 static struct acpi_device  *hv_acpi_dev;
@@ -44,6 +46,31 @@ static struct tasklet_struct msg_dpc;
 static struct completion probe_event;
 static int irq;
 
+
+int hyperv_panic_event(struct notifier_block *nb,
+   unsigned long event, void *ptr)
+{
+   struct pt_regs *regs;
+
+   regs = current_pt_regs();
+
+   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);
+   return NOTIFY_DONE;
+}
+
+static struct notifier_block hyperv_panic_block = {
+   .notifier_call = hyperv_panic_event,
+};
+
 struct resource hyperv_mmio = {
.name  = hyperv mmio,
.flags = IORESOURCE_MEM,
@@ -744,6 +771,14 @@ static int vmbus_bus_init(int irq)
if (ret)
goto err_alloc;
 
+   /*
+* Only register if the crash MSRs are available
+*/
+   if (ms_hyperv.features  HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) {
+   atomic_notifier_chain_register(panic_notifier_list,
+  hyperv_panic_block);
+   }
+
vmbus_request_offers();
 
return 0;
-- 
2.1.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel