2022-08-27 11:16:55

by Kefeng Wang

[permalink] [raw]
Subject: [PATCH] mm: kill is_memblock_offlined()

Directly check state of struct memory_block, no need a single function.

Signed-off-by: Kefeng Wang <[email protected]>
---
drivers/base/memory.c | 6 ------
include/linux/memory_hotplug.h | 2 --
mm/memory_hotplug.c | 3 +--
3 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/drivers/base/memory.c b/drivers/base/memory.c
index bc60c9cd3230..9aa0da991cfb 100644
--- a/drivers/base/memory.c
+++ b/drivers/base/memory.c
@@ -869,12 +869,6 @@ void remove_memory_block_devices(unsigned long start, unsigned long size)
}
}

-/* return true if the memory block is offlined, otherwise, return false */
-bool is_memblock_offlined(struct memory_block *mem)
-{
- return mem->state == MEM_OFFLINE;
-}
-
static struct attribute *memory_root_attrs[] = {
#ifdef CONFIG_ARCH_MEMORY_PROBE
&dev_attr_probe.attr,
diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
index 409196ef8038..de87545eabe9 100644
--- a/include/linux/memory_hotplug.h
+++ b/include/linux/memory_hotplug.h
@@ -11,7 +11,6 @@ struct page;
struct zone;
struct pglist_data;
struct mem_section;
-struct memory_block;
struct memory_group;
struct resource;
struct vmem_altmap;
@@ -352,7 +351,6 @@ extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn,
extern void remove_pfn_range_from_zone(struct zone *zone,
unsigned long start_pfn,
unsigned long nr_pages);
-extern bool is_memblock_offlined(struct memory_block *mem);
extern int sparse_add_section(int nid, unsigned long pfn,
unsigned long nr_pages, struct vmem_altmap *altmap,
struct dev_pagemap *pgmap);
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 2fd45ccbce45..9ae1f98548b1 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1969,11 +1969,10 @@ int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages,

static int check_memblock_offlined_cb(struct memory_block *mem, void *arg)
{
- int ret = !is_memblock_offlined(mem);
int *nid = arg;

*nid = mem->nid;
- if (unlikely(ret)) {
+ if (unlikely(mem->state != MEM_OFFLINE)) {
phys_addr_t beginpa, endpa;

beginpa = PFN_PHYS(section_nr_to_pfn(mem->start_section_nr));
--
2.35.3


2022-08-30 11:49:49

by David Hildenbrand

[permalink] [raw]
Subject: Re: [PATCH] mm: kill is_memblock_offlined()

On 27.08.22 13:20, Kefeng Wang wrote:
> Directly check state of struct memory_block, no need a single function.
>
> Signed-off-by: Kefeng Wang <[email protected]>
> ---
> drivers/base/memory.c | 6 ------
> include/linux/memory_hotplug.h | 2 --
> mm/memory_hotplug.c | 3 +--
> 3 files changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/drivers/base/memory.c b/drivers/base/memory.c
> index bc60c9cd3230..9aa0da991cfb 100644
> --- a/drivers/base/memory.c
> +++ b/drivers/base/memory.c
> @@ -869,12 +869,6 @@ void remove_memory_block_devices(unsigned long start, unsigned long size)
> }
> }
>
> -/* return true if the memory block is offlined, otherwise, return false */
> -bool is_memblock_offlined(struct memory_block *mem)
> -{
> - return mem->state == MEM_OFFLINE;
> -}
> -
> static struct attribute *memory_root_attrs[] = {
> #ifdef CONFIG_ARCH_MEMORY_PROBE
> &dev_attr_probe.attr,
> diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
> index 409196ef8038..de87545eabe9 100644
> --- a/include/linux/memory_hotplug.h
> +++ b/include/linux/memory_hotplug.h
> @@ -11,7 +11,6 @@ struct page;
> struct zone;
> struct pglist_data;
> struct mem_section;
> -struct memory_block;
> struct memory_group;
> struct resource;
> struct vmem_altmap;
> @@ -352,7 +351,6 @@ extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn,
> extern void remove_pfn_range_from_zone(struct zone *zone,
> unsigned long start_pfn,
> unsigned long nr_pages);
> -extern bool is_memblock_offlined(struct memory_block *mem);
> extern int sparse_add_section(int nid, unsigned long pfn,
> unsigned long nr_pages, struct vmem_altmap *altmap,
> struct dev_pagemap *pgmap);
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 2fd45ccbce45..9ae1f98548b1 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1969,11 +1969,10 @@ int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages,
>
> static int check_memblock_offlined_cb(struct memory_block *mem, void *arg)
> {
> - int ret = !is_memblock_offlined(mem);
> int *nid = arg;
>
> *nid = mem->nid;
> - if (unlikely(ret)) {
> + if (unlikely(mem->state != MEM_OFFLINE)) {
> phys_addr_t beginpa, endpa;
>
> beginpa = PFN_PHYS(section_nr_to_pfn(mem->start_section_nr));

Reviewed-by: David Hildenbrand <[email protected]>

--
Thanks,

David / dhildenb

2022-08-31 05:22:55

by Oscar Salvador

[permalink] [raw]
Subject: Re: [PATCH] mm: kill is_memblock_offlined()

On Sat, Aug 27, 2022 at 07:20:43PM +0800, Kefeng Wang wrote:
> Directly check state of struct memory_block, no need a single function.
>
> Signed-off-by: Kefeng Wang <[email protected]>

Reviewed-by: Oscar Salvador <[email protected]>


--
Oscar Salvador
SUSE Labs

2022-09-01 10:17:40

by Anshuman Khandual

[permalink] [raw]
Subject: Re: [PATCH] mm: kill is_memblock_offlined()



On 8/27/22 16:50, Kefeng Wang wrote:
> Directly check state of struct memory_block, no need a single function.
>
> Signed-off-by: Kefeng Wang <[email protected]>
> ---

Reviewed-by: Anshuman Khandual <[email protected]>

> drivers/base/memory.c | 6 ------
> include/linux/memory_hotplug.h | 2 --
> mm/memory_hotplug.c | 3 +--
> 3 files changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/drivers/base/memory.c b/drivers/base/memory.c
> index bc60c9cd3230..9aa0da991cfb 100644
> --- a/drivers/base/memory.c
> +++ b/drivers/base/memory.c
> @@ -869,12 +869,6 @@ void remove_memory_block_devices(unsigned long start, unsigned long size)
> }
> }
>
> -/* return true if the memory block is offlined, otherwise, return false */
> -bool is_memblock_offlined(struct memory_block *mem)
> -{
> - return mem->state == MEM_OFFLINE;
> -}
> -
> static struct attribute *memory_root_attrs[] = {
> #ifdef CONFIG_ARCH_MEMORY_PROBE
> &dev_attr_probe.attr,
> diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
> index 409196ef8038..de87545eabe9 100644
> --- a/include/linux/memory_hotplug.h
> +++ b/include/linux/memory_hotplug.h
> @@ -11,7 +11,6 @@ struct page;
> struct zone;
> struct pglist_data;
> struct mem_section;
> -struct memory_block;
> struct memory_group;
> struct resource;
> struct vmem_altmap;
> @@ -352,7 +351,6 @@ extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn,
> extern void remove_pfn_range_from_zone(struct zone *zone,
> unsigned long start_pfn,
> unsigned long nr_pages);
> -extern bool is_memblock_offlined(struct memory_block *mem);
> extern int sparse_add_section(int nid, unsigned long pfn,
> unsigned long nr_pages, struct vmem_altmap *altmap,
> struct dev_pagemap *pgmap);
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index 2fd45ccbce45..9ae1f98548b1 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -1969,11 +1969,10 @@ int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages,
>
> static int check_memblock_offlined_cb(struct memory_block *mem, void *arg)
> {
> - int ret = !is_memblock_offlined(mem);
> int *nid = arg;
>
> *nid = mem->nid;
> - if (unlikely(ret)) {
> + if (unlikely(mem->state != MEM_OFFLINE)) {
> phys_addr_t beginpa, endpa;
>
> beginpa = PFN_PHYS(section_nr_to_pfn(mem->start_section_nr));