Merge tag 'xfs-for-linus-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / Documentation / x86 / protection-keys.txt
1 Memory Protection Keys for Userspace (PKU aka PKEYs) is a CPU feature
2 which will be found on future Intel CPUs.
3
4 Memory Protection Keys provides a mechanism for enforcing page-based
5 protections, but without requiring modification of the page tables
6 when an application changes protection domains.  It works by
7 dedicating 4 previously ignored bits in each page table entry to a
8 "protection key", giving 16 possible keys.
9
10 There is also a new user-accessible register (PKRU) with two separate
11 bits (Access Disable and Write Disable) for each key.  Being a CPU
12 register, PKRU is inherently thread-local, potentially giving each
13 thread a different set of protections from every other thread.
14
15 There are two new instructions (RDPKRU/WRPKRU) for reading and writing
16 to the new register.  The feature is only available in 64-bit mode,
17 even though there is theoretically space in the PAE PTEs.  These
18 permissions are enforced on data access only and have no effect on
19 instruction fetches.
20
21 =========================== Config Option ===========================
22
23 This config option adds approximately 1.5kb of text. and 50 bytes of
24 data to the executable.  A workload which does large O_DIRECT reads
25 of holes in XFS files was run to exercise get_user_pages_fast().  No
26 performance delta was observed with the config option
27 enabled or disabled.