Commit 50f9481e authored by David Hildenbrand's avatar David Hildenbrand Committed by Linus Torvalds

mm/memory_hotplug: remove CONFIG_MEMORY_HOTPLUG_SPARSE

CONFIG_MEMORY_HOTPLUG depends on CONFIG_SPARSEMEM, so there is no need for
CONFIG_MEMORY_HOTPLUG_SPARSE anymore; adjust all instances to use
CONFIG_MEMORY_HOTPLUG and remove CONFIG_MEMORY_HOTPLUG_SPARSE.

Link: https://lkml.kernel.org/r/20210929143600.49379-3-david@redhat.comSigned-off-by: default avatarDavid Hildenbrand <david@redhat.com>
Acked-by: Shuah Khan <skhan@linuxfoundation.org>	[kselftest]
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: default avatarOscar Salvador <osalvador@suse.de>
Cc: Alex Shi <alexs@kernel.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 71b6f2dd
...@@ -32,7 +32,7 @@ struct machdep_calls { ...@@ -32,7 +32,7 @@ struct machdep_calls {
void (*iommu_save)(void); void (*iommu_save)(void);
void (*iommu_restore)(void); void (*iommu_restore)(void);
#endif #endif
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE #ifdef CONFIG_MEMORY_HOTPLUG
unsigned long (*memory_block_size)(void); unsigned long (*memory_block_size)(void);
#endif #endif
#endif /* CONFIG_PPC64 */ #endif /* CONFIG_PPC64 */
......
...@@ -912,7 +912,7 @@ void __init setup_per_cpu_areas(void) ...@@ -912,7 +912,7 @@ void __init setup_per_cpu_areas(void)
} }
#endif #endif
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE #ifdef CONFIG_MEMORY_HOTPLUG
unsigned long memory_block_size_bytes(void) unsigned long memory_block_size_bytes(void)
{ {
if (ppc_md.memory_block_size) if (ppc_md.memory_block_size)
......
...@@ -440,7 +440,7 @@ static void pnv_kexec_cpu_down(int crash_shutdown, int secondary) ...@@ -440,7 +440,7 @@ static void pnv_kexec_cpu_down(int crash_shutdown, int secondary)
} }
#endif /* CONFIG_KEXEC_CORE */ #endif /* CONFIG_KEXEC_CORE */
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE #ifdef CONFIG_MEMORY_HOTPLUG
static unsigned long pnv_memory_block_size(void) static unsigned long pnv_memory_block_size(void)
{ {
/* /*
...@@ -553,7 +553,7 @@ define_machine(powernv) { ...@@ -553,7 +553,7 @@ define_machine(powernv) {
#ifdef CONFIG_KEXEC_CORE #ifdef CONFIG_KEXEC_CORE
.kexec_cpu_down = pnv_kexec_cpu_down, .kexec_cpu_down = pnv_kexec_cpu_down,
#endif #endif
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE #ifdef CONFIG_MEMORY_HOTPLUG
.memory_block_size = pnv_memory_block_size, .memory_block_size = pnv_memory_block_size,
#endif #endif
}; };
...@@ -1089,7 +1089,7 @@ define_machine(pseries) { ...@@ -1089,7 +1089,7 @@ define_machine(pseries) {
.machine_kexec = pSeries_machine_kexec, .machine_kexec = pSeries_machine_kexec,
.kexec_cpu_down = pseries_kexec_cpu_down, .kexec_cpu_down = pseries_kexec_cpu_down,
#endif #endif
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE #ifdef CONFIG_MEMORY_HOTPLUG
.memory_block_size = pseries_memory_block_size, .memory_block_size = pseries_memory_block_size,
#endif #endif
}; };
...@@ -13,7 +13,7 @@ obj-y += power/ ...@@ -13,7 +13,7 @@ obj-y += power/
obj-$(CONFIG_ISA_BUS_API) += isa.o obj-$(CONFIG_ISA_BUS_API) += isa.o
obj-y += firmware_loader/ obj-y += firmware_loader/
obj-$(CONFIG_NUMA) += node.o obj-$(CONFIG_NUMA) += node.o
obj-$(CONFIG_MEMORY_HOTPLUG_SPARSE) += memory.o obj-$(CONFIG_MEMORY_HOTPLUG) += memory.o
ifeq ($(CONFIG_SYSFS),y) ifeq ($(CONFIG_SYSFS),y)
obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_MODULES) += module.o
endif endif
......
...@@ -629,7 +629,7 @@ static void node_device_release(struct device *dev) ...@@ -629,7 +629,7 @@ static void node_device_release(struct device *dev)
{ {
struct node *node = to_node(dev); struct node *node = to_node(dev);
#if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_HUGETLBFS) #if defined(CONFIG_MEMORY_HOTPLUG) && defined(CONFIG_HUGETLBFS)
/* /*
* We schedule the work only when a memory section is * We schedule the work only when a memory section is
* onlined/offlined on this node. When we come here, * onlined/offlined on this node. When we come here,
...@@ -782,7 +782,7 @@ int unregister_cpu_under_node(unsigned int cpu, unsigned int nid) ...@@ -782,7 +782,7 @@ int unregister_cpu_under_node(unsigned int cpu, unsigned int nid)
return 0; return 0;
} }
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE #ifdef CONFIG_MEMORY_HOTPLUG
static int __ref get_nid_for_pfn(unsigned long pfn) static int __ref get_nid_for_pfn(unsigned long pfn)
{ {
#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
...@@ -958,10 +958,9 @@ static int node_memory_callback(struct notifier_block *self, ...@@ -958,10 +958,9 @@ static int node_memory_callback(struct notifier_block *self,
return NOTIFY_OK; return NOTIFY_OK;
} }
#endif /* CONFIG_HUGETLBFS */ #endif /* CONFIG_HUGETLBFS */
#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */ #endif /* CONFIG_MEMORY_HOTPLUG */
#if !defined(CONFIG_MEMORY_HOTPLUG_SPARSE) || \ #if !defined(CONFIG_MEMORY_HOTPLUG) || !defined(CONFIG_HUGETLBFS)
!defined(CONFIG_HUGETLBFS)
static inline int node_memory_callback(struct notifier_block *self, static inline int node_memory_callback(struct notifier_block *self,
unsigned long action, void *arg) unsigned long action, void *arg)
{ {
......
...@@ -98,7 +98,7 @@ config VIRTIO_MEM ...@@ -98,7 +98,7 @@ config VIRTIO_MEM
default m default m
depends on X86_64 depends on X86_64
depends on VIRTIO depends on VIRTIO
depends on MEMORY_HOTPLUG_SPARSE depends on MEMORY_HOTPLUG
depends on MEMORY_HOTREMOVE depends on MEMORY_HOTREMOVE
depends on CONTIG_ALLOC depends on CONTIG_ALLOC
help help
......
...@@ -110,7 +110,7 @@ struct mem_section; ...@@ -110,7 +110,7 @@ struct mem_section;
#define SLAB_CALLBACK_PRI 1 #define SLAB_CALLBACK_PRI 1
#define IPC_CALLBACK_PRI 10 #define IPC_CALLBACK_PRI 10
#ifndef CONFIG_MEMORY_HOTPLUG_SPARSE #ifndef CONFIG_MEMORY_HOTPLUG
static inline void memory_dev_init(void) static inline void memory_dev_init(void)
{ {
return; return;
...@@ -126,7 +126,14 @@ static inline int memory_notify(unsigned long val, void *v) ...@@ -126,7 +126,14 @@ static inline int memory_notify(unsigned long val, void *v)
{ {
return 0; return 0;
} }
#else static inline int hotplug_memory_notifier(notifier_fn_t fn, int pri)
{
return 0;
}
/* These aren't inline functions due to a GCC bug. */
#define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
#define unregister_hotmemory_notifier(nb) ({ (void)(nb); })
#else /* CONFIG_MEMORY_HOTPLUG */
extern int register_memory_notifier(struct notifier_block *nb); extern int register_memory_notifier(struct notifier_block *nb);
extern void unregister_memory_notifier(struct notifier_block *nb); extern void unregister_memory_notifier(struct notifier_block *nb);
int create_memory_block_devices(unsigned long start, unsigned long size, int create_memory_block_devices(unsigned long start, unsigned long size,
...@@ -148,9 +155,6 @@ struct memory_group *memory_group_find_by_id(int mgid); ...@@ -148,9 +155,6 @@ struct memory_group *memory_group_find_by_id(int mgid);
typedef int (*walk_memory_groups_func_t)(struct memory_group *, void *); typedef int (*walk_memory_groups_func_t)(struct memory_group *, void *);
int walk_dynamic_memory_groups(int nid, walk_memory_groups_func_t func, int walk_dynamic_memory_groups(int nid, walk_memory_groups_func_t func,
struct memory_group *excluded, void *arg); struct memory_group *excluded, void *arg);
#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */
#ifdef CONFIG_MEMORY_HOTPLUG
#define hotplug_memory_notifier(fn, pri) ({ \ #define hotplug_memory_notifier(fn, pri) ({ \
static __meminitdata struct notifier_block fn##_mem_nb =\ static __meminitdata struct notifier_block fn##_mem_nb =\
{ .notifier_call = fn, .priority = pri };\ { .notifier_call = fn, .priority = pri };\
...@@ -158,15 +162,7 @@ int walk_dynamic_memory_groups(int nid, walk_memory_groups_func_t func, ...@@ -158,15 +162,7 @@ int walk_dynamic_memory_groups(int nid, walk_memory_groups_func_t func,
}) })
#define register_hotmemory_notifier(nb) register_memory_notifier(nb) #define register_hotmemory_notifier(nb) register_memory_notifier(nb)
#define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb) #define unregister_hotmemory_notifier(nb) unregister_memory_notifier(nb)
#else #endif /* CONFIG_MEMORY_HOTPLUG */
static inline int hotplug_memory_notifier(notifier_fn_t fn, int pri)
{
return 0;
}
/* These aren't inline functions due to a GCC bug. */
#define register_hotmemory_notifier(nb) ({ (void)(nb); 0; })
#define unregister_hotmemory_notifier(nb) ({ (void)(nb); })
#endif
/* /*
* Kernel text modification mutex, used for code patching. Users of this lock * Kernel text modification mutex, used for code patching. Users of this lock
......
...@@ -85,7 +85,7 @@ struct node { ...@@ -85,7 +85,7 @@ struct node {
struct device dev; struct device dev;
struct list_head access_list; struct list_head access_list;
#if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_HUGETLBFS) #if defined(CONFIG_MEMORY_HOTPLUG) && defined(CONFIG_HUGETLBFS)
struct work_struct node_work; struct work_struct node_work;
#endif #endif
#ifdef CONFIG_HMEM_REPORTING #ifdef CONFIG_HMEM_REPORTING
...@@ -98,7 +98,7 @@ struct memory_block; ...@@ -98,7 +98,7 @@ struct memory_block;
extern struct node *node_devices[]; extern struct node *node_devices[];
typedef void (*node_registration_func_t)(struct node *); typedef void (*node_registration_func_t)(struct node *);
#if defined(CONFIG_MEMORY_HOTPLUG_SPARSE) && defined(CONFIG_NUMA) #if defined(CONFIG_MEMORY_HOTPLUG) && defined(CONFIG_NUMA)
void link_mem_sections(int nid, unsigned long start_pfn, void link_mem_sections(int nid, unsigned long start_pfn,
unsigned long end_pfn, unsigned long end_pfn,
enum meminit_context context); enum meminit_context context);
......
...@@ -877,7 +877,7 @@ config DEBUG_MEMORY_INIT ...@@ -877,7 +877,7 @@ config DEBUG_MEMORY_INIT
config MEMORY_NOTIFIER_ERROR_INJECT config MEMORY_NOTIFIER_ERROR_INJECT
tristate "Memory hotplug notifier error injection module" tristate "Memory hotplug notifier error injection module"
depends on MEMORY_HOTPLUG_SPARSE && NOTIFIER_ERROR_INJECTION depends on MEMORY_HOTPLUG && NOTIFIER_ERROR_INJECTION
help help
This option provides the ability to inject artificial errors to This option provides the ability to inject artificial errors to
memory hotplug notifier chain callbacks. It is controlled through memory hotplug notifier chain callbacks. It is controlled through
......
...@@ -128,10 +128,6 @@ config MEMORY_HOTPLUG ...@@ -128,10 +128,6 @@ config MEMORY_HOTPLUG
depends on 64BIT || BROKEN depends on 64BIT || BROKEN
select NUMA_KEEP_MEMINFO if NUMA select NUMA_KEEP_MEMINFO if NUMA
config MEMORY_HOTPLUG_SPARSE
def_bool y
depends on SPARSEMEM && MEMORY_HOTPLUG
config MEMORY_HOTPLUG_DEFAULT_ONLINE config MEMORY_HOTPLUG_DEFAULT_ONLINE
bool "Online the newly added memory blocks by default" bool "Online the newly added memory blocks by default"
depends on MEMORY_HOTPLUG depends on MEMORY_HOTPLUG
......
...@@ -220,7 +220,6 @@ static void release_memory_resource(struct resource *res) ...@@ -220,7 +220,6 @@ static void release_memory_resource(struct resource *res)
kfree(res); kfree(res);
} }
#ifdef CONFIG_MEMORY_HOTPLUG_SPARSE
static int check_pfn_span(unsigned long pfn, unsigned long nr_pages, static int check_pfn_span(unsigned long pfn, unsigned long nr_pages,
const char *reason) const char *reason)
{ {
...@@ -1163,7 +1162,6 @@ int __ref online_pages(unsigned long pfn, unsigned long nr_pages, ...@@ -1163,7 +1162,6 @@ int __ref online_pages(unsigned long pfn, unsigned long nr_pages,
mem_hotplug_done(); mem_hotplug_done();
return ret; return ret;
} }
#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */
static void reset_node_present_pages(pg_data_t *pgdat) static void reset_node_present_pages(pg_data_t *pgdat)
{ {
......
CONFIG_MEMORY_HOTPLUG=y CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTPLUG_SPARSE=y
CONFIG_NOTIFIER_ERROR_INJECTION=y CONFIG_NOTIFIER_ERROR_INJECTION=y
CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m
CONFIG_MEMORY_HOTREMOVE=y CONFIG_MEMORY_HOTREMOVE=y
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