From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00D8EC43470 for ; Mon, 10 May 2021 15:15:28 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5ACC161494 for ; Mon, 10 May 2021 15:15:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5ACC161494 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=gentwo.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E410D6B006E; Mon, 10 May 2021 11:15:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E185F6B0071; Mon, 10 May 2021 11:15:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CE05E6B0072; Mon, 10 May 2021 11:15:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0107.hostedemail.com [216.40.44.107]) by kanga.kvack.org (Postfix) with ESMTP id B38C26B006E for ; Mon, 10 May 2021 11:15:26 -0400 (EDT) Received: from smtpin33.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 5DABA3D12 for ; Mon, 10 May 2021 15:15:26 +0000 (UTC) X-FDA: 78125670252.33.B0F7E8C Received: from gentwo.de (vmi485042.contaboserver.net [161.97.139.209]) by imf25.hostedemail.com (Postfix) with ESMTP id 75D586000128 for ; Mon, 10 May 2021 15:15:17 +0000 (UTC) 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 Authentication-Results: imf25.hostedemail.com; dkim=none; spf=pass (imf25.hostedemail.com: domain of cl@gentwo.de designates 161.97.139.209 as permitted sender) smtp.mailfrom=cl@gentwo.de; dmarc=none X-Stat-Signature: xmgrx3xud8frmynn39hd6i7bbbdz48j5 X-Rspamd-Queue-Id: 75D586000128 X-Rspamd-Server: rspam05 Received-SPF: none (gentwo.de>: No applicable sender policy available) receiver=imf25; identity=mailfrom; envelope-from=""; helo=gentwo.de; client-ip=161.97.139.209 X-HE-DKIM-Result: none/none X-HE-Tag: 1620659717-564948 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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--