From owner-p4-projects@FreeBSD.ORG Sun Mar 26 22:21:30 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F2E0B16A422; Sun, 26 Mar 2006 22:21:29 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CF69E16A400 for ; Sun, 26 Mar 2006 22:21:29 +0000 (UTC) (envelope-from cognet@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9D2EC43D46 for ; Sun, 26 Mar 2006 22:21:29 +0000 (GMT) (envelope-from cognet@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k2QMLTdD047270 for ; Sun, 26 Mar 2006 22:21:29 GMT (envelope-from cognet@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k2QMLTmH047267 for perforce@freebsd.org; Sun, 26 Mar 2006 22:21:29 GMT (envelope-from cognet@freebsd.org) Date: Sun, 26 Mar 2006 22:21:29 GMT Message-Id: <200603262221.k2QMLTmH047267@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to cognet@freebsd.org using -f From: Olivier Houchard To: Perforce Change Reviews Cc: Subject: PERFORCE change 94088 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Mar 2006 22:21:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=94088 Change 94088 by cognet@cognet on 2006/03/26 22:21:19 Try to workaround the panic in pmap_remove_pages() by not attempting to do anything if the pt has already been cleared. This should not happen, so this is by no mean a fix, just a temporary bandaid until I figure out how it happens. Affected files ... .. //depot/projects/arm/src/sys/arm/arm/pmap.c#13 edit Differences ... ==== //depot/projects/arm/src/sys/arm/arm/pmap.c#13 (text+ko) ==== @@ -2833,6 +2833,12 @@ l2b = pmap_get_l2_bucket(pmap, pv->pv_va); KASSERT(l2b != NULL, ("No L2 bucket in pmap_remove_pages")); pt = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; + if ((*pt & L2_ADDR_MASK) == 0) { + npv = TAILQ_NEXT(pv, pv_plist); + TAILQ_REMOVE(&pmap->pm_pvlist, pv, pv_plist); + pmap_free_pv_entry(pv); + continue; + } m = PHYS_TO_VM_PAGE(*pt & L2_ADDR_MASK); *pt = 0; PTE_SYNC(pt);