From owner-svn-src-projects@FreeBSD.ORG Thu Apr 17 09:21:58 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CF0FC295; Thu, 17 Apr 2014 09:21:58 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BBF8811AE; Thu, 17 Apr 2014 09:21:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s3H9Lwmv051197; Thu, 17 Apr 2014 09:21:58 GMT (envelope-from cherry@svn.freebsd.org) Received: (from cherry@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s3H9LwoY051195; Thu, 17 Apr 2014 09:21:58 GMT (envelope-from cherry@svn.freebsd.org) Message-Id: <201404170921.s3H9LwoY051195@svn.freebsd.org> From: "Cherry G. Mathew" Date: Thu, 17 Apr 2014 09:21:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r264584 - projects/amd64_xen_pv/sys/amd64/xen X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Apr 2014 09:21:58 -0000 Author: cherry Date: Thu Apr 17 09:21:58 2014 New Revision: 264584 URL: http://svnweb.freebsd.org/changeset/base/264584 Log: Implement pmap_extract() for userland. Single user boot should now happen for 64M ram. Approved by: gibbs (implicit) Modified: projects/amd64_xen_pv/sys/amd64/xen/pmap.c Modified: projects/amd64_xen_pv/sys/amd64/xen/pmap.c ============================================================================== --- projects/amd64_xen_pv/sys/amd64/xen/pmap.c Thu Apr 17 09:14:52 2014 (r264583) +++ projects/amd64_xen_pv/sys/amd64/xen/pmap.c Thu Apr 17 09:21:58 2014 (r264584) @@ -1646,9 +1646,31 @@ pmap_remove_all(vm_page_t m) vm_paddr_t pmap_extract(pmap_t pmap, vm_offset_t va) { - KASSERT(pmap == kernel_pmap, ("XXX: %s: TODO\n", __func__)); - return pmap_kextract(va); + if (pmap == kernel_pmap) { + return pmap_kextract(va); + } + + pt_entry_t *pte; + vm_paddr_t ma = 0; + + + /* Walk the PT hierarchy to get the ma */ + char tbuf[tsz]; /* Safe to do this on the stack since tsz is + * effectively const. + */ + + mmu_map_t tptr = tbuf; + + pte = pmap_vtopte_inspect(pmap, va, &tptr); + + if (pte != NULL && (*pte & PG_V)) { + ma = (*pte & PG_FRAME) | (va & PAGE_MASK); + } + + pmap_vtopte_release(pmap, va, &tptr); + + return xpmap_mtop(ma); } vm_page_t