From owner-svn-src-head@freebsd.org Tue Aug 20 01:26:03 2019 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CDEA0D747F; Tue, 20 Aug 2019 01:26:03 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46CCmW576Rz3CG5; Tue, 20 Aug 2019 01:26:03 +0000 (UTC) (envelope-from jhibbits@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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 73B432377B; Tue, 20 Aug 2019 01:26:03 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x7K1Q37Z079178; Tue, 20 Aug 2019 01:26:03 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x7K1Q2x4079175; Tue, 20 Aug 2019 01:26:02 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201908200126.x7K1Q2x4079175@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Tue, 20 Aug 2019 01:26:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r351245 - in head/sys/powerpc: booke include X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: in head/sys/powerpc: booke include X-SVN-Commit-Revision: 351245 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Aug 2019 01:26:03 -0000 Author: jhibbits Date: Tue Aug 20 01:26:02 2019 New Revision: 351245 URL: https://svnweb.freebsd.org/changeset/base/351245 Log: powerpc: Link Book-E kernels at the same address as AIM kernels Summary: Reduce the diff between AIM and Book-E even more. This also cleans up vmparam.h significantly. Reviewed by: luporl Differential Revision: https://reviews.freebsd.org/D21301 Modified: head/sys/powerpc/booke/pmap.c head/sys/powerpc/include/param.h head/sys/powerpc/include/vmparam.h Modified: head/sys/powerpc/booke/pmap.c ============================================================================== --- head/sys/powerpc/booke/pmap.c Tue Aug 20 01:06:43 2019 (r351244) +++ head/sys/powerpc/booke/pmap.c Tue Aug 20 01:26:02 2019 (r351245) @@ -219,7 +219,7 @@ uint32_t tlb1_entries; #define TLB1_ENTRIES (tlb1_entries) -static vm_offset_t tlb1_map_base = VM_MAXUSER_ADDRESS + PAGE_SIZE; +static vm_offset_t tlb1_map_base = (vm_offset_t)VM_MAXUSER_ADDRESS + PAGE_SIZE; static tlbtid_t tid_alloc(struct pmap *); static void tid_flush(tlbtid_t tid); @@ -1574,7 +1574,6 @@ mmu_booke_bootstrap(mmu_t mmu, vm_offset_t start, vm_o * Note that kernel end does not necessarily relate to kernsize. * kernsize is the size of the kernel that is actually mapped. */ - kernstart = trunc_page(start); data_start = round_page(kernelend); data_end = data_start; @@ -2146,7 +2145,7 @@ mmu_booke_map_user_ptr(mmu_t mmu, pmap_t pm, volatile void **kaddr, size_t ulen, size_t *klen) { - if ((uintptr_t)uaddr + ulen > VM_MAXUSER_ADDRESS + PAGE_SIZE) + if (trunc_page((uintptr_t)uaddr + ulen) > VM_MAXUSER_ADDRESS) return (EFAULT); *kaddr = (void *)(uintptr_t)uaddr; @@ -2166,7 +2165,7 @@ mmu_booke_decode_kernel_ptr(mmu_t mmu, vm_offset_t add vm_offset_t *decoded_addr) { - if (addr < VM_MAXUSER_ADDRESS) + if (trunc_page(addr) <= VM_MAXUSER_ADDRESS) *is_user = 1; else *is_user = 0; @@ -4025,7 +4024,8 @@ tlb1_mapin_region(vm_offset_t va, vm_paddr_t pa, vm_si void tlb1_init() { - uint32_t mas0, mas1, mas2, mas3, mas7; + vm_offset_t mas2; + uint32_t mas0, mas1, mas3, mas7; uint32_t tsz; tlb1_get_tlbconf(); @@ -4044,6 +4044,7 @@ tlb1_init() tsz = (mas1 & MAS1_TSIZE_MASK) >> MAS1_TSIZE_SHIFT; kernsize += (tsz > 0) ? tsize2size(tsz) : 0; + kernstart = trunc_page(mas2); /* Setup TLB miss defaults */ set_mas4_defaults(); Modified: head/sys/powerpc/include/param.h ============================================================================== --- head/sys/powerpc/include/param.h Tue Aug 20 01:06:43 2019 (r351244) +++ head/sys/powerpc/include/param.h Tue Aug 20 01:26:02 2019 (r351245) @@ -103,7 +103,7 @@ #define CACHE_LINE_SIZE (1 << CACHE_LINE_SHIFT) #define PAGE_SHIFT 12 -#define PAGE_SIZE (1L << PAGE_SHIFT) /* Page size */ +#define PAGE_SIZE (1 << PAGE_SHIFT) /* Page size */ #define PAGE_MASK (PAGE_SIZE - 1) #define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t))) Modified: head/sys/powerpc/include/vmparam.h ============================================================================== --- head/sys/powerpc/include/vmparam.h Tue Aug 20 01:06:43 2019 (r351244) +++ head/sys/powerpc/include/vmparam.h Tue Aug 20 01:26:02 2019 (r351245) @@ -72,53 +72,35 @@ #endif #ifdef AIM -#define VM_MAXUSER_ADDRESS32 ((vm_offset_t)0xfffff000) +#define VM_MAXUSER_ADDRESS32 0xfffff000 #else -#define VM_MAXUSER_ADDRESS32 ((vm_offset_t)0x7ffff000) +#define VM_MAXUSER_ADDRESS32 0x7ffff000 #endif /* * Would like to have MAX addresses = 0, but this doesn't (currently) work */ -#if !defined(LOCORE) #ifdef __powerpc64__ -#define VM_MIN_ADDRESS (0x0000000000000000UL) -#define VM_MAXUSER_ADDRESS (0x3ffffffffffff000UL) -#define VM_MAX_ADDRESS (0xffffffffffffffffUL) +#define VM_MIN_ADDRESS 0x0000000000000000 +#define VM_MAXUSER_ADDRESS 0x3ffffffffffff000 +#define VM_MAX_ADDRESS 0xffffffffffffffff +#define VM_MIN_KERNEL_ADDRESS 0xe000000000000000 +#define VM_MAX_KERNEL_ADDRESS 0xe0000007ffffffff +#define VM_MAX_SAFE_KERNEL_ADDRESS VM_MAX_KERNEL_ADDRESS #else -#define VM_MIN_ADDRESS ((vm_offset_t)0) +#define VM_MIN_ADDRESS 0 #define VM_MAXUSER_ADDRESS VM_MAXUSER_ADDRESS32 -#define VM_MAX_ADDRESS ((vm_offset_t)0xffffffff) +#define VM_MAX_ADDRESS 0xffffffff #endif + #define SHAREDPAGE (VM_MAXUSER_ADDRESS - PAGE_SIZE) -#else /* LOCORE */ -#ifdef BOOKE -#define VM_MIN_ADDRESS 0 -#ifdef __powerpc64__ -#define VM_MAXUSER_ADDRESS 0x3ffffffffffff000 -#else -#define VM_MAXUSER_ADDRESS 0x7ffff000 -#endif -#endif -#endif /* LOCORE */ #define FREEBSD32_SHAREDPAGE (VM_MAXUSER_ADDRESS32 - PAGE_SIZE) #define FREEBSD32_USRSTACK FREEBSD32_SHAREDPAGE -#ifdef __powerpc64__ -#ifndef LOCORE -#define VM_MIN_KERNEL_ADDRESS 0xe000000000000000UL -#define VM_MAX_KERNEL_ADDRESS 0xe0000007ffffffffUL -#else -#define VM_MIN_KERNEL_ADDRESS 0xe000000000000000 -#define VM_MAX_KERNEL_ADDRESS 0xe0000007ffffffff -#endif -#define VM_MAX_SAFE_KERNEL_ADDRESS VM_MAX_KERNEL_ADDRESS -#endif - -#ifdef AIM #define KERNBASE 0x00100100 /* start of kernel virtual */ +#ifdef AIM #ifndef __powerpc64__ #define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNEL_SR << ADDR_SR_SHFT) #define VM_MAX_SAFE_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + 2*SEGMENT_LENGTH -1) @@ -136,12 +118,9 @@ /* Use the direct map for UMA small allocs on powerpc64. */ #ifdef __powerpc64__ #define UMA_MD_SMALL_ALLOC -#endif - -#define KERNBASE 0x04000100 /* start of kernel physical */ -#ifndef __powerpc64__ -#define VM_MIN_KERNEL_ADDRESS 0xc0000000 -#define VM_MAX_KERNEL_ADDRESS 0xffffefff +#else +#define VM_MIN_KERNEL_ADDRESS 0xc0000000 +#define VM_MAX_KERNEL_ADDRESS 0xffffefff #define VM_MAX_SAFE_KERNEL_ADDRESS VM_MAX_KERNEL_ADDRESS #endif