summaryrefslogtreecommitdiff
path: root/usr/src/uts/sfmmu/vm/hat_sfmmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/sfmmu/vm/hat_sfmmu.c')
-rw-r--r--usr/src/uts/sfmmu/vm/hat_sfmmu.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/usr/src/uts/sfmmu/vm/hat_sfmmu.c b/usr/src/uts/sfmmu/vm/hat_sfmmu.c
index 9c7e706005..378839bf11 100644
--- a/usr/src/uts/sfmmu/vm/hat_sfmmu.c
+++ b/usr/src/uts/sfmmu/vm/hat_sfmmu.c
@@ -7379,28 +7379,23 @@ hat_pagesync(struct page *pp, uint_t clearflag)
return (PP_GENERIC_ATTR(pp));
}
- if ((clearflag == (HAT_SYNC_STOPON_REF | HAT_SYNC_DONTZERO)) &&
- PP_ISREF(pp)) {
- return (PP_GENERIC_ATTR(pp));
- }
-
- if ((clearflag == (HAT_SYNC_STOPON_MOD | HAT_SYNC_DONTZERO)) &&
- PP_ISMOD(pp)) {
- return (PP_GENERIC_ATTR(pp));
- }
-
- if ((clearflag & HAT_SYNC_STOPON_SHARED) != 0 &&
- (pp->p_share > po_share) &&
- !(clearflag & HAT_SYNC_ZERORM)) {
- hat_page_setattr(pp, P_REF);
- return (PP_GENERIC_ATTR(pp));
+ if ((clearflag & HAT_SYNC_ZERORM) == 0) {
+ if ((clearflag & HAT_SYNC_STOPON_REF) && PP_ISREF(pp)) {
+ return (PP_GENERIC_ATTR(pp));
+ }
+ if ((clearflag & HAT_SYNC_STOPON_MOD) && PP_ISMOD(pp)) {
+ return (PP_GENERIC_ATTR(pp));
+ }
+ if (clearflag & HAT_SYNC_STOPON_SHARED) {
+ if (pp->p_share > po_share) {
+ hat_page_setattr(pp, P_REF);
+ return (PP_GENERIC_ATTR(pp));
+ }
+ stop_on_sh = 1;
+ shcnt = 0;
+ }
}
- if ((clearflag & HAT_SYNC_STOPON_SHARED) &&
- !(clearflag & HAT_SYNC_ZERORM)) {
- stop_on_sh = 1;
- shcnt = 0;
- }
clearflag &= ~HAT_SYNC_STOPON_SHARED;
pml = sfmmu_mlist_enter(pp);
index = PP_MAPINDEX(pp);