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