diff mbox

[RFC,1/1] ACPI: pci_irq, add PRT_ quirk for IBM Bartolo

Message ID 1302598086-3622-1-git-send-email-jslaby@suse.cz (mailing list archive)
State New, archived
Headers show

Commit Message

Jiri Slaby April 12, 2011, 8:48 a.m. UTC
On IBM Bartolo machines, cards in 00:09.0 are defunct (if use
interrupts). DSDT says that this slot (with function 0, i.e. pin A) is
routed to \_SB_.PCI0.PIB_.LNKB. But it's not, it's wired to LNKC, so
interrupts are misrouted. Add a quirk for this to workaround the
issue.

References: https://bugzilla.novell.com/show_bug.cgi?id=595683
References: https://bugzilla.kernel.org/show_bug.cgi?id=18092

---
Hi,

as Robert Hancock suggested at:
http://lkml.org/lkml/2010/9/7/206

I reported this in bugzilla (the link above). But I got only replies
requesting another infos which I provided. Could anybody look into
the bug and confirm whether this patch is correct or not. And if yes,
could you apply that?

---

Not-signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Len Brown <lenb@kernel.org>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/acpi/pci_irq.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

Comments

Jiri Slaby April 12, 2011, 8:58 a.m. UTC | #1
On 04/12/2011 10:48 AM, Jiri Slaby wrote:
> On IBM Bartolo machines, cards in 00:09.0 are defunct (if use
> interrupts). DSDT says that this slot (with function 0, i.e. pin A) is
> routed to \_SB_.PCI0.PIB_.LNKB. But it's not, it's wired to LNKC, so
> interrupts are misrouted. Add a quirk for this to workaround the
> issue.
> 
> References: https://bugzilla.novell.com/show_bug.cgi?id=595683
> References: https://bugzilla.kernel.org/show_bug.cgi?id=18092
> 
> ---
> Hi,
> 
> as Robert Hancock suggested at:
> http://lkml.org/lkml/2010/9/7/206
> 
> I reported this in bugzilla (the link above). But I got only replies
> requesting another infos which I provided.

BTW. the info is (w/ and w/o acpi=noirq):
acpidump: https://bugzilla.kernel.org/attachment.cgi?id=29332
dmesg w/:  https://bugzilla.kernel.org/attachment.cgi?id=29322
dmesg w/o: https://bugzilla.kernel.org/attachment.cgi?id=29312
lspci w/:  https://bugzilla.kernel.org/attachment.cgi?id=29712
lspci w/o: https://bugzilla.kernel.org/attachment.cgi?id=29902
BIOS PRT w/:  https://bugzilla.kernel.org/attachment.cgi?id=43192
BIOS PRT w/o: https://bugzilla.kernel.org/attachment.cgi?id=43182

> Could anybody look into
> the bug and confirm whether this patch is correct or not. And if yes,
> could you apply that?
> 
> ---
> 
> Not-signed-off-by: Jiri Slaby <jslaby@suse.cz>
> Cc: Len Brown <lenb@kernel.org>
> Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/acpi/pci_irq.c |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
> index f907cfb..e8fb00d 100644
> --- a/drivers/acpi/pci_irq.c
> +++ b/drivers/acpi/pci_irq.c
> @@ -124,6 +124,18 @@ static const struct dmi_system_id hp_t5710[] = {
>  	{ }
>  };
>  
> +/* https://bugzilla.novell.com/show_bug.cgi?id=595683 */
> +static const struct dmi_system_id ibm_bartolo[] = {
> +	{
> +		.ident = "IBM Bartolo",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "IBM CORPORATION"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "4810320"),
> +		},
> +	},
> +	{ }
> +};
> +
>  struct prt_quirk {
>  	const struct dmi_system_id *system;
>  	unsigned int		segment;
> @@ -151,6 +163,9 @@ static const struct prt_quirk prt_quirks[] = {
>  	{ hp_t5710, 0, 0, 1, PCI_INTX_PIN('A'),
>  		"\\_SB_.PCI0.LNK1",
>  		"\\_SB_.PCI0.LNK3"},
> +	{ ibm_bartolo, 0, 0, 9, PCI_INTX_PIN('A'),
> +		"\\_SB_.PCI0.PIB_.LNKB",
> +		"\\_SB_.PCI0.PIB_.LNKC"},
>  };
>  
>  static void do_prt_fixups(struct acpi_prt_entry *entry,

thanks,
Jesse Barnes April 12, 2011, 3:56 p.m. UTC | #2
On Tue, 12 Apr 2011 10:48:06 +0200
Jiri Slaby <jslaby@suse.cz> wrote:

> On IBM Bartolo machines, cards in 00:09.0 are defunct (if use
> interrupts). DSDT says that this slot (with function 0, i.e. pin A) is
> routed to \_SB_.PCI0.PIB_.LNKB. But it's not, it's wired to LNKC, so
> interrupts are misrouted. Add a quirk for this to workaround the
> issue.
> 
> References: https://bugzilla.novell.com/show_bug.cgi?id=595683
> References: https://bugzilla.kernel.org/show_bug.cgi?id=18092
> 
> ---
> Hi,
> 
> as Robert Hancock suggested at:
> http://lkml.org/lkml/2010/9/7/206
> 
> I reported this in bugzilla (the link above). But I got only replies
> requesting another infos which I provided. Could anybody look into
> the bug and confirm whether this patch is correct or not. And if yes,
> could you apply that?

I'll defer to the ACPI experts, Len or Matthew have you checked this
one out?
Matthew Garrett April 12, 2011, 3:59 p.m. UTC | #3
On Tue, Apr 12, 2011 at 08:56:22AM -0700, Jesse Barnes wrote:

> I'll defer to the ACPI experts, Len or Matthew have you checked this
> one out?

Windows appears to work without this, so it seems likely that we're 
doing something wrong in some other sense, but I don't think we have a 
good idea as to what we're doing wrong...
Jiri Slaby April 14, 2011, 9:40 a.m. UTC | #4
On 04/12/2011 05:59 PM, Matthew Garrett wrote:
> On Tue, Apr 12, 2011 at 08:56:22AM -0700, Jesse Barnes wrote:
> 
>> I'll defer to the ACPI experts, Len or Matthew have you checked this
>> one out?
> 
> Windows appears to work without this, so it seems likely that we're 
> doing something wrong in some other sense, but I don't think we have a 
> good idea as to what we're doing wrong...

Is there anything I can do about that? Provide some info, investigate
what a particular code does in the kernel (e.g. acpi_pci_irq_enable) etc.?

thanks,
diff mbox

Patch

diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index f907cfb..e8fb00d 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -124,6 +124,18 @@  static const struct dmi_system_id hp_t5710[] = {
 	{ }
 };
 
+/* https://bugzilla.novell.com/show_bug.cgi?id=595683 */
+static const struct dmi_system_id ibm_bartolo[] = {
+	{
+		.ident = "IBM Bartolo",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "IBM CORPORATION"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "4810320"),
+		},
+	},
+	{ }
+};
+
 struct prt_quirk {
 	const struct dmi_system_id *system;
 	unsigned int		segment;
@@ -151,6 +163,9 @@  static const struct prt_quirk prt_quirks[] = {
 	{ hp_t5710, 0, 0, 1, PCI_INTX_PIN('A'),
 		"\\_SB_.PCI0.LNK1",
 		"\\_SB_.PCI0.LNK3"},
+	{ ibm_bartolo, 0, 0, 9, PCI_INTX_PIN('A'),
+		"\\_SB_.PCI0.PIB_.LNKB",
+		"\\_SB_.PCI0.PIB_.LNKC"},
 };
 
 static void do_prt_fixups(struct acpi_prt_entry *entry,