Print this page
NEX-18463 Parallel dump produces corrupted dump file
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
NEX-5177 backport illumos 6345 remove xhat support
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
6345 remove xhat support
Reviewed by: Dan McDonald <danmcd@omniti.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
NEX-5164 backport illumos 6514 AS_* lock macros simplification
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
6514 AS_* lock macros simplification
Reviewed by: Piotr Jasiukajtis <estibi@me.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Albert Lee <trisk@omniti.com>
Approved by: Dan McDonald <danmcd@omniti.com>
re #13613 rb4516 Tunables needs volatile keyword
@@ -20,11 +20,11 @@
*/
/*
* Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
- * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2018 Nexenta Systems, Inc. All rights reserved.
* Copyright 2016 Gary Mills
*/
/*
* VM - Hardware Address Translation management for Spitfire MMU.
@@ -658,18 +658,19 @@
#define TSB_OK_SHRINK() \
(tsb_alloc_bytes > tsb_alloc_hiwater || freemem < desfree)
#define TSB_OK_GROW() \
(tsb_alloc_bytes < tsb_alloc_hiwater && freemem > desfree)
-int enable_tsb_rss_sizing = 1;
-int tsb_rss_factor = (int)TSB_RSS_FACTOR;
+volatile int enable_tsb_rss_sizing = 1;
+volatile int tsb_rss_factor = (int)TSB_RSS_FACTOR;
/* which TSB size code to use for new address spaces or if rss sizing off */
-int default_tsb_size = TSB_8K_SZCODE;
+volatile int default_tsb_size = TSB_8K_SZCODE;
static uint64_t tsb_alloc_hiwater; /* limit TSB reserved memory */
-uint64_t tsb_alloc_hiwater_factor; /* tsb_alloc_hiwater = physmem / this */
+volatile uint64_t tsb_alloc_hiwater_factor; /* tsb_alloc_hiwater = */
+ /* physmem / this */
#define TSB_ALLOC_HIWATER_FACTOR_DEFAULT 32
#ifdef DEBUG
static int tsb_random_size = 0; /* set to 1 to test random tsb sizes on alloc */
static int tsb_grow_stress = 0; /* if set to 1, keep replacing TSB w/ random */
@@ -6185,29 +6186,17 @@
}
return (addr);
}
/*
- * Invalidate a virtual address range for the local CPU.
- * For best performance ensure that the va range is completely
- * mapped, otherwise the entire TLB will be flushed.
+ * Flush the TLB for the local CPU
+ * Invoked from a slave CPU during panic() dumps.
*/
void
-hat_flush_range(struct hat *sfmmup, caddr_t va, size_t size)
+hat_flush(void)
{
- ssize_t sz;
- caddr_t endva = va + size;
-
- while (va < endva) {
- sz = hat_getpagesize(sfmmup, va);
- if (sz < 0) {
vtag_flushall();
- break;
- }
- vtag_flushpage(va, (uint64_t)sfmmup);
- va += sz;
- }
}
/*
* Synchronize all the mappings in the range [addr..addr+len).
* Can be called with clearflag having two states: