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

rpms/xorg-x11/FC-4 xorg-x11-6.8.2-ati-radeon-7000-disable-dri.patch, NONE, 1.1 xorg-x11-6.8.2-ia64-elfloader-cache-flush.patch, NONE, 1.1 xorg-x11-6.8.2-nv-driver-CVSHEAD-6.8.99.13.patch, NONE, 1.1 xorg-x11-6.8.2-redhat-kt.patch, NONE, 1.1 xorg-x11-6.8.2-xkb-dutch-keyboard-layout-fixes.patch, NONE, 1.1 xorg-x11-6.8.2-xnest-fix-warning-spew-fdo3513.patch, NONE, 1.1 xorg-x11-6.8.2-xnest-update-modifier-state-fdo3030-fdo3664.patch, NONE, 1.1



Author: mharris

Update of /cvs/dist/rpms/xorg-x11/FC-4
In directory cvs.devel.redhat.com:/tmp/cvs-serv3442

Added Files:
	xorg-x11-6.8.2-ati-radeon-7000-disable-dri.patch 
	xorg-x11-6.8.2-ia64-elfloader-cache-flush.patch 
	xorg-x11-6.8.2-nv-driver-CVSHEAD-6.8.99.13.patch 
	xorg-x11-6.8.2-redhat-kt.patch 
	xorg-x11-6.8.2-xkb-dutch-keyboard-layout-fixes.patch 
	xorg-x11-6.8.2-xnest-fix-warning-spew-fdo3513.patch 
	xorg-x11-6.8.2-xnest-update-modifier-state-fdo3030-fdo3664.patch 
Log Message:
Add patches from -devel branch

xorg-x11-6.8.2-ati-radeon-7000-disable-dri.patch:
 radeon.man      |    7 +++++++
 radeon_driver.c |   22 +++++++++++++++++++++-
 2 files changed, 28 insertions(+), 1 deletion(-)

--- NEW FILE xorg-x11-6.8.2-ati-radeon-7000-disable-dri.patch ---
--- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.man.ati-radeon-7000-disable-dri	2005-06-14 11:57:16.000000000 -0400
+++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon.man	2005-06-14 12:01:54.000000000 -0400
@@ -105,6 +105,13 @@
 .B Options
 are supported:
 .TP
+.BI "Option \*qDRU\*q \*q" boolean \*q
+Enables DRI (Direct Rendering Infrastructure) support.  The default is
+.B disabled
+for Radeon VE/7000 hardware due to instabilities, but
+.B enabled
+by default for all other Radeon hardware supported by the DRI.
+.TP
 .BI "Option \*qSWcursor\*q \*q" boolean \*q
 Selects software cursor.  The default is
 .B off.
--- xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c.ati-radeon-7000-disable-dri	2005-06-14 11:18:37.000000000 -0400
+++ xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_driver.c	2005-06-14 11:56:27.000000000 -0400
@@ -141,6 +141,7 @@
     OPTION_DEPTH_MOVE,
     OPTION_PAGE_FLIP,
     OPTION_NO_BACKBUFFER,
+    OPTION_DRI,
 #endif
     OPTION_PANEL_OFF,
     OPTION_DDC_MODE,
@@ -185,6 +186,7 @@
     { OPTION_DEPTH_MOVE,     "EnableDepthMoves", OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_PAGE_FLIP,      "EnablePageFlip",   OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_NO_BACKBUFFER,  "NoBackBuffer",     OPTV_BOOLEAN, {0}, FALSE },
+    { OPTION_DRI,            "DRI",              OPTV_BOOLEAN, {0}, TRUE  },
 #endif
     { OPTION_PANEL_OFF,      "PanelOff",         OPTV_BOOLEAN, {0}, FALSE },
     { OPTION_DDC_MODE,       "DDCMode",          OPTV_BOOLEAN, {0}, FALSE },
@@ -4596,7 +4598,25 @@
 	    }
 #endif
 	} else {
-	    info->directRenderingEnabled = RADEONDRIScreenInit(pScreen);
+	    /* RHEL4/FC4/FC3/rawhide: DRI turned off by default on RV100 (Radeon VE/7000)
+	     * for bug #150174
+	     */
+	    if (info->ChipFamily == CHIP_FAMILY_RV100) {
+		if (xf86ReturnOptValBool(info->Options, OPTION_DRI, FALSE )) {
+		    info->directRenderingEnabled = FALSE;
+		    xf86DrvMsg(scrnIndex, X_WARNING,
+			    "Direct Rendering is currently disabled on Radeon VE/7000\n\t"
+			    "hardware due to instability.\n");
+		} else {
+		    xf86DrvMsg(scrnIndex, X_WARNING,
+				"Direct Rendering is disabled by default on Radeon VE/7000\n\t"
+				"hardware due to instability, but has been forced on with\n\t"
+				"\"Option \"dri\" in xorg.conf.  You may experience instability.\n");
+		    info->directRenderingEnabled = RADEONDRIScreenInit(pScreen);
+		}
+	    } else {
+		info->directRenderingEnabled = RADEONDRIScreenInit(pScreen);
+	    }
 	}
     }
 #endif

xorg-x11-6.8.2-ia64-elfloader-cache-flush.patch:
 common/compiler.h  |    2 +-
 loader/elfloader.c |    8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

--- NEW FILE xorg-x11-6.8.2-ia64-elfloader-cache-flush.patch ---
Patch submitted to Red Hat by Alex Williamson <alex_williamson hp com>

Description of problem:
ia64 needs an extra cache flush to ensure the icache is coherent when
modules are loaded.

Fixes bugs:
        https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=153103

Related RHEL3 bug for reference:
        https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=153106

--- xc/programs/Xserver/hw/xfree86/common/compiler.h	2005-04-01 08:46:55.361250134 -0700
+++ xc/programs/Xserver/hw/xfree86/common/compiler.h	2005-04-01 08:55:15.630775256 -0700
@@ -478,7 +478,7 @@
 #    ifndef __INTEL_COMPILER
 #       define ia64_flush_cache(Addr) \
 	__asm__ __volatile__ ( \
-		"fc %0;;;" \
+		"fc.i %0;;;" \
 		"sync.i;;;" \
 		"mf;;;" \
 		"srlz.i;;;" \
--- xc/programs/Xserver/hw/xfree86/loader/elfloader.c	2005-04-01 08:43:28.095627673 -0700
+++ xc/programs/Xserver/hw/xfree86/loader/elfloader.c	2005-04-01 08:46:22.692305222 -0700
@@ -2785,6 +2785,14 @@
 		mprotect( (char *)elffile->lsection[j].saddr - round,
 			 SecSize(i) + round, PROT_READ | PROT_WRITE | PROT_EXEC);
 	    }
+#ifdef __ia64__
+	    {
+		int k;
+		for (k = 0; k < SecSize(i); k += 32)
+		    ia64_flush_cache(elffile->lsection[j].saddr+k);
+		ia64_flush_cache(elffile->lsection[j].saddr+SecSize(i)-1);
+	    }
+#endif
 	    break;
 #endif
 	case SHT_SYMTAB:

xorg-x11-6.8.2-nv-driver-CVSHEAD-6.8.99.13.patch:
 nv_driver.c |   85 ++++++++++++++++++++++++++++++++++++++++++++++++------------
 nv_hw.c     |   56 +++++++++++++++++++++++++--------------
 nv_setup.c  |    9 ++++++
 nv_type.h   |    1 
 4 files changed, 115 insertions(+), 36 deletions(-)

--- NEW FILE xorg-x11-6.8.2-nv-driver-CVSHEAD-6.8.99.13.patch ---
Patch by Mike A. Harris <mharris redhat com> as a minimalistic backport
of the current CVS head "nv" driver to 6.8.2.  I removed all changes that
appeared to be related specifically to the modularization effort, to
minimize risks.  The remaining patch is quite clean and straightforward.
I left the initial whitespace changes to driver name maps, to facilitate
easier future driver updates from CVS head.

This is also a possible fix for the following bug, but that conclusion
wont be reached until we get confirmation from users who experience
this issue:

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

--- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c:1.5.2.2	Wed Dec 15 17:42:35 2004
+++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_driver.c	Wed Jun 29 08:56:23 2005
@@ -86,25 +86,33 @@
 static SymTabRec NVKnownChipsets[] =
 {
   { 0x12D20018, "RIVA 128" },
+
   { 0x10DE0020, "RIVA TNT" },
+
   { 0x10DE0028, "RIVA TNT2" },
   { 0x10DE002A, "Unknown TNT2" },
   { 0x10DE002C, "Vanta" },
   { 0x10DE0029, "RIVA TNT2 Ultra" },
   { 0x10DE002D, "RIVA TNT2 Model 64" },
+
   { 0x10DE00A0, "Aladdin TNT2" },
+
   { 0x10DE0100, "GeForce 256" },
   { 0x10DE0101, "GeForce DDR" },
   { 0x10DE0103, "Quadro" },
+
   { 0x10DE0110, "GeForce2 MX/MX 400" },
   { 0x10DE0111, "GeForce2 MX 100/200" },
   { 0x10DE0112, "GeForce2 Go" },
   { 0x10DE0113, "Quadro2 MXR/EX/Go" },
+
   { 0x10DE01A0, "GeForce2 Integrated GPU" },
+
   { 0x10DE0150, "GeForce2 GTS" },
   { 0x10DE0151, "GeForce2 Ti" },
   { 0x10DE0152, "GeForce2 Ultra" },
   { 0x10DE0153, "Quadro2 Pro" },
+
   { 0x10DE0170, "GeForce4 MX 460" },
   { 0x10DE0171, "GeForce4 MX 440" },
   { 0x10DE0172, "GeForce4 MX 420" },
@@ -122,6 +130,7 @@
   { 0x10DE017A, "Quadro4 NVS" },
   { 0x10DE017C, "Quadro4 500 GoGL" },
   { 0x10DE017D, "GeForce4 410 Go 16M" },
+
   { 0x10DE0181, "GeForce4 MX 440 with AGP8X" },
   { 0x10DE0182, "GeForce4 MX 440SE with AGP8X" },
   { 0x10DE0183, "GeForce4 MX 420 with AGP8X" },
@@ -136,11 +145,14 @@
   { 0x10DE018B, "Quadro4 380 XGL" },
   { 0x10DE018C, "Quadro NVS 50 PCI" },
   { 0x10DE018D, "GeForce4 448 Go" },
+
   { 0x10DE01F0, "GeForce4 MX Integrated GPU" },
+
   { 0x10DE0200, "GeForce3" },
   { 0x10DE0201, "GeForce3 Ti 200" },
   { 0x10DE0202, "GeForce3 Ti 500" },
   { 0x10DE0203, "Quadro DCC" },
+
   { 0x10DE0250, "GeForce4 Ti 4600" },
   { 0x10DE0251, "GeForce4 Ti 4400" },
   { 0x10DE0252, "0x0252" },
@@ -148,6 +160,7 @@
   { 0x10DE0258, "Quadro4 900 XGL" },
   { 0x10DE0259, "Quadro4 750 XGL" },
   { 0x10DE025B, "Quadro4 700 XGL" },
+
   { 0x10DE0280, "GeForce4 Ti 4800" },
   { 0x10DE0281, "GeForce4 Ti 4200 with AGP8X" },
   { 0x10DE0282, "GeForce4 Ti 4800 SE" },
@@ -155,10 +168,12 @@
   { 0x10DE028C, "Quadro4 700 GoGL" },
   { 0x10DE0288, "Quadro4 980 XGL" },
   { 0x10DE0289, "Quadro4 780 XGL" },
+
   { 0x10DE0301, "GeForce FX 5800 Ultra" },
   { 0x10DE0302, "GeForce FX 5800" },
   { 0x10DE0308, "Quadro FX 2000" },
   { 0x10DE0309, "Quadro FX 1000" },
+
   { 0x10DE0311, "GeForce FX 5600 Ultra" },
   { 0x10DE0312, "GeForce FX 5600" },
   { 0x10DE0313, "0x0313"},
@@ -171,6 +186,7 @@
   { 0x10DE031D, "0x031D" },
   { 0x10DE031E, "0x031E" },
   { 0x10DE031F, "0x031F" },
+
   { 0x10DE0320, "GeForce FX 5200" },
   { 0x10DE0321, "GeForce FX 5200 Ultra" },
   { 0x10DE0322, "GeForce FX 5200" },
@@ -190,6 +206,7 @@
   { 0x10DE032C, "GeForce FX Go53xx Series" },
   { 0x10DE032D, "GeForce FX Go5100" },
   { 0x10DE032F, "0x032F" },
+
   { 0x10DE0330, "GeForce FX 5900 Ultra" },
   { 0x10DE0331, "GeForce FX 5900" },
   { 0x10DE0332, "GeForce FX 5900XT" },
@@ -197,6 +214,7 @@
   { 0x10DE033F, "Quadro FX 700" },
   { 0x10DE0334, "GeForce FX 5900ZT" },
   { 0x10DE0338, "Quadro FX 3000" },
+
   { 0x10DE0341, "GeForce FX 5700 Ultra" },
   { 0x10DE0342, "GeForce FX 5700" },
   { 0x10DE0343, "GeForce FX 5700LE" },
@@ -209,6 +227,7 @@
   { 0x10DE034C, "Quadro FX Go1000" },
   { 0x10DE034E, "Quadro FX 1100" },
   { 0x10DE034F, "0x034F" },
+
   { 0x10DE0040, "GeForce 6800 Ultra" },
   { 0x10DE0041, "GeForce 6800" },
   { 0x10DE0042, "GeForce 6800 LE" },
@@ -216,14 +235,16 @@
   { 0x10DE0045, "GeForce 6800 GT" },
   { 0x10DE0049, "0x0049" },
   { 0x10DE004E, "Quadro FX 4000" },
-  { 0x10DE004D, "Quadro FX 4400" },
+
   { 0x10DE00C0, "0x00C0" },
-  { 0x10DE00C1, "0x00C1" },
+  { 0x10DE00C1, "GeForce 6800" },
   { 0x10DE00C2, "GeForce 6800 LE" },
-  { 0x10DE00C8, "0x00C8" },
-  { 0x10DE00C9, "0x00C9" },
-  { 0x10DE00CC, "0x00CC" },
-  { 0x10DE00CE, "0x00CE" },
+  { 0x10DE00C8, "GeForce Go 6800" },
+  { 0x10DE00C9, "GeForce Go 6800 Ultra" },
+  { 0x10DE00CC, "Quadro FX Go1400" },
+  { 0x10DE00CD, "0x00CD" },
+  { 0x10DE00CE, "Quadro FX 1400" },
+
   { 0x10DE0140, "GeForce 6600 GT" },
   { 0x10DE0141, "GeForce 6600" },
   { 0x10DE0142, "0x0142" },
@@ -239,12 +260,32 @@
   { 0x10DE014D, "0x014D" },
   { 0x10DE014E, "Quadro FX 540" },
   { 0x10DE014F, "GeForce 6200" },
+
   { 0x10DE0160, "0x0160" },
-  { 0x10DE0166, "0x0166" },
+  { 0x10DE0161, "GeForce 6200 TurboCache(TM)" },
+  { 0x10DE0162, "0x0162" },
+  { 0x10DE0163, "0x0163" },
+  { 0x10DE0164, "GeForce Go 6200" },
+  { 0x10DE0165, "0x0163" },
+  { 0x10DE0166, "GeForce Go 6250" },
+  { 0x10DE0167, "GeForce Go 6200" },
+  { 0x10DE0168, "GeForce Go 6250" },
+  { 0x10DE0169, "0x0169" },
+  { 0x10DE016B, "0x016B" },
+  { 0x10DE016C, "0x016C" },
+  { 0x10DE016D, "0x016D" },
+  { 0x10DE016E, "0x016E" },
+
   { 0x10DE0210, "0x0210" },
-  { 0x10DE0211, "0x0211" },
-  { 0x10DE021D, "0x021D" },
-  { 0x10DE021E, "0x021E" },
+  { 0x10DE0211, "GeForce 6800" },
+  { 0x10DE0212, "GeForce 6800 LE" },
+  { 0x10DE0215, "GeForce 6800 GT" },
+
+  { 0x10DE0220, "0x0220" },
+  { 0x10DE0221, "0x0221" },
+  { 0x10DE0222, "0x0222" },
+  { 0x10DE0228, "0x0228" },
+
   {-1, NULL}
 };
 
@@ -640,6 +681,8 @@
                case 0x01D0:
                case 0x0090:
                case 0x0210:
+               case 0x0220:
+               case 0x0230:
                    NVChipsets[numUsed].token = pciid;
                    NVChipsets[numUsed].name = "Unknown NVIDIA chip";
                    NVPciChipsets[numUsed].numChipset = pciid;
@@ -1328,6 +1371,8 @@
     case 0x01D0:
     case 0x0090:
     case 0x0210:
+    case 0x0220:
+    case 0x0230:
          pNv->Architecture =  NV_ARCH_40;
          break;
     default:
@@ -1661,8 +1706,6 @@
 
 static void NVBacklightEnable(NVPtr pNv,  Bool on)
 {
-    CARD32 fpcontrol = pNv->PRAMDAC[0x0848/4] & 0xCfffffCC;
-
     /* This is done differently on each laptop.  Here we
        define the ones we know for sure. */
 
@@ -1684,11 +1727,21 @@
     }
 #endif
     
-    /* cut the TMDS output */
-    if(on) fpcontrol |= pNv->fpSyncs;
-    else fpcontrol |= 0x20000022;
+    if(pNv->LVDS) {
+       if(pNv->twoHeads && ((pNv->Chipset & 0x0ff0) != 0x0110)) {
+           pNv->PMC[0x130C/4] = on ? 3 : 7; 
+       }
+    } else {
+       CARD32 fpcontrol;
 
-    pNv->PRAMDAC[0x0848/4] = fpcontrol;
+       fpcontrol = pNv->PRAMDAC[0x0848/4] & 0xCfffffCC;
+
+       /* cut the TMDS output */
+       if(on) fpcontrol |= pNv->fpSyncs;
+       else fpcontrol |= 0x20000022;
+
+       pNv->PRAMDAC[0x0848/4] = fpcontrol;
+    }
 }
 
 static void
Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c
diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c:1.2.4.2 xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c:1.6
--- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c:1.2.4.2	Wed Dec 15 17:42:35 2004
+++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_hw.c	Sun Feb 13 19:37:20 2005
@@ -928,23 +928,16 @@
 
     if(pNv->Architecture == NV_ARCH_04) {
         pNv->PFB[0x0200/4] = state->config;
+    } else if ((pNv->Chipset & 0xfff0) == 0x0090) {
+        for(i = 0; i < 15; i++) {
+           pNv->PFB[(0x0600 + (i * 0x10))/4] = 0;
+           pNv->PFB[(0x0604 + (i * 0x10))/4] = pNv->FbMapSize - 1;
+        }
     } else {
-        pNv->PFB[0x0240/4] = 0;
-        pNv->PFB[0x0244/4] = pNv->FbMapSize - 1;
-        pNv->PFB[0x0250/4] = 0;
-        pNv->PFB[0x0254/4] = pNv->FbMapSize - 1;
-        pNv->PFB[0x0260/4] = 0;
-        pNv->PFB[0x0264/4] = pNv->FbMapSize - 1;
-        pNv->PFB[0x0270/4] = 0;
-        pNv->PFB[0x0274/4] = pNv->FbMapSize - 1;
-        pNv->PFB[0x0280/4] = 0;
-        pNv->PFB[0x0284/4] = pNv->FbMapSize - 1;
-        pNv->PFB[0x0290/4] = 0;
-        pNv->PFB[0x0294/4] = pNv->FbMapSize - 1;
-        pNv->PFB[0x02A0/4] = 0;
-        pNv->PFB[0x02A4/4] = pNv->FbMapSize - 1;
-        pNv->PFB[0x02B0/4] = 0;
-        pNv->PFB[0x02B4/4] = pNv->FbMapSize - 1;
+        for(i = 0; i < 8; i++) {
+           pNv->PFB[(0x0240 + (i * 0x10))/4] = 0;
+           pNv->PFB[(0x0244 + (i * 0x10))/4] = pNv->FbMapSize - 1;
+        }
     }
 
     if(pNv->Architecture >= NV_ARCH_40) {
@@ -1173,6 +1166,7 @@
 
               switch(pNv->Chipset & 0xfff0) {
               case 0x0040:
+              case 0x0210:
                  pNv->PGRAPH[0x09b8/4] = 0x0078e366;
                  pNv->PGRAPH[0x09bc/4] = 0x0000014c;
                  pNv->PFB[0x033C/4] &= 0xffff7fff;
@@ -1182,6 +1176,7 @@
                  pNv->PGRAPH[0x082C/4] = 0x00000108;
                  break;
               case 0x0160:
+              case 0x01D0:
                  pNv->PMC[0x1700/4] = pNv->PFB[0x020C/4];
                  pNv->PMC[0x1704/4] = 0;
                  pNv->PMC[0x1708/4] = 0;
@@ -1194,6 +1189,17 @@
                  pNv->PGRAPH[0x0828/4] = 0x0072cb77;
                  pNv->PGRAPH[0x082C/4] = 0x00000108;
                  break;
+              case 0x0220:
+              case 0x0230:
+                 pNv->PGRAPH[0x0860/4] = 0;
+                 pNv->PGRAPH[0x0864/4] = 0;
+                 pNv->PRAMDAC[0x0608/4] |= 0x00100000;
+                 break;
+              case 0x0090:
+                 pNv->PRAMDAC[0x0608/4] |= 0x00100000;
+                 pNv->PGRAPH[0x0828/4] = 0x07830610;
+                 pNv->PGRAPH[0x082C/4] = 0x0000016A;
+                 break;
               default:
                  break;
               };
@@ -1237,8 +1243,13 @@
               }
            }
 
-           for(i = 0; i < 32; i++)
-             pNv->PGRAPH[(0x0900/4) + i] = pNv->PFB[(0x0240/4) + i];
+           if((pNv->Chipset & 0xfff0) == 0x0090) {
+              for(i = 0; i < 60; i++)
+                pNv->PGRAPH[(0x0D00/4) + i] = pNv->PFB[(0x0600/4) + i];
+           } else {
+              for(i = 0; i < 32; i++)
+                pNv->PGRAPH[(0x0900/4) + i] = pNv->PFB[(0x0240/4) + i];
+           }
 
            if(pNv->Architecture >= NV_ARCH_40) {
               if((pNv->Chipset & 0xfff0) == 0x0040) {
@@ -1252,8 +1263,13 @@
                  pNv->PGRAPH[0x0864/4] = pNv->FbMapSize - 1;
                  pNv->PGRAPH[0x0868/4] = pNv->FbMapSize - 1;
               } else {
-                 pNv->PGRAPH[0x09F0/4] = pNv->PFB[0x0200/4];
-                 pNv->PGRAPH[0x09F4/4] = pNv->PFB[0x0204/4];
+                 if((pNv->Chipset & 0xfff0) == 0x0090) {
+                    pNv->PGRAPH[0x0DF0/4] = pNv->PFB[0x0200/4];
+                    pNv->PGRAPH[0x0DF4/4] = pNv->PFB[0x0204/4];
+                 } else {
+                    pNv->PGRAPH[0x09F0/4] = pNv->PFB[0x0200/4];
+                    pNv->PGRAPH[0x09F4/4] = pNv->PFB[0x0204/4];
+                 }
                  pNv->PGRAPH[0x69F0/4] = pNv->PFB[0x0200/4];
                  pNv->PGRAPH[0x69F4/4] = pNv->PFB[0x0204/4];
 
--- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c:1.2.4.2	Wed Dec 15 17:42:35 2004
+++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_setup.c	Thu Apr 21 15:25:47 2005
@@ -680,5 +680,14 @@
 
     if(!pNv->FlatPanel || (pScrn->depth != 24) || !pNv->twoHeads)
         pNv->FPDither = FALSE;
+
+    pNv->LVDS = FALSE;
+    if(pNv->FlatPanel && pNv->twoHeads) {
+        pNv->PRAMDAC0[0x08B0/4] = 0x00010004;
+        if(pNv->PRAMDAC0[0x08B4/4] & 1)
+           pNv->LVDS = TRUE;
+        xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel is %s\n", 
+                   pNv->LVDS ? "LVDS" : "TMDS");
+    }
 }
 
Index: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h
diff -u xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h:1.2.4.2 xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h:1.5
--- xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h:1.2.4.2	Wed Dec 15 17:42:35 2004
+++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h	Thu Apr 21 15:25:47 2005
@@ -161,6 +161,7 @@
     CARD32              fpSyncs;
     Bool                usePanelTweak;
     int                 PanelTweak;
+    Bool                LVDS;
 
     CARD32              dmaPut;
     CARD32              dmaCurrent;

xorg-x11-6.8.2-redhat-kt.patch:
 Imakefile  |    5 ++++-
 xf86Init.c |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+), 1 deletion(-)

--- NEW FILE xorg-x11-6.8.2-redhat-kt.patch ---
Patch by Mike A. Harris <mharris redhat com> to log the Linux kernel's
taint flags to the Xorg log file for aide in diagnostic troubleshooting.

The kernel's taint flags, from 2.6.11.11 are as follows:
#define TAINT_PROPRIETARY_MODULE        (1<<0)
#define TAINT_FORCED_MODULE             (1<<1)
#define TAINT_UNSAFE_SMP                (1<<2)
#define TAINT_FORCED_RMMOD              (1<<3)
#define TAINT_MACHINE_CHECK             (1<<4)
#define TAINT_BAD_PAGE                  (1<<5)


The kernel uses the following letters to indicate particular taintings:

snprintf(buf, sizeof(buf), "Tainted: %c%c%c%c%c%c",
                        tainted & TAINT_PROPRIETARY_MODULE ? 'P' : 'G',
                        tainted & TAINT_FORCED_MODULE ? 'F' : ' ',
                        tainted & TAINT_UNSAFE_SMP ? 'S' : ' ',
                        tainted & TAINT_FORCED_RMMOD ? 'R' : ' ',
                        tainted & TAINT_MACHINE_CHECK ? 'M' : ' ',
                        tainted & TAINT_BAD_PAGE ? 'B' : ' ');

FIXME: Look into 

--- xc/programs/Xserver/hw/xfree86/common/xf86Init.c.redhat-custom-startup	2003-02-04 02:57:42.000000000 -0500
+++ xc/programs/Xserver/hw/xfree86/common/xf86Init.c	2003-02-04 04:24:05.000000000 -0500
@@ -65,6 +65,9 @@
 static void xf86PrintBanner(void);
 static void xf86PrintMarkers(void);
 static void xf86RunVtInit(void);
+#ifdef XORG_REDHAT_CUSTOM
+static void rhPrintOSKernelString(void);
+#endif
 
 #ifdef DO_CHECK_BETA
 static int extraDays = 0;
@@ -115,6 +118,46 @@
 	0
 };
 
+#ifdef XORG_REDHAT_CUSTOM
+#define RHMAXBUF 1024
+/* This is a rather ugly hack, but it does the job for now.  It will be
+ * replaced by something much nicer in the future.
+ */
+static void rhPrintOSKernelString(void)
+{
+  int tainted = -1;
+  char *buf;
+  FILE *infile;
+
+  if (NULL != (buf = (char *) calloc(1, RHMAXBUF)))
+  {
+    if( (infile = fopen("/proc/sys/kernel/tainted", "r")) != NULL)
+    {
+      fgets(buf, RHMAXBUF, infile);
+      fclose(infile);
+      tainted = atoi(buf);
+    }
+    if( (infile = fopen("/proc/version", "r")) != NULL)
+    {
+      if(NULL == fgets(buf, RHMAXBUF, infile))
+        sprintf(buf, "(unable to determine)");
+      else
+        buf[strlen(buf) - 1] = '\0';
+ 
+      fclose(infile);
+    }
+  }
+  ErrorF("OS Kernel: %s %s%s%s%s%s%s\n", (buf != NULL)? buf : "(unable to determine)",
+                                 (tainted & 0x01) ? "P" : "",
+                                 (tainted & 0x02) ? "F" : "",
+                                 (tainted & 0x04) ? "S" : "",
+                                 (tainted & 0x08) ? "R" : "",
+                                 (tainted & 0x10) ? "M" : "",
+                                 (tainted & 0x20) ? "B" : "");
+  free(buf);
+}
+#endif
+
 static Bool
 xf86CreateRootWindow(WindowPtr pWin)
 {
@@ -1677,6 +1716,9 @@
 #ifdef XFree86LOADER
   ErrorF("Module Loader present\n");
 #endif
+#ifdef XORG_REDHAT_CUSTOM
+  rhPrintOSKernelString();
+#endif
 }
 
 static void
--- xc/programs/Xserver/hw/xfree86/common/Imakefile.redhat-custom-startup	2003-02-04 02:57:42.000000000 -0500
+++ xc/programs/Xserver/hw/xfree86/common/Imakefile	2003-02-04 04:26:15.000000000 -0500
@@ -183,6 +183,9 @@
 CUSTOMVERSION = XFree86CustomVersion
  CUSTOMVERDEF = -DXF86_CUSTOM_VERSION='$(CUSTOMVERSION)'
 #endif
+#if defined(XorgRedHatCustom)
+REDHAT_CUSTOM = -DXORG_REDHAT_CUSTOM
+#endif
 #if defined(BuilderString)
   BUILDERSTRING = BuilderString
   BUILDERMSG = -DBUILDERSTRING='$(BUILDERSTRING)'
@@ -223,7 +226,7 @@
 AllTarget($(OFILES))
 
 SpecialCObjectRule(xf86Bus,NullParameter,$(BUGMSG) $(VGAINCLUDES))
-SpecialCObjectRule(xf86Init,$(ICONFIGFILES),$(OSNAMEDEF) $(BUILDERMSG) $(BUGMSG) $(CUSTOMVERDEF) $(XORGREL_DEF) $(XORGDATE_DEF) $(EXT_DEFINES) $(BETADEFS) $(MDEBUGDEFS) $(KEYBOARD_DEFS))
+SpecialCObjectRule(xf86Init,$(ICONFIGFILES),$(OSNAMEDEF) $(BUILDERMSG) $(BUGMSG) $(CUSTOMVERDEF) $(REDHAT_CUSTOM) $(XORGREL_DEF) $(XORGDATE_DEF) $(EXT_DEFINES) $(BETADEFS) $(MDEBUGDEFS) $(KEYBOARD_DEFS))
 SpecialCObjectRule(xf86Events,$(ICONFIGFILES),$(EXT_DEFINES) $(MDEBUGDEFS))
 SpecialCObjectRule(xf86Globals,$(ICONFIGFILES),$(EXT_DEFINES) $(MODPATHDEFINES) $(LOGDEFINES))
 SpecialCObjectRule(xf86AutoConfig,$(ICONFIGFILES),$(XCONFIGDEFINES))

xorg-x11-6.8.2-xkb-dutch-keyboard-layout-fixes.patch:
 nl    |    6 +++---
 pc/nl |    7 +++----
 2 files changed, 6 insertions(+), 7 deletions(-)

--- NEW FILE xorg-x11-6.8.2-xkb-dutch-keyboard-layout-fixes.patch ---
Patch by Mike A. Harris <mharris redhat com> derived from the patches
attached to Red Hat bugzilla:

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

Submitted to Xorg bugzilla at:
	https://bugs.freedesktop.org/show_bug.cgi?id=3544

	

--- xc/programs/xkbcomp/symbols/pc/nl.orig	2004-09-14 17:48:42.000000000 +0200
+++ xc/programs/xkbcomp/symbols/pc/nl	2004-10-05 16:39:48.000000000 +0200
@@ -23,15 +23,14 @@
     key <AE10>	{ [         0, apostrophe,   braceright,       degree ]	};
     key <AE11>	{ [     slash,   question,    backslash, questiondown ]	};
     key <AE12>	{ [    degree, dead_tilde, dead_cedilla,  dead_ogonek ]	};
-
-    key <AD03>	{ [         e,          E,       eacute,       Eacute ]	};
+    key <AD03>	{ [         e,          E,     EuroSign,         cent ] };
     key <AD05>	{ [         t,          T,        thorn,        THORN ]	};
     key <AD06>	{ [         y,          Y,   ydiaeresis,          yen ]	};
     key <AD07>	{ [         u,          U,   udiaeresis,   Udiaeresis ]	};
     key <AD08>	{ [         i,          I,   idiaeresis,   Idiaeresis ]	};
     key <AD09>	{ [         o,          O,       ograve,       Ograve ]	};
     key <AD10>	{ [         p,          P,    paragraph,        THORN ]	};
-    key <AD11>	{ [dead_diaeresis, dead_tilde, asciitilde, asciicircum]	};
+    key <AD11>	{ [dead_diaeresis, dead_circumflex, asciitilde, asciicircum]	};
     key <AD12>	{ [  asterisk,        bar,   dead_tilde,  dead_macron ]	};
 
     key <AC01>	{ [         a,          A,       aacute,       Aacute ]	};
@@ -47,7 +46,7 @@
     key <AB09>	{ [    period,      colon, periodcentered, guillemotright ] };
     key <AB10>	{ [     minus,      equal,       hyphen, dead_abovedot]	};
 
-    key <LSGT>	{ [bracketleft, bracketright,       bar,    brokenbar ]	};
+    key <LSGT>	{ [bracketright, bracketleft,       bar,    brokenbar ]	};
 
     include "level3(ralt_switch_multikey)"
 };
--- xc/programs/xkbcomp/symbols/nl.orig	2004-09-14 17:48:41.000000000 +0200
+++ xc/programs/xkbcomp/symbols/nl	2004-10-05 16:39:48.000000000 +0200
@@ -37,7 +37,7 @@
     key <AE12> {	[    degree,	dead_tilde	],
 			[ dead_cedilla			]	};
     key <AD03> {	[         e,	E        	],
-			[    eacute,	Eacute   	]	};
+			[    EuroSign,	cent    	]	};
     key <AD04> {	[         r,	R        	],
 			[ paragraph,	registered	]	};
     key <AD05> {	[         t,	T        	],
@@ -52,7 +52,7 @@
 			[    ograve,	Ograve   	]	};
     key <AD10> {	[         p,	P        	],
 			[ paragraph			]	};
-    key <AD11> {	[ dead_diaeresis,	dead_tilde	],
+    key <AD11> {	[ dead_diaeresis,	dead_circumflex	],
 			[ asciitilde,	asciicircum	]	};
     key <AD12> {	[  asterisk,	bar      	]	};
     key <AC01> {	[         a,	A        	],
@@ -85,7 +85,7 @@
 			[ periodcentered,	guillemotright	]	};
     key <AB10> {	[     minus,	equal    	],
 			[    hyphen			]	};
-    key <LSGT> {	[ bracketleft,	bracketright	],
+    key <LSGT> {	[ bracketright,	bracketleft	],
 			[       bar			]	};
 
     // End alphanumeric section

xorg-x11-6.8.2-xnest-fix-warning-spew-fdo3513.patch:
 Events.c |    8 ++++++++
 1 files changed, 8 insertions(+)

--- NEW FILE xorg-x11-6.8.2-xnest-fix-warning-spew-fdo3513.patch ---
Patch submitted to Red Hat bugzilla by Mark McLoughlin to fix the
following bugs:

Fixes bugs:
	https://bugs.freedesktop.org/show_bug.cgi?id=3513

And the first part of bug:
        https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=162246

Mike A. Harris <mharris redhat com>

--- xc/programs/Xserver/hw/xnest/Events.c.xnest-fix-warning-spew-fdo3513	2005-07-01 14:40:29.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Events.c	2005-07-01 14:43:52.000000000 +0100
@@ -205,6 +205,14 @@
 	  X.xdestroywindow.window == xnestParentWindow)
 	exit (0);
       break;
+
+    case CirculateNotify:
+    case ConfigureNotify:
+    case GravityNotify:
+    case MapNotify:
+    case ReparentNotify:
+    case UnmapNotify:
+      break;
       
     default:
       ErrorF("xnest warning: unhandled event\n");

xorg-x11-6.8.2-xnest-update-modifier-state-fdo3030-fdo3664.patch:
 Events.c   |   25 +++++++++++++++++--------
 Events.h   |    1 +
 Init.c     |   12 +++++-------
 Keyboard.c |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 Keyboard.h |    3 +++
 Pointer.c  |    2 ++
 Pointer.h  |    2 ++
 7 files changed, 81 insertions(+), 15 deletions(-)

--- NEW FILE xorg-x11-6.8.2-xnest-update-modifier-state-fdo3030-fdo3664.patch ---
Patch submitted to Red Hat bugzilla by Mark McLoughlin to fix the
following bugs:

Fixes bugs:
	https://bugs.freedesktop.org/show_bug.cgi?id=3030
	https://bugs.freedesktop.org/show_bug.cgi?id=3664

And the first part of bug:
	https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=162246


Mike A. Harris <mharris redhat com>

--- xc/programs/Xserver/hw/xnest/Events.h.xnest-update-modifier-state-fdo3030-fdo3664	2004-04-23 20:54:21.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Events.h	2005-07-01 14:40:14.000000000 +0100
@@ -26,5 +26,6 @@
 void SetTimeSinceLastInputEvent(void);
 void xnestCollectExposures(void);
 void xnestCollectEvents(void);
+void xnestQueueKeyEvent(int type, unsigned int keycode);
 
 #endif /* XNESTEVENTS_H */
--- xc/programs/Xserver/hw/xnest/Pointer.h.xnest-update-modifier-state-fdo3030-fdo3664	2004-04-23 20:54:21.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Pointer.h	2005-07-01 14:40:14.000000000 +0100
@@ -23,6 +23,8 @@
         (ButtonPressMask | ButtonReleaseMask | PointerMotionMask | \
 	 EnterWindowMask | LeaveWindowMask)
 
+extern DeviceIntPtr xnestPointerDevice;
+
 void xnestChangePointerControl(DeviceIntPtr pDev, PtrCtrl *ctrl);
 int xnestPointerProc(DeviceIntPtr pDev, int onoff);
 
--- xc/programs/Xserver/hw/xnest/Keyboard.c.xnest-update-modifier-state-fdo3030-fdo3664	2004-04-23 20:54:21.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Keyboard.c	2005-07-01 14:40:29.000000000 +0100
@@ -31,6 +31,7 @@
 #include "Screen.h"
 #include "Keyboard.h"
 #include "Args.h"
+#include "Events.h"
 
 #ifdef XKB
 #include <X11/extensions/XKB.h>
@@ -83,6 +84,8 @@
 
 #endif
 
+DeviceIntPtr xnestKeyboardDevice = NULL;
+
 void
 xnestBell(int volume, DeviceIntPtr pDev, pointer ctrl, int cls)
 {
@@ -282,3 +285,51 @@
 {
   return TRUE;
 }
+
+void
+xnestUpdateModifierState(unsigned int state)
+{
+  DeviceIntPtr pDev = xnestKeyboardDevice;
+  KeyClassPtr keyc = pDev->key;
+  int i;
+  CARD8 mask;
+
+  state = state & 0xff;
+
+  if (keyc->state == state)
+    return;
+
+  for (i = 0, mask = 1; i < 8; i++, mask <<= 1) {
+    int key;
+
+    /* Modifier is down, but shouldn't be
+     */
+    if ((keyc->state & mask) && !(state & mask)) {
+      int count = keyc->modifierKeyCount[i];
+
+      for (key = 0; key < MAP_LENGTH; key++)
+	if (keyc->modifierMap[key] & mask) {
+	  int bit;
+	  BYTE *kptr;
+
+	  kptr = &keyc->down[key >> 3];
+	  bit = 1 << (key & 7);
+
+	  if (*kptr & bit)
+	    xnestQueueKeyEvent(KeyRelease, key);
+
+	  if (--count == 0)
+	    break;
+	}
+    }
+
+    /* Modifier shoud be down, but isn't
+     */
+    if (!(keyc->state & mask) && (state & mask))
+      for (key = 0; key < MAP_LENGTH; key++)
+	if (keyc->modifierMap[key] & mask) {
+	  xnestQueueKeyEvent(KeyPress, key);
+	  break;
+	}
+  }
+}
--- xc/programs/Xserver/hw/xnest/Events.c.xnest-update-modifier-state-fdo3030-fdo3664	2004-08-11 23:40:14.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Events.c	2005-07-01 14:40:29.000000000 +0100
@@ -34,6 +34,7 @@
 #include "Screen.h"
 #include "XNWindow.h"
 #include "Events.h"
+#include "Keyboard.h"
 #include "mipointer.h"
 
 CARD32 lastEventTime = 0;
@@ -96,6 +97,16 @@
 }
 
 void
+xnestQueueKeyEvent(int type, unsigned int keycode)
+{
+  xEvent x;
+  x.u.u.type = type;
+  x.u.u.detail = keycode;
+  x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
+  mieqEnqueue(&x);
+}
+
+void
 xnestCollectEvents()
 {
   XEvent X;
@@ -105,20 +116,17 @@
   while (XCheckIfEvent(xnestDisplay, &X, xnestNotExposurePredicate, NULL)) {
     switch (X.type) {
     case KeyPress:
-      x.u.u.type = KeyPress;
-      x.u.u.detail = X.xkey.keycode;
-      x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
-      mieqEnqueue(&x);
+      xnestUpdateModifierState(X.xkey.state);
+      xnestQueueKeyEvent(KeyPress, X.xkey.keycode);
       break;
       
     case KeyRelease:
-      x.u.u.type = KeyRelease;
-      x.u.u.detail = X.xkey.keycode;
-      x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
-      mieqEnqueue(&x);
+      xnestUpdateModifierState(X.xkey.state);
+      xnestQueueKeyEvent(KeyRelease, X.xkey.keycode);
       break;
       
     case ButtonPress:
+      xnestUpdateModifierState(X.xkey.state);
       x.u.u.type = ButtonPress;
       x.u.u.detail = X.xbutton.button;
       x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
@@ -126,6 +134,7 @@
       break;
       
     case ButtonRelease:
+      xnestUpdateModifierState(X.xkey.state);
       x.u.u.type = ButtonRelease;
       x.u.u.detail = X.xbutton.button;
       x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
--- xc/programs/Xserver/hw/xnest/Keyboard.h.xnest-update-modifier-state-fdo3030-fdo3664	2004-04-23 20:54:21.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Keyboard.h	2005-07-01 14:40:14.000000000 +0100
@@ -20,8 +20,11 @@
 #define XNEST_KEYBOARD_EVENT_MASK \
         (KeyPressMask | KeyReleaseMask | FocusChangeMask | KeymapStateMask)
 
+extern DeviceIntPtr xnestKeyboardDevice;
+
 void xnestBell(int volume, DeviceIntPtr pDev, pointer ctrl, int cls);
 void xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl *ctrl);
 int xnestKeyboardProc(DeviceIntPtr pDev, int onoff);
+void xnestUpdateModifierState(unsigned int state);
 
 #endif /* XNESTKEYBOARD_H */
--- xc/programs/Xserver/hw/xnest/Init.c.xnest-update-modifier-state-fdo3030-fdo3664	2004-06-21 14:40:25.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Init.c	2005-07-01 14:40:14.000000000 +0100
@@ -87,15 +87,13 @@
 void
 InitInput(int argc, char *argv[])
 {
-  pointer ptr, kbd;
+  xnestPointerDevice = AddInputDevice(xnestPointerProc, TRUE);
+  xnestKeyboardDevice = AddInputDevice(xnestKeyboardProc, TRUE);
 
-  ptr = AddInputDevice(xnestPointerProc, TRUE);
-  kbd = AddInputDevice(xnestKeyboardProc, TRUE);
+  RegisterPointerDevice(xnestPointerDevice);
+  RegisterKeyboardDevice(xnestKeyboardDevice);
 
-  RegisterPointerDevice(ptr);
-  RegisterKeyboardDevice(kbd);
-
-  mieqInit(kbd, ptr);
+  mieqInit((DevicePtr)xnestKeyboardDevice, (DevicePtr)xnestPointerDevice);
 
   AddEnabledDevice(XConnectionNumber(xnestDisplay));
 
--- xc/programs/Xserver/hw/xnest/Pointer.c.xnest-update-modifier-state-fdo3030-fdo3664	2004-04-23 20:54:21.000000000 +0100
+++ xc/programs/Xserver/hw/xnest/Pointer.c	2005-07-01 14:40:14.000000000 +0100
@@ -31,6 +31,8 @@
 #include "Pointer.h"
 #include "Args.h"
 
+DeviceIntPtr xnestPointerDevice = NULL;
+
 void
 xnestChangePointerControl(DeviceIntPtr pDev, PtrCtrl *ctrl)
 {


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