Date: Mon, 7 Apr 1997 03:32:16 +0200 (MET DST) From: Tor Egge <Tor.Egge@idi.ntnu.no> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/3216: panic: pmap_zero_page: CMAP busy Message-ID: <199704070132.DAA03220@presis.idt.ntnu.no> Resent-Message-ID: <199704070430.VAA17604@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 3216 >Category: kern >Synopsis: panic: pmap_zero_page: CMAP busy >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Apr 6 21:30:12 PDT 1997 >Last-Modified: >Originator: Tor Egge >Organization: Norwegian University of Science and Technology, Trondheim, Norway >Release: FreeBSD 3.0-CURRENT i386 >Environment: FreeBSD-3.0 current as of Apr 6. >Description: while the processor is clearing pages in vm_page_zero_idle, interrupts are enabled. This might cause an attempt to call pmap_zero_page while it cannot be called. db> trace vget ffs_sync sync boot panic pmap_zero_page (probably via inlined vm_page_zero_fill) vm_fault trap_pfault trap calltrap trap 0xc, ... ip_input ipintr swi_net_next vm_page_zero_idle idle_loop >How-To-Repeat: High system load, causing the queues of pages to be zero-filled to be long. Then lower load, causing the idle_loop to be activated. Then a interrupt while pmap_zero_page is using CMAP2. >Fix: Alternative 1: Block some interrupts during the call to pmap_zero_page in vm_page_zero_idle. *** vm_machdep.c.orig Mon Apr 7 02:34:29 1997 --- vm_machdep.c Mon Apr 7 03:07:49 1997 *************** *** 883,889 **** --- 883,891 ---- --(*vm_page_queues[m->queue].lcnt); TAILQ_REMOVE(vm_page_queues[m->queue].pl, m, pageq); splx(s); + (void)splvm(); pmap_zero_page(VM_PAGE_TO_PHYS(m)); + splx(s); (void)splvm(); m->queue = PQ_ZERO + m->pc; ++(*vm_page_queues[m->queue].lcnt); Alternative 2: Introduce a modified clone of pmap zero_page, using CMAP3/CADDR3 instead of CMAP2/CADDR2, and call that clone in vm_page_zero_idle instead of the original. >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704070132.DAA03220>