linux-l: Hilfe (X will nicht mehr)

Bernd Classen bernd.classen at ifa.kf.tu-berlin.de
Mo Jun 15 17:42:59 CEST 1998


Nochmals hi,


>Hi,
>
>eine Herausforderung(?) für die Cracks...
>
>alles lief prima (2.0.33, XFree 3.2.2, gcc 2.7.2.3, glibc 2.0.6; keine
>Binaries, alles selbst compiliert), bis ....
>
>Kernel auf 2.0.34 gepatcht, jetzt mit gcc 2.8.1 compiliert (keine
>Probleme, ein paar warnings (zuviele "{" in der einen, zuviele "}" in der
>anderen Datei, bootet ohne zu klagen, alle Programme laufen),
>
>ALLE?, fast alle, bis auf XF86_S3 (und Konsorten wie Superprobe etc.). Es
>kommen zwar die ersten Anzeigen vom Server (Maus, Pfade, etc.) aber dann:
>"SPEICHERZUGRIFFSFEHLER" !!!
>... und das wars.
>
>X neu kompiliert (man hat ja sonst nichts zu tun), das gleiche
>"SPEICHERZUGRIFFSFEHLER" !!!
>
>2.0.34 "entpatcht" auf 2.0.33, neu kompiliert (wieder die warnings, die
>ich vorher nie hatte), das gleiche
>"SPEICHERZUGRIFFSFEHLER" !!!
>
>GottseiDank hatte ich noch mein altes 2.0.33 (s.o.) und ...
>
>X LAEUFT!!
>
>und ich 8-( ???
>
>wer hat 'ne Erklärung (oder besser: LÖSUNG; aber bitte nicht: laß doch
>dein altes 2.0.33)
>
>Danke
>Bernd
>
>
>

scheint ein bekanntes Problem zu sein (s. gnu.gcc.bug):



Uwe F. Mayer (mayer at math.vanderbilt.edu) wrote:
: I compiled a Linux kernel (versions 2.0.31, 2.0.33, 2.0.34) without
: problems, I installed the new kernel, and restarted the system. The
: machine hangs with a blank screen when it tries to start the X-windows
: system.

Here is the linux patch for this.  The change is copied from a 2.1 kernel.
The file is /usr/src/linux/arch/i386/kernel/ioport.c


*** ioport.c	1998/06/03 22:17:46	1.1
--- ioport.c	1998/06/12 20:36:59
***************
*** 73,78 ****
--- 73,79 ----
   * on system-call entry - see also fork() and the signal handling
   * code.
   */
+ #if 0
  asmlinkage int sys_iopl(long ebx,long ecx,long edx,
  	     long esi, long edi, long ebp, long eax, long ds,
  	     long es, long fs, long gs, long orig_eax,
***************
*** 87,89 ****
--- 88,104 ----
  	*(&eflags) = (eflags & 0xffffcfff) | (level << 12);
  	return 0;
  }
+ #else
+ asmlinkage int sys_iopl(unsigned long unused)
+ {
+ 	struct pt_regs * regs = (struct pt_regs *) &unused;
+ 	unsigned int level = regs->ebx;
+ 
+ 	if (level > 3)
+ 		return -EINVAL;
+ 	if (!suser() || securelevel > 0)
+ 		return -EPERM;
+ 	regs->eflags = (regs->eflags & 0xffffcfff) | (level << 12);
+ 	return 0;
+ }
+ #endif







Mehr Informationen über die Mailingliste linux-l