Module Name: src Committed By: snj Date: Wed Sep 30 00:08:03 UTC 2009
Modified Files: src/sys/arch/i386/i386 [netbsd-5]: db_memrw.c src/sys/arch/i386/include [netbsd-5]: param.h src/sys/arch/xen/include [netbsd-5]: xenpmap.h src/sys/arch/xen/xen [netbsd-5]: xenevt.c Added Files: src/sys/arch/i386/conf [netbsd-5]: XEN3PAE_DOM0 Log Message: Pull up following revision(s) (requested by bouyer in ticket #1040): sys/arch/i386/include/param.h: revision 1.71 sys/arch/i386/i386/db_memrw.c: revision 1.25 sys/arch/xen/include/xenpmap.h: revision 1.22 sys/arch/xen/xen/xenevt.c: revision 1.31 More i386PAE fixes: - x86_round_page, x86_trunc_page, x86_btop and x86_ptob macros are used with physical addresses; cast to paddr_t instead of u_long. Issue pointed out by jym@ - machine_to_phys_mapping[] is a long. This is fine as it holds page frame numbers (and this fits in a 32bit int as physical addresses are only 36bits), but cast to paddr_t before << PAGE_SHIFT - xen_start_info.store_mfn is a long; cast it to paddr_t before << PAGE_SHIFT. should fix issue pointed out by cegger@ To generate a diff of this commit: cvs rdiff -u -r0 -r1.1.8.2 src/sys/arch/i386/conf/XEN3PAE_DOM0 cvs rdiff -u -r1.24 -r1.24.10.1 src/sys/arch/i386/i386/db_memrw.c cvs rdiff -u -r1.67.30.3 -r1.67.30.4 src/sys/arch/i386/include/param.h cvs rdiff -u -r1.21 -r1.21.4.1 src/sys/arch/xen/include/xenpmap.h cvs rdiff -u -r1.29.4.1 -r1.29.4.2 src/sys/arch/xen/xen/xenevt.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/i386/i386/db_memrw.c diff -u src/sys/arch/i386/i386/db_memrw.c:1.24 src/sys/arch/i386/i386/db_memrw.c:1.24.10.1 --- src/sys/arch/i386/i386/db_memrw.c:1.24 Mon Apr 28 20:23:24 2008 +++ src/sys/arch/i386/i386/db_memrw.c Wed Sep 30 00:08:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: db_memrw.c,v 1.24 2008/04/28 20:23:24 martin Exp $ */ +/* $NetBSD: db_memrw.c,v 1.24.10.1 2009/09/30 00:08:03 snj Exp $ */ /*- * Copyright (c) 1996, 2000 The NetBSD Foundation, Inc. @@ -49,7 +49,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_memrw.c,v 1.24 2008/04/28 20:23:24 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_memrw.c,v 1.24.10.1 2009/09/30 00:08:03 snj Exp $"); #include "opt_xen.h" @@ -125,7 +125,7 @@ if (oldpte & PG_PS) pgva = (vaddr_t)dst & PG_LGFRAME; else - pgva = x86_trunc_page(dst); + pgva = x86_trunc_page((vaddr_t)dst); /* * Compute number of bytes that can be written Index: src/sys/arch/i386/include/param.h diff -u src/sys/arch/i386/include/param.h:1.67.30.3 src/sys/arch/i386/include/param.h:1.67.30.4 --- src/sys/arch/i386/include/param.h:1.67.30.3 Mon Feb 16 03:06:21 2009 +++ src/sys/arch/i386/include/param.h Wed Sep 30 00:08:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: param.h,v 1.67.30.3 2009/02/16 03:06:21 snj Exp $ */ +/* $NetBSD: param.h,v 1.67.30.4 2009/09/30 00:08:03 snj Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -161,9 +161,9 @@ #define x86_trunc_pdr(x) ((unsigned long)(x) & ~(NBPD_L2 - 1)) #define x86_btod(x) ((unsigned long)(x) >> L2_SHIFT) #define x86_dtob(x) ((unsigned long)(x) << L2_SHIFT) -#define x86_round_page(x) ((((unsigned long)(x)) + PGOFSET) & ~PGOFSET) -#define x86_trunc_page(x) ((unsigned long)(x) & ~PGOFSET) -#define x86_btop(x) ((unsigned long)(x) >> PGSHIFT) -#define x86_ptob(x) ((unsigned long)(x) << PGSHIFT) +#define x86_round_page(x) ((((paddr_t)(x)) + PGOFSET) & ~PGOFSET) +#define x86_trunc_page(x) ((paddr_t)(x) & ~PGOFSET) +#define x86_btop(x) ((paddr_t)(x) >> PGSHIFT) +#define x86_ptob(x) ((paddr_t)(x) << PGSHIFT) #endif /* _I386_PARAM_H_ */ Index: src/sys/arch/xen/include/xenpmap.h diff -u src/sys/arch/xen/include/xenpmap.h:1.21 src/sys/arch/xen/include/xenpmap.h:1.21.4.1 --- src/sys/arch/xen/include/xenpmap.h:1.21 Fri Oct 24 22:06:06 2008 +++ src/sys/arch/xen/include/xenpmap.h Wed Sep 30 00:08:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: xenpmap.h,v 1.21 2008/10/24 22:06:06 jym Exp $ */ +/* $NetBSD: xenpmap.h,v 1.21.4.1 2009/09/30 00:08:03 snj Exp $ */ /* * @@ -71,15 +71,17 @@ static __inline paddr_t xpmap_mtop(paddr_t mpa) { - return ((machine_to_phys_mapping[mpa >> PAGE_SHIFT] << PAGE_SHIFT) + - XPMAP_OFFSET) | (mpa & ~PG_FRAME); + return ( + ((paddr_t)machine_to_phys_mapping[mpa >> PAGE_SHIFT] << PAGE_SHIFT) + + XPMAP_OFFSET) | (mpa & ~PG_FRAME); } static __inline paddr_t xpmap_mtop_masked(paddr_t mpa) { - return ((machine_to_phys_mapping[mpa >> PAGE_SHIFT] << PAGE_SHIFT) + - XPMAP_OFFSET); + return ( + ((paddr_t)machine_to_phys_mapping[mpa >> PAGE_SHIFT] << PAGE_SHIFT) + + XPMAP_OFFSET); } static __inline paddr_t Index: src/sys/arch/xen/xen/xenevt.c diff -u src/sys/arch/xen/xen/xenevt.c:1.29.4.1 src/sys/arch/xen/xen/xenevt.c:1.29.4.2 --- src/sys/arch/xen/xen/xenevt.c:1.29.4.1 Sat Apr 4 23:36:27 2009 +++ src/sys/arch/xen/xen/xenevt.c Wed Sep 30 00:08:03 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: xenevt.c,v 1.29.4.1 2009/04/04 23:36:27 snj Exp $ */ +/* $NetBSD: xenevt.c,v 1.29.4.2 2009/09/30 00:08:03 snj Exp $ */ /* * Copyright (c) 2005 Manuel Bouyer. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xenevt.c,v 1.29.4.1 2009/04/04 23:36:27 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xenevt.c,v 1.29.4.2 2009/09/30 00:08:03 snj Exp $"); #include "opt_xen.h" #include <sys/param.h> @@ -373,7 +373,7 @@ if (off != 0) return -1; return x86_btop( - xpmap_mtop(xen_start_info.store_mfn << PAGE_SHIFT)); + xpmap_mtop((paddr_t)xen_start_info.store_mfn << PAGE_SHIFT)); } #endif return -1; Added files: Index: src/sys/arch/i386/conf/XEN3PAE_DOM0 diff -u /dev/null src/sys/arch/i386/conf/XEN3PAE_DOM0:1.1.8.2 --- /dev/null Wed Sep 30 00:08:04 2009 +++ src/sys/arch/i386/conf/XEN3PAE_DOM0 Wed Sep 30 00:08:03 2009 @@ -0,0 +1,5 @@ +# $NetBSD: XEN3PAE_DOM0,v 1.1.8.2 2009/09/30 00:08:03 snj Exp $ + +include "arch/i386/conf/XEN3_DOM0" + +options PAE