mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
mm: name the anonymous MMOP enum as enum mmop
Give the MMOP enum (MMOP_OFFLINE, MMOP_ONLINE, etc) a proper type name so the compiler can help catch invalid values being assigned to variables of this type. Leave the existing functions returning int alone to allow for value-or-error pattern to remain unchanged without churn. mmop_default_online_type is left as int because it uses the -1 sentinal value to signal it hasn't been initialized yet. Keep the uint8_t buffer in offline_and_remove_memory() as-is for space efficiency, with an explicit cast when we consume the value. Move the enum definition before the CONFIG_MEMORY_HOTPLUG guard so it is unconditionally available for struct memory_block in memory.h. No functional change. Link: https://lore.kernel.org/linux-mm/3424eba7-523b-4351-abd0-3a888a3e5e61@kernel.org/ Link: https://lkml.kernel.org/r/20260211215447.2194189-1-gourry@gourry.net Signed-off-by: Gregory Price <gourry@gourry.net> Suggested-by: Jonathan Cameron <jonathan.cameron@huawei.com> Suggested-by: "David Hildenbrand (arm)" <david@kernel.org> Reviewed-by: Ben Cheatham <benjamin.cheatham@amd.com> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Cc: Danilo Krummrich <dakr@kernel.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Oscar Salvador <osalvador@suse.de> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
4e89004eeb
commit
c5c4834513
|
|
@ -452,7 +452,7 @@ static ssize_t phys_device_show(struct device *dev,
|
|||
static int print_allowed_zone(char *buf, int len, int nid,
|
||||
struct memory_group *group,
|
||||
unsigned long start_pfn, unsigned long nr_pages,
|
||||
int online_type, struct zone *default_zone)
|
||||
enum mmop online_type, struct zone *default_zone)
|
||||
{
|
||||
struct zone *zone;
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/node.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/memory_hotplug.h>
|
||||
|
||||
#define MIN_MEMORY_BLOCK_SIZE (1UL << SECTION_SIZE_BITS)
|
||||
|
||||
|
|
@ -77,7 +78,7 @@ enum memory_block_state {
|
|||
struct memory_block {
|
||||
unsigned long start_section_nr;
|
||||
enum memory_block_state state; /* serialized by the dev->lock */
|
||||
int online_type; /* for passing data to online routine */
|
||||
enum mmop online_type; /* for passing data to online routine */
|
||||
int nid; /* NID for this memory block */
|
||||
/*
|
||||
* The single zone of this memory block if all PFNs of this memory block
|
||||
|
|
|
|||
|
|
@ -16,11 +16,8 @@ struct resource;
|
|||
struct vmem_altmap;
|
||||
struct dev_pagemap;
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
struct page *pfn_to_online_page(unsigned long pfn);
|
||||
|
||||
/* Types for control the zone type of onlined and offlined memory */
|
||||
enum {
|
||||
enum mmop {
|
||||
/* Offline the memory. */
|
||||
MMOP_OFFLINE = 0,
|
||||
/* Online the memory. Zone depends, see default_zone_for_pfn(). */
|
||||
|
|
@ -31,6 +28,9 @@ enum {
|
|||
MMOP_ONLINE_MOVABLE,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
struct page *pfn_to_online_page(unsigned long pfn);
|
||||
|
||||
/* Flags for add_memory() and friends to specify memory hotplug details. */
|
||||
typedef int __bitwise mhp_t;
|
||||
|
||||
|
|
@ -286,8 +286,8 @@ static inline void __remove_memory(u64 start, u64 size) {}
|
|||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
/* Default online_type (MMOP_*) when new memory blocks are added. */
|
||||
extern int mhp_get_default_online_type(void);
|
||||
extern void mhp_set_default_online_type(int online_type);
|
||||
extern enum mmop mhp_get_default_online_type(void);
|
||||
extern void mhp_set_default_online_type(enum mmop online_type);
|
||||
extern void __ref free_area_init_core_hotplug(struct pglist_data *pgdat);
|
||||
extern int __add_memory(int nid, u64 start, u64 size, mhp_t mhp_flags);
|
||||
extern int add_memory(int nid, u64 start, u64 size, mhp_t mhp_flags);
|
||||
|
|
@ -310,8 +310,8 @@ extern void sparse_remove_section(unsigned long pfn, unsigned long nr_pages,
|
|||
struct vmem_altmap *altmap);
|
||||
extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map,
|
||||
unsigned long pnum);
|
||||
extern struct zone *zone_for_pfn_range(int online_type, int nid,
|
||||
struct memory_group *group, unsigned long start_pfn,
|
||||
extern struct zone *zone_for_pfn_range(enum mmop online_type,
|
||||
int nid, struct memory_group *group, unsigned long start_pfn,
|
||||
unsigned long nr_pages);
|
||||
extern int arch_create_linear_mapping(int nid, u64 start, u64 size,
|
||||
struct mhp_params *params);
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ void put_online_mems(void)
|
|||
bool movable_node_enabled = false;
|
||||
|
||||
static int mhp_default_online_type = -1;
|
||||
int mhp_get_default_online_type(void)
|
||||
enum mmop mhp_get_default_online_type(void)
|
||||
{
|
||||
if (mhp_default_online_type >= 0)
|
||||
return mhp_default_online_type;
|
||||
|
|
@ -240,7 +240,7 @@ int mhp_get_default_online_type(void)
|
|||
return mhp_default_online_type;
|
||||
}
|
||||
|
||||
void mhp_set_default_online_type(int online_type)
|
||||
void mhp_set_default_online_type(enum mmop online_type)
|
||||
{
|
||||
mhp_default_online_type = online_type;
|
||||
}
|
||||
|
|
@ -1046,7 +1046,7 @@ static inline struct zone *default_zone_for_pfn(int nid, unsigned long start_pfn
|
|||
return movable_node_enabled ? movable_zone : kernel_zone;
|
||||
}
|
||||
|
||||
struct zone *zone_for_pfn_range(int online_type, int nid,
|
||||
struct zone *zone_for_pfn_range(enum mmop online_type, int nid,
|
||||
struct memory_group *group, unsigned long start_pfn,
|
||||
unsigned long nr_pages)
|
||||
{
|
||||
|
|
@ -2305,7 +2305,7 @@ EXPORT_SYMBOL_GPL(remove_memory);
|
|||
|
||||
static int try_offline_memory_block(struct memory_block *mem, void *arg)
|
||||
{
|
||||
uint8_t online_type = MMOP_ONLINE_KERNEL;
|
||||
enum mmop online_type = MMOP_ONLINE_KERNEL;
|
||||
uint8_t **online_types = arg;
|
||||
struct page *page;
|
||||
int rc;
|
||||
|
|
@ -2338,7 +2338,7 @@ static int try_reonline_memory_block(struct memory_block *mem, void *arg)
|
|||
int rc;
|
||||
|
||||
if (**online_types != MMOP_OFFLINE) {
|
||||
mem->online_type = **online_types;
|
||||
mem->online_type = (enum mmop)**online_types;
|
||||
rc = device_online(&mem->dev);
|
||||
if (rc < 0)
|
||||
pr_warn("%s: Failed to re-online memory: %d",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user