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 <[email protected]>
Cc: Len Brown <[email protected]>
Cc: Jesse Barnes <[email protected]>
---
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,
--
1.7.4.2
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 <[email protected]>
> Cc: Len Brown <[email protected]>
> Cc: Jesse Barnes <[email protected]>
> ---
> 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,
--
js
suse labs
On Tue, 12 Apr 2011 10:48:06 +0200
Jiri Slaby <[email protected]> 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?
--
Jesse Barnes, Intel Open Source Technology Center
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...
--
Matthew Garrett | [email protected]
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,
--
js
suse labs
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...
I changed the irq assignment like (to take the lowest
available/non-conflicting IRQ):
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -557,7 +557,7 @@ static int acpi_pci_link_allocate(struct
* the use of IRQs 9, 10, 11, and >15.
*/
for (i = (link->irq.possible_count - 1); i >= 0; i--) {
- if (acpi_irq_penalty[irq] >
+ if (acpi_irq_penalty[irq] >=
acpi_irq_penalty[link->irq.possible[i]])
irq = link->irq.possible[i];
}
And with this change it works _without_ acpi=noirq.
Does it help somehow?
dmesg then shows a difference like:
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:08: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
-ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 11
-PCI: setting IRQ 11 as level-triggered
-serial 0000:00:09.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, low) ->
IRQ 11
-0000:00:09.0: ttyS4 at I/O 0x1898 (irq = 11) is a 16550A
-0000:00:09.0: ttyS5 at I/O 0x1890 (irq = 11) is a 16550A
+ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
+PCI: setting IRQ 10 as level-triggered
+serial 0000:00:09.0: PCI INT A -> Link[LNKB] -> GSI 10 (level, low) ->
IRQ 10
+0000:00:09.0: ttyS4 at I/O 0x1898 (irq = 10) is a 16550A
+0000:00:09.0: ttyS5 at I/O 0x1890 (irq = 10) is a 16550A
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
+PCI: setting IRQ 11 as level-triggered
serial 0000:00:0b.0: PCI INT A -> Link[LNKA] -> GSI 11 (level, low) ->
IRQ 11
0000:00:0b.0: ttyS6 at I/O 0x18c0 (irq = 11) is a 16550A
0000:00:0b.0: ttyS7 at I/O 0x18b8 (irq = 11) is a 16550A
thanks,
--
js
suse labs