drm/rockchip: Don't change hdmi reference clock rate
[drm/drm-misc.git] / Documentation / translations / zh_CN / mm / page_table_check.rst
blobdc34570dceff3a7788097f90da330a602c90e6f0
1 .. SPDX-License-Identifier: GPL-2.0
3 :Original: Documentation/mm/page_table_check.rst
5 :翻译:
7  司延腾 Yanteng Si <siyanteng@loongson.cn>
9 :校译:
12 ========
13 页表检查
14 ========
16 概述
17 ====
19 页表检查允许通过确保防止某些类型的内存损坏来强化内核。
21 当新的页面可以从用户空间访问时,页表检查通过将它们的页表项(PTEs PMD等)添加到页表中来执行额外
22 的验证。
24 在检测到损坏的情况下,内核会被崩溃。页表检查有一个小的性能和内存开销。因此,它在默认情况下是禁用
25 的,但是在额外的加固超过性能成本的系统上,可以选择启用。另外,由于页表检查是同步的,它可以帮助调
26 试双映射内存损坏问题,在错误的映射发生时崩溃内核,而不是在内存损坏错误发生后内核崩溃。
28 双重映射检测逻辑
29 ================
31 +-------------------+-------------------+-------------------+------------------+
32 | Current Mapping   | New mapping       | Permissions       | Rule             |
33 +===================+===================+===================+==================+
34 | Anonymous         | Anonymous         | Read              | Allow            |
35 +-------------------+-------------------+-------------------+------------------+
36 | Anonymous         | Anonymous         | Read / Write      | Prohibit         |
37 +-------------------+-------------------+-------------------+------------------+
38 | Anonymous         | Named             | Any               | Prohibit         |
39 +-------------------+-------------------+-------------------+------------------+
40 | Named             | Anonymous         | Any               | Prohibit         |
41 +-------------------+-------------------+-------------------+------------------+
42 | Named             | Named             | Any               | Allow            |
43 +-------------------+-------------------+-------------------+------------------+
45 启用页表检查
46 ============
48 用以下方法构建内核:
50 - PAGE_TABLE_CHECK=y
51   注意,它只能在ARCH_SUPPORTS_PAGE_TABLE_CHECK可用的平台上启用。
53 - 使用 "page_table_check=on" 内核参数启动。
55 可以选择用PAGE_TABLE_CHECK_ENFORCED来构建内核,以便在没有额外的内核参数的情况下获得页表
56 支持。
58 实现注意事项
59 ============
61 我们特意决定不使用 VMA 信息,以避免依赖于 MM 状态(除了有限的 “struct page” 信息)。页表检查
62 独立于 Linux-MM 状态机,它验证用户可访问的页面不会被错误地共享。
64 PAGE_TABLE_CHECK 依赖于 EXCLUSIVE_SYSTEM_RAM。原因在于,若没有 EXCLUSIVE_SYSTEM_RAM,
65 用户被允许通过 /dev/mem 将任意物理内存区域映射到用户空间。同时,页面可能在映射到用户空间期间
66 改变自己的属性(例如,从匿名页面变为命名页面),导致页表检查检测到“损坏”。
68 即使有 EXCLUSIVE_SYSTEM_RAM,I/O 页面可能仍然被允许通过 /dev/mem 映射。然而,这些页面始终
69 被视为命名页面,所以它们不会破坏页表检查中使用的逻辑。