Bug 132930
Summary: | Disabling IRQ #11 - r128 driver bug | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Bill Shannon <bill.shannon> |
Component: | kernel | Assignee: | Dave Jones <davej> |
Status: | CLOSED DUPLICATE | QA Contact: | Brian Brock <bbrock> |
Severity: | high | Docs Contact: | |
Priority: | medium | ||
Version: | 2 | CC: | djuran, pfrields, wtogami |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | i386 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2006-02-21 19:05:43 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Bill Shannon
2004-09-19 23:15:18 UTC
I've done some more debugging and this is what I've determined. First, I fixed the problem that was preventing me from logging in successfully. That problem was unrelated to this. Now I can login and I can reproduce this problem every time I logout. I built a kernel with some additional debugging information and it appears that the problem occurs just after the r128 driver is told to cleanup and remove its IRQ handler. My theory, which I have not yet proven, is that the device continues to generate interrupts even after the IRQ handler for the device has been removed, which of course means there's no one to handle the interrupt. The driver is clearly trying to disable interrupts for the device, but perhaps it's not working. Not also that the r128 driver in FC1 did not use interrupts. That may explain why FC1 did not have this problem. Ok, I think I've now proven that my ATI Rage 128 device is generating interrupts even after the r128 driver disables interrupts. In r128_driver_irq_uninstall, after it writes to the device to disable interrupts, I set a global variable that says interrupts are disabled. I then use vblank_wait to wait for the next vblank interrupt. If interrupts were really disabled, I would expect vblank_wait to return indicating that the timeout expired. It doesn't, it returns success. In r128_dma_service, if I get an interrupt while the global "interrupts are disabled" flag is set, I increment a counter. After vblank_wait returns in r128_driver_irq_uninstall, I check the count. It indicates that an interrupt was received after interrupts were disabled. To me, that looks like proof that there's something wrong here. Maybe the hardware is broken, or maybe it's just not working the way the driver expects. Or maybe the driver is not doing the right thing to really disable interrupts. Now I need help from someone who actually understands this driver to figure out how to fix this. This bug is the same as the Xorg bug reported at https://bugs.freedesktop.org/show_bug.cgi?id=1886 and https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=138822 The workaround described there (comment out ``Load "dri"'') solved the problem for me. I'm closing this bug as a duplicate of 138822. *** This bug has been marked as a duplicate of 138822 *** Changed to 'CLOSED' state since 'RESOLVED' has been deprecated. |