diff options
author | Peter Rival <Frank.Rival@oracle.com> | 2010-04-23 13:26:05 -0400 |
---|---|---|
committer | Peter Rival <Frank.Rival@oracle.com> | 2010-04-23 13:26:05 -0400 |
commit | cb15d5d96b3b2730714c28bfe06cfe7421758b8c (patch) | |
tree | 7fd5c3cf5bb49647be8b2eb022e8d75a7d78eab5 /usr/src/uts/i86pc/os/startup.c | |
parent | 03c76a6ef5c04e818b6badeeb6155961505af45c (diff) | |
download | illumos-joyent-cb15d5d96b3b2730714c28bfe06cfe7421758b8c.tar.gz |
6778289 vm locks need to scale with the size of system (strands/memory size)
Diffstat (limited to 'usr/src/uts/i86pc/os/startup.c')
-rw-r--r-- | usr/src/uts/i86pc/os/startup.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/usr/src/uts/i86pc/os/startup.c b/usr/src/uts/i86pc/os/startup.c index ad719dfcdd..f69b37a9f2 100644 --- a/usr/src/uts/i86pc/os/startup.c +++ b/usr/src/uts/i86pc/os/startup.c @@ -289,6 +289,7 @@ int segzio_fromheap = 1; * VM data structures */ long page_hashsz; /* Size of page hash table (power of two) */ +unsigned int page_hashsz_shift; /* log2(page_hashsz) */ struct page *pp_base; /* Base of initial system page struct array */ struct page **page_hash; /* Page hash table */ pad_mutex_t *pse_mutex; /* Locks protecting pp->p_selock */ @@ -1126,12 +1127,15 @@ startup_memlist(void) ADD_TO_ALLOCATIONS(bios_rsvd, rsvdmemlist_sz); PRM_DEBUG(rsvdmemlist_sz); + /* LINTED */ + ASSERT(P2SAMEHIGHBIT((1 << PP_SHIFT), sizeof (struct page))); /* * The page structure hash table size is a power of 2 * such that the average hash chain length is PAGE_HASHAVELEN. */ page_hashsz = npages / PAGE_HASHAVELEN; - page_hashsz = 1 << highbit(page_hashsz); + page_hashsz_shift = highbit(page_hashsz); + page_hashsz = 1 << page_hashsz_shift; pagehash_sz = sizeof (struct page *) * page_hashsz; ADD_TO_ALLOCATIONS(page_hash, pagehash_sz); PRM_DEBUG(pagehash_sz); |