From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758574AbYEFDAQ (ORCPT ); Mon, 5 May 2008 23:00:16 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752955AbYEFDAB (ORCPT ); Mon, 5 May 2008 23:00:01 -0400 Received: from ausc60ps301.us.dell.com ([143.166.148.206]:50099 "EHLO ausc60ps301.us.dell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752562AbYEFDAA (ORCPT ); Mon, 5 May 2008 23:00:00 -0400 X-IronPort-AV: E=Sophos;i="4.27,440,1204524000"; d="scan'208";a="591339604" Date: Mon, 5 May 2008 21:59:58 -0500 From: Matt Domsch To: stable@kernel.org Cc: Yinghai Lu , Ingo Molnar , Thomas Gleixner , Jesse Barnes , linux-kernel@vger.kernel.org, Michal Schmidt , davej@redhat.com, Andy Gospodarek , john.cagle@hp.com, Greg KH Subject: [PATCH stable] x86 PCI: call dmi_check_pciprobe() Message-ID: <20080506025958.GA26913@auslistsprd01.us.dell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is a backport of the noted commit which is in 2.6.26-rc1 now. This is necessary to enable pci=bfsort automatically on a number of Dell and HP servers, as well as pci=assign-busses for a few other systems, which was broken between 2.6.22 and 2.6.23. commit 0df18ff366853cdf31e5238764ec5c63e6b5a398 Author: Yinghai Lu Date: Mon Apr 14 15:40:37 2008 -0700 x86 PCI: call dmi_check_pciprobe() this change: | commit 08f1c192c3c32797068bfe97738babb3295bbf42 | Author: Muli Ben-Yehuda | Date: Sun Jul 22 00:23:39 2007 +0300 | | x86-64: introduce struct pci_sysdata to facilitate sharing of ->sysdata | | This patch introduces struct pci_sysdata to x86 and x86-64, and | converts the existing two users (NUMA, Calgary) to use it. | | This lays the groundwork for having other users of sysdata, such as | the PCI domains work. | | The Calgary bits are tested, the NUMA bits just look ok. replaces pcibios_scan_root with pci_scan_bus_parented... but in pcibios_scan_root we have a DMI check: dmi_check_system(pciprobe_dmi_table); when when have several peer root buses this could be called multiple times (which is bad), so move that call to pci_access_init(). Signed-off-by: Yinghai Lu Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner Signed-off-by: Jesse Barnes Signed-off-by: Matt Domsch -- Matt Domsch Linux Technology Strategist, Dell Office of the CTO linux.dell.com & www.dell.com/linux diff -urNp --exclude-from=/home/mdomsch/excludes --minimal linux-2.6.25.1.orig/arch/x86/pci/common.c linux-2.6.25.1/arch/x86/pci/common.c --- linux-2.6.25.1.orig/arch/x86/pci/common.c 2008-05-01 16:45:25.000000000 -0500 +++ linux-2.6.25.1/arch/x86/pci/common.c 2008-05-05 20:49:52.000000000 -0500 @@ -372,13 +372,16 @@ static struct dmi_system_id __devinitdat {} }; +void __init dmi_check_pciprobe(void) +{ + dmi_check_system(pciprobe_dmi_table); +} + struct pci_bus * __devinit pcibios_scan_root(int busnum) { struct pci_bus *bus = NULL; struct pci_sysdata *sd; - dmi_check_system(pciprobe_dmi_table); - while ((bus = pci_find_next_bus(bus)) != NULL) { if (bus->number == busnum) { /* Already scanned */ diff -urNp --exclude-from=/home/mdomsch/excludes --minimal linux-2.6.25.1.orig/arch/x86/pci/init.c linux-2.6.25.1/arch/x86/pci/init.c --- linux-2.6.25.1.orig/arch/x86/pci/init.c 2008-05-01 16:45:25.000000000 -0500 +++ linux-2.6.25.1/arch/x86/pci/init.c 2008-05-05 20:51:02.000000000 -0500 @@ -32,6 +32,8 @@ static __init int pci_access_init(void) printk(KERN_ERR "PCI: Fatal: No config space access function found\n"); + dmi_check_pciprobe(); + return 0; } arch_initcall(pci_access_init); diff -urNp --exclude-from=/home/mdomsch/excludes --minimal linux-2.6.25.1.orig/arch/x86/pci/pci.h linux-2.6.25.1/arch/x86/pci/pci.h --- linux-2.6.25.1.orig/arch/x86/pci/pci.h 2008-05-01 16:45:25.000000000 -0500 +++ linux-2.6.25.1/arch/x86/pci/pci.h 2008-05-05 20:50:29.000000000 -0500 @@ -39,6 +39,8 @@ enum pci_bf_sort_state { pci_dmi_bf, }; +extern void __init dmi_check_pciprobe(void); + /* pci-i386.c */ extern unsigned int pcibios_max_latency;