KVM: Fixes for 2.6.21-rc3
cover KVM: Fixes for 2.6.21-rc3
This patchset contains fixes I plan to submit pre 2.6.21. One improves cleanup on module load failures, while the other fixes guest failures in compat mode (32-bit guest process on a 64-bit guest kernel).
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
PATCH 1/2 KVM: Unset kvm_arch_ops if arch module loading failed
Otherwise, the core module thinks the arch module is loaded, and won't let you reload it after you've fixed the bug.
--- drivers/kvm/kvm_main.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
drivers/kvm/kvm_main.c +3 -1
@@ -2464,7 +2464,7 @@ int kvm_init_arch(struct kvm_arch_ops *ops, struct module *module) r = kvm_arch_ops->hardware_setup ();if (r <0 ) -return r; + goto out;on_each_cpu (kvm_arch_ops->hardware_enable,NULL ,0 ,1 ); r =register_cpu_notifier (&kvm_cpu_notifier);
@@ -2500,6 +2500,8 @@ out_free_2: out_free_1:on_each_cpu (kvm_arch_ops->hardware_disable,NULL ,0 ,1 ); kvm_arch_ops->hardware_unsetup (); +out: + kvm_arch_ops =NULL ;return r; }
Signature · 8 lines
1.5.0.2 ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
PATCH 2/2 KVM: Fix guest sysenter on vmx
In reply to Avi KivityThe vmx code currently treats the guest's sysenter support msrs as 32-bit values, which breaks 32-bit compat mode userspace on 64-bit guests. Fix by using the native word width of the machine.
--- drivers/kvm/vmx.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
drivers/kvm/vmx.c +4 -4
@@ -371,10 +371,10 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata) data =vmcs_read32 (GUEST_SYSENTER_CS );break ;case MSR_IA32_SYSENTER_EIP : - data =vmcs_read32 (GUEST_SYSENTER_EIP ); + data =vmcs_readl (GUEST_SYSENTER_EIP );break ;case MSR_IA32_SYSENTER_ESP : - data =vmcs_read32 (GUEST_SYSENTER_ESP ); + data =vmcs_readl (GUEST_SYSENTER_ESP );break ;default : msr =find_msr_entry (vcpu, msr_index);
@@ -412,10 +412,10 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)vmcs_write32 (GUEST_SYSENTER_CS , data);break ;case MSR_IA32_SYSENTER_EIP : -vmcs_write32 (GUEST_SYSENTER_EIP , data); +vmcs_writel (GUEST_SYSENTER_EIP , data);break ;case MSR_IA32_SYSENTER_ESP : -vmcs_write32 (GUEST_SYSENTER_ESP , data); +vmcs_writel (GUEST_SYSENTER_ESP , data);break ;case MSR_IA32_TIME_STAMP_COUNTER :guest_write_tsc (data);
Signature · 8 lines
1.5.0.2 ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV