On Fri, Feb 09, 2024 at 04:41:36PM -0800, Kees Cook wrote: > On Fri, Feb 09, 2024 at 03:30:37PM +0300, Alexey Dobriyan wrote: > > On Mon, Feb 05, 2024 at 04:48:08AM -0800, Kees Cook wrote: > > > On Mon, Feb 05, 2024 at 12:51:43PM +0300, Alexey Dobriyan wrote: > > > > +#define ARCH_AT_PAGE_SHIFT_MASK \ > > > > + do { \ > > > > + u32 val = 1 << 12; \ > > > > + if (boot_cpu_has(X86_FEATURE_PSE)) { \ > > > > + val |= 1 << 21; \ > > > > + } \ > > > > + if (boot_cpu_has(X86_FEATURE_GBPAGES)) { \ > > > > + val |= 1 << 30; \ > > > > + } \ > > > > > > Can we use something besides literal "12", "21", and "30" values here? > > > > Ehh, no, why? Inside x86_64 the page shifts are very specific numbers, > > they won't change. > > Well, it's nicer to have meaningful words to describe these things. Not really. Inside specific arch page shifts are fixed, so using names is just more macros one need to remember. If I were to invent names (which I wouldn't), the best names are PAGE_SHIFT PAGE_SHIFT2 PAGE_SHIFT3 ... with PAGE_SHIFT2, PAGE_SHIFT3 being optional macros if arch doesn't support multiple page sizes. > In fact, PAGE_SHIFT already exists for 12, and HPAGE_SHIFT already exists > for 21. Please use those, and add another, perhaps GBPAGE_SHIFT, for 30. HPAGE_SHIFT is bad name, H doesn't describe anything unless arch is known. Hugepages is marketing name. If GBPAGE_SHIFT is good name, then HPAGE_SHIFT is bad name, it should've been MBPAGE_SHIFT, which wrong because it is 2 MiB not 1 MiB. BTW parisc has REAL_HPAGE_SHIFT !