Date: Tue, 23 Dec 1997 20:34:14 +0100 (CET)
From: Geert Uytterhoeven <Geert.Uytterhoeven@cs.kuleuven.ac.be>
To: "Ole J. Røtne" <olejr@online.no>
cc: linux-m68k@lists.linux-m68k.org
Subject: Re: L68K: Jingle 2.0.33 & X11
In-Reply-To: <2030.296T1506T10033892@online.no>
Sender: owner-linux-m68k@phil.uni-sb.de

On 23 Dec 1997, Ole J. Røtne wrote:
> Frank Neumann wrote something like:
> >I noticed something similar - I start X manually, but always get a message
> >like 'xf86MapVidMem: Unable to mmap framebuffer'. I already heard the same
> >problem from others.
> 
> >Geert, this seems to be due to your 'mmio' patches in drivers/char/fbmem.c.
> >I don't know what exactly is wrong there, but it must be in these lines:
> 
> >(function fb_mmap())
> >[..]
> >    if (vma->vm_offset < fix.smem_len) {
> >        /* frame buffer memory */
> >        start = fix.smem_start;
> >        len = fix.smem_len;
> >    } else {
> >        /* memory mapped io */
> >        start = fix.mmio_start;
> >        len = fix.mmio_len;
> >        vma->vm_offset -= fix.smem_len;
> 
> >Could you look into this? I get the above error message on clgen as well.
> 
> The problem are in fb_mmap().. I removed this:

	[...]

> And now X is working again.. Don't know what else is broken though..
> Hope this helps somewhat...

Yes, there were _two_ calls to fb->fb_get_fix(): one that did the old thing,
and one that did the new thing. The old thing should be removed:

--- m68k-2.0.33/drivers/char/fbmem.c.orig	Mon Dec 22 22:09:20 1997
+++ m68k-2.0.33/drivers/char/fbmem.c	Thu Dec 25 11:49:47 1997
@@ -260,18 +260,6 @@
 		/* Use no-cache mode, serialized */
                 pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE_S;
         }
-
-	fb->fb_get_fix(&fix, PROC_CONSOLE(), fbidx);
-	if ((vma->vm_end - vma->vm_start + vma->vm_offset) > fix.smem_len)
-		return -EINVAL;
-	vma->vm_offset += (unsigned long)fix.smem_start;
-	if (vma->vm_offset & ~PAGE_MASK)
-		return -ENXIO;
-	if (CPU_IS_040_OR_060) {
-		pgprot_val(vma->vm_page_prot) &= _CACHEMASK040;
-		/* Use write-through cache mode */
-		pgprot_val(vma->vm_page_prot) |= _PAGE_NOCACHE_S;
-	}
 	if (remap_page_range(vma->vm_start, vma->vm_offset,
 			     vma->vm_end - vma->vm_start, vma->vm_page_prot))
 		return -EAGAIN;

Greetings,

						Geert

--
Geert Uytterhoeven                     Geert.Uytterhoeven@cs.kuleuven.ac.be
Wavelets, Linux/{m68k~Amiga,PPC~CHRP}  http://www.cs.kuleuven.ac.be/~geert/
Department of Computer Science -- Katholieke Universiteit Leuven -- Belgium

