Skip to contentSkip to conversation

KVM: add KVM_SYNC_SHADOW_WITH_USER ioctl (v2)

PATCH In review Marcelo Tosatti 3 participants 4 messages Jan 9, 2008 – Jan 12, 2008 2 messages not in the archive

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 KVM: add KVM_SYNC_SHADOW_WITH_USER ioctl (v2)

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

arch/x86/kvm/x86.c +8 -0
Index: 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(&current->mm->mmap_sem);
+		kvm_mmu_zap_all(kvm);
+		up_read(&current->mm->mmap_sem);
+		break;
+	}
 	default:
 		;
 	}
include/linux/kvm.h +2 -0
Index: 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

#1 lore raw
Quoted 4 lines · Marcelo Tosatti

Export nukeing of shadow MMU pages through an ioctl, required for consistency on balloon inflate.

With mmu notifiers (posted two minutes after this) shadow is implicitly synced with userspace. Since it seems to be progressing rapidly, I won't apply this patch in the hope that mmu notifiers can be ready for 2.6.25.

Signature · 8 lines
Any sufficiently difficult bug is indistinguishable from a feature.


-------------------------------------------------------------------------
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

A message that is not in the archive (sent off-list or not yet received): 47891C10.8060803-atKUWr5tajBWk0Htik3J/[email protected]

#3 lore raw
Quoted 10 lines · Avi Kivity
Quoted 4 lines · Marcelo Tosatti

Export nukeing of shadow MMU pages through an ioctl, required for consistency on balloon inflate.

With mmu notifiers (posted two minutes after this) shadow is implicitly synced with userspace. Since it seems to be progressing rapidly, I won't apply this patch in the hope that mmu notifiers can be ready for 2.6.25.

Does that mean that we'll only support ballooning on host kernels > 2.6.25 are you going to do judo with debug registers to implement it for older kernels?

Regards,

Anthony Liguori

-------------------------------------------------------------------------
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

A message that is not in the archive (sent off-list or not yet received): 47892303.6030602-r/[email protected]

#5 lore raw
Quoted 10 lines · Anthony Liguori
Quoted 6 lines
Quoted 1 line

With mmu notifiers (posted two minutes after this) shadow is implicitly synced with userspace. Since it seems to be progressing rapidly, I won't apply this patch in the hope that mmu notifiers can be ready for 2.6.25.

Does that mean that we'll only support ballooning on host kernels > 2.6.25 are you going to do judo with debug registers to implement it for older kernels?

Good question. We may choose not to support it (distros may backport it if they wish), or do some evil hackery, or apply KVM_SYNC_SHADOW_WITH_USER _only_ to the external module.

Signature · 8 lines
Any sufficiently difficult bug is indistinguishable from a feature.


-------------------------------------------------------------------------
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