Joerg Roedel wrote:
> This patch makes the EFER register accessible on a 32bit KVM host. This is
> necessary to boot 32 bit PAE guests under SVM.
>
>   


>  static void set_efer(struct kvm_vcpu *vcpu, u64 efer)
>  {
>       if (efer & EFER_RESERVED_BITS) {
> @@ -432,12 +430,19 @@ static void set_efer(struct kvm_vcpu *vcpu, u64 efer)
>               return;
>       }
>  
> +#ifdef CONFIG_X86_64
>       if (is_paging(vcpu)
>           && (vcpu->arch.shadow_efer & EFER_LME) != (efer & EFER_LME)) {
>               printk(KERN_DEBUG "set_efer: #GP, change LME while paging\n");
>               kvm_inject_gp(vcpu, 0);
>               return;
>       }
> +#else
> +     if (efer & EFER_LME) {
> +             printk(KERN_DEBUG "set_efer: #GP, enable longmode on 32bit 
> host\n");
> +             kvm_inject_gp(vcpu, 0);
> +     }
> +#endif
>   

We should, in addition, check the various EFER bits against host cpu 
capabilities (with cpu_has()). This will ensure that any attempt to set 
an invalid bit will fail.  On Intel cpus that don't have EFER, there are 
no valid bits, and if we detect that in vmx_set_efer, we can make it 
work on hosts that don't have EFER.

 


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


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to