From owner-svn-src-projects@freebsd.org Thu Jul 7 20:28:59 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4044DB75093 for ; Thu, 7 Jul 2016 20:28:59 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 040361CA5; Thu, 7 Jul 2016 20:28:58 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u67KSwxY014366; Thu, 7 Jul 2016 20:28:58 GMT (envelope-from nwhitehorn@FreeBSD.org) Received: (from nwhitehorn@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u67KSv4x014362; Thu, 7 Jul 2016 20:28:57 GMT (envelope-from nwhitehorn@FreeBSD.org) Message-Id: <201607072028.u67KSv4x014362@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: nwhitehorn set sender to nwhitehorn@FreeBSD.org using -f From: Nathan Whitehorn Date: Thu, 7 Jul 2016 20:28:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r302395 - in projects/powernv/powerpc: aim pseries X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jul 2016 20:28:59 -0000 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; /*