Skip to content

Commit 8cc14fd

Browse files
committed
Merge branches 'for-next/amuv1-avg-freq', 'for-next/pkey_unrestricted', 'for-next/sysreg', 'for-next/misc', 'for-next/pgtable-cleanups', 'for-next/kselftest', 'for-next/uaccess-mops', 'for-next/pie-poe-cleanup', 'for-next/cputype-kryo', 'for-next/cca-dma-address', 'for-next/drop-pxd_table_bit' and 'for-next/spectre-bhb-assume-vulnerable', remote-tracking branch 'arm64/for-next/perf' into for-next/core
* arm64/for-next/perf: perf/arm_cspmu: Fix missing io.h include perf/arm_cspmu: Add PMEVFILT2R support perf/arm_cspmu: Generalise event filtering perf/arm_cspmu: Move register definitons to header drivers/perf: apple_m1: Support host/guest event filtering drivers/perf: apple_m1: Refactor event select/filter configuration perf/dwc_pcie: fix duplicate pci_dev devices perf/dwc_pcie: fix some unreleased resources perf/arm-cmn: Minor event type housekeeping perf: arm_pmu: Move PMUv3-specific data perf: apple_m1: Don't disable counter in m1_pmu_enable_event() perf: arm_v7_pmu: Don't disable counter in (armv7|krait_|scorpion_)pmu_enable_event() perf: arm_v7_pmu: Drop obvious comments for enabling/disabling counters and interrupts perf: arm_pmuv3: Don't disable counter in armv8pmu_enable_event() perf: arm_pmu: Don't disable counter in armpmu_add() perf: arm_pmuv3: Call kvm_vcpu_pmu_resync_el0() before enabling counters perf: arm_pmuv3: Add support for ARM Rainier PMU * for-next/amuv1-avg-freq: : Add support for AArch64 AMUv1-based average freq arm64: Utilize for_each_cpu_wrap for reference lookup arm64: Update AMU-based freq scale factor on entering idle arm64: Provide an AMU-based version of arch_freq_get_on_cpu cpufreq: Introduce an optional cpuinfo_avg_freq sysfs entry cpufreq: Allow arch_freq_get_on_cpu to return an error arch_topology: init capacity_freq_ref to 0 * for-next/pkey_unrestricted: : mm/pkey: Add PKEY_UNRESTRICTED macro selftest/powerpc/mm/pkey: fix build-break introduced by commit 00894c3 selftests/powerpc: Use PKEY_UNRESTRICTED macro selftests/mm: Use PKEY_UNRESTRICTED macro mm/pkey: Add PKEY_UNRESTRICTED macro * for-next/sysreg: : arm64 sysreg updates arm64/sysreg: Enforce whole word match for open/close tokens arm64/sysreg: Fix unbalanced closing block arm64/sysreg: Add register fields for HFGWTR2_EL2 arm64/sysreg: Add register fields for HFGRTR2_EL2 arm64/sysreg: Add register fields for HFGITR2_EL2 arm64/sysreg: Add register fields for HDFGWTR2_EL2 arm64/sysreg: Add register fields for HDFGRTR2_EL2 arm64/sysreg: Update register fields for ID_AA64MMFR0_EL1 * for-next/misc: : Miscellaneous arm64 patches arm64: mm: Don't use %pK through printk arm64/fpsimd: Remove unused declaration fpsimd_kvm_prepare() * for-next/pgtable-cleanups: : arm64 pgtable accessors cleanup arm64/mm: Define PTDESC_ORDER arm64/kernel: Always use level 2 or higher for early mappings arm64/hugetlb: Consistently use pud_sect_supported() arm64/mm: Convert __pte_to_phys() and __phys_to_pte_val() as functions * for-next/kselftest: : arm64 kselftest updates kselftest/arm64: mte: Skip the hugetlb tests if MTE not supported on such mappings kselftest/arm64: mte: Use the correct naming for tag check modes in check_hugetlb_options.c * for-next/uaccess-mops: : Implement the uaccess memory copy/set using MOPS instructions arm64: lib: Use MOPS for usercopy routines arm64: mm: Handle PAN faults on uaccess CPY* instructions arm64: extable: Add fixup handling for uaccess CPY* instructions * for-next/pie-poe-cleanup: : PIE/POE helpers cleanup arm64/sysreg: Move POR_EL0_INIT to asm/por.h arm64/sysreg: Rename POE_RXW to POE_RWX arm64/sysreg: Improve PIR/POR helpers * for-next/cputype-kryo: : Add cputype info for some Qualcomm Kryo cores arm64: cputype: Add comments about Qualcomm Kryo 5XX and 6XX cores arm64: cputype: Add QCOM_CPU_PART_KRYO_3XX_GOLD * for-next/cca-dma-address: : Fix DMA address for devices used in realms with Arm CCA arm64: realm: Use aliased addresses for device DMA to shared buffers dma: Introduce generic dma_addr_*crypted helpers dma: Fix encryption bit clearing for dma_to_phys * for-next/drop-pxd_table_bit: : Drop the arm64 PXD_TABLE_BIT (clean-up in preparation for 128-bit PTEs) arm64/mm: Drop PXD_TABLE_BIT arm64/mm: Check pmd_table() in pmd_trans_huge() arm64/mm: Check PUD_TYPE_TABLE in pud_bad() arm64/mm: Check PXD_TYPE_TABLE in [p4d|pgd]_bad() arm64/mm: Clear PXX_TYPE_MASK and set PXD_TYPE_SECT in [pmd|pud]_mkhuge() arm64/mm: Clear PXX_TYPE_MASK in mk_[pmd|pud]_sect_prot() arm64/ptdump: Test PMD_TYPE_MASK for block mapping KVM: arm64: ptdump: Test PMD_TYPE_MASK for block mapping * for-next/spectre-bhb-assume-vulnerable: : Rework Spectre BHB mitigations to not assume "safe" arm64: errata: Add newer ARM cores to the spectre_bhb_loop_affected() lists arm64: cputype: Add MIDR_CORTEX_A76AE arm64: errata: Add KRYO 2XX/3XX/4XX silver cores to Spectre BHB safe list arm64: errata: Assume that unknown CPUs _are_ vulnerable to Spectre BHB arm64: errata: Add QCOM_KRYO_4XX_GOLD to the spectre_bhb_k24_list
13 parents 9651f78 + 20711ef + 73276ce + 2fdbf2f + 892d20a + 51ecb29 + 306219d + fe59e03 + 650701e + 53a52a0 + 7d953a0 + 50c2726 + a595138 commit 8cc14fd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+773
-280
lines changed

Documentation/admin-guide/pm/cpufreq.rst

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,20 @@ are the following:
248248
If that frequency cannot be determined, this attribute should not
249249
be present.
250250

251+
``cpuinfo_avg_freq``
252+
An average frequency (in KHz) of all CPUs belonging to a given policy,
253+
derived from a hardware provided feedback and reported on a time frame
254+
spanning at most few milliseconds.
255+
256+
This is expected to be based on the frequency the hardware actually runs
257+
at and, as such, might require specialised hardware support (such as AMU
258+
extension on ARM). If one cannot be determined, this attribute should
259+
not be present.
260+
261+
Note, that failed attempt to retrieve current frequency for a given
262+
CPU(s) will result in an appropriate error, i.e: EAGAIN for CPU that
263+
remains idle (raised on ARM).
264+
251265
``cpuinfo_max_freq``
252266
Maximum possible operating frequency the CPUs belonging to this policy
253267
can run at (in kHz).
@@ -293,7 +307,8 @@ are the following:
293307
Some architectures (e.g. ``x86``) may attempt to provide information
294308
more precisely reflecting the current CPU frequency through this
295309
attribute, but that still may not be the exact current CPU frequency as
296-
seen by the hardware at the moment.
310+
seen by the hardware at the moment. This behavior though, is only
311+
available via c:macro:``CPUFREQ_ARCH_CUR_FREQ`` option.
297312

298313
``scaling_driver``
299314
The scaling driver currently in use.

arch/arm64/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ config ARCH_MMAP_RND_BITS_MIN
323323
default 18
324324

325325
# max bits determined by the following formula:
326-
# VA_BITS - PAGE_SHIFT - 3
326+
# VA_BITS - PTDESC_TABLE_SHIFT
327327
config ARCH_MMAP_RND_BITS_MAX
328328
default 19 if ARM64_VA_BITS=36
329329
default 24 if ARM64_VA_BITS=39

arch/arm64/include/asm/asm-extable.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
#define EX_TYPE_BPF 1
1010
#define EX_TYPE_UACCESS_ERR_ZERO 2
1111
#define EX_TYPE_KACCESS_ERR_ZERO 3
12-
#define EX_TYPE_LOAD_UNALIGNED_ZEROPAD 4
12+
#define EX_TYPE_UACCESS_CPY 4
13+
#define EX_TYPE_LOAD_UNALIGNED_ZEROPAD 5
1314

1415
/* Data fields for EX_TYPE_UACCESS_ERR_ZERO */
1516
#define EX_DATA_REG_ERR_SHIFT 0
@@ -23,6 +24,9 @@
2324
#define EX_DATA_REG_ADDR_SHIFT 5
2425
#define EX_DATA_REG_ADDR GENMASK(9, 5)
2526

27+
/* Data fields for EX_TYPE_UACCESS_CPY */
28+
#define EX_DATA_UACCESS_WRITE BIT(0)
29+
2630
#ifdef __ASSEMBLY__
2731

2832
#define __ASM_EXTABLE_RAW(insn, fixup, type, data) \
@@ -69,6 +73,10 @@
6973
.endif
7074
.endm
7175

76+
.macro _asm_extable_uaccess_cpy, insn, fixup, uaccess_is_write
77+
__ASM_EXTABLE_RAW(\insn, \fixup, EX_TYPE_UACCESS_CPY, \uaccess_is_write)
78+
.endm
79+
7280
#else /* __ASSEMBLY__ */
7381

7482
#include <linux/stringify.h>

arch/arm64/include/asm/asm-uaccess.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ alternative_else_nop_endif
6161
9999: x; \
6262
_asm_extable_uaccess 9999b, l
6363

64+
#define USER_CPY(l, uaccess_is_write, x...) \
65+
9999: x; \
66+
_asm_extable_uaccess_cpy 9999b, l, uaccess_is_write
67+
6468
/*
6569
* Generate the assembly for LDTR/STTR with exception table entries.
6670
* This is complicated as there is no post-increment or pair versions of the

arch/arm64/include/asm/cputype.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
#define ARM_CPU_PART_CORTEX_A76 0xD0B
7676
#define ARM_CPU_PART_NEOVERSE_N1 0xD0C
7777
#define ARM_CPU_PART_CORTEX_A77 0xD0D
78+
#define ARM_CPU_PART_CORTEX_A76AE 0xD0E
7879
#define ARM_CPU_PART_NEOVERSE_V1 0xD40
7980
#define ARM_CPU_PART_CORTEX_A78 0xD41
8081
#define ARM_CPU_PART_CORTEX_A78AE 0xD42
@@ -119,6 +120,7 @@
119120
#define QCOM_CPU_PART_KRYO 0x200
120121
#define QCOM_CPU_PART_KRYO_2XX_GOLD 0x800
121122
#define QCOM_CPU_PART_KRYO_2XX_SILVER 0x801
123+
#define QCOM_CPU_PART_KRYO_3XX_GOLD 0x802
122124
#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803
123125
#define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804
124126
#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805
@@ -159,6 +161,7 @@
159161
#define MIDR_CORTEX_A76 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76)
160162
#define MIDR_NEOVERSE_N1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N1)
161163
#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77)
164+
#define MIDR_CORTEX_A76AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76AE)
162165
#define MIDR_NEOVERSE_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1)
163166
#define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78)
164167
#define MIDR_CORTEX_A78AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78AE)
@@ -196,10 +199,21 @@
196199
#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)
197200
#define MIDR_QCOM_KRYO_2XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_GOLD)
198201
#define MIDR_QCOM_KRYO_2XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_SILVER)
202+
#define MIDR_QCOM_KRYO_3XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_GOLD)
199203
#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER)
200204
#define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD)
201205
#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER)
202206
#define MIDR_QCOM_ORYON_X1 MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_ORYON_X1)
207+
208+
/*
209+
* NOTES:
210+
* - Qualcomm Kryo 5XX Prime / Gold ID themselves as MIDR_CORTEX_A77
211+
* - Qualcomm Kryo 5XX Silver IDs itself as MIDR_QCOM_KRYO_4XX_SILVER
212+
* - Qualcomm Kryo 6XX Prime IDs itself as MIDR_CORTEX_X1
213+
* - Qualcomm Kryo 6XX Gold IDs itself as ARM_CPU_PART_CORTEX_A78
214+
* - Qualcomm Kryo 6XX Silver IDs itself as MIDR_CORTEX_A55
215+
*/
216+
203217
#define MIDR_NVIDIA_DENVER MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_DENVER)
204218
#define MIDR_NVIDIA_CARMEL MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_CARMEL)
205219
#define MIDR_FUJITSU_A64FX MIDR_CPU_MODEL(ARM_CPU_IMP_FUJITSU, FUJITSU_CPU_PART_A64FX)

arch/arm64/include/asm/extable.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ do { \
3333
(b)->data = (tmp).data; \
3434
} while (0)
3535

36+
bool insn_may_access_user(unsigned long addr, unsigned long esr);
37+
3638
#ifdef CONFIG_BPF_JIT
3739
bool ex_handler_bpf(const struct exception_table_entry *ex,
3840
struct pt_regs *regs);
@@ -45,5 +47,5 @@ bool ex_handler_bpf(const struct exception_table_entry *ex,
4547
}
4648
#endif /* !CONFIG_BPF_JIT */
4749

48-
bool fixup_exception(struct pt_regs *regs);
50+
bool fixup_exception(struct pt_regs *regs, unsigned long esr);
4951
#endif

arch/arm64/include/asm/fpsimd.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ extern void fpsimd_signal_preserve_current_state(void);
8080
extern void fpsimd_preserve_current_state(void);
8181
extern void fpsimd_restore_current_state(void);
8282
extern void fpsimd_update_current_state(struct user_fpsimd_state const *state);
83-
extern void fpsimd_kvm_prepare(void);
8483

8584
struct cpu_fp_state {
8685
struct user_fpsimd_state *st;

arch/arm64/include/asm/kernel-pgtable.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@
4545
#define SPAN_NR_ENTRIES(vstart, vend, shift) \
4646
((((vend) - 1) >> (shift)) - ((vstart) >> (shift)) + 1)
4747

48-
#define EARLY_ENTRIES(vstart, vend, shift, add) \
49-
(SPAN_NR_ENTRIES(vstart, vend, shift) + (add))
48+
#define EARLY_ENTRIES(lvl, vstart, vend) \
49+
SPAN_NR_ENTRIES(vstart, vend, SWAPPER_BLOCK_SHIFT + lvl * PTDESC_TABLE_SHIFT)
5050

51-
#define EARLY_LEVEL(lvl, lvls, vstart, vend, add) \
52-
(lvls > lvl ? EARLY_ENTRIES(vstart, vend, SWAPPER_BLOCK_SHIFT + lvl * (PAGE_SHIFT - 3), add) : 0)
51+
#define EARLY_LEVEL(lvl, lvls, vstart, vend, add) \
52+
((lvls) > (lvl) ? EARLY_ENTRIES(lvl, vstart, vend) + (add) : 0)
5353

5454
#define EARLY_PAGES(lvls, vstart, vend, add) (1 /* PGDIR page */ \
5555
+ EARLY_LEVEL(3, (lvls), (vstart), (vend), add) /* each entry needs a next level page table */ \

arch/arm64/include/asm/mem_encrypt.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,15 @@ static inline bool force_dma_unencrypted(struct device *dev)
2121
return is_realm_world();
2222
}
2323

24+
/*
25+
* For Arm CCA guests, canonical addresses are "encrypted", so no changes
26+
* required for dma_addr_encrypted().
27+
* The unencrypted DMA buffers must be accessed via the unprotected IPA,
28+
* "top IPA bit" set.
29+
*/
30+
#define dma_addr_unencrypted(x) ((x) | PROT_NS_SHARED)
31+
32+
/* Clear the "top" IPA bit while converting back */
33+
#define dma_addr_canonical(x) ((x) & ~PROT_NS_SHARED)
34+
2435
#endif /* __ASM_MEM_ENCRYPT_H */

arch/arm64/include/asm/pgtable-hwdef.h

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,40 +7,46 @@
77

88
#include <asm/memory.h>
99

10+
#define PTDESC_ORDER 3
11+
12+
/* Number of VA bits resolved by a single translation table level */
13+
#define PTDESC_TABLE_SHIFT (PAGE_SHIFT - PTDESC_ORDER)
14+
1015
/*
1116
* Number of page-table levels required to address 'va_bits' wide
1217
* address, without section mapping. We resolve the top (va_bits - PAGE_SHIFT)
13-
* bits with (PAGE_SHIFT - 3) bits at each page table level. Hence:
18+
* bits with PTDESC_TABLE_SHIFT bits at each page table level. Hence:
1419
*
15-
* levels = DIV_ROUND_UP((va_bits - PAGE_SHIFT), (PAGE_SHIFT - 3))
20+
* levels = DIV_ROUND_UP((va_bits - PAGE_SHIFT), PTDESC_TABLE_SHIFT)
1621
*
1722
* where DIV_ROUND_UP(n, d) => (((n) + (d) - 1) / (d))
1823
*
1924
* We cannot include linux/kernel.h which defines DIV_ROUND_UP here
2025
* due to build issues. So we open code DIV_ROUND_UP here:
2126
*
22-
* ((((va_bits) - PAGE_SHIFT) + (PAGE_SHIFT - 3) - 1) / (PAGE_SHIFT - 3))
27+
* ((((va_bits) - PAGE_SHIFT) + PTDESC_TABLE_SHIFT - 1) / PTDESC_TABLE_SHIFT)
2328
*
2429
* which gets simplified as :
2530
*/
26-
#define ARM64_HW_PGTABLE_LEVELS(va_bits) (((va_bits) - 4) / (PAGE_SHIFT - 3))
31+
#define ARM64_HW_PGTABLE_LEVELS(va_bits) \
32+
(((va_bits) - PTDESC_ORDER - 1) / PTDESC_TABLE_SHIFT)
2733

2834
/*
2935
* Size mapped by an entry at level n ( -1 <= n <= 3)
30-
* We map (PAGE_SHIFT - 3) at all translation levels and PAGE_SHIFT bits
36+
* We map PTDESC_TABLE_SHIFT at all translation levels and PAGE_SHIFT bits
3137
* in the final page. The maximum number of translation levels supported by
3238
* the architecture is 5. Hence, starting at level n, we have further
3339
* ((4 - n) - 1) levels of translation excluding the offset within the page.
3440
* So, the total number of bits mapped by an entry at level n is :
3541
*
36-
* ((4 - n) - 1) * (PAGE_SHIFT - 3) + PAGE_SHIFT
42+
* ((4 - n) - 1) * PTDESC_TABLE_SHIFT + PAGE_SHIFT
3743
*
3844
* Rearranging it a bit we get :
39-
* (4 - n) * (PAGE_SHIFT - 3) + 3
45+
* (4 - n) * PTDESC_TABLE_SHIFT + PTDESC_ORDER
4046
*/
41-
#define ARM64_HW_PGTABLE_LEVEL_SHIFT(n) ((PAGE_SHIFT - 3) * (4 - (n)) + 3)
47+
#define ARM64_HW_PGTABLE_LEVEL_SHIFT(n) (PTDESC_TABLE_SHIFT * (4 - (n)) + PTDESC_ORDER)
4248

43-
#define PTRS_PER_PTE (1 << (PAGE_SHIFT - 3))
49+
#define PTRS_PER_PTE (1 << PTDESC_TABLE_SHIFT)
4450

4551
/*
4652
* PMD_SHIFT determines the size a level 2 page table entry can map.
@@ -49,7 +55,7 @@
4955
#define PMD_SHIFT ARM64_HW_PGTABLE_LEVEL_SHIFT(2)
5056
#define PMD_SIZE (_AC(1, UL) << PMD_SHIFT)
5157
#define PMD_MASK (~(PMD_SIZE-1))
52-
#define PTRS_PER_PMD (1 << (PAGE_SHIFT - 3))
58+
#define PTRS_PER_PMD (1 << PTDESC_TABLE_SHIFT)
5359
#endif
5460

5561
/*
@@ -59,14 +65,14 @@
5965
#define PUD_SHIFT ARM64_HW_PGTABLE_LEVEL_SHIFT(1)
6066
#define PUD_SIZE (_AC(1, UL) << PUD_SHIFT)
6167
#define PUD_MASK (~(PUD_SIZE-1))
62-
#define PTRS_PER_PUD (1 << (PAGE_SHIFT - 3))
68+
#define PTRS_PER_PUD (1 << PTDESC_TABLE_SHIFT)
6369
#endif
6470

6571
#if CONFIG_PGTABLE_LEVELS > 4
6672
#define P4D_SHIFT ARM64_HW_PGTABLE_LEVEL_SHIFT(0)
6773
#define P4D_SIZE (_AC(1, UL) << P4D_SHIFT)
6874
#define P4D_MASK (~(P4D_SIZE-1))
69-
#define PTRS_PER_P4D (1 << (PAGE_SHIFT - 3))
75+
#define PTRS_PER_P4D (1 << PTDESC_TABLE_SHIFT)
7076
#endif
7177

7278
/*
@@ -97,7 +103,6 @@
97103
* Level -1 descriptor (PGD).
98104
*/
99105
#define PGD_TYPE_TABLE (_AT(pgdval_t, 3) << 0)
100-
#define PGD_TABLE_BIT (_AT(pgdval_t, 1) << 1)
101106
#define PGD_TYPE_MASK (_AT(pgdval_t, 3) << 0)
102107
#define PGD_TABLE_AF (_AT(pgdval_t, 1) << 10) /* Ignored if no FEAT_HAFT */
103108
#define PGD_TABLE_PXN (_AT(pgdval_t, 1) << 59)
@@ -107,7 +112,6 @@
107112
* Level 0 descriptor (P4D).
108113
*/
109114
#define P4D_TYPE_TABLE (_AT(p4dval_t, 3) << 0)
110-
#define P4D_TABLE_BIT (_AT(p4dval_t, 1) << 1)
111115
#define P4D_TYPE_MASK (_AT(p4dval_t, 3) << 0)
112116
#define P4D_TYPE_SECT (_AT(p4dval_t, 1) << 0)
113117
#define P4D_SECT_RDONLY (_AT(p4dval_t, 1) << 7) /* AP[2] */
@@ -119,7 +123,6 @@
119123
* Level 1 descriptor (PUD).
120124
*/
121125
#define PUD_TYPE_TABLE (_AT(pudval_t, 3) << 0)
122-
#define PUD_TABLE_BIT (_AT(pudval_t, 1) << 1)
123126
#define PUD_TYPE_MASK (_AT(pudval_t, 3) << 0)
124127
#define PUD_TYPE_SECT (_AT(pudval_t, 1) << 0)
125128
#define PUD_SECT_RDONLY (_AT(pudval_t, 1) << 7) /* AP[2] */
@@ -133,7 +136,6 @@
133136
#define PMD_TYPE_MASK (_AT(pmdval_t, 3) << 0)
134137
#define PMD_TYPE_TABLE (_AT(pmdval_t, 3) << 0)
135138
#define PMD_TYPE_SECT (_AT(pmdval_t, 1) << 0)
136-
#define PMD_TABLE_BIT (_AT(pmdval_t, 1) << 1)
137139
#define PMD_TABLE_AF (_AT(pmdval_t, 1) << 10) /* Ignored if no FEAT_HAFT */
138140

139141
/*
@@ -162,7 +164,6 @@
162164
#define PTE_VALID (_AT(pteval_t, 1) << 0)
163165
#define PTE_TYPE_MASK (_AT(pteval_t, 3) << 0)
164166
#define PTE_TYPE_PAGE (_AT(pteval_t, 3) << 0)
165-
#define PTE_TABLE_BIT (_AT(pteval_t, 1) << 1)
166167
#define PTE_USER (_AT(pteval_t, 1) << 6) /* AP[1] */
167168
#define PTE_RDONLY (_AT(pteval_t, 1) << 7) /* AP[2] */
168169
#define PTE_SHARED (_AT(pteval_t, 3) << 8) /* SH[1:0], inner shareable */

0 commit comments

Comments
 (0)