On 2023/6/17 18:51, Mike Rapoport wrote: > On Sat, Jun 17, 2023 at 04:39:44PM +0800, Miaohe Lin wrote: >> On 2023/6/17 15:56, Mike Rapoport wrote: >>> On Sat, Jun 17, 2023 at 03:09:55PM +0800, Miaohe Lin wrote: >>>> HASH_SMALL only works when parameter numentries is 0. But the sole caller >>>> futex_init() never calls alloc_large_system_hash() with numentries set to >>>> 0. >>> >> >> Thanks for your quick review. >> >>> Doesn't it? >>> What happens when CONFIG_BASE_SMALL is set? >> >> When CONFIG_BASE_SMALL is set, futex_hashsize is set to 16 and alloc_large_system_hash() is called with >> numentries == 16 && flags == HASH_SMALL. But in the alloc_large_system_hash(), we have the below logic: >> >> alloc_large_system_hash() >> { >> if (!numentries) { /* numentries == 16 here, so this code block is skipped. */ >> ... >> if (unlikely(flags & HASH_SMALL)) { /* So as here. */ >> ... >> } >> ... >> } >> >> So HASH_SMALL is just unused. Or am I miss something? > > You are right, I've missed that. > >> Thanks. >> >>> >>>> So HASH_SMALL is obsolete and remove it. >>> >>>> Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> >>>> --- >>>> include/linux/memblock.h | 2 -- >>>> kernel/futex/core.c | 3 +-- >>>> mm/mm_init.c | 10 +--------- >>>> 3 files changed, 2 insertions(+), 13 deletions(-) >>>> >>>> diff --git a/include/linux/memblock.h b/include/linux/memblock.h >>>> index f71ff9f0ec81..346d80809517 100644 >>>> --- a/include/linux/memblock.h >>>> +++ b/include/linux/memblock.h >>>> @@ -581,8 +581,6 @@ extern void *alloc_large_system_hash(const char *tablename, >>>> unsigned long high_limit); >>>> >>>> #define HASH_EARLY 0x00000001 /* Allocating during early boot? */ >>>> -#define HASH_SMALL 0x00000002 /* sub-page allocation allowed, min >>>> - * shift passed via *_hash_shift */ >>>> #define HASH_ZERO 0x00000004 /* Zero allocated hash table */ > > Can you update HASH_ZERO to 0x2? Will do. Thanks.