summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/vm
diff options
context:
space:
mode:
authorVijay S Balakrishna <Vijay.Balakrishna@Sun.COM>2010-03-01 19:02:51 -0800
committerVijay S Balakrishna <Vijay.Balakrishna@Sun.COM>2010-03-01 19:02:51 -0800
commit1a3c9a5ad9672083a3543f1a1aa6bb4a2328d07c (patch)
treeeb8ed6a131be7ddba7d1d0d6957146d79b8aa5e3 /usr/src/uts/common/vm
parent99c71c44b1e6f517134497dcf0040aa2dc66e552 (diff)
downloadillumos-joyent-1a3c9a5ad9672083a3543f1a1aa6bb4a2328d07c.tar.gz
6910864 memscrubber should not scrub pages *scheduled* for retirement
Diffstat (limited to 'usr/src/uts/common/vm')
-rw-r--r--usr/src/uts/common/vm/page_retire.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/usr/src/uts/common/vm/page_retire.c b/usr/src/uts/common/vm/page_retire.c
index 1d6512f1b2..8836a18f0c 100644
--- a/usr/src/uts/common/vm/page_retire.c
+++ b/usr/src/uts/common/vm/page_retire.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -138,6 +138,7 @@
#include <sys/mem_config.h>
#include <sys/atomic.h>
#include <sys/callb.h>
+#include <sys/kobj.h>
#include <vm/page.h>
#include <vm/vm_dep.h>
#include <vm/as.h>
@@ -274,6 +275,8 @@ int page_retire_first_ue = 1;
*/
static int pr_enable = 0;
+static void (*memscrub_notify_func)(uint64_t);
+
#ifdef DEBUG
struct page_retire_debug {
int prd_dup1;
@@ -919,6 +922,9 @@ page_retire_init(void)
kstat_install(ksp);
}
+ memscrub_notify_func =
+ (void(*)(uint64_t))kobj_getsymvalue("memscrub_notify", 0);
+
page_capture_register_callback(PC_RETIRE, -1, page_retire_pp_finish);
pr_enable = 1;
}
@@ -1039,6 +1045,10 @@ page_retire(uint64_t pa, uchar_t reason)
return (page_retire_done(pp, PRD_DUPLICATE));
}
+ if (memscrub_notify_func != NULL) {
+ (void) memscrub_notify_func(pa);
+ }
+
if ((reason & PR_UE) && !PP_TOXIC(pp)) {
PR_MESSAGE(CE_NOTE, 1, "Scheduling clearing of error on"
" page 0x%08x.%08x", pa);