From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756903AbbDXPqX (ORCPT ); Fri, 24 Apr 2015 11:46:23 -0400 Received: from terminus.zytor.com ([198.137.202.10]:43740 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755876AbbDXPqW (ORCPT ); Fri, 24 Apr 2015 11:46:22 -0400 Date: Fri, 24 Apr 2015 08:45:16 -0700 From: tip-bot for Jiang Liu Message-ID: Cc: hpa@zytor.com, konrad.wilk@oracle.com, yinghai@kernel.org, benh@kernel.crashing.org, sivanich@sgi.com, bhelgaas@google.com, mingo@kernel.org, linux-kernel@vger.kernel.org, tglx@linutronix.de, joro@8bytes.org, rjw@rjwysocki.net, jiang.liu@linux.intel.com, tony.luck@intel.com, jroedel@suse.de, rdunlap@infradead.org, linux@eikelenboom.it, bp@alien8.de, gregkh@linuxfoundation.org, david.a.cohen@linux.intel.com, david.vrabel@citrix.com Reply-To: gregkh@linuxfoundation.org, david.vrabel@citrix.com, david.a.cohen@linux.intel.com, bp@alien8.de, linux@eikelenboom.it, rdunlap@infradead.org, jroedel@suse.de, tony.luck@intel.com, joro@8bytes.org, jiang.liu@linux.intel.com, rjw@rjwysocki.net, mingo@kernel.org, bhelgaas@google.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, sivanich@sgi.com, benh@kernel.crashing.org, yinghai@kernel.org, konrad.wilk@oracle.com, hpa@zytor.com In-Reply-To: <1428905519-23704-8-git-send-email-jiang.liu@linux.intel.com> References: <1428905519-23704-8-git-send-email-jiang.liu@linux.intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/apic] x86/dmar: Use new irqdomain interfaces to allocate /free IRQ Git-Commit-ID: a62b32cdd0a6324c959f40b3c9b928b275297066 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: a62b32cdd0a6324c959f40b3c9b928b275297066 Gitweb: http://git.kernel.org/tip/a62b32cdd0a6324c959f40b3c9b928b275297066 Author: Jiang Liu AuthorDate: Mon, 13 Apr 2015 14:11:29 +0800 Committer: Thomas Gleixner CommitDate: Fri, 24 Apr 2015 15:36:48 +0200 x86/dmar: Use new irqdomain interfaces to allocate/free IRQ Use new irqdomain interfaces to allocate/free IRQ for DMAR and interrupt remapping, so we can remove GENERIC_IRQ_LEGACY_ALLOC_HWIRQ later. The private definitions of irq_alloc_hwirqs()/irq_free_hwirqs() are a temporary solution, they will be removed once we have converted the interrupt remapping driver to use irqdomain framework. Signed-off-by: Jiang Liu Cc: Konrad Rzeszutek Wilk Cc: David Cohen Cc: Sander Eikelenboom Cc: David Vrabel Cc: Tony Luck Cc: Greg Kroah-Hartman Cc: iommu@lists.linux-foundation.org Cc: Joerg Roedel Cc: Bjorn Helgaas Cc: Benjamin Herrenschmidt Cc: Rafael J. Wysocki Cc: Randy Dunlap Cc: Yinghai Lu Cc: Borislav Petkov Cc: Dimitri Sivanich Cc: Joerg Roedel Link: http://lkml.kernel.org/r/1428905519-23704-8-git-send-email-jiang.liu@linux.intel.com Signed-off-by: Thomas Gleixner --- arch/x86/include/asm/irq_remapping.h | 4 ++-- arch/x86/kernel/apic/msi.c | 10 ++++++++++ drivers/iommu/irq_remapping.c | 17 +++++++++++++++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index 6224d31..86d897b 100644 --- a/arch/x86/include/asm/irq_remapping.h +++ b/arch/x86/include/asm/irq_remapping.h @@ -99,7 +99,7 @@ static inline bool setup_remapped_irq(int irq, } #endif /* CONFIG_IRQ_REMAP */ -#define dmar_alloc_hwirq() irq_alloc_hwirq(-1) -#define dmar_free_hwirq irq_free_hwirq +extern int dmar_alloc_hwirq(void); +extern void dmar_free_hwirq(int irq); #endif /* __X86_IRQ_REMAPPING_H */ diff --git a/arch/x86/kernel/apic/msi.c b/arch/x86/kernel/apic/msi.c index 76cc2c9..9be7d6d 100644 --- a/arch/x86/kernel/apic/msi.c +++ b/arch/x86/kernel/apic/msi.c @@ -223,6 +223,16 @@ int arch_setup_dmar_msi(unsigned int irq) "edge"); return 0; } + +int dmar_alloc_hwirq(void) +{ + return irq_domain_alloc_irqs(NULL, 1, NUMA_NO_NODE, NULL); +} + +void dmar_free_hwirq(int irq) +{ + irq_domain_free_irqs(irq, 1); +} #endif /* diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c index 390079e..5617150 100644 --- a/drivers/iommu/irq_remapping.c +++ b/drivers/iommu/irq_remapping.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -49,6 +50,18 @@ static void irq_remapping_disable_io_apic(void) disconnect_bsp_APIC(0); } +#ifndef CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ +static unsigned int irq_alloc_hwirqs(int cnt, int node) +{ + return irq_domain_alloc_irqs(NULL, -1, cnt, node, NULL); +} + +static void irq_free_hwirqs(unsigned int from, int cnt) +{ + irq_domain_free_irqs(from, cnt); +} +#endif + static int do_setup_msi_irqs(struct pci_dev *dev, int nvec) { int ret, sub_handle, nvec_pow2, index = 0; @@ -104,7 +117,7 @@ static int do_setup_msix_irqs(struct pci_dev *dev, int nvec) list_for_each_entry(msidesc, &dev->msi_list, list) { - irq = irq_alloc_hwirq(node); + irq = irq_alloc_hwirqs(1, node); if (irq == 0) return -1; @@ -127,7 +140,7 @@ static int do_setup_msix_irqs(struct pci_dev *dev, int nvec) return 0; error: - irq_free_hwirq(irq); + irq_free_hwirqs(irq, 1); return ret; }