mm/sparse: clarify pgdat_to_phys
Subsystems (3)
PATCH v3 1/1 mm/sparse: clarify pgdat_to_phys
Clarify pgdat_to_phys() by testing if
pgdat == &contig_page_data when CONFIG_NUMA=n.
We only expect contig_page_data in such case, so we use &contig_page_data directly instead of pgdat.
No functional change intended when CONFIG_BUG_VM=n.
Comment from Mark [1]:
"
... and I reckon it'd be clearer and more robust to define pgdat_to_phys() in the same ifdefs as contig_page_data so that these, stay in-sync. e.g. have:
| #ifdef CONFIG_NUMA | #define pgdat_to_phys(x) virt_to_phys(x) | #else /* CONFIG_NUMA */ | | extern struct pglist_data contig_page_data; | ... | #define pgdat_to_phys(x) __pa_symbol(&contig_page_data) | | #endif /* CONIFIG_NUMA */
"
[1] https://lore.kernel.org/linux-arm-kernel/[email protected]/
--
Change since v1:
Thanks for Mike's comment, check if pgdat == &contig_page_data, so it is clearer that we only expect contig_page_data when CONFIG_NUMA=n.
Change since v2:
use VM_BUG_ON() to avoid runtime checking when CONFIG_BUG_VM=n
--- mm/sparse.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
mm/sparse.c +2 -1
@@ -348,7 +348,8 @@ size_t mem_section_usage_size(void)static inline phys_addr_t pgdat_to_phys (struct pglist_data *pgdat) {#ifndef CONFIG_NUMA -return __pa_symbol (pgdat); +VM_BUG_ON (pgdat != &contig_page_data); +return __pa_symbol (&contig_page_data);#else return __pa (pgdat);#endif
Signature · 1 line
2.18.0
Quoted 51 lines · Miles Chen
Clarify
pgdat_to_phys()by testing if
pgdat ==&contig_page_datawhenCONFIG_NUMA=n.We only expect
contig_page_datain such case, so we use&contig_page_datadirectly instead of pgdat.No functional change intended when
CONFIG_BUG_VM=n.Comment from Mark [1]:
"
... and I reckon it'd be clearer and more robust to definepgdat_to_phys()in the same ifdefs ascontig_page_dataso that these, stay in-sync. e.g. have:| #ifdef CONFIG_NUMA | #define pgdat_to_phys(x) virt_to_phys(x) | #else /* CONFIG_NUMA */ | | extern struct pglist_data contig_page_data; | ... | #define pgdat_to_phys(x) __pa_symbol(&contig_page_data) | | #endif /* CONIFIG_NUMA */"
[1] https://lore.kernel.org/linux-arm-kernel/[email protected]/
Cc Mike Rapoport <[email protected]>Cc Mark Rutland <[email protected]>Cc David Hildenbrand <[email protected]>Signed-off-by Miles Chen <[email protected]>--
Change since v1:
Thanks for Mike's comment, check if pgdat ==&contig_page_data, so it is clearer that we only expectcontig_page_datawhenCONFIG_NUMA=n.Change since v2:
useVM_BUG_ON()to avoid runtime checking whenCONFIG_BUG_VM=n--- mm/sparse.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)mm/sparse.c +0
-0
mm/sparse.c size_t mem_section_usage_size(void) · line 355
Quoted 9 lines
mm/sparse.c +2
-1@@ -348,7 +348,8 @@ size_t mem_section_usage_size(void)static inline phys_addr_t pgdat_to_phys (struct pglist_data *pgdat) {#ifndef CONFIG_NUMA -return __pa_symbol (pgdat); +VM_BUG_ON (pgdat != &contig_page_data); +return __pa_symbol (&contig_page_data);#else return __pa (pgdat);#endif
Signature · 3 lines
Thanks, David / dhildenb
Quoted 23 lines · Miles Chen
Clarify
pgdat_to_phys()by testing if
pgdat ==&contig_page_datawhenCONFIG_NUMA=n.We only expect
contig_page_datain such case, so we use&contig_page_datadirectly instead of pgdat.No functional change intended when
CONFIG_BUG_VM=n.Comment from Mark [1]:
"
... and I reckon it'd be clearer and more robust to definepgdat_to_phys()in the same ifdefs ascontig_page_dataso that these, stay in-sync. e.g. have:| #ifdef CONFIG_NUMA | #define pgdat_to_phys(x) virt_to_phys(x) | #else /* CONFIG_NUMA */ | | extern struct pglist_data contig_page_data; | ... | #define pgdat_to_phys(x) __pa_symbol(&contig_page_data) | | #endif /* CONIFIG_NUMA */
Quoted 8 lines
"
[1] https://lore.kernel.org/linux-arm-kernel/[email protected]/
Cc Mike Rapoport <[email protected]>Cc Mark Rutland <[email protected]>Cc David Hildenbrand <[email protected]>Signed-off-by Miles Chen <[email protected]>
Quoted 31 lines
--
Change since v1:
Thanks for Mike's comment, check if pgdat ==&contig_page_data, so it is clearer that we only expectcontig_page_datawhenCONFIG_NUMA=n.Change since v2:
useVM_BUG_ON()to avoid runtime checking whenCONFIG_BUG_VM=n--- mm/sparse.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)mm/sparse.c +2
-1@@ -348,7 +348,8 @@ size_t mem_section_usage_size(void)static inline phys_addr_t pgdat_to_phys (struct pglist_data *pgdat) {#ifndef CONFIG_NUMA -return __pa_symbol (pgdat); +VM_BUG_ON (pgdat != &contig_page_data); +return __pa_symbol (&contig_page_data);#else return __pa (pgdat);#endif Signature · 1 line
2.18.0
Signature · 2 lines
Sincerely yours, Mike.