Re: 2.6.8-rc1 and before: IO-APIC + DRI + RTL8139 = Disabling Ethernet IRQ

From: Francois Romieu
Date: Tue Jul 13 2004 - 18:44:11 EST


Auzanneau Gregory <greg@xxxxxxxxxxxx> :
[...]
> [drm] Loading R200 Microcode
> irq 19: nobody cared!
> [<c010732a>] __report_bad_irq+0x2a/0x8b
> [<c0107414>] note_interrupt+0x6f/0x9f
> [<c0107732>] do_IRQ+0x161/0x192
> [<c0105a00>] common_interrupt+0x18/0x20
> handlers:
> [<c0245383>] (rtl8139_interrupt+0x0/0x207)
> Disabling IRQ #19
>
> For the moment I can disabling IO-ACPI, but I'm thinking to change my
> processor with an processor w/HT. So IO-ACPI is enabling by default.
>
> How solve that ?

Shot in the dark (+ quick look into drivers/char/drm):

drivers/char/drm/radeon_irq.c:
[...]
irqreturn_t DRM(irq_handler)( DRM_IRQ_ARGS )
{
drm_device_t *dev = (drm_device_t *) arg;
drm_radeon_private_t *dev_priv =
(drm_radeon_private_t *)dev->dev_private;
u32 stat;

/* Only consider the bits we're interested in - others could be used
* outside the DRM
*/
> stat = RADEON_READ(RADEON_GEN_INT_STATUS)
> & (RADEON_SW_INT_TEST | RADEON_CRTC_VBLANK_STAT);
> if (!stat)
> return IRQ_NONE;

Can you turn the ">" lines into:
stat = RADEON_READ(RADEON_GEN_INT_STATUS);
if (!(stat & (RADEON_SW_INT_TEST | RADEON_CRTC_VBLANK_STAT))) {
int ret = IRQ_NONE;

if (stat & ~(RADEON_SW_INT_TEST | RADEON_CRTC_VBLANK_STAT)) {
DRM_INFO("Bingo !\n");
ret = IRQ_HANDLED;
}
return ret;
}

If it does not work, please send complete dmesg and lspci -vx.

--
Ueimor
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/