linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: long <tlnguyen@snoqualmie.dp.intel.com>
To: linux-kernel@vger.kernel.org
Cc: greg@kroah.com, jgarzik@pobox.com, jun.nakajima@intel.com,
	tom.l.nguyen@intel.com, zwane@linuxpower.ca
Subject: MSI fix for buggy PCI/PCI-X hardware
Date: Tue, 9 Sep 2003 08:39:37 -0700	[thread overview]
Message-ID: <200309091539.h89FdbfK023026@snoqualmie.dp.intel.com> (raw)

The latest patches that enable MSI in the Linux kernel were 
sent out a few weeks ago on lkml.  These patches will enable 
MSI support if users rebuild the kernel with CONFIG_PCI_MSI 
set to 'Y'. Option one (default option) enables MSI on 
specific individual PCI/PCI-X MSI-capable devices listed in 
the boot parameter "device_msi=". Users may choose option 
two, which enables MSI on all PCI/PCI-X MSI-capable devices, 
by setting CONFIG_PCI_MSI_ON_SPECIFIC_DEVICES to 'N'. 
Depending on if either option one or option two is selected, 
the kernel detects and enables MSI on requested PCI/PCI-X 
MSI-capable devices. 
 
During testing we have found many currently shipping 
PCI/PCI-X MSI-capable devices have silicon bugs specific to 
MSI support. Most of these will cause system failures when 
MSI is enabled. To filter out MSI buggy hardware requires the 
kernel to detect and disable the MSI support on specific hardware. 
 
The proposed solution is to provide a new API, named "int 
disable_msi(struct pci_dev *dev)", to allow IHV's who have 
shipped PCI/PCI-X hardware that does not work in MSI mode to update 
their software drivers to request the kernel to switch the 
interrupt mode from MSI mode back to IRQ pin-assertion mode. 
There are some reasons to justify this as below:

1) According to the PCI spec 3.0 or latest, the software 
driver is prohibited from directly interfacing with its 
device to switch MSI mode to IRQ pin-assertion mode. 
Consequently, a kernel interface is required since the kernel 
is the only entity permitted to change modes.
 
2) All PCI-Express endpoints require MSI support. These 
endpoints should have MSI enabled automatically by default. 
For PCI/PCI-X hardware that can't use MSI due to hardware bugs,
it is the IHVs' responsibility to update their software drivers to 
request the kernel to disable MSI so the HW can function with MSI 
enabled for all other devices.
 
3) Some PCI/PCI-X MSI-capable hardware devices out there work with 
this patch without requiring any changes to their existing software 
drivers.

I'd appreciate any feedback you have on this proposed solution. 

Thanks,
Long 

             reply	other threads:[~2003-09-09 18:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-09 15:39 long [this message]
2003-09-09 18:41 ` MSI fix for buggy PCI/PCI-X hardware Jeff Garzik
2003-09-09 22:14 Nakajima, Jun
2003-09-09 22:52 ` Jeff Garzik
2003-09-10 21:31   ` Zwane Mwaikambo
2003-09-10  1:26 Nakajima, Jun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200309091539.h89FdbfK023026@snoqualmie.dp.intel.com \
    --to=tlnguyen@snoqualmie.dp.intel.com \
    --cc=greg@kroah.com \
    --cc=jgarzik@pobox.com \
    --cc=jun.nakajima@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tom.l.nguyen@intel.com \
    --cc=zwane@linuxpower.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).