From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934342AbbDXPuv (ORCPT ); Fri, 24 Apr 2015 11:50:51 -0400 Received: from terminus.zytor.com ([198.137.202.10]:44085 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933175AbbDXPup (ORCPT ); Fri, 24 Apr 2015 11:50:45 -0400 Date: Fri, 24 Apr 2015 08:44:41 -0700 From: tip-bot for Jiang Liu Message-ID: Cc: tglx@linutronix.de, yinghai@kernel.org, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, jiang.liu@linux.intel.com, mingo@kernel.org, david.vrabel@citrix.com, rjw@rjwysocki.net, joro@8bytes.org, tony.luck@intel.com, rdunlap@infradead.org, david.a.cohen@linux.intel.com, hpa@zytor.com, bhelgaas@google.com, benh@kernel.crashing.org, linux@eikelenboom.it, konrad.wilk@oracle.com, bp@alien8.de, sivanich@sgi.com Reply-To: bhelgaas@google.com, benh@kernel.crashing.org, rdunlap@infradead.org, david.a.cohen@linux.intel.com, hpa@zytor.com, sivanich@sgi.com, konrad.wilk@oracle.com, linux@eikelenboom.it, bp@alien8.de, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, jiang.liu@linux.intel.com, tglx@linutronix.de, yinghai@kernel.org, joro@8bytes.org, tony.luck@intel.com, mingo@kernel.org, david.vrabel@citrix.com, rjw@rjwysocki.net In-Reply-To: <1428905519-23704-6-git-send-email-jiang.liu@linux.intel.com> References: <1428905519-23704-6-git-send-email-jiang.liu@linux.intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/apic] x86/uv: Use new irqdomain interfaces to allocate/ free IRQ Git-Commit-ID: 331dd19eee243e1b7e670c5993609121817afeaa 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: 331dd19eee243e1b7e670c5993609121817afeaa Gitweb: http://git.kernel.org/tip/331dd19eee243e1b7e670c5993609121817afeaa Author: Jiang Liu AuthorDate: Mon, 13 Apr 2015 14:11:27 +0800 Committer: Thomas Gleixner CommitDate: Fri, 24 Apr 2015 15:36:48 +0200 x86/uv: Use new irqdomain interfaces to allocate/free IRQ Use new irqdomain interfaces to allocate/free IRQ, so we can remove GENERIC_IRQ_LEGACY_ALLOC_HWIRQ later. Signed-off-by: Jiang Liu Cc: Konrad Rzeszutek Wilk Cc: David Cohen Cc: Sander Eikelenboom Cc: David Vrabel Cc: Tony Luck Cc: Joerg Roedel Cc: Greg Kroah-Hartman Cc: Bjorn Helgaas Cc: Benjamin Herrenschmidt Cc: Rafael J. Wysocki Cc: Randy Dunlap Cc: Yinghai Lu Cc: Borislav Petkov Cc: Dimitri Sivanich Link: http://lkml.kernel.org/r/1428905519-23704-6-git-send-email-jiang.liu@linux.intel.com Signed-off-by: Thomas Gleixner --- arch/x86/platform/uv/uv_irq.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/arch/x86/platform/uv/uv_irq.c b/arch/x86/platform/uv/uv_irq.c index 0ce6736..474912d 100644 --- a/arch/x86/platform/uv/uv_irq.c +++ b/arch/x86/platform/uv/uv_irq.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -130,24 +131,14 @@ static int arch_enable_uv_irq(char *irq_name, unsigned int irq, int cpu, int mmr_blade, unsigned long mmr_offset, int limit) { - const struct cpumask *eligible_cpu = cpumask_of(cpu); struct irq_cfg *cfg = irq_cfg(irq); unsigned long mmr_value; struct uv_IO_APIC_route_entry *entry; - int mmr_pnode, err; - unsigned int dest; + int mmr_pnode; BUILD_BUG_ON(sizeof(struct uv_IO_APIC_route_entry) != sizeof(unsigned long)); - err = assign_irq_vector(irq, cfg, eligible_cpu); - if (err != 0) - return err; - - err = apic->cpu_mask_to_apicid_and(eligible_cpu, eligible_cpu, &dest); - if (err != 0) - return err; - if (limit == UV_AFFINITY_CPU) irq_set_status_flags(irq, IRQ_NO_BALANCING); else @@ -164,7 +155,7 @@ arch_enable_uv_irq(char *irq_name, unsigned int irq, int cpu, int mmr_blade, entry->polarity = 0; entry->trigger = 0; entry->mask = 0; - entry->dest = dest; + entry->dest = cfg->dest_apicid; mmr_pnode = uv_blade_to_pnode(mmr_blade); uv_write_global_mmr64(mmr_pnode, mmr_offset, mmr_value); @@ -238,9 +229,13 @@ uv_set_irq_affinity(struct irq_data *data, const struct cpumask *mask, int uv_setup_irq(char *irq_name, int cpu, int mmr_blade, unsigned long mmr_offset, int limit) { - int ret, irq = irq_alloc_hwirq(uv_blade_to_memory_nid(mmr_blade)); + int ret, irq; + struct irq_alloc_info info; - if (!irq) + init_irq_alloc_info(&info, cpumask_of(cpu)); + irq = irq_domain_alloc_irqs(NULL, 1, uv_blade_to_memory_nid(mmr_blade), + &info); + if (irq <= 0) return -EBUSY; ret = arch_enable_uv_irq(irq_name, irq, cpu, mmr_blade, mmr_offset, @@ -248,7 +243,7 @@ int uv_setup_irq(char *irq_name, int cpu, int mmr_blade, if (ret == irq) uv_set_irq_2_mmr_info(irq, mmr_offset, mmr_blade); else - irq_free_hwirq(irq); + irq_domain_free_irqs(irq, 1); return ret; } @@ -283,6 +278,6 @@ void uv_teardown_irq(unsigned int irq) n = n->rb_right; } spin_unlock_irqrestore(&uv_irq_lock, irqflags); - irq_free_hwirq(irq); + irq_domain_free_irqs(irq, 1); } EXPORT_SYMBOL_GPL(uv_teardown_irq);