diff options
author | dp78419 <none@none> | 2007-03-05 13:11:00 -0800 |
---|---|---|
committer | dp78419 <none@none> | 2007-03-05 13:11:00 -0800 |
commit | bb121940c2fe627557326e0143391ace6e6b7372 (patch) | |
tree | 121c7d2e0883c513df7bdf5823d0d6124b53dffa /usr/src/uts/sun4u | |
parent | 7d64d5d26a5c77ec77ec4af21ecfd1fdb5b908d3 (diff) | |
download | illumos-gate-bb121940c2fe627557326e0143391ace6e6b7372.tar.gz |
6510878 Kernel Boot time data structures can be mapped with Large pages to improve performance
Diffstat (limited to 'usr/src/uts/sun4u')
-rw-r--r-- | usr/src/uts/sun4u/cpu/us3_cheetah.c | 56 | ||||
-rw-r--r-- | usr/src/uts/sun4u/lw8/Makefile.lw8 | 3 | ||||
-rw-r--r-- | usr/src/uts/sun4u/serengeti/Makefile.serengeti.shared | 3 | ||||
-rw-r--r-- | usr/src/uts/sun4u/vm/mach_vm_dep.c | 7 |
4 files changed, 30 insertions, 39 deletions
diff --git a/usr/src/uts/sun4u/cpu/us3_cheetah.c b/usr/src/uts/sun4u/cpu/us3_cheetah.c index 217f285ccc..60817d847e 100644 --- a/usr/src/uts/sun4u/cpu/us3_cheetah.c +++ b/usr/src/uts/sun4u/cpu/us3_cheetah.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -151,6 +151,7 @@ cpu_fiximp(pnode_t dnode) max_privmap_lpsize = MMU_PAGESIZE; max_utext_lpsize = MMU_PAGESIZE; max_shm_lpsize = MMU_PAGESIZE; + max_bootlp_tteszc = TTE8K; } void @@ -663,53 +664,36 @@ uint64_t ecache_tl1_flushaddr = (uint64_t)-1; /* physaddr for E$ flushing */ /* * Allocate and initialize the exclusive displacement flush area. - * Must be called before startup_bop_gone(). + * Called twice. The first time allocates virtual address. The second + * call looks up the physical address. */ caddr_t ecache_init_scrub_flush_area(caddr_t alloc_base) { - unsigned size = 2 * CH_ECACHE_8M_SIZE; - caddr_t tmp_alloc_base = alloc_base; - caddr_t flush_alloc_base = - (caddr_t)roundup((uintptr_t)alloc_base, size); - caddr_t ecache_tl1_virtaddr; + static caddr_t ecache_tl1_virtaddr; - /* - * Allocate the physical memory for the exclusive flush area - * - * Need to allocate an exclusive flush area that is twice the - * largest supported E$ size, physically contiguous, and - * aligned on twice the largest E$ size boundary. - * - * Memory allocated via BOP_ALLOC is included in the "cage" - * from the DR perspective and due to this, its physical - * address will never change and the memory will not be - * removed. - * - * BOP_ALLOC takes 4 arguments: bootops, virtual address hint, - * size of the area to allocate, and alignment of the area to - * allocate. It returns zero if the allocation fails, or the - * virtual address for a successful allocation. Memory BOP_ALLOC'd - * is physically contiguous. - */ - if ((ecache_tl1_virtaddr = (caddr_t)BOP_ALLOC(bootops, - flush_alloc_base, size, size)) != NULL) { + if (alloc_base != NULL) { + /* + * Need to allocate an exclusive flush area that is twice the + * largest supported E$ size, physically contiguous, and + * aligned on twice the largest E$ size boundary. + */ + unsigned size = 2 * CH_ECACHE_8M_SIZE; + caddr_t va = (caddr_t)roundup((uintptr_t)alloc_base, size); - tmp_alloc_base = - (caddr_t)roundup((uintptr_t)(ecache_tl1_virtaddr + size), - ecache_alignsize); + ecache_tl1_virtaddr = va; + alloc_base = va + size; + } else { /* - * get the physical address of the exclusive flush area + * Get the physical address of the exclusive flush area. */ + ASSERT(ecache_tl1_virtaddr != NULL); ecache_tl1_flushaddr = va_to_pa(ecache_tl1_virtaddr); - - } else { - ecache_tl1_virtaddr = (caddr_t)-1; - cmn_err(CE_NOTE, "!ecache_init_scrub_flush_area failed\n"); + ASSERT(ecache_tl1_flushaddr != ((uint64_t)-1)); } - return (tmp_alloc_base); + return (alloc_base); } /* diff --git a/usr/src/uts/sun4u/lw8/Makefile.lw8 b/usr/src/uts/sun4u/lw8/Makefile.lw8 index 0f718064a0..1f310679ca 100644 --- a/usr/src/uts/sun4u/lw8/Makefile.lw8 +++ b/usr/src/uts/sun4u/lw8/Makefile.lw8 @@ -20,7 +20,7 @@ # # -# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" @@ -112,6 +112,7 @@ MACHINE_DEFS += -DMAX_MEM_NODES=8 MACHINE_DEFS += -DLOCKED_DTLB_ENTRIES=6 # Max IOSRAM TOC major version number supported MACHINE_DEFS += -DMAX_IOSRAM_TOC_VER=0x1 +MACHINE_DEFS += -DC_OBP # Define for inline pre-processing since # cpp not smart about v9 yet. diff --git a/usr/src/uts/sun4u/serengeti/Makefile.serengeti.shared b/usr/src/uts/sun4u/serengeti/Makefile.serengeti.shared index 0934384f96..d7a3d50d3c 100644 --- a/usr/src/uts/sun4u/serengeti/Makefile.serengeti.shared +++ b/usr/src/uts/sun4u/serengeti/Makefile.serengeti.shared @@ -19,7 +19,7 @@ # CDDL HEADER END # # -# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" @@ -128,6 +128,7 @@ MACHINE_DEFS += -DMAX_MEM_NODES=8 MACHINE_DEFS += -DLOCKED_DTLB_ENTRIES=6 # Max IOSRAM TOC major version number supported MACHINE_DEFS += -DMAX_IOSRAM_TOC_VER=0x1 +MACHINE_DEFS += -DC_OBP # Define for inline pre-processing since # cpp is not smart about v9 yet. diff --git a/usr/src/uts/sun4u/vm/mach_vm_dep.c b/usr/src/uts/sun4u/vm/mach_vm_dep.c index 449c2a684a..9550242d0e 100644 --- a/usr/src/uts/sun4u/vm/mach_vm_dep.c +++ b/usr/src/uts/sun4u/vm/mach_vm_dep.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -95,6 +95,11 @@ hw_pagesize_t hw_page_array[] = { }; /* + * Maximum page size used to map 64-bit memory segment kmem64_base..kmem64_end + */ +int max_bootlp_tteszc = TTE4M; + +/* * use_text_pgsz64k and use_text_pgsz512k allow the user to turn on these * additional text page sizes for USIII-IV+ and OPL by changing the default * values via /etc/system. |