On Thu, 28 Dec 2023, artem.kuzin@xxxxxxxxxx wrote:
--- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -626,7 +628,14 @@ struct mm_struct { unsigned long mmap_compat_legacy_base; #endif unsigned long task_size; /* size of task vm space */ - pgd_t * pgd; +#ifndef CONFIG_KERNEL_REPLICATION + pgd_t *pgd; +#else + union { + pgd_t *pgd; + pgd_t *pgd_numa[MAX_NUMNODES]; + }; +#endif
Hmmm... This is adding the pgd pointers for all mm_structs. But we only need the numa pgs pointers for the init_mm. Can this be a separate variable? There are some architecures with larger number of nodes.