[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#422077: xserver-xorg: Fatal server error on sparc: xf86MapPciMem failed



Here's a summary of what happen about this PCI breakage during the last
days:

Since umount /sys fixed the problem, it is clear that the bug is in the
sys-based PCI domain code. Jim rebuilt the server using David
Woodhouse's patch [1] which is applied in Fedora and disables the sysfs
code on architecture that don't have PCI domains. However, it didn't fix
anything (apparently because sparc exports domain number 0000 in
/proc/bus/pci/ even if when there is no actual domains).

So Jim replaced the patch with the following one, which disables the
sysfs code on all architectures and it worked:

--- xorg-server-1.3.0.0.dfsg.orig/hw/xfree86/os-support/bus/linuxPci.c	2007-05-10 21:51:55.000000000 +0200
+++ xorg-server-1.3.0.0.dfsg/hw/xfree86/os-support/bus/linuxPci.c	2007-05-10 21:52:13.000000000 +0200
@@ -148,7 +148,7 @@
 	int		domain, bus, dev, func;
 	char		file[64];
 	struct stat	ignored;
-	static int is26 = -1;
+	static int is26 = 0;
 
 	domain = PCI_DOM_FROM_TAG(tag);
 	bus  = PCI_BUS_NO_DOMAIN(PCI_BUS_FROM_TAG(tag));



In the meantime, David Miller told me he needed a patch like this one
and some others (sometimes ugly) to get Xorg and the Radeon driver to
work on his sparc. Mathias Hopf also applies this patch for powerpc in
Suse. By the way, about powerpc, #422095 is probably fixed by this patch
too (since the problem disappears when /sys is umounted).

Upstream did not apply it because they want to fix the sysfs-code
instead of reverting to the old /proc code. However, they didn't say
anything bad about this patch (see [2], comments #21 and below). Also,
Bill Nottingham (who committed the sysfs code) told me that it is just
an optimization and should not fix anything. So disabling it entirely
should be fine. I just tried it on x86 without seeing any breakage.

So, we have different solutions:
a) Always use sysfs, as currently: Breaks at least on sparc, and
probably on powerpc too.
b) No sysfs on any arch: Apply the patch above and assume it won't break
on any arch.
c) No sysfs only when it is known to break in Debian: Apply the patch
above only for sparc to fix #422077 for now, and possibly to powerpc
once somebody confirms that it fixes #422095 too.
d) No sysfs on arch that got problems (not only in Debian): Apply the
patch above for sparc and powerpc, and also [1] since it fixed some
problems in Fedora.

I know some people are afraid of touching the PCI code, but since nobody
found an actual problem with (b), I would vote for (b) and see what
happens (revert to (c) or (d) if something ever breaks).

Thanks again to Jim for spending hours to rebuild the server several
times on his sparc :)
Brice

[1] http://david.woodhou.se/xorg-x11-server-1.2.99-unbreak-domain.patch
[2] https://bugs.freedesktop.org/show_bug.cgi?id=7248





Reply to: