From: Hollis Blanchard <hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
To: Carsten Otte <cotte-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
Cc: "kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
"Zhang,
Xiantao" <xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Subject: Re: RFC/patch portability: split kvm_vm_ioctl v3
Date: Fri, 26 Oct 2007 13:32:03 -0500 [thread overview]
Message-ID: <1193423523.31756.61.camel@basalt> (raw)
In-Reply-To: <1193400099.10970.8.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
Acked-by: Hollis Blanchard <hollisb-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
On Fri, 2007-10-26 at 14:01 +0200, Carsten Otte wrote:
> This patch splits kvm_vm_ioctl into archtecture independent parts, and
> x86 specific parts which go to kvm_arch_vcpu_ioctl in x86.c.
> The patch has been updated to current git, and it leaves out memory slot
> registration work which is currently subject to a detailed discussion.
>
> Common ioctls for all architectures are:
> KVM_CREATE_VCPU, KVM_GET_DIRTY_LOG, KVM_SET_USER_MEMORY_REGION
>
> KVM_SET_USER_MEMORY_REGION implementation is no longer moved to x86.c.
> It seems to me that more fine-grained refinement then just moving the
> code is required here.
>
> x86 specific ioctls are:
> KVM_SET_MEMORY_REGION,
> KVM_GET/SET_NR_MMU_PAGES, KVM_SET_MEMORY_ALIAS, KVM_CREATE_IRQCHIP,
> KVM_CREATE_IRQ_LINE, KVM_GET/SET_IRQCHIP
> KVM_SET_TSS_ADDR
>
> KVM_SET_TSS_ADDR has been added to the list of x86 specifics, as Izik's
> commit states it is used for emulating real mode on intel.
>
>
> kvm.h | 7 +
> kvm_main.c | 255
> +-----------------------------------------------------------
> x86.c | 258
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 271 insertions(+), 249 deletions(-)
> Signed-off-by: Carsten Otte <cotte-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
> ---
> diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
> index b08fc9e..438d4a9 100644
> --- a/drivers/kvm/kvm.h
> +++ b/drivers/kvm/kvm.h
> @@ -621,6 +621,13 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
> unsigned int ioctl, unsigned long arg);
> void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
> void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu);
> +int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
> + struct
> + kvm_userspace_memory_region *mem,
> + int user_alloc);
> +long kvm_arch_vm_ioctl(struct file *filp,
> + unsigned int ioctl, unsigned long arg);
> +void kvm_arch_destroy_vm(struct kvm *kvm);
>
> __init void kvm_arch_init(void);
>
> diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
> index 9a3d663..7a85be9 100644
> --- a/drivers/kvm/kvm_main.c
> +++ b/drivers/kvm/kvm_main.c
> @@ -792,36 +792,16 @@ out:
> }
> EXPORT_SYMBOL_GPL(kvm_set_memory_region);
>
> -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)
> {
> if (mem->slot >= KVM_MEMORY_SLOTS)
> return -EINVAL;
> return kvm_set_memory_region(kvm, mem, user_alloc);
> }
>
> -static int kvm_vm_ioctl_set_nr_mmu_pages(struct kvm *kvm,
> - u32 kvm_nr_mmu_pages)
> -{
> - if (kvm_nr_mmu_pages < KVM_MIN_ALLOC_MMU_PAGES)
> - return -EINVAL;
> -
> - mutex_lock(&kvm->lock);
> -
> - kvm_mmu_change_mmu_pages(kvm, kvm_nr_mmu_pages);
> - kvm->n_requested_mmu_pages = kvm_nr_mmu_pages;
> -
> - mutex_unlock(&kvm->lock);
> - return 0;
> -}
> -
> -static int kvm_vm_ioctl_get_nr_mmu_pages(struct kvm *kvm)
> -{
> - return kvm->n_alloc_mmu_pages;
> -}
> -
> /*
> * Get (and clear) the dirty memory log for a memory slot.
> */
> @@ -867,111 +847,6 @@ out:
> return r;
> }
>
> -/*
> - * Set a new alias region. Aliases map a portion of physical memory into
> - * another portion. This is useful for memory windows, for example the PC
> - * VGA region.
> - */
> -static int kvm_vm_ioctl_set_memory_alias(struct kvm *kvm,
> - struct kvm_memory_alias *alias)
> -{
> - int r, n;
> - struct kvm_mem_alias *p;
> -
> - r = -EINVAL;
> - /* General sanity checks */
> - if (alias->memory_size & (PAGE_SIZE - 1))
> - goto out;
> - if (alias->guest_phys_addr & (PAGE_SIZE - 1))
> - goto out;
> - if (alias->slot >= KVM_ALIAS_SLOTS)
> - goto out;
> - if (alias->guest_phys_addr + alias->memory_size
> - < alias->guest_phys_addr)
> - goto out;
> - if (alias->target_phys_addr + alias->memory_size
> - < alias->target_phys_addr)
> - goto out;
> -
> - mutex_lock(&kvm->lock);
> -
> - p = &kvm->aliases[alias->slot];
> - p->base_gfn = alias->guest_phys_addr >> PAGE_SHIFT;
> - p->npages = alias->memory_size >> PAGE_SHIFT;
> - p->target_gfn = alias->target_phys_addr >> PAGE_SHIFT;
> -
> - for (n = KVM_ALIAS_SLOTS; n > 0; --n)
> - if (kvm->aliases[n - 1].npages)
> - break;
> - kvm->naliases = n;
> -
> - kvm_mmu_zap_all(kvm);
> -
> - mutex_unlock(&kvm->lock);
> -
> - return 0;
> -
> -out:
> - return r;
> -}
> -
> -static int kvm_vm_ioctl_get_irqchip(struct kvm *kvm, struct kvm_irqchip *chip)
> -{
> - int r;
> -
> - r = 0;
> - switch (chip->chip_id) {
> - case KVM_IRQCHIP_PIC_MASTER:
> - memcpy(&chip->chip.pic,
> - &pic_irqchip(kvm)->pics[0],
> - sizeof(struct kvm_pic_state));
> - break;
> - case KVM_IRQCHIP_PIC_SLAVE:
> - memcpy(&chip->chip.pic,
> - &pic_irqchip(kvm)->pics[1],
> - sizeof(struct kvm_pic_state));
> - break;
> - case KVM_IRQCHIP_IOAPIC:
> - memcpy(&chip->chip.ioapic,
> - ioapic_irqchip(kvm),
> - sizeof(struct kvm_ioapic_state));
> - break;
> - default:
> - r = -EINVAL;
> - break;
> - }
> - return r;
> -}
> -
> -static int kvm_vm_ioctl_set_irqchip(struct kvm *kvm, struct kvm_irqchip *chip)
> -{
> - int r;
> -
> - r = 0;
> - switch (chip->chip_id) {
> - case KVM_IRQCHIP_PIC_MASTER:
> - memcpy(&pic_irqchip(kvm)->pics[0],
> - &chip->chip.pic,
> - sizeof(struct kvm_pic_state));
> - break;
> - case KVM_IRQCHIP_PIC_SLAVE:
> - memcpy(&pic_irqchip(kvm)->pics[1],
> - &chip->chip.pic,
> - sizeof(struct kvm_pic_state));
> - break;
> - case KVM_IRQCHIP_IOAPIC:
> - memcpy(ioapic_irqchip(kvm),
> - &chip->chip.ioapic,
> - sizeof(struct kvm_ioapic_state));
> - break;
> - default:
> - r = -EINVAL;
> - break;
> - }
> - kvm_pic_update_irq(pic_irqchip(kvm));
> - return r;
> -}
> -
> int is_error_page(struct page *page)
> {
> return page == bad_page;
> @@ -2669,16 +2544,6 @@ static int create_vcpu_fd(struct kvm_vcpu *vcpu)
> return fd;
> }
>
> -static int kvm_vm_ioctl_set_tss_addr(struct kvm *kvm, unsigned long addr)
> -{
> - int ret;
> -
> - if (addr > (unsigned int)(-3 * PAGE_SIZE))
> - return -1;
> - ret = kvm_x86_ops->set_tss_addr(kvm, addr);
> - return ret;
> -}
> -
> /*
> * Creates some virtual cpus. Good luck creating more than one.
> */
> @@ -2972,35 +2837,14 @@ static long kvm_vm_ioctl(struct file *filp,
> {
> struct kvm *kvm = filp->private_data;
> void __user *argp = (void __user *)arg;
> - int r = -EINVAL;
> + int r;
>
> switch (ioctl) {
> - case KVM_SET_TSS_ADDR:
> - r = kvm_vm_ioctl_set_tss_addr(kvm, arg);
> - if (r < 0)
> - goto out;
> - break;
> case KVM_CREATE_VCPU:
> r = kvm_vm_ioctl_create_vcpu(kvm, arg);
> if (r < 0)
> goto out;
> break;
> - case KVM_SET_MEMORY_REGION: {
> - struct kvm_memory_region kvm_mem;
> - struct kvm_userspace_memory_region kvm_userspace_mem;
> -
> - r = -EFAULT;
> - if (copy_from_user(&kvm_mem, argp, sizeof kvm_mem))
> - goto out;
> - kvm_userspace_mem.slot = kvm_mem.slot;
> - kvm_userspace_mem.flags = kvm_mem.flags;
> - kvm_userspace_mem.guest_phys_addr = kvm_mem.guest_phys_addr;
> - kvm_userspace_mem.memory_size = kvm_mem.memory_size;
> - r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem, 0);
> - if (r)
> - goto out;
> - break;
> - }
> case KVM_SET_USER_MEMORY_REGION: {
> struct kvm_userspace_memory_region kvm_userspace_mem;
>
> @@ -3014,14 +2858,6 @@ static long kvm_vm_ioctl(struct file *filp,
> goto out;
> break;
> }
> - case KVM_SET_NR_MMU_PAGES:
> - r = kvm_vm_ioctl_set_nr_mmu_pages(kvm, arg);
> - if (r)
> - goto out;
> - break;
> - case KVM_GET_NR_MMU_PAGES:
> - r = kvm_vm_ioctl_get_nr_mmu_pages(kvm);
> - break;
> case KVM_GET_DIRTY_LOG: {
> struct kvm_dirty_log log;
>
> @@ -3033,87 +2869,8 @@ static long kvm_vm_ioctl(struct file *filp,
> goto out;
> break;
> }
> - case KVM_SET_MEMORY_ALIAS: {
> - struct kvm_memory_alias alias;
> -
> - r = -EFAULT;
> - if (copy_from_user(&alias, argp, sizeof alias))
> - goto out;
> - r = kvm_vm_ioctl_set_memory_alias(kvm, &alias);
> - if (r)
> - goto out;
> - break;
> - }
> - case KVM_CREATE_IRQCHIP:
> - r = -ENOMEM;
> - kvm->vpic = kvm_create_pic(kvm);
> - if (kvm->vpic) {
> - r = kvm_ioapic_init(kvm);
> - if (r) {
> - kfree(kvm->vpic);
> - kvm->vpic = NULL;
> - goto out;
> - }
> - } else
> - goto out;
> - break;
> - case KVM_IRQ_LINE: {
> - struct kvm_irq_level irq_event;
> -
> - r = -EFAULT;
> - if (copy_from_user(&irq_event, argp, sizeof irq_event))
> - goto out;
> - if (irqchip_in_kernel(kvm)) {
> - mutex_lock(&kvm->lock);
> - if (irq_event.irq < 16)
> - kvm_pic_set_irq(pic_irqchip(kvm),
> - irq_event.irq,
> - irq_event.level);
> - kvm_ioapic_set_irq(kvm->vioapic,
> - irq_event.irq,
> - irq_event.level);
> - mutex_unlock(&kvm->lock);
> - r = 0;
> - }
> - break;
> - }
> - case KVM_GET_IRQCHIP: {
> - /* 0: PIC master, 1: PIC slave, 2: IOAPIC */
> - struct kvm_irqchip chip;
> -
> - r = -EFAULT;
> - if (copy_from_user(&chip, argp, sizeof chip))
> - goto out;
> - r = -ENXIO;
> - if (!irqchip_in_kernel(kvm))
> - goto out;
> - r = kvm_vm_ioctl_get_irqchip(kvm, &chip);
> - if (r)
> - goto out;
> - r = -EFAULT;
> - if (copy_to_user(argp, &chip, sizeof chip))
> - goto out;
> - r = 0;
> - break;
> - }
> - case KVM_SET_IRQCHIP: {
> - /* 0: PIC master, 1: PIC slave, 2: IOAPIC */
> - struct kvm_irqchip chip;
> -
> - r = -EFAULT;
> - if (copy_from_user(&chip, argp, sizeof chip))
> - goto out;
> - r = -ENXIO;
> - if (!irqchip_in_kernel(kvm))
> - goto out;
> - r = kvm_vm_ioctl_set_irqchip(kvm, &chip);
> - if (r)
> - goto out;
> - r = 0;
> - break;
> - }
> default:
> - ;
> + r = kvm_arch_vm_ioctl(filp, ioctl, arg);
> }
> out:
> return r;
> diff --git a/drivers/kvm/x86.c b/drivers/kvm/x86.c
> index 1fe209d..b84cb67 100644
> --- a/drivers/kvm/x86.c
> +++ b/drivers/kvm/x86.c
> @@ -300,6 +300,264 @@ out:
> return r;
> }
>
> +static int kvm_vm_ioctl_set_tss_addr(struct kvm *kvm, unsigned long addr)
> +{
> + int ret;
> +
> + if (addr > (unsigned int)(-3 * PAGE_SIZE))
> + return -1;
> + ret = kvm_x86_ops->set_tss_addr(kvm, addr);
> + return ret;
> +}
> +
> +static int kvm_vm_ioctl_set_nr_mmu_pages(struct kvm *kvm,
> + u32 kvm_nr_mmu_pages)
> +{
> + if (kvm_nr_mmu_pages < KVM_MIN_ALLOC_MMU_PAGES)
> + return -EINVAL;
> +
> + mutex_lock(&kvm->lock);
> +
> + kvm_mmu_change_mmu_pages(kvm, kvm_nr_mmu_pages);
> + kvm->n_requested_mmu_pages = kvm_nr_mmu_pages;
> +
> + mutex_unlock(&kvm->lock);
> + return 0;
> +}
> +
> +static int kvm_vm_ioctl_get_nr_mmu_pages(struct kvm *kvm)
> +{
> + return kvm->n_alloc_mmu_pages;
> +}
> +
> +/*
> + * Set a new alias region. Aliases map a portion of physical memory into
> + * another portion. This is useful for memory windows, for example the PC
> + * VGA region.
> + */
> +static int kvm_vm_ioctl_set_memory_alias(struct kvm *kvm,
> + struct kvm_memory_alias *alias)
> +{
> + int r, n;
> + struct kvm_mem_alias *p;
> +
> + r = -EINVAL;
> + /* General sanity checks */
> + if (alias->memory_size & (PAGE_SIZE - 1))
> + goto out;
> + if (alias->guest_phys_addr & (PAGE_SIZE - 1))
> + goto out;
> + if (alias->slot >= KVM_ALIAS_SLOTS)
> + goto out;
> + if (alias->guest_phys_addr + alias->memory_size
> + < alias->guest_phys_addr)
> + goto out;
> + if (alias->target_phys_addr + alias->memory_size
> + < alias->target_phys_addr)
> + goto out;
> +
> + mutex_lock(&kvm->lock);
> +
> + p = &kvm->aliases[alias->slot];
> + p->base_gfn = alias->guest_phys_addr >> PAGE_SHIFT;
> + p->npages = alias->memory_size >> PAGE_SHIFT;
> + p->target_gfn = alias->target_phys_addr >> PAGE_SHIFT;
> +
> + for (n = KVM_ALIAS_SLOTS; n > 0; --n)
> + if (kvm->aliases[n - 1].npages)
> + break;
> + kvm->naliases = n;
> +
> + kvm_mmu_zap_all(kvm);
> +
> + mutex_unlock(&kvm->lock);
> +
> + return 0;
> +
> +out:
> + return r;
> +}
> +
> +static int kvm_vm_ioctl_get_irqchip(struct kvm *kvm, struct kvm_irqchip *chip)
> +{
> + int r;
> +
> + r = 0;
> + switch (chip->chip_id) {
> + case KVM_IRQCHIP_PIC_MASTER:
> + memcpy(&chip->chip.pic,
> + &pic_irqchip(kvm)->pics[0],
> + sizeof(struct kvm_pic_state));
> + break;
> + case KVM_IRQCHIP_PIC_SLAVE:
> + memcpy(&chip->chip.pic,
> + &pic_irqchip(kvm)->pics[1],
> + sizeof(struct kvm_pic_state));
> + break;
> + case KVM_IRQCHIP_IOAPIC:
> + memcpy(&chip->chip.ioapic,
> + ioapic_irqchip(kvm),
> + sizeof(struct kvm_ioapic_state));
> + break;
> + default:
> + r = -EINVAL;
> + break;
> + }
> + return r;
> +}
> +
> +static int kvm_vm_ioctl_set_irqchip(struct kvm *kvm, struct kvm_irqchip *chip)
> +{
> + int r;
> +
> + r = 0;
> + switch (chip->chip_id) {
> + case KVM_IRQCHIP_PIC_MASTER:
> + memcpy(&pic_irqchip(kvm)->pics[0],
> + &chip->chip.pic,
> + sizeof(struct kvm_pic_state));
> + break;
> + case KVM_IRQCHIP_PIC_SLAVE:
> + memcpy(&pic_irqchip(kvm)->pics[1],
> + &chip->chip.pic,
> + sizeof(struct kvm_pic_state));
> + break;
> + case KVM_IRQCHIP_IOAPIC:
> + memcpy(ioapic_irqchip(kvm),
> + &chip->chip.ioapic,
> + sizeof(struct kvm_ioapic_state));
> + break;
> + default:
> + r = -EINVAL;
> + break;
> + }
> + kvm_pic_update_irq(pic_irqchip(kvm));
> + return r;
> +}
> +
> +long kvm_arch_vm_ioctl(struct file *filp,
> + unsigned int ioctl, unsigned long arg)
> +{
> + struct kvm *kvm = filp->private_data;
> + void __user *argp = (void __user *)arg;
> + int r = -EINVAL;
> +
> + switch (ioctl) {
> + case KVM_SET_TSS_ADDR:
> + r = kvm_vm_ioctl_set_tss_addr(kvm, arg);
> + if (r < 0)
> + goto out;
> + break;
> + case KVM_SET_MEMORY_REGION: {
> + struct kvm_memory_region kvm_mem;
> + struct kvm_userspace_memory_region kvm_userspace_mem;
> +
> + r = -EFAULT;
> + if (copy_from_user(&kvm_mem, argp, sizeof kvm_mem))
> + goto out;
> + kvm_userspace_mem.slot = kvm_mem.slot;
> + kvm_userspace_mem.flags = kvm_mem.flags;
> + kvm_userspace_mem.guest_phys_addr = kvm_mem.guest_phys_addr;
> + kvm_userspace_mem.memory_size = kvm_mem.memory_size;
> + r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem, 0);
> + if (r)
> + goto out;
> + break;
> + }
> + case KVM_SET_NR_MMU_PAGES:
> + r = kvm_vm_ioctl_set_nr_mmu_pages(kvm, arg);
> + if (r)
> + goto out;
> + break;
> + case KVM_GET_NR_MMU_PAGES:
> + r = kvm_vm_ioctl_get_nr_mmu_pages(kvm);
> + break;
> + case KVM_SET_MEMORY_ALIAS: {
> + struct kvm_memory_alias alias;
> +
> + r = -EFAULT;
> + if (copy_from_user(&alias, argp, sizeof alias))
> + goto out;
> + r = kvm_vm_ioctl_set_memory_alias(kvm, &alias);
> + if (r)
> + goto out;
> + break;
> + }
> + case KVM_CREATE_IRQCHIP:
> + r = -ENOMEM;
> + kvm->vpic = kvm_create_pic(kvm);
> + if (kvm->vpic) {
> + r = kvm_ioapic_init(kvm);
> + if (r) {
> + kfree(kvm->vpic);
> + kvm->vpic = NULL;
> + goto out;
> + }
> + } else
> + goto out;
> + break;
> + case KVM_IRQ_LINE: {
> + struct kvm_irq_level irq_event;
> +
> + r = -EFAULT;
> + if (copy_from_user(&irq_event, argp, sizeof irq_event))
> + goto out;
> + if (irqchip_in_kernel(kvm)) {
> + mutex_lock(&kvm->lock);
> + if (irq_event.irq < 16)
> + kvm_pic_set_irq(pic_irqchip(kvm),
> + irq_event.irq,
> + irq_event.level);
> + kvm_ioapic_set_irq(kvm->vioapic,
> + irq_event.irq,
> + irq_event.level);
> + mutex_unlock(&kvm->lock);
> + r = 0;
> + }
> + break;
> + }
> + case KVM_GET_IRQCHIP: {
> + /* 0: PIC master, 1: PIC slave, 2: IOAPIC */
> + struct kvm_irqchip chip;
> +
> + r = -EFAULT;
> + if (copy_from_user(&chip, argp, sizeof chip))
> + goto out;
> + r = -ENXIO;
> + if (!irqchip_in_kernel(kvm))
> + goto out;
> + r = kvm_vm_ioctl_get_irqchip(kvm, &chip);
> + if (r)
> + goto out;
> + r = -EFAULT;
> + if (copy_to_user(argp, &chip, sizeof chip))
> + goto out;
> + r = 0;
> + break;
> + }
> + case KVM_SET_IRQCHIP: {
> + /* 0: PIC master, 1: PIC slave, 2: IOAPIC */
> + struct kvm_irqchip chip;
> +
> + r = -EFAULT;
> + if (copy_from_user(&chip, argp, sizeof chip))
> + goto out;
> + r = -ENXIO;
> + if (!irqchip_in_kernel(kvm))
> + goto out;
> + r = kvm_vm_ioctl_set_irqchip(kvm, &chip);
> + if (r)
> + goto out;
> + r = 0;
> + break;
> + }
> + default:
> + ;
> + }
> +out:
> + return r;
> +}
> +
> static __init void kvm_init_msr_list(void)
> {
> u32 dummy[2];
>
>
--
Hollis Blanchard
IBM Linux Technology Center
-------------------------------------------------------------------------
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/
next prev parent reply other threads:[~2007-10-26 18:32 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-12 12:34 RFC/patch portability: split kvm_vm_ioctl Carsten Otte
[not found] ` <1192192452.7630.16.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-10-12 13:37 ` Arnd Bergmann
[not found] ` <200710121537.09238.arnd-r2nGTMty4D4@public.gmane.org>
2007-10-12 13:47 ` Carsten Otte
2007-10-12 15:08 ` Anthony Liguori
[not found] ` <470F8DFD.6030205-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2007-10-13 7:31 ` Carsten Otte
2007-10-13 4:08 ` Zhang, Xiantao
[not found] ` <42DFA526FC41B1429CE7279EF83C6BDC808DB9-wq7ZOvIWXbMAbVU2wMM1CrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-13 7:38 ` Carsten Otte
2007-10-13 7:47 ` Avi Kivity
[not found] ` <471077F9.8000703-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-13 7:52 ` Carsten Otte
2007-10-15 8:18 ` Carsten Otte
[not found] ` <47132260.9030606-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-15 8:30 ` Christian Ehrhardt
2007-10-15 8:32 ` Avi Kivity
2007-10-25 15:48 ` RFC/patch portability: split kvm_vm_ioctl v2 Carsten Otte
[not found] ` <1193327325.8345.9.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-10-25 15:48 ` Izik Eidus
[not found] ` <1193327326.3284.2.camel-siXIhNkUrCXckEVJwWePHtCfPAL7FxvL@public.gmane.org>
2007-10-25 16:22 ` Hollis Blanchard
2007-10-25 16:42 ` Izik Eidus
2007-10-25 22:12 ` Izik Eidus
[not found] ` <472114B6.6080000-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-25 20:51 ` [kvm-ppc-devel] " Hollis Blanchard
2007-10-25 22:58 ` Izik Eidus
[not found] ` <47211F86.1030504-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-26 0:19 ` Izik Eidus
[not found] ` <472132A4.604-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-26 8:17 ` Carsten Otte
2007-10-26 8:12 ` Avi Kivity
[not found] ` <4721A185.1070808-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-26 8:21 ` Carsten Otte
[not found] ` <4721A3A3.8020504-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-26 8:41 ` Carsten Otte
[not found] ` <4721A82A.2040402-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-26 9:22 ` Avi Kivity
[not found] ` <4721B1ED.6040006-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-26 10:30 ` Carsten Otte
[not found] ` <4721C1DB.3040207-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-26 10:36 ` Avi Kivity
[not found] ` <4721C330.3030302-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-26 10:42 ` Carsten Otte
[not found] ` <4721C47E.30800-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-26 10:45 ` Avi Kivity
[not found] ` <4721C53E.1070507-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-26 11:45 ` Carsten Otte
[not found] ` <4721D344.2020508-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-26 11:47 ` Avi Kivity
[not found] ` <4721D3C2.8090407-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-26 12:23 ` Carsten Otte
[not found] ` <4721DC5D.702-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-26 12:31 ` Avi Kivity
2007-10-26 9:08 ` Avi Kivity
2007-10-26 14:35 ` Hollis Blanchard
2007-10-26 14:43 ` Carsten Otte
[not found] ` <4721FD2A.6070504-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-26 19:05 ` Izik Eidus
[not found] ` <47223A85.5020409-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-29 8:04 ` Carsten Otte
2007-10-27 7:59 ` Avi Kivity
[not found] ` <4722EFE1.9060609-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-28 7:39 ` Zhang, Xiantao
[not found] ` <42DFA526FC41B1429CE7279EF83C6BDC8B512C-wq7ZOvIWXbMAbVU2wMM1CrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-28 9:57 ` Avi Kivity
[not found] ` <47245D27.5030105-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-29 8:01 ` Carsten Otte
[not found] ` <47259352.3010109-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-29 8:03 ` Izik Eidus
[not found] ` <1193644998.4484.8.camel-siXIhNkUrCXckEVJwWePHtCfPAL7FxvL@public.gmane.org>
2007-10-29 8:16 ` Carsten Otte
2007-10-26 8:28 ` Carsten Otte
2007-10-26 1:05 ` Zhang, Xiantao
[not found] ` <42DFA526FC41B1429CE7279EF83C6BDC85FD78-wq7ZOvIWXbMAbVU2wMM1CrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-26 14:53 ` Carsten Otte
2007-10-26 12:01 ` RFC/patch portability: split kvm_vm_ioctl v3 Carsten Otte
[not found] ` <1193400099.10970.8.camel-WIxn4w2hgUz3YA32ykw5MLlKpX0K8NHHQQ4Iyu8u01E@public.gmane.org>
2007-10-26 18:32 ` Hollis Blanchard [this message]
2007-10-30 10:51 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A024CEC4D-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-30 11:03 ` Avi Kivity
[not found] ` <47270F9E.5080007-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-30 11:27 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A024CEC54-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-30 11:59 ` Carsten Otte
[not found] ` <47271C9B.1050804-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-30 12:15 ` Avi Kivity
[not found] ` <4727204E.6000606-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-30 12:31 ` Carsten Otte
[not found] ` <47272410.9020502-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-30 12:36 ` Avi Kivity
[not found] ` <47272556.1030901-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-10-30 13:09 ` Carsten Otte
[not found] ` <47272D08.9080501-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-30 13:50 ` Avi Kivity
2007-10-30 15:02 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A024CECA8-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-30 15:57 ` Carsten Otte
[not found] ` <47275450.5010205-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-30 23:10 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A024CECF4-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-31 14:21 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A0250D495-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-11-05 9:00 ` Carsten Otte
[not found] ` <472EDBAF.30000-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-11-05 9:31 ` Arnd Bergmann
[not found] ` <200711051031.10846.arnd-r2nGTMty4D4@public.gmane.org>
2007-11-05 9:46 ` Carsten Otte
[not found] ` <472EE682.9000202-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-11-05 10:03 ` Arnd Bergmann
[not found] ` <200711051104.01061.arnd-r2nGTMty4D4@public.gmane.org>
2007-11-05 10:31 ` Christian Borntraeger
2007-10-30 11:44 ` Carsten Otte
[not found] ` <47271927.9060602-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-30 11:52 ` Avi Kivity
2007-10-30 11:29 ` Carsten Otte
[not found] ` <472715A9.4050201-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2007-10-30 11:35 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A024CEC59-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-10-30 12:18 ` Carsten Otte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1193423523.31756.61.camel@basalt \
--to=hollisb-r/jw6+rmf7hqt0dzr+alfa@public.gmane.org \
--cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
--cc=cotte-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=xiantao.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.