From: Chris L. <cla...@re...> - 2008-04-23 18:23:30
|
Avi, Joerg, While trying to boot a RHEL-4 guest on latest KVM tip on an AMD machine, I found that the guest would consistently crash when trying to setup the NMI watchdog. I traced it down to the following commit: 51ef1ac7b23ee32bfcc61c229d634fdc1c68b38a It seems that in that commit, the K7_EVNTSEL MSR's were set to fail if the data != 0. That test is actually fine, the problem is how the code around it is generated. That is, we are only supposed to go to unhandled if data != 0; but for some reason, we are *always* going to unhandled, even when the data == 0. That causes RHEL-4 kernel to crash. If I rearrange the code to look like this: case MSR_K7_EVNTSEL0: case MSR_K7_EVNTSEL1: case MSR_K7_EVNTSEL2: case MSR_K7_EVNTSEL3: if (data != 0) return kvm_set_msr_common(vcpu, ecx, data); default: return kvm_set_msr_common(vcpu, ecx, data); } Then everything works again. A patch that does just this is attached. It might be slightly nicer to say "if (data == 0) return 0" and then just fall through to the default case, but I don't much care either way. Signed-off-by: Chris Lalancette <cla...@re...> |