Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Jun 1996 00:56:21 -0700
From:      David Greenman <davidg@root.com>
To:        John Capo <jc@irbs.com>
Cc:        freebsd-current@freefall.freebsd.org (freebsd-current)
Subject:   Re: vm_bounce_alloc: Unmapped page 
Message-ID:  <199606200756.AAA03443@root.com>
In-Reply-To: Your message of "Thu, 20 Jun 1996 00:54:47 EDT." <199606200454.AAA26797@irbs.irbs.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
>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);



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