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 A0C56C77B7A for ; Fri, 19 May 2023 11:00:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 28718280001; Fri, 19 May 2023 07:00:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 20FCD900003; Fri, 19 May 2023 07:00:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 08A40280001; Fri, 19 May 2023 07:00:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id E5986900003 for ; Fri, 19 May 2023 07:00:54 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id ABDA91A0A20 for ; Fri, 19 May 2023 11:00:54 +0000 (UTC) X-FDA: 80806712028.21.504F748 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf23.hostedemail.com (Postfix) with ESMTP id 1EEA2140047 for ; Fri, 19 May 2023 11:00:46 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf23.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684494047; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cp0gHsGiyLG+C3XYFjbDXPVjP9H3KGZ6R8Jhgfe/X1o=; b=LW4CcboOSIFh4AmftxKsrYYCszBt/hHMLUPgT3Mv7Jhct8QzbyG/gcyCXaNy2llelDIygt QexkYcFP+thcNbPjCX2UjWmVFlKRkdhe8tad9QiAB+XYCLq3EbTko4HJMpLLUB2oPRJYiA 748ogfuOTVJG/p/UL1Xlo7yEdnyIK+g= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none); spf=pass (imf23.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684494047; a=rsa-sha256; cv=none; b=6INoJi80FBpofViDx3yGefxS/xEkWazTDmPgM+8VCxiEI0SMTDqJhap+dS3xWRygM4P3VU 5GVI+Qbod/kpNoVYNr9nG8INE9JqS4MqrQmvFgQo6VfllbtdNrNP8pjhnpeT/gCQg81RJd /dUzqlBUaAkKoroMeIQWSMCulx8aZiQ= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id CA61265693; Fri, 19 May 2023 11:00:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A5148C433EF; Fri, 19 May 2023 11:00:41 +0000 (UTC) Date: Fri, 19 May 2023 12:00:38 +0100 From: Catalin Marinas To: Linus Torvalds , Arnd Bergmann , Christoph Hellwig , Greg Kroah-Hartman Cc: Will Deacon , Marc Zyngier , Andrew Morton , Herbert Xu , Ard Biesheuvel , Isaac Manjarres , Saravana Kannan , Alasdair Kergon , Daniel Vetter , Joerg Roedel , Mark Brown , Mike Snitzer , "Rafael J. Wysocki" , Robin Murphy , linux-mm@kvack.org, iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4 14/15] mm: slab: Reduce the kmalloc() minimum alignment if DMA bouncing possible Message-ID: References: <20230518173403.1150549-1-catalin.marinas@arm.com> <20230518173403.1150549-15-catalin.marinas@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230518173403.1150549-15-catalin.marinas@arm.com> X-Rspamd-Queue-Id: 1EEA2140047 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: ryxpu7pqy1qq79ny816pp6kaddg9xaqq X-HE-Tag: 1684494046-61627 X-HE-Meta: U2FsdGVkX1/vOqLQvAFwqrrIdFoluzSE8QcD1c4FEmpFQmCOy+0pRbL3D3Y6mj9DmKwge2oIaSWcTqlzFzoz+tHGBU2lfzcjIfmjd/qwXxkOqncA/gq8zR4AFsMxdysQTpgkNpbz5zKEOXyJBAiBhhBZq+ZyUJMGhF6Qpn3FC2NO2ipRb8WReEbTOw/scw/XpvQGxSHbhL21VsoXQxsS4AmtyeigqfmoHWRZMlZTukS1pCC+1N/81v/+mlWqhDNwKPA8j+r2RSwYJqg3wY27srR92EOqnno6Xw01CvQNWi9pKJS0JvCSt9CgT3sa5mTj70eAUa3mGu0lDCPjwOGkFavkYS8oLVMHMsPVrppSE2ALHmERe6r+TG/u62igIf+uxtT5S3tlMX4ilizuVJ6qR9sYzj81oYB8C5W1BaTJI0Kskyh+XVv7OVYZ1SGXGOmvu5obzTfD8+UxkDDbvW8dJCknzLvztHFNOB/yv+y2ph84eqRuUrgLXqebDlJ+OH4L0nal0om/NWoBB069W/IIyrkz1fQ2G0FKFtC+LPkrYw9f7+4/Ml5CphxjqDgXXmIbFaeKtjgdXwiEYVD1tI1v6D+uowLt8o9nA5cK6GfWvjC+5JEgR156Ay/14sUpve+GvalmZouviA2jsBIICuyuTEY3W2J2Iwlklrm35fi1NnWFfpQ2KK0J4Yg/U2VpFgn0mQhSIjpNiEHkgeQWxNADGhUUA8EjbsqzSIsTk1EuTWURRjbIk3/Srhfm1T584USdgdYIlFFC+71eJFqYlD8EMLrPB68aKFl+tXUVECaVHccNU4zDytQt4JHokhZKKkpjIICh57YPYqfOeGqob7aDiCkgvjssrhHi6dyoj9NhAGCmDC/4e/G4yEiFsADLsUvwpONgqmiFYipvCC3XxTWptfgCo5YZkqijzQoeJsP52p9/acnr3oLUYx9kkLLafgpeisWm649sc0YeyDzEb22 1p0mp29M dXh9genylUWzaS85LmKcw2sBturSPhFgy9+7frPEGdBPJshxiySNa0cmEBsvGeXZHD+U+jfvzSof8bn1KhlxuCTjpfjI67w4NxmG6Z1UMcm6Yb/b59IIi6upfKTaNCAUsORyo3lFEr9EhuxLSh16WSYe6yFaoZK7MF2KyIJYrBekb5znlqNCXcrZiaAM9MIPqHrNw5B1ZA8DGr/Gv4Dg1LVhPtiingCBO7iHwIQa2D4dsTp3tib8DXqdYgOnhdMQBQaN16tj39DJjxSIexv2EkX/OJ7Affu8k6lHbeyySpds3qLkq3bjVMLWSggd2Z17+ZQJ62aY/JPj4lz8b54Bg9Stg9twr1bVhh5Q9hjxn7u1mZLgHOwHHv/Q+DOImaxmVhk+1sO+hXjoxbSlDg1OP9uax0YOtAaPjLcQKbuTBEdkq4m+5YgBfYgF1Rl2bVub2AqILvRF3iufQe/BjjJefZCW8gdrdLQlQMdnLNQZt8oAD6OYnAY7jZ8y3jF1L0FdI2VGPvl0fMSCMOtCqR6WtWJ8DtaVFpERIys7G 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 Thu, May 18, 2023 at 06:34:02PM +0100, Catalin Marinas wrote: > If an architecture opted in to DMA bouncing of unaligned kmalloc() > buffers (ARCH_WANT_KMALLOC_DMA_BOUNCE), reduce the minimum kmalloc() > cache alignment below cache-line size to ARCH_KMALLOC_MINALIGN. > > Signed-off-by: Catalin Marinas > Cc: Andrew Morton > Cc: Christoph Hellwig > Cc: Robin Murphy > --- > mm/slab_common.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/mm/slab_common.c b/mm/slab_common.c > index 7c6475847fdf..84e5a5e435d6 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -18,6 +18,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -865,7 +866,13 @@ void __init setup_kmalloc_cache_index_table(void) > > static unsigned int __kmalloc_minalign(void) > { > - return dma_get_cache_alignment(); > + int cache_align = dma_get_cache_alignment(); > + > + if (!IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC) || > + io_tlb_default_mem.nslabs == 0) > + return cache_align; > + > + return ARCH_KMALLOC_MINALIGN; > } This gives a build error if the architecture doesn't select SWIOTLB (I had this done properly in v3 but for some reason I rewrote it here). The fixup is to add #ifdefs. I'll fold this in for v5: diff --git a/mm/slab_common.c b/mm/slab_common.c index 84e5a5e435d6..fe46459a8b77 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -864,16 +864,19 @@ void __init setup_kmalloc_cache_index_table(void) } } +#ifdef CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC static unsigned int __kmalloc_minalign(void) { - int cache_align = dma_get_cache_alignment(); - - if (!IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC) || - io_tlb_default_mem.nslabs == 0) - return cache_align; - - return ARCH_KMALLOC_MINALIGN; + if (io_tlb_default_mem.nslabs) + return ARCH_KMALLOC_MINALIGN; + return dma_get_cache_alignment(); } +#else +static unsigned int __kmalloc_minalign(void) +{ + return dma_get_cache_alignment(); +} +#endif void __init new_kmalloc_cache(int idx, enum kmalloc_cache_type type, slab_flags_t flags) -- Catalin