public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
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/

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox