On Thu, Sep 09, 2004 at 01:21:58PM -0400, Ben Collins wrote:
> I think the patch for sparc to allow scanning the newer style PCI proc
> domain entries has broken 2.4's PCI scanning.
I've attached the patch -- what looks wrong with it?
--
G. Branden Robinson| Reality is what refuses to go away
Debian GNU/Linux | when I stop believing in it.
[EMAIL PROTECTED] | -- Philip K. Dick
http://people.debian.org/~branden/ |
$Id: 049_Xserver_recognize_Linux_2.6_proc_bus_pci.diff 1510 2004-06-04
03:17:34Z branden $
Fix XFree86 X server's PCI bus support code to be able to cope with both
Linux 2.4 and Linux 2.6 styles of organization for /proc/bus/pci,
checking for the 2.6 style first.
This patch by Daniel Seyffer and Ciaran McCreesh.
Not submitted to XFree86.
--- xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c~ 2004-06-03
09:52:19.0 -0500
+++ xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c2004-06-03
09:54:49.0 -0500
@@ -104,6 +104,7 @@
static int lbus,ldev,lfunc,fd = -1;
int bus, dev, func;
charfile[32];
+ struct stat ignored;
bus = PCI_BUS_FROM_TAG(tag);
dev = PCI_DEV_FROM_TAG(tag);
@@ -111,12 +112,21 @@
if (fd == -1 || bus != lbus || dev != ldev || func != lfunc) {
if (fd != -1)
close(fd);
- if (bus < 256)
- sprintf(file, "/proc/bus/pci/%02x/%02x.%1x",
- bus, dev, func);
- else
- sprintf(file, "/proc/bus/pci/%04x/%02x.%1x",
- bus, dev, func);
+ if (bus < 256) {
+ if (stat("/proc/bus/pci/00", &ignored) < 0)
+ sprintf(file,
"/proc/bus/pci/:%02x/%02x.%1x",
+ bus, dev, func);
+ else
+ sprintf(file, "/proc/bus/pci/%02x/%02x.%1x",
+ bus, dev, func);
+ } else {
+ if (stat("/proc/bus/pci/00", &ignored) < 0)
+ sprintf(file,
"/proc/bus/pci/:%04x/%02x.%1x",
+ bus, dev, func);
+ else
+ sprintf(file, "/proc/bus/pci/%04x/%02x.%1x",
+ bus, dev, func);
+ }
fd = open(file,O_RDWR);
lbus = bus;
ldev = dev;
signature.asc
Description: Digital signature