summaryrefslogtreecommitdiff
path: root/usr/src/uts/sfmmu
diff options
context:
space:
mode:
authorpaulsan <none@none>2008-02-20 04:44:45 -0800
committerpaulsan <none@none>2008-02-20 04:44:45 -0800
commit3452889262c943e9cee4b703a3fd280d56244d50 (patch)
treed86bf2ca86cbbf10d01211477f86d2076a2aee43 /usr/src/uts/sfmmu
parentbca1d2694fb1ddebc6f9273e4d36090d0371e196 (diff)
downloadillumos-joyent-3452889262c943e9cee4b703a3fd280d56244d50.tar.gz
6656203 Stress shm24 test - panic[cpu2]/thread=300daf0e020: ptl1_panic reason 0x15 at TL 1
Diffstat (limited to 'usr/src/uts/sfmmu')
-rw-r--r--usr/src/uts/sfmmu/vm/hat_sfmmu.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/usr/src/uts/sfmmu/vm/hat_sfmmu.c b/usr/src/uts/sfmmu/vm/hat_sfmmu.c
index fcd8c532d2..b81464137f 100644
--- a/usr/src/uts/sfmmu/vm/hat_sfmmu.c
+++ b/usr/src/uts/sfmmu/vm/hat_sfmmu.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -15274,6 +15274,10 @@ sfmmu_leave_scd(sfmmu_t *sfmmup, uchar_t r_type)
if (SFMMU_FLAGS_ISSET(sfmmup, HAT_JOIN_SCD)) {
SFMMU_FLAGS_CLEAR(sfmmup, HAT_JOIN_SCD);
+ /*
+ * Since HAT_JOIN_SCD was set our context
+ * is still invalid.
+ */
} else {
/*
* For a multi-thread process, we must stop
@@ -15281,11 +15285,12 @@ sfmmu_leave_scd(sfmmu_t *sfmmup, uchar_t r_type)
*/
sfmmu_invalidate_ctx(sfmmup);
-
- /* Clear all the rid's for ISM, delete flags, etc */
- ASSERT(SFMMU_FLAGS_ISSET(sfmmup, HAT_ISMBUSY));
- sfmmu_ism_hatflags(sfmmup, 0);
}
+
+ /* Clear all the rid's for ISM, delete flags, etc */
+ ASSERT(SFMMU_FLAGS_ISSET(sfmmup, HAT_ISMBUSY));
+ sfmmu_ism_hatflags(sfmmup, 0);
+
/*
* Update sfmmu_ttecnt to include the rgn ttecnt for rgns that
* are in SCD before this sfmmup leaves the SCD.
@@ -15425,14 +15430,13 @@ sfmmu_ism_hatflags(sfmmu_t *sfmmup, int addflag)
continue;
}
ASSERT(rid >= 0 && rid < SFMMU_MAX_ISM_REGIONS);
- if (SF_RGNMAP_TEST(scdp->scd_ismregion_map, rid)) {
- if (addflag) {
- ism_map[i].imap_hatflags |=
- HAT_CTX1_FLAG;
- } else {
- ism_map[i].imap_hatflags &=
- ~HAT_CTX1_FLAG;
- }
+ if (SF_RGNMAP_TEST(scdp->scd_ismregion_map, rid) &&
+ addflag) {
+ ism_map[i].imap_hatflags |=
+ HAT_CTX1_FLAG;
+ } else {
+ ism_map[i].imap_hatflags &=
+ ~HAT_CTX1_FLAG;
}
}
ism_blkp = ism_blkp->iblk_next;