Module Name:    src
Committed By:   matt
Date:           Mon Jul 11 16:06:52 UTC 2016

Modified Files:
        src/sys/arch/powerpc/booke: booke_machdep.c booke_pmap.c booke_stubs.c
            e500_tlb.c
        src/sys/arch/powerpc/include/booke: pmap.h pte.h

Log Message:
Adapt to common pmap changes.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/powerpc/booke/booke_machdep.c \
    src/sys/arch/powerpc/booke/booke_pmap.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/powerpc/booke/booke_stubs.c
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/powerpc/booke/e500_tlb.c
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/powerpc/include/booke/pmap.h
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/powerpc/include/booke/pte.h

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/powerpc/booke/booke_machdep.c
diff -u src/sys/arch/powerpc/booke/booke_machdep.c:1.23 src/sys/arch/powerpc/booke/booke_machdep.c:1.24
--- src/sys/arch/powerpc/booke/booke_machdep.c:1.23	Fri Jan 23 07:27:05 2015
+++ src/sys/arch/powerpc/booke/booke_machdep.c	Mon Jul 11 16:06:52 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: booke_machdep.c,v 1.23 2015/01/23 07:27:05 nonaka Exp $	*/
+/*	$NetBSD: booke_machdep.c,v 1.24 2016/07/11 16:06:52 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -38,7 +38,7 @@
 #define	_POWERPC_BUS_DMA_PRIVATE
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: booke_machdep.c,v 1.23 2015/01/23 07:27:05 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: booke_machdep.c,v 1.24 2016/07/11 16:06:52 matt Exp $");
 
 #include "opt_modular.h"
 
@@ -130,6 +130,7 @@ struct cpu_info cpu_info[] = {
 		.ci_softc = &cpu_softc[0],
 		.ci_cpl = IPL_HIGH,
 		.ci_idepth = -1,
+		.ci_pmap_kern_segtab = &pmap_kern_segtab,
 	},
 #ifdef MULTIPROCESSOR
 	[CPU_MAXNUM-1] = {
@@ -138,6 +139,7 @@ struct cpu_info cpu_info[] = {
 		.ci_softc = &cpu_softc[CPU_MAXNUM-1],
 		.ci_cpl = IPL_HIGH,
 		.ci_idepth = -1,
+		.ci_pmap_kern_segtab = &pmap_kern_segtab,
 	},
 #endif
 };
Index: src/sys/arch/powerpc/booke/booke_pmap.c
diff -u src/sys/arch/powerpc/booke/booke_pmap.c:1.23 src/sys/arch/powerpc/booke/booke_pmap.c:1.24
--- src/sys/arch/powerpc/booke/booke_pmap.c:1.23	Thu Nov  5 06:26:15 2015
+++ src/sys/arch/powerpc/booke/booke_pmap.c	Mon Jul 11 16:06:52 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: booke_pmap.c,v 1.23 2015/11/05 06:26:15 pgoyette Exp $	*/
+/*	$NetBSD: booke_pmap.c,v 1.24 2016/07/11 16:06:52 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: booke_pmap.c,v 1.23 2015/11/05 06:26:15 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: booke_pmap.c,v 1.24 2016/07/11 16:06:52 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/kcore.h>
@@ -53,19 +53,11 @@ __KERNEL_RCSID(0, "$NetBSD: booke_pmap.c
 kmutex_t pmap_tlb_miss_lock;
 #endif
 
-/*
- * Initialize the kernel pmap.
- */
-#ifdef MULTIPROCESSOR
-#define	PMAP_SIZE	offsetof(struct pmap, pm_pai[PMAP_TLB_MAX])
-#else
-#define	PMAP_SIZE	sizeof(struct pmap)
-#endif
+PMAP_COUNTER(zeroed_pages, "pages zeroed");
+PMAP_COUNTER(copied_pages, "pages copied");
 
 CTASSERT(sizeof(pmap_segtab_t) == NBPG);
 
-pmap_segtab_t pmap_kernel_segtab;
-
 void
 pmap_procwr(struct proc *p, vaddr_t va, size_t len)
 {
@@ -140,7 +132,7 @@ kvtopte(const pmap_segtab_t *stp, vaddr_
 vaddr_t
 pmap_kvptefill(vaddr_t sva, vaddr_t eva, pt_entry_t pt_entry)
 {
-	const pmap_segtab_t * const stp = pmap_kernel()->pm_segtab;
+	pmap_segtab_t * const stp = &pmap_kern_segtab;
 	KASSERT(sva == trunc_page(sva));
 	pt_entry_t *ptep = kvtopte(stp, sva);
 	for (; sva < eva; sva += NBPG) {
@@ -158,13 +150,7 @@ vaddr_t
 pmap_bootstrap(vaddr_t startkernel, vaddr_t endkernel,
 	phys_ram_seg_t *avail, size_t cnt)
 {
-	pmap_segtab_t * const stp = &pmap_kernel_segtab;
-
-	/*
-	 * Initialize the kernel segment table.
-	 */
-	pmap_kernel()->pm_segtab = stp;
-	curcpu()->ci_pmap_kern_segtab = stp;
+	pmap_segtab_t * const stp = &pmap_kern_segtab;
 
 	KASSERT(endkernel == trunc_page(endkernel));
 
@@ -350,6 +336,7 @@ pmap_md_unmap_poolpage(vaddr_t va, vsize
 void
 pmap_zero_page(paddr_t pa)
 {
+	PMAP_COUNT(zeroed_pages);
 	vaddr_t va = pmap_md_map_poolpage(pa, NBPG);
 	dcache_zero_page(va);
 
@@ -365,6 +352,8 @@ pmap_copy_page(paddr_t src, paddr_t dst)
 	vaddr_t dst_va = pmap_md_map_poolpage(dst, NBPG);
 	const vaddr_t end = src_va + PAGE_SIZE;
 
+	PMAP_COUNT(copied_pages);
+
 	while (src_va < end) {
 		__asm __volatile(
 			"dcbt	%2,%0"	"\n\t"	/* touch next src cacheline */

Index: src/sys/arch/powerpc/booke/booke_stubs.c
diff -u src/sys/arch/powerpc/booke/booke_stubs.c:1.9 src/sys/arch/powerpc/booke/booke_stubs.c:1.10
--- src/sys/arch/powerpc/booke/booke_stubs.c:1.9	Thu Jun 30 00:52:58 2011
+++ src/sys/arch/powerpc/booke/booke_stubs.c	Mon Jul 11 16:06:52 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: booke_stubs.c,v 1.9 2011/06/30 00:52:58 matt Exp $	*/
+/*	$NetBSD: booke_stubs.c,v 1.10 2016/07/11 16:06:52 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -36,7 +36,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: booke_stubs.c,v 1.9 2011/06/30 00:52:58 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: booke_stubs.c,v 1.10 2016/07/11 16:06:52 matt Exp $");
 
 #include <sys/param.h>
 #include <sys/cpu.h>
@@ -118,12 +118,12 @@ tlb_write_entry(size_t pos, const struct
 	(*cpu_md_ops.md_tlb_ops->md_tlb_write_entry)(pos, tlb);
 }
 
-u_int tlb_record_asids(u_long *) __stub;
+u_int tlb_record_asids(u_long *, tlb_asid_t) __stub;
 
 u_int
-tlb_record_asids(u_long *bitmap)
+tlb_record_asids(u_long *bitmap, tlb_asid_t asid_max)
 {
-	return (*cpu_md_ops.md_tlb_ops->md_tlb_record_asids)(bitmap);
+	return (*cpu_md_ops.md_tlb_ops->md_tlb_record_asids)(bitmap, asid_max);
 }
 
 void tlb_dump(void (*)(const char *, ...)) __stub;

Index: src/sys/arch/powerpc/booke/e500_tlb.c
diff -u src/sys/arch/powerpc/booke/e500_tlb.c:1.17 src/sys/arch/powerpc/booke/e500_tlb.c:1.18
--- src/sys/arch/powerpc/booke/e500_tlb.c:1.17	Thu Feb 19 08:59:56 2015
+++ src/sys/arch/powerpc/booke/e500_tlb.c	Mon Jul 11 16:06:52 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: e500_tlb.c,v 1.17 2015/02/19 08:59:56 nonaka Exp $	*/
+/*	$NetBSD: e500_tlb.c,v 1.18 2016/07/11 16:06:52 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -40,7 +40,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: e500_tlb.c,v 1.17 2015/02/19 08:59:56 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: e500_tlb.c,v 1.18 2016/07/11 16:06:52 matt Exp $");
 
 #include <sys/param.h>
 
@@ -465,7 +465,7 @@ e500_tlb_invalidate_asids(tlb_asid_t asi
 }
 
 static u_int
-e500_tlb_record_asids(u_long *bitmap)
+e500_tlb_record_asids(u_long *bitmap, tlb_asid_t asid_max)
 {
 	const size_t tlbassoc = TLBCFG_ASSOC(mftlb0cfg());
 	const size_t tlbentries = TLBCFG_NENTRY(mftlb0cfg());
@@ -554,7 +554,8 @@ e500_tlb_update_addr(vaddr_t va, tlb_asi
 #endif
 			return false;
 		}
-		mtspr(SPR_MAS1, hwtlb.hwtlb_mas1);
+		mas1 = hwtlb.hwtlb_mas1 | MAS1_V;
+		mtspr(SPR_MAS1, mas1);
 	}
 	mtspr(SPR_MAS2, hwtlb.hwtlb_mas2);
 	mtspr(SPR_MAS3, hwtlb.hwtlb_mas3);

Index: src/sys/arch/powerpc/include/booke/pmap.h
diff -u src/sys/arch/powerpc/include/booke/pmap.h:1.15 src/sys/arch/powerpc/include/booke/pmap.h:1.16
--- src/sys/arch/powerpc/include/booke/pmap.h:1.15	Mon Jan 26 04:47:53 2015
+++ src/sys/arch/powerpc/include/booke/pmap.h	Mon Jul 11 16:06:52 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.h,v 1.15 2015/01/26 04:47:53 nonaka Exp $	*/
+/*	$NetBSD: pmap.h,v 1.16 2016/07/11 16:06:52 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -131,7 +131,7 @@ pmap_md_vca_add(struct vm_page *pg, vadd
 }
 
 static inline void
-pmap_md_vca_remove(struct vm_page *pg, vaddr_t va)
+pmap_md_vca_remove(struct vm_page *pg, vaddr_t va, bool dirty)
 {
 
 }
@@ -140,12 +140,21 @@ static inline void
 pmap_md_vca_clean(struct vm_page *pg, vaddr_t va, int op)
 {
 }
+#endif
 
+#ifdef __PMAP_PRIVATE
 static inline size_t
 pmap_md_tlb_asid_max(void)
 {
 	return PMAP_TLB_NUM_PIDS - 1;
 }
+
+struct vm_physseg;
+static inline bool
+pmap_md_ok_to_steal_p(const struct vm_physseg *seg, size_t npgs)
+{
+	return true;
+}
 #endif
 
 #define	POOL_VTOPHYS(va)	((paddr_t)(vaddr_t)(va))

Index: src/sys/arch/powerpc/include/booke/pte.h
diff -u src/sys/arch/powerpc/include/booke/pte.h:1.7 src/sys/arch/powerpc/include/booke/pte.h:1.8
--- src/sys/arch/powerpc/include/booke/pte.h:1.7	Thu Jun 11 08:01:50 2015
+++ src/sys/arch/powerpc/include/booke/pte.h	Mon Jul 11 16:06:52 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pte.h,v 1.7 2015/06/11 08:01:50 matt Exp $	*/
+/*	$NetBSD: pte.h,v 1.8 2016/07/11 16:06:52 matt Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -114,6 +114,12 @@ pte_exec_p(pt_entry_t pt_entry)
 }
 
 static inline bool
+pte_readonly_p(pt_entry_t pt_entry)
+{
+	return (pt_entry & PTE_xW) == 0;
+}
+
+static inline bool
 pte_deferred_exec_p(pt_entry_t pt_entry)
 {
 	//return (pt_entry & (PTE_xX|PTE_UNSYNCED)) == (PTE_xX|PTE_UNSYNCED);

Reply via email to