On 3/23/22 14:02, Sebastian Andrzej Siewior wrote: > On 2022-03-23 12:48:29 [+0100], Vlastimil Babka wrote: >>> +#ifdef CONFIG_KASAN_HW_TAGS >>> #define ___GFP_SKIP_KASAN_POISON 0x1000000u >>> +#else >>> +#define ___GFP_SKIP_KASAN_POISON 0 >>> +#endif >>> #ifdef CONFIG_LOCKDEP >>> #define ___GFP_NOLOCKDEP 0x2000000u >>> #else >>> @@ -251,7 +255,9 @@ struct vm_area_struct; >>> #define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP) >>> >>> /* Room for N __GFP_FOO bits */ >>> -#define __GFP_BITS_SHIFT (25 + IS_ENABLED(CONFIG_LOCKDEP)) >>> +#define __GFP_BITS_SHIFT (24 + \ >>> + IS_ENABLED(CONFIG_KASAN_HW_TAGS) + \ >>> + IS_ENABLED(CONFIG_LOCKDEP)) >> >> This breaks __GFP_NOLOCKDEP, see: >> https://lore.kernel.org/all/YjoJ4CzB3yfWSV1F@xxxxxxxxxxxxx/ > > This could work because ___GFP_NOLOCKDEP is still 0x2000000u. In Hm but already this patch makes gfp_allowed_mask to be 0x1ffffff (thus not covering 0x2000000u) when CONFIG_LOCKDEP is enabled and the KASAN stuff not? 0x8000000u is just even further away. > ("kasan, page_alloc: allow skipping memory init for HW_TAGS") > https://lore.kernel.org/all/0d53efeff345de7d708e0baa0d8829167772521e.1643047180.git.andreyknvl@xxxxxxxxxx/ > > This is replaced with 0x8000000u which breaks lockdep. > > Sebastian >