Skip to contentSkip to conversation

mm: remove the redundancy code

PATCH In review Su Hui 5 participants 10 messages Jun 29, 2020 – Jun 30, 2020

Subsystems (2)
lore
Share & tools
lore

Su Hui

author
#0 lore raw

PATCH 1/1 mm: remove the redundancy code

remove the redundancy code, the zone_start_pfn
is assigned from zone->zone_start_pfn

---
 mm/page_alloc.c | 2 --
 1 file changed, 2 deletions(-)
mm/page_alloc.c +0 -2
index 3c4eb750a199..3372a8c9fbc4 100644
@@ -6215,8 +6215,6 @@ void __meminit init_currently_empty_zone(struct zone *zone,
 	if (zone_idx > pgdat->nr_zones)
 		pgdat->nr_zones = zone_idx;
 
-	zone->zone_start_pfn = zone_start_pfn;
-
 	mminit_dprintk(MMINIT_TRACE, "memmap_init",
 			"Initialising map node %d zone %lu pfns %lu -> %lu\n",
 			pgdat->node_id,
Signature · 1 line
2.25.1
#1 lore raw
Quoted 3 lines · Su Hui

remove the redundancy code, the zone_start_pfn
is assigned from zone->zone_start_pfn

I don't think this is redundant, it's used by memory hotplug when onlining new memory.

Quoted 17 lines
---
 mm/page_alloc.c | 2 --
 1 file changed, 2 deletions(-)
mm/page_alloc.c +0 -2
index 3c4eb750a199..3372a8c9fbc4 100644
@@ -6215,8 +6215,6 @@ void __meminit init_currently_empty_zone(struct zone *zone,
 	if (zone_idx > pgdat->nr_zones)
 		pgdat->nr_zones = zone_idx;
 
-	zone->zone_start_pfn = zone_start_pfn;
-
 	mminit_dprintk(MMINIT_TRACE, "memmap_init",
 			"Initialising map node %d zone %lu pfns %lu -> %lu\n",
 			pgdat->node_id,
#2 lore raw
Quoted 8 lines · David Rientjes
Quoted 3 lines · Su Hui

remove the redundancy code, the zone_start_pfn
is assigned from zone->zone_start_pfn

I don't think this is redundant, it's used by memory hotplug when onlining new memory.

Right, it is:

$ git grep -wn init_currently_empty_zone mm/memory_hotplug.c
mm/memory_hotplug.c:697:            init_currently_empty_zone(zone, start_pfn, nr_pages);
Quoted 18 lines
Quoted 17 lines
---
 mm/page_alloc.c | 2 --
 1 file changed, 2 deletions(-)
mm/page_alloc.c +0 -2
index 3c4eb750a199..3372a8c9fbc4 100644
@@ -6215,8 +6215,6 @@ void __meminit init_currently_empty_zone(struct zone *zone,
 	if (zone_idx > pgdat->nr_zones)
 		pgdat->nr_zones = zone_idx;
 
-	zone->zone_start_pfn = zone_start_pfn;
-
 	mminit_dprintk(MMINIT_TRACE, "memmap_init",
 			"Initialising map node %d zone %lu pfns %lu -> %lu\n",
 			pgdat->node_id,
Signature · 2 lines
Sincerely yours,
Mike.
author
#3 lore raw

I am sorry that i did not consider the memory hotplug case, and i think we should add a new param to distinguish two different cases.

Quoted 38 lines · Mike Rapoport
Quoted 8 lines · David Rientjes
Quoted 3 lines · Su Hui

remove the redundancy code, the zone_start_pfn
is assigned from zone->zone_start_pfn

I don't think this is redundant, it's used by memory hotplug when onlining new memory.

Right, it is:

$ git grep -wn init_currently_empty_zone mm/memory_hotplug.c
mm/memory_hotplug.c:697:            init_currently_empty_zone(zone, start_pfn, nr_pages);
Quoted 18 lines
Quoted 17 lines
---
 mm/page_alloc.c | 2 --
 1 file changed, 2 deletions(-)
mm/page_alloc.c +0 -2
index 3c4eb750a199..3372a8c9fbc4 100644
@@ -6215,8 +6215,6 @@ void __meminit init_currently_empty_zone(struct zone *zone,
 	if (zone_idx > pgdat->nr_zones)
 		pgdat->nr_zones = zone_idx;
 
-	zone->zone_start_pfn = zone_start_pfn;
-
 	mminit_dprintk(MMINIT_TRACE, "memmap_init",
 			"Initialising map node %d zone %lu pfns %lu -> %lu\n",
 			pgdat->node_id,
Signature · 2 lines
Sincerely yours,
Mike.
#4 lore raw
Quoted 3 lines · 苏辉

I am sorry that i did not consider the memory hotplug case, and i think we should add a new param to distinguish two different cases.

No need, we can simply continue setting zone->zone_start_pfn unless there is a bug to be fixed (and, if so, please send a bug report). Removing it would not improve anything and would only increase risk.

author
#5 lore raw

I did not find bug here, and i was just confused when I saw the code.<br/>Thanks.

Quoted 9 lines · David Rientjes
Quoted 3 lines · 苏辉

I am sorry that i did not consider the memory hotplug case, and i think we should add a new param to distinguish two different cases.

No need, we can simply continue setting zone->zone_start_pfn unless there is a bug to be fixed (and, if so, please send a bug report). Removing it would not improve anything and would only increase risk.

#6 lore raw
In reply to Su Hui
Thank you for the patch! Perhaps something to improve:

Hi Su,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mmotm/master]

url:    https://github.com/0day-ci/linux/commits/Su-Hui/mm-remove-the-redundancy-code/20200630-013137
base:   git://git.cmpxchg.org/linux-mmotm.git master
config: x86_64-allnoconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project cf1d04484344be52ada8178e41d18fd15a9b880c)

reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64

If you fix the issue, kindly add following tag as appropriate

All warnings (new ones prefixed by >>):

^
case 1: ^include/linux/signal.h
:133:2: note: expanded from macro '_SIG_SET_BINOP'
case 2: ^
include/linux/signal.h:147:1: warning: unannotated fall-through between switch labels include/linux/signal.h:137:2: note: expanded from macro '_SIG_SET_BINOP' case 1: ^
include/linux/signal.h:177:1: warning: unannotated fall-through between switch labels _SIG_SET_OP(signotset, _sig_not)
^
include/linux/signal.h:167:2: note: expanded from macro '_SIG_SET_OP' case 2: = ^
include/linux/signal.h:177:1: warning: unannotated fall-through between switch labels include/linux/signal.h:169:2: note: expanded from macro '_SIG_SET_OP' case 1: = ^

>> include/linux/signal.h:150:1: warning: include/linux/signal.h:unannotated fall-through between switch labels warning: unannotated fall-through between switch labels

case 1: = 0;
--
^
__attribute__((fallthrough));
include/linux/signal.h:203:2: note: insert 'break;' to avoid fall-through
case 1: = -1;
^
break;
include/linux/signal.h:233:2: warning: unannotated fall-through between switch labels
case 1: ;
^
kernel//irq/handle.c:170:3: warning: unannotated fall-through between switch labels
case IRQ_HANDLED:
^
3kernel//irq/handle.cinclude/linux/signal.h:233:2: note: insert '__attribute__((fallthrough));' to silence this warning case 1: ;
^
__attribute__((fallthrough));
include/linux/signal.h:233:2: note: insert 'break;' to avoid fall-through
case 1: ;
^
break;
include/linux/signal.h:245:2: warning: unannotated fall-through between switch labels
case 1: ;
^
:170:3: note: insert '__attribute__((fallthrough));' to silence this warning
case IRQ_HANDLED:
^
__attribute__((fallthrough));
kernel//irq/handle.c:170:3: note: insert 'break;' to avoid fall-through
case IRQ_HANDLED:
^
break;
include/linux/signal.h:245:2: note: insert '__attribute__((fallthrough));' to silence this warning case 1: ;
^
__attribute__((fallthrough));
include/linux/signal.h:245:2: note: insert 'break;' to avoid fall-through
case 1: ;
^
break;
warnings generated.
In file included from kernel//events/core.c:24:
In file included from include/linux/ptrace.h:7:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:147:1: warning: unannotated fall-through between switch labels _SIG_SET_BINOP(sigorsets, _sig_or)
^
include/linux/signal.h:133:2: note: expanded from macro '_SIG_SET_BINOP'
case 2: ^
include/linux/signal.h:147:1: warning: unannotated fall-through between switch labels include/linux/signal.h:137:2: note: expanded from macro '_SIG_SET_BINOP'
case 1: ^
include/linux/signal.h:150:1: warning: unannotated fall-through between switch labels _SIG_SET_BINOP(sigandsets, _sig_and)
^
include/linux/signal.h:133:2: note: expanded from macro '_SIG_SET_BINOP'
case 2: ^
include/linux/signal.h:150:1: warning: unannotated fall-through between switch labels include/linux/signal.h:137:2: note: expanded from macro '_SIG_SET_BINOP'
case 1: ^
include/linux/signal.h:153:1: warning: unannotated fall-through between switch labels _SIG_SET_BINOP(sigandnsets, _sig_andn)
^
include/linux/signal.h:133:2: note: expanded from macro '_SIG_SET_BINOP'
case 2: ^
include/linux/signal.h:153:1: warning: unannotated fall-through between switch labels include/linux/signal.h:137:2: note: expanded from macro '_SIG_SET_BINOP'
case 1: ^
include/linux/signal.h:177:1: warning: unannotated fall-through between switch labels _SIG_SET_OP(signotset, _sig_not)
^
include/linux/signal.h:167:2: note: expanded from macro '_SIG_SET_OP'
case 2: = ^
include/linux/signal.h:177:1: warning: unannotated fall-through between switch labels include/linux/signal.h:169:2: note: expanded from macro '_SIG_SET_OP'
case 1: = ^
include/linux/signal.h:190:2: warning: unannotated fall-through between switch labels
case 1: = 0;
^
include/linux/signal.h:190:2: note: insert '__attribute__((fallthrough));' to silence this warning case 1: = 0;
^
__attribute__((fallthrough));
include/linux/signal.h:190:2: note: insert 'break;' to avoid fall-through
case 1: = 0;
^
break;
include/linux/signal.h:203:2: warning: unannotated fall-through between switch labels
case 1: = -1;
^
In file included from kernel//locking/semaphore.c:34:
In file included from include/linux/ftrace.h:11:
In file included from include/linux/kallsyms.h:12:
include/linux/mm.h:162:2: warning: unannotated fall-through between switch labels
case 72:
^
In file included from kernel//time/time.c:33:
In file included from include/linux/syscalls.h:85:
In file included from include/trace/syscall.h:7:
In file included from include/linux/trace_events.h:6:
In file included from include/linux/ring_buffer.h:5:

>> include/linux/mm.h:162:2: warning: include/linux/signal.hunannotated fall-through between switch labels

: case 72:203
^:
2: note: insert '__attribute__((fallthrough));' to silence this warning
case 1: = -1;
^
__attribute__((fallthrough));
include/linux/signal.h:203:2: note: insert 'break;' to avoid fall-through
case 1: = -1;
^
break;
include/linux/signal.h:233:2: warning: unannotated fall-through between switch labels
case 1: ;
^
include/linux/signal.hinclude/linux/mm.h:162:2: note: insert '__attribute__((fallthrough));' to silence this warning case 72:
^
__attribute__((fallthrough));
include/linux/mm.h:162:2: note: insert 'break;' to avoid fall-through
case 72:
^
break;
include/linux/mm.h:164:2: warning: unannotated fall-through between switch labels
case 64:
^
include/linux/mm.h:164:2: note: insert '__attribute__((fallthrough));' to silence this warning case 64:
^
__attribute__((fallthrough));
include/linux/mm.h:164:2: note: insert 'break;' to avoid fall-through
case 64:
^
break;
include/linux/mm.h:166:2: warning: unannotated fall-through between switch labels
case 56:
^
:233:2: note: insert '__attribute__((fallthrough));' to silence this warning
case 1: ;
^
__attribute__((fallthrough));
include/linux/signal.h:233:2: note: insert 'break;' to avoid fall-through
case 1: ;
^
break;
include/linux/signal.h:245:2: warning: unannotated fall-through between switch labels
case 1: ;
^
include/linux/mm.h:166:2: note: insert '__attribute__((fallthrough));' to silence this warning case 56:
^
__attribute__((fallthrough));
include/linux/mm.h:166:2: note: insert 'break;' to avoid fall-through
case 56:
^
break;
include/linux/mm.h:162:2: note: insert '__attribute__((fallthrough));' to silence this warning case 72:
^
__attribute__((fallthrough));
include/linux/mm.h:162:2: note: insert 'break;' to avoid fall-through
case 72:
^
break;
include/linux/mm.h:164:2: warning: unannotated fall-through between switch labels
case 64:
^
12 warnings generated.
include/linux/signal.h:245:2: note: insert '__attribute__((fallthrough));' to silence this warning case 1: ;
^
__attribute__((fallthrough));
include/linux/signal.h:245:2: note: insert 'break;' to avoid fall-through
case 1: ;
^
break;
1 warning generated.
include/linux/mm.h:164:2: note: insert '__attribute__((fallthrough));' to silence this warning case 64:
^
__attribute__((fallthrough));
include/linux/mm.h:164:2: note: insert 'break;' to avoid fall-through
case 64:
^
break;
include/linux/mm.h:166:2: warning: unannotated fall-through between switch labels
case 56:
^
In file included from kernel//sched/loadavg.c:9:
In file included from kernel//sched/sched.h:11:
In file included from include/linux/sched/cputime.h:5:
In file included from include/linux/sched/signal.h:6:
include/linux/signal.h:147:1: warning: unannotated fall-through between switch labels _SIG_SET_BINOP(sigorsets, _sig_or)
^
include/linux/signal.h:133:2: note: expanded from macro '_SIG_SET_BINOP'
case 2: ^
include/linux/signal.h:147:1: warning: unannotated fall-through between switch labels include/linux/signal.h:137:2: note: expanded from macro '_SIG_SET_BINOP'
case 1: ^
include/linux/signal.h:150:1: warning: unannotated fall-through between switch labels _SIG_SET_BINOP(sigandsets, _sig_and)

vim +150 include/linux/signal.h

^1da177e4c3f41 Linus Torvalds 2005-04-16 148
^1da177e4c3f41 Linus Torvalds 2005-04-16 149 #define _sig_and(x,y) ((x) & (y))
^1da177e4c3f41 Linus Torvalds 2005-04-16 @150 _SIG_SET_BINOP(sigandsets, _sig_and) ^1da177e4c3f41 Linus Torvalds 2005-04-16 151

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

#7 lore raw
In reply to Su Hui
Thank you for the patch! Perhaps something to improve:

Hi Su,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on mmotm/master]

url:    https://github.com/0day-ci/linux/commits/Su-Hui/mm-remove-the-redundancy-code/20200630-013137
base:   git://git.cmpxchg.org/linux-mmotm.git master
config: x86_64-allnoconfig (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project cf1d04484344be52ada8178e41d18fd15a9b880c)

reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64

If you fix the issue, kindly add following tag as appropriate

All warnings (new ones prefixed by >>):

^
include/linux/mm.h:162:2: note: insert 'break;' to avoid fall-throughinclude/linux/signal.h case 72:
^
break; :
include/linux/mm.h:190164:2: warning: unannotated fall-through between switch labels case 64::include/linux/mm.h:164:2: note: insert '__attribute__((fallthrough));' to silence this warning

>> case 64:2: warning: unannotated fall-through between switch labels

case 1: = 0;
^
include/linux/signal.h:190:2: note: insert '__attribute__((fallthrough));' to silence this warning case 1: = 0;
^
__attribute__((fallthrough));
include/linux/signal.h:190:2: note: insert 'break;' to avoid fall-through
case 1: = 0;
^
break;
include/linux/signal.h:203:2: warning: unannotated fall-through between switch labels case 1: = -1;
^

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

#8 lore raw
In reply to Su Hui
Quoted 4 lines · Su Hui

remove the redundancy code, the zone_start_pfn
is assigned from zone->zone_start_pfn

---

Side note: You should really work on better patch subjects/descriptions.
+ casing, punctuation, empty line before Signed-off-by ...

"mm: remove the redundancy code" is as expressive as "mm: fix the bug"

Signature · 3 lines
Thanks,

David / dhildenb
author
#9 lore raw

I had noticed that.
Thanks.

Quoted 15 lines · David Hildenbrand
Quoted 4 lines · Su Hui

remove the redundancy code, the zone_start_pfn
is assigned from zone->zone_start_pfn

---

Side note: You should really work on better patch subjects/descriptions.
+ casing, punctuation, empty line before Signed-off-by ...

"mm: remove the redundancy code" is as expressive as "mm: fix the bug"

Signature · 3 lines
Thanks,

David / dhildenb