Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Jul 2016 20:28:57 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r302395 - in projects/powernv/powerpc: aim pseries
Message-ID:  <201607072028.u67KSv4x014362@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Thu Jul  7 20:28:57 2016
New Revision: 302395
URL: https://svnweb.freebsd.org/changeset/base/302395

Log:
  Make n_slbs and page sizes more useful parameters and take care to flush
  the TLB completely at startup (we were not setting the IS field
  appropriately). This gets the MMU intiailized and the kernel on its
  way to bus enumeration on bare-metal POWER8 systems.

Modified:
  projects/powernv/powerpc/aim/mmu_oea64.c
  projects/powernv/powerpc/aim/mmu_oea64.h
  projects/powernv/powerpc/aim/moea64_native.c
  projects/powernv/powerpc/pseries/mmu_phyp.c

Modified: projects/powernv/powerpc/aim/mmu_oea64.c
==============================================================================
--- projects/powernv/powerpc/aim/mmu_oea64.c	Thu Jul  7 20:01:03 2016	(r302394)
+++ projects/powernv/powerpc/aim/mmu_oea64.c	Thu Jul  7 20:28:57 2016	(r302395)
@@ -572,8 +572,10 @@ moea64_probe_large_page(void)
 		
 		/* FALLTHROUGH */
 	default:
-		moea64_large_page_size = 0x1000000; /* 16 MB */
-		moea64_large_page_shift = 24;
+		if (moea64_large_page_size == 0) {
+			moea64_large_page_size = 0x1000000; /* 16 MB */
+			moea64_large_page_shift = 24;
+		}
 	}
 
 	moea64_large_page_mask = moea64_large_page_size - 1;

Modified: projects/powernv/powerpc/aim/mmu_oea64.h
==============================================================================
--- projects/powernv/powerpc/aim/mmu_oea64.h	Thu Jul  7 20:01:03 2016	(r302394)
+++ projects/powernv/powerpc/aim/mmu_oea64.h	Thu Jul  7 20:28:57 2016	(r302395)
@@ -81,6 +81,7 @@ extern int		moea64_large_page_shift;
 extern uint64_t		moea64_large_page_size;
 extern u_int		moea64_pteg_count;
 extern u_int		moea64_pteg_mask;
+extern int		n_slbs;
 
 #endif /* _POWERPC_AIM_MMU_OEA64_H */
 

Modified: projects/powernv/powerpc/aim/moea64_native.c
==============================================================================
--- projects/powernv/powerpc/aim/moea64_native.c	Thu Jul  7 20:01:03 2016	(r302394)
+++ projects/powernv/powerpc/aim/moea64_native.c	Thu Jul  7 20:28:57 2016	(r302395)
@@ -382,7 +382,7 @@ moea64_cpu_bootstrap_native(mmu_t mmup, 
 		__asm __volatile ("slbmfee %0,%1; slbie %0;" : "=r"(seg0) :
 		    "r"(0));
 
-		for (i = 0; i < 64; i++) {
+		for (i = 0; i < n_slbs; i++) {
 			if (!(slb[i].slbe & SLBE_VALID))
 				continue;
 
@@ -467,7 +467,7 @@ tlbia(void)
 
 	TLBSYNC();
 
-	for (i = 0; i < 0xFF000; i += 0x00001000) {
+	for (i = 0x800 /* IS=10 */; i < 0xFF000; i += 0x00001000) {
 		#ifdef __powerpc64__
 		__asm __volatile("tlbiel %0" :: "r"(i));
 		#else

Modified: projects/powernv/powerpc/pseries/mmu_phyp.c
==============================================================================
--- projects/powernv/powerpc/pseries/mmu_phyp.c	Thu Jul  7 20:01:03 2016	(r302394)
+++ projects/powernv/powerpc/pseries/mmu_phyp.c	Thu Jul  7 20:28:57 2016	(r302395)
@@ -57,8 +57,6 @@ __FBSDID("$FreeBSD$");
 
 #include "phyp-hvcall.h"
 
-extern int n_slbs;
-
 static struct rmlock mphyp_eviction_lock;
 
 /*



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