From owner-svn-src-projects@FreeBSD.ORG Tue Jan 8 15:23:39 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 59864B5F; Tue, 8 Jan 2013 15:23:39 +0000 (UTC) (envelope-from cherry@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2FB56883; Tue, 8 Jan 2013 15:23:39 +0000 (UTC) Received: from svn.freebsd.org (svn.FreeBSD.org [8.8.178.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r08FNdOJ007126; Tue, 8 Jan 2013 15:23:39 GMT (envelope-from cherry@svn.freebsd.org) Received: (from cherry@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r08FNdTd007125; Tue, 8 Jan 2013 15:23:39 GMT (envelope-from cherry@svn.freebsd.org) Message-Id: <201301081523.r08FNdTd007125@svn.freebsd.org> From: "Cherry G. Mathew" Date: Tue, 8 Jan 2013 15:23:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r245166 - projects/amd64_xen_pv/sys/amd64/amd64 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.14 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: Tue, 08 Jan 2013 15:23:39 -0000 Author: cherry Date: Tue Jan 8 15:23:38 2013 New Revision: 245166 URL: http://svnweb.freebsd.org/changeset/base/245166 Log: Xen uses vtopte_hold/release() because we do not have dmap. Approved by: gibbs (implicit) Modified: projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c Modified: projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c ============================================================================== --- projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c Tue Jan 8 15:22:03 2013 (r245165) +++ projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c Tue Jan 8 15:23:38 2013 (r245166) @@ -42,6 +42,10 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef XEN +#include +#endif + #include /* @@ -66,6 +70,8 @@ db_read_bytes(vm_offset_t addr, size_t s return (ret); } +/* XXX: Best to redo this entirely for XEN */ + /* * Write bytes to kernel address space for debugger. */ @@ -88,7 +94,19 @@ db_write_bytes(vm_offset_t addr, size_t if (addr > trunc_page((vm_offset_t)btext) - size && addr < round_page((vm_offset_t)etext)) { +#ifdef XEN + static size_t tsz; /* mmu_map.h opaque cookie size */ + tsz = mmu_map_t_size(); + KASSERT(tsz != 0, ("tsz != 0")); + char tbuf0[tsz]; /* Safe to do this on the stack since tsz is + * effectively const. + */ + + mmu_map_t tptr0 = tbuf0; + ptep0 = vtopte_hold(addr, &tptr0); +#else ptep0 = vtopte(addr); +#endif oldmap0 = *ptep0; *ptep0 |= PG_RW; @@ -99,20 +117,38 @@ db_write_bytes(vm_offset_t addr, size_t if ((*ptep0 & PG_PS) == 0) { addr1 = trunc_page(addr + size - 1); if (trunc_page(addr) != addr1) { +#ifdef XEN + KASSERT(tsz != 0, ("tsz != 0")); + char tbuf1[tsz]; /* Safe to do this on the stack since tsz is + * effectively const. + */ + + mmu_map_t tptr1 = tbuf1; + ptep1 = vtopte_hold(addr1, &tptr1); +#else ptep1 = vtopte(addr1); +#endif /* XEN */ oldmap1 = *ptep1; *ptep1 |= PG_RW; +#ifdef XEN + vtopte_release(addr1, &tptr1); +#endif /* XEN */ } } else { +#ifndef XEN addr1 = trunc_2mpage(addr + size - 1); if (trunc_2mpage(addr) != addr1) { ptep1 = vtopte(addr1); oldmap1 = *ptep1; *ptep1 |= PG_RW; } +#endif /* !XEN */ } invltlb(); +#ifdef XEN + vtopte_release(addr, &tptr0); +#endif /* XEN */ } dst = (char *)addr;