2010-12-14 17:57:19

by Narendra K

[permalink] [raw]
Subject: [PATCH] Enable pci=bfsort by default on future Dell systems

Hello,

This patch enables pci=bfsort by default on future Dell systems.
Please consider for inclusion if acceptable.

From: Jordan Hargrave <[email protected]>
Subject: [PATCH] Enable pci=bfsort by default on future Dell systems

This patch enables pci=bfsort by default on future Dell systems.
It reads SMBIOS type 0xB1 vendor specific record and sets pci=bfsort accordingly.

Offset Name Length Value Description

04 Flags0 Word Varies Bits 9-10
- 10:9 = 00 Unknown
- 10:9 = 01 Breadth First
- 10:9 = 10 Depth First
- 10:9 = 11 Reserved

1. Any time pci=bfsort has to be enabled on a system, we need to add the model
number of the system to the white list. With this patch, that is not required.

2. Typically, model number has to be added to the white list when the system is
under development. With this change, that is not required.

Signed-off-by: Jordan Hargrave <[email protected]>
Signed-off-by: Narendra K <[email protected]>
---
arch/x86/pci/common.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index f7c8a39..5fe7502 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -22,6 +22,7 @@ unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |

unsigned int pci_early_dump_regs;
static int pci_bf_sort;
+static int smbios_type_b1_flag;
int pci_routeirq;
int noioapicquirk;
#ifdef CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS
@@ -185,6 +186,39 @@ static int __devinit set_bf_sort(const struct dmi_system_id *d)
return 0;
}

+static void __devinit read_dmi_type_b1(const struct dmi_header *dm,
+ void *private_data)
+{
+ u8 *d = (u8 *)dm + 4;
+
+ if (dm->type != 0xB1)
+ return;
+ switch (((*(u32 *)d) >> 9) & 0x03) {
+ case 0x00:
+ printk(KERN_INFO "dmi type 0xB1 record - unknown flag\n");
+ break;
+ case 0x01: /* set pci=bfsort */
+ smbios_type_b1_flag = 1;
+ break;
+ case 0x02: /* do not set pci=bfsort */
+ smbios_type_b1_flag = 2;
+ break;
+ default:
+ break;
+ }
+}
+
+static int __devinit find_sort_method(const struct dmi_system_id *d)
+{
+ dmi_walk(read_dmi_type_b1, NULL);
+
+ if (smbios_type_b1_flag == 1) {
+ set_bf_sort(d);
+ return 0;
+ }
+ return -1;
+}
+
/*
* Enable renumbering of PCI bus# ranges to reach all PCI busses (Cardbus)
*/
@@ -213,6 +247,13 @@ static const struct dmi_system_id __devinitconst pciprobe_dmi_table[] = {
},
#endif /* __i386__ */
{
+ .callback = find_sort_method,
+ .ident = "Dell System",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc"),
+ },
+ },
+ {
.callback = set_bf_sort,
.ident = "Dell PowerEdge 1950",
.matches = {
--
1.7.1

--
With regards,
Narendra K-


2010-12-14 19:54:48

by Matt Domsch

[permalink] [raw]
Subject: Re: [PATCH] Enable pci=bfsort by default on future Dell systems

On Tue, Dec 14, 2010 at 09:57:12AM -0800, [email protected] wrote:
> Hello,
>
> This patch enables pci=bfsort by default on future Dell systems.
> Please consider for inclusion if acceptable.
>
> From: Jordan Hargrave <[email protected]>
> Subject: [PATCH] Enable pci=bfsort by default on future Dell systems

You may be asking "why is this necessary with the biosdevname work
going on?". Short story is, yes, biosdevname continues to be the
medium-term strategy, and we are addressing as much as we can in that,
getting into all the distributions future releases, adding it in the
distro installer environments. However, biosdevname adoption has been
slow (I started writing it 5 years ago), and there's a good chance it
won't be picked up by all older distribution releases in Service
Packs, Updates, or the like. By continuing to use the pci=bfsort
workaround, we can more likely get this small patch into older
distribution update relesaes where we are already doing hardware
enablement, as it can only affect future Dell servers, no impact to
existing systems or installations. It also gives flexibility to
current kernels and distribution releases on when they pick up
biosdevname. The two (pci=bfsort and biosdevname) do not conflict in
any way.

So, I encourage adoption of this small kernel patch, and then
encourage distros to pick up biosdevname also.

Thanks,
Matt

--
Matt Domsch
Technology Strategist
Dell | Office of the CTO

2010-12-14 20:12:46

by Matthew Wilcox

[permalink] [raw]
Subject: Re: [PATCH] Enable pci=bfsort by default on future Dell systems

On Tue, Dec 14, 2010 at 01:54:45PM -0600, Matt Domsch wrote:
> You may be asking "why is this necessary with the biosdevname work
> going on?". Short story is, yes, biosdevname continues to be the
> medium-term strategy, and we are addressing as much as we can in that,
> getting into all the distributions future releases, adding it in the
> distro installer environments. However, biosdevname adoption has been
> slow (I started writing it 5 years ago), and there's a good chance it
> won't be picked up by all older distribution releases in Service
> Packs, Updates, or the like. By continuing to use the pci=bfsort
> workaround, we can more likely get this small patch into older
> distribution update relesaes where we are already doing hardware
> enablement, as it can only affect future Dell servers, no impact to
> existing systems or installations. It also gives flexibility to
> current kernels and distribution releases on when they pick up
> biosdevname. The two (pci=bfsort and biosdevname) do not conflict in
> any way.

Actually, how about we introduce a smaller patch that just makes
bfsort the default for all machines with a BIOS date of 2011 or later?
bfsort was what we always intended; it was unintentionally broken for,
what, five years, and the only reason not to revert it was to not break
setups that had come to rely on it.

So just make it the default for all future systems, no matter what
manufacturer.

--
Matthew Wilcox Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."

2010-12-15 02:51:45

by Matt Domsch

[permalink] [raw]
Subject: Re: [PATCH] Enable pci=bfsort by default on future Dell systems

On Tue, Dec 14, 2010 at 01:12:43PM -0700, Matthew Wilcox wrote:
> Actually, how about we introduce a smaller patch that just makes
> bfsort the default for all machines with a BIOS date of 2011 or later?
> bfsort was what we always intended; it was unintentionally broken for,
> what, five years, and the only reason not to revert it was to not break
> setups that had come to rely on it.
>
> So just make it the default for all future systems, no matter what
> manufacturer.

This approach would hit all systems that install a newly issued BIOS
after 2010, which could cause a change in behaviour for such systems.
I don't know how to get a "system manufactured" date or "system first
powered on" date generically (IIRC these might be exposed in
vendor-specific fields on Dell systems).

I'm not opposed, but it could result in a change of behavior for
still-maintained (as evidenced by newly issued BIOSes) systems.

--
Matt Domsch
Technology Strategist
Dell | Office of the CTO

2010-12-17 16:18:36

by Narendra K

[permalink] [raw]
Subject: Re: [PATCH] Enable pci=bfsort by default on future Dell systems

On Tue, Dec 14, 2010 at 11:21:19PM +0530, K, Narendra wrote:
> Hello,
>
> This patch enables pci=bfsort by default on future Dell systems.
> Please consider for inclusion if acceptable.
>
> From: Jordan Hargrave <[email protected]>
> Subject: [PATCH] Enable pci=bfsort by default on future Dell systems
>
> This patch enables pci=bfsort by default on future Dell systems.
> It reads SMBIOS type 0xB1 vendor specific record and sets pci=bfsort accordingly.
>
> Offset Name Length Value Description
>
> 04 Flags0 Word Varies Bits 9-10
> - 10:9 = 00 Unknown
> - 10:9 = 01 Breadth First
> - 10:9 = 10 Depth First
> - 10:9 = 11 Reserved
>
> 1. Any time pci=bfsort has to be enabled on a system, we need to add the model
> number of the system to the white list. With this patch, that is not required.
>
> 2. Typically, model number has to be added to the white list when the system is
> under development. With this change, that is not required.
>
> Signed-off-by: Jordan Hargrave <[email protected]>
> Signed-off-by: Narendra K <[email protected]>
> ---

Hello Jesse,

Please let us know if there are any concerns with this patch. If the
patch is acceptable, please consider it for inclusion.

With regards,
Narendra K

2010-12-17 18:07:09

by Jesse Barnes

[permalink] [raw]
Subject: Re: [PATCH] Enable pci=bfsort by default on future Dell systems

On Fri, 17 Dec 2010 08:17:29 -0800
<[email protected]> wrote:

> On Tue, Dec 14, 2010 at 11:21:19PM +0530, K, Narendra wrote:
> > Hello,
> >
> > This patch enables pci=bfsort by default on future Dell systems.
> > Please consider for inclusion if acceptable.
> >
> > From: Jordan Hargrave <[email protected]>
> > Subject: [PATCH] Enable pci=bfsort by default on future Dell systems
> >
> > This patch enables pci=bfsort by default on future Dell systems.
> > It reads SMBIOS type 0xB1 vendor specific record and sets pci=bfsort accordingly.
> >
> > Offset Name Length Value Description
> >
> > 04 Flags0 Word Varies Bits 9-10
> > - 10:9 = 00 Unknown
> > - 10:9 = 01 Breadth First
> > - 10:9 = 10 Depth First
> > - 10:9 = 11 Reserved
> >
> > 1. Any time pci=bfsort has to be enabled on a system, we need to add the model
> > number of the system to the white list. With this patch, that is not required.
> >
> > 2. Typically, model number has to be added to the white list when the system is
> > under development. With this change, that is not required.
> >
> > Signed-off-by: Jordan Hargrave <[email protected]>
> > Signed-off-by: Narendra K <[email protected]>
> > ---
>
> Hello Jesse,
>
> Please let us know if there are any concerns with this patch. If the
> patch is acceptable, please consider it for inclusion.

Yeah, I don't have a problem with it; I'll queue it up in the -next
branch.

--
Jesse Barnes, Intel Open Source Technology Center

2010-12-20 06:55:09

by Narendra K

[permalink] [raw]
Subject: Re: [PATCH] Enable pci=bfsort by default on future Dell systems

On Fri, Dec 17, 2010 at 11:36:00PM +0530, Jesse Barnes wrote:
> > Hello Jesse,
> >
> > Please let us know if there are any concerns with this patch. If the
> > patch is acceptable, please consider it for inclusion.
>
> Yeah, I don't have a problem with it; I'll queue it up in the -next
> branch.
>

Jesse,

Thank you.

--
With regards,
Narendra K-