[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#531488: Kernel panic booting Oracle Linux in kvm



I have found out something interesting. The attached patch, which I
think should fix the bug, is present in kvm-72 Debian sources but not in
the 2.6.26-2 kernel source. So maybe rebuilding kvm from source cures
the problem; I will test this.

mud@fujiko:/tmp$
diff /home/mud/src/debian-bug-531488/linux-source-2.6.26/arch/x86/kvm/svm.c /tmp/linux-source-2.6.26/arch/x86/kvm/svm.c
1316,1319d1315
< 	case MSR_K7_PERFCTR0:
< 	case MSR_K7_PERFCTR1:
< 	case MSR_K7_PERFCTR2:
< 	case MSR_K7_PERFCTR3:
1321,1323c1317,1319
< 		 * Just discard all writes to the performance counters; this
< 		 * should keep both older linux and windows 64-bit guests
< 		 * happy
---
> 		 * only support writing 0 to the performance counters for now
> 		 * to make Windows happy. Should be replaced by a real
> 		 * performance counter emulation later.
1325,1326c1321,1322
< 		pr_unimpl(vcpu, "unimplemented perfctr wrmsr: 0x%x data 0x%llx\n",
ecx, data);
< 
---
> 		if (data != 0)
> 			goto unhandled;
1328a1325
> 	unhandled:
mud@fujiko:/tmp$ 


diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 5528121..dc91b09 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -1312,16 +1312,19 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
 	case MSR_K7_EVNTSEL1:
 	case MSR_K7_EVNTSEL2:
 	case MSR_K7_EVNTSEL3:
+	case MSR_K7_PERFCTR0:
+	case MSR_K7_PERFCTR1:
+	case MSR_K7_PERFCTR2:
+	case MSR_K7_PERFCTR3:
 		/*
-		 * only support writing 0 to the performance counters for now
-		 * to make Windows happy. Should be replaced by a real
-		 * performance counter emulation later.
+		 * Just discard all writes to the performance counters; this
+		 * should keep both older linux and windows 64-bit guests
+		 * happy
 		 */
-		if (data != 0)
-			goto unhandled;
+		pr_unimpl(vcpu, "unimplemented perfctr wrmsr: 0x%x data 0x%llx\n", ecx, data);
+
 		break;
 	default:
-	unhandled:
 		return kvm_set_msr_common(vcpu, ecx, data);
 	}
 	return 0;

Reply to: