summaryrefslogtreecommitdiff
path: root/usr/src/uts/i86pc/vm/htable.c
diff options
context:
space:
mode:
authorjosephb <none@none>2007-04-10 12:46:10 -0700
committerjosephb <none@none>2007-04-10 12:46:10 -0700
commitaac11643c466386309a97e46ac9f9a4cad538e5c (patch)
treea3e59be55799f9a7452c481f3a9c1f44c3df4167 /usr/src/uts/i86pc/vm/htable.c
parent4c5e0fde93352f23abc94e445999402e38b91268 (diff)
downloadillumos-gate-aac11643c466386309a97e46ac9f9a4cad538e5c.tar.gz
6539804 panic[cpu0]/thread=fffffffffbc27f40: boot_mapin(): No pp for pfnum = 1ff849
6540208 assertion failed: (((threadp()))->t_hatdepth & (~(1 << 7))) < 64, file: ../../i86pc/vm/hat_i86.c
Diffstat (limited to 'usr/src/uts/i86pc/vm/htable.c')
-rw-r--r--usr/src/uts/i86pc/vm/htable.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/usr/src/uts/i86pc/vm/htable.c b/usr/src/uts/i86pc/vm/htable.c
index 52ce7cff44..71a8f3d349 100644
--- a/usr/src/uts/i86pc/vm/htable.c
+++ b/usr/src/uts/i86pc/vm/htable.c
@@ -276,12 +276,11 @@ htable_adjust_reserve()
{
htable_t *ht;
- ASSERT(curthread != hat_reserves_thread);
-
/*
* Free any excess htables in the reserve list
*/
- while (htable_reserve_cnt > htable_reserve_amount) {
+ while (htable_reserve_cnt > htable_reserve_amount &&
+ !USE_HAT_RESERVES()) {
ht = htable_get_reserve();
if (ht == NULL)
return;
@@ -627,7 +626,6 @@ htable_alloc(
* Donate successful htable allocations to the reserve.
*/
for (;;) {
- ASSERT(curthread != hat_reserves_thread);
ht = kmem_cache_alloc(htable_cache, kmflags);
if (ht == NULL)
break;
@@ -777,10 +775,12 @@ htable_free(htable_t *ht)
/*
* Free htables or put into reserves.
*/
- if (USE_HAT_RESERVES() || htable_reserve_cnt < htable_reserve_amount)
+ if (USE_HAT_RESERVES() || htable_reserve_cnt < htable_reserve_amount) {
htable_put_reserve(ht);
- else
+ } else {
kmem_cache_free(htable_cache, ht);
+ htable_adjust_reserve();
+ }
}