Subject: port-sparc/2695: cgfour framebuffer will not work with X
To: None <gnats-bugs@NetBSD.ORG>
From: None <perseant@hitl.washington.edu>
List: netbsd-bugs
Date: 08/13/1996 09:28:53
>Number: 2695
>Category: port-sparc
>Synopsis: X dies on cgfour
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: gnats-admin (GNATS administrator)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Aug 13 12:50:05 1996
>Last-Modified:
>Originator:
>Organization:
-----------------------------------------------------------------------------
Konrad Schroder http://www.hitl.washington.edu/people/perseant/
System Administrator perseant@hitl.washington.edu
Human Interface Technology Lab
215 Fluke Hall (Box 352142) Voice: (206) 616-1478
University of Washington, 98195 FAX: (206) 543-5380
-----------------------------------------------------------------------------
>Release: 1.2_BETA (-current tar as of yesterday, 96.08.12)
>Environment:
System: NetBSD brezhnev 1.2_BETA NetBSD 1.2_BETA (HITL_SUN4) #7: Mon Aug 12 16:52:54 PDT 1996 perseant@toast:/usr/src_12/sys/arch/sparc/compile/HITL_SUN4 sparc
>Description:
The problem appears to be that X is allocating "too much" of the cgfour frame
buffer memory; and the current version of cgfour.c does not properly
accommodate its request. I don't know enough about the frame-buffer itself
to know how high one can actually map it without going too far, but the patch
seems to work.
>How-To-Repeat:
Compile a kernel with cgfour0, boot it, and type
X :0
>Fix:
These are (two lines') diffs to /usr/src/sys/arch/sparc/dev/cgfour.c:
*** cgfour.c.dist Tue Apr 2 04:32:39 1996
--- cgfour.c Tue Aug 13 09:30:02 1996
***************
*** 402,408 ****
panic("cgfourmap");
if ((u_int)off >= NOOVERLAY) {
! off =- NOOVERLAY;
/*
* X11 maps a huge chunk of the frame buffer; far more than
--- 402,408 ----
panic("cgfourmap");
if ((u_int)off >= NOOVERLAY) {
! off -= NOOVERLAY; /* was '=-' a.k.a. '= -' ?! */
/*
* X11 maps a huge chunk of the frame buffer; far more than
***************
*** 423,429 ****
* in enable plane
*/
poff = (off - START_ENABLE) + PFOUR_COLOR_OFF_ENABLE;
! } else if ((u_int)off < END_COLOR) {
/*
* in colour plane
*/
--- 423,429 ----
* in enable plane
*/
poff = (off - START_ENABLE) + PFOUR_COLOR_OFF_ENABLE;
! } else if ((u_int)off < 0x600000 ) /* more than there is? */ {
/*
* in colour plane
*/
>Audit-Trail:
>Unformatted: