summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs
diff options
context:
space:
mode:
authorVivek Gavaskar <vivek.gavaskar@oracle.COM>2010-05-20 14:40:56 -0700
committerVivek Gavaskar <vivek.gavaskar@oracle.COM>2010-05-20 14:40:56 -0700
commit5ab67823875344e1e405d8c9048b48143aa184fb (patch)
tree6d23911850f821adca441a65c564cc5a4daf18be /usr/src/uts/common/fs
parent1214df40ce31103bc34df4ccf5b54897ac8288d4 (diff)
downloadillumos-gate-5ab67823875344e1e405d8c9048b48143aa184fb.tar.gz
6937191 SUNWtetos door_bench testcase is failing for 64KB with timer failure
Diffstat (limited to 'usr/src/uts/common/fs')
-rw-r--r--usr/src/uts/common/fs/doorfs/door_sys.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/usr/src/uts/common/fs/doorfs/door_sys.c b/usr/src/uts/common/fs/doorfs/door_sys.c
index 78c4febb85..a1a285dc76 100644
--- a/usr/src/uts/common/fs/doorfs/door_sys.c
+++ b/usr/src/uts/common/fs/doorfs/door_sys.c
@@ -20,8 +20,7 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
@@ -62,6 +61,7 @@
#include <vm/seg.h>
#include <vm/seg_vn.h>
#include <vm/seg_vn.h>
+#include <vm/seg_kpm.h>
#include <sys/modctl.h>
#include <sys/syscall.h>
@@ -3043,7 +3043,11 @@ door_copy(struct as *as, caddr_t src, caddr_t dest, uint_t len)
/*
* Map destination page into kernel address
*/
- kaddr = (caddr_t)ppmapin(pp, PROT_READ | PROT_WRITE, (caddr_t)-1);
+ if (kpm_enable)
+ kaddr = (caddr_t)hat_kpm_mapin(pp, (struct kpme *)NULL);
+ else
+ kaddr = (caddr_t)ppmapin(pp, PROT_READ | PROT_WRITE,
+ (caddr_t)-1);
/*
* Copy from src to dest
@@ -3053,7 +3057,10 @@ door_copy(struct as *as, caddr_t src, caddr_t dest, uint_t len)
/*
* Unmap destination page from kernel
*/
- ppmapout(kaddr);
+ if (kpm_enable)
+ hat_kpm_mapout(pp, (struct kpme *)NULL, kaddr);
+ else
+ ppmapout(kaddr);
/*
* Unlock destination page
*/