Message ID | 20150923044118.36490.75919.stgit@dwillia2-desk3.jf.intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 083fc21409ca |
Headers | show |
On Wed, Sep 23, 2015 at 12:41:18AM -0400, Dan Williams wrote: > Switch avr32/include/asm/page.h to use the common defintions for > pfn_to_page(), page_to_pfn(), and ARCH_PFN_OFFSET. This was the last architecture not using asm-generic/memory_model.h, so it might be time to move it to linux/ or even fold it into an existing header.
On Thu, Sep 24, 2015 at 8:10 AM, Christoph Hellwig <hch@infradead.org> wrote: > On Wed, Sep 23, 2015 at 12:41:18AM -0400, Dan Williams wrote: >> Switch avr32/include/asm/page.h to use the common defintions for >> pfn_to_page(), page_to_pfn(), and ARCH_PFN_OFFSET. > > This was the last architecture not using asm-generic/memory_model.h, > so it might be time to move it to linux/ or even fold it into an > existing header. I went to go attempt this, but ia64 is still a holdout, as its DISCONTIGMEM setup can't use the generic memory_model definitions. #ifdef CONFIG_DISCONTIGMEM # define page_to_pfn(page) ((unsigned long) (page - vmem_map)) # define pfn_to_page(pfn) (vmem_map + (pfn)) #else # include <asm-generic/memory_model.h> #endif #else # include <asm-generic/memory_model.h> #endif
On Fri, Sep 25, 2015 at 05:36:36PM -0700, Dan Williams wrote: > I went to go attempt this, but ia64 is still a holdout, as its > DISCONTIGMEM setup can't use the generic memory_model definitions. > > #ifdef CONFIG_DISCONTIGMEM > # define page_to_pfn(page) ((unsigned long) (page - vmem_map)) > # define pfn_to_page(pfn) (vmem_map + (pfn)) > #else > # include <asm-generic/memory_model.h> > #endif > #else > # include <asm-generic/memory_model.h> > #endif Seems like we should simply introduce a CONFIG_VMEM_MAP for ia64 to get this started. Does my memory trick me or did we used to have vmem_map on other architectures as well but managed to get rid of it everywhere but on ia64?
> Seems like we should simply introduce a CONFIG_VMEM_MAP for ia64 > to get this started. Does my memory trick me or did we used to have > vmem_map on other architectures as well but managed to get rid of it > everywhere but on ia64? I think ia64 hung onto this because of the SGI sn1 platforms. They were even more discontiguous than even SPARSEMEM_EXTREME could handle -Tony
diff --git a/arch/avr32/include/asm/page.h b/arch/avr32/include/asm/page.h index f805d1cb11bc..c5d2a3e2c62f 100644 --- a/arch/avr32/include/asm/page.h +++ b/arch/avr32/include/asm/page.h @@ -83,11 +83,9 @@ static inline int get_order(unsigned long size) #ifndef CONFIG_NEED_MULTIPLE_NODES -#define PHYS_PFN_OFFSET (CONFIG_PHYS_OFFSET >> PAGE_SHIFT) +#define ARCH_PFN_OFFSET (CONFIG_PHYS_OFFSET >> PAGE_SHIFT) -#define pfn_to_page(pfn) (mem_map + ((pfn) - PHYS_PFN_OFFSET)) -#define page_to_pfn(page) ((unsigned long)((page) - mem_map) + PHYS_PFN_OFFSET) -#define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr)) +#define pfn_valid(pfn) ((pfn) >= ARCH_PFN_OFFSET && (pfn) < (ARCH_PFN_OFFSET + max_mapnr)) #endif /* CONFIG_NEED_MULTIPLE_NODES */ #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) @@ -101,4 +99,6 @@ static inline int get_order(unsigned long size) */ #define HIGHMEM_START 0x20000000UL +#include <asm-generic/memory_model.h> + #endif /* __ASM_AVR32_PAGE_H */
Switch avr32/include/asm/page.h to use the common defintions for pfn_to_page(), page_to_pfn(), and ARCH_PFN_OFFSET. Signed-off-by: Dan Williams <dan.j.williams@intel.com> --- arch/avr32/include/asm/page.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)