diff options
| author | Vijay S Balakrishna <Vijay.Balakrishna@Sun.COM> | 2010-03-01 19:02:51 -0800 |
|---|---|---|
| committer | Vijay S Balakrishna <Vijay.Balakrishna@Sun.COM> | 2010-03-01 19:02:51 -0800 |
| commit | 1a3c9a5ad9672083a3543f1a1aa6bb4a2328d07c (patch) | |
| tree | eb8ed6a131be7ddba7d1d0d6957146d79b8aa5e3 /usr/src/uts/common/vm | |
| parent | 99c71c44b1e6f517134497dcf0040aa2dc66e552 (diff) | |
| download | illumos-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.c | 12 |
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); |
