On Fri, Jan 4, 2013 at 2:52 PM, Eduardo Habkost <ehabk...@redhat.com> wrote: > The kvm_mmu_op feature was removed from the kernel since v3.3 (released > in March 2012), it was marked for removal since January 2011 and it's > slower than shadow or hardware assisted paging (see kernel commit > fb92045843). It doesn't make sense to keep it enabled by default. > > Also, keeping it enabled by default would cause unnecessary hassle when > libvirt start using the "enforce" option. > > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> > --- > Cc: kvm@vger.kernel.org > Cc: Michael S. Tsirkin <m...@redhat.com> > Cc: Gleb Natapov <g...@redhat.com> > Cc: Marcelo Tosatti <mtosa...@redhat.com> > Cc: libvir-l...@redhat.com > Cc: Jiri Denemark <jdene...@redhat.com> > > I was planning to reverse the logic of the compat init functions and make > pc_init_pci_1_3() enable kvm_mmu_op and then call pc_init_pci_1_4(). But that > would require changing pc_init_pci_no_kvmclock() and pc_init_isa() as well. So > to keep the changes simple, I am keeping the pattern used when > pc_init_pci_1_3() > was introduced, making pc_init_pci_1_4() disable kvm_mmu_op and then call > pc_init_pci_1_3(). > > --- > hw/pc_piix.c | 11 ++++++++++- > target-i386/cpu.c | 8 ++++++++ > target-i386/cpu.h | 1 + > 3 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/hw/pc_piix.c b/hw/pc_piix.c > index 99747a7..a6bf645 100644 > --- a/hw/pc_piix.c > +++ b/hw/pc_piix.c > @@ -217,6 +217,7 @@ static void pc_init1(MemoryRegion *system_memory, > } > } > > +/* machine init function for pc-0.14 - pc-1.2 */ > static void pc_init_pci(QEMUMachineInitArgs *args) > { > ram_addr_t ram_size = args->ram_size; > @@ -232,12 +233,20 @@ static void pc_init_pci(QEMUMachineInitArgs *args) > initrd_filename, cpu_model, 1, 1); > } > > +/* machine init function for pc-1.3 */
The comment does give much information compared to the function name. > static void pc_init_pci_1_3(QEMUMachineInitArgs *args) > { > enable_kvm_pv_eoi(); > pc_init_pci(args); > } > > +/* machine init function for pc-1.4 */ Ditto. > +static void pc_init_pci_1_4(QEMUMachineInitArgs *args) > +{ > + disable_kvm_mmu_op(); > + pc_init_pci_1_3(args); > +} > + > static void pc_init_pci_no_kvmclock(QEMUMachineInitArgs *args) > { > ram_addr_t ram_size = args->ram_size; > @@ -285,7 +294,7 @@ static QEMUMachine pc_machine_v1_4 = { > .name = "pc-1.4", > .alias = "pc", > .desc = "Standard PC", > - .init = pc_init_pci_1_3, > + .init = pc_init_pci_1_4, > .max_cpus = 255, > .is_default = 1, > }; > diff --git a/target-i386/cpu.c b/target-i386/cpu.c > index 808001a..ec877c7 100644 > --- a/target-i386/cpu.c > +++ b/target-i386/cpu.c > @@ -157,6 +157,14 @@ void enable_kvm_pv_eoi(void) > #endif > } > > +void disable_kvm_mmu_op(void) > +{ > +#ifdef CONFIG_KVM > + if (kvm_enabled()) Braces. > + kvm_default_features &= ~(1UL << KVM_FEATURE_MMU_OP); > +#endif > +} > + > void host_cpuid(uint32_t function, uint32_t count, > uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) > { > diff --git a/target-i386/cpu.h b/target-i386/cpu.h > index 1283537..27c8d0c 100644 > --- a/target-i386/cpu.h > +++ b/target-i386/cpu.h > @@ -1219,5 +1219,6 @@ void do_smm_enter(CPUX86State *env1); > void cpu_report_tpr_access(CPUX86State *env, TPRAccess access); > > void enable_kvm_pv_eoi(void); > +void disable_kvm_mmu_op(void); > > #endif /* CPU_I386_H */ > -- > 1.7.11.7 > > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html