linux/arch/powerpc
Christophe Leroy b12c07a4bb powerpc/mm: Reduce hugepd size for 8M hugepages on 8xx
Commit 55c8fc3f49 ("powerpc/8xx: reintroduce 16K pages with HW
assistance") redefined pte_t as a struct of 4 pte_basic_t, because
in 16K pages mode there are four identical entries in the page table.
But hugepd entries for 8M pages require only one entry of size
pte_basic_t. So there is no point in creating a cache for 4 entries
page tables.

Calculate PTE_T_ORDER using the size of pte_basic_t instead of pte_t.

Define specific huge_pte helpers (set_huge_pte_at(), huge_pte_clear(),
huge_ptep_set_wrprotect()) to write the pte in a single entry instead
of using set_pte_at() which writes 4 identical entries in 16k pages
mode. Also make sure that __ptep_set_access_flags() properly handle
the huge_pte case.

Define set_pte_filter() inline otherwise GCC doesn't inline it anymore
because it is now used twice, and that gives a pretty suboptimal code
because of pte_t being a struct of 4 entries.

Those functions are also used for 512k pages which only require one
entry as well allthough replicating it four times was harmless as 512k
pages entries are spread every 128 bytes in the table.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/43050d1a0c2d6e1541cab9c1126fc80bc7015ebd.1589866984.git.christophe.leroy@csgroup.eu
2020-05-26 22:22:20 +10:00
..
boot powerpc/wrapper: Output linker map file 2020-05-19 00:10:35 +10:00
configs powerpc updates for 5.7 #2 2020-04-09 11:01:42 -07:00
crypto crypto: remove CRYPTO_TFM_RES_BAD_KEY_LEN 2020-01-09 11:30:53 +08:00
include powerpc/mm: Reduce hugepd size for 8M hugepages on 8xx 2020-05-26 22:22:20 +10:00
kernel powerpc/mm: Allocate static page tables for fixmap 2020-05-26 22:22:19 +10:00
kexec powerpc updates for 5.7 2020-04-05 11:12:59 -07:00
kvm powerpc/watchpoint: Rename current DAWR macros 2020-05-19 00:11:03 +10:00
lib powerpc sstep: Add support for prefixed fixed-point arithmetic 2020-05-19 00:11:03 +10:00
math-emu
mm powerpc/mm: Reduce hugepd size for 8M hugepages on 8xx 2020-05-26 22:22:20 +10:00
net treewide: Use sizeof_field() macro 2019-12-09 10:36:44 -08:00
oprofile powerpc updates for 5.6 2020-02-04 13:06:46 +00:00
perf powerpc: Use a datatype for instructions 2020-05-19 00:10:37 +10:00
platforms powerpc: Use a datatype for instructions 2020-05-19 00:10:37 +10:00
purgatory .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
sysdev powerpc/xive: Define xive_native_alloc_irq_on_chip() 2020-04-20 16:52:59 +10:00
tools powerpc/head_check: Avoid broken pipe 2020-05-19 00:10:35 +10:00
xmon powerpc/watchpoint/xmon: Support 2nd DAWR 2020-05-19 00:14:45 +10:00
Kbuild
Kconfig powerpc/kasan: Fix stack overflow by increasing THREAD_SHIFT 2020-05-11 23:15:16 +10:00
Kconfig.debug powerpc/ptdump: Only enable PPC_CHECK_WX with STRICT_KERNEL_RWX 2020-01-23 21:31:13 +11:00
Makefile powerpc: Suppress .eh_frame generation 2020-04-01 14:30:51 +11:00
Makefile.postlink powerpc: Do not consider weak unresolved symbol relocations as bad 2020-01-31 20:17:22 +11:00