Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Dec 2007 05:06:44 GMT
From:      Kip Macy <kmacy@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 130313 for review
Message-ID:  <200712060506.lB656icB046144@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=130313

Change 130313 by kmacy@entropy_kmacy_xen31 on 2007/12/06 05:06:21

	remaining fixes to make pmap.c and locore.s compile

Affected files ...

.. //depot/projects/xen31/sys/i386/include/pmap.h#5 edit
.. //depot/projects/xen31/sys/i386/xen/locore.s#2 edit
.. //depot/projects/xen31/sys/i386/xen/pmap.c#3 edit

Differences ...

==== //depot/projects/xen31/sys/i386/include/pmap.h#5 (text+ko) ====

@@ -249,6 +249,7 @@
 }
 
 #define	pte_store(ptep, pte)	pte_load_store((ptep), (pt_entry_t)pte)
+#define	pte_clear(ptep)	pte_load_store((ptep), (pt_entry_t)0ULL)
 
 #else
 /*

==== //depot/projects/xen31/sys/i386/xen/locore.s#2 (text+ko) ====

@@ -83,16 +83,6 @@
 	.set	PTD,PTmap + (PTDPTDI * PAGE_SIZE)
 	.set	PTDpde,PTD + (PTDPTDI * PDESIZE)
 
-#ifdef SMP
-/*
- * Define layout of per-cpu address space.
- * This is "constructed" in locore.s on the BSP and in mp_machdep.c
- * for each AP.  DO NOT REORDER THESE WITHOUT UPDATING THE REST!
- */
-	.globl	SMP_prvspace
-	.set	SMP_prvspace,(MPPTDI << PDRSHIFT)
-#endif /* SMP */
-
 /*
  * Compiled KERNBASE location and the kernel load address
  */

==== //depot/projects/xen31/sys/i386/xen/pmap.c#3 (text+ko) ====

@@ -1394,13 +1394,16 @@
 	/*
 	 * allocate the page directory page(s)
 	 */
-	for (i = 0; i < NPGPTD;) {
+	for (i = 0; i < npgptd;) {
 		m = vm_page_alloc(NULL, color++,
 		    VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ | VM_ALLOC_WIRED |
 		    VM_ALLOC_ZERO);
 		if (m == NULL)
 			VM_WAIT;
 		else {
+#ifdef XEN
+		        pmap_zero_page(m); /* is this really needed? */
+#endif
 			ptdpg[i++] = m;
 		}
 	}
@@ -1416,7 +1419,7 @@
 	LIST_INSERT_HEAD(&allpmaps, pmap, pm_list);
 	mtx_unlock_spin(&allpmaps_lock);
 	/* Wire in kernel global address entries. */
-	/* XXX copies current process, does not fill in MPPTDI */
+	/* XXX copies current process */
 	bcopy(kernel_pmap->pm_pdir + KPTDI, pmap->pm_pdir + KPTDI, 
 	       nkpt * sizeof(pd_entry_t));
 	/* XXX need to copy global address entries to page directory's L1 shadow */
@@ -1429,10 +1432,6 @@
 		xen_pt_pin(ma);
 	}
 
-#ifdef SMP
-	pmap->pm_pdir[MPPTDI] = kernel_pmap->pm_pdir[MPPTDI];
-#endif
-
 	/* pin and install L1 shadow */
 	for (i = 0; i < NPGPTD; i++) {
 		ma = xpmap_ptom(VM_PAGE_TO_PHYS(ptdpg[i]));
@@ -1692,9 +1691,6 @@
 	
 	bzero(pmap->pm_pdir + PTDPTDI, (nkpt + NPGPTD) *
 	    sizeof(*pmap->pm_pdir));
-#ifdef SMP
-	PD_CLEAR_VA(pmap, &pmap->pm_pdir[MPPTDI], FALSE);
-#endif
 
 	pmap_qremove((vm_offset_t)pmap->pm_pdir, NPGPTD);
 
@@ -3778,7 +3774,7 @@
 		opte = PT_GET(pte);
 		npte = opte & ~(PG_PTE_PAT | PG_NC_PCD | PG_NC_PWT);
 		npte |= pmap_cache_bits(mode, 0);
-		PD_SET(tmpva, npte, FALSE);
+		PT_SET_VA(tmpva, npte, FALSE);
 #endif
 		tmpva += PAGE_SIZE;
 		size -= PAGE_SIZE;



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