From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH] genirq: Move irq_set_vcpu_affinity out of "#ifdef CONFIG_SMP" Date: Fri, 9 Oct 2015 13:18:50 +0200 Message-ID: <5617A29A.8060108@redhat.com> References: <1443860438-144926-1-git-send-email-feng.wu@intel.com> <560F9B8A.6010902@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Cc: "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Jiang Liu To: "Wu, Feng" , "tglx@linutronix.de" Return-path: Received: from mx1.redhat.com ([209.132.183.28]:39705 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755146AbbJILSy (ORCPT ); Fri, 9 Oct 2015 07:18:54 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: 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 Paolo