Bug 10138 - HP t5710 builtin radeon interrupt routed incorrectly
HP t5710 builtin radeon interrupt routed incorrectly
Product: ACPI
Classification: Unclassified
Component: Config-Interrupts
All Linux
: P1 normal
Assigned To: Bjorn Helgaas
Depends on:
  Show dependency treegraph
Reported: 2008-02-29 15:29 UTC by Bjorn Helgaas
Modified: 2008-03-14 19:04 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.25-rc3
Tree: Mainline
Regression: ---

kernel workaround (3.89 KB, patch)
2008-02-29 15:30 UTC, Bjorn Helgaas
Details | Diff
version of patch in the tree (4.68 KB, patch)
2008-03-13 12:25 UTC, Len Brown
Details | Diff

Description Bjorn Helgaas 2008-02-29 15:29:26 UTC
Latest working kernel version: none
Earliest failing kernel version: all <= 2.6.25-rc3
Hardware Environment: HP t5710 thin client

The AWRDACPI TM8000 DSDT, OEM revision 0x1003 (4099), has an incorrect _PRT entry for the Radeon video device on the motherboard.  The _PRT claims PCI interrupt 0000:01:00.0[A] is connected to LNK1, but it is really connected to LNK3.

When the X Radeon driver (with DRI enabled) starts, we get a flood of radeon interrupts on IRQ 3, and we eventually disable it, which also kills the USB mouse and keyboard that are also on IRQ 3:

        [drm] Setting GART location based on new memory map
        [drm] writeback test succeeded in 0 usecs
        irq 3: nobody cared (try booting with the "irqpoll" option)
         [<c01042ca>] show_trace_log_lvl+0x1a/0x30
         [<c0104882>] show_trace+0x12/0x20
         [<c0104936>] dump_stack+0x16/0x20
         [<c012d899>] __report_bad_irq+0x39/0x80
         [<c012da58>] note_interrupt+0x178/0x1c0
         [<c012e233>] handle_level_irq+0x73/0xa0
         [<c0105809>] do_IRQ+0x79/0xa0
         [<c0103e3b>] common_interrupt+0x23/0x28
         [<c0149a92>] do_lookup+0x22/0x140
         [<c014ae12>] __link_path_walk+0x252/0x9f0
         [<c014b5f9>] link_path_walk+0x49/0xc0
         [<c014b8d6>] do_path_lookup+0x156/0x170
         [<c014c2c4>] __path_lookup_intent_open+0x44/0x80
         [<c014c381>] path_lookup_open+0x21/0x30
         [<c014c467>] open_namei+0x67/0x540
         [<c0142996>] do_filp_open+0x26/0x40
         [<c01429f3>] do_sys_open+0x43/0xd0
         [<c0142abc>] sys_open+0x1c/0x20
         [<c0103cc4>] syscall_call+0x7/0xb
        [<c02298d0>] (usb_hcd_irq+0x0/0x60)
        [<c02298d0>] (usb_hcd_irq+0x0/0x60)
        Disabling IRQ #3

Patching the DSDT to report LNK3 instead of LNK1 works around the problem, but is obviously not a good solution for end-users.
Comment 1 Bjorn Helgaas 2008-02-29 15:30:55 UTC
Created attachment 15101 [details]
kernel workaround

ACPI quirk to work around broken DSDT
Comment 2 Len Brown 2008-03-12 19:23:43 UTC
patch in comment #1 is in acpi tree
Comment 3 Len Brown 2008-03-13 12:25:11 UTC
Created attachment 15255 [details]
version of patch in the tree

specifically, this version of the patch (from the mailing list)
is in the tree as commit 391df5dce30a5aab477b9e55ea65a3e83bae96b1
Comment 4 Len Brown 2008-03-14 19:04:25 UTC
shipped in linux-2.6.25-rc5-git4

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