mm/sparse: remove duplicated pfn_to_section_nr()
Subsystems (3)
PATCH RESEND 1/1 mm/sparse: remove duplicated pfn_to_section_nr()
From: chenqiwu <[email protected]>
Remove duplicated pfn_to_section_nr() in pfn_valid() and pfn_present() to increase executing efficiency of code.
--- include/linux/mmzone.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
include/linux/mmzone.h +7 -4
@@ -1358,10 +1358,11 @@ static inline int pfn_section_valid(struct mem_section *ms, unsigned long pfn)static inline int pfn_valid (unsigned long pfn) {struct mem_section *ms; +unsigned long sec_nr =pfn_to_section_nr (pfn); -if (pfn_to_section_nr (pfn) >=NR_MEM_SECTIONS ) +if (sec_nr >=NR_MEM_SECTIONS )return 0 ; - ms =__nr_to_section (pfn_to_section_nr (pfn)); + ms =__nr_to_section (sec_nr);if (!valid_section (ms))return 0 ;/*
@@ -1374,9 +1375,11 @@ static inline int pfn_valid(unsigned long pfn)static inline int pfn_present (unsigned long pfn) { -if (pfn_to_section_nr (pfn) >=NR_MEM_SECTIONS ) +unsigned long sec_nr =pfn_to_section_nr (pfn); + +if (sec_nr >=NR_MEM_SECTIONS )return 0 ; -return present_section (__nr_to_section (pfn_to_section_nr (pfn))); +return present_section (__nr_to_section (sec_nr)); }static inline unsigned long next_present_section_nr (unsigned long section_nr)
Signature · 1 line
1.9.1
Quoted 33 lines
From: chenqiwu <[email protected]>
Remove duplicated
pfn_to_section_nr()inpfn_valid()andpfn_present()to increase executing efficiency of code.Signed-off-by chenqiwu <[email protected]>--- include/linux/mmzone.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)include/linux/mmzone.h +3
-3@@ -1358,10 +1358,11 @@ static inline int pfn_section_valid(struct mem_section *ms, unsigned long pfn)static inline int pfn_valid (unsigned long pfn) {struct mem_section *ms; +unsigned long sec_nr =pfn_to_section_nr (pfn); -if (pfn_to_section_nr (pfn) >=NR_MEM_SECTIONS ) +if (sec_nr >=NR_MEM_SECTIONS )return 0 ; - ms =__nr_to_section (pfn_to_section_nr (pfn)); + ms =__nr_to_section (sec_nr);if (!valid_section (ms))return 0 ;/* @@ -1374,9 +1375,11 @@ static inline int pfn_valid(unsigned long pfn)static inline int pfn_present (unsigned long pfn) { -if (pfn_to_section_nr (pfn) >=NR_MEM_SECTIONS )
include/linux/mmzone.h static inline int pfn_valid(unsigned long pfn)
Quoted 10 lines
include/linux/mmzone.h +4
-2+unsigned long sec_nr =pfn_to_section_nr (pfn); + +if (sec_nr >=NR_MEM_SECTIONS )return 0 ; -return present_section (__nr_to_section (pfn_to_section_nr (pfn))); +return present_section (__nr_to_section (sec_nr)); }static inline unsigned long next_present_section_nr (unsigned long section_nr) --
Looks ok.
Quoted 3 lines
1.9.1
Andrew Morton
maintainerQuoted 26 lines · On Mon, 16 Mar 2020 15:59:47 +0800 [email protected] wrote:
From: chenqiwu <[email protected]>
Remove duplicated
pfn_to_section_nr()inpfn_valid()andpfn_present()to increase executing efficiency of code....
include/linux/mmzone.h +3
-2@@ -1358,10 +1358,11 @@ static inline int pfn_section_valid(struct mem_section *ms, unsigned long pfn)static inline int pfn_valid (unsigned long pfn) {struct mem_section *ms; +unsigned long sec_nr =pfn_to_section_nr (pfn); -if (pfn_to_section_nr (pfn) >=NR_MEM_SECTIONS ) +if (sec_nr >=NR_MEM_SECTIONS )return 0 ; - ms =__nr_to_section (pfn_to_section_nr (pfn)); + ms =__nr_to_section (sec_nr);if (!valid_section (ms))return 0 ;/* @@ -1374,9 +1375,11 @@ static inline int pfn_valid(unsigned long pfn)static inline int pfn_present (unsigned long pfn)
include/linux/mmzone.h static inline int pfn_valid(unsigned long pfn) · line 1384
Quoted 10 lines
include/linux/mmzone.h +4
-2{ -if (pfn_to_section_nr (pfn) >=NR_MEM_SECTIONS ) +unsigned long sec_nr =pfn_to_section_nr (pfn); + +if (sec_nr >=NR_MEM_SECTIONS )return 0 ; -return present_section (__nr_to_section (pfn_to_section_nr (pfn))); +return present_section (__nr_to_section (sec_nr)); }
The compiler already makes this optimization (pfn_to_section_nr() is very simple). Generated code appears to be identical.
I guess this patch could be sold as a cleanup, but I don't think it's worthwhile, really.