The v2 patch that I sent was prior to responding to this thread. I am sending out v3 which addresses the comments here. > -----Original Message----- > From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> > Sent: Saturday, May 19, 2018 12:01 AM > To: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> > Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; Haiyang Zhang > <haiyangz@xxxxxxxxxxxxx>; Stephen Hemminger > <sthemmin@xxxxxxxxxxxxx> > Subject: Re: [PATCH v1] Drivers: HV: Send one page worth of kmsg dump > over Hyper-V during panic > > On Fri, May 18, 2018 at 09:00:51PM +0000, Sunil Muthuswamy wrote: > > Thanks, Greg. > > > > My first patch to the Linux kernel. Still making mistakes, but, learning > through the documented process. > > > > > -----Original Message----- > > > From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> > > > Sent: Wednesday, May 9, 2018 11:51 PM > > > To: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> > > > Cc: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>; > > > devel@xxxxxxxxxxxxxxxxxxxxxx; Stephen Hemminger > > > <sthemmin@xxxxxxxxxxxxx> > > > Subject: Re: [PATCH v1] Drivers: HV: Send one page worth of kmsg dump > > > over Hyper-V during panic > > > > > > On Wed, May 09, 2018 at 07:19:24PM +0000, Sunil Muthuswamy wrote: > > > > In the VM mode on Hyper-V, currently, when the kernel panics, an > error > > > > code and few register values are populated in an MSR and the > Hypervisor > > > > notified. This information is collected on the host. The amount of > > > > information currently collected is found to be limited and not very > > > > actionable. To gather more actionable data, such as stack trace, the > > > > proposal is to write one page worth of kmsg data on an allocated page > > > > and the Hypervisor notified of the page address through the MSR. > > > > > > Odd indentation, what editor made you do that? Please move it all to the > > > left. > > I inserted them. Will fix. > > > > > > > > > > > CC: kys@xxxxxxxxxxxxx > > > > CC: sthemmin@xxxxxxxxxxxxx > > > > Signed-off-by: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> > > > > --- > > > > arch/x86/hyperv/hv_init.c | 28 +++++++++++++++++ > > > > arch/x86/include/asm/hyperv-tlfs.h | 5 ++-- > > > > arch/x86/include/asm/mshyperv.h | 1 + > > > > drivers/hv/vmbus_drv.c | 61 > > > ++++++++++++++++++++++++++++++++++++++ > > > > 4 files changed, 93 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c > > > > index cfecc22..88ee90d 100644 > > > > --- a/arch/x86/hyperv/hv_init.c > > > > +++ b/arch/x86/hyperv/hv_init.c > > > > @@ -395,6 +395,34 @@ void hyperv_report_panic(struct pt_regs > *regs, > > > > long err) } EXPORT_SYMBOL_GPL(hyperv_report_panic); > > > > > > > > +void hyperv_report_panic_msg(phys_addr_t pa, size_t size) { > > > > + static bool panic_msg_reported; > > > > + > > > > + if (panic_msg_reported) > > > > + return; > > > > + panic_msg_reported = true; > > > > > > Why do you only care about the first message? > > It is following the general direction from ' hyperv_report_panic', but, I don't > think it needs to. Will change. > > > > > > > + > > > > + /* > > > > + * P3 to contain the physical address of the panic page & P4 to > > > > + * contain the size of the panic data in that page. Rest of the > > > > + * registers are no-op when the NOTIFY_MSG flag is set. > > > > + */ > > > > + wrmsrl(HV_X64_MSR_CRASH_P0, 0); > > > > + wrmsrl(HV_X64_MSR_CRASH_P1, 0); > > > > + wrmsrl(HV_X64_MSR_CRASH_P2, 0); > > > > + wrmsrl(HV_X64_MSR_CRASH_P3, pa); > > > > + wrmsrl(HV_X64_MSR_CRASH_P4, size); > > > > + > > > > + /* > > > > + * Let Hyper-V know there is crash data available along with > > > > + * the panic message. > > > > + */ > > > > + wrmsrl(HV_X64_MSR_CRASH_CTL, > > > > + (HV_CRASH_CTL_CRASH_NOTIFY | > > > HV_CRASH_CTL_CRASH_NOTIFY_MSG)); > > > > +} EXPORT_SYMBOL_GPL(hyperv_report_panic_msg); > > > > + > > > > bool hv_is_hyperv_initialized(void) > > > > { > > > > union hv_x64_msr_hypercall_contents hypercall_msr; diff --git > > > > a/arch/x86/include/asm/hyperv-tlfs.h > > > > b/arch/x86/include/asm/hyperv-tlfs.h > > > > index 416cb0e..fc2932c 100644 > > > > --- a/arch/x86/include/asm/hyperv-tlfs.h > > > > +++ b/arch/x86/include/asm/hyperv-tlfs.h > > > > @@ -171,9 +171,10 @@ > > > > #define HV_X64_ENLIGHTENED_VMCS_RECOMMENDED (1 << 14) > > > > > > > > /* > > > > - * Crash notification flag. > > > > + * Crash notification flags. > > > > */ > > > > -#define HV_CRASH_CTL_CRASH_NOTIFY (1ULL << 63) > > > > +#define HV_CRASH_CTL_CRASH_NOTIFY (1ULL << 63) > > > > +#define HV_CRASH_CTL_CRASH_NOTIFY_MSG (1ULL << 62) > > > > > > Not in numerical order? > > > > > > And can you use the BIT() macro here instead? Not a requirement, just a > > > general question. > > Will change in the next version. > > You didn't do that :( _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel