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 93AACC7EE2E for ; Fri, 9 Jun 2023 13:57:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 126BE8E0005; Fri, 9 Jun 2023 09:57:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D6358E0002; Fri, 9 Jun 2023 09:57:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F06DC8E0005; Fri, 9 Jun 2023 09:57: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 E28198E0002 for ; Fri, 9 Jun 2023 09:57:55 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A34A5120272 for ; Fri, 9 Jun 2023 13:57:55 +0000 (UTC) X-FDA: 80883362910.03.0905990 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf19.hostedemail.com (Postfix) with ESMTP id E61D91A0008 for ; Fri, 9 Jun 2023 13:57:53 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1686319074; 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=KDafw2CXFG3OIKxllq+PjJDvhzOh69tBmZc27MNfeB0=; b=bJDRH/t2uZX4Abzq4TBr7RKrKOurs0DOT6WG0YFTwrmPYKipyWiHI4iUkbXLu3xl5zv//5 nRasFBZH8u37jXbrlt4q0yk9NBNCq1c8IBenyu8V+s+Y3QBdf6u6WZoOb0g90dt3ikN3nN Bysg1MFsoUnrUUYK/2J7dJkjIJDKiXU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686319074; a=rsa-sha256; cv=none; b=5F2I4f3RhnR2eAC6WF5iAPlHN84KkiOFi0lAGMOWEFQtYvbsk9UE0IkjNsTi/dsl18zWks UIjBCfkh/5HT9wWDANAzz/WVlpxkpewRMK+FFAL6jfUquUYIuDqVZkl56wT8OEBVgd1vKh dQk/Yg0Nci2Drnd4yi0Z0NTo8OlK3h0= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of cmarinas@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=cmarinas@kernel.org; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=arm.com (policy=none) 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 F35D564DD4; Fri, 9 Jun 2023 13:57:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A9423C433D2; Fri, 9 Jun 2023 13:57:48 +0000 (UTC) Date: Fri, 9 Jun 2023 14:57:45 +0100 From: Catalin Marinas To: Vlastimil Babka Cc: Linus Torvalds , Christoph Hellwig , Robin Murphy , Arnd Bergmann , Greg Kroah-Hartman , 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" , Jonathan Cameron , linux-mm@kvack.org, iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v6 01/17] mm/slab: Decouple ARCH_KMALLOC_MINALIGN from ARCH_DMA_MINALIGN Message-ID: References: <20230531154836.1366225-1-catalin.marinas@arm.com> <20230531154836.1366225-2-catalin.marinas@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: rqmkeu5kpd8911ah3fx7kmjdepxqii7s X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: E61D91A0008 X-Rspam-User: X-HE-Tag: 1686319073-405500 X-HE-Meta: U2FsdGVkX1/iAendJcWU7VIwjyQ6yBgZhnHgghNLfiK2y5g2aIpBqcvPy9KzptPpvj4Wx92EMa4P8NDFhsK/0MMlvRpVmZ3jP/sttE/UZXMzegb+9OZRQ1Ke6vq3B9gZIndTaj2DtIq5UYO/qFEIkt1nLM5BjBjBYgM+e+v0TJCXcltzICJF+vg1wvTzDn5DUo28ExtSB4KhbmEP/DMGulwNNK4bT9dqudaW10AIdHnm+XnZ7TDmCe0v3iXcqP/iGLzsDhusDPmZySZZMW4YKjHxim6wbwQFmDu+7KNugIyZskPB9CmZroD7Ew7HZgxKTfdNW3EcSL8+BEkfzY+x/49qy9JP8dALVSi2YAmKG4GxOIkgyvS8+o1R3/lVhhH3s3tzofpwqf4E+a+Y4jInv5zRRiOgPX1z9pYaSzcwe7MJ0qXK6tUqMHEpkKPlxFKJCFttPL7HEV6adMEQN/hrhSiTpo8YjATUvCDrgH78G4HZHNwkoO5KwiNDJ1MzX8mNP+ISeS5cS1DsR/v3LfRTIL115EYIqbGnrbHssjMPZlOWrhlWvgOXjwmO5SKzkEiyNlp6gCUblxpzpX3IOq4Yuw8BkbiBZjeG5Kk2kfnJNNusfe2iSgb/qm4HUEVlRaBgJ493vB+snAcNwuqYMyCmGwwRpO/KcEHxtooddLPHejMCHQJ4/Hl94g6EDLBWnwa8cvKCjI0oyQlFjAqz1Ton4jxfG+1NgUdHkxAGRQm1RspgR7gIZ/l/xSW0ZP82PqVCEkvZvL97bjMr7PbRYfFQ6tVN07iyWeM+aNj1hG4JXkDm+0mtvsC2ZF3054c7YDsXi+LEM1oAiXRo+eQ7uQdFRaMZD9ZFJdmep+4G5F4kpauMPYSIkI6Xy7x2xkUt5RVDMk0aeyNxQ3m8J+LhqCkWEkUN9girfZNUy1cqSWZ+ZxxKMQ3Wpt+mCdoVtMksHrMFsF9bDv7J+WUS6nA1kfL /QFj5J4i LRoNv135bLlqlTAN1ZNFftwuss4tkS7Muchk9pOq1UjfuBFGgcPLuaDzzUZw4wtglhqrIzYBSawPdC7HFbmnpYqnoUNMM/CCStnpmP0OJd+WanDP+vzsakZR+65Byc3wXKHAMhgMB9jYjEXOBU5Hmi3vlV/Jm86i0n6yIbmbgv9oO7wfWGdF76Yztc5WxkTCNY6n/wyKYNOJS+ETaBdYbhJd/wQoPjGSQGPcgX6wcpCqI+mG9437DsN0nvj2Y8MAdjuPke9vFf6CoUcud2nfGwyRUqKqsG6WBGdInijUXAGQ1ewhpk8SFDxPzNfoc9tD/7Kt0A0v33kLWo/f+QE22w9w+V/61HmQ8zSJIaVP1dfBetIzJdw8zMfA8BWkhFJmG3AC+Q3VwMmdnfPIagIdpodxZr72dWlfHDYkaeob+YJOuLUMWJuvTtqhZF+n4THJgf/c1Z4hv/My33PUixNowpl0W4Q== 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 Fri, Jun 09, 2023 at 02:44:01PM +0100, Catalin Marinas wrote: > On Fri, Jun 09, 2023 at 02:32:57PM +0200, Vlastimil Babka wrote: > > On 5/31/23 17:48, Catalin Marinas wrote: > > > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > > > index 0ee20b764000..3288a1339271 100644 > > > --- a/include/linux/dma-mapping.h > > > +++ b/include/linux/dma-mapping.h > > > @@ -545,7 +545,7 @@ static inline int dma_set_min_align_mask(struct device *dev, > > > > > > static inline int dma_get_cache_alignment(void) > > > { > > > -#ifdef ARCH_DMA_MINALIGN > > > +#ifdef ARCH_HAS_DMA_MINALIGN > > > return ARCH_DMA_MINALIGN; > > > #endif > > > return 1; > > > diff --git a/include/linux/slab.h b/include/linux/slab.h > > > index 6b3e155b70bf..50dcf9cfbf62 100644 > > > --- a/include/linux/slab.h > > > +++ b/include/linux/slab.h > > > @@ -235,12 +235,20 @@ void kmem_dump_obj(void *object); > > > * alignment larger than the alignment of a 64-bit integer. > > > * Setting ARCH_DMA_MINALIGN in arch headers allows that. > > > */ > > > -#if defined(ARCH_DMA_MINALIGN) && ARCH_DMA_MINALIGN > 8 > > > +#ifdef ARCH_DMA_MINALIGN > > > +#define ARCH_HAS_DMA_MINALIGN > > > +#if ARCH_DMA_MINALIGN > 8 && !defined(ARCH_KMALLOC_MINALIGN) > > > #define ARCH_KMALLOC_MINALIGN ARCH_DMA_MINALIGN > > > -#define KMALLOC_MIN_SIZE ARCH_DMA_MINALIGN > > > -#define KMALLOC_SHIFT_LOW ilog2(ARCH_DMA_MINALIGN) > > > +#endif > > > #else > > > +#define ARCH_DMA_MINALIGN __alignof__(unsigned long long) > > > +#endif > > > > It seems weird to make slab.h responsible for this part, especially for > > #define ARCH_HAS_DMA_MINALIGN, which dma-mapping.h consumes. Maybe it would > > be difficult to do differently due to some dependency hell, but minimally I > > don't see dma-mapping.h including slab.h so the result is > > include-order-dependent? Maybe it's included transitively, but then it's > > fragile and would be better to do explicitly? > > True, there's a risk that it doesn't get included with some future > header refactoring. > > What about moving ARCH_DMA_MINALIGN to linux/cache.h? Alternatively, I > could create a new linux/dma-minalign.h file but I feel since this is > about caches, having it in cache.h makes more sense. asm/cache.h is also > where most archs define the constant (apart from mips, sh, microblaze). Something like this (still compiling): diff --git a/include/linux/cache.h b/include/linux/cache.h index 5da1bbd96154..9900d20b76c2 100644 --- a/include/linux/cache.h +++ b/include/linux/cache.h @@ -98,4 +98,10 @@ struct cacheline_padding { #define CACHELINE_PADDING(name) #endif +#ifdef ARCH_DMA_MINALIGN +#define ARCH_HAS_DMA_MINALIGN +#else +#define ARCH_DMA_MINALIGN __alignof__(unsigned long long) +#endif + #endif /* __LINUX_CACHE_H */ diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index c41019289223..e13050eb9777 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -2,6 +2,7 @@ #ifndef _LINUX_DMA_MAPPING_H #define _LINUX_DMA_MAPPING_H +#include #include #include #include diff --git a/include/linux/slab.h b/include/linux/slab.h index 50dcf9cfbf62..9bdfb042d93d 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -12,6 +12,7 @@ #ifndef _LINUX_SLAB_H #define _LINUX_SLAB_H +#include #include #include #include @@ -235,14 +236,10 @@ void kmem_dump_obj(void *object); * alignment larger than the alignment of a 64-bit integer. * Setting ARCH_DMA_MINALIGN in arch headers allows that. */ -#ifdef ARCH_DMA_MINALIGN -#define ARCH_HAS_DMA_MINALIGN -#if ARCH_DMA_MINALIGN > 8 && !defined(ARCH_KMALLOC_MINALIGN) +#if defined(ARCH_HAS_DMA_MINALIGN) && ARCH_DMA_MINALIGN > 8 && \ + !defined(ARCH_KMALLOC_MINALIGN) #define ARCH_KMALLOC_MINALIGN ARCH_DMA_MINALIGN #endif -#else -#define ARCH_DMA_MINALIGN __alignof__(unsigned long long) -#endif #ifndef ARCH_KMALLOC_MINALIGN #define ARCH_KMALLOC_MINALIGN __alignof__(unsigned long long) -- Catalin