Yang, Sheng wrote:
> >From ac4dd1782b9f0f51e0c366a1b8db4515d6828df8 Mon Sep 17 00:00:00 2001
> From: Sheng Yang <[EMAIL PROTECTED]>
> Date: Tue, 23 Oct 2007 12:34:42 +0800
> Subject: [PATCH] Enable memory mapped TPR shadow(FlexPriority)
>
> This patch based on CR8/TPR patch before, and enable the TPR
> shadow(FlexPriority) for 32bit Windows. Since TPR is accessed
> very frequently by 32bit Windows, especially SMP guest, with
> FlexPriority enabled, we saw significant performance gain.
>   

For the benefit of users, can you detail which processors have this feature?

>  
>  static inline struct kvm_pic *pic_irqchip(struct kvm *kvm)
> @@ -503,6 +504,11 @@ void kvm_mmu_slot_remove_write_access(struct kvm
> *kvm, int slot);
>  void kvm_mmu_zap_all(struct kvm *kvm);
>  void kvm_mmu_change_mmu_pages(struct kvm *kvm, unsigned int
> kvm_nr_mmu_pages);
>  
> +int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
> +                               struct
> +                               kvm_userspace_memory_region *mem,
> +                               int user_alloc);
> +
>   

Exporting an ioctl handler isn't very pretty.  Izik is working on a 
patch that also requires an internal memory slot, so he will add an API 
for it.

> --- a/drivers/kvm/kvm_main.c
> +++ b/drivers/kvm/kvm_main.c
> @@ -643,10 +643,10 @@ EXPORT_SYMBOL_GPL(fx_init);
>   *
>   * Discontiguous memory is allowed, mostly for framebuffers.
>   */
> -static int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
> -                                       struct
> -                                       kvm_userspace_memory_region
> *mem,
> -                                       int user_alloc)
> +int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
> +                               struct
> +                               kvm_userspace_memory_region *mem,
> +                               int user_alloc)
>  {
>       int r;
>       gfn_t base_gfn;
> @@ -776,6 +776,7 @@ out_unlock:
>  out:
>       return r;
>  }
> +EXPORT_SYMBOL_GPL(kvm_vm_ioctl_set_memory_region);
>   

The internal memory slot needs to be hidden from userspace.  Hopefully 
Izik's API will add that too.

> +
> +     /* For APIC access vmexit */
> +     if ((gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE)
> +             goto mmio;
>   

What if the guest changes the apic base address?

> @@ -1610,13 +1675,15 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu)
>  
>       vmcs_write32(VM_ENTRY_INTR_INFO_FIELD, 0);  /* 22.2.1 */
>  
> -#ifdef CONFIG_X86_64
>       vmcs_write64(VIRTUAL_APIC_PAGE_ADDR, 0);
>   

I think the #ifdef is for a reason... probably Core processors which 
don't support x86_64 (and therefore cr8) don't have this.

Please check.

>  /*
>   * Interruption-information format
> diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
> index f858c01..d24166e 100644
> --- a/drivers/kvm/x86_emulate.c
> +++ b/drivers/kvm/x86_emulate.c
> @@ -845,6 +845,11 @@ modrm_done:
>                       c->src.type = OP_REG;
>                       break;
>               }
> +             if (((ctxt->cmd_type & EMULCMD_DECODE_ADDR) != 0) &&
> +                 (c->modrm_ea == 0)) {
> +                     ctxt->cr2 = insn_fetch(u32, c->src.bytes,
> c->eip);
> +                     c->eip -= c->src.bytes;
> +             }
>   

Please explain this.  Is this for mov eax, abs?  If so, it's much 
needed, and should be in a separate patch.  I don't think 
EMULCMD_DECODE_ADDR is necessary.

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


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to