From owner-freebsd-current Thu Jun 20 00:56:38 1996 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id AAA24838 for current-outgoing; Thu, 20 Jun 1996 00:56:38 -0700 (PDT) Received: from root.com (implode.root.com [198.145.90.17]) by freefall.freebsd.org (8.7.5/8.7.3) with ESMTP id AAA24833 for ; Thu, 20 Jun 1996 00:56:35 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by root.com (8.7.5/8.6.5) with SMTP id AAA03443; Thu, 20 Jun 1996 00:56:21 -0700 (PDT) Message-Id: <199606200756.AAA03443@root.com> X-Authentication-Warning: implode.root.com: Host localhost [127.0.0.1] didn't use HELO protocol To: John Capo cc: freebsd-current@freefall.freebsd.org (freebsd-current) Subject: Re: vm_bounce_alloc: Unmapped page In-reply-to: Your message of "Thu, 20 Jun 1996 00:54:47 EDT." <199606200454.AAA26797@irbs.irbs.com> From: David Greenman Reply-To: davidg@root.com Date: Thu, 20 Jun 1996 00:56:21 -0700 Sender: owner-current@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >I installed -current on a 486 with 32MB and an Adaptec 1542B >yesterday. I ran it hard for 24 hours with kernel sources from June >7 and vm_machdep.c 1.63 with no problems. > >A kernel from up to date sources panics early in the boot. The >core dump aborts at the 16Meg point with DMA past end of ISA message. >Booting the previous kernel, savecore barfs with the same message >and buffer already done messages. > >Current sources and vm_machdep.c 1.63 work fine. The new VM system >sure feels snappy. :-) The new versions of vmapbuf/vunmapbuf didn't account properly for a buffer not starting on a page boundry, resulting in not enough pages being mapped. The attached patch should fix this. -DG David Greenman Core-team/Principal Architect, The FreeBSD Project Index: vm_machdep.c =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/vm_machdep.c,v retrieving revision 1.65 diff -c -r1.65 vm_machdep.c *** vm_machdep.c 1996/06/20 01:47:21 1.65 --- vm_machdep.c 1996/06/20 07:55:22 *************** *** 691,697 **** if ((bp->b_flags & B_PHYS) == 0) panic("vmapbuf"); ! for (v = bp->b_saveaddr, addr = bp->b_data; addr < bp->b_data + bp->b_bufsize; addr += PAGE_SIZE, v += PAGE_SIZE) { /* --- 691,697 ---- if ((bp->b_flags & B_PHYS) == 0) panic("vmapbuf"); ! for (v = bp->b_saveaddr, addr = trunc_page(bp->b_data); addr < bp->b_data + bp->b_bufsize; addr += PAGE_SIZE, v += PAGE_SIZE) { /* *************** *** 726,732 **** if ((bp->b_flags & B_PHYS) == 0) panic("vunmapbuf"); ! for (addr = bp->b_data; addr < bp->b_data + bp->b_bufsize; addr += PAGE_SIZE) { pa = trunc_page(pmap_kextract((vm_offset_t) addr)); pmap_kremove((vm_offset_t) addr); --- 726,732 ---- if ((bp->b_flags & B_PHYS) == 0) panic("vunmapbuf"); ! for (addr = trunc_page(bp->b_data); addr < bp->b_data + bp->b_bufsize; addr += PAGE_SIZE) { pa = trunc_page(pmap_kextract((vm_offset_t) addr)); pmap_kremove((vm_offset_t) addr);