Message ID | 1572920412-15661-1-git-send-email-zong.li@sifive.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] riscv: Use PMD_SIZE to repalce PTE_PARENT_SIZE | expand |
On Tue, Nov 5, 2019 at 7:50 AM Zong Li <zong.li@sifive.com> wrote: > > The PMD_SIZE is equal to PGDIR_SIZE when __PAGETABLE_PMD_FOLDED is > defined. > > Signed-off-by: Zong Li <zong.li@sifive.com> > --- > arch/riscv/mm/init.c | 10 ++++------ > 1 file changed, 4 insertions(+), 6 deletions(-) > > diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c > index 573463d..642b330 100644 > --- a/arch/riscv/mm/init.c > +++ b/arch/riscv/mm/init.c > @@ -273,7 +273,6 @@ static void __init create_pmd_mapping(pmd_t *pmdp, > #define get_pgd_next_virt(__pa) get_pmd_virt(__pa) > #define create_pgd_next_mapping(__nextp, __va, __pa, __sz, __prot) \ > create_pmd_mapping(__nextp, __va, __pa, __sz, __prot) > -#define PTE_PARENT_SIZE PMD_SIZE > #define fixmap_pgd_next fixmap_pmd > #else > #define pgd_next_t pte_t > @@ -281,7 +280,6 @@ static void __init create_pmd_mapping(pmd_t *pmdp, > #define get_pgd_next_virt(__pa) get_pte_virt(__pa) > #define create_pgd_next_mapping(__nextp, __va, __pa, __sz, __prot) \ > create_pte_mapping(__nextp, __va, __pa, __sz, __prot) > -#define PTE_PARENT_SIZE PGDIR_SIZE > #define fixmap_pgd_next fixmap_pte > #endif > > @@ -316,10 +314,10 @@ static uintptr_t __init best_map_size(phys_addr_t base, phys_addr_t size) > { > uintptr_t map_size = PAGE_SIZE; > > - /* Upgrade to PMD/PGDIR mappings whenever possible */ > - if (!(base & (PTE_PARENT_SIZE - 1)) && > - !(size & (PTE_PARENT_SIZE - 1))) > - map_size = PTE_PARENT_SIZE; > + /* Upgrade to PMD_SIZE mappings whenever possible */ > + if (!(base & (PMD_SIZE - 1)) && > + !(size & (PMD_SIZE - 1))) > + map_size = PMD_SIZE; > > return map_size; > } > -- > 2.7.4 > LGTM. Reviewed-by: Anup Patel <anup@brainfault.org> Regards, Anup
On Mon, 4 Nov 2019, Zong Li wrote: > The PMD_SIZE is equal to PGDIR_SIZE when __PAGETABLE_PMD_FOLDED is > defined. > > Signed-off-by: Zong Li <zong.li@sifive.com> Thanks, queued for v5.5-rc1 with Anup's Reviewed-by:. - Paul
On Mon, Nov 04, 2019 at 06:20:12PM -0800, Zong Li wrote: > uintptr_t map_size = PAGE_SIZE; > > - /* Upgrade to PMD/PGDIR mappings whenever possible */ > - if (!(base & (PTE_PARENT_SIZE - 1)) && > - !(size & (PTE_PARENT_SIZE - 1))) > - map_size = PTE_PARENT_SIZE; > + /* Upgrade to PMD_SIZE mappings whenever possible */ > + if (!(base & (PMD_SIZE - 1)) && > + !(size & (PMD_SIZE - 1))) > + map_size = PMD_SIZE; The check easily fits onto a single line now. Also the map_size variable is rather pointless. Why not: if ((base & (PMD_SIZE - 1) || (size & (PMD_SIZE - 1))) return PAGE_SIZE; return PMD_SIZE;
On Fri, Nov 8, 2019 at 3:25 PM Christoph Hellwig <hch@infradead.org> wrote: > > On Mon, Nov 04, 2019 at 06:20:12PM -0800, Zong Li wrote: > > uintptr_t map_size = PAGE_SIZE; > > > > - /* Upgrade to PMD/PGDIR mappings whenever possible */ > > - if (!(base & (PTE_PARENT_SIZE - 1)) && > > - !(size & (PTE_PARENT_SIZE - 1))) > > - map_size = PTE_PARENT_SIZE; > > + /* Upgrade to PMD_SIZE mappings whenever possible */ > > + if (!(base & (PMD_SIZE - 1)) && > > + !(size & (PMD_SIZE - 1))) > > + map_size = PMD_SIZE; > > The check easily fits onto a single line now. Also the map_size > variable is rather pointless. Why not: > > if ((base & (PMD_SIZE - 1) || (size & (PMD_SIZE - 1))) > return PAGE_SIZE; > return PMD_SIZE; Yes, Use positive representation is more clear to me. Change it in next version.
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 573463d..642b330 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -273,7 +273,6 @@ static void __init create_pmd_mapping(pmd_t *pmdp, #define get_pgd_next_virt(__pa) get_pmd_virt(__pa) #define create_pgd_next_mapping(__nextp, __va, __pa, __sz, __prot) \ create_pmd_mapping(__nextp, __va, __pa, __sz, __prot) -#define PTE_PARENT_SIZE PMD_SIZE #define fixmap_pgd_next fixmap_pmd #else #define pgd_next_t pte_t @@ -281,7 +280,6 @@ static void __init create_pmd_mapping(pmd_t *pmdp, #define get_pgd_next_virt(__pa) get_pte_virt(__pa) #define create_pgd_next_mapping(__nextp, __va, __pa, __sz, __prot) \ create_pte_mapping(__nextp, __va, __pa, __sz, __prot) -#define PTE_PARENT_SIZE PGDIR_SIZE #define fixmap_pgd_next fixmap_pte #endif @@ -316,10 +314,10 @@ static uintptr_t __init best_map_size(phys_addr_t base, phys_addr_t size) { uintptr_t map_size = PAGE_SIZE; - /* Upgrade to PMD/PGDIR mappings whenever possible */ - if (!(base & (PTE_PARENT_SIZE - 1)) && - !(size & (PTE_PARENT_SIZE - 1))) - map_size = PTE_PARENT_SIZE; + /* Upgrade to PMD_SIZE mappings whenever possible */ + if (!(base & (PMD_SIZE - 1)) && + !(size & (PMD_SIZE - 1))) + map_size = PMD_SIZE; return map_size; }
The PMD_SIZE is equal to PGDIR_SIZE when __PAGETABLE_PMD_FOLDED is defined. Signed-off-by: Zong Li <zong.li@sifive.com> --- arch/riscv/mm/init.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)