Commit 3be30dba authored by Nikita Panov's avatar Nikita Panov Committed by Denis Darvish
Browse files

arm64: add support of NUMA replication for ptdump

kunpeng inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IBOJU2



-------------------------------------------------

Acked-by: default avatarArtem Kuzin <artem.kuzin@huawei.com>
Acked-by: default avatarAlexander Grubnikov <alexander.grubnikov@huawei.com>
Acked-by: default avatarIlya Hanov <ilya.hanov@huawei-partners.com>
Acked-by: default avatarDenis Darvish <darvish.denis@huawei.com>
Signed-off-by: default avatarNikita Panov <panov.nikita@huawei.com>
parent eb67f4ff
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#include <linux/ptdump.h>
#include <linux/sched.h>
#include <linux/seq_file.h>
#include <linux/numa_kernel_replication.h>

#include <asm/fixmap.h>
#include <asm/kasan.h>
@@ -345,7 +346,7 @@ static struct ptdump_info kernel_ptdump_info = {
	.base_addr	= PAGE_OFFSET,
};

void ptdump_check_wx(void)
static void ptdump_check_wx_pgd(struct mm_struct *mm, pgd_t *pgd)
{
	struct pg_state st = {
		.seq = NULL,
@@ -364,7 +365,7 @@ void ptdump_check_wx(void)
		}
	};

	ptdump_walk_pgd(&st.ptdump, &init_mm, NULL);
	ptdump_walk_pgd(&st.ptdump, mm, pgd);

	if (st.wx_pages || st.uxn_pages)
		pr_warn("Checked W+X mappings: FAILED, %lu W+X pages found, %lu non-UXN pages found\n",
@@ -373,6 +374,18 @@ void ptdump_check_wx(void)
		pr_info("Checked W+X mappings: passed, no W+X pages found\n");
}

void ptdump_check_wx(void)
{
#ifdef CONFIG_KERNEL_REPLICATION
	int nid;

	for_each_memory_node(nid)
		ptdump_check_wx_pgd(&init_mm, per_node_pgd(&init_mm, nid));
#else
	ptdump_check_wx_pgd(&init_mm, init_mm->pgd);
#endif
}

static int __init ptdump_init(void)
{
	address_markers[PAGE_END_NR].start_address = PAGE_END;