summaryrefslogtreecommitdiffstats
path: root/Documentation/watchdog
diff options
context:
space:
mode:
authorDavid Vrabel <david.vrabel@citrix.com>2012-07-09 11:39:05 +0100
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2012-07-19 15:51:43 -0400
commitd095d43e78dd811d5c02c25e207c3364019b5a77 (patch)
tree4d104a6b39487e3cddd3ba2490fe257ed3f5793d /Documentation/watchdog
parent37a80bf560786d96c5e8370bff45d867e43fd5c3 (diff)
downloadop-kernel-dev-d095d43e78dd811d5c02c25e207c3364019b5a77.zip
op-kernel-dev-d095d43e78dd811d5c02c25e207c3364019b5a77.tar.gz
xen/mm: do direct hypercall in xen_set_pte() if batching is unavailable
In xen_set_pte() if batching is unavailable (because the caller is in an interrupt context such as handling a page fault) it would fall back to using native_set_pte() and trapping and emulating the PTE write. On 32-bit guests this requires two traps for each PTE write (one for each dword of the PTE). Instead, do one mmu_update hypercall directly. During construction of the initial page tables, continue to use native_set_pte() because most of the PTEs being set are in writable and unpinned pages (see phys_pmd_init() in arch/x86/mm/init_64.c) and using a hypercall for this is very expensive. This significantly improves page fault performance in 32-bit PV guests. lmbench3 test Before After Improvement ---------------------------------------------- lat_pagefault 3.18 us 2.32 us 27% lat_proc fork 356 us 313.3 us 11% Signed-off-by: David Vrabel <david.vrabel@citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'Documentation/watchdog')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud