"it boots" on ICH7 at least.
Please pull from 'intx' branch of
master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git intx
to receive the following updates:
drivers/pci/msi.c | 12 ++++--------
1 files changed, 4 insertions(+), 8 deletions(-)
Jeff Garzik:
PCI MSI: always toggle legacy-INTx-enable bit upon MSI entry/exit
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 9fc9a34..c2828a3 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -255,10 +255,8 @@ static void enable_msi_mode(struct pci_d
pci_write_config_word(dev, msi_control_reg(pos), control);
dev->msix_enabled = 1;
}
- if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
- /* PCI Express Endpoint device detected */
- pci_intx(dev, 0); /* disable intx */
- }
+
+ pci_intx(dev, 0); /* disable intx */
}
void disable_msi_mode(struct pci_dev *dev, int pos, int type)
@@ -276,10 +274,8 @@ void disable_msi_mode(struct pci_dev *de
pci_write_config_word(dev, msi_control_reg(pos), control);
dev->msix_enabled = 0;
}
- if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
- /* PCI Express Endpoint device detected */
- pci_intx(dev, 1); /* enable intx */
- }
+
+ pci_intx(dev, 1); /* enable intx */
}
static int msi_lookup_irq(struct pci_dev *dev, int type)
On Thu, 7 Dec 2006, Jeff Garzik wrote:
> "it boots" on ICH7 at least.
It solves my problem (and doesn't break anything).
-Daniel
*This .sig left intentionally blank*
On Thu, 7 Dec 2006 17:58:12 -0500
Jeff Garzik <[email protected]> wrote:
>
> "it boots" on ICH7 at least.
That's a rave review ;)
> Please pull from 'intx' branch of
> master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git intx
>
> to receive the following updates:
>
> drivers/pci/msi.c | 12 ++++--------
> 1 files changed, 4 insertions(+), 8 deletions(-)
>
> Jeff Garzik:
> PCI MSI: always toggle legacy-INTx-enable bit upon MSI entry/exit
Why?
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 9fc9a34..c2828a3 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -255,10 +255,8 @@ static void enable_msi_mode(struct pci_d
> pci_write_config_word(dev, msi_control_reg(pos), control);
> dev->msix_enabled = 1;
> }
> - if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
> - /* PCI Express Endpoint device detected */
> - pci_intx(dev, 0); /* disable intx */
> - }
> +
> + pci_intx(dev, 0); /* disable intx */
> }
>
> void disable_msi_mode(struct pci_dev *dev, int pos, int type)
> @@ -276,10 +274,8 @@ void disable_msi_mode(struct pci_dev *de
> pci_write_config_word(dev, msi_control_reg(pos), control);
> dev->msix_enabled = 0;
> }
> - if (pci_find_capability(dev, PCI_CAP_ID_EXP)) {
> - /* PCI Express Endpoint device detected */
> - pci_intx(dev, 1); /* enable intx */
> - }
> +
> + pci_intx(dev, 1); /* enable intx */
> }
>
> static int msi_lookup_irq(struct pci_dev *dev, int type)
On Thu, 7 Dec 2006, Jeff Garzik wrote:
>
> "it boots" on ICH7 at least.
Ok. Pulled, pushed out.
There was some noise saying that this may actually fix the problems with
the NVidia "Intel HDA" sound situation? Can people who saw that issue try
it out whether this just makes MSI works for them?
Takashi added to the To: field, because he hopefully remembers and has a
clue about the proper identities in question.. Iirc, you needed to have
not only a NVidia chipset, but also have the legacy interrupt shared with
some other device to see the problem.
Linus
2006/12/8, Linus Torvalds <[email protected]>:
>
>
> On Thu, 7 Dec 2006, Jeff Garzik wrote:
> >
> > "it boots" on ICH7 at least.
>
> Ok. Pulled, pushed out.
>
> There was some noise saying that this may actually fix the problems with
> the NVidia "Intel HDA" sound situation? Can people who saw that issue try
> it out whether this just makes MSI works for them?
>
> Takashi added to the To: field, because he hopefully remembers and has a
> clue about the proper identities in question.. Iirc, you needed to have
> not only a NVidia chipset, but also have the legacy interrupt shared with
> some other device to see the problem.
Well, I'm on vacation now, so cannot answer much, too :)
IIRC, the problem was with HD-audio and network devices on Nvidia.
The explicit call of pci_intx() (currently implemented in hd-audio
driver locally) helped avoiding the orphan irq problem, but doesn't
fix the MSI problem itself. (Some might have been fixed indeed,
but I don't have reports in hands.)
Takashi