radix.h (1136fa0c07de570dc17858745af8be169d1440ba) radix.h (41b7a347bf1491e7300563bb224432608b41f62a)
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _ASM_POWERPC_PGTABLE_RADIX_H
3#define _ASM_POWERPC_PGTABLE_RADIX_H
4
5#include <asm/asm-const.h>
6
7#ifndef __ASSEMBLY__
8#include <asm/cmpxchg.h>

--- 21 unchanged lines hidden (view full) ---

30/* Don't have anything in the reserved bits and leaf bits */
31#define RADIX_PMD_BAD_BITS 0x60000000000000e0UL
32#define RADIX_PUD_BAD_BITS 0x60000000000000e0UL
33#define RADIX_P4D_BAD_BITS 0x60000000000000e0UL
34
35#define RADIX_PMD_SHIFT (PAGE_SHIFT + RADIX_PTE_INDEX_SIZE)
36#define RADIX_PUD_SHIFT (RADIX_PMD_SHIFT + RADIX_PMD_INDEX_SIZE)
37#define RADIX_PGD_SHIFT (RADIX_PUD_SHIFT + RADIX_PUD_INDEX_SIZE)
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _ASM_POWERPC_PGTABLE_RADIX_H
3#define _ASM_POWERPC_PGTABLE_RADIX_H
4
5#include <asm/asm-const.h>
6
7#ifndef __ASSEMBLY__
8#include <asm/cmpxchg.h>

--- 21 unchanged lines hidden (view full) ---

30/* Don't have anything in the reserved bits and leaf bits */
31#define RADIX_PMD_BAD_BITS 0x60000000000000e0UL
32#define RADIX_PUD_BAD_BITS 0x60000000000000e0UL
33#define RADIX_P4D_BAD_BITS 0x60000000000000e0UL
34
35#define RADIX_PMD_SHIFT (PAGE_SHIFT + RADIX_PTE_INDEX_SIZE)
36#define RADIX_PUD_SHIFT (RADIX_PMD_SHIFT + RADIX_PMD_INDEX_SIZE)
37#define RADIX_PGD_SHIFT (RADIX_PUD_SHIFT + RADIX_PUD_INDEX_SIZE)
38
39#define R_PTRS_PER_PTE (1 << RADIX_PTE_INDEX_SIZE)
40#define R_PTRS_PER_PMD (1 << RADIX_PMD_INDEX_SIZE)
41#define R_PTRS_PER_PUD (1 << RADIX_PUD_INDEX_SIZE)
42
38/*
39 * Size of EA range mapped by our pagetables.
40 */
41#define RADIX_PGTABLE_EADDR_SIZE (RADIX_PTE_INDEX_SIZE + RADIX_PMD_INDEX_SIZE + \
42 RADIX_PUD_INDEX_SIZE + RADIX_PGD_INDEX_SIZE + PAGE_SHIFT)
43#define RADIX_PGTABLE_RANGE (ASM_CONST(1) << RADIX_PGTABLE_EADDR_SIZE)
44
45/*

--- 17 unchanged lines hidden (view full) ---

63 * 0b01......+------------------+
64 * | |
65 * | 0 quadrant |
66 * | |
67 * 0b00......+------------------+
68 *
69 *
70 * 3rd quadrant expanded:
43/*
44 * Size of EA range mapped by our pagetables.
45 */
46#define RADIX_PGTABLE_EADDR_SIZE (RADIX_PTE_INDEX_SIZE + RADIX_PMD_INDEX_SIZE + \
47 RADIX_PUD_INDEX_SIZE + RADIX_PGD_INDEX_SIZE + PAGE_SHIFT)
48#define RADIX_PGTABLE_RANGE (ASM_CONST(1) << RADIX_PGTABLE_EADDR_SIZE)
49
50/*

--- 17 unchanged lines hidden (view full) ---

68 * 0b01......+------------------+
69 * | |
70 * | 0 quadrant |
71 * | |
72 * 0b00......+------------------+
73 *
74 *
75 * 3rd quadrant expanded:
71 * +------------------------------+
76 * +------------------------------+ Highest address (0xc010000000000000)
77 * +------------------------------+ KASAN shadow end (0xc00fc00000000000)
72 * | |
73 * | |
78 * | |
79 * | |
80 * +------------------------------+ Kernel vmemmap end/shadow start (0xc00e000000000000)
74 * | |
81 * | |
75 * +------------------------------+ Kernel vmemmap end (0xc010000000000000)
76 * | |
77 * | 512TB |
78 * | |
79 * +------------------------------+ Kernel IO map end/vmemap start
80 * | |
81 * | 512TB |
82 * | |
83 * +------------------------------+ Kernel vmap end/ IO map start
84 * | |
85 * | 512TB |
86 * | |
87 * +------------------------------+ Kernel virt start (0xc008000000000000)
88 * | |
89 * | |
90 * | |
91 * +------------------------------+ Kernel linear (0xc.....)
92 */
93
82 * | 512TB |
83 * | |
84 * +------------------------------+ Kernel IO map end/vmemap start
85 * | |
86 * | 512TB |
87 * | |
88 * +------------------------------+ Kernel vmap end/ IO map start
89 * | |
90 * | 512TB |
91 * | |
92 * +------------------------------+ Kernel virt start (0xc008000000000000)
93 * | |
94 * | |
95 * | |
96 * +------------------------------+ Kernel linear (0xc.....)
97 */
98
99/* For the sizes of the shadow area, see kasan.h */
94
95/*
96 * If we store section details in page->flags we can't increase the MAX_PHYSMEM_BITS
97 * if we increase SECTIONS_WIDTH we will not store node details in page->flags and
98 * page_to_nid does a page->section->node lookup
99 * Hence only increase for VMEMMAP. Further depending on SPARSEMEM_EXTREME reduce
100 * memory requirements with large number of sections.
101 * 51 bits is the max physical real address on POWER9

--- 222 unchanged lines hidden ---
100
101/*
102 * If we store section details in page->flags we can't increase the MAX_PHYSMEM_BITS
103 * if we increase SECTIONS_WIDTH we will not store node details in page->flags and
104 * page_to_nid does a page->section->node lookup
105 * Hence only increase for VMEMMAP. Further depending on SPARSEMEM_EXTREME reduce
106 * memory requirements with large number of sections.
107 * 51 bits is the max physical real address on POWER9

--- 222 unchanged lines hidden ---