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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0F2BC433F5 for ; Thu, 28 Apr 2022 21:56:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 514766B0071; Thu, 28 Apr 2022 17:56:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 49CCA6B0072; Thu, 28 Apr 2022 17:56:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 317016B0073; Thu, 28 Apr 2022 17:56:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.a.hostedemail.com [64.99.140.24]) by kanga.kvack.org (Postfix) with ESMTP id 1CEB66B0071 for ; Thu, 28 Apr 2022 17:56:04 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D9E9F21B29 for ; Thu, 28 Apr 2022 21:56:03 +0000 (UTC) X-FDA: 79407646206.15.E3AD8D3 Received: from mail-ua1-f46.google.com (mail-ua1-f46.google.com [209.85.222.46]) by imf23.hostedemail.com (Postfix) with ESMTP id E075214005E for ; Thu, 28 Apr 2022 21:55:56 +0000 (UTC) Received: by mail-ua1-f46.google.com with SMTP id p1so2267214uak.1 for ; Thu, 28 Apr 2022 14:56:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ykl24436SaU3yo8134eJXPByhNLIxnoisxRIQCMfPNU=; b=OYu5UJiojOCJcf+bfjl+7mPHz/EWWUDTzXAD/6tENRmjCYCZ90t03VyG4kKPUSUIik Tp6T67U+oz784+GfWsihRuRDungG+sOW09ZOInLUUjAJeO2POKKWQrE8f1JrakYe3IYV T/wBJVKrp2c8LiiMg5BWOtletnbd3OjIBOkGOu8TSriEDHvQcsliMsI0Y+gPmFL/fmnY l7r6xLRLmfkNjeLcH4NXNggVpyO3SWIdhB8RX/uBrKtWyonF16GR3Uat1yndrGEsB6yQ QbE9aucSPGz1jBJ6UGo1By1znTJTtiPmFHqpuxypaXfDkmttIcPJuDYhw9GSiF5rrmqO 8sxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ykl24436SaU3yo8134eJXPByhNLIxnoisxRIQCMfPNU=; b=F379Btujo1NFNBjEwNPNQouvzT97u85HHrWmiqftRbZ85KCWs6entISz3cMP9tdr2b e05va5FedJzpGSOq7rzp+9JyQ/WI8KMQv3rm0MUApRQyLWJto7whsgwgP+t5Kdru/wA6 AUHPrUapgEtR0dCyj9AMQNL8jKI9KwpRZzASwajdxZfgUtsJR2O692n8YMeWor/vbq89 vgV3WKvCRJhrSuqKb59WaoT7uTtgw0To2PmWnmF1WmZPuP8l9izf8Yb5bJIy7NgDxuDR ZRNFg4klYXa0TB8WaZHu/KHpAN/dZUrMrfKpJRh10jkjc3oo9unL7ClPFpGtzXi2DBJL Q5+w== X-Gm-Message-State: AOAM532s9IG1qzQFBPH52nwUjpPyOB+R5Ulg+qAD6W5S7Bf8YZ8a9EFb Db2c3zbTLdxsvbmjmZO4dh/+4s2Kq+6pYqpf0q/Nsg== X-Google-Smtp-Source: ABdhPJx0EqFUFPkWRHxfFBGbweZrmSs8OVh4W2+Tz0hiwIBGnXxj8QBMaPt7l0rXQZfXNnDthfcm5PZzBs2XYv2CYIg= X-Received: by 2002:ab0:7308:0:b0:35f:acfb:c011 with SMTP id v8-20020ab07308000000b0035facfbc011mr10636031uao.51.1651182962546; Thu, 28 Apr 2022 14:56:02 -0700 (PDT) MIME-Version: 1.0 References: <20220427195820.1716975-1-pcc@google.com> <20220427195820.1716975-2-pcc@google.com> <20220427132738.fdca02736b5d067c92185c5b@linux-foundation.org> In-Reply-To: <20220427132738.fdca02736b5d067c92185c5b@linux-foundation.org> From: Peter Collingbourne Date: Thu, 28 Apr 2022 14:55:51 -0700 Message-ID: Subject: Re: [PATCH v5 2/2] mm: make minimum slab alignment a runtime property To: Andrew Morton Cc: Andrey Konovalov , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Catalin Marinas , Linux ARM , Linux Memory Management List , Linux Kernel Mailing List , Vlastimil Babka , Pekka Enberg , roman.gushchin@linux.dev, Joonsoo Kim , David Rientjes , Herbert Xu , Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , kasan-dev , Eric Biederman , Kees Cook Content-Type: text/plain; charset="UTF-8" Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=OYu5UJio; spf=pass (imf23.hostedemail.com: domain of pcc@google.com designates 209.85.222.46 as permitted sender) smtp.mailfrom=pcc@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: E075214005E X-Stat-Signature: hf1xo84pz1qq8g637qw8f36co9rd3d7w X-HE-Tag: 1651182956-256254 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: On Wed, Apr 27, 2022 at 1:27 PM Andrew Morton wrote: > > On Wed, 27 Apr 2022 12:58:20 -0700 Peter Collingbourne wrote: > > > When CONFIG_KASAN_HW_TAGS is enabled we currently increase the minimum > > slab alignment to 16. This happens even if MTE is not supported in > > hardware or disabled via kasan=off, which creates an unnecessary > > memory overhead in those cases. Eliminate this overhead by making > > the minimum slab alignment a runtime property and only aligning to > > 16 if KASAN is enabled at runtime. > > > > On a DragonBoard 845c (non-MTE hardware) with a kernel built with > > CONFIG_KASAN_HW_TAGS, waiting for quiescence after a full Android > > boot I see the following Slab measurements in /proc/meminfo (median > > of 3 reboots): > > > > ... > > > > --- a/mm/slab.c > > +++ b/mm/slab.c > > @@ -3009,10 +3009,9 @@ static void *cache_alloc_debugcheck_after(struct kmem_cache *cachep, > > objp += obj_offset(cachep); > > if (cachep->ctor && cachep->flags & SLAB_POISON) > > cachep->ctor(objp); > > - if (ARCH_SLAB_MINALIGN && > > - ((unsigned long)objp & (ARCH_SLAB_MINALIGN-1))) { > > - pr_err("0x%px: not aligned to ARCH_SLAB_MINALIGN=%d\n", > > - objp, (int)ARCH_SLAB_MINALIGN); > > + if ((unsigned long)objp & (arch_slab_minalign() - 1)) { > > + pr_err("0x%px: not aligned to arch_slab_minalign()=%d\n", objp, > > + (int)arch_slab_minalign()); > > printf/printk know about size_t. Use %zu, no cast needed. But... > > > } > > return objp; > > } > > diff --git a/mm/slab_common.c b/mm/slab_common.c > > index 2b3206a2c3b5..33cc49810a54 100644 > > --- a/mm/slab_common.c > > +++ b/mm/slab_common.c > > @@ -154,8 +154,7 @@ static unsigned int calculate_alignment(slab_flags_t flags, > > align = max(align, ralign); > > } > > > > - if (align < ARCH_SLAB_MINALIGN) > > - align = ARCH_SLAB_MINALIGN; > > + align = max_t(size_t, align, arch_slab_minalign()); > > max_t/min_t are nature's way of telling us "you screwed up the types". > > So what type _is_ slab alignment? size_t seems sensible, but the code > prefers unsigned int. So how about we stick with that? > > > This compiles. Still some max_t's in slob.c because I was too lazy to > go fix the type of ARCH_KMALLOC_MINALIGN. > > Shrug, I don't know if we can be bothered. You decide :) Hi Andrew, No strong opinions here. I'm happy with the fixup that you added to your tree on top of my patch. Peter