• Daniel Lehmann's avatar
    [wasm] Add PKU support histogram · 5f4a9045
    Daniel Lehmann authored
    This is a partial reland of https://crrev.com/c/2850932, which was
    reverted because the histogram failed Chromium integration. The V8
    histogram added here uses only two values (0 = no support, 1 = support),
    but is declared with 3 buckets in order not not fail a DCHECK on
    Chromium's side. As soon as https://crrev.com/c/2874651 lands in
    Chromium, we can properly declare the histogram here with only 2 buckets,
    but for now this is good enough to get early data on PKU support in
    the wild.
    
    The other part of the original reverted CL (adding PKU alloc and free
    functions, and a V8 flag for PKU) was already landed again in
    https://crrev.com/c/2878738
    
    Original change's description:
    > [wasm] Add PKU alloc/free and support counter
    >
    > To enforce W^X for the WebAssembly code space, we want to explore using
    > Intel memory protection keys for userspace, also known as MPK, PKEYs, or
    > PKU. Instead of flipping page protection flags with mprotect (which
    > incurs a high syscall overhead; and which switches flags for the whole
    > process), this associates a key with each page once, and then changes
    > the permissions of that key with a fast thread-local register write.
    > That is, this gives both finger-grained permissions (per-thread) and
    > more performance.
    >
    > This CL is starts experimenting with PKUs by
    > (1) trying to allocate a protection key once per {WasmEngine} in x64
    > Linux systems, and
    > (2) adding a counter for recording the sucess/failure of that, to assess
    > the support for PKUs on the target machine.
    >
    > The low-level PKU allocating functions should be moved into base/platform
    > long-term, but are inside wasm/ for this CL.
    >
    > R=clemensb@chromium.org
    > CC=​jkummerow@chromium.org
    >
    > Bug: v8:11714
    > Change-Id: Ia4858970ced4d0b84cc8c2651e86dceb532c88a7
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2850932
    > Commit-Queue: Daniel Lehmann <dlehmann@google.com>
    > Reviewed-by: Clemens Backes <clemensb@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#74319}
    
    Bug: v8:11714, chromium:1207318
    Change-Id: I1035ac09bd7aa04584fbc5df7a408b96dd270d0a
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2871451Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
    Commit-Queue: Daniel Lehmann <dlehmann@google.com>
    Cr-Commit-Position: refs/heads/master@{#74477}
    5f4a9045
Name
Last commit
Last update
.github Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...