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>