Module Name: src Committed By: jym Date: Wed Jun 27 00:37:10 UTC 2012
Modified Files: src/sys/arch/amd64/amd64: machdep.c src/sys/arch/i386/conf: XEN3_DOMU src/sys/arch/i386/i386: locore.S machdep.c src/sys/arch/xen/conf: files.xen src/sys/arch/xen/include: xenpmap.h src/sys/arch/xen/include/i386: hypercalls.h src/sys/arch/xen/x86: x86_xpmap.c xen_bus_dma.c src/sys/arch/xen/xen: balloon.c if_xennet_xenbus.c privcmd.c xennetback_xenbus.c Log Message: Retire XEN_COMPAT_030001 as detailed on port-xen@: http://mail-index.netbsd.org/port-xen/2012/06/25/msg007431.html The xen_p2m API comes next. ok bouyer@. Tested on i386 PAE and amd64 (Xen 3.3 on private test bed, and Xen 3.4 for Amazon EC2). FWIW, Amazon always reported: hypervisor0 at mainbus0: Xen version 3.4.3-kaos_t1micro multiple times for Europe and US West-1, so I guess they are now at 3.4 (32 and 64 bits). To generate a diff of this commit: cvs rdiff -u -r1.186 -r1.187 src/sys/arch/amd64/amd64/machdep.c cvs rdiff -u -r1.43 -r1.44 src/sys/arch/i386/conf/XEN3_DOMU cvs rdiff -u -r1.100 -r1.101 src/sys/arch/i386/i386/locore.S cvs rdiff -u -r1.728 -r1.729 src/sys/arch/i386/i386/machdep.c cvs rdiff -u -r1.126 -r1.127 src/sys/arch/xen/conf/files.xen cvs rdiff -u -r1.35 -r1.36 src/sys/arch/xen/include/xenpmap.h cvs rdiff -u -r1.14 -r1.15 src/sys/arch/xen/include/i386/hypercalls.h cvs rdiff -u -r1.44 -r1.45 src/sys/arch/xen/x86/x86_xpmap.c cvs rdiff -u -r1.23 -r1.24 src/sys/arch/xen/x86/xen_bus_dma.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/xen/xen/balloon.c cvs rdiff -u -r1.59 -r1.60 src/sys/arch/xen/xen/if_xennet_xenbus.c cvs rdiff -u -r1.43 -r1.44 src/sys/arch/xen/xen/privcmd.c cvs rdiff -u -r1.47 -r1.48 src/sys/arch/xen/xen/xennetback_xenbus.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amd64/amd64/machdep.c diff -u src/sys/arch/amd64/amd64/machdep.c:1.186 src/sys/arch/amd64/amd64/machdep.c:1.187 --- src/sys/arch/amd64/amd64/machdep.c:1.186 Sat Jun 16 20:47:04 2012 +++ src/sys/arch/amd64/amd64/machdep.c Wed Jun 27 00:37:07 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.186 2012/06/16 20:47:04 dsl Exp $ */ +/* $NetBSD: machdep.c,v 1.187 2012/06/27 00:37:07 jym Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2000, 2006, 2007, 2008, 2011 @@ -111,7 +111,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.186 2012/06/16 20:47:04 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.187 2012/06/27 00:37:07 jym Exp $"); /* #define XENDEBUG_LOW */ @@ -1723,7 +1723,7 @@ init_x86_64(paddr_t first_avail) /* Determine physical address space */ avail_start = first_avail; avail_end = ctob(xen_start_info.nr_pages); - pmap_pa_start = XPMAP_OFFSET; + pmap_pa_start = 0; pmap_pa_end = pmap_pa_start + ctob(xen_start_info.nr_pages); __PRINTK(("pmap_pa_start 0x%lx avail_start 0x%lx avail_end 0x%lx\n", pmap_pa_start, avail_start, avail_end)); Index: src/sys/arch/i386/conf/XEN3_DOMU diff -u src/sys/arch/i386/conf/XEN3_DOMU:1.43 src/sys/arch/i386/conf/XEN3_DOMU:1.44 --- src/sys/arch/i386/conf/XEN3_DOMU:1.43 Sat Mar 10 21:51:53 2012 +++ src/sys/arch/i386/conf/XEN3_DOMU Wed Jun 27 00:37:08 2012 @@ -1,4 +1,4 @@ -# $NetBSD: XEN3_DOMU,v 1.43 2012/03/10 21:51:53 joerg Exp $ +# $NetBSD: XEN3_DOMU,v 1.44 2012/06/27 00:37:08 jym Exp $ include "arch/xen/conf/std.xen" @@ -166,7 +166,6 @@ options NFS_BOOT_DHCP,NFS_BOOT_BOOTPARA #options NFS_BOOTSTATIC_SERVER="\"server:/path/to/root\"" #options __XEN_INTERFACE_VERSION__=0x00030205 # Xen 3.1 interface -options XEN_COMPAT_030001 #compatible with Xen3 before 3.0.2 options MAXPHYS=32768 #xbd doesn't handle 64k transfers config netbsd root on ? type ? Index: src/sys/arch/i386/i386/locore.S diff -u src/sys/arch/i386/i386/locore.S:1.100 src/sys/arch/i386/i386/locore.S:1.101 --- src/sys/arch/i386/i386/locore.S:1.100 Sat Jun 16 17:30:19 2012 +++ src/sys/arch/i386/i386/locore.S Wed Jun 27 00:37:08 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.100 2012/06/16 17:30:19 chs Exp $ */ +/* $NetBSD: locore.S,v 1.101 2012/06/27 00:37:08 jym Exp $ */ /* * Copyright-o-rama! @@ -129,7 +129,7 @@ */ #include <machine/asm.h> -__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.100 2012/06/16 17:30:19 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.101 2012/06/27 00:37:08 jym Exp $"); #include "opt_compat_oldboot.h" #include "opt_ddb.h" @@ -169,18 +169,11 @@ __KERNEL_RCSID(0, "$NetBSD: locore.S,v 1 */ .section __xen_guest .ascii "GUEST_OS=netbsd,GUEST_VER=3.0,XEN_VER=xen-3.0" -#if defined(DOM0OPS) || !defined(XEN_COMPAT_030001) .ascii ",VIRT_BASE=0xc0000000" /* KERNBASE */ .ascii ",ELF_PADDR_OFFSET=0xc0000000" /* KERNBASE */ -#else - .ascii ",VIRT_BASE=0xc0100000" /* KERNTEXTOFF */ - .ascii ",ELF_PADDR_OFFSET=0xc0100000" /* KERNTEXTOFF */ -#endif .ascii ",VIRT_ENTRY=0xc0100000" /* KERNTEXTOFF */ -#if !defined(XEN_COMPAT_030001) .ascii ",HYPERCALL_PAGE=0x00000101" /* (???+HYPERCALL_PAGE_OFFSET)/PAGE_SIZE) */ -#endif #ifdef PAE .ascii ",PAE=yes[extended-cr3]" #endif @@ -824,13 +817,13 @@ start: addl $PDE_SIZE,%esp # pop paddr_t call _C_LABEL(main) -#if defined(XEN) && !defined(XEN_COMPAT_030001) +#if defined(XEN) /* space for the hypercall call page */ #define HYPERCALL_PAGE_OFFSET 0x1000 .org HYPERCALL_PAGE_OFFSET ENTRY(hypercall_page) .skip 0x1000 -#endif /* defined(XEN) && !defined(XEN_COMPAT_030001) */ +#endif /* defined(XEN) */ /* * void lgdt_finish(void); Index: src/sys/arch/i386/i386/machdep.c diff -u src/sys/arch/i386/i386/machdep.c:1.728 src/sys/arch/i386/i386/machdep.c:1.729 --- src/sys/arch/i386/i386/machdep.c:1.728 Sat Jun 2 21:36:41 2012 +++ src/sys/arch/i386/i386/machdep.c Wed Jun 27 00:37:08 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.728 2012/06/02 21:36:41 dsl Exp $ */ +/* $NetBSD: machdep.c,v 1.729 2012/06/27 00:37:08 jym Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2000, 2004, 2006, 2008, 2009 @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.728 2012/06/02 21:36:41 dsl Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.729 2012/06/27 00:37:08 jym Exp $"); #include "opt_beep.h" #include "opt_compat_ibcs2.h" @@ -1364,7 +1364,7 @@ init386(paddr_t first_avail) /* Make sure the end of the space used by the kernel is rounded. */ first_avail = round_page(first_avail); avail_start = first_avail; - avail_end = ctob((paddr_t)xen_start_info.nr_pages) + XPMAP_OFFSET; + avail_end = ctob((paddr_t)xen_start_info.nr_pages); pmap_pa_start = (KERNTEXTOFF - KERNBASE); pmap_pa_end = pmap_pa_start + ctob((paddr_t)xen_start_info.nr_pages); mem_clusters[0].start = avail_start; Index: src/sys/arch/xen/conf/files.xen diff -u src/sys/arch/xen/conf/files.xen:1.126 src/sys/arch/xen/conf/files.xen:1.127 --- src/sys/arch/xen/conf/files.xen:1.126 Mon May 7 17:45:29 2012 +++ src/sys/arch/xen/conf/files.xen Wed Jun 27 00:37:09 2012 @@ -1,4 +1,4 @@ -# $NetBSD: files.xen,v 1.126 2012/05/07 17:45:29 jym Exp $ +# $NetBSD: files.xen,v 1.127 2012/06/27 00:37:09 jym Exp $ # NetBSD: files.x86,v 1.10 2003/10/08 17:30:00 bouyer Exp # NetBSD: files.i386,v 1.254 2004/03/25 23:32:10 jmc Exp @@ -391,7 +391,7 @@ endif include "dev/pcmcia/files.pcmcia" # Domain-0 operations -defflag opt_xen.h DOM0OPS XEN_COMPAT_030001 +defflag opt_xen.h DOM0OPS file arch/xen/xen/privcmd.c dom0ops file arch/xen/x86/xen_shm_machdep.c dom0ops file arch/x86/pci/pci_machdep.c hypervisor & pci & dom0ops Index: src/sys/arch/xen/include/xenpmap.h diff -u src/sys/arch/xen/include/xenpmap.h:1.35 src/sys/arch/xen/include/xenpmap.h:1.36 --- src/sys/arch/xen/include/xenpmap.h:1.35 Sun Jun 24 18:31:52 2012 +++ src/sys/arch/xen/include/xenpmap.h Wed Jun 27 00:37:09 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: xenpmap.h,v 1.35 2012/06/24 18:31:52 jym Exp $ */ +/* $NetBSD: xenpmap.h,v 1.36 2012/06/27 00:37:09 jym Exp $ */ /* * @@ -76,20 +76,6 @@ void xen_kpm_sync(struct pmap *, int); extern unsigned long *xpmap_phys_to_machine_mapping; -/* - * On Xen-2, the start of the day virtual memory starts at KERNTEXTOFF - * (0xc0100000). On Xen-3 for domain0 it starts at KERNBASE (0xc0000000). - * So the offset between physical and virtual address is different on - * Xen-2 and Xen-3 for domain0. - * starting with xen-3.0.2, we can add notes so that virtual memory starts - * at KERNBASE for domU as well. - */ -#if defined(DOM0OPS) || !defined(XEN_COMPAT_030001) -#define XPMAP_OFFSET 0 -#else -#define XPMAP_OFFSET (KERNTEXTOFF - KERNBASE) -#endif - #define mfn_to_pfn(mfn) (machine_to_phys_mapping[(mfn)]) #define pfn_to_mfn(pfn) (xpmap_phys_to_machine_mapping[(pfn)]) @@ -97,8 +83,7 @@ static __inline paddr_t xpmap_mtop_masked(paddr_t mpa) { return ( - ((paddr_t)machine_to_phys_mapping[mpa >> PAGE_SHIFT] << PAGE_SHIFT) - + XPMAP_OFFSET); + (paddr_t)machine_to_phys_mapping[mpa >> PAGE_SHIFT] << PAGE_SHIFT); } static __inline paddr_t @@ -110,8 +95,8 @@ xpmap_mtop(paddr_t mpa) static __inline paddr_t xpmap_ptom_masked(paddr_t ppa) { - return (((paddr_t)xpmap_phys_to_machine_mapping[(ppa - - XPMAP_OFFSET) >> PAGE_SHIFT]) << PAGE_SHIFT); + return (((paddr_t)xpmap_phys_to_machine_mapping[(ppa) >> PAGE_SHIFT]) + << PAGE_SHIFT); } static __inline paddr_t Index: src/sys/arch/xen/include/i386/hypercalls.h diff -u src/sys/arch/xen/include/i386/hypercalls.h:1.14 src/sys/arch/xen/include/i386/hypercalls.h:1.15 --- src/sys/arch/xen/include/i386/hypercalls.h:1.14 Wed Dec 7 16:01:39 2011 +++ src/sys/arch/xen/include/i386/hypercalls.h Wed Jun 27 00:37:09 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: hypercalls.h,v 1.14 2011/12/07 16:01:39 cegger Exp $ */ +/* $NetBSD: hypercalls.h,v 1.15 2012/06/27 00:37:09 jym Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -59,7 +59,6 @@ #include <machine/pte.h> /* pt_entry_t */ -#if !defined(XEN_COMPAT_030001) /* hypercall via the hypercall call page */ #define __str(x) #x #define _str(x) __str(x) @@ -69,15 +68,6 @@ : output_const \ : input_const \ : "memory" ) -#else -/* traditionnal hypercall via int 0x82 */ -#define _hypercall(name, input_const, output_const) \ - __asm volatile ( \ - TRAP_INSTR \ - : output_const \ - : "0" (name), input_const \ - : "memory" ) -#endif #define _harg(...) __VA_ARGS__ Index: src/sys/arch/xen/x86/x86_xpmap.c diff -u src/sys/arch/xen/x86/x86_xpmap.c:1.44 src/sys/arch/xen/x86/x86_xpmap.c:1.45 --- src/sys/arch/xen/x86/x86_xpmap.c:1.44 Wed Jun 6 22:22:41 2012 +++ src/sys/arch/xen/x86/x86_xpmap.c Wed Jun 27 00:37:10 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: x86_xpmap.c,v 1.44 2012/06/06 22:22:41 rmind Exp $ */ +/* $NetBSD: x86_xpmap.c,v 1.45 2012/06/27 00:37:10 jym Exp $ */ /* * Copyright (c) 2006 Mathieu Ropert <m...@adviseo.fr> @@ -69,7 +69,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: x86_xpmap.c,v 1.44 2012/06/06 22:22:41 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: x86_xpmap.c,v 1.45 2012/06/27 00:37:10 jym Exp $"); #include "opt_xen.h" #include "opt_ddb.h" @@ -235,7 +235,7 @@ xpq_queue_machphys_update(paddr_t ma, pa "\n", (int64_t)ma, (int64_t)pa)); xpq_queue[xpq_idx].ptr = ma | MMU_MACHPHYS_UPDATE; - xpq_queue[xpq_idx].val = (pa - XPMAP_OFFSET) >> PAGE_SHIFT; + xpq_queue[xpq_idx].val = pa >> PAGE_SHIFT; xpq_increment_idx(); #ifdef XENDEBUG_SYNC xpq_flush_queue(); Index: src/sys/arch/xen/x86/xen_bus_dma.c diff -u src/sys/arch/xen/x86/xen_bus_dma.c:1.23 src/sys/arch/xen/x86/xen_bus_dma.c:1.24 --- src/sys/arch/xen/x86/xen_bus_dma.c:1.23 Fri Jul 1 18:37:08 2011 +++ src/sys/arch/xen/x86/xen_bus_dma.c Wed Jun 27 00:37:10 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: xen_bus_dma.c,v 1.23 2011/07/01 18:37:08 dyoung Exp $ */ +/* $NetBSD: xen_bus_dma.c,v 1.24 2012/06/27 00:37:10 jym Exp $ */ /* NetBSD bus_dma.c,v 1.21 2005/04/16 07:53:35 yamt Exp */ /*- @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xen_bus_dma.c,v 1.23 2011/07/01 18:37:08 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xen_bus_dma.c,v 1.24 2012/06/27 00:37:10 jym Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -91,7 +91,7 @@ _xen_alloc_contig(bus_size_t size, bus_s pa = VM_PAGE_TO_PHYS(pg); mfn = xpmap_ptom(pa) >> PAGE_SHIFT; xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT] = INVALID_P2M_ENTRY; + pa >> PAGE_SHIFT] = INVALID_P2M_ENTRY; xenguest_handle(res.extent_start) = &mfn; res.nr_extents = 1; res.extent_order = 0; @@ -104,8 +104,7 @@ _xen_alloc_contig(bus_size_t size, bus_s "failed: err %d (pa %#" PRIxPADDR " mfn %#lx)\n", error, pa, mfn); #endif - xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT] = mfn; + xpmap_phys_to_machine_mapping[pa >> PAGE_SHIFT] = mfn; error = ENOMEM; goto failed; @@ -133,8 +132,7 @@ _xen_alloc_contig(bus_size_t size, bus_s for (pg = mlistp->tqh_first, i = 0; pg != NULL; pg = pgnext, i++) { pgnext = pg->pageq.queue.tqe_next; pa = VM_PAGE_TO_PHYS(pg); - xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT] = mfn+i; + xpmap_phys_to_machine_mapping[pa >> PAGE_SHIFT] = mfn+i; xpq_queue_machphys_update(((paddr_t)(mfn+i)) << PAGE_SHIFT, pa); /* while here, give extra pages back to UVM */ if (i >= npagesreq) { @@ -178,8 +176,7 @@ failed: break; } pa = VM_PAGE_TO_PHYS(pg); - xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT] = mfn; + xpmap_phys_to_machine_mapping[pa >> PAGE_SHIFT] = mfn; xpq_queue_machphys_update(((paddr_t)mfn) << PAGE_SHIFT, pa); TAILQ_REMOVE(mlistp, pg, pageq.queue); uvm_pagefree(pg); Index: src/sys/arch/xen/xen/balloon.c diff -u src/sys/arch/xen/xen/balloon.c:1.13 src/sys/arch/xen/xen/balloon.c:1.14 --- src/sys/arch/xen/xen/balloon.c:1.13 Thu Jan 5 18:11:50 2012 +++ src/sys/arch/xen/xen/balloon.c Wed Jun 27 00:37:10 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: balloon.c,v 1.13 2012/01/05 18:11:50 jym Exp $ */ +/* $NetBSD: balloon.c,v 1.14 2012/06/27 00:37:10 jym Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -71,7 +71,7 @@ #define BALLOONDEBUG 0 #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: balloon.c,v 1.13 2012/01/05 18:11:50 jym Exp $"); +__KERNEL_RCSID(0, "$NetBSD: balloon.c,v 1.14 2012/06/27 00:37:10 jym Exp $"); #include <sys/inttypes.h> #include <sys/device.h> @@ -400,8 +400,7 @@ balloon_inflate(struct balloon_xenbus_so /* Invalidate pg */ xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT - ] = INVALID_P2M_ENTRY; + pa >> PAGE_SHIFT] = INVALID_P2M_ENTRY; splx(s); @@ -518,7 +517,7 @@ balloon_deflate(struct balloon_xenbus_so s = splvm(); xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT] = mfn_list[rpages]; + pa >> PAGE_SHIFT] = mfn_list[rpages]; xpq_queue_machphys_update( ((paddr_t) (mfn_list[rpages])) << PAGE_SHIFT, pa); Index: src/sys/arch/xen/xen/if_xennet_xenbus.c diff -u src/sys/arch/xen/xen/if_xennet_xenbus.c:1.59 src/sys/arch/xen/xen/if_xennet_xenbus.c:1.60 --- src/sys/arch/xen/xen/if_xennet_xenbus.c:1.59 Wed Feb 22 18:54:51 2012 +++ src/sys/arch/xen/xen/if_xennet_xenbus.c Wed Jun 27 00:37:10 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: if_xennet_xenbus.c,v 1.59 2012/02/22 18:54:51 bouyer Exp $ */ +/* $NetBSD: if_xennet_xenbus.c,v 1.60 2012/06/27 00:37:10 jym Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -85,7 +85,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.59 2012/02/22 18:54:51 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.60 2012/06/27 00:37:10 jym Exp $"); #include "opt_xen.h" #include "opt_nfs_boot.h" @@ -731,7 +731,7 @@ xennet_alloc_rx_buffer(struct xennet_xen * Remove this page from pseudo phys map before * passing back to Xen. */ - pfn = (req->rxreq_pa - XPMAP_OFFSET) >> PAGE_SHIFT; + pfn = req->rxreq_pa >> PAGE_SHIFT; xennet_pages[i] = xpmap_phys_to_machine_mapping[pfn]; xpmap_phys_to_machine_mapping[pfn] = INVALID_P2M_ENTRY; } @@ -838,12 +838,12 @@ xennet_free_rx_buffer(struct xennet_xenb va = rxreq->rxreq_va; /* remap the page */ mmu[0].ptr = (ma << PAGE_SHIFT) | MMU_MACHPHYS_UPDATE; - mmu[0].val = ((pa - XPMAP_OFFSET) >> PAGE_SHIFT); + mmu[0].val = pa >> PAGE_SHIFT; MULTI_update_va_mapping(&mcl[0], va, (ma << PAGE_SHIFT) | PG_V | PG_KW, UVMF_TLB_FLUSH|UVMF_ALL); xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT] = ma; + pa >> PAGE_SHIFT] = ma; mcl[1].op = __HYPERVISOR_mmu_update; mcl[1].args[0] = (unsigned long)mmu; mcl[1].args[1] = 1; @@ -1036,11 +1036,10 @@ again: if (sc->sc_rx_feature == FEATURE_RX_FLIP) { /* remap the page */ mmu[0].ptr = (ma << PAGE_SHIFT) | MMU_MACHPHYS_UPDATE; - mmu[0].val = ((pa - XPMAP_OFFSET) >> PAGE_SHIFT); + mmu[0].val = pa >> PAGE_SHIFT; MULTI_update_va_mapping(&mcl[0], va, (ma << PAGE_SHIFT) | PG_V | PG_KW, UVMF_TLB_FLUSH|UVMF_ALL); - xpmap_phys_to_machine_mapping[ - (pa - XPMAP_OFFSET) >> PAGE_SHIFT] = ma; + xpmap_phys_to_machine_mapping[pa >> PAGE_SHIFT] = ma; mcl[1].op = __HYPERVISOR_mmu_update; mcl[1].args[0] = (unsigned long)mmu; mcl[1].args[1] = 1; Index: src/sys/arch/xen/xen/privcmd.c diff -u src/sys/arch/xen/xen/privcmd.c:1.43 src/sys/arch/xen/xen/privcmd.c:1.44 --- src/sys/arch/xen/xen/privcmd.c:1.43 Wed Jun 15 19:51:50 2011 +++ src/sys/arch/xen/xen/privcmd.c Wed Jun 27 00:37:10 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: privcmd.c,v 1.43 2011/06/15 19:51:50 rmind Exp $ */ +/* $NetBSD: privcmd.c,v 1.44 2012/06/27 00:37:10 jym Exp $ */ /*- * Copyright (c) 2004 Christian Limpach. @@ -27,7 +27,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.43 2011/06/15 19:51:50 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.44 2012/06/27 00:37:10 jym Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -286,13 +286,9 @@ privcmd_ioctl(void *v) "movl 16(%%eax),%%esi ;" "movl 20(%%eax),%%edi ;" "movl (%%eax),%%eax ;" -#if !defined(XEN_COMPAT_030001) "shll $5,%%eax ;" "addl $hypercall_page,%%eax ;" "call *%%eax ;" -#else - TRAP_INSTR "; " -#endif "popl %%edi; popl %%esi; popl %%edx;" "popl %%ecx; popl %%ebx" : "=a" (error) : "0" (ap->a_data) : "memory" ); Index: src/sys/arch/xen/xen/xennetback_xenbus.c diff -u src/sys/arch/xen/xen/xennetback_xenbus.c:1.47 src/sys/arch/xen/xen/xennetback_xenbus.c:1.48 --- src/sys/arch/xen/xen/xennetback_xenbus.c:1.47 Sun Aug 28 22:36:17 2011 +++ src/sys/arch/xen/xen/xennetback_xenbus.c Wed Jun 27 00:37:10 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: xennetback_xenbus.c,v 1.47 2011/08/28 22:36:17 jym Exp $ */ +/* $NetBSD: xennetback_xenbus.c,v 1.48 2012/06/27 00:37:10 jym Exp $ */ /* * Copyright (c) 2006 Manuel Bouyer. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xennetback_xenbus.c,v 1.47 2011/08/28 22:36:17 jym Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xennetback_xenbus.c,v 1.48 2012/06/27 00:37:10 jym Exp $"); #include "opt_xen.h" @@ -1048,9 +1048,8 @@ xennetback_ifsoftstart_transfer(void *ar * transfers the page containing the packet to the * remote domain, and map newp in place. */ - xpmap_phys_to_machine_mapping[ - (xmit_pa - XPMAP_OFFSET) >> PAGE_SHIFT] = - newp_ma >> PAGE_SHIFT; + xpmap_phys_to_machine_mapping[xmit_pa >> PAGE_SHIFT] + = newp_ma >> PAGE_SHIFT; MULTI_update_va_mapping(mclp, xmit_va, newp_ma | PG_V | PG_RW | PG_U | PG_M, 0); mclp++; @@ -1059,7 +1058,7 @@ xennetback_ifsoftstart_transfer(void *ar gop++; mmup->ptr = newp_ma | MMU_MACHPHYS_UPDATE; - mmup->val = (xmit_pa - XPMAP_OFFSET) >> PAGE_SHIFT; + mmup->val = xmit_pa >> PAGE_SHIFT; mmup++; /* done with this packet */