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>