linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
       [not found] <20090629184144.76C9948FD3@coco.kroah.org>
@ 2009-06-30 22:53 ` Stefan Lippers-Hollmann
  2009-06-30 23:42   ` Greg KH
  0 siblings, 1 reply; 16+ messages in thread
From: Stefan Lippers-Hollmann @ 2009-06-30 22:53 UTC (permalink / raw)
  To: gregkh; +Cc: linux-kernel, ak, avi, ying.huang, stable

Hi

On Wednesday 01 July 2009, gregkh@suse.de wrote:
> This is a note to let you know that we have just queued up the patch titled
> 
>     Subject: KVM: Add VT-x machine check support
> 
> to the 2.6.30-stable tree.  Its filename is
> 
>     kvm-add-vt-x-machine-check-support.patch
> 
> A git repo of this tree can be found at 
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> 
> 
> From a0861c02a981c943573478ea13b29b1fb958ee5b Mon Sep 17 00:00:00 2001
> From: Andi Kleen <ak@linux.intel.com>
> Date: Mon, 8 Jun 2009 17:37:09 +0800
> Subject: KVM: Add VT-x machine check support

This patch fails to compile if applied to 2.6.30 + current stable queue.

arch/x86/kvm/vmx.c: In function 'vmx_vcpu_run':
arch/x86/kvm/vmx.c:3573: error: 'exit_intr_info' undeclared (first use in this function)
arch/x86/kvm/vmx.c:3573: error: (Each undeclared identifier is reported only once
arch/x86/kvm/vmx.c:3573: error: for each function it appears in.)
make[4]: *** [arch/x86/kvm/vmx.o] Error 1
make[3]: *** [arch/x86/kvm] Error 2
make[3]: *** Waiting for unfinished jobs....

It seems to depend on the code refactoring introduced by 

>From 7b4a25cb296e2a73d2e87a4af65361d45d450a27 Mon Sep 17 00:00:00 2001
From: Gleb Natapov <gleb@redhat.com>
Date: Mon, 30 Mar 2009 16:03:08 +0300
Subject: KVM: VMX: Fix handling of a fault during NMI unblocked due to IRET

Bit 12 is undefined in any of the following cases:
 If the VM exit sets the valid bit in the IDT-vectoring information field.
 If the VM exit is due to a double fault.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>

and followed up by the code movement in

>From 20f65983e30f222e5383f77206e3f571d1d64610 Mon Sep 17 00:00:00 2001
From: Gleb Natapov <gleb@redhat.com>
Date: Mon, 11 May 2009 13:35:55 +0300
Subject: KVM: Move "exit due to NMI" handling into vmx_complete_interrupts()

To save us one reading of VM_EXIT_INTR_INFO.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>

Regards
	Stefan Lippers-Hollmann

> From: Andi Kleen <ak@linux.intel.com>
> 
> commit a0861c02a981c943573478ea13b29b1fb958ee5b upstream.
> 
> VT-x needs an explicit MC vector intercept to handle machine checks in the
> hyper visor.
> 
> It also has a special option to catch machine checks that happen
> during VT entry.
> 
> Do these interceptions and forward them to the Linux machine check
> handler. Make it always look like user space is interrupted because
> the machine check handler treats kernel/user space differently.
> 
> Thanks to Jiang Yunhong for help and testing.
> 
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
> Signed-off-by: Huang Ying <ying.huang@intel.com>
> Signed-off-by: Avi Kivity <avi@redhat.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
> 
> ---
>  arch/x86/include/asm/vmx.h          |    1 
>  arch/x86/kernel/cpu/mcheck/mce_64.c |    1 
>  arch/x86/kvm/vmx.c                  |   50 ++++++++++++++++++++++++++++++++++--
>  3 files changed, 50 insertions(+), 2 deletions(-)

-- 

> --- a/arch/x86/include/asm/vmx.h
> +++ b/arch/x86/include/asm/vmx.h
> @@ -247,6 +247,7 @@ enum vmcs_field {
>  #define EXIT_REASON_MSR_READ            31
>  #define EXIT_REASON_MSR_WRITE           32
>  #define EXIT_REASON_MWAIT_INSTRUCTION   36
> +#define EXIT_REASON_MCE_DURING_VMENTRY	 41
>  #define EXIT_REASON_TPR_BELOW_THRESHOLD 43
>  #define EXIT_REASON_APIC_ACCESS         44
>  #define EXIT_REASON_EPT_VIOLATION       48
> --- a/arch/x86/kernel/cpu/mcheck/mce_64.c
> +++ b/arch/x86/kernel/cpu/mcheck/mce_64.c
> @@ -420,6 +420,7 @@ void do_machine_check(struct pt_regs * r
>   out2:
>  	atomic_dec(&mce_entry);
>  }
> +EXPORT_SYMBOL_GPL(do_machine_check);
>  
>  #ifdef CONFIG_X86_MCE_INTEL
>  /***
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -32,6 +32,7 @@
>  #include <asm/desc.h>
>  #include <asm/vmx.h>
>  #include <asm/virtext.h>
> +#include <asm/mce.h>
>  
>  #define __ex(x) __kvm_handle_fault_on_reboot(x)
>  
> @@ -97,6 +98,7 @@ struct vcpu_vmx {
>  	int soft_vnmi_blocked;
>  	ktime_t entry_time;
>  	s64 vnmi_blocked_time;
> +	u32 exit_reason;
>  };
>  
>  static inline struct vcpu_vmx *to_vmx(struct kvm_vcpu *vcpu)
> @@ -213,6 +215,13 @@ static inline int is_external_interrupt(
>  		== (INTR_TYPE_EXT_INTR | INTR_INFO_VALID_MASK);
>  }
>  
> +static inline int is_machine_check(u32 intr_info)
> +{
> +	return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK |
> +			     INTR_INFO_VALID_MASK)) ==
> +		(INTR_TYPE_HARD_EXCEPTION | MC_VECTOR | INTR_INFO_VALID_MASK);
> +}
> +
>  static inline int cpu_has_vmx_msr_bitmap(void)
>  {
>  	return (vmcs_config.cpu_based_exec_ctrl & CPU_BASED_USE_MSR_BITMAPS);
> @@ -478,7 +487,7 @@ static void update_exception_bitmap(stru
>  {
>  	u32 eb;
>  
> -	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR);
> +	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR) | (1u << MC_VECTOR);
>  	if (!vcpu->fpu_active)
>  		eb |= 1u << NM_VECTOR;
>  	if (vcpu->guest_debug & KVM_GUESTDBG_ENABLE) {
> @@ -2585,6 +2594,31 @@ static int handle_rmode_exception(struct
>  	return 0;
>  }
>  
> +/*
> + * Trigger machine check on the host. We assume all the MSRs are already set up
> + * by the CPU and that we still run on the same CPU as the MCE occurred on.
> + * We pass a fake environment to the machine check handler because we want
> + * the guest to be always treated like user space, no matter what context
> + * it used internally.
> + */
> +static void kvm_machine_check(void)
> +{
> +#if defined(CONFIG_X86_MCE) && defined(CONFIG_X86_64)
> +	struct pt_regs regs = {
> +		.cs = 3, /* Fake ring 3 no matter what the guest ran on */
> +		.flags = X86_EFLAGS_IF,
> +	};
> +
> +	do_machine_check(&regs, 0);
> +#endif
> +}
> +
> +static int handle_machine_check(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
> +{
> +	/* already handled by vcpu_run */
> +	return 1;
> +}
> +
>  static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
>  {
>  	struct vcpu_vmx *vmx = to_vmx(vcpu);
> @@ -2596,6 +2630,9 @@ static int handle_exception(struct kvm_v
>  	vect_info = vmx->idt_vectoring_info;
>  	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
>  
> +	if (is_machine_check(intr_info))
> +		return handle_machine_check(vcpu, kvm_run);
> +
>  	if ((vect_info & VECTORING_INFO_VALID_MASK) &&
>  						!is_page_fault(intr_info))
>  		printk(KERN_ERR "%s: unexpected, vectoring info 0x%x "
> @@ -3150,6 +3187,7 @@ static int (*kvm_vmx_exit_handlers[])(st
>  	[EXIT_REASON_WBINVD]                  = handle_wbinvd,
>  	[EXIT_REASON_TASK_SWITCH]             = handle_task_switch,
>  	[EXIT_REASON_EPT_VIOLATION]	      = handle_ept_violation,
> +	[EXIT_REASON_MCE_DURING_VMENTRY]      = handle_machine_check,
>  };
>  
>  static const int kvm_vmx_max_exit_handlers =
> @@ -3161,8 +3199,8 @@ static const int kvm_vmx_max_exit_handle
>   */
>  static int kvm_handle_exit(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
>  {
> -	u32 exit_reason = vmcs_read32(VM_EXIT_REASON);
>  	struct vcpu_vmx *vmx = to_vmx(vcpu);
> +	u32 exit_reason = vmx->exit_reason;
>  	u32 vectoring_info = vmx->idt_vectoring_info;
>  
>  	KVMTRACE_3D(VMEXIT, vcpu, exit_reason, (u32)kvm_rip_read(vcpu),
> @@ -3512,6 +3550,14 @@ static void vmx_vcpu_run(struct kvm_vcpu
>  
>  	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
>  
> +	vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
> +
> +	/* Handle machine checks before interrupts are enabled */
> +	if ((vmx->exit_reason == EXIT_REASON_MCE_DURING_VMENTRY)
> +	    || (vmx->exit_reason == EXIT_REASON_EXCEPTION_NMI
> +		&& is_machine_check(exit_intr_info)))
> +		kvm_machine_check();
> +
>  	/* We need to handle NMIs before interrupts are enabled */
>  	if ((intr_info & INTR_INFO_INTR_TYPE_MASK) == INTR_TYPE_NMI_INTR &&
>  	    (intr_info & INTR_INFO_VALID_MASK)) {
> 
> 
> Patches currently in stable-queue which might be from ak@linux.intel.com are
> 
> queue-2.6.30/kvm-add-vt-x-machine-check-support.patch

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-06-30 22:53 ` patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree Stefan Lippers-Hollmann
@ 2009-06-30 23:42   ` Greg KH
  2009-07-01  7:09     ` Andi Kleen
  0 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2009-06-30 23:42 UTC (permalink / raw)
  To: Stefan Lippers-Hollmann; +Cc: linux-kernel, ak, avi, ying.huang, stable

On Wed, Jul 01, 2009 at 12:53:37AM +0200, Stefan Lippers-Hollmann wrote:
> Hi
> 
> On Wednesday 01 July 2009, gregkh@suse.de wrote:
> > This is a note to let you know that we have just queued up the patch titled
> > 
> >     Subject: KVM: Add VT-x machine check support
> > 
> > to the 2.6.30-stable tree.  Its filename is
> > 
> >     kvm-add-vt-x-machine-check-support.patch
> > 
> > A git repo of this tree can be found at 
> >     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> > 
> > 
> > From a0861c02a981c943573478ea13b29b1fb958ee5b Mon Sep 17 00:00:00 2001
> > From: Andi Kleen <ak@linux.intel.com>
> > Date: Mon, 8 Jun 2009 17:37:09 +0800
> > Subject: KVM: Add VT-x machine check support
> 
> This patch fails to compile if applied to 2.6.30 + current stable queue.
> 
> arch/x86/kvm/vmx.c: In function 'vmx_vcpu_run':
> arch/x86/kvm/vmx.c:3573: error: 'exit_intr_info' undeclared (first use in this function)
> arch/x86/kvm/vmx.c:3573: error: (Each undeclared identifier is reported only once
> arch/x86/kvm/vmx.c:3573: error: for each function it appears in.)
> make[4]: *** [arch/x86/kvm/vmx.o] Error 1
> make[3]: *** [arch/x86/kvm] Error 2
> make[3]: *** Waiting for unfinished jobs....
> 
> It seems to depend on the code refactoring introduced by 
> 
> From 7b4a25cb296e2a73d2e87a4af65361d45d450a27 Mon Sep 17 00:00:00 2001
> From: Gleb Natapov <gleb@redhat.com>
> Date: Mon, 30 Mar 2009 16:03:08 +0300
> Subject: KVM: VMX: Fix handling of a fault during NMI unblocked due to IRET
> 
> Bit 12 is undefined in any of the following cases:
>  If the VM exit sets the valid bit in the IDT-vectoring information field.
>  If the VM exit is due to a double fault.
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> Signed-off-by: Avi Kivity <avi@redhat.com>
> 
> and followed up by the code movement in
> 
> From 20f65983e30f222e5383f77206e3f571d1d64610 Mon Sep 17 00:00:00 2001
> From: Gleb Natapov <gleb@redhat.com>
> Date: Mon, 11 May 2009 13:35:55 +0300
> Subject: KVM: Move "exit due to NMI" handling into vmx_complete_interrupts()
> 
> To save us one reading of VM_EXIT_INTR_INFO.
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> Signed-off-by: Avi Kivity <avi@redhat.com>

Thanks, I was building without kvm enabled in my configs and missed this
one.

I've added these two other patches and everything looks better.

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-06-30 23:42   ` Greg KH
@ 2009-07-01  7:09     ` Andi Kleen
  2009-07-01  7:35       ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Andi Kleen @ 2009-07-01  7:09 UTC (permalink / raw)
  To: Greg KH; +Cc: Stefan Lippers-Hollmann, linux-kernel, avi, ying.huang, stable


> Thanks, I was building without kvm enabled in my configs and missed this
> one.
> 
> I've added these two other patches and everything looks better.

If you prefer I also have an original patch which didn't depend on any
other KVM patches. But the other ones look harmless enough and it's probably
better to stay nearer mainline.

-Andi


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01  7:09     ` Andi Kleen
@ 2009-07-01  7:35       ` Avi Kivity
  2009-07-01 13:24         ` Andi Kleen
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2009-07-01  7:35 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Greg KH, Stefan Lippers-Hollmann, linux-kernel, ying.huang,
	stable

On 07/01/2009 10:09 AM, Andi Kleen wrote:
>
>> Thanks, I was building without kvm enabled in my configs and missed this
>> one.
>>
>> I've added these two other patches and everything looks better.
>
> If you prefer I also have an original patch which didn't depend on any
> other KVM patches. But the other ones look harmless enough and it's 
> probably
> better to stay nearer mainline.

I'd prefer your standalone patch Andi.  Patches often look harmless but 
aren't, and I'd hate to introduce regressions into 2.6.30.*.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01  7:35       ` Avi Kivity
@ 2009-07-01 13:24         ` Andi Kleen
  2009-07-01 13:41           ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Andi Kleen @ 2009-07-01 13:24 UTC (permalink / raw)
  To: Avi Kivity
  Cc: Andi Kleen, Greg KH, Stefan Lippers-Hollmann, linux-kernel,
	ying.huang, stable

Avi Kivity <avi@redhat.com> writes:

> On 07/01/2009 10:09 AM, Andi Kleen wrote:
>>
>>> Thanks, I was building without kvm enabled in my configs and missed this
>>> one.
>>>
>>> I've added these two other patches and everything looks better.
>>
>> If you prefer I also have an original patch which didn't depend on any
>> other KVM patches. But the other ones look harmless enough and it's
>> probably
>> better to stay nearer mainline.
>
> I'd prefer your standalone patch Andi.  Patches often look harmless
> but aren't, and I'd hate to introduce regressions into 2.6.30.*.

Here's the 2.6.30 standalone patch, slightly updated.

-Andi

---

KVM: Add VT-x machine check support v3

VT-x needs an explicit MC vector intercept to handle machine checks in the 
hypervisor.

It also has a special option to catch machine checks that happen
during VT entry.

Do these interceptions and forward them to the Linux machine check
handler. Make it always look like user space is interrupted because
the machine check handler treats kernel/user space differently.

Thanks to Huang Ying and Jiang Yunhong for help and testing.

Cc: ying.huang@intel.com

v2: Handle machine checks still in interrupt off context
to avoid problems on preemptible kernels.
v3: Handle old style 32bit and make fully standalone

Signed-off-by: Andi Kleen <ak@linux.intel.com>

---
 arch/x86/include/asm/kvm_host.h     |    2 +
 arch/x86/include/asm/mce.h          |    2 +
 arch/x86/include/asm/vmx.h          |    1 
 arch/x86/kernel/cpu/mcheck/mce_32.c |    1 
 arch/x86/kernel/cpu/mcheck/mce_64.c |    1 
 arch/x86/kvm/vmx.c                  |   47 +++++++++++++++++++++++++++++++++---
 6 files changed, 51 insertions(+), 3 deletions(-)

Index: linux-2.6.30-ak/arch/x86/include/asm/vmx.h
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/include/asm/vmx.h
+++ linux-2.6.30-ak/arch/x86/include/asm/vmx.h
@@ -247,6 +247,7 @@ enum vmcs_field {
 #define EXIT_REASON_MSR_READ            31
 #define EXIT_REASON_MSR_WRITE           32
 #define EXIT_REASON_MWAIT_INSTRUCTION   36
+#define EXIT_REASON_MCE_DURING_VMENTRY	 41
 #define EXIT_REASON_TPR_BELOW_THRESHOLD 43
 #define EXIT_REASON_APIC_ACCESS         44
 #define EXIT_REASON_EPT_VIOLATION       48
Index: linux-2.6.30-ak/arch/x86/kvm/vmx.c
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/kvm/vmx.c
+++ linux-2.6.30-ak/arch/x86/kvm/vmx.c
@@ -32,6 +32,7 @@
 #include <asm/desc.h>
 #include <asm/vmx.h>
 #include <asm/virtext.h>
+#include <asm/mce.h>
 
 #define __ex(x) __kvm_handle_fault_on_reboot(x)
 
@@ -478,7 +479,7 @@ static void update_exception_bitmap(stru
 {
 	u32 eb;
 
-	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR);
+	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR) | (1u << MC_VECTOR);
 	if (!vcpu->fpu_active)
 		eb |= 1u << NM_VECTOR;
 	if (vcpu->guest_debug & KVM_GUESTDBG_ENABLE) {
@@ -2585,6 +2586,35 @@ static int handle_rmode_exception(struct
 	return 0;
 }
 
+/*
+ * Trigger machine check on the host. We assume all the MSRs are already set up
+ * by the CPU and that we still run on the same CPU as the MCE occurred on.
+ * We pass a fake environment to the machine check handler because we want
+ * the guest to be always treated like user space, no matter what context
+ * it used internally.
+ */
+static void kvm_machine_check(void)
+{
+#ifdef CONFIG_X86_MCE
+	struct pt_regs regs = {
+		.cs = 3, /* Fake ring 3 no matter what the guest ran on */
+		.flags = X86_EFLAGS_IF,
+	};
+
+#ifdef CONFIG_X86_64
+	do_machine_check(&regs, 0);
+#else
+	machine_check_vector(&regs, 0);
+#endif
+#endif
+}
+
+static int handle_machine_check(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+{
+	/* already handled by vcpu_run */
+	return 1;
+}
+
 static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
 {
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
@@ -2596,6 +2626,10 @@ static int handle_exception(struct kvm_v
 	vect_info = vmx->idt_vectoring_info;
 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
 
+	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
+	if (ex_no == MC_VECTOR)
+		return handle_machine_check(vcpu, kvm_run);
+
 	if ((vect_info & VECTORING_INFO_VALID_MASK) &&
 						!is_page_fault(intr_info))
 		printk(KERN_ERR "%s: unexpected, vectoring info 0x%x "
@@ -2648,7 +2682,6 @@ static int handle_exception(struct kvm_v
 		return 1;
 	}
 
-	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
 	switch (ex_no) {
 	case DB_VECTOR:
 		dr6 = vmcs_readl(EXIT_QUALIFICATION);
@@ -3150,6 +3183,7 @@ static int (*kvm_vmx_exit_handlers[])(st
 	[EXIT_REASON_WBINVD]                  = handle_wbinvd,
 	[EXIT_REASON_TASK_SWITCH]             = handle_task_switch,
 	[EXIT_REASON_EPT_VIOLATION]	      = handle_ept_violation,
+	[EXIT_REASON_MCE_DURING_VMENTRY]      = handle_machine_check,
 };
 
 static const int kvm_vmx_max_exit_handlers =
@@ -3161,7 +3195,7 @@ static const int kvm_vmx_max_exit_handle
  */
 static int kvm_handle_exit(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 {
-	u32 exit_reason = vmcs_read32(VM_EXIT_REASON);
+	u32 exit_reason = vcpu->arch.exit_reason;
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
 	u32 vectoring_info = vmx->idt_vectoring_info;
 
@@ -3512,6 +3546,13 @@ static void vmx_vcpu_run(struct kvm_vcpu
 
 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
 
+	vcpu->arch.exit_reason = vmcs_read32(VM_EXIT_REASON);
+
+	/* Handle machine checks before interrupts are enabled */
+	if ((vcpu->arch.exit_reason == EXIT_REASON_MCE_DURING_VMENTRY) ||
+		(intr_info & INTR_INFO_VECTOR_MASK) == MC_VECTOR)
+		kvm_machine_check();
+
 	/* We need to handle NMIs before interrupts are enabled */
 	if ((intr_info & INTR_INFO_INTR_TYPE_MASK) == INTR_TYPE_NMI_INTR &&
 	    (intr_info & INTR_INFO_VALID_MASK)) {
Index: linux-2.6.30-ak/arch/x86/include/asm/kvm_host.h
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/include/asm/kvm_host.h
+++ linux-2.6.30-ak/arch/x86/include/asm/kvm_host.h
@@ -371,6 +371,8 @@ struct kvm_vcpu_arch {
 	unsigned long dr6;
 	unsigned long dr7;
 	unsigned long eff_db[KVM_NR_DB_REGS];
+
+	u32 exit_reason;
 };
 
 struct kvm_mem_alias {
Index: linux-2.6.30-ak/arch/x86/include/asm/mce.h
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/include/asm/mce.h
+++ linux-2.6.30-ak/arch/x86/include/asm/mce.h
@@ -153,5 +153,7 @@ extern void mcheck_init(struct cpuinfo_x
 
 extern void (*mce_threshold_vector)(void);
 
+extern void (*machine_check_vector)(struct pt_regs *, long error_code);
+
 #endif /* __KERNEL__ */
 #endif /* _ASM_X86_MCE_H */
Index: linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_32.c
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/kernel/cpu/mcheck/mce_32.c
+++ linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_32.c
@@ -29,6 +29,7 @@ static void unexpected_machine_check(str
 
 /* Call the installed machine check handler for this CPU setup. */
 void (*machine_check_vector)(struct pt_regs *, long error_code) = unexpected_machine_check;
+EXPORT_SYMBOL_GPL(machine_check_vector);
 
 /* This has to be run for each processor */
 void mcheck_init(struct cpuinfo_x86 *c)
Index: linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_64.c
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/kernel/cpu/mcheck/mce_64.c
+++ linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_64.c
@@ -420,6 +420,7 @@ void do_machine_check(struct pt_regs * r
  out2:
 	atomic_dec(&mce_entry);
 }
+EXPORT_SYMBOL_GPL(do_machine_check);
 
 #ifdef CONFIG_X86_MCE_INTEL
 /***


-- 
ak@linux.intel.com -- Speaking for myself only.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 13:24         ` Andi Kleen
@ 2009-07-01 13:41           ` Avi Kivity
  2009-07-01 14:18             ` Andi Kleen
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2009-07-01 13:41 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Andi Kleen, Greg KH, Stefan Lippers-Hollmann, linux-kernel,
	ying.huang, stable

On 07/01/2009 04:24 PM, Andi Kleen wrote:
>
> KVM: Add VT-x machine check support v3
>
> VT-x needs an explicit MC vector intercept to handle machine checks in the
> hypervisor.
>
> It also has a special option to catch machine checks that happen
> during VT entry.
>
> Do these interceptions and forward them to the Linux machine check
> handler. Make it always look like user space is interrupted because
> the machine check handler treats kernel/user space differently.
>
> Thanks to Huang Ying and Jiang Yunhong for help and testing.
>
> Cc: ying.huang@intel.com
>
> v2: Handle machine checks still in interrupt off context
> to avoid problems on preemptible kernels.
> v3: Handle old style 32bit and make fully standalone
>
>
> ===================================================================
> --- linux-2.6.30-ak.orig/arch/x86/include/asm/kvm_host.h
> +++ linux-2.6.30-ak/arch/x86/include/asm/kvm_host.h
> @@ -371,6 +371,8 @@ struct kvm_vcpu_arch {
>   	unsigned long dr6;
>   	unsigned long dr7;
>   	unsigned long eff_db[KVM_NR_DB_REGS];
> +
> +	u32 exit_reason;
>   };
>
>    

Should be in struct vmx_vcpu; otherwise ack.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 13:41           ` Avi Kivity
@ 2009-07-01 14:18             ` Andi Kleen
  2009-07-01 14:47               ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Andi Kleen @ 2009-07-01 14:18 UTC (permalink / raw)
  To: Avi Kivity
  Cc: Andi Kleen, Andi Kleen, Greg KH, Stefan Lippers-Hollmann,
	linux-kernel, ying.huang, stable

On Wed, Jul 01, 2009 at 04:41:54PM +0300, Avi Kivity wrote:
> Should be in struct vmx_vcpu; otherwise ack.

Done

---

KVM: Add VT-x machine check support v4

VT-x needs an explicit MC vector intercept to handle machine checks in the 
hypervisor.

It also has a special option to catch machine checks that happen
during VT entry.

Do these interceptions and forward them to the Linux machine check
handler. Make it always look like user space is interrupted because
the machine check handler treats kernel/user space differently.

Thanks to Huang Ying and Jiang Yunhong for help and testing.

Cc: ying.huang@intel.com

v2: Handle machine checks still in interrupt off context
to avoid problems on preemptible kernels.
v3: Handle old style 32bit and make fully standalone

Signed-off-by: Andi Kleen <ak@linux.intel.com>

---
 arch/x86/include/asm/kvm_host.h     |    2 +
 arch/x86/include/asm/mce.h          |    2 +
 arch/x86/include/asm/vmx.h          |    1 
 arch/x86/kernel/cpu/mcheck/mce_32.c |    1 
 arch/x86/kernel/cpu/mcheck/mce_64.c |    1 
 arch/x86/kvm/vmx.c                  |   49 +++++++++++++++++++++++++++++++++---
 6 files changed, 53 insertions(+), 3 deletions(-)

Index: linux-2.6.30-ak/arch/x86/include/asm/vmx.h
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/include/asm/vmx.h
+++ linux-2.6.30-ak/arch/x86/include/asm/vmx.h
@@ -247,6 +247,7 @@ enum vmcs_field {
 #define EXIT_REASON_MSR_READ            31
 #define EXIT_REASON_MSR_WRITE           32
 #define EXIT_REASON_MWAIT_INSTRUCTION   36
+#define EXIT_REASON_MCE_DURING_VMENTRY	 41
 #define EXIT_REASON_TPR_BELOW_THRESHOLD 43
 #define EXIT_REASON_APIC_ACCESS         44
 #define EXIT_REASON_EPT_VIOLATION       48
Index: linux-2.6.30-ak/arch/x86/kvm/vmx.c
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/kvm/vmx.c
+++ linux-2.6.30-ak/arch/x86/kvm/vmx.c
@@ -32,6 +32,7 @@
 #include <asm/desc.h>
 #include <asm/vmx.h>
 #include <asm/virtext.h>
+#include <asm/mce.h>
 
 #define __ex(x) __kvm_handle_fault_on_reboot(x)
 
@@ -97,6 +98,8 @@ struct vcpu_vmx {
 	int soft_vnmi_blocked;
 	ktime_t entry_time;
 	s64 vnmi_blocked_time;
+
+	u32 exit_reason;
 };
 
 static inline struct vcpu_vmx *to_vmx(struct kvm_vcpu *vcpu)
@@ -478,7 +481,7 @@ static void update_exception_bitmap(stru
 {
 	u32 eb;
 
-	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR);
+	eb = (1u << PF_VECTOR) | (1u << UD_VECTOR) | (1u << MC_VECTOR);
 	if (!vcpu->fpu_active)
 		eb |= 1u << NM_VECTOR;
 	if (vcpu->guest_debug & KVM_GUESTDBG_ENABLE) {
@@ -2585,6 +2588,35 @@ static int handle_rmode_exception(struct
 	return 0;
 }
 
+/*
+ * Trigger machine check on the host. We assume all the MSRs are already set up
+ * by the CPU and that we still run on the same CPU as the MCE occurred on.
+ * We pass a fake environment to the machine check handler because we want
+ * the guest to be always treated like user space, no matter what context
+ * it used internally.
+ */
+static void kvm_machine_check(void)
+{
+#ifdef CONFIG_X86_MCE
+	struct pt_regs regs = {
+		.cs = 3, /* Fake ring 3 no matter what the guest ran on */
+		.flags = X86_EFLAGS_IF,
+	};
+
+#ifdef CONFIG_X86_64
+	do_machine_check(&regs, 0);
+#else
+	machine_check_vector(&regs, 0);
+#endif
+#endif
+}
+
+static int handle_machine_check(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
+{
+	/* already handled by vcpu_run */
+	return 1;
+}
+
 static int handle_exception(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
 {
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
@@ -2596,6 +2628,10 @@ static int handle_exception(struct kvm_v
 	vect_info = vmx->idt_vectoring_info;
 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
 
+	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
+	if (ex_no == MC_VECTOR)
+		return handle_machine_check(vcpu, kvm_run);
+
 	if ((vect_info & VECTORING_INFO_VALID_MASK) &&
 						!is_page_fault(intr_info))
 		printk(KERN_ERR "%s: unexpected, vectoring info 0x%x "
@@ -2648,7 +2684,6 @@ static int handle_exception(struct kvm_v
 		return 1;
 	}
 
-	ex_no = intr_info & INTR_INFO_VECTOR_MASK;
 	switch (ex_no) {
 	case DB_VECTOR:
 		dr6 = vmcs_readl(EXIT_QUALIFICATION);
@@ -3150,6 +3185,7 @@ static int (*kvm_vmx_exit_handlers[])(st
 	[EXIT_REASON_WBINVD]                  = handle_wbinvd,
 	[EXIT_REASON_TASK_SWITCH]             = handle_task_switch,
 	[EXIT_REASON_EPT_VIOLATION]	      = handle_ept_violation,
+	[EXIT_REASON_MCE_DURING_VMENTRY]      = handle_machine_check,
 };
 
 static const int kvm_vmx_max_exit_handlers =
@@ -3161,8 +3197,8 @@ static const int kvm_vmx_max_exit_handle
  */
 static int kvm_handle_exit(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 {
-	u32 exit_reason = vmcs_read32(VM_EXIT_REASON);
 	struct vcpu_vmx *vmx = to_vmx(vcpu);
+	u32 exit_reason = vmx->exit_reason;
 	u32 vectoring_info = vmx->idt_vectoring_info;
 
 	KVMTRACE_3D(VMEXIT, vcpu, exit_reason, (u32)kvm_rip_read(vcpu),
@@ -3512,6 +3548,13 @@ static void vmx_vcpu_run(struct kvm_vcpu
 
 	intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
 
+	vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
+
+	/* Handle machine checks before interrupts are enabled */
+	if ((vmx->exit_reason == EXIT_REASON_MCE_DURING_VMENTRY) ||
+		(intr_info & INTR_INFO_VECTOR_MASK) == MC_VECTOR)
+		kvm_machine_check();
+
 	/* We need to handle NMIs before interrupts are enabled */
 	if ((intr_info & INTR_INFO_INTR_TYPE_MASK) == INTR_TYPE_NMI_INTR &&
 	    (intr_info & INTR_INFO_VALID_MASK)) {
Index: linux-2.6.30-ak/arch/x86/include/asm/kvm_host.h
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/include/asm/kvm_host.h
+++ linux-2.6.30-ak/arch/x86/include/asm/kvm_host.h
@@ -371,6 +371,8 @@ struct kvm_vcpu_arch {
 	unsigned long dr6;
 	unsigned long dr7;
 	unsigned long eff_db[KVM_NR_DB_REGS];
+
+	u32 exit_reason;
 };
 
 struct kvm_mem_alias {
Index: linux-2.6.30-ak/arch/x86/include/asm/mce.h
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/include/asm/mce.h
+++ linux-2.6.30-ak/arch/x86/include/asm/mce.h
@@ -153,5 +153,7 @@ extern void mcheck_init(struct cpuinfo_x
 
 extern void (*mce_threshold_vector)(void);
 
+extern void (*machine_check_vector)(struct pt_regs *, long error_code);
+
 #endif /* __KERNEL__ */
 #endif /* _ASM_X86_MCE_H */
Index: linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_32.c
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/kernel/cpu/mcheck/mce_32.c
+++ linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_32.c
@@ -29,6 +29,7 @@ static void unexpected_machine_check(str
 
 /* Call the installed machine check handler for this CPU setup. */
 void (*machine_check_vector)(struct pt_regs *, long error_code) = unexpected_machine_check;
+EXPORT_SYMBOL_GPL(machine_check_vector);
 
 /* This has to be run for each processor */
 void mcheck_init(struct cpuinfo_x86 *c)
Index: linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_64.c
===================================================================
--- linux-2.6.30-ak.orig/arch/x86/kernel/cpu/mcheck/mce_64.c
+++ linux-2.6.30-ak/arch/x86/kernel/cpu/mcheck/mce_64.c
@@ -420,6 +420,7 @@ void do_machine_check(struct pt_regs * r
  out2:
 	atomic_dec(&mce_entry);
 }
+EXPORT_SYMBOL_GPL(do_machine_check);
 
 #ifdef CONFIG_X86_MCE_INTEL
 /***

-- 
ak@linux.intel.com -- Speaking for myself only.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 14:18             ` Andi Kleen
@ 2009-07-01 14:47               ` Avi Kivity
  2009-07-01 14:58                 ` Greg KH
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2009-07-01 14:47 UTC (permalink / raw)
  To: Andi Kleen
  Cc: Andi Kleen, Greg KH, Stefan Lippers-Hollmann, linux-kernel,
	ying.huang, stable

On 07/01/2009 05:18 PM, Andi Kleen wrote:
> On Wed, Jul 01, 2009 at 04:41:54PM +0300, Avi Kivity wrote:
>    
>> Should be in struct vmx_vcpu; otherwise ack.
>>      
>
> Done
>
> ---
>
> KVM: Add VT-x machine check support v4
>
> VT-x needs an explicit MC vector intercept to handle machine checks in the
> hypervisor.
>
> It also has a special option to catch machine checks that happen
> during VT entry.
>
> Do these interceptions and forward them to the Linux machine check
> handler. Make it always look like user space is interrupted because
> the machine check handler treats kernel/user space differently.
>
> Thanks to Huang Ying and Jiang Yunhong for help and testing.
>
>    

Ack, thanks.  Stable boys, please use this instead of the patch from 
mainline and the two patches it dragged in.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 14:47               ` Avi Kivity
@ 2009-07-01 14:58                 ` Greg KH
  2009-07-01 15:04                   ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2009-07-01 14:58 UTC (permalink / raw)
  To: Avi Kivity
  Cc: Andi Kleen, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	ying.huang, stable

On Wed, Jul 01, 2009 at 05:47:15PM +0300, Avi Kivity wrote:
> On 07/01/2009 05:18 PM, Andi Kleen wrote:
> > On Wed, Jul 01, 2009 at 04:41:54PM +0300, Avi Kivity wrote:
> >    
> >> Should be in struct vmx_vcpu; otherwise ack.
> >>      
> >
> > Done
> >
> > ---
> >
> > KVM: Add VT-x machine check support v4
> >
> > VT-x needs an explicit MC vector intercept to handle machine checks in the
> > hypervisor.
> >
> > It also has a special option to catch machine checks that happen
> > during VT entry.
> >
> > Do these interceptions and forward them to the Linux machine check
> > handler. Make it always look like user space is interrupted because
> > the machine check handler treats kernel/user space differently.
> >
> > Thanks to Huang Ying and Jiang Yunhong for help and testing.
> >
> >    
> 
> Ack, thanks.  Stable boys, please use this instead of the patch from 
> mainline and the two patches it dragged in.

So, I should use this instead of:
	kvm-vmx-fix-handling-of-a-fault-during-nmi-unblocked-due-to-iret.patch
	kvm-move-exit-due-to-nmi-handling-into-vmx_complete_interrupts.patch
	kvm-add-vt-x-machine-check-support.patch

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 14:58                 ` Greg KH
@ 2009-07-01 15:04                   ` Avi Kivity
  2009-07-01 17:27                     ` [stable] " Greg KH
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2009-07-01 15:04 UTC (permalink / raw)
  To: Greg KH
  Cc: Andi Kleen, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	ying.huang, stable

On 07/01/2009 05:58 PM, Greg KH wrote:
>> Ack, thanks.  Stable boys, please use this instead of the patch from
>> mainline and the two patches it dragged in.
>>      
>
> So, I should use this instead of:
> 	kvm-vmx-fix-handling-of-a-fault-during-nmi-unblocked-due-to-iret.patch
> 	kvm-move-exit-due-to-nmi-handling-into-vmx_complete_interrupts.patch
> 	kvm-add-vt-x-machine-check-support.patch
>    

Exactly.  I'll run my regression tests on stable-queue and let you know 
if I encounter any trouble.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [stable] patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 15:04                   ` Avi Kivity
@ 2009-07-01 17:27                     ` Greg KH
  2009-07-01 18:18                       ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2009-07-01 17:27 UTC (permalink / raw)
  To: Avi Kivity
  Cc: Greg KH, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	Andi Kleen, ying.huang, stable

On Wed, Jul 01, 2009 at 06:04:20PM +0300, Avi Kivity wrote:
> On 07/01/2009 05:58 PM, Greg KH wrote:
> >> Ack, thanks.  Stable boys, please use this instead of the patch from
> >> mainline and the two patches it dragged in.
> >>      
> >
> > So, I should use this instead of:
> > 	kvm-vmx-fix-handling-of-a-fault-during-nmi-unblocked-due-to-iret.patch
> > 	kvm-move-exit-due-to-nmi-handling-into-vmx_complete_interrupts.patch
> > 	kvm-add-vt-x-machine-check-support.patch
> >    
> 
> Exactly.  I'll run my regression tests on stable-queue and let you know 
> if I encounter any trouble.

Thanks, I've now done this, and will push out a 2.6.30.1-rc2 in a bit so
you can test with that as well.

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [stable] patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 17:27                     ` [stable] " Greg KH
@ 2009-07-01 18:18                       ` Avi Kivity
  2009-07-01 18:42                         ` Greg KH
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2009-07-01 18:18 UTC (permalink / raw)
  To: Greg KH
  Cc: Greg KH, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	Andi Kleen, ying.huang, stable

On 07/01/2009 08:27 PM, Greg KH wrote:
> Thanks, I've now done this, and will push out a 2.6.30.1-rc2 in a bit so
> you can test with that as well.
>    

Where will it appear?  stable-queue wasn't what I thought it was.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [stable] patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 18:18                       ` Avi Kivity
@ 2009-07-01 18:42                         ` Greg KH
  2009-07-01 18:56                           ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2009-07-01 18:42 UTC (permalink / raw)
  To: Avi Kivity
  Cc: Greg KH, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	Andi Kleen, ying.huang, stable

On Wed, Jul 01, 2009 at 09:18:41PM +0300, Avi Kivity wrote:
> On 07/01/2009 08:27 PM, Greg KH wrote:
> > Thanks, I've now done this, and will push out a 2.6.30.1-rc2 in a bit so
> > you can test with that as well.
> >    
> 
> Where will it appear?  stable-queue wasn't what I thought it was.

It is now at:
	kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.30.1-rc2.gz

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [stable] patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 18:42                         ` Greg KH
@ 2009-07-01 18:56                           ` Avi Kivity
  2009-07-01 19:31                             ` Greg KH
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2009-07-01 18:56 UTC (permalink / raw)
  To: Greg KH
  Cc: Greg KH, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	Andi Kleen, ying.huang, stable

On 07/01/2009 09:42 PM, Greg KH wrote:
>> Where will it appear?  stable-queue wasn't what I thought it was.
>>      
>
> It is now at:
> 	kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.30.1-rc2.gz
>
>    

What, no git?...

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [stable] patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 18:56                           ` Avi Kivity
@ 2009-07-01 19:31                             ` Greg KH
  2009-07-02 13:21                               ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Greg KH @ 2009-07-01 19:31 UTC (permalink / raw)
  To: Avi Kivity
  Cc: Greg KH, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	Andi Kleen, ying.huang, stable

On Wed, Jul 01, 2009 at 09:56:03PM +0300, Avi Kivity wrote:
> On 07/01/2009 09:42 PM, Greg KH wrote:
> >> Where will it appear?  stable-queue wasn't what I thought it was.
> >>      
> >
> > It is now at:
> > 	kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.30.1-rc2.gz
> >
> >    
> 
> What, no git?...

Sure, it's a git tree full of quilt patches:
	http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git;a=summary
apply the queue-2.6.30 patches to a clean 2.6.30 tree and you will
generate the tree.

Hope this helps,

greg k-h

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [stable] patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree
  2009-07-01 19:31                             ` Greg KH
@ 2009-07-02 13:21                               ` Avi Kivity
  0 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2009-07-02 13:21 UTC (permalink / raw)
  To: Greg KH
  Cc: Greg KH, Andi Kleen, Stefan Lippers-Hollmann, linux-kernel,
	Andi Kleen, ying.huang, stable

On 07/01/2009 10:31 PM, Greg KH wrote:
> Sure, it's a git tree full of quilt patches:
> 	http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git;a=summary
> apply the queue-2.6.30 patches to a clean 2.6.30 tree and you will
> generate the tree.
>    

Thanks.  My tests pronounced the tree good.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2009-07-02 13:20 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20090629184144.76C9948FD3@coco.kroah.org>
2009-06-30 22:53 ` patch kvm-add-vt-x-machine-check-support.patch added to 2.6.30-stable tree Stefan Lippers-Hollmann
2009-06-30 23:42   ` Greg KH
2009-07-01  7:09     ` Andi Kleen
2009-07-01  7:35       ` Avi Kivity
2009-07-01 13:24         ` Andi Kleen
2009-07-01 13:41           ` Avi Kivity
2009-07-01 14:18             ` Andi Kleen
2009-07-01 14:47               ` Avi Kivity
2009-07-01 14:58                 ` Greg KH
2009-07-01 15:04                   ` Avi Kivity
2009-07-01 17:27                     ` [stable] " Greg KH
2009-07-01 18:18                       ` Avi Kivity
2009-07-01 18:42                         ` Greg KH
2009-07-01 18:56                           ` Avi Kivity
2009-07-01 19:31                             ` Greg KH
2009-07-02 13:21                               ` Avi Kivity

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).