Received: by 2002:a05:6520:4211:b029:f4:110d:56bc with SMTP id o17csp3130732lkv; Mon, 10 May 2021 08:20:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzA58olhVpbBa+Tt5acTiHbLJItmhVaxbTX6MvC0yCLSsIMHZxDi4G5PmVytrS1H2BZ1iZk X-Received: by 2002:aa7:d74c:: with SMTP id a12mr30230033eds.257.1620660031976; Mon, 10 May 2021 08:20:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620660031; cv=none; d=google.com; s=arc-20160816; b=aTgCE+DZgAjohSjx7QT0j0Ri5BmfjelxqXhJGJuaaYK1h6yrYEpG9GOGI02CNcVmyb BSB0mIQLLG3xJLDFEtDKdYrBjs91kH4DmQKH5SKG8c9j6WOfCyXBhEuQR/j1Ma3fjWjx bCXIaIX64lhk1Zku6mf/iiaZH6McFDceGcDwV/JA+mR+5lteaBKDNpLxt4vfT9I7UxMr qkPJIT1680uy+F+ZgMzo0U7p1+6UK7EKKyDhjY4l0AW+d2tYDVQY/b44tDNdqh3+FgWA Hm8LmoBjwjLbWSFeLGPqht69WN3eE9NHD8F7Htz58y0u+sgr9b6Pe3kNxgI659ItDCPC C86Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:content-id:mime-version :user-agent:references:message-id:in-reply-to:subject:cc:to:from :date; bh=c7E+QPrykVQdfWWnoJ9sLdZBeVdRDzx2RMZRpueIivY=; b=fDoEFfi0i0jXE3e3bz+vY+0EALLAQzplLFEKfcfxQ7que5Brhty7ViJO46TxXbQH5f H4SIVt/sh0XfSZ3vC8ghF2HvYbetYGH1XrgLtgY+RuFd2DrhXY2x07rdQM1s6lLFDYnm lY0eSNc8lu/BQaE8qVbit6nUP28khdTbhzgXSVp6dD4TIfibk2FEePervjZNNB08R4j7 UNUtFEPWTHseE1+4w1Mn1a6SGu9Zo+lEBhA36hxxWpn1gD2MA2UfUcPvGWJJ3q04s1gC Kh7tNqv+vb3HtDw5vIJ5vndGQ6Y9FqvEjgEvw/lPpvv6LXmTzcXpc4K2kcdqpGKQMWTl Q9Mg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g9si12807841edm.502.2021.05.10.08.20.08; Mon, 10 May 2021 08:20:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233216AbhEJPR4 (ORCPT + 99 others); Mon, 10 May 2021 11:17:56 -0400 Received: from vmi485042.contaboserver.net ([161.97.139.209]:56114 "EHLO gentwo.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241634AbhEJPQa (ORCPT ); Mon, 10 May 2021 11:16:30 -0400 Received: by gentwo.de (Postfix, from userid 1001) id 61FC4B005CE; Mon, 10 May 2021 17:15:23 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by gentwo.de (Postfix) with ESMTP id 608DCB002EA; Mon, 10 May 2021 17:15:23 +0200 (CEST) Date: Mon, 10 May 2021 17:15:23 +0200 (CEST) From: Christoph Lameter To: Hyeonggon Yoo <42.hyeyoo@gmail.com> cc: Vlastimil Babka , Matthew Wilcox , penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] mm: kmalloc_index: make compiler break when size is not supported In-Reply-To: <20210510150230.GA74915@hyeyoo> Message-ID: References: <20210508221328.7338-1-42.hyeyoo@gmail.com> <20210510135857.GA3594@hyeyoo> <9d0ffe49-a2e2-6c81-377b-4c8d2147dff8@suse.cz> <20210510150230.GA74915@hyeyoo> User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY=HlL+5n6rz5pIUxbD Content-ID: Content-Disposition: INLINE Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --HlL+5n6rz5pIUxbD Content-Type: text/plain; CHARSET=US-ASCII Content-ID: Content-Disposition: INLINE I guess this needs to be reviewed and tested by the users of architectures that can use large MAXORDER pages such as powerpc and Itanium. On Tue, 11 May 2021, Hyeonggon Yoo wrote: > updated patch. let me know if something is wrong! > --HlL+5n6rz5pIUxbD Content-Type: text/x-diff; CHARSET=us-ascii Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=0001-mm-kmalloc_index-make-compiler-break-when-size-is-no.patch >From 8fe7ecdfb0f5bd5b08771512303d72f1c6447362 Mon Sep 17 00:00:00 2001 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> Date: Mon, 10 May 2021 23:57:34 +0900 Subject: [PATCH] mm: kmalloc_index: make compiler break when size is not supported currently when size is not supported by kmalloc_index, compiler will not break. so changed BUG to BUILD_BUG_ON_MSG to make compiler break if size is wrong. this is done in compile time. also removed code that allocates more than 32MB because current implementation supports only up to 32MB. Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> --- include/linux/slab.h | 7 +++++-- mm/slab_common.c | 7 +++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/linux/slab.h b/include/linux/slab.h index 0c97d788762c..fd0c7229d105 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -346,6 +346,9 @@ static __always_inline enum kmalloc_cache_type kmalloc_type(gfp_t flags) * 1 = 65 .. 96 bytes * 2 = 129 .. 192 bytes * n = 2^(n-1)+1 .. 2^n + * + * Note: you don't need to optimize kmalloc_index because it's evaluated + * in compile-time. */ static __always_inline unsigned int kmalloc_index(size_t size) { @@ -382,8 +385,8 @@ static __always_inline unsigned int kmalloc_index(size_t size) if (size <= 8 * 1024 * 1024) return 23; if (size <= 16 * 1024 * 1024) return 24; if (size <= 32 * 1024 * 1024) return 25; - if (size <= 64 * 1024 * 1024) return 26; - BUG(); + + BUILD_BUG_ON_MSG(1, "unexpected size in kmalloc_index()"); /* Will never be reached. Needed because the compiler may complain */ return -1; diff --git a/mm/slab_common.c b/mm/slab_common.c index f8833d3e5d47..39d4eca8cf9b 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -745,8 +745,8 @@ struct kmem_cache *kmalloc_slab(size_t size, gfp_t flags) /* * kmalloc_info[] is to make slub_debug=,kmalloc-xx option work at boot time. - * kmalloc_index() supports up to 2^26=64MB, so the final entry of the table is - * kmalloc-67108864. + * kmalloc_index() supports up to 2^25=32MB, so the final entry of the table is + * kmalloc-33554432. */ const struct kmalloc_info_struct kmalloc_info[] __initconst = { INIT_KMALLOC_INFO(0, 0), @@ -774,8 +774,7 @@ const struct kmalloc_info_struct kmalloc_info[] __initconst = { INIT_KMALLOC_INFO(4194304, 4M), INIT_KMALLOC_INFO(8388608, 8M), INIT_KMALLOC_INFO(16777216, 16M), - INIT_KMALLOC_INFO(33554432, 32M), - INIT_KMALLOC_INFO(67108864, 64M) + INIT_KMALLOC_INFO(33554432, 32M) }; /* -- 2.25.1 --HlL+5n6rz5pIUxbD--