From owner-svn-src-user@FreeBSD.ORG Wed Nov 25 02:39:12 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 643D5106566B; Wed, 25 Nov 2009 02:39:12 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5370E8FC0C; Wed, 25 Nov 2009 02:39:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nAP2dCiX036825; Wed, 25 Nov 2009 02:39:12 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nAP2dCW7036820; Wed, 25 Nov 2009 02:39:12 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200911250239.nAP2dCW7036820@svn.freebsd.org> From: Kip Macy Date: Wed, 25 Nov 2009 02:39:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r199779 - in user/kmacy/releng_8_fcs_buf_xen/sys/i386: i386 include xen X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Nov 2009 02:39:12 -0000 Author: kmacy Date: Wed Nov 25 02:39:11 2009 New Revision: 199779 URL: http://svn.freebsd.org/changeset/base/199779 Log: fix compile for i386 and i386-xen builds Modified: user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/minidump_machdep.c user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/pmap.c user/kmacy/releng_8_fcs_buf_xen/sys/i386/include/md_var.h user/kmacy/releng_8_fcs_buf_xen/sys/i386/xen/pmap.c Modified: user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/minidump_machdep.c ============================================================================== --- user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/minidump_machdep.c Wed Nov 25 02:38:20 2009 (r199778) +++ user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/minidump_machdep.c Wed Nov 25 02:39:11 2009 (r199779) @@ -54,6 +54,7 @@ CTASSERT(sizeof(struct kerneldumpheader) #define DEV_ALIGN(x) (((off_t)(x) + (DEV_BSIZE-1)) & ~(DEV_BSIZE-1)) uint32_t *vm_page_dump; +uint32_t *vm_page_dump_exclude; int vm_page_dump_size; static struct kerneldumpheader kdh; Modified: user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/pmap.c ============================================================================== --- user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/pmap.c Wed Nov 25 02:38:20 2009 (r199778) +++ user/kmacy/releng_8_fcs_buf_xen/sys/i386/i386/pmap.c Wed Nov 25 02:39:11 2009 (r199779) @@ -1245,17 +1245,25 @@ pmap_map(vm_offset_t *virt, vm_paddr_t s * Note: SMP coherent. Uses a ranged shootdown IPI. */ void -pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count) +pmap_qenter_prot(vm_offset_t sva, vm_page_t *ma, int count, vm_prot_t prot) { pt_entry_t *endpte, oldpte, *pte; + uint64_t flags = PG_V; + if (prot & VM_PROT_WRITE) + flags |= PG_RW; + if ((prot & VM_PROT_EXECUTE) == 0) + flags |= PG_NX; + oldpte = 0; pte = vtopte(sva); endpte = pte + count; while (pte < endpte) { oldpte |= *pte; pte_store(pte, VM_PAGE_TO_PHYS(*ma) | pgeflag | - pmap_cache_bits((*ma)->md.pat_mode, 0) | PG_RW | PG_V); + pmap_cache_bits((*ma)->md.pat_mode, 0) | flags | PG_V); + if (prot & VM_PROT_EXCLUDE) + dump_exclude_page(VM_PAGE_TO_PHYS(*ma)); pte++; ma++; } @@ -1264,6 +1272,16 @@ pmap_qenter(vm_offset_t sva, vm_page_t * PAGE_SIZE); } + +void +pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count) +{ + + pmap_qenter_prot(sva, ma, count, + VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); + +} + /* * This routine tears out page mappings from the * kernel -- it is meant only for temporary mappings. Modified: user/kmacy/releng_8_fcs_buf_xen/sys/i386/include/md_var.h ============================================================================== --- user/kmacy/releng_8_fcs_buf_xen/sys/i386/include/md_var.h Wed Nov 25 02:38:20 2009 (r199778) +++ user/kmacy/releng_8_fcs_buf_xen/sys/i386/include/md_var.h Wed Nov 25 02:39:11 2009 (r199779) @@ -72,6 +72,7 @@ extern int szfreebsd4_sigcode; extern int szosigcode; #endif extern uint32_t *vm_page_dump; +extern uint32_t *vm_page_dump_exclude; extern int vm_page_dump_size; typedef void alias_for_inthand_t(u_int cs, u_int ef, u_int esp, u_int ss); Modified: user/kmacy/releng_8_fcs_buf_xen/sys/i386/xen/pmap.c ============================================================================== --- user/kmacy/releng_8_fcs_buf_xen/sys/i386/xen/pmap.c Wed Nov 25 02:38:20 2009 (r199778) +++ user/kmacy/releng_8_fcs_buf_xen/sys/i386/xen/pmap.c Wed Nov 25 02:39:11 2009 (r199779) @@ -1323,7 +1323,7 @@ pmap_map(vm_offset_t *virt, vm_paddr_t s * Note: SMP coherent. Uses a ranged shootdown IPI. */ void -pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count) +pmap_qenter_prot(vm_offset_t sva, vm_page_t *ma, int count, vm_prot_t prot) { pt_entry_t *endpte, *pte; vm_paddr_t pa; @@ -1332,12 +1332,22 @@ pmap_qenter(vm_offset_t sva, vm_page_t * multicall_entry_t mcl[16]; multicall_entry_t *mclp = mcl; int error; +#ifdef PAE + uint64_t flags = PG_V; + if ((prot & VM_PROT_EXECUTE) == 0) + flags |= PG_NX; +#else + uint32_t flags = 0; +#endif + + if (prot & VM_PROT_WRITE) + flags |= PG_RW; CTR2(KTR_PMAP, "pmap_qenter:sva=0x%x count=%d", va, count); pte = vtopte(sva); endpte = pte + count; while (pte < endpte) { - pa = xpmap_ptom(VM_PAGE_TO_PHYS(*ma)) | pgeflag | PG_RW | PG_V | PG_M | PG_A; + pa = xpmap_ptom(VM_PAGE_TO_PHYS(*ma)) | pgeflag | flags | PG_V | PG_M | PG_A; mclp->op = __HYPERVISOR_update_va_mapping; mclp->args[0] = va; @@ -1368,6 +1378,14 @@ pmap_qenter(vm_offset_t sva, vm_page_t * #endif } +void +pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count) +{ + + pmap_qenter_prot(sva, ma, count, + VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE); + +} /* * This routine tears out page mappings from the