Commit 4bfc848e authored by Mike Rapoport's avatar Mike Rapoport Committed by Linus Torvalds

m68k/mm: enable use of generic memory_model.h for !DISCONTIGMEM

The pg_data_map and pg_data_table arrays as well as page_to_pfn() and
pfn_to_page() are required only for DISCONTIGMEM. Other memory models can
use the generic definitions in asm-generic/memory_model.h.

Link: https://lkml.kernel.org/r/20201101170454.9567-13-rppt@kernel.orgSigned-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Greg Ungerer <gerg@linux-m68k.org>
Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Meelis Roos <mroos@linux.ee>
Cc: Michael Schmitz <schmitzmic@gmail.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6b2ad8d7
...@@ -374,7 +374,6 @@ config SINGLE_MEMORY_CHUNK ...@@ -374,7 +374,6 @@ config SINGLE_MEMORY_CHUNK
bool "Use one physical chunk of memory only" if ADVANCED && !SUN3 bool "Use one physical chunk of memory only" if ADVANCED && !SUN3
depends on MMU depends on MMU
default y if SUN3 || MMU_COLDFIRE default y if SUN3 || MMU_COLDFIRE
select NEED_MULTIPLE_NODES
help help
Ignore all but the first contiguous chunk of physical memory for VM Ignore all but the first contiguous chunk of physical memory for VM
purposes. This will save a few bytes kernel size and may speed up purposes. This will save a few bytes kernel size and may speed up
......
...@@ -62,8 +62,10 @@ extern unsigned long _ramend; ...@@ -62,8 +62,10 @@ extern unsigned long _ramend;
#include <asm/page_no.h> #include <asm/page_no.h>
#endif #endif
#ifdef CONFIG_DISCONTIGMEM
#define __phys_to_pfn(paddr) ((unsigned long)((paddr) >> PAGE_SHIFT)) #define __phys_to_pfn(paddr) ((unsigned long)((paddr) >> PAGE_SHIFT))
#define __pfn_to_phys(pfn) PFN_PHYS(pfn) #define __pfn_to_phys(pfn) PFN_PHYS(pfn)
#endif
#include <asm-generic/getorder.h> #include <asm-generic/getorder.h>
......
...@@ -153,6 +153,7 @@ static inline __attribute_const__ int __virt_to_node_shift(void) ...@@ -153,6 +153,7 @@ static inline __attribute_const__ int __virt_to_node_shift(void)
pfn_to_virt(page_to_pfn(page)); \ pfn_to_virt(page_to_pfn(page)); \
}) })
#ifdef CONFIG_DISCONTIGMEM
#define pfn_to_page(pfn) ({ \ #define pfn_to_page(pfn) ({ \
unsigned long __pfn = (pfn); \ unsigned long __pfn = (pfn); \
struct pglist_data *pgdat; \ struct pglist_data *pgdat; \
...@@ -165,6 +166,10 @@ static inline __attribute_const__ int __virt_to_node_shift(void) ...@@ -165,6 +166,10 @@ static inline __attribute_const__ int __virt_to_node_shift(void)
pgdat = &pg_data_map[page_to_nid(__p)]; \ pgdat = &pg_data_map[page_to_nid(__p)]; \
((__p) - pgdat->node_mem_map) + pgdat->node_start_pfn; \ ((__p) - pgdat->node_mem_map) + pgdat->node_start_pfn; \
}) })
#else
#define ARCH_PFN_OFFSET (m68k_memory[0].addr)
#include <asm-generic/memory_model.h>
#endif
#define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory) #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory)
#define pfn_valid(pfn) virt_addr_valid(pfn_to_virt(pfn)) #define pfn_valid(pfn) virt_addr_valid(pfn_to_virt(pfn))
......
...@@ -29,12 +29,7 @@ static inline void *phys_to_virt(unsigned long address) ...@@ -29,12 +29,7 @@ static inline void *phys_to_virt(unsigned long address)
} }
/* Permanent address of a page. */ /* Permanent address of a page. */
#if defined(CONFIG_MMU) && !defined(CONFIG_DISCONTIGMEM)
#define page_to_phys(page) \
__pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))
#else
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
#endif
/* /*
* IO bus memory addresses are 1:1 with the physical address, * IO bus memory addresses are 1:1 with the physical address,
......
...@@ -42,12 +42,12 @@ EXPORT_SYMBOL(empty_zero_page); ...@@ -42,12 +42,12 @@ EXPORT_SYMBOL(empty_zero_page);
#ifdef CONFIG_MMU #ifdef CONFIG_MMU
pg_data_t pg_data_map[MAX_NUMNODES];
EXPORT_SYMBOL(pg_data_map);
int m68k_virt_to_node_shift; int m68k_virt_to_node_shift;
#ifdef CONFIG_DISCONTIGMEM #ifdef CONFIG_DISCONTIGMEM
pg_data_t pg_data_map[MAX_NUMNODES];
EXPORT_SYMBOL(pg_data_map);
pg_data_t *pg_data_table[65]; pg_data_t *pg_data_table[65];
EXPORT_SYMBOL(pg_data_table); EXPORT_SYMBOL(pg_data_table);
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment