[PATCH 06/10] arm64: handle 52-bit physical addresses in page table entries
Catalin Marinas
catalin.marinas at arm.com
Fri Dec 22 07:04:52 PST 2017
On Mon, Dec 18, 2017 at 04:36:46PM +0000, Suzuki K. Poulose wrote:
> On 13/12/17 17:07, Kristina Martsenko wrote:
> > @@ -427,7 +451,7 @@ static inline phys_addr_t pmd_page_paddr(pmd_t pmd)
> > #define pte_set_fixmap_offset(pmd, addr) pte_set_fixmap(pte_offset_phys(pmd, addr))
> > #define pte_clear_fixmap() clear_fixmap(FIX_PTE)
> > -#define pmd_page(pmd) pfn_to_page(__phys_to_pfn(pmd_val(pmd) & PHYS_MASK))
> > +#define pmd_page(pmd) pfn_to_page(__phys_to_pfn(__pmd_to_phys(pmd)))
>
> You could simplify the above to :
>
> #define pmd_page(pmd) pfn_to_page(pmd_pfn(pmd))
>
> ? similarly for pud_page.
Just for the record as we already discussed: pmd_pfn(pmd) gives a
different result from __phys_to_pfn(__pmd_to_phys(pmd)). Weird but
pmd_pfn() is used with huge page stuff and it ensures that the pfn
corresponds to a PMD_SIZE-aligned page while pmd_page() is used to
retrieve the page of the pte pointed at by the pmd, so only PAGE_SIZE
aligned.
--
Catalin
More information about the linux-arm-kernel
mailing list