From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lb0-f174.google.com ([209.85.217.174]:33141 "EHLO mail-lb0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754452Ab2FTURB convert rfc822-to-8bit (ORCPT ); Wed, 20 Jun 2012 16:17:01 -0400 Received: by lbbgm6 with SMTP id gm6so1082067lbb.19 for ; Wed, 20 Jun 2012 13:16:59 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <20120620193438.GB2248@gmail.com> From: Bjorn Helgaas Date: Wed, 20 Jun 2012 14:16:38 -0600 Message-ID: Subject: Re: SNB PCI root information To: Ulrich Drepper Cc: Ingo Molnar , Yinghai Lu , jbarnes@virtuousgeek.org, Linux Kernel Mailing List , lenb@kernel.org, x86@kernel.org, linux-pci@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-pci-owner@vger.kernel.org List-ID: On Wed, Jun 20, 2012 at 2:04 PM, Ulrich Drepper wrote: > On Wed, Jun 20, 2012 at 3:34 PM, Ingo Molnar wrote: >> I mean, if we create a parameter space that tweaks data then why >> not make it complete and allow *all* firmware data to be >> (optionally) modified, from the kernel boot line? > > If there is proof that BIOSes get it wrong then just use this small > additional patch: It's not a question of "do BIOSes get this wrong?" The question is "what does a user expect to happen when she supplies 'pci=busnum_node=00:00,80:01'?" I contend that the user expects us to use that info whether the BIOS gave us correct info, wrong info, or nothing at all. Normally I'd be glad to munge this all together myself, but I'm feeling a bit swamped, so if anybody wants this, it would help me out to get a single complete patch. > Signed-off-by: Ulrich Drepper > > diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c > index fc09c27..7aceb84 100644 > --- a/arch/x86/pci/acpi.c > +++ b/arch/x86/pci/acpi.c > @@ -387,16 +387,16 @@ struct pci_bus * __devinit > pci_acpi_scan_root(struct acpi_pci_root *root) >                return NULL; >        } > > -       node = -1; > +       node = get_mp_bus_to_node(busnum); >  #ifdef CONFIG_ACPI_NUMA > -       pxm = acpi_get_pxm(device->handle); > -       if (pxm >= 0) > -               node = pxm_to_node(pxm); > -       if (node != -1) > -               set_mp_bus_to_node(busnum, node); > -       else > +       if (node == -1) { > +               pxm = acpi_get_pxm(device->handle); > +               if (pxm >= 0) > +                       node = pxm_to_node(pxm); > +               if (node != -1) > +                       set_mp_bus_to_node(busnum, node); > +       } >  #endif > -               node = get_mp_bus_to_node(busnum); > >        if (node != -1 && !node_online(node)) >                node = -1;