We want to rework how set_pXd() behaves for generic compile-time folded page tables by disallowing its use and triggering a compile-time error when it is used improperly, ensuring that the actual first-level set_pXd() function is used instead.
Therefore, replace set_pgd() with set_pud() to setup first-level pgtable in case of X86_PAE. There should be no functional change. Signed-off-by: Yeoreum Yun <[email protected]> --- arch/x86/power/hibernate_32.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/arch/x86/power/hibernate_32.c b/arch/x86/power/hibernate_32.c index 223d5bca29b86..ab5a203b45cb3 100644 --- a/arch/x86/power/hibernate_32.c +++ b/arch/x86/power/hibernate_32.c @@ -29,8 +29,7 @@ pgd_t *resume_pg_dir; */ static pmd_t *resume_one_md_table_init(pgd_t *pgd) { - p4d_t *p4d; - pud_t *pud; + pud_t *pud = pud_offset(p4d_offset(pgd, 0), 0); pmd_t *pmd_table; #ifdef CONFIG_X86_PAE @@ -38,14 +37,10 @@ static pmd_t *resume_one_md_table_init(pgd_t *pgd) if (!pmd_table) return NULL; - set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT)); - p4d = p4d_offset(pgd, 0); - pud = pud_offset(p4d, 0); + set_pud(pud, __pud(__pa(pmd_table) | _PAGE_PRESENT)); BUG_ON(pmd_table != pmd_offset(pud, 0)); #else - p4d = p4d_offset(pgd, 0); - pud = pud_offset(p4d, 0); pmd_table = pmd_offset(pud, 0); #endif @@ -134,11 +129,12 @@ static inline void resume_init_first_level_page_table(pgd_t *pg_dir) { #ifdef CONFIG_X86_PAE int i; + pud_t *pud = pud_offset(p4d_offset(pg_dir, 0), 0); /* Init entries of the first-level page table to the zero page */ for (i = 0; i < PTRS_PER_PGD; i++) - set_pgd(pg_dir + i, - __pgd(__pa(empty_zero_page) | _PAGE_PRESENT)); + set_pud(pud + i, + __pud(__pa(empty_zero_page) | _PAGE_PRESENT)); #endif } -- LEVI:{C3F47F37-75D8-414A-A8BA-3980EC8A46D7}
