Re: [PATCH 0/6] Boot-time switching between 4- and 5-level paging for 4.15, Part 1
From: Kirill A. Shutemov <hidden>
Date: 2017-10-24 11:38:23
Also in:
lkml
On Tue, Oct 24, 2017 at 11:40:40AM +0200, Ingo Molnar wrote:
* Kirill A. Shutemov [off-list ref] wrote:quoted
On Mon, Oct 23, 2017 at 02:40:14PM +0200, Ingo Molnar wrote:quoted
* Kirill A. Shutemov [off-list ref] wrote:quoted
quoted
Making a variable that 'looks' like a constant macro dynamic in a rare Kconfig scenario is asking for trouble.We expect boot-time page mode switching to be enabled in kernel of next generation enterprise distros. It shoudn't be that rare.My point remains even with not-so-rare Kconfig dependency.I don't follow how introducing new variable that depends on Kconfig option would help with the situation.A new, properly named variable or function (max_physmem_bits or max_physmem_bits()) that is not all uppercase would make it abundantly clear that it is not a constant but a runtime value.
Would we need to rename every uppercase macros that would depend on max_physmem_bits()? Like MAXMEM.
quoted
We would end up with inverse situation: people would use MAX_PHYSMEM_BITS where the new variable need to be used and we will in the same situation.It should result in sub-optimal resource allocations worst-case, right?
I don't think it's the worst case.
For instance, virt_addr_valid() depends indirectly on it:
virt_addr_valid()
__virt_addr_valid()
phys_addr_valid()
boot_cpu_data.x86_phys_bits (initialized with MAX_PHYSMEM_BITS)
virt_addr_valid() is used in things like implementation /dev/kmem.
To me it's far more risky than occasional build breakage for
CONFIG_X86_5LEVEL=y.
We could also rename it to MAX_POSSIBLE_PHYSMEM_BITS to make it clear that the real number of bits can be lower.
If you still insist, I'll rework code as you describe, but I disagree that's the best way to go. We also need to make other upper case macros dynamic, like PGDIR_SHIFT or PTRS_PER_P4D. Reworking them in the same would be *far* more complex as they (and their derivatives) used heavily in generic code. To me it's a lot of code for a small to none benefit. P.S. Could you please take a look on x86/boot/compressed/64 changes? -- Kirill A. Shutemov -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>