[I side-stepped this problem by replacing my motherboard and CPU,
but I'm following up here in case others find this thread and
could use the additional information.  I thank everyone who
responded for the advice.]

On Wed, Jul 28, 2010 at 06:15:34PM -0700, Chuck Wolber wrote:
> IRQs are supposed to be shared and some are specialized, so
> there is no way to change which one certain devices use. I do
> not think IRQ issues are your problem. I suspect it is actually
> the way your kernel is handing the IO (which may have to do with
> IRQs, but that is not your issue to concern yourself with unless
> you are ready to roll up your sleeves and debug the kernel).
> 
> Quite simply, try another kernel...

I started with whatever kernel Ubuntu installed, and am now
running a mainline kernel.  The Ubuntu [Troubleshooting X freezes,
hangs, and lockups page][1] recommends using [drm-intel-next
mainline kernel builds][2].  I'm running 2.6.34-997-generic
#201006022215 now.

 [1]: <https://wiki.ubuntu.com/X/Troubleshooting/Freeze>
 [2]: <http://kernel.ubuntu.com/~kernel-ppa/mainline/drm-intel-next/>

I never found anything written to
/sys/kernel/debug/dri/0/i915_error_state when X froze.  Disabling
compiz stopped the freezes.

I came across someone's [description][3] of his experiences
troubleshooting a 3ware 9650SE, in which the author wrote, "Avoid
IRQ sharing, the 3Ware card must have its own IRQ line.  Check it
with 'cat /proc/interrupts'. Dont let the card share a PCI I/O
controller with any other heavy-I/O card. Insert it in other
slots."

 [3]: <http://makarevitch.org/rant/raid/>

Taking his advice, I found:

    $ cat /proc/interrupts 
               CPU0       CPU1       
      0:         75          0   IO-APIC-edge      timer
      1:          9       4078   IO-APIC-edge      i8042
      4:          2          0   IO-APIC-edge    
      8:          1          0   IO-APIC-edge      rtc0
      9:          0          0   IO-APIC-fasteoi   acpi
     12:       2129     356381   IO-APIC-edge      i8042
     14:          0          0   IO-APIC-edge      ata_piix
     15:          0          0   IO-APIC-edge      ata_piix
     16:     200002          0   IO-APIC-fasteoi   uhci_hcd:usb5, i915, 3w-9xxx
     18:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4
     19:          0          0   IO-APIC-fasteoi   ata_piix, uhci_hcd:usb3
     20:         58      38482   IO-APIC-fasteoi   eth0
     23:        506     353870   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2
     41:       1100          0   PCI-MSI-edge      hda_intel
    NMI:          0          0   Non-maskable interrupts
    LOC:    2415728    2433600   Local timer interrupts
    SPU:          0          0   Spurious interrupts
    PMI:          0          0   Performance monitoring interrupts
    PND:          0          0   Performance pending work
    RES:       5215       7095   Rescheduling interrupts
    CAL:         87         64   Function call interrupts
    TLB:         70         67   TLB shootdowns
    TRM:          0          0   Thermal event interrupts
    THR:          0          0   Threshold APIC interrupts
    MCE:          0          0   Machine check exceptions
    MCP:         32         32   Machine check polls
    ERR:          1
    MIS:          0

Seeing that line for IRQ 16 was a relief, as I figured it was an
indication I'd found the root of both my video and hard disk problems.

Dmesg shows:

    [ 7281.326373] irq 16: nobody cared (try booting with the "irqpoll" option)
    [ 7281.326381] Pid: 366, comm: udevd Not tainted 2.6.34-997-generic 
#201006022215
    [ 7281.326383] Call Trace:
    [ 7281.326393]  [<c01a84ac>] __report_bad_irq+0x2c/0x90
    [ 7281.326398]  [<c01a8624>] note_interrupt+0xe4/0x120
    [ 7281.326402]  [<c01a8f44>] handle_fasteoi_irq+0x84/0xe0
    [ 7281.326406]  [<c0104abf>] handle_irq+0x1f/0x30
    [ 7281.326411]  [<c05b32fb>] do_IRQ+0x4b/0xc0
    [ 7281.326416]  [<c0156639>] ? irq_exit+0x39/0x80
    [ 7281.326420]  [<c05b3304>] ? do_IRQ+0x54/0xc0
    [ 7281.326423]  [<c01032f0>] common_interrupt+0x30/0x40
    [ 7281.326428]  [<c05a007b>] ? pci_ni8430_exit+0x2b/0x70
    [ 7281.326433]  [<c012f84d>] ? __ticket_spin_lock+0xd/0x20
    [ 7281.326437]  [<c05ac41d>] _raw_spin_lock+0xd/0x10
    [ 7281.326442]  [<c0550d31>] unix_peer_get+0x21/0x50
    [ 7281.326445]  [<c0552bdd>] unix_dgram_poll+0xed/0x170
    [ 7281.326450]  [<c04c8474>] sock_poll+0x14/0x20
    [ 7281.326454]  [<c0222dbd>] do_poll+0xdd/0x250
    [ 7281.326458]  [<c012f8e8>] ? default_spin_lock_flags+0x8/0x10
    [ 7281.326462]  [<c0223069>] do_sys_poll+0x139/0x1b0
    [ 7281.326466]  [<c0222ad0>] ? __pollwait+0x0/0x70
    [ 7281.326470]  [<c0222b90>] ? pollwake+0x0/0x40
    [ 7281.326473]  [<c0222b90>] ? pollwake+0x0/0x40
    [ 7281.326476]  [<c0222b90>] ? pollwake+0x0/0x40
    [ 7281.326481]  [<c0147402>] ? update_curr+0x102/0x1b0
    [ 7281.326485]  [<c013e13f>] ? __enqueue_entity+0x8f/0xb0
    [ 7281.326489]  [<c0142752>] ? resched_task+0x22/0x70
    [ 7281.326493]  [<c0147a99>] ? check_preempt_wakeup+0xc9/0x110
    [ 7281.326497]  [<c014bc32>] ? try_to_wake_up+0xa2/0x370
    [ 7281.326501]  [<c014bf10>] ? default_wake_function+0x10/0x20
    [ 7281.326505]  [<c016c42b>] ? autoremove_wake_function+0x1b/0x40
    [ 7281.326510]  [<c01390d8>] ? __wake_up_common+0x48/0x70
    [ 7281.326514]  [<c013db25>] ? __wake_up+0x45/0x60
    [ 7281.326517]  [<c01687ed>] ? insert_work+0x5d/0x90
    [ 7281.326521]  [<c05ac44f>] ? _raw_spin_lock_irqsave+0x2f/0x50
    [ 7281.326525]  [<c012f8e8>] ? default_spin_lock_flags+0x8/0x10
    [ 7281.326529]  [<c05ac44f>] ? _raw_spin_lock_irqsave+0x2f/0x50
    [ 7281.326551]  [<f82ec360>] ? i915_driver_irq_handler+0x210/0x420 [i915]
    [ 7281.326567]  [<f82ec360>] ? i915_driver_irq_handler+0x210/0x420 [i915]
    [ 7281.326571]  [<c012f8e8>] ? default_spin_lock_flags+0x8/0x10
    [ 7281.326575]  [<c05ac44f>] ? _raw_spin_lock_irqsave+0x2f/0x50
    [ 7281.326579]  [<c012f8e8>] ? default_spin_lock_flags+0x8/0x10
    [ 7281.326583]  [<c05ac44f>] ? _raw_spin_lock_irqsave+0x2f/0x50
    [ 7281.326598]  [<f82ec360>] ? i915_driver_irq_handler+0x210/0x420 [i915]
    [ 7281.326602]  [<c05ac41d>] ? _raw_spin_lock+0xd/0x10
    [ 7281.326606]  [<c012f8e8>] ? default_spin_lock_flags+0x8/0x10
    [ 7281.326610]  [<c05ac44f>] ? _raw_spin_lock_irqsave+0x2f/0x50
    [ 7281.326625]  [<f82ec360>] ? i915_driver_irq_handler+0x210/0x420 [i915]
    [ 7281.326629]  [<c05ac41d>] ? _raw_spin_lock+0xd/0x10
    [ 7281.326638]  [<f80414f9>] ? twa_interrupt+0x49/0x4a0 [3w_9xxx]
    [ 7281.326643]  [<c0154fd9>] ? timespec_add_safe+0x39/0x60
    [ 7281.326647]  [<c02224d3>] ? poll_select_set_timeout+0x83/0x90
    [ 7281.326651]  [<c0223139>] sys_poll+0x59/0xc0
    [ 7281.326654]  [<c0102d23>] sysenter_do_call+0x12/0x28
    [ 7281.326657] handlers:
    [ 7281.326659] [<c0453a90>] (usb_hcd_irq+0x0/0x90)
    [ 7281.326664] [<f82ec150>] (i915_driver_irq_handler+0x0/0x420 [i915])
    [ 7281.326678] [<f80414b0>] (twa_interrupt+0x0/0x4a0 [3w_9xxx])
    [ 7281.326687] Disabling IRQ #16

-- 
Phil Mocek

Reply via email to