How to detect ongoing activity on PCI/AGP?

From: Pasi Savolainen
Date: Mon Jan 17 2005 - 17:50:52 EST


Hi,
After upgrading my graphics, matrox g400 AGP to radeon rv280 AGP, I
noticed severe horizontal distortions in outputted image (parts move
randomly a pixel-or-two right or left).
I tracked it down to my use of amd76x_pm module, which supposedly
disconnects CPU's (this is 2xK7 SMP) from PCI bus. If I unload the
module or simply make it less aggressive (== effective), horizontal
distortions disappear.
Needless to say, matrox g400 hadn't these.

Similar distortions, although more visible and permanent, can be seen in
this grab from a bt878 card. These are not something new, I always
needed to remove amd76x_pm prior using the TV card.
<http://varg.dyndns.org/psi/random/tvtime-output.jpg.html>
Note that these distorted lines stay that way for a long time, sometimes
over a second, so there's clearly something getting broken while
transferring data via PCI.

So I've been thinking along the lines if there was a way to detect
active transfer on PCI and not do idling thing in amd76x_pm idle(). I
took a look at various places in the kernel, but didn't find anything
that matched.

Closest thing I found was this piece from drivers/pci/pci.c:pci_disable_device
- -
pci_read_config_word(dev, PCI_COMMAND, &pci_command);
if (pci_command & PCI_COMMAND_MASTER) {
- -

dev would likely to be northbridge, but would this work? Is there some
other Right(tm) way to do this?

Thanks,
--
Psi -- <http://www.iki.fi/pasi.savolainen>

-
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/