summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/aim/slb.c
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2010-07-31 21:35:15 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2010-07-31 21:35:15 +0000
commit1a14bf4648a73ec1bef9d8b27aefcd912d6a1f2f (patch)
tree90743fa4b480cb7ba17438a347ff6c673f1e4505 /sys/powerpc/aim/slb.c
parentb6078715a19dff6c6a77090896b8a42d4b38b1eb (diff)
downloadFreeBSD-src-1a14bf4648a73ec1bef9d8b27aefcd912d6a1f2f.zip
FreeBSD-src-1a14bf4648a73ec1bef9d8b27aefcd912d6a1f2f.tar.gz
Improve hash coverage for kernel page table entries by modifying the kernel
ESID -> VSID map function. This makes ZFS run stably on PowerPC under heavy loads (repeated simultaneous SVN checkouts and updates).
Diffstat (limited to 'sys/powerpc/aim/slb.c')
-rw-r--r--sys/powerpc/aim/slb.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/sys/powerpc/aim/slb.c b/sys/powerpc/aim/slb.c
index 0990f94..7ea4593 100644
--- a/sys/powerpc/aim/slb.c
+++ b/sys/powerpc/aim/slb.c
@@ -104,17 +104,10 @@ uint64_t
va_to_vsid(pmap_t pm, vm_offset_t va)
{
struct slb entry;
- int large;
/* Shortcut kernel case */
- if (pm == kernel_pmap) {
- large = 0;
- if (hw_direct_map && va < VM_MIN_KERNEL_ADDRESS &&
- mem_valid(va, 0) == 0)
- large = 1;
-
- return (KERNEL_VSID((uintptr_t)va >> ADDR_SR_SHFT, large));
- }
+ if (pm == kernel_pmap)
+ return (KERNEL_VSID((uintptr_t)va >> ADDR_SR_SHFT));
/*
* If there is no vsid for this VA, we need to add a new entry
OpenPOWER on IntegriCloud