- 27 Apr, 2008 40 commits
-
-
Marcelo Tosatti authored
Create large pages mappings if the guest PTE's are marked as such and the underlying memory is hugetlbfs backed. If the largepage contains write-protected pages, a large pte is not used. Gives a consistent 2% improvement for data copies on ram mounted filesystem, without NPT/EPT. Anthony measures a 4% improvement on 4-way kernbench, with NPT. Signed-off-by:
Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Marcelo Tosatti authored
Mark zapped root pagetables as invalid and ignore such pages during lookup. This is a problem with the cr3-target feature, where a zapped root table fools the faulting code into creating a read-only mapping. The result is a lockup if the instruction can't be emulated. Signed-off-by:
Marcelo Tosatti <mtosatti@redhat.com> Cc: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Alexander Graf authored
Darwin relies on this and ceases to work without. Signed-off-by:
Alexander Graf <alex@csgraf.de> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Harvey Harrison authored
In two case statements, use the ever popular 'i' instead of index: arch/x86/kvm/x86.c:1063:7: warning: symbol 'index' shadows an earlier one arch/x86/kvm/x86.c:1000:9: originally declared here arch/x86/kvm/x86.c:1079:7: warning: symbol 'index' shadows an earlier one arch/x86/kvm/x86.c:1000:9: originally declared here Make it static. arch/x86/kvm/x86.c:1945:24: warning: symbol 'emulate_ops' was not declared. Should it be static? Drop the return statements. arch/x86/kvm/x86.c:2878:2: warning: returning void-valued expression arch/x86/kvm/x86.c:2944:2: warning: returning void-valued expression Signed-off-by:
Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Harvey Harrison authored
Fixes sparse warning as well. arch/x86/kvm/svm.c:69:15: warning: symbol 'iopm_base' was not declared. Should it be static? Signed-off-by:
Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Harvey Harrison authored
Nesting __emulate_2op_nobyte inside__emulate_2op produces many shadowed variable warnings on the internal variable _tmp used by both macros. Change the outer macro to use __tmp. Avoids a sparse warning like the following at every call site of __emulate_2op arch/x86/kvm/x86_emulate.c:1091:3: warning: symbol '_tmp' shadows an earlier one arch/x86/kvm/x86_emulate.c:1091:3: originally declared here [18 more warnings suppressed] Signed-off-by:
Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Amit Shah authored
Signed-off-by:
Amit Shah <amit.shah@qumranet.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
The x86 desc_struct unification allows us to remove segment_descriptor.h. Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
With NPT support, scalability is much improved. Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Harvey Harrison authored
Change jmp_rel() to a function as well. Signed-off-by:
Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Harvey Harrison authored
Signed-off-by:
Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Harvey Harrison authored
Replaces open-coded mask calculation in macros. Signed-off-by:
Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Glauber de Oliveira Costa authored
This is the guest part of kvm clock implementation It does not do tsc-only timing, as tsc can have deltas between cpus, and it did not seem worthy to me to keep adjusting them. We do use it, however, for fine-grained adjustment. Other than that, time comes from the host. [randy dunlap: add missing include] [randy dunlap: disallow on Voyager or Visual WS] Signed-off-by:
Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by:
Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Glauber de Oliveira Costa authored
This is the host part of kvm clocksource implementation. As it does not include clockevents, it is a fairly simple implementation. We only have to register a per-vcpu area, and start writing to it periodically. The area is binary compatible with xen, as we use the same shadow_info structure. [marcelo: fix bad_page on MSR_KVM_SYSTEM_TIME] [avi: save full value of the msr, even if enable bit is clear] [avi: clear previous value of time_page] Signed-off-by:
Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by:
Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
This patch implements the Last Branch Record Virtualization (LBRV) feature of the AMD Barcelona and Phenom processors into the kvm-amd module. It will only be enabled if the guest enables last branch recording in the DEBUG_CTL MSR. So there is no increased world switch overhead when the guest doesn't use these MSRs. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Markus Rechberger <markus.rechberger@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
This patch changes the kvm-amd module to allocate the SVM MSR permission map per VCPU instead of a global map for all VCPUs. With this we have more flexibility allowing specific guests to access virtualized MSRs. This is required for LBR virtualization. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Markus Rechberger <markus.rechberger@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
Change the parameter of the init_vmcb() function in the kvm-amd module from struct vmcb to struct vcpu_svm. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Markus Rechberger <markus.rechberger@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Ryan Harper authored
Looking at Intel Volume 3b, page 148, table 20-11 and noticed that the field name is 'Deliver' not 'Deliever'. Attached patch changes the define name and its user in vmx.c Signed-off-by:
Ryan Harper <ryanh@us.ibm.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
This patch contains the SVM architecture dependent changes for KVM to enable support for the Nested Paging feature of AMD Barcelona and Phenom processors. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
This patch contains the changes to the KVM MMU necessary for support of the Nested Paging feature in AMD Barcelona and Phenom Processors. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
The load_pdptrs() function is required in the SVM module for NPT support. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
The mapping function for the nonpaging case in the softmmu does basically the same as required for Nested Paging. Make this function generic so it can be used for both. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
The generic x86 code has to know if the specific implementation uses Nested Paging. In the generic code Nested Paging is called Two Dimensional Paging (TDP) to avoid confusion with (future) TDP implementations of other vendors. This patch exports the availability of TDP to the generic x86 code. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
To disable the use of the Nested Paging feature even if it is available in hardware this patch adds a module parameter. Nested Paging can be disabled by passing npt=0 to the kvm_amd module. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
Let SVM detect if the Nested Paging feature is available on the hardware. Disable it to keep this patch series bisectable. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
By moving the SVM feature detection from the each_cpu code to the hardware setup code it runs only once. As an additional advance the feature check is now available earlier in the module setup process. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
This patch makes the EFER register accessible on a 32bit KVM host. This is necessary to boot 32 bit PAE guests under SVM. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
To allow access to the EFER register in 32bit KVM the EFER specific code has to be exported to the x86 generic code. This patch does this in a backwards compatible manner. [avi: add check for EFER-less hosts] Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
This patch aligns the bits the guest can set in the EFER register with the features in the host processor. Currently it lets EFER.NX disabled if the processor does not support it and enables EFER.LME and EFER.LMA only for KVM on 64 bit hosts. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Joerg Roedel authored
This patch give the SVM and VMX implementations the ability to add some bits the guest can set in its EFER register. Signed-off-by:
Joerg Roedel <joerg.roedel@amd.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Andrea Arcangeli authored
With CONFIG_PREEMPT=n, this is needed in order to disable the fault-in code from sleeping. Signed-off-by:
Andrea Arcangeli <andrea@qumranet.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Hollis Blanchard authored
This allows kvm_host.h to be #included even when struct preempt_notifier is undefined. This is needed to build ppc asm-offsets.h. Signed-off-by:
Hollis Blanchard <hollisb@us.ibm.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Sheng Yang authored
To allow TLB entries to be retained across VM entry and VM exit, the VMM can now identify distinct address spaces through a new virtual-processor ID (VPID) field of the VMCS. [avi: drop vpid_sync_all()] [avi: add "cc" to asm constraints] Signed-off-by:
Sheng Yang <sheng.yang@intel.com> Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
The second page is only needed on archs that support pio. Noted by Carsten Otte. Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
Currently an mmio guest pte is encoded in the shadow pagetable as a not-present trapping pte, with the SHADOW_IO_MARK bit set. However nothing is ever done with this information, so maintaining it is a useless complication. This patch moves the check for mmio to before shadow ptes are instantiated, so the shadow code is never invoked for ptes that reference mmio. The code is simpler, and with future work, can be made to handle mmio concurrently. Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
Opcodes 0x80-0x83 Signed-off-by:
Avi Kivity <avi@qumranet.com>
-
Avi Kivity authored
Signed-off-by:
Avi Kivity <avi@qumranet.com>
-