P4D_SIZE
addr = start + i * P4D_SIZE;
#define P4D_MASK (~(P4D_SIZE-1))
#define SHADOW_ALIGN P4D_SIZE
if (ALIGN_DOWN(addr, P4D_SIZE) == addr)
else if (sz < P4D_SIZE)
pdsize = P4D_SIZE;
gpa = (gpa & P4D_MASK) + P4D_SIZE;
if (!IS_ALIGNED(addr, P4D_SIZE) ||
!IS_ALIGNED(next, P4D_SIZE)) {
if (!mm_pud_folded(mm) && sz >= P4D_SIZE)
else if (sz < P4D_SIZE)
pdsize = P4D_SIZE;
addr = start + i * P4D_SIZE;
#define P4D_MASK (~(P4D_SIZE - 1))
return P4D_SIZE - PUD_SIZE;
else if (sz >= P4D_SIZE)
(uintptr_t)fixmap_pud, P4D_SIZE, PAGE_TABLE);
(uintptr_t)trampoline_pud, P4D_SIZE, PAGE_TABLE);
free_vmemmap_storage(p4d_page(p4d), P4D_SIZE, altmap);
if (sz == P4D_SIZE) {
!(pa & (P4D_SIZE - 1)) && !(va & (P4D_SIZE - 1)) && size >= P4D_SIZE)
return P4D_SIZE;
P4D_SIZE, PAGE_TABLE);
if (p4d_none(p4dp_get(p4dp)) && IS_ALIGNED(vaddr, P4D_SIZE) &&
(next - vaddr) >= P4D_SIZE) {
phys_addr = memblock_phys_alloc(P4D_SIZE, P4D_SIZE);
memset(__va(phys_addr), KASAN_SHADOW_INIT, P4D_SIZE);
if (pgtable_l4_enabled && IS_ALIGNED(vaddr, P4D_SIZE) &&
(next - vaddr) >= P4D_SIZE) {
if (p4d_none(p4dp_get(p4dp)) && IS_ALIGNED(vaddr, P4D_SIZE) &&
(next - vaddr) >= P4D_SIZE) {
if (next - vaddr >= P4D_SIZE &&
else if (stride_size >= P4D_SIZE)
stride_size = P4D_SIZE;
IS_ALIGNED(addr, P4D_SIZE) && end - addr >= P4D_SIZE) {
entries += (DIV_ROUND_UP(len, P4D_SIZE) + 1) * sizeof(pud_t) * PTRS_PER_PUD;
tables += DIV_ROUND_UP(entries, P4D_SIZE) * sizeof(pud_t) * PTRS_PER_PUD;
#define P4D_MASK (~(P4D_SIZE - 1))
#define CPU_ENTRY_AREA_MAP_SIZE P4D_SIZE
vaddr_next = (vaddr & P4D_MASK) + P4D_SIZE;
for (; start < end; start += P4D_SIZE)
xen_free_ro_pages(pa, P4D_SIZE);
n_pud = roundup(size, P4D_SIZE) >> P4D_SHIFT;
#define P4D_MASK (~(P4D_SIZE-1))
if (_sz >= P4D_SIZE) \
({ unsigned long __boundary = ((addr) + P4D_SIZE) & P4D_MASK; \
#define p4d_leaf_size(x) P4D_SIZE
return P4D_SIZE - PUD_SIZE;
if (IS_ALIGNED(addr, P4D_SIZE) && end - addr >= P4D_SIZE) {
if (IS_ALIGNED(addr, P4D_SIZE) &&
IS_ALIGNED(next, P4D_SIZE)) {
step_forward(pvmw, P4D_SIZE);
if ((end - addr) != P4D_SIZE)
if (!IS_ALIGNED(addr, P4D_SIZE))
if (!IS_ALIGNED(phys_addr, P4D_SIZE))
end = round_up(end, P4D_SIZE);