Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755849AbbHEWTS (ORCPT ); Wed, 5 Aug 2015 18:19:18 -0400 Received: from terminus.zytor.com ([198.137.202.10]:51941 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754019AbbHEWTP (ORCPT ); Wed, 5 Aug 2015 18:19:15 -0400 Date: Wed, 5 Aug 2015 15:19:03 -0700 From: tip-bot for Thomas Gleixner Message-ID: Cc: linux-kernel@vger.kernel.org, mingo@kernel.org, tglx@linutronix.de, hpa@zytor.com, rusty@rustcorp.com.au Reply-To: hpa@zytor.com, tglx@linutronix.de, rusty@rustcorp.com.au, mingo@kernel.org, linux-kernel@vger.kernel.org In-Reply-To: <1438662776-4823-2-git-send-email-rusty@rustcorp.com.au> References: <1438662776-4823-2-git-send-email-rusty@rustcorp.com.au> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/apic] x86/lguest: Do not setup unused irq vectors Git-Commit-ID: ad3f8d5afe503faa78d61a50a1f6eec3afa7c787 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 Content-Length: 3070 Lines: 85 Commit-ID: ad3f8d5afe503faa78d61a50a1f6eec3afa7c787 Gitweb: http://git.kernel.org/tip/ad3f8d5afe503faa78d61a50a1f6eec3afa7c787 Author: Thomas Gleixner AuthorDate: Tue, 4 Aug 2015 14:02:56 +0930 Committer: Thomas Gleixner CommitDate: Thu, 6 Aug 2015 00:14:58 +0200 x86/lguest: Do not setup unused irq vectors No point in assigning the interrupt vectors if there is no interrupt chip installed. Move it to lguest_setup_irq() and call it from lguest_enable_irq. [ rusty: Typo fix and error handling ] Signed-off-by: Thomas Gleixner Signed-off-by: Rusty Russell Link: http://lkml.kernel.org/r/1438662776-4823-2-git-send-email-rusty@rustcorp.com.au Signed-off-by: Thomas Gleixner --- arch/x86/lguest/boot.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index d933a11..2165f45 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c @@ -850,21 +850,29 @@ static int lguest_setup_irq(unsigned int irq) if (err < 0 && err != -EEXIST) return err; + /* + * Tell the Linux infrastructure that the interrupt is + * controlled by our level-based lguest interrupt controller. + */ irq_set_chip_and_handler_name(irq, &lguest_irq_controller, handle_level_irq, "level"); + + /* Some systems map "vectors" to interrupts weirdly. Not us! */ + __this_cpu_write(vector_irq[FIRST_EXTERNAL_VECTOR + irq], irq); return 0; } static int lguest_enable_irq(struct pci_dev *dev) { + int err; u8 line = 0; /* We literally use the PCI interrupt line as the irq number. */ pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &line); - irq_set_chip_and_handler_name(line, &lguest_irq_controller, - handle_level_irq, "level"); - dev->irq = line; - return 0; + err = lguest_setup_irq(line); + if (!err) + dev->irq = line; + return err; } /* We don't do hotplug PCI, so this shouldn't be called. */ @@ -875,17 +883,13 @@ static void lguest_disable_irq(struct pci_dev *dev) /* * This sets up the Interrupt Descriptor Table (IDT) entry for each hardware - * interrupt (except 128, which is used for system calls), and then tells the - * Linux infrastructure that each interrupt is controlled by our level-based - * lguest interrupt controller. + * interrupt (except 128, which is used for system calls). */ static void __init lguest_init_IRQ(void) { unsigned int i; for (i = FIRST_EXTERNAL_VECTOR; i < FIRST_SYSTEM_VECTOR; i++) { - /* Some systems map "vectors" to interrupts weirdly. Not us! */ - __this_cpu_write(vector_irq[i], i - FIRST_EXTERNAL_VECTOR); if (i != IA32_SYSCALL_VECTOR) set_intr_gate(i, irq_entries_start + 8 * (i - FIRST_EXTERNAL_VECTOR)); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/