From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: [PATCH] KVM: add KVM_SYNC_SHADOW_WITH_USER ioctl (v2) Date: Wed, 9 Jan 2008 16:17:43 -0200 Message-ID: <20080109181743.GB303@dmt> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel To: Anthony Liguori Return-path: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Export nukeing of shadow MMU pages through an ioctl, required for consistency on balloon inflate. Changes: - Move to x86-specific kvm_arch_vm_ioctl() - Grab mmap_sem Index: kvm.quilt/arch/x86/kvm/x86.c =================================================================== --- kvm.quilt.orig/arch/x86/kvm/x86.c +++ kvm.quilt/arch/x86/kvm/x86.c @@ -680,6 +680,7 @@ int kvm_dev_ioctl_check_extension(long e case KVM_CAP_USER_MEMORY: case KVM_CAP_SET_TSS_ADDR: case KVM_CAP_EXT_CPUID: + case KVM_CAP_SYNC_SHADOW_WITH_USER: r = 1; break; case KVM_CAP_VAPIC: @@ -1505,6 +1506,13 @@ long kvm_arch_vm_ioctl(struct file *filp r = 0; break; } + case KVM_SYNC_SHADOW_WITH_USER: { + r = 0; + down_read(¤t->mm->mmap_sem); + kvm_mmu_zap_all(kvm); + up_read(¤t->mm->mmap_sem); + break; + } default: ; } Index: kvm.quilt/include/linux/kvm.h =================================================================== --- kvm.quilt.orig/include/linux/kvm.h +++ kvm.quilt/include/linux/kvm.h @@ -249,6 +249,7 @@ struct kvm_vapic_addr { #define KVM_CAP_SET_TSS_ADDR 4 #define KVM_CAP_EXT_CPUID 5 #define KVM_CAP_VAPIC 6 +#define KVM_CAP_SYNC_SHADOW_WITH_USER 7 /* * ioctls for VM fds @@ -267,6 +268,7 @@ struct kvm_vapic_addr { #define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log) #define KVM_SET_MEMORY_ALIAS _IOW(KVMIO, 0x43, struct kvm_memory_alias) #define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x48, struct kvm_cpuid2) +#define KVM_SYNC_SHADOW_WITH_USER _IO(KVMIO, 0x49) /* Device model IOC */ #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) #define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level) ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace