Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Mar 1999 02:29:08 +0900 (JST)
From:      tate@spa.is.uec.ac.jp
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        tate@spa.is.uec.ac.jp
Subject:   kern/10466: resume causes crashes if BIOS extmem != RTC extmem
Message-ID:  <199903071729.CAA00328@leaf.tate.nerv.org>

next in thread | raw e-mail | index | archive | help

>Number:         10466
>Category:       kern
>Synopsis:       resume causes crashes if BIOS extmem != RTC extmem
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Mar  7 09:30:00 PST 1999
>Closed-Date:
>Last-Modified:
>Originator:     TATEOKA Takamichi
>Release:        FreeBSD 2.2.8-RELEASE i386
>Organization:
University of Electro-Communications, Tokyo, JAPAN
>Environment:

Machine: TOSHIBA DynaBook SS Portage 3300 with 64MB memory (standard)
Kernel: FeeBSD 2.2.8-RELEASE i386 + PAO19990114

  At bootup, kernel says:
BIOS basemem (639K) != RTC basemem (640K), setting to BIOS value
BIOS extmem (64384K) != RTC extmem (64512K)

>Description:

  With or without APM support by kernel, resume from suspend
(with apm -z or power switch) causes kernel crash.  Crash pattern is
precarious (hang up, suddenly reboot or work a while and suddenly reboot).

>How-To-Repeat:

  Suspend the machine with "apm -z" or power switch, and resume from it.

>Fix:
	
  1. Set kernel configuration option "MAXMEM=(63*1024)".
     This shrinks memory usage and it worked.

  or

  2. Apply following patch to i386/i386/machdep.c .
     With this patch, kernel takes extmem value from BIOS instead of RTC
     when these values are different.
     I'm not sure we can trust BIOS value even when memory size is
     larger than 64M.  Anyway, some adustments is required, I think.


*** i386/i386/machdep.c.DIST	Fri Mar  5 16:53:05 1999
--- i386/i386/machdep.c	Mon Mar  8 01:13:35 1999
***************
*** 1143,1151 ****
  				*pte = pa | PG_RW | PG_V;
  			}
  		}
! 		if (bootinfo.bi_extmem != biosextmem)
! 			printf("BIOS extmem (%ldK) != RTC extmem (%dK)\n",
  			       bootinfo.bi_extmem, biosextmem);
  	}
  
  	pagesinbase = biosbasemem * 1024 / PAGE_SIZE;
--- 1143,1153 ----
  				*pte = pa | PG_RW | PG_V;
  			}
  		}
! 		if (bootinfo.bi_extmem != biosextmem){
! 			printf("BIOS extmem (%ldK) != RTC extmem (%dK), setting to BIOS value\n",
  			       bootinfo.bi_extmem, biosextmem);
+ 			biosextmem = bootinfo.bi_extmem;
+ 		}
  	}
  
  	pagesinbase = biosbasemem * 1024 / PAGE_SIZE;

>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199903071729.CAA00328>