vmem.c (b97d6790d03b763eca08847a9a5869a4291b9f9a) vmem.c (907835e6dee6f77ac30ae50bb3f88bd92055c86e)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright IBM Corp. 2006
4 */
5
6#include <linux/memory_hotplug.h>
7#include <linux/memblock.h>
8#include <linux/pfn.h>

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

317 if (!MACHINE_HAS_NX)
318 prot &= ~_REGION_ENTRY_NOEXEC;
319 pud = pud_offset(p4d, addr);
320 for (; addr < end; addr = next, pud++) {
321 next = pud_addr_end(addr, end);
322 if (!add) {
323 if (pud_none(*pud))
324 continue;
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright IBM Corp. 2006
4 */
5
6#include <linux/memory_hotplug.h>
7#include <linux/memblock.h>
8#include <linux/pfn.h>

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

317 if (!MACHINE_HAS_NX)
318 prot &= ~_REGION_ENTRY_NOEXEC;
319 pud = pud_offset(p4d, addr);
320 for (; addr < end; addr = next, pud++) {
321 next = pud_addr_end(addr, end);
322 if (!add) {
323 if (pud_none(*pud))
324 continue;
325 if (pud_large(*pud)) {
325 if (pud_leaf(*pud)) {
326 if (IS_ALIGNED(addr, PUD_SIZE) &&
327 IS_ALIGNED(next, PUD_SIZE)) {
328 pud_clear(pud);
329 pages++;
330 }
331 continue;
332 }
333 } else if (pud_none(*pud)) {

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

338 set_pud(pud, __pud(__pa(addr) | prot));
339 pages++;
340 continue;
341 }
342 pmd = vmem_crst_alloc(_SEGMENT_ENTRY_EMPTY);
343 if (!pmd)
344 goto out;
345 pud_populate(&init_mm, pud, pmd);
326 if (IS_ALIGNED(addr, PUD_SIZE) &&
327 IS_ALIGNED(next, PUD_SIZE)) {
328 pud_clear(pud);
329 pages++;
330 }
331 continue;
332 }
333 } else if (pud_none(*pud)) {

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

338 set_pud(pud, __pud(__pa(addr) | prot));
339 pages++;
340 continue;
341 }
342 pmd = vmem_crst_alloc(_SEGMENT_ENTRY_EMPTY);
343 if (!pmd)
344 goto out;
345 pud_populate(&init_mm, pud, pmd);
346 } else if (pud_large(*pud)) {
346 } else if (pud_leaf(*pud)) {
347 continue;
348 }
349 ret = modify_pmd_table(pud, addr, next, add, direct);
350 if (ret)
351 goto out;
352 if (!add)
353 try_free_pmd_table(pud, addr & PUD_MASK);
354 }

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

581 pud = pud_offset(p4d, addr);
582 if (pud_none(*pud)) {
583 if (!alloc)
584 goto out;
585 pmd = vmem_crst_alloc(_SEGMENT_ENTRY_EMPTY);
586 if (!pmd)
587 goto out;
588 pud_populate(&init_mm, pud, pmd);
347 continue;
348 }
349 ret = modify_pmd_table(pud, addr, next, add, direct);
350 if (ret)
351 goto out;
352 if (!add)
353 try_free_pmd_table(pud, addr & PUD_MASK);
354 }

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

581 pud = pud_offset(p4d, addr);
582 if (pud_none(*pud)) {
583 if (!alloc)
584 goto out;
585 pmd = vmem_crst_alloc(_SEGMENT_ENTRY_EMPTY);
586 if (!pmd)
587 goto out;
588 pud_populate(&init_mm, pud, pmd);
589 } else if (WARN_ON_ONCE(pud_large(*pud))) {
589 } else if (WARN_ON_ONCE(pud_leaf(*pud))) {
590 goto out;
591 }
592 pmd = pmd_offset(pud, addr);
593 if (pmd_none(*pmd)) {
594 if (!alloc)
595 goto out;
596 pte = vmem_pte_alloc();
597 if (!pte)

--- 72 unchanged lines hidden ---
590 goto out;
591 }
592 pmd = pmd_offset(pud, addr);
593 if (pmd_none(*pmd)) {
594 if (!alloc)
595 goto out;
596 pte = vmem_pte_alloc();
597 if (!pte)

--- 72 unchanged lines hidden ---