Bug 241257 - HP xw9300 Workstation requires pci=nomsi
HP xw9300 Workstation requires pci=nomsi
Status: CLOSED DUPLICATE of bug 438776
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel (Show other bugs)
5.0
x86_64 Linux
medium Severity medium
: rc
: ---
Assigned To: Andy Gospodarek
Martin Jenner
:
: 234606 (view as bug list)
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2007-05-24 13:18 EDT by Robert Hancock
Modified: 2008-06-19 13:32 EDT (History)
10 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-06-19 13:32:06 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Robert Hancock 2007-05-24 13:18:58 EDT
Description of problem:

It appears that MSI interrupts are broken on this machine. Tried using a
e1000-based PCI Express network adapter in the machine which defaulted to using
MSI. Packets did not get received properly and no interrupts were shown in
/proc/interrupts. Tried with pci=nomsi on kernel command line and card works
properly. May want to further investigate and/or blacklist MSI on this machine.

Version-Release number of selected component (if applicable):

2.6.18-8.1.4.el5

How reproducible:

Every time

Steps to Reproduce:
1. Install MSI-capable PCI Express device
2. try using it..
3.
  
Actual results:

No interrupts are received and device is not functional.

Expected results:

Device works

Additional info:
Comment 2 RHEL Product and Program Management 2007-05-29 15:24:37 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
release.
Comment 3 Prarit Bhargava 2007-05-29 15:47:32 EDT
Robert, what BIOS version are you running?

P.
Comment 4 Prarit Bhargava 2007-05-30 09:47:28 EDT
Adding Doug :)

P.
Comment 5 Prarit Bhargava 2007-05-30 10:07:04 EDT
Tried this on my xw9300.  I see the following error:

ip_tables: (C) 2000-2002 Netfilter core team
e1000: eth0: e1000_request_irq: Unable to allocate MSI interrupt Error: -22
ADDRCONF(NETDEV_UP): eth0: link is not ready
e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
eth0: no IPv6 routers present

Oddly, the interface is brought "up" in spite of the error ...

P.
Comment 6 Prarit Bhargava 2007-05-30 10:19:22 EDT
My PCI layout is:

[root@dhcp83-55 ~]# lspci -t
-+-[0000:80]-+-00.0
 |           +-01.0
 |           \-0e.0-[0000:81]----00.0
 +-[0000:40]-+-01.0-[0000:41]--
 |           +-01.1
 |           +-02.0-[0000:61]--+-06.0
 |           |                 \-06.1
 |           \-02.1
 \-[0000:00]-+-00.0
             +-01.0
             +-01.1
             +-02.0
             +-02.1
             +-04.0
             +-06.0
             +-07.0
             +-08.0
             +-09.0-[0000:05]----05.0
             +-0a.0
             +-0e.0-[0000:0a]----00.0
             +-18.0
             +-18.1
             +-18.2
             +-18.3
             +-19.0
             +-19.1
             +-19.2
             \-19.3
[root@dhcp83-55 ~]# lspci
00:00.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev a3)
00:01.0 ISA bridge: nVidia Corporation CK804 ISA Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation CK804 SMBus (rev a2)
00:02.0 USB Controller: nVidia Corporation CK804 USB Controller (rev a2)
00:02.1 USB Controller: nVidia Corporation CK804 USB Controller (rev a3)
00:04.0 Multimedia audio controller: nVidia Corporation CK804 AC'97 Audio
Controller (rev a2)
00:06.0 IDE interface: nVidia Corporation CK804 IDE (rev f2)
00:07.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)
00:08.0 IDE interface: nVidia Corporation CK804 Serial ATA Controller (rev f3)
00:09.0 PCI bridge: nVidia Corporation CK804 PCI Bridge (rev a2)
00:0a.0 Ethernet controller: nVidia Corporation CK804 Ethernet Controller (rev a3)
00:0e.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron]
HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM
Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron]
Miscellaneous Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron]
HyperTransport Technology Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM
Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron]
Miscellaneous Control
05:05.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A IEEE-1394a-2000
Controller (PHY/Link)
0a:00.0 VGA compatible controller: nVidia Corporation NV44 [GeForce 6200
TurboCache(TM)] (rev a1)
40:01.0 PCI bridge: Advanced Micro Devices [AMD] AMD-8131 PCI-X Bridge (rev 12)
40:01.1 PIC: Advanced Micro Devices [AMD] AMD-8131 PCI-X IOAPIC (rev 01)
40:02.0 PCI bridge: Advanced Micro Devices [AMD] AMD-8131 PCI-X Bridge (rev 12)
40:02.1 PIC: Advanced Micro Devices [AMD] AMD-8131 PCI-X IOAPIC (rev 01)
61:06.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X
Fusion-MPT Dual Ultra320 SCSI (rev 07)
61:06.1 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X
Fusion-MPT Dual Ultra320 SCSI (rev 07)
80:00.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev a3)
80:01.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev a3)
80:0e.0 PCI bridge: nVidia Corporation CK804 PCIE Bridge (rev a3)
81:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet
Controller (rev 06)
[root@dhcp83-55 ~]# 
Comment 7 Prarit Bhargava 2007-05-30 10:20:21 EDT
From dmesg,

PCI: Found HT MSI mapping on 0000:00:0e.0 with capability disabled

So why is the card coming up and requesting MSI?

P.
Comment 8 Prarit Bhargava 2007-05-30 10:26:48 EDT
Ooops -- wrong cut-and-paste.

From dmesg,

PCI: MSI quirk detected. MSI disabled on chipset 0000:80:0e.0.

So why is the card coming up and requesting MSI?  The bridge has disabled MSI,
so this should fail.

P.
Comment 9 Prarit Bhargava 2007-05-30 12:08:56 EDT
Oops .... looks like someone/something re-installed my system.  Ignore comments
5-8, which are from RHEL4.

P.
Comment 10 Prarit Bhargava 2007-05-30 13:38:12 EDT
Okay, after finally getting onto the right kernel I've managed to quickly track
this down.  

We need the patchset beginning at message 2302 in the link below:

http://marc.info/?l=linux-kernel&m=115188796019151&w=2

P.
Comment 11 Robert Hancock 2007-05-31 12:03:22 EDT
FYI, looks like there was a fix made in later kernel versions for this. With
vanilla 2.6.21 I get this output and MSI is disabled automatically:

PCI: Found disabled HT MSI Mapping on 0000:80:0e.0
PCI: Found disabled HT MSI Mapping on 0000:80:00.0
PCI: MSI quirk detected. MSI disabled on chipset 0000:80:0e.0.

This is from this code in drivers/pci/quirks.c:

/* The nVidia CK804 chipset may have 2 HT MSI mappings.
 * MSI are supported if the MSI capability set in any of these mappings.
 */
static void __devinit quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev)
{
	struct pci_dev *pdev;

	if (!dev->subordinate)
		return;

	/* check HT MSI cap on this chipset and the root one.
	 * a single one having MSI is enough to be sure that MSI are supported.
	 */
	pdev = pci_get_slot(dev->bus, 0);
	if (!pdev)
		return;
	if (!msi_ht_cap_enabled(dev) && !msi_ht_cap_enabled(pdev)) {
		printk(KERN_WARNING "PCI: MSI quirk detected. "
		       "MSI disabled on chipset %s.\n",
		       pci_name(dev));
		dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI;
	}
	pci_dev_put(pdev);
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
			quirk_nvidia_ck804_msi_ht_cap);
Comment 13 Prarit Bhargava 2007-05-31 13:35:11 EDT
I guess the actual commits are to gregkh's pci-2.6 tree and were imported here:

http://marc.info/?l=linux-pci&m=115931884922956&w=2

P.
Comment 20 Prarit Bhargava 2007-06-06 11:50:13 EDT
It looks like this can be resolved by the following MSI patches from grekh's
pci-2.6 tree:


commit 3f79e107f72e8efa86cd2f21356692b712713b5c
Author: Brice Goglin <brice@myri.com>
Date:   Thu Aug 31 01:54:56 2006 -0400

    MSI: Cleanup existing MSI quirks
    
    Move MSI quirks in CONFIG_PCI_MSI, document why the serverworks quirk
    does not simply set PCI_BUS_FLAGS_NO_MSI, and create a generic quirk
    for other chipsets where setting PCI_BUS_FLAGS_NO_MSI is fine.

commit 24334a12533e9ac70dcb467ccd629f190afc5361
Author: Brice Goglin <brice@myri.com>
Date:   Thu Aug 31 01:55:07 2006 -0400

    MSI: Factorize common code in pci_msi_supported()
    
    pci_enable_msi() and pci_enable_msix() use the same code to detect
    whether MSI might be enabled on this device. Factorize this code in
    pci_msi_supported(). And improve the documentation about the fact
    that only the root chipset must support MSI, but it is hard to
    find the root bus so we check all parent busses MSI flags.

commit fe97064c2870e174a6ff4a93feb11a70c4b71cc5
Author: Brice Goglin <brice@myri.com>
Date:   Thu Aug 31 01:55:15 2006 -0400

    MSI: Export the PCI_BUS_FLAGS_NO_MSI flag in sysfs
    
    Export the PCI_BUS_FLAGS_NO_MSI flag of a PCI bus in the sysfs files
    of its parent device and make it writable. Could be used to:
    * disable MSI on a device which has not been blacklisted yet
    * allow MSI when some setpci hacks enable MSI support (for instance
      on the ServerWorks HT2000 chipset where the MSI HT cap is disabled
      by default).
    Architecture where some bus have no parent chipset cannot use this
    strategy to change MSI support.
    
    If the chipset does not have a subordinate bus, its 'bus_msi' file
    is empty.
    
    Also document and warn about the possible danger of changing the flag.

commit 46ff34633ed09f36ebc4b5c40ac37e592172df74
Author: Brice Goglin <brice@myri.com>
Date:   Thu Aug 31 01:55:24 2006 -0400

    MSI: Rename PCI_CAP_ID_HT_IRQCONF into PCI_CAP_ID_HT
    
    0x08 is the HT capability, while PCI_CAP_ID_HT_IRQCONF would be
    the subtype 0x80 that mpic_scan_ht_pic() uses.
    Rename PCI_CAP_ID_HT_IRQCONF into PCI_CAP_ID_HT.
    
    And by the way, use it in the ipath driver instead of defining its
    own HT_CAPABILITY_ID.

commit 6397c75cbc4d7dbc3d07278b57c82a47dafb21b5
Author: Brice Goglin <brice@myri.com>
Date:   Thu Aug 31 01:55:32 2006 -0400

    MSI: Blacklist PCI-E chipsets depending on Hypertransport MSI capability
    
    Introduce msi_ht_cap_enabled() to check the MSI capability in the
    Hypertransport configuration space.
    It is used in a generic quirk quirk_msi_ht_cap() to check whether
    MSI is enabled on hypertransport chipset, and a nVidia specific quirk
    quirk_nvidia_ck804_msi_ht_cap() where two 2 HT MSI mappings have to
    be checked.
    Both quirks set the PCI_BUS_FLAGS_NO_MSI bus flag when MSI is disabled.

I've ported them to RHEL5 and will attach them here shortly.  I've tested on the
xw9300 and it fixes the problems with the e1000.

P.
Comment 21 Jeff Garzik 2007-06-06 11:56:48 EDT
RHEL5 needs many MSI-related fixes.  I just posted several to an internal RH
kernel mailing list with the subject "[RHEL5 PATCH prelim] Update ATA, MSI, ICHx
quirks"

This backports what is currently in 2.6.22-rc4.
Comment 22 Prarit Bhargava 2007-06-06 13:13:09 EDT
Thanks jgarzik -- your patchset fixes this issue.  I'm reassigning this to you
so that you can dup to the BZ of your pleasure :)

P.
Comment 23 Andy Gospodarek 2007-08-09 18:13:22 EDT
*** Bug 234606 has been marked as a duplicate of this bug. ***
Comment 24 RHEL Product and Program Management 2007-09-07 15:54:08 EDT
This request was previously evaluated by Red Hat Product Management
for inclusion in the current Red Hat Enterprise Linux release, but
Red Hat was unable to resolve it in time.  This request will be
reviewed for a future Red Hat Enterprise Linux release.
Comment 26 RHEL Product and Program Management 2007-09-10 09:50:40 EDT
This request was previously evaluated by Red Hat Product Management
for inclusion in the current Red Hat Enterprise Linux release, but
Red Hat was unable to resolve it in time.  This request will be
reviewed for a future Red Hat Enterprise Linux release.
Comment 27 Robert Hancock 2008-01-30 16:29:36 EST
Appears to be fixed in Update 1 (2.6.18-53.1.6.el5):

PCI: Found disabled HT MSI Mapping on 0000:80:0e.0
PCI: Found disabled HT MSI Mapping on 0000:80:00.0
PCI: MSI quirk detected. MSI disabled on chipset 0000:80:0e.0.
Comment 28 James Braid 2008-02-04 06:29:58 EST
These patches also disables MSI on DL385 G2 systems (MSI worked fine under
RHEL5, but is now disabled on RHEL5.1) and there seems to be no way to re-enable
it short of backing out the patch. It's disabled on the DL385 G2 due to the
HT1000 chipset being present as far as I can see.

This isn't too optimal for us because it kills the performance of 10 gbe.
Comment 29 Andy Gospodarek 2008-02-04 09:25:26 EST
There is a better solution to the HT1000 problem -- I'll see if I can dig that
up and give you some test kernels.  These 2 patches work that issue out:

commit 1d84b5424efbcce69a1c955ba181147d23d43a14
Author: David Miller <davem@davemloft.net>
Date:   Thu Oct 25 01:15:53 2007 -0700

    PCI: Add MSI quirk for ServerWorks HT1000 PCIX bridge.

    This is the fix for the following problem:

    https://bugzilla.redhat.com/show_bug.cgi?id=227657

    The bnx2 device 5706 complains about MSI not working behind a
    ServerWorks HT1000 PCIX bridge. An earlier commit to fix the problem:

    e3008dedff4bdc96a5f67224cd3d8d12237082a0:

    "PCI: disable MSI by default on systems with Serverworks HT1000 chips"

    was not entirely correct, and has been reverted.

    MSI does not work on the PCIX bus because the BIOS did not set the
    HT_MSI_FLAGS_ENABLE bit in the HyperTransport MSI capability on the
    bridge.  We use the existing quirk_msi_ht_cap() to detect the problem
    and disable MSI in all buses behind it.

    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Cc: Anantha Subramanyam <ananth@broadcom.com>
    Cc: Naren Sankar <nsankar@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 2cc31879f8cfa0efc74fe7e58ab4e01ef5908730
Author: David Miller <davem@davemloft.net>
Date:   Thu Oct 25 01:15:24 2007 -0700

    PCI: Revert "PCI: disable MSI by default on systems with Serverworks HT1000
chips"

    This reverts commit e3008dedff4bdc96a5f67224cd3d8d12237082a0.

    The real bug was an INTX issue in the tg3 ethernet chip, and
    cured by commit c129d962a66c76964954a98b38586ada82cf9381

    Signed-off-by: David S. Miller <davem@davemloft.net>
    Acked-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Comment 31 Andy Gospodarek 2008-02-05 14:41:11 EST
A single patch that will take care of the two upstream ones mentioned in comment
#29 is available here:

http://people.redhat.com/agospoda/rhel5/pci-disable-msi-on-ht1000-only.patch

Test kernels will be available soon and can be found here:

http://people.redhat.com/agospoda/#rhel5

Testing is always appreciated.
Comment 32 Peter Martuccelli 2008-03-31 17:26:50 EDT
Too late to consider this patch for R5.2, moving out to R5.3.  
Comment 33 RHEL Product and Program Management 2008-03-31 17:39:08 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
release.
Comment 35 Prarit Bhargava 2008-06-19 11:36:36 EDT
Andy, I have a xw9300 in my cube.  I'll test using one of your test kernels.

P.
Comment 36 Prarit Bhargava 2008-06-19 13:32:06 EDT
Andy, this seems to fix the problem on the xw9300.  I'm going to mark this a dup
of 438776.



*** This bug has been marked as a duplicate of 438776 ***

Note You need to log in before you can comment on or make changes to this bug.