Commit 26b52335 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc: Drop page_is_ram() and walk_system_ram_range()

Since commit c40dd2f7 ("powerpc: Add System RAM to /proc/iomem")
it is possible to use the generic walk_system_ram_range() and
the generic page_is_ram().

To enable the use of walk_system_ram_range() by the IBM EHEA ethernet
driver, we still need an export of the generic function.

As powerpc was the only user of CONFIG_ARCH_HAS_WALK_MEMORY, the
ifdef around the generic walk_system_ram_range() has become useless
and can be dropped.

Fixes: c40dd2f7 ("powerpc: Add System RAM to /proc/iomem")
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
[mpe: Keep the EXPORT_SYMBOL_GPL in powerpc code]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 8e0f9735
...@@ -478,9 +478,6 @@ config ARCH_CPU_PROBE_RELEASE ...@@ -478,9 +478,6 @@ config ARCH_CPU_PROBE_RELEASE
config ARCH_ENABLE_MEMORY_HOTPLUG config ARCH_ENABLE_MEMORY_HOTPLUG
def_bool y def_bool y
config ARCH_HAS_WALK_MEMORY
def_bool y
config ARCH_ENABLE_MEMORY_HOTREMOVE config ARCH_ENABLE_MEMORY_HOTREMOVE
def_bool y def_bool y
......
...@@ -326,7 +326,6 @@ struct page; ...@@ -326,7 +326,6 @@ struct page;
extern void clear_user_page(void *page, unsigned long vaddr, struct page *pg); extern void clear_user_page(void *page, unsigned long vaddr, struct page *pg);
extern void copy_user_page(void *to, void *from, unsigned long vaddr, extern void copy_user_page(void *to, void *from, unsigned long vaddr,
struct page *p); struct page *p);
extern int page_is_ram(unsigned long pfn);
extern int devmem_is_allowed(unsigned long pfn); extern int devmem_is_allowed(unsigned long pfn);
#ifdef CONFIG_PPC_SMLPAR #ifdef CONFIG_PPC_SMLPAR
......
...@@ -80,11 +80,6 @@ static inline pte_t *virt_to_kpte(unsigned long vaddr) ...@@ -80,11 +80,6 @@ static inline pte_t *virt_to_kpte(unsigned long vaddr)
#define TOP_ZONE ZONE_NORMAL #define TOP_ZONE ZONE_NORMAL
#endif #endif
int page_is_ram(unsigned long pfn)
{
return memblock_is_memory(__pfn_to_phys(pfn));
}
pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
unsigned long size, pgprot_t vma_prot) unsigned long size, pgprot_t vma_prot)
{ {
...@@ -176,34 +171,6 @@ int __meminit arch_remove_memory(int nid, u64 start, u64 size, ...@@ -176,34 +171,6 @@ int __meminit arch_remove_memory(int nid, u64 start, u64 size,
#endif #endif
#endif /* CONFIG_MEMORY_HOTPLUG */ #endif /* CONFIG_MEMORY_HOTPLUG */
/*
* walk_memory_resource() needs to make sure there is no holes in a given
* memory range. PPC64 does not maintain the memory layout in /proc/iomem.
* Instead it maintains it in memblock.memory structures. Walk through the
* memory regions, find holes and callback for contiguous regions.
*/
int
walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,
void *arg, int (*func)(unsigned long, unsigned long, void *))
{
struct memblock_region *reg;
unsigned long end_pfn = start_pfn + nr_pages;
unsigned long tstart, tend;
int ret = -1;
for_each_memblock(memory, reg) {
tstart = max(start_pfn, memblock_region_memory_base_pfn(reg));
tend = min(end_pfn, memblock_region_memory_end_pfn(reg));
if (tstart >= tend)
continue;
ret = (*func)(tstart, tend - tstart, arg);
if (ret)
break;
}
return ret;
}
EXPORT_SYMBOL_GPL(walk_system_ram_range);
#ifndef CONFIG_NEED_MULTIPLE_NODES #ifndef CONFIG_NEED_MULTIPLE_NODES
void __init mem_topology_setup(void) void __init mem_topology_setup(void)
{ {
...@@ -585,3 +552,9 @@ int devmem_is_allowed(unsigned long pfn) ...@@ -585,3 +552,9 @@ int devmem_is_allowed(unsigned long pfn)
return 0; return 0;
} }
#endif /* CONFIG_STRICT_DEVMEM */ #endif /* CONFIG_STRICT_DEVMEM */
/*
* This is defined in kernel/resource.c but only powerpc needs to export it, for
* the EHEA driver. Drop this when drivers/net/ethernet/ibm/ehea is removed.
*/
EXPORT_SYMBOL_GPL(walk_system_ram_range);
...@@ -448,8 +448,6 @@ int walk_mem_res(u64 start, u64 end, void *arg, ...@@ -448,8 +448,6 @@ int walk_mem_res(u64 start, u64 end, void *arg,
arg, func); arg, func);
} }
#if !defined(CONFIG_ARCH_HAS_WALK_MEMORY)
/* /*
* This function calls the @func callback against all memory ranges of type * This function calls the @func callback against all memory ranges of type
* System RAM which are marked as IORESOURCE_SYSTEM_RAM and IORESOUCE_BUSY. * System RAM which are marked as IORESOURCE_SYSTEM_RAM and IORESOUCE_BUSY.
...@@ -481,8 +479,6 @@ int walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages, ...@@ -481,8 +479,6 @@ int walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,
return ret; return ret;
} }
#endif
static int __is_ram(unsigned long pfn, unsigned long nr_pages, void *arg) static int __is_ram(unsigned long pfn, unsigned long nr_pages, void *arg)
{ {
return 1; return 1;
......
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