On 08/10/2015 06:43, Wu, Feng wrote: > Hi Thomas & Paolo, > > What is your option about this patch, Thanks a lot! > > Thanks, > Feng > >>> diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c >>> index 1c58655..90b378d 100644 >>> --- a/kernel/irq/manage.c >>> +++ b/kernel/irq/manage.c >>> @@ -258,37 +258,6 @@ int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m) >>> } >>> EXPORT_SYMBOL_GPL(irq_set_affinity_hint); >>> >>> -/** >>> - * irq_set_vcpu_affinity - Set vcpu affinity for the interrupt >>> - * @irq: interrupt number to set affinity >>> - * @vcpu_info: vCPU specific data >>> - * >>> - * This function uses the vCPU specific data to set the vCPU >>> - * affinity for an irq. The vCPU specific data is passed from >>> - * outside, such as KVM. One example code path is as below: >>> - * KVM -> IOMMU -> irq_set_vcpu_affinity(). >>> - */ >>> -int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info) >>> -{ >>> - unsigned long flags; >>> - struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); >>> - struct irq_data *data; >>> - struct irq_chip *chip; >>> - int ret = -ENOSYS; >>> - >>> - if (!desc) >>> - return -EINVAL; >>> - >>> - data = irq_desc_get_irq_data(desc); >>> - chip = irq_data_get_irq_chip(data); >>> - if (chip && chip->irq_set_vcpu_affinity) >>> - ret = chip->irq_set_vcpu_affinity(data, vcpu_info); >>> - irq_put_desc_unlock(desc, flags); >>> - >>> - return ret; >>> -} >>> -EXPORT_SYMBOL_GPL(irq_set_vcpu_affinity); >>> - >>> static void irq_affinity_notify(struct work_struct *work) >>> { >>> struct irq_affinity_notify *notify = >>> @@ -424,6 +393,37 @@ setup_affinity(struct irq_desc *desc, struct >> cpumask *mask) >>> } >>> #endif >>> >>> +/** >>> + * irq_set_vcpu_affinity - Set vcpu affinity for the interrupt >>> + * @irq: interrupt number to set affinity >>> + * @vcpu_info: vCPU specific data >>> + * >>> + * This function uses the vCPU specific data to set the vCPU >>> + * affinity for an irq. The vCPU specific data is passed from >>> + * outside, such as KVM. One example code path is as below: >>> + * KVM -> IOMMU -> irq_set_vcpu_affinity(). >>> + */ >>> +int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info) >>> +{ >>> + unsigned long flags; >>> + struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); >>> + struct irq_data *data; >>> + struct irq_chip *chip; >>> + int ret = -ENOSYS; >>> + >>> + if (!desc) >>> + return -EINVAL; >>> + >>> + data = irq_desc_get_irq_data(desc); >>> + chip = irq_data_get_irq_chip(data); >>> + if (chip && chip->irq_set_vcpu_affinity) >>> + ret = chip->irq_set_vcpu_affinity(data, vcpu_info); >>> + irq_put_desc_unlock(desc, flags); >>> + >>> + return ret; >>> +} >>> +EXPORT_SYMBOL_GPL(irq_set_vcpu_affinity); >>> + >>> void __disable_irq(struct irq_desc *desc) >>> { >>> if (!desc->depth++) >>> Reviewed-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> Paolo -- 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