Re: [PATCH 01/16] kvm: ioctl for KVM_ASSIGN_DEV_IRQ and KVM_DEASSIGN_DEV_IRQ

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 12 March 2009 21:36:44 Sheng Yang wrote:
> From: Marcelo Tosatti <mtosatti@xxxxxxxxxx>
>
> Signed-off-by: Sheng Yang <sheng@xxxxxxxxxxxxxxx>
Oops.. Should be Marcelo's signed-off here...

-- 
regards
Yang, Sheng

> ---
>  libkvm/libkvm.c |   38 +++++++++++++++++++++++++++++++++++++-
>  libkvm/libkvm.h |   21 +++++++++++++++++----
>  2 files changed, 54 insertions(+), 5 deletions(-)
>
> diff --git a/libkvm/libkvm.c b/libkvm/libkvm.c
> index 0ac1c28..80a0481 100644
> --- a/libkvm/libkvm.c
> +++ b/libkvm/libkvm.c
> @@ -1141,7 +1141,7 @@ int kvm_assign_pci_device(kvm_context_t kvm,
>  	return ret;
>  }
>
> -int kvm_assign_irq(kvm_context_t kvm,
> +static int kvm_old_assign_irq(kvm_context_t kvm,
>  		   struct kvm_assigned_irq *assigned_irq)
>  {
>  	int ret;
> @@ -1152,6 +1152,42 @@ int kvm_assign_irq(kvm_context_t kvm,
>
>  	return ret;
>  }
> +
> +#ifdef KVM_CAP_ASSIGN_DEV_IRQ
> +int kvm_assign_irq(kvm_context_t kvm,
> +		   struct kvm_assigned_irq *assigned_irq)
> +{
> +	int ret;
> +
> +	ret = ioctl(kvm->fd, KVM_CHECK_EXTENSION, KVM_CAP_ASSIGN_DEV_IRQ);
> +	if (ret > 0) {
> +		ret = ioctl(kvm->vm_fd, KVM_ASSIGN_DEV_IRQ, assigned_irq);
> +		if (ret < 0)
> +			return -errno;
> +		return ret;
> +	}
> +
> +	return kvm_old_assign_irq(kvm, assigned_irq);
> +}
> +
> +int kvm_deassign_irq(kvm_context_t kvm,
> +		     struct kvm_assigned_irq *assigned_irq)
> +{
> +	int ret;
> +
> +	ret = ioctl(kvm->vm_fd, KVM_DEASSIGN_DEV_IRQ, assigned_irq);
> +	if (ret < 0)
> +            return -errno;
> +
> +	return ret;
> +}
> +#else
> +int kvm_assign_irq(kvm_context_t kvm,
> +		   struct kvm_assigned_irq *assigned_irq)
> +{
> +	return kvm_old_assign_irq(kvm, assigned_irq);
> +}
> +#endif
>  #endif
>
>  #ifdef KVM_CAP_DEVICE_DEASSIGNMENT
> diff --git a/libkvm/libkvm.h b/libkvm/libkvm.h
> index 0239cb6..3e5efe0 100644
> --- a/libkvm/libkvm.h
> +++ b/libkvm/libkvm.h
> @@ -715,11 +715,10 @@ int kvm_assign_pci_device(kvm_context_t kvm,
>  			  struct kvm_assigned_pci_dev *assigned_dev);
>
>  /*!
> - * \brief Notifies host kernel about changes to IRQ for an assigned device
> + * \brief Assign IRQ for an assigned device
>   *
> - * Used for PCI device assignment, this function notifies the host
> - * kernel about the changes in IRQ number for an assigned physical
> - * PCI device.
> + * Used for PCI device assignment, this function assigns IRQ numbers for
> + * an physical device and guest IRQ handling.
>   *
>   * \param kvm Pointer to the current kvm_context
>   * \param assigned_irq Parameters, like dev id, host irq, guest irq, etc
> @@ -727,6 +726,20 @@ int kvm_assign_pci_device(kvm_context_t kvm,
>  int kvm_assign_irq(kvm_context_t kvm,
>  		   struct kvm_assigned_irq *assigned_irq);
>
> +#ifdef KVM_CAP_ASSIGN_DEV_IRQ
> +/*!
> + * \brief Deassign IRQ for an assigned device
> + *
> + * Used for PCI device assignment, this function deassigns IRQ numbers
> + * for an assigned device.
> + *
> + * \param kvm Pointer to the current kvm_context
> + * \param assigned_irq Parameters, like dev id, host irq, guest irq, etc
> + */
> +int kvm_deassign_irq(kvm_context_t kvm,
> +                   struct kvm_assigned_irq *assigned_irq);
> +#endif
> +
>  /*!
>   * \brief Determines whether destroying memory regions is allowed
>   *


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux