linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* r128 driver problem
@ 2004-11-05  4:34 Bill Shannon
  2004-11-06  0:35 ` Antonino A. Daplas
  0 siblings, 1 reply; 2+ messages in thread
From: Bill Shannon @ 2004-11-05  4:34 UTC (permalink / raw)
  To: linux-fbdev-devel

[-- Attachment #1: Type: text/plain, Size: 356 bytes --]

I'm looking for someone to help me with a problem I'm having with the
r128 driver.  See attached messages for a description of the problem.
I think I've proven that the problem is related to the driver/device,
but I don't know enough about the device and how it works to fix the
problem myself.  Any help would be much appreciated.

Thanks!

	Bill Shannon

[-- Attachment #2: Attached Message --]
[-- Type: message/rfc822, Size: 2503 bytes --]

From: Bill Shannon <bill.shannon@sun.com>
To: keith@tungstengraphics.com, anholt@FreeBSD.org
Subject: r128 driver problems
Date: Wed, 27 Oct 2004 17:46:56 -0700
Message-ID: <41804180.6070602@sun.com>

Hi guys.  I got your names from r128_irq.c.  I'm hoping you can help
me or point me in the right direction.

I upgraded my Dell 4550 from Fedora Core 1 to Fedora Core 2 and I'm
having problems that I reported here:

https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=132930

I've been trying to debug this myself and so far it looks like
as soon as the r128 driver is closed, I get a flood of interrupts
that aren't handled, eventually causing the kernel to disable
IRQ 11.  My theory is that these are VBLANK interrupts from the
video card that are no longer handled because the r128 interrupt
handler has been removed from the IRQ handler list.  It's pretty
clear that the driver is attempting to disable such interrupts
before removing the driver from the list.  I don't know anything
about how this device works so I can't say whether or not it's
doing that correctly.

I've tried hacking the IRQ handler to call back into the r128 driver
when it finds that the IRQ hasn't been handled by any of the drivers
on the list, so that the r128 driver can determine if it was the
cause of the interrupt after all.  Unfortunately, I don't understand
enough about how devices work in Linux (or on x86 hardware) and I
can't seem to get this to work.  As soon as I try to touch the device
the kernel hangs.

I noticed that in FC1 the r128 driver didn't appear to use interrupts.
That seems to be a capability added in the 2.6 kernel, in the r128_irq.c
file that has your names in it!  :-)  So that would explain why FC1 works
fine on the same hardware.

Oh, and I've tried all the frequently recommended tips like booting with
pci=noacpi and acpi=off.  They don't make any difference.

Anyway, I was hoping that one of you might have some idea of what the
problem might be or what I could do to further debug the problem.

Oh yes, the video card is an "ATI Rage 128 Pro Ultra".

Thanks for any help you might offer!

	Bill Shannon


[-- Attachment #3: Attached Message --]
[-- Type: message/rfc822, Size: 2277 bytes --]

From: Bill Shannon <bill.shannon@sun.com>
To: keith@tungstengraphics.com, anholt@FreeBSD.org
Subject: Re: r128 driver problems
Date: Wed, 27 Oct 2004 23:12:09 -0700
Message-ID: <41808DB9.9030900@sun.com>

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.

At this point I need some help.  Are either of you the right
person to help?  If not, can you point me to someone else who
might be able to help?

Thanks much!

	Bill Shannon

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-11-06  0:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-05  4:34 r128 driver problem Bill Shannon
2004-11-06  0:35 ` Antonino A. Daplas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).