From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933174AbbBBTLw (ORCPT ); Mon, 2 Feb 2015 14:11:52 -0500 Received: from mout.kundenserver.de ([212.227.17.13]:54788 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932658AbbBBTLv (ORCPT ); Mon, 2 Feb 2015 14:11:51 -0500 From: Arnd Bergmann To: linux-arm-kernel@lists.infradead.org Cc: Marc Zyngier , Thomas Gleixner , Jiang Liu , Bjorn Helgaas , Andre Przywara , Lorenzo Pieralisi , linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org Subject: Re: [PATCH] PCI: Fix pcibios_update_irq misuse of irq number Date: Mon, 02 Feb 2015 18:02:16 +0100 Message-ID: <4145359.V8A0ARGtXz@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: <1422456683-797-1-git-send-email-marc.zyngier@arm.com> References: <1422456683-797-1-git-send-email-marc.zyngier@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:q5KQkI0la7IXrumh4ZvsM9tyUpEwhrtrjsxPEt9apQMlWXu4rPf xO53z8xN/BIMVi5NQCDYCUlGGSsSTUePJ4Law6AfimOqHo0grsReMpXpRcseBllB4vS+Mc8 x+y40u4opWrELV0uX7D3NnBpZFLoac3SwuyRLWfHak26xp9cz5dtwW8G+2NWHI7gYvw6gOA 29omin1lvHArK+1amKWkw== X-UI-Out-Filterresults: notjunk:1; Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wednesday 28 January 2015 14:51:23 Marc Zyngier wrote: > void __weak pcibios_update_irq(struct pci_dev *dev, int irq) > { > - dev_dbg(&dev->dev, "assigning IRQ %02d\n", irq); > - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); > + struct irq_data *d; > + > + d = irq_get_irq_data(irq); > +#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY > + while (d->parent_data) > + d = d->parent_data; > +#endif > + dev_dbg(&dev->dev, "assigning IRQ %02ld\n", d->hwirq); > + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, d->hwirq); > } I'm puzzled by this. Why is it even important what we write into the config space? Isn't this just an interface between BIOS and OS for systems that rely on the interrupt numbers to be statically assigned before boot? Arnd