linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] PCI: Work around Stratus ftServer broken PCIe hierarchy
@ 2012-12-19 21:50 Myron Stowe
  2012-12-20 21:46 ` Bjorn Helgaas
  0 siblings, 1 reply; 2+ messages in thread
From: Myron Stowe @ 2012-12-19 21:50 UTC (permalink / raw)
  To: bhelgaas
  Cc: linux-pci, astarta, ddutile, james.paradis, matthew.r.wilcox,
	prarit, linux-kernel

Recently, another report surfaced indicating Stratus ftServer platforms
were exhibiting similar failures as has occurred in the past [1].

  In late 2011 we started seeing issues with Stratus ftServer systems.
  The typical failure was that USB and network devices were not being
  seen.  Research uncovered that the failure was due to the platform's PCI
  Express hierarchy  not conforming to the PCI Express specification [2]
  which commit f07852d exposed.

  The following are known Stratus ftServer platforms whose PCI hierarchies
  are broken:

  Stratus ftServer ????
  +-07.0-[01-76]--+-00.0-[02-76]--+-00.0-[03-3c]--+-00.0-[04-09]..
                                                  \-01.0-[0a-0d]--+-[USB]
                                                                  +-[NIC]
                                                                  +-..

  Stratus ftServer 6400
  [0000:00]-+-...-00.0-[03]-00.0-[04]-+-00.0-[05]---00.0-[06]..
            |  |                      |
            |  |                      \-01.0-[2c]-+-00.0 [USB]
            |  |                                  +-00.1 [USB]
            |  |                                  \-1f.0 [ISA]

  Stratus ftServer 4500
  Stratus ftServer 6310

  As a solution, commit 284f5f9 was introduced.

Looking into this again it looks as if the quirk introduced in 284f5f9 is
not making the correct DMI based check.  This patch fixes the DMI 'vendor'
based check to match "Stratus", not "ftServer".  It also augments the
checking to include matching the DMI based 'product name' to "ftServer".
This quirk should now trigger for all Stratus ftServer platforms which I
was able to confirm by testing on a Stratus ftServer 6400 system with the
following 'dmidecode' output:
  System Information
        Manufacturer: Stratus
        Product Name: ftServer 6400

[1] https://bugzilla.kernel.org/show_bug.cgi?id=51331
[2] PCI Express specification, r3.0, Section 7.3.1

Reported-by: Fadeeva Marina <astarta@rat.ru>
Signed-off-by: Myron Stowe <myron.stowe@redhat.com>
---

 arch/x86/pci/common.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 720e973..487d9f3 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -433,7 +433,8 @@ static const struct dmi_system_id __devinitconst pciprobe_dmi_table[] = {
 		.callback = set_scan_all,
 		.ident = "Stratus/NEC ftServer",
 		.matches = {
-			DMI_MATCH(DMI_SYS_VENDOR, "ftServer"),
+			DMI_MATCH(DMI_SYS_VENDOR, "Stratus"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "ftServer"),
 		},
 	},
 	{}


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] PCI: Work around Stratus ftServer broken PCIe hierarchy
  2012-12-19 21:50 [PATCH] PCI: Work around Stratus ftServer broken PCIe hierarchy Myron Stowe
@ 2012-12-20 21:46 ` Bjorn Helgaas
  0 siblings, 0 replies; 2+ messages in thread
From: Bjorn Helgaas @ 2012-12-20 21:46 UTC (permalink / raw)
  To: Myron Stowe
  Cc: linux-pci, astarta, ddutile, james.paradis, matthew.r.wilcox,
	prarit, linux-kernel

On Wed, Dec 19, 2012 at 2:50 PM, Myron Stowe <myron.stowe@redhat.com> wrote:
> Recently, another report surfaced indicating Stratus ftServer platforms
> were exhibiting similar failures as has occurred in the past [1].
>
>   In late 2011 we started seeing issues with Stratus ftServer systems.
>   The typical failure was that USB and network devices were not being
>   seen.  Research uncovered that the failure was due to the platform's PCI
>   Express hierarchy  not conforming to the PCI Express specification [2]
>   which commit f07852d exposed.
>
>   The following are known Stratus ftServer platforms whose PCI hierarchies
>   are broken:
>
>   Stratus ftServer ????
>   +-07.0-[01-76]--+-00.0-[02-76]--+-00.0-[03-3c]--+-00.0-[04-09]..
>                                                   \-01.0-[0a-0d]--+-[USB]
>                                                                   +-[NIC]
>                                                                   +-..
>
>   Stratus ftServer 6400
>   [0000:00]-+-...-00.0-[03]-00.0-[04]-+-00.0-[05]---00.0-[06]..
>             |  |                      |
>             |  |                      \-01.0-[2c]-+-00.0 [USB]
>             |  |                                  +-00.1 [USB]
>             |  |                                  \-1f.0 [ISA]
>
>   Stratus ftServer 4500
>   Stratus ftServer 6310
>
>   As a solution, commit 284f5f9 was introduced.
>
> Looking into this again it looks as if the quirk introduced in 284f5f9 is
> not making the correct DMI based check.  This patch fixes the DMI 'vendor'
> based check to match "Stratus", not "ftServer".  It also augments the
> checking to include matching the DMI based 'product name' to "ftServer".
> This quirk should now trigger for all Stratus ftServer platforms which I
> was able to confirm by testing on a Stratus ftServer 6400 system with the
> following 'dmidecode' output:
>   System Information
>         Manufacturer: Stratus
>         Product Name: ftServer 6400
>
> [1] https://bugzilla.kernel.org/show_bug.cgi?id=51331
> [2] PCI Express specification, r3.0, Section 7.3.1
>
> Reported-by: Fadeeva Marina <astarta@rat.ru>
> Signed-off-by: Myron Stowe <myron.stowe@redhat.com>
> ---
>
>  arch/x86/pci/common.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
> index 720e973..487d9f3 100644
> --- a/arch/x86/pci/common.c
> +++ b/arch/x86/pci/common.c
> @@ -433,7 +433,8 @@ static const struct dmi_system_id __devinitconst pciprobe_dmi_table[] = {
>                 .callback = set_scan_all,
>                 .ident = "Stratus/NEC ftServer",
>                 .matches = {
> -                       DMI_MATCH(DMI_SYS_VENDOR, "ftServer"),
> +                       DMI_MATCH(DMI_SYS_VENDOR, "Stratus"),
> +                       DMI_MATCH(DMI_PRODUCT_NAME, "ftServer"),
>                 },
>         },
>         {}
>

I added this to my pci/for-3.8 branch, which I'll ask Linus to pull
soon after v3.8-rc1.  Thanks!

Bjorn

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-12-20 21:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-19 21:50 [PATCH] PCI: Work around Stratus ftServer broken PCIe hierarchy Myron Stowe
2012-12-20 21:46 ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).