Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 May 2014 10:48:27 +0000 (UTC)
From:      "Cherry G. Mathew" <cherry@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r265224 - in projects/amd64_xen_pv/sys: amd64/amd64 amd64/conf amd64/include amd64/include/xen conf vm
Message-ID:  <201405021048.s42AmRln090088@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cherry
Date: Fri May  2 10:48:26 2014
New Revision: 265224
URL: http://svnweb.freebsd.org/changeset/base/265224

Log:
  Oops. Missed these files from r265223
  Approved by: gibbs(implicit)

Modified:
  projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c
  projects/amd64_xen_pv/sys/amd64/conf/XEN
  projects/amd64_xen_pv/sys/amd64/include/pmap.h
  projects/amd64_xen_pv/sys/amd64/include/vmparam.h
  projects/amd64_xen_pv/sys/amd64/include/xen/xen-os.h
  projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h
  projects/amd64_xen_pv/sys/conf/files.amd64
  projects/amd64_xen_pv/sys/vm/vm_page.c

Modified: projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/amd64/amd64/db_interface.c	Fri May  2 10:48:26 2014	(r265224)
@@ -93,20 +93,7 @@ db_write_bytes(vm_offset_t addr, size_t 
 	if (ret == 0) {
 		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;
 
@@ -117,38 +104,20 @@ 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;

Modified: projects/amd64_xen_pv/sys/amd64/conf/XEN
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/conf/XEN	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/amd64/conf/XEN	Fri May  2 10:48:26 2014	(r265224)
@@ -7,7 +7,6 @@ cpu		HAMMER
 ident		XEN
 
 makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols
-makeoptions	WITHOUT_MODULES="aha ahb amd cxgb dpt drm hptmv ida malo mps mwl nve sound sym trm xfs"
 
 options 	SCHED_ULE		# ULE scheduler
 nooptions 	PREEMPTION		# Enable kernel thread preemption
@@ -58,7 +57,7 @@ nooptions 	WITNESS_SKIPSPIN	# Don't run 
 nooptions 	VERBOSE_SYSINIT
 
 nooptions	NATIVE
-option		XEN
+options		XEN
 nodevice	atpic
 nodevice	isa
 nodevice uart_ns8250
@@ -77,6 +76,7 @@ nooptions 	SMP			# Symmetric MultiProces
 nodevice		atkbdc		# AT keyboard controller
 nodevice		atkbd		# AT keyboard
 nodevice		psm		# PS/2 mouse
+nodevice		xn		# XXX: Remove me - dom0 disaster.
 device		pci
 
 #device		kbdmux		# keyboard multiplexer

Modified: projects/amd64_xen_pv/sys/amd64/include/pmap.h
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/include/pmap.h	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/amd64/include/pmap.h	Fri May  2 10:48:26 2014	(r265224)
@@ -168,7 +168,7 @@
 	((unsigned long)(l2) << PDRSHIFT) | \
 	((unsigned long)(l1) << PAGE_SHIFT))
 
-#define NKPML4E		1		/* number of kernel PML4 slots */
+#define NKPML4E		4		/* number of kernel PML4 slots */
 
 #define	NUPML4E		(NPML4EPG/2)	/* number of userland PML4 pages */
 #define	NUPDPE		(NUPML4E*NPDPEPG)/* number of userland PDP pages */
@@ -178,19 +178,26 @@
  * NDMPML4E is the number of PML4 entries that are used to implement the
  * direct map.  It must be a power of two.
  */
-#define	NDMPML4E	2
+#define	NDMPML4E	8
 
 /*
  * The *PDI values control the layout of virtual memory.  The starting address
  * of the direct map, which is controlled by DMPML4I, must be a multiple of
  * its size.  (See the PHYS_TO_DMAP() and DMAP_TO_PHYS() macros.)
  */
+#ifdef XEN
+/* Xen reserves entries 256 - 271 */
+#define	PML4PML4I	272		/* Index of recursive pml4 mapping */
+#else /* Native */
+
 #define	PML4PML4I	(NPML4EPG/2)	/* Index of recursive pml4 mapping */
+#endif
 
-#define	KPML4I		(NPML4EPG-1)	/* Top 512GB for KVM */
-#define	DMPML4I		rounddown(KPML4I - NDMPML4E, NDMPML4E) /* Below KVM */
 #define        KPML4BASE       (NPML4EPG-NKPML4E) /* KVM at highest addresses */
 
+#define	DMPML4I		rounddown(KPML4BASE - NDMPML4E, NDMPML4E) /* Below KVM */
+
+#define	KPML4I		(NPML4EPG-1)	/* Top 512GB for KVM */
 #define	KPDPI		(NPDPEPG-2)	/* kernbase at -2GB */
 
 /*
@@ -239,14 +246,9 @@ extern u_int64_t KPML4phys;	/* physical 
  * the corresponding pde that in turn maps it.
  */
 
-#ifdef XEN
-pt_entry_t *vtopte_hold(vm_offset_t, void *);
-void vtopte_release(vm_offset_t, void *);
-#else
 pt_entry_t *vtopte(vm_offset_t);
-#endif
-#define	vtophys(va)	pmap_kextract(((vm_offset_t) (va)))
 
+#ifndef XEN
 #define	pte_load_store(ptep, pte)	atomic_swap_long(ptep, pte)
 #define	pte_load_clear(ptep)		atomic_swap_long(ptep, 0)
 #define	pte_store(ptep, pte) do { \
@@ -255,6 +257,9 @@ pt_entry_t *vtopte(vm_offset_t);
 #define	pte_clear(ptep)			pte_store(ptep, 0)
 
 #define	pde_store(pdep, pde)		pte_store(pdep, pde)
+#endif
+
+#define	vtophys(va)	pmap_kextract(((vm_offset_t) (va)))
 
 #if defined(XEN)
 #include <machine/atomic.h>
@@ -265,16 +270,6 @@ pt_entry_t *vtopte(vm_offset_t);
 
 #include <sys/systm.h> /* XXX: for KASSERT() remove, when done */
 
-#define MACH_TO_VM_PAGE(ma) PHYS_TO_VM_PAGE(xpmap_mtop((ma)))
-#define VM_PAGE_TO_MACH(m) xpmap_ptom(VM_PAGE_TO_PHYS((m)))
-
-#define VTOM(va) xpmap_ptom(VTOP(va))
-vm_paddr_t pmap_kextract_ma(vm_offset_t);
-#define vtomach(va)     pmap_kextract_ma(((vm_offset_t) (va)))
-
-vm_paddr_t pmap_extract_ma(struct pmap *pmap, vm_offset_t va);
-
-void    pmap_kenter_ma(vm_offset_t va, vm_paddr_t pa);
 void    pmap_map_readonly(struct pmap *pmap, vm_offset_t va, int len);
 void    pmap_map_readwrite(struct pmap *pmap, vm_offset_t va, int len);
 

Modified: projects/amd64_xen_pv/sys/amd64/include/vmparam.h
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/include/vmparam.h	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/amd64/include/vmparam.h	Fri May  2 10:48:26 2014	(r265224)
@@ -76,18 +76,12 @@
  * Note: XEN does not use this as kmem_alloc() is functional via its
  * own boot time mapped backend allocator.
  */
-#ifndef XEN
 #define	UMA_MD_SMALL_ALLOC
-#endif
 
 /*
  * The physical address space is densely populated.
  */
-#ifndef XEN
 #define	VM_PHYSSEG_DENSE
-#else /* XEN */
-#define	VM_PHYSSEG_SPARSE
-#endif
 
 /*
  * The number of PHYSSEG entries must be one greater than the number

Modified: projects/amd64_xen_pv/sys/amd64/include/xen/xen-os.h
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/include/xen/xen-os.h	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/amd64/include/xen/xen-os.h	Fri May  2 10:48:26 2014	(r265224)
@@ -38,6 +38,8 @@
 #ifndef __ASSEMBLY__
 
 #ifdef SMP
+extern int gdtset;
+
 #include <sys/time.h> /* XXX for pcpu.h */
 #include <sys/pcpu.h> /* XXX for PCPU_GET */
 static inline int 

Modified: projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/amd64/include/xen/xenpmap.h	Fri May  2 10:48:26 2014	(r265224)
@@ -39,7 +39,6 @@ struct segment_descriptor; /* Forward de
 #include <sys/types.h>
 #include <vm/vm.h>
 #include <vm/pmap.h>
-#include <machine/pmap.h>
 
 void _xen_queue_pt_update(vm_paddr_t, vm_paddr_t, char *, int);
 void xen_pt_switch(vm_paddr_t);
@@ -101,6 +100,17 @@ void pmap_ref(pt_entry_t *pte, vm_paddr_
 #define SH_PD_SET_VA_MA     2
 #define SH_PD_SET_VA_CLEAR  3
 
+#define MACH_TO_VM_PAGE(ma) PHYS_TO_VM_PAGE(xpmap_mtop((ma)))
+#define VM_PAGE_TO_MACH(m) xpmap_ptom(VM_PAGE_TO_PHYS((m)))
+
+#define VTOM(va) xpmap_ptom(VTOP(va))
+
+vm_paddr_t pmap_extract_ma(struct pmap *pmap, vm_offset_t va);
+vm_paddr_t pmap_kextract_ma(vm_offset_t);
+void    pmap_kenter_ma(vm_offset_t va, vm_paddr_t pa);
+
+#define vtomach(va)     pmap_kextract_ma(((vm_offset_t) (va)))
+
 struct pmap;
 void pd_set(struct pmap *pmap, int ptepindex, vm_paddr_t val, int type);
 #ifdef notyet
@@ -207,6 +217,30 @@ do { 								\
         xen_flush_queue();                                      \
 } while (/*CONSTCOND*/0)
 
+#define	pte_store(ptep, pte) do { \
+		PT_SET_VA_MA((vm_offset_t)(ptep), (vm_paddr_t)(pte), true); \
+	} while (0)
+#define	pte_clear(ptep) do { \
+	PT_CLEAR_VA((vm_offset_t)(ptep), true); \
+	} while (0)
+
+#define	pde_store(pdep, pde) pte_store(pdep, pde)
+
+static inline pt_entry_t pte_load_store(pt_entry_t *ptep, pt_entry_t npte)
+{
+	pt_entry_t pte;
+
+	pte = *ptep;
+	
+	pte_store(ptep, npte);
+	/* XXX: SMP race! */
+
+	return pte;
+}
+
+#define pte_load_clear(ptep) pte_load_store(ptep, 0);
+
+
 static __inline vm_paddr_t
 xpmap_mtop(vm_paddr_t mpa)
 {

Modified: projects/amd64_xen_pv/sys/conf/files.amd64
==============================================================================
--- projects/amd64_xen_pv/sys/conf/files.amd64	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/conf/files.amd64	Fri May  2 10:48:26 2014	(r265224)
@@ -133,7 +133,7 @@ amd64/amd64/support.S		standard
 amd64/amd64/sys_machdep.c	standard
 amd64/amd64/trap.c		standard
 amd64/amd64/uio_machdep.c	standard
-amd64/amd64/uma_machdep.c	optional	native
+amd64/amd64/uma_machdep.c	standard
 amd64/amd64/vm_machdep.c	standard
 amd64/pci/pci_cfgreg.c		optional	pci
 amd64/xen/clock.c		optional xen

Modified: projects/amd64_xen_pv/sys/vm/vm_page.c
==============================================================================
--- projects/amd64_xen_pv/sys/vm/vm_page.c	Fri May  2 10:43:32 2014	(r265223)
+++ projects/amd64_xen_pv/sys/vm/vm_page.c	Fri May  2 10:48:26 2014	(r265224)
@@ -323,7 +323,7 @@ vm_page_startup(vm_offset_t vaddr)
 			high_water = phys_avail[i + 1];
 	}
 
-#ifdef XEN
+#if defined(XEN) && !defined(__amd64__)
 	low_water = 0;
 #endif	
 
@@ -379,11 +379,7 @@ vm_page_startup(vm_offset_t vaddr)
 	 * included in a crash dump.  Since the message buffer is accessed
 	 * through the direct map, they are not automatically included.
 	 */
-#if defined(XEN)
-	pa = VTOP(msgbufp->msg_ptr);
-#else /* native */
 	pa = DMAP_TO_PHYS((vm_offset_t)msgbufp->msg_ptr);
-#endif
 	last_pa = pa + round_page(msgbufsize);
 	while (pa < last_pa) {
 		dump_add_page(pa);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201405021048.s42AmRln090088>