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

X Strike Force XFree86 SVN commit: r2031 - in trunk/debian: . patches



Author: branden
Date: 2004-11-18 14:30:09 -0500 (Thu, 18 Nov 2004)
New Revision: 2031

Modified:
   trunk/debian/CHANGESETS
   trunk/debian/TODO
   trunk/debian/changelog
   trunk/debian/patches/049_Xserver_recognize_Linux_2.6_proc_bus_pci.diff
Log:
Apply patch from David Mosberger that replaces the fix for #225526 with
one that works on systems that do not have a PCI bus numbered 0.  Thanks,
David!  (Closes: #279436)

Correct changeset number.


Modified: trunk/debian/CHANGESETS
===================================================================
--- trunk/debian/CHANGESETS	2004-11-17 21:48:32 UTC (rev 2030)
+++ trunk/debian/CHANGESETS	2004-11-18 19:30:09 UTC (rev 2031)
@@ -10,7 +10,7 @@
 
 Miscellaneous cosmetic fixes.
     1915, 1916, 1919, 1920, 1932, 1934, 1940, 1951, 1960, 2008, 2014, 2015,
-    2016, 2020, 2021, 2022, 2028, 2029
+    2016, 2020, 2021, 2022, 2028, 2030
 
 Update Danish debconf template translations (thanks, Claus Hindsgaul).
 (Closes: #274101)
@@ -310,4 +310,9 @@
 connectives in scripts.
     2029
 
+Apply patch from David Mosberger that replaces the fix for #225526 with
+one that works on systems that do not have a PCI bus numbered 0.  Thanks,
+David!  (Closes: #279436)
+    2031
+
 vim:set ai et sts=4 sw=4 tw=80:

Modified: trunk/debian/TODO
===================================================================
--- trunk/debian/TODO	2004-11-17 21:48:32 UTC (rev 2030)
+++ trunk/debian/TODO	2004-11-18 19:30:09 UTC (rev 2031)
@@ -52,7 +52,6 @@
   launch xterm, per recommendation from Recai Oktas.  If a valid locale isn't
   set, bail out (would resolve #246398).  (This patch would be Debian-specific
   because validlocale is a Perl utility provided by base-config.)
-* #279436: apply David Mosberger's PCI domain fix [patch; BR]
 
 4.3.0.dfsg.1-10
 --------------

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2004-11-17 21:48:32 UTC (rev 2030)
+++ trunk/debian/changelog	2004-11-18 19:30:09 UTC (rev 2031)
@@ -185,6 +185,10 @@
   * Replace many occurences of XSI connectives in test(1) with POSIX shell
     connectives in scripts.
 
+  * Apply patch from David Mosberger that replaces the fix for #225526 with
+    one that works on systems that do not have a PCI bus numbered 0.  Thanks,
+    David!  (Closes: #279436)
+
   Changes by Denis Barbier and Fabio M. Di Nitto:
 
   * Edit xc/programs/xkbcomp/symbols/pc/Imakefile so that the new pc/us_intl
@@ -267,7 +271,7 @@
     exiting upon encountering the first shell interpeter that fails on the
     script; instead, attempt all the interpreters and report all that fail.
 
- -- Branden Robinson <branden@debian.org>  Tue, 16 Nov 2004 10:27:46 -0500
+ -- Branden Robinson <branden@debian.org>  Wed, 17 Nov 2004 18:00:21 -0500
 
 xfree86 (4.3.0.dfsg.1-8) unstable; urgency=high
 

Modified: trunk/debian/patches/049_Xserver_recognize_Linux_2.6_proc_bus_pci.diff
===================================================================
--- trunk/debian/patches/049_Xserver_recognize_Linux_2.6_proc_bus_pci.diff	2004-11-17 21:48:32 UTC (rev 2030)
+++ trunk/debian/patches/049_Xserver_recognize_Linux_2.6_proc_bus_pci.diff	2004-11-18 19:30:09 UTC (rev 2031)
@@ -2,23 +2,55 @@
 
 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.
+checking for the 2.4 style first.
 
-This patch by Daniel Seyffer and Ciaran McCreesh.
+This patch supersedes one by Daniel Seyffer and Ciaran McCreesh, which had
+problems on some systems.  Quoting David Mosberger:
 
+  [That patch] is keeping X from working on my machine.  That machine is a bit
+  unusual in the sense that it has no PCI bus numbered 0:
+
+   $ ls /proc/bus/pci/
+   40/  60/  80/  81/  devices
+
+  Due to this, the workaround for bug #225526 actually ends up breaking
+  X on my machine:
+[...]
+  So, on my machine (bus is < 256), the stat("/proc/bus/pci/00", &ignored)
+  call fails and then X attempts to use PCI-domain numbers,
+  which is wrong for my machine.
+
+  As far as I know, it is bogus to assume every machine has a PCI bus
+  numbered 0.
+
+This patch by David Mosberger.
+
 Not submitted to XFree86.
 
---- xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c~	2004-06-03 09:52:19.000000000 -0500
-+++ xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c	2004-06-03 09:54:49.000000000 -0500
-@@ -104,6 +104,7 @@
- 	static int	lbus,ldev,lfunc,fd = -1;
+--- xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c~	2004-11-17 17:52:27.000000000 -0500
++++ xc/programs/Xserver/hw/xfree86/os-support/bus/linuxPci.c	2004-11-17 17:52:44.000000000 -0500
+@@ -101,7 +101,19 @@
+ static int
+ linuxPciOpenFile(PCITAG tag)
+ {
+-	static int	lbus,ldev,lfunc,fd = -1;
++	static int	lbus,ldev,lfunc,fd = -1,with_domain = 0;
++	static const char *format_string[2][2] = {
++	    /* without PCI domain #: */
++	    {
++		"/proc/bus/pci/%02x/%02x.%1x",	/* bus # < 256 */
++		"/proc/bus/pci/%04x/%02x.%1x"	/* bus # >= 256 */
++	    },
++	    /* with PCI domain #: */
++	    {
++		"/proc/bus/pci/0000:%02x/%02x.%1x",	/* bus # < 256 */
++		"/proc/bus/pci/0000:%04x/%02x.%1x"	/* bus # >= 256 */
++	    }
++	};
  	int		bus, dev, func;
  	char		file[32];
-+	struct stat	ignored;
  
- 	bus  = PCI_BUS_FROM_TAG(tag);
- 	dev  = PCI_DEV_FROM_TAG(tag);
-@@ -111,12 +112,21 @@
+@@ -111,13 +123,20 @@
  	if (fd == -1 || bus != lbus || dev != ldev || func != lfunc) {
  		if (fd != -1)
  			close(fd);
@@ -28,21 +60,20 @@
 -		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/0000:%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/0000:%04x/%02x.%1x",
-+					bus, dev, func);
-+			else
-+				sprintf(file, "/proc/bus/pci/%04x/%02x.%1x",
-+					bus, dev, func);
++	  retry:
++		sprintf(file, format_string[with_domain][bus >= 256],
++			bus, dev, func);
+ 		fd = open(file,O_RDWR);
++
++		if (fd < 0) {
++			if (!with_domain) {
++				/* try again, this time with domains */
++				with_domain = 1;
++				goto retry;
++			}
++			/* failed even with domains; fall back again */
++			with_domain = 0;
 +		}
- 		fd = open(file,O_RDWR);
  		lbus  = bus;
  		ldev  = dev;
+ 		lfunc = func;



Reply to: