From patchwork Tue Mar 12 09:41:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589715 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 9EC5CC54E68 for ; Tue, 12 Mar 2024 09:41:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1F6CC8D0027; Tue, 12 Mar 2024 05:41:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0E4838D000D; Tue, 12 Mar 2024 05:41:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E9FE58D0027; Tue, 12 Mar 2024 05:41:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D428B8D000D for ; Tue, 12 Mar 2024 05:41:52 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id A3BAFC105C for ; Tue, 12 Mar 2024 09:41:52 +0000 (UTC) X-FDA: 81887895264.29.1F2D395 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf16.hostedemail.com (Postfix) with ESMTP id A6AE3180006 for ; Tue, 12 Mar 2024 09:41:50 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=WG4AfD46; spf=pass (imf16.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236510; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0dV8qz5b7vjFxc+nJLBNBJ+56OSa6LDyqLZDY8SGrTc=; b=Mbv8N/Rvs7OE8YLqUZSvK2ee1r57HtnQE0JhDSmAxjUdPksnZRJAuCTF6mg4MHlX8isabb 7CCkJOsmxIrbbOxZC8x/NRakY0y8xvJZEvvpV76NRQh4oZpChmNH52obvOG4qIBYh5qMpu UR4xZRHb5v/AEYQV8qZtDjoClgYmo1Q= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236510; a=rsa-sha256; cv=none; b=Eqg+sVyYtYXWc5NArgKgk6T7U9dnwWT/8w472IPUDjAtphXzMzlqcmDR+5HI4tKGZMMu3+ veVQm0BewF7u8piJKrvQNkiNOHJiN237JxouQw7QKFM2VxtsYqH0e8KFmp2dO412BiBqQO FtpPIDdVmavZuRMrH0Evn2FuPTm8Vqk= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=WG4AfD46; spf=pass (imf16.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-a44628725e3so596008566b.0 for ; Tue, 12 Mar 2024 02:41:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236509; x=1710841309; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0dV8qz5b7vjFxc+nJLBNBJ+56OSa6LDyqLZDY8SGrTc=; b=WG4AfD46CPhX7XaMgetLXVBNCed+sdsRzJsU5V+dpCyFAlSUXWjnkmB1huas61C2ZR z97cHIZn1db9anNE07mE16nWYZhJG3VMIChSEaIEnO4WOxYGXfajOC78iQPGxXMdGH+Z ubL3IZqHHAdXx0ka5EVCK2EiPPHv9XO/+KCbOuHDlC0up1w8+pQTjEVPtVaQHD6hrTv8 aDuUauw25wLZE5I1kI5kOCKv8nKjIM0SN27LhVGutIimbqqwakso8rwXcRn+xz7c9Caf 3OuStMTuJCrTRnblh1kFnsMRH+MpsvbfWbv0RZiODTlTe2RPIn8UKq9pBc4ujKIYzmaB OdWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236509; x=1710841309; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0dV8qz5b7vjFxc+nJLBNBJ+56OSa6LDyqLZDY8SGrTc=; b=T7RwryiSfgyYPiDj7lutui0eotGcbEavsnrEYURe+FJ0WYflaeu9UrQsGvAwxhKXS7 GcnpEi+r3M9sOp6T4JntUHJQufiIGjLoBDPZsIVDPKlmkbtV0sw3e/+1oxZG6B6zh6wl hjfelEL3yK4GIpbidcj7D7+xkD4HGhj0oZG6pkXRElygCVWWrsTjzeMHAFbUE6ImyJdL GCg/jIrVhzvCdLoAEou4EaAqY+byJSVLUpLL1EVk9bDAJh5nXx1/JtkPNzrRupGGXKr/ 5aDK5Ee1fbX9vcNHm1SyvUbkkSgS1FqLA2HpRYG9dwWG0+v/yN4v3Z1k4uSTTT3TSate Jdrg== X-Forwarded-Encrypted: i=1; AJvYcCXLOGFrYKaXVTEEAxEZ25ZbG7OXcZEBLn7OGWwZ8zU96Dwfl3m+F3+tOHcg+/65NCzGSRWuMObSQhBl49O1FimBt6s= X-Gm-Message-State: AOJu0YyEhVvjbmXPJ+iyphBngeJpz9EmCveqTyuT6FHZcM2O0wbgbmgd IQXbyuM+Wzt0PVh/FDtaEOiCNWcfZ+hkQYEoa65O68NmvkfNoSe+WvZrT9yKcvU= X-Google-Smtp-Source: AGHT+IGrxpm0eSCROeFSVIEIba08X0zlEkLFpXxq0Se/EN1b10t9i0f+FR5p5s277YyLY4fp4vl2zw== X-Received: by 2002:a17:907:a809:b0:a46:1a14:356a with SMTP id vo9-20020a170907a80900b00a461a14356amr4291481ejc.53.1710236509046; Tue, 12 Mar 2024 02:41:49 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:48 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 01/15] drivers: add missing includes on linux/mm.h (and others) Date: Tue, 12 Mar 2024 10:41:19 +0100 Message-Id: <20240312094133.2084996-2-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Stat-Signature: o341ntgihtojn6pbiamqogqxt8w78k67 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: A6AE3180006 X-Rspam-User: X-HE-Tag: 1710236510-766530 X-HE-Meta: U2FsdGVkX1+Z7L82Ww1hPKzOz0tIGnx2eNvdaBLAr+iWSn0RuVH2DrbBufrEPAbj6QytwEf57k547iwCWOpDFd7wJ59QzGdObw8TwhGBi9c+kgeaN5hFW01NUhsKVdgYuH9q3Jjtcg7gZCrjqzO/fSGISMExCz29a+R3slElvBuIex0ilRsV/PLuSR/2GdUZM3FppQ0v/pCh+LJsuO7ZrVHsh4iTC6ACW/V9Uf2b31PHFA/UZraJ6L0EmelDavM2KbXJGuv40sBtHuNXq9+pbuNvkOl6UqHD8tQWmwzWFLq6pvLTVN5YK2RAx7ukh5IeMY+vjIBh4ynKiCCE/q32B3uEMiLCCQC+I2RCjoMbVtPZCtoAga4XSFF6/Pa1Hahav+UvR6OYEeYNxXM1vwKQQGFYhUfw+F59v+ZzntTgjZ8tgzNyjSTn8ZUaWcBcstqPfh07AfOuWOCFjm4I4HKc39rnaDbaLT8isj8LzPNqDfpQyhP0VbeOOjddQh/qVqXBrLkZ8ZM6iAWzbSHTj948coupUVoVPBjTu9R2Mg75Ah0F5GHEhv8WtEDEEkxce0Bve0ZgEXkanI58HSETIk2OW/4Em+R+TLUGSP+MNTcLasSnfO8e/VwvvBCPUDHNrr06ZcAv2jNy5TtEL0hgxWYIBc6t6jFEChDn9B1hD5lWbof+8FE4xoyhgLFPmOutRFi3sK/XBDdab/I68rBvpISSurB4gNQ4f6zrQygPgVTTzZq1vVKbvpHP4WXtqoW0dhGS5Cz64ZkHUso+Cj8RZW8lnZnfzcu8j0uNrNatz9RW9gS/FAOv1BHgY5kRSWqFXPWhmdtagQQvJVmfor/M5WXygNtjeTUw2AD3GmZFUa611KMP+KXGJ0BJuji8XF19VQCUb3FGyBiFdSX9jonX+uyAn8Tge+RJc3vRI1HkDQEQSbEgA4hnyICKtG9K5azpBaTS2vIeP5uZsd/jMacwywd 7pM1tP+F M9uPR0mE1HTua9nbkAyOmfcFBzoKKwVZbarUH5Cqtzaq23H2YanNQlMGJfE3vcbkD7Aiawgq5zGXANypOySMHF/2cuwfwLu+JeC1Z/T1J7Gd/lIAbBtZDsIknz/wXHw134H6IknvNhtHzutmRg6UoQOunF0uidAcd1jGBeBdDegfhM9gRMb5rzdv4O8qmFry1NDTSSUhAsnzM/qCVfJ7xZkNB8hIbZRIL2Rafw4K8lDZh+OlAuWnultqwUdJIHLQbdpw5dU2bYh3MzamF4DfCkhGXEevoEU267L4NJUR5RBs6f17YmrM1W+7kh8slRY9T9kP+l7d8klnKeRos3jYScrFnpDP9Yh5wtxrTEWN3FDSjsDKRMmGRjNSoHw== 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: List-Subscribe: List-Unsubscribe: After developing the other patches in this series, I had lots of build failures because "#include " was missing. This patch fixes those build failures by adding the missing "#include" lines. To allow bisects, it is ordered before the others. Signed-off-by: Max Kellermann --- arch/arm/mm/iomap.c | 3 +++ drivers/comedi/comedi_buf.c | 1 + drivers/crypto/intel/qat/qat_common/adf_gen4_pm_debugfs.c | 1 + drivers/dma/bcm2835-dma.c | 1 + drivers/dma/dma-axi-dmac.c | 1 + drivers/dma/sh/rcar-dmac.c | 1 + drivers/firmware/qcom/qcom_scm-legacy.c | 1 + drivers/firmware/qcom/qcom_scm-smc.c | 1 + drivers/firmware/raspberrypi.c | 1 + drivers/iio/buffer/industrialio-buffer-dma.c | 1 + drivers/iommu/iommufd/ioas.c | 2 ++ drivers/iommu/iommufd/selftest.c | 1 + drivers/media/platform/mediatek/vpu/mtk_vpu.c | 1 + drivers/media/platform/ti/omap/omap_voutlib.c | 1 + drivers/misc/bcm-vk/bcm_vk_dev.c | 1 + drivers/misc/fastrpc.c | 1 + drivers/misc/genwqe/card_dev.c | 1 + drivers/misc/uacce/uacce.c | 1 + drivers/mtd/spi-nor/core.h | 2 ++ drivers/pci/p2pdma.c | 1 + drivers/pci/pci.c | 1 + drivers/remoteproc/remoteproc_core.c | 1 + drivers/soc/qcom/rmtfs_mem.c | 1 + drivers/spi/spi-aspeed-smc.c | 1 + drivers/spi/spi-bcm2835.c | 2 ++ drivers/spi/spi-intel.c | 1 + drivers/virtio/virtio_ring.c | 1 + include/linux/huge_mm.h | 2 ++ include/linux/iommu.h | 1 + include/linux/nvme-keyring.h | 2 ++ include/linux/page-flags.h | 3 +++ include/linux/scatterlist.h | 6 ++++++ include/scsi/scsicam.h | 3 +++ kernel/dma/ops_helpers.c | 1 + kernel/dma/remap.c | 1 + mm/dmapool.c | 1 + 36 files changed, 52 insertions(+) diff --git a/arch/arm/mm/iomap.c b/arch/arm/mm/iomap.c index 415d0a454237..9873d8156908 100644 --- a/arch/arm/mm/iomap.c +++ b/arch/arm/mm/iomap.c @@ -29,6 +29,9 @@ EXPORT_SYMBOL(ioport_unmap); #endif #ifdef CONFIG_PCI + +#include // for VMALLOC_* + unsigned long pcibios_min_io = 0x1000; EXPORT_SYMBOL(pcibios_min_io); diff --git a/drivers/comedi/comedi_buf.c b/drivers/comedi/comedi_buf.c index 393966c09740..23b07ebc97ca 100644 --- a/drivers/comedi/comedi_buf.c +++ b/drivers/comedi/comedi_buf.c @@ -10,6 +10,7 @@ #include #include #include +#include // for PAGE_KERNEL* #include "comedi_internal.h" #ifdef PAGE_KERNEL_NOCACHE diff --git a/drivers/crypto/intel/qat/qat_common/adf_gen4_pm_debugfs.c b/drivers/crypto/intel/qat/qat_common/adf_gen4_pm_debugfs.c index ee0b5079de3e..c9b2787baac7 100644 --- a/drivers/crypto/intel/qat/qat_common/adf_gen4_pm_debugfs.c +++ b/drivers/crypto/intel/qat/qat_common/adf_gen4_pm_debugfs.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* Copyright(c) 2023 Intel Corporation */ #include +#include // for simple_read_from_buffer() #include #include #include diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c index 9d74fe97452e..1d971999fd39 100644 --- a/drivers/dma/bcm2835-dma.c +++ b/drivers/dma/bcm2835-dma.c @@ -31,6 +31,7 @@ #include #include #include +#include // for ZERO_PAGE() #include "virt-dma.h" diff --git a/drivers/dma/dma-axi-dmac.c b/drivers/dma/dma-axi-dmac.c index 4e339c04fc1e..0c98bf0e4b5d 100644 --- a/drivers/dma/dma-axi-dmac.c +++ b/drivers/dma/dma-axi-dmac.c @@ -15,6 +15,7 @@ #include #include #include +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c index 40482cb73d79..784da367665c 100644 --- a/drivers/dma/sh/rcar-dmac.c +++ b/drivers/dma/sh/rcar-dmac.c @@ -12,6 +12,7 @@ #include #include #include +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/firmware/qcom/qcom_scm-legacy.c b/drivers/firmware/qcom/qcom_scm-legacy.c index 029e6d117cb8..01e082c7163c 100644 --- a/drivers/firmware/qcom/qcom_scm-legacy.c +++ b/drivers/firmware/qcom/qcom_scm-legacy.c @@ -5,6 +5,7 @@ #include #include +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/firmware/qcom/qcom_scm-smc.c b/drivers/firmware/qcom/qcom_scm-smc.c index 16cf88acfa8e..a5c74d8996fe 100644 --- a/drivers/firmware/qcom/qcom_scm-smc.c +++ b/drivers/firmware/qcom/qcom_scm-smc.c @@ -5,6 +5,7 @@ #include #include #include +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c index 322aada20f74..beef5c4afef2 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -9,6 +9,7 @@ #include #include #include +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/iio/buffer/industrialio-buffer-dma.c b/drivers/iio/buffer/industrialio-buffer-dma.c index 5610ba67925e..b3ce8c4b101a 100644 --- a/drivers/iio/buffer/industrialio-buffer-dma.c +++ b/drivers/iio/buffer/industrialio-buffer-dma.c @@ -6,6 +6,7 @@ #include #include +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/iommu/iommufd/ioas.c b/drivers/iommu/iommufd/ioas.c index 742248276548..40c4942406cd 100644 --- a/drivers/iommu/iommufd/ioas.c +++ b/drivers/iommu/iommufd/ioas.c @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include "io_pagetable.h" diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c index 7a2199470f31..bcecf44681fe 100644 --- a/drivers/iommu/iommufd/selftest.c +++ b/drivers/iommu/iommufd/selftest.c @@ -5,6 +5,7 @@ */ #include #include +#include // for GUP_PIN_COUNTING_BIAS #include #include #include diff --git a/drivers/media/platform/mediatek/vpu/mtk_vpu.c b/drivers/media/platform/mediatek/vpu/mtk_vpu.c index 724ae7c2ab3b..f248e4194b49 100644 --- a/drivers/media/platform/mediatek/vpu/mtk_vpu.c +++ b/drivers/media/platform/mediatek/vpu/mtk_vpu.c @@ -8,6 +8,7 @@ #include #include #include +#include // for totalram_pages() #include #include #include diff --git a/drivers/media/platform/ti/omap/omap_voutlib.c b/drivers/media/platform/ti/omap/omap_voutlib.c index 0ac46458e41c..3b653b49cc48 100644 --- a/drivers/media/platform/ti/omap/omap_voutlib.c +++ b/drivers/media/platform/ti/omap/omap_voutlib.c @@ -18,6 +18,7 @@ * */ +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/misc/bcm-vk/bcm_vk_dev.c b/drivers/misc/bcm-vk/bcm_vk_dev.c index d4a96137728d..c5a39a8189bf 100644 --- a/drivers/misc/bcm-vk/bcm_vk_dev.c +++ b/drivers/misc/bcm-vk/bcm_vk_dev.c @@ -11,6 +11,7 @@ #include #include #include +#include // for io_remap_pfn_range() #include #include #include diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 4c67e2c5a82e..e0549b4b1c33 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -10,6 +10,7 @@ #include #include #include +#include // for find_vma() #include #include #include diff --git a/drivers/misc/genwqe/card_dev.c b/drivers/misc/genwqe/card_dev.c index 4441aca2280a..ce3acb938ca6 100644 --- a/drivers/misc/genwqe/card_dev.c +++ b/drivers/misc/genwqe/card_dev.c @@ -17,6 +17,7 @@ #include #include +#include // for struct vm_operations_struct #include #include #include diff --git a/drivers/misc/uacce/uacce.c b/drivers/misc/uacce/uacce.c index bdc2e6fda782..af815b8a718e 100644 --- a/drivers/misc/uacce/uacce.c +++ b/drivers/misc/uacce/uacce.c @@ -2,6 +2,7 @@ #include #include #include +#include // for struct vm_operations_struct #include #include #include diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h index 442786685515..c113ed8e8751 100644 --- a/drivers/mtd/spi-nor/core.h +++ b/drivers/mtd/spi-nor/core.h @@ -9,6 +9,8 @@ #include "sfdp.h" +#include // for SZ_* + #define SPI_NOR_MAX_ID_LEN 6 /* * 256 bytes is a sane default for most older flashes. Newer flashes will diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index 4f47a13cb500..ef37ea6c09fc 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -16,6 +16,7 @@ #include #include #include +#include // for VM_MAYSHARE #include #include #include diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index e5f243dd4288..75e05c3518f4 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -25,6 +25,7 @@ #include #include #include +#include // for pgprot_device() #include #include #include diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c index f276956f2c5c..938220fe29f5 100644 --- a/drivers/remoteproc/remoteproc_core.c +++ b/drivers/remoteproc/remoteproc_core.c @@ -18,6 +18,7 @@ #include #include +#include // for PAGE_ALIGN() #include #include #include diff --git a/drivers/soc/qcom/rmtfs_mem.c b/drivers/soc/qcom/rmtfs_mem.c index df850d073102..15c2f6e5eaff 100644 --- a/drivers/soc/qcom/rmtfs_mem.c +++ b/drivers/soc/qcom/rmtfs_mem.c @@ -6,6 +6,7 @@ #include #include #include +#include // for remap_pfn_range() #include #include #include diff --git a/drivers/spi/spi-aspeed-smc.c b/drivers/spi/spi-aspeed-smc.c index bbd417c55e7f..e45f64761e5e 100644 --- a/drivers/spi/spi-aspeed-smc.c +++ b/drivers/spi/spi-aspeed-smc.c @@ -11,6 +11,7 @@ #include #include #include +#include // for SZ_* #include #include diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c index e1b9b1235787..d8ed5575a9c6 100644 --- a/drivers/spi/spi-bcm2835.c +++ b/drivers/spi/spi-bcm2835.c @@ -33,6 +33,8 @@ #include #include +#include // for ZERO_PAGE() + /* SPI register offsets */ #define BCM2835_SPI_CS 0x00 #define BCM2835_SPI_FIFO 0x04 diff --git a/drivers/spi/spi-intel.c b/drivers/spi/spi-intel.c index 3e5dcf2b3c8a..cf8e4f1c4d93 100644 --- a/drivers/spi/spi-intel.c +++ b/drivers/spi/spi-intel.c @@ -8,6 +8,7 @@ #include #include +#include // for SZ_* #include #include diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 6f7e5010a673..48f694d1bc46 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -12,6 +12,7 @@ #include #include #include +#include // for PAGE_ALIGN() #include #include diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index de0c89105076..55b94db3bd5c 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -7,6 +7,8 @@ #include /* only for vma_is_dax() */ +#include // for pmd_t + vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf); int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 2e925b5eba53..4e72c2429342 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -14,6 +14,7 @@ #include #include #include +#include // for copy_struct_from_user() #define IOMMU_READ (1 << 0) #define IOMMU_WRITE (1 << 1) diff --git a/include/linux/nvme-keyring.h b/include/linux/nvme-keyring.h index e10333d78dbb..9e033850b967 100644 --- a/include/linux/nvme-keyring.h +++ b/include/linux/nvme-keyring.h @@ -6,6 +6,8 @@ #ifndef _NVME_KEYRING_H #define _NVME_KEYRING_H +#include + #if IS_ENABLED(CONFIG_NVME_KEYRING) key_serial_t nvme_tls_psk_default(struct key *keyring, diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 652d77805e99..c7243b85328b 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h @@ -12,6 +12,9 @@ #ifndef __GENERATING_BOUNDS_H #include #include +#ifdef CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP +#include // for DECLARE_STATIC_KEY_FALSE +#endif #endif /* !__GENERATING_BOUNDS_H */ /* diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 77df3d7b18a6..0516e64dc03e 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -8,6 +8,12 @@ #include #include +#ifdef CONFIG_UML +#include // for virt_to_page(), page_to_phys() +#else +#include // for virt_to_page(), page_to_phys() +#endif + struct scatterlist { unsigned long page_link; unsigned int offset; diff --git a/include/scsi/scsicam.h b/include/scsi/scsicam.h index 08edd603e521..6eb9fb7a57d0 100644 --- a/include/scsi/scsicam.h +++ b/include/scsi/scsicam.h @@ -13,6 +13,9 @@ #ifndef SCSICAM_H #define SCSICAM_H + +#include // for sector_t + int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip); bool scsi_partsize(struct block_device *bdev, sector_t capacity, int geom[3]); unsigned char *scsi_bios_ptable(struct block_device *bdev); diff --git a/kernel/dma/ops_helpers.c b/kernel/dma/ops_helpers.c index af4a6ef48ce0..641363b13bb9 100644 --- a/kernel/dma/ops_helpers.c +++ b/kernel/dma/ops_helpers.c @@ -4,6 +4,7 @@ * the allocated memory contains normal pages in the direct kernel mapping. */ #include +#include // for PAGE_ALIGN() static struct page *dma_common_vaddr_to_page(void *cpu_addr) { diff --git a/kernel/dma/remap.c b/kernel/dma/remap.c index 27596f3b4aef..87b3c874d370 100644 --- a/kernel/dma/remap.c +++ b/kernel/dma/remap.c @@ -3,6 +3,7 @@ * Copyright (c) 2014 The Linux Foundation */ #include +#include // for vmap(), PAGE_ALIGN() #include #include diff --git a/mm/dmapool.c b/mm/dmapool.c index f0bfc6c490f4..b8e23fdc81d7 100644 --- a/mm/dmapool.c +++ b/mm/dmapool.c @@ -25,6 +25,7 @@ #include #include #include +#include // for want_init_on_alloc() #include #include #include From patchwork Tue Mar 12 09:41:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589714 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 69464C54E58 for ; Tue, 12 Mar 2024 09:41:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3F6518D0028; Tue, 12 Mar 2024 05:41:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A4BE8D000D; Tue, 12 Mar 2024 05:41:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1A7A58D0028; Tue, 12 Mar 2024 05:41:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 0A6278D000D for ; Tue, 12 Mar 2024 05:41:54 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id DBCB3A1170 for ; Tue, 12 Mar 2024 09:41:53 +0000 (UTC) X-FDA: 81887895306.23.2E97241 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by imf29.hostedemail.com (Postfix) with ESMTP id 03C06120007 for ; Tue, 12 Mar 2024 09:41:51 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=I+pnJyOj; spf=pass (imf29.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.51 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236512; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BL1pmIo7s1MX4N9LU8kIbt0i/wU5mZK2rTJkOzRk4Zc=; b=W8ONJw+/IoBHKUvooAecw3yHv3gaRavpDjqLtDYxRNxFPc21A1iCXC0z5GMSF6o5xmumN3 EfPX6DkE2ydDVJPK7M+6ZE24Piu4CeqPC59kijxesL757nAQHY65UjCzpamMOvLKGdbU/q 3xG9XT7x3ZRg0RF+Nk2CU/NDXm6uocU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236512; a=rsa-sha256; cv=none; b=jhRqAI99bNs1ZF1rMyIvsZqNEmRIi4BU4sIYlcbS5XOeIfB8RMBUeq54D/QGGN8BA/+4iP sV5Zp7FQsjf2kUMStSOS1RrYeDfQZLfrRQ7hG1i2jdNilOQh+anR0b6/elxrRSNmPiOlAT n+d1GZpTBEzA1f7JUspTA7AQDa0uEGk= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=I+pnJyOj; spf=pass (imf29.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.51 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-56878bb1abdso336511a12.1 for ; Tue, 12 Mar 2024 02:41:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236510; x=1710841310; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BL1pmIo7s1MX4N9LU8kIbt0i/wU5mZK2rTJkOzRk4Zc=; b=I+pnJyOjH7S3GM5OoHIh9a5V0HGkzu4StjiXI3Lx6GRFws3nZxCQk12WMMewY9Pi9M cZYURXhp0UnAp5402x6vCriJllFoPRbfTlp13QdI5mlvBD1lx5U7k0ietyO5xm2QqMbR jsBSc+Jfk012MsBzJ1KygX5eTA6zuevG/tXuNfivN+PcIGqh9GTP//pwuKghRvLC1JBa OagGZEvGcNYRo8PBLlEKJylH5tAzU7JHedgTja6Dgk4H5OQPJ/povTM918yvM5EaYcdh UUdFp/XRqg4rb9WAdLMyHbdEAqGe+8Cl6hCZ4ORMCZ0M0I+l+oMlBnE2/Bz+WV0TyS2N 9p7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236510; x=1710841310; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BL1pmIo7s1MX4N9LU8kIbt0i/wU5mZK2rTJkOzRk4Zc=; b=nlAF1B0NduNbOYEV7Qzssyx8krGEpalLYWGOI2XZVfITUsgAZUwH44jSmLlPVvefez 5M+3bhTcNkBmSXR+0qz93IB4NoRQqYsSQe78JNmiecU+LKEafDncHXRbd2S6/S16Blng 0omNe/N7YANbbGFIOClhqqSfrIJmVlBXiKkCUHQljyScx1Vup5Ziae9cf7pioWMBiNJ6 RiSu/LwDwm1dgsP62dvUMSpS+i+mxG1vkauKQqwV0oQZ6HOFAbQWPc7AnOeesjOcXZrC 65t6smARKk1Q3RVAZP//7RnxmQluKFzsAisEcDJeB0J0uDPPYNjVe8LBW8JTpxg9vaxV ySbg== X-Forwarded-Encrypted: i=1; AJvYcCViQVoh5sivyxm0nweDI8OI4znwM+vsY998f8Rb4bOaMxUSROwJZIDun43jQ6KKvfAsg22q5zbCcwwa8FlJ3SAGwF8= X-Gm-Message-State: AOJu0YwWM6eBKJn4wh25sENmL8WhIYkBul7Hv1wCMxqHxzP/GXchDnlX hga8iGbbh77pOLhpErwyO4ao1usqw3kCZhqO/JSm5u7Vl6v0b+zD/awmnx6Bevk= X-Google-Smtp-Source: AGHT+IFSzWKZX27uBwzNvn0on/otGZNxxkMdnvFDf8T+nQ/1Mylgu1PLZ/eWjNO9eX/pEk0r12IZeA== X-Received: by 2002:a17:907:d049:b0:a46:1e17:fbe6 with SMTP id vb9-20020a170907d04900b00a461e17fbe6mr970350ejc.9.1710236510553; Tue, 12 Mar 2024 02:41:50 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:49 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 02/15] include/drm/drm_gem.h: add poll_table_struct forward declaration Date: Tue, 12 Mar 2024 10:41:20 +0100 Message-Id: <20240312094133.2084996-3-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Stat-Signature: 7azgd8sgt44eqco7eit8gqf17q3jgu37 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 03C06120007 X-Rspam-User: X-HE-Tag: 1710236511-557020 X-HE-Meta: U2FsdGVkX1+pxGFp4YGmaPwqNK2EHbw/XNSEr4MSj8mKlK2Okw25X9wk0AjRftT9Bw9cSyJpOzylU5exHrmxmeQiNsNXCmb/vSX2TletVyzaGQ0GmIaUjXF0PrDKK4jKXNgKDAIRjI+eUg7auhIC4/Vbb5XwBajSVmN7sFTzs/wCZvQaX3NV/NwOUIrnXf+PVUBJ7RUnyt+LyYJLQRAH+uhfG7hwBEyBUbHnLY6jZ51Y+f+s9aXQyU76JgpH/bA2rLukn0teMypMeW/qi+zG+3i0Gf2cIYXrdOnU/szJeiMvwHTPeQueI4xaoMAIhxMim5bqBkb0nCNb5qEqT906V+TE866gatAW2H9jA9uBnXykT5v/dzIkRe50wRDVFF2cIthUSqYRUvrCRjvlHNKs8qZ8lu70jBt2BAiaIxPHZkTkJLnmj/HfhFAzmlnbUW04nJ3WSFcwOCgC3tTcnjRQ32HrgoTVAkJVeKmDn33lkpXlMHmwCZMTGYUDm4Snw7E/ez6XzA1zpWFLboahMC8ZnMJQ96fB7BLUzfaGBR/V33AIGlSdhPghSX4xhs58PrKzjkrCJ+J9tVt2FXCJ+pncBuq2ZZMF9AHIuQNLUE/QolPo+asCZZ9BYbyFgzBzZEkRPJkTF7sCl1iWJVSUcl9YvZC+THqIiN34ADV7VvlsqKWLIamioGR86200h1TWmq7IvlT4x3iuQ/mBpqEhQD1sZ4VZ2WbdgKG2sIrTqDjsDs90SVix7GDZ1BOBJEgS8Zhs/eTjeccaDKfiMMELw+xW7MznLbGx9IYpe33NV0PHWAgIOa3kdI+90GX9E7sMrc2BEIf6avvOmgJthQp7DtZRnZ+XL8R6K3KWqWSKFet9RjBOfOzJPsniAl/r7Yxdvlxt9gspv+XEmsXC++j6EC6/kSpI3gzorKJtS0be3z4bQCYC9n4iNldAZKKvcrrUduZtr00LP8RRskcssS0G/RZ 2vzsGyEh B/clsHzPHSHY22fguBjBHnjAc2SXDLdkraGiZAlpNPTbzzupXG62+FPG8PuGyPSxYfUdWKPQ0MwcWP+mMflpIgcOb25JH92JX4bPSXJtXYmmp40oliK/jJ9otvKA8zpl8gC56MFpF1VXDXawKhyBGYQmUYJ7VPMW5WQhdNsqjkPXZBZ//uOH067Ol7ng+p2YHseII0y0I9WQQnVh9WVOob9VWH2OWU0ya7WeAnR++io6qcwXoZKC2Sz5hgJFap6XE7nVZYoAa4efz6J8vYCCeecTbFN68BvluMg/R5YVf8ZCWtic2ppBVyAW4LNamsNkVrJVczvGRyo/QMbtNJMB3g+Dm3vPSwoUKjTDSWfMlUc6SczCGSWjdTTHd6txnjs29ggx4rPDsCUUEf2j8xh9PTF1bMXrtqe/1tbzKOlGQVsIfLO8X/hb0RzSGRYPXfMwP3+q9yf80rEBWLaslIAm+FI9AF8r23gm6aUOrcpJbyTgyphO6dv8F0qWIPggxgNZZFh+dcQmRs5lNSe3tImy6wC/adzmjSqMnuiGB X-Bogosity: Ham, tests=bogofilter, spamicity=0.001588, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: After eliminating includes of linux/mm.h, the following build failure occurred: ./include/drm/drm_file.h:443:45: warning: ‘struct poll_table_struct’ declared inside parameter list will not be visible outside of this definition or declaration 443 | __poll_t drm_poll(struct file *filp, struct poll_table_struct *wait); | ^~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/imagination/pvr_gem.h:12, from drivers/gpu/drm/imagination/pvr_fw.h:9: ./include/drm/drm_gem.h:447:27: error: initialization of ‘__poll_t (*)(struct file *, struct poll_table_struct *)’ {aka ‘unsigned int (*)(struct file *, struct poll_table_struct *)’} from incompatible pointer type ‘__poll_t (*)(struct file *, struct poll_table_struct *)’ {aka ‘unsigned int (*)(struct file *, struct poll_table_struct *)’} [-Werror=incompatible-pointer-types] 447 | .poll = drm_poll,\ | ^~~~~~~~ The compiler is confused, and that can be fixed easily by forward-declaring the struct expicitly. Signed-off-by: Max Kellermann --- include/drm/drm_file.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h index ab230d3af138..f24ade9f766f 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -44,6 +44,7 @@ struct drm_device; struct drm_printer; struct device; struct file; +struct poll_table_struct; /* * FIXME: Not sure we want to have drm_minor here in the end, but to avoid From patchwork Tue Mar 12 09:41:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589716 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 D6258C54E69 for ; Tue, 12 Mar 2024 09:41:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C31468D0029; Tue, 12 Mar 2024 05:41:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BE09A8D000D; Tue, 12 Mar 2024 05:41:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A5BFA8D0029; Tue, 12 Mar 2024 05:41:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 91C308D000D for ; Tue, 12 Mar 2024 05:41:55 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 3E90016100D for ; Tue, 12 Mar 2024 09:41:55 +0000 (UTC) X-FDA: 81887895390.07.F6F83FD Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by imf16.hostedemail.com (Postfix) with ESMTP id 61292180009 for ; Tue, 12 Mar 2024 09:41:53 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=A6i3hWjS; spf=pass (imf16.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236513; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=TwZhGhfqKNwGAAazIH0NZHq5xaKIh/aom8Ka+wD6k0o=; b=41kyPv+9gN8thYz5D2ibq8BETg1nWTTa074qPpUmlL4iLQ1NtUwB00cSgQVMdVeXGX492E 9le53PSjGK1xm11Lz2Pfne6y8gfEqdJ+NwASnWcS4K4qtmkJeKYRq09SP127YLpsdu+ijF 77kyhSyBOU76HVLO8qnE59F85mRTOY4= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=A6i3hWjS; spf=pass (imf16.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236513; a=rsa-sha256; cv=none; b=czYX2EGjZ/wJC05zLLWncLFDIURGXp+NLS+ECDZ48Yz6pRvKPGMxvb9QcqwuwqV3DI92dV NQIrpbYTGSJjle/+20vDqlTjXYkIBiwlZecY7qm1Lf7eqLsfBXWZpf3hl7Dtp0Gb42PTrn VzNAxdK/jLVPKaMEu6ecDG6DBxmnAlk= Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a449c5411e1so685525966b.1 for ; Tue, 12 Mar 2024 02:41:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236512; x=1710841312; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TwZhGhfqKNwGAAazIH0NZHq5xaKIh/aom8Ka+wD6k0o=; b=A6i3hWjSrLND6eMUzRs4O2ADlHDlNhj9pQ6jdGWSP8EYVVlGbW1fYJVhLnx3lmft5Z K1xsvzVpf3ERC1B9wDYyMZYF8CStPeI+Qo70ok9lADMGGYFLePQ3CR+Bf2Okn13/6JWg 572l+FBjwI92U50GxYN8nAIDQBDXzaQB9CQLRc3zfsFNgDanb3whQTTTsEhyQlg7d25+ diHTw1sXTcdH2Q0o2icv6RUW1iUqBws8fQW/A+XsYnTwgX+KYjjflkAiYf+30kGn1oe4 Fl7TMQRHUFV/d3HzGMwG33FYsXvdgNzzwPTo0phSF0ojGF1gB7szTUoiTK8FKIgdVmg3 8FYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236512; x=1710841312; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TwZhGhfqKNwGAAazIH0NZHq5xaKIh/aom8Ka+wD6k0o=; b=S/LiL/Bpm5qkWtlWzJ0ooyJcyt+KWAxyqTbtsdukagbz7glalTh09d+PVI6fb6W3UT 7l3Ebhj1nmOKCUeCqUNNvTN4d970YMYnZuA3ELrpjn+ROqTdeU8i+MppI2NS0GX0wLtZ Q5totx9Kz946HhUrIyv3W5Rp2dIuwrtyteufMH5oNAIJE0stVe6diKbXqaeEyliz1XIt 8G1145NQV11hdScRRz6bf14p2o2wWHh3+pqB2JvGMFIqQOQp9Vz2ZO+O3UeHarbe7BJa yRzlgdoh4ohrPF+DYVY+/UbAJXiWNeFgzZVPkpL5d8ov6UztkusUlbDaqYrmXRQzA9O4 A2dQ== X-Forwarded-Encrypted: i=1; AJvYcCUNkyUbRvCH9sCDHt5JsoIOeoh93YLnnz0Tm16tr1STI8P+2kLTM8L+gzKgbecbe8aezlwxxLs+tvQzYy9byA6Gld4= X-Gm-Message-State: AOJu0YxKeGzD8Qq211iulWYa3jog/gSNu3JPqVYOkCna+teh6Qrz7lCr kug6XG4E0tyeb1glzFtT3lnmta6LUTw7VeTHk/KWahJruInX0hARDmz7rKlWHJ8= X-Google-Smtp-Source: AGHT+IGZ51L07Hxzh1l+kWJcWu3Z+jyW9NEQT6L12fUL6Sj5QODioFM9B75fNjp+LPCzAWlnCP3kmw== X-Received: by 2002:a17:906:264b:b0:a45:ba06:e501 with SMTP id i11-20020a170906264b00b00a45ba06e501mr5018173ejc.57.1710236512023; Tue, 12 Mar 2024 02:41:52 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:50 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 03/15] include/scsi/scsicam.h: forward-declare struct block_device Date: Tue, 12 Mar 2024 10:41:21 +0100 Message-Id: <20240312094133.2084996-4-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 61292180009 X-Rspam-User: X-Stat-Signature: o3kyqrr4hbhsa9yh6ragtrw31mr35uqy X-Rspamd-Server: rspam01 X-HE-Tag: 1710236513-897100 X-HE-Meta: U2FsdGVkX19vwUIxkbidZRZV5rqaOYh5nCXoPv53f/dFeHLtByMF0cBo3HSXFOiFs0rUtz7gq/WdZm5FoX+/lUL0WyQaHeUIPKxHVFQasT3zF26cg/QFHgywBJGdhVZrQW+GFpyhEBdeDw1WLwggdUQbRMhv2tLTgElbIRMSm6F+m0dJ9AYgPf1/IE/2shxfNotnTGJKhKjmjsDfoMGX0Ixkp8yfHMvScOoH9OrhA+u+knogU/c+5OjHGG4bLj9Wn56TPD7KIet4cFZ9vpOHx2M4txVK1CTnB9xsOmIITLjEGF+VlrlvHhAP32WIocii9jMaxdRW5AxmMwmCR+/4Rhw2tXEbAJcHcFhcrFWBpUotQAjx061a4plYlnVxmUrjNVp7hPgeqIPo36yqMV9H8J2vUkDPB3UIdIcEf5p0wCIfPQXvfssizrFCAWjcxix4pCT5ecM3B2QAGjgCmq75Br8EV2xN5iLTpOFdZw0rWvGH8II2SgdwYn+hcPZoFwghG0mPtsfM9Vs8rBpNZPgDVfKoY9fQUEJhJjk2+z3MPbEHMwFr23uGaHSCEPhKXf2SVq9YgvecmrdJuByDyPne3+wRHY+HHNtgcuQIRDmVEJ94bIJGlk992UPSmmkl4NQ6Q+B4+29lsHjPTy3Und7Sno1GkYYySNcCVRueP+GZlBEEsB3fSu3GkWMRXnwE6evVqo2HPcPWgxfsUz9tdiGyJK7KHULLbKULhz0PNhQdXFv1lYzOTjFhctcDACxH5CG4sjBLCz5B8B48gU+PERuf73JEIMagurxLaM9Vg2Sv7eVvfMFn28yWqh1hQodpIARfYFbXux6cVJ3VebrdJ4dpQeZTCpA1vqcX8cu81KSvdzCRmiV6HdOXUFROPE22wu1dU/TJu1IQ//GH1QSh6Xls+qysNiKtmZrJ7+WE7TjFFHtr7JUlszsIxm2oBHmRy4NKF1DNn+zrgPDcUwmLIuj XaA1wzpy FWCJkjlvo/NUGSxp6r79Sp4zhpcIdLZR6jBhUVapZWvUwF0DeKBozaKbl1x1LPl5+bJCD1M5MaRf6SdpsSZ273zqbRoVg1QcEvcm+AXbo9KSzIt4RN04olcj9L+kqaD4WrOUc/HFkqgkeeKwY8CwSD/S6kUj4V5FLBg2PFDJyAITzG5nnDbx8jcMtd0mquDQ2NsXsRq8u6AD82lncc6bVjO4ceyPGCrGUD9iOruCJeGEPpCV3fAH751dQFtOxW8Vq/gqn5WD/VUYvmsyo5KZSGB6FYsszrwCMbkmJ6rakpMRv/7D7cRGzw5Ro298NzqPk9h3y5se50kbVMFhYC5LfNbkqGahTgOrG8/lwdezOpXjhBZfijxwBZwJ0c5ZJUvKK/AIEyYaPceNmayMdQC+DVRpeHOOg3rnNwrsX0vgMdh1/5GY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000080, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: After eliminating includes of linux/mm.h, the following build failure occurred: In file included from drivers/scsi/fdomain.c:87: ./include/scsi/scsicam.h:16:31: error: 'struct block_device' declared inside parameter list will not be visible outside of this definition or declaration [-Werror] 16 | int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip); | ^~~~~~~~~~~~ ./include/scsi/scsicam.h:17:27: error: 'struct block_device' declared inside parameter list will not be visible outside of this definition or declaration [-Werror] 17 | bool scsi_partsize(struct block_device *bdev, sector_t capacity, int geom[3]); | ^~~~~~~~~~~~ ./include/scsi/scsicam.h:18:40: error: 'struct block_device' declared inside parameter list will not be visible outside of this definition or declaration [-Werror] 18 | unsigned char *scsi_bios_ptable(struct block_device *bdev); | ^~~~~~~~~~~~ drivers/scsi/fdomain.c: In function 'fdomain_biosparam': drivers/scsi/fdomain.c:475:45: error: passing argument 1 of 'scsi_bios_ptable' from incompatible pointer type [-Werror=incompatible-pointer-types] 475 | unsigned char *p = scsi_bios_ptable(bdev); | ^~~~ | | | struct block_device * ./include/scsi/scsicam.h:18:54: note: expected 'struct block_device *' but argument is of type 'struct block_device *' 18 | unsigned char *scsi_bios_ptable(struct block_device *bdev); | ~~~~~~~~~~~~~~~~~~~~~^~~~ Signed-off-by: Max Kellermann --- include/scsi/scsicam.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/scsi/scsicam.h b/include/scsi/scsicam.h index 6eb9fb7a57d0..c0de038b76b5 100644 --- a/include/scsi/scsicam.h +++ b/include/scsi/scsicam.h @@ -16,6 +16,8 @@ #include // for sector_t +struct block_device; + int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip); bool scsi_partsize(struct block_device *bdev, sector_t capacity, int geom[3]); unsigned char *scsi_bios_ptable(struct block_device *bdev); From patchwork Tue Mar 12 09:41:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589717 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 2E33DC54E58 for ; Tue, 12 Mar 2024 09:42:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 63F538D002A; Tue, 12 Mar 2024 05:41:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5EEEF8D000D; Tue, 12 Mar 2024 05:41:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3A4D78D002A; Tue, 12 Mar 2024 05:41:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 26B298D000D for ; Tue, 12 Mar 2024 05:41:56 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 05C47410D9 for ; Tue, 12 Mar 2024 09:41:56 +0000 (UTC) X-FDA: 81887895432.03.B274D5B Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by imf30.hostedemail.com (Postfix) with ESMTP id 2693380002 for ; Tue, 12 Mar 2024 09:41:53 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=hlPAQlNp; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf30.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236514; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=UOXvgd5nL7gApAixwLBmVSPDbvkCXFf36Bu9a1YyE0M=; b=Cwl/cBnC1ALEKkIa/MRApx+iQCnvpLONGx7prdtcIDsegbseE6Y4f5BvjyY48DgqesOVPL vJMpUNhlW3piia0qvB5rybP2b5Q+lyhFLazeBcWKaASZSQM+pGII8QvyKM/Wpwq1t3+bcp WnHSn0bnNoTsuyvMXHAtOqihUszEwjk= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=hlPAQlNp; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf30.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.41 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236514; a=rsa-sha256; cv=none; b=oYFrPXNZzYM/z7rHRsfSWeaOUJelwiwRbtw4wJGXMHJxrOiy1N4eI5YpAUtryhrfth/ovR IjCpZJ44lCC9vn1Hu+g+oBd4NncSSWf6QICoKml4NteLbGhCgB0dsA8NBV2iYbS9MIS6ak i4cFB4wkvSctLDphNs2nj428y3GNTuU= Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-a4467d570cdso452689066b.3 for ; Tue, 12 Mar 2024 02:41:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236512; x=1710841312; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UOXvgd5nL7gApAixwLBmVSPDbvkCXFf36Bu9a1YyE0M=; b=hlPAQlNpohRWU3zx4AUpJTGPrT20OJdnMabj0ohkJZJMyUmav09L7YOikOpNsMfQ/3 a6MRYv/Ty2q823Ts2hZWe4eT7W9+eX3lSq2mOoN8dHEqiJ7n7tRCQvxpJwCW8fa6IQMp A9WYHX16ZwK70mNp4kZ2Zkaz/ffrhA+FYSTdaG5xwLtf7yZQ+d6s7VVd6b5zjgOarkcK cSPnmD0D77zHbfl75T3PvCOsNJ6dIFwMidZp5AQWKxzZ9LHmRTsHT+3/RPRBFyVt5ck9 1QoWxLdD8sepPYN267fD8iFaX0ZWub1Lr58+4AslqYYCut5dLQXG/SB/BQY4euCOMpu/ Y0TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236512; x=1710841312; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UOXvgd5nL7gApAixwLBmVSPDbvkCXFf36Bu9a1YyE0M=; b=n5K9vzjuTNsA6SWZZDf2juwxYrK70Y6K4lCVAfK/5u2LAcKWv2pR5phxbfpzLPfDnB EnWyc3nEh5iYp8z+XSGRiIODbDhr7y/BwlfzlGwrM6GP2nJIUVLhQxbG2TIFppoeaW5X 2VPE6ztfe+kkkTAnLDNH/me0YhLe0DqzgKWyN9AaGZjjHEO5fQN/lwwbQHc1pfpjzAyX lC2WAC9OynmZbh8N49KtypwTjZWF1vxV4h6iR3Xp6Vfl4PoG1MweKXkvaoWKJv7lWaYL BC3FRRhlPkQucGtXtUtZ5aXscYElehuw7NRBhMjIt6KOUix73+nSNMw7egWontQDpfjg zKxg== X-Forwarded-Encrypted: i=1; AJvYcCWkJjTiKjFfSMZJsULErvfvDb287tp6wgMhjP302XlNJjaA7oMbdlcJZXYq4xuZhhUGtEtKl0bfvcoX9DSf7B0mcEI= X-Gm-Message-State: AOJu0Ywmy1kjXVI9chKvvTZDtW/xdDpOd1tYp2AxKC7YCuvAxKP3VfE6 8IH/9+ye/aThlpfk/LoWuU8g+gcXJLWJKMSamCAc3F7+vBGSbmscvXNdJsno5no= X-Google-Smtp-Source: AGHT+IGJUp5RAZLCr3udJzv79aMWS8KJbP01FoMgnjIiqVrmS+CbiURoWNKsIrAZW9gur1I3s6sCLg== X-Received: by 2002:a17:907:1888:b0:a45:c997:2267 with SMTP id lj8-20020a170907188800b00a45c9972267mr5996063ejc.65.1710236512626; Tue, 12 Mar 2024 02:41:52 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:52 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 04/15] linux/mm.h: move page_kasan_tag() to mm/page_kasan_tag.h Date: Tue, 12 Mar 2024 10:41:22 +0100 Message-Id: <20240312094133.2084996-5-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: wuaatnie8hhcuyeh1hwfyas6hr5q84pz X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 2693380002 X-HE-Tag: 1710236513-609920 X-HE-Meta: U2FsdGVkX19KFHmRuSVNO9/NgssE6KPfXdmP/mYRWPhvuEvGGyEgqL/kghMIQ6NOSTZntBvQe2pcfydBCl9pF0IdwxfKG3dlHq6DT+UEn3Z2XENpjxiVqJGNUquwqU9TXfgnffuzpF+1xsY6mZ/Tpwy7oGTM6kfrfpk+ve9umSfwdAVrkB0av8MjjW2X0pXbhF1bAqQqvrH2nRXrQsP93pK2DVORtMQYcm69yAT7pPLzeTmrgEBKDKU2y1MDuiiqMJp1sghlju7WCApot+SEtWiVfz2Zs2wx/IQNsHuwN+0rVaJbySiXHkGv8IoH1BHe3LqyxMC3kaMF3Xyp+yJl6CPskoddHp/l6+0edyrsZPKVgXS0bWw798yYdC0mRHRpa8WT3amSUYh56zVNf9KloazI2jm0kljsOcjWeC6qSTqHeGrUGXtbvoKtAeTHiPBQWadWT42h2FcR9zsA1NpQ4yqT+Wcw17gqMS0mVYGYVBck640CFJXcwRe0Rs87Ttqakvpj+pmV3WZ+FWpJDgsOYwLFJAmqL6jHJWNTdsdRwkIDQ8XCnB3+OQv5j12UIp5zxyeuQYFjgorIC+nChiRgodzYfQ68RPyiEd2sjOKQrtpjXsA4K7pSIf2nOd5/EKSuNWOcrnD87xzX1/jVGYoCLfBiXGC/YT2vlFV/ej+V9FVzIWbC6hlMHbBXcAllhq7H69yYqPy/K3UxEe5Q9ogq4WkLTVzXdW1glwrxJtqUxY09qwwUjYpsWuAJ6uTxKMoC55G3JRLGSb8viDHfMCp5GyvyQyqQKxCLeogy6IbD4HJ4ZsnZ91fqCBfvKRXdW/tFWBdbYVhRKpeBpGm4vapepyx/RU2rT1oVPskDRJG0whkptfFINvFWheCYLiR3rNWfy5Dm+4KemIKhfWKT3lT3PnP6NReC+L5yR+8cAO2VkRdgFYzpnUDp3uVWnKiO4VjyLsU3tKhz4yXwxZCxGss eDgBaOqT /OOYIR/zH0DKEJK20p0cRt9NESE09ECAHcm0n4fMNspBMNEN3oZFIanKhPKRf/DU38rJhogQtFvXZTFUfOh0HN18zI46e2wG5U6cCr6h4YiUwUIUwYDO4dugIH7lxo5upsg4icpq2asDOltODYL2XwJuNqEnFHD3wiycw8TwIVM3KcXxrm1/5rt9PNLQmQU7IWn8Z0SwmUl9dUOIQK0L/z1BXIy75gQrVAaqN4mS4J0rEL/0HJCFUk+lisGzPwH+DMAH3TjbPdvCMOQSRtxQDbSTEOGIMYFGfST5mNblNj+fLDrSlCZXnGEYJDsNnQi3v2jv4vRN8vTrhmp0ZO14ulqRhu61LSyr7FtJB4/DnrQj63qhRVx//J4mgnviJ1UoGKW62fn/9mywpOEZxcuLiV4GohILBLVJl6p2zNxHptYEmQbQ= 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: List-Subscribe: List-Unsubscribe: Prepare to reduce dependencies on linux/mm.h. page_kasan_tag() is used by the page_to_virt() macro in ARM64 (but asm/memory.h does not include linux/mm.h). Thus, in order to be able to use anything that calls page_to_virt(), linux/mm.h needs to be included. This would prevent us from moving page_address() to a separate header, because it calls lowmem_page_address() which in turn calls page_to_virt(). To prepare for this move, we move page_kasan_tag() out of linux/mm.h into a separate lean header. A side effect of this patch is that the include line is moved inside the "#ifdef CONFIG_KASAN..." block, i.e. it is not included at all if KASAN is disabled. Signed-off-by: Max Kellermann --- MAINTAINERS | 1 + include/linux/mm.h | 56 +------------------------- include/linux/mm/page_kasan_tag.h | 66 +++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 55 deletions(-) create mode 100644 include/linux/mm/page_kasan_tag.h diff --git a/MAINTAINERS b/MAINTAINERS index b43102ca365d..f2d32e2da433 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14218,6 +14218,7 @@ F: include/linux/mempolicy.h F: include/linux/mempool.h F: include/linux/memremap.h F: include/linux/mm.h +F: include/linux/mm/*.h F: include/linux/mm_*.h F: include/linux/mmzone.h F: include/linux/mmu_notifier.h diff --git a/include/linux/mm.h b/include/linux/mm.h index 0436b919f1c7..e140ee45f49c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2,6 +2,7 @@ #ifndef _LINUX_MM_H #define _LINUX_MM_H +#include #include #include #include @@ -27,7 +28,6 @@ #include #include #include -#include #include #include @@ -1818,60 +1818,6 @@ static inline void vma_set_access_pid_bit(struct vm_area_struct *vma) } #endif /* CONFIG_NUMA_BALANCING */ -#if defined(CONFIG_KASAN_SW_TAGS) || defined(CONFIG_KASAN_HW_TAGS) - -/* - * KASAN per-page tags are stored xor'ed with 0xff. This allows to avoid - * setting tags for all pages to native kernel tag value 0xff, as the default - * value 0x00 maps to 0xff. - */ - -static inline u8 page_kasan_tag(const struct page *page) -{ - u8 tag = KASAN_TAG_KERNEL; - - if (kasan_enabled()) { - tag = (page->flags >> KASAN_TAG_PGSHIFT) & KASAN_TAG_MASK; - tag ^= 0xff; - } - - return tag; -} - -static inline void page_kasan_tag_set(struct page *page, u8 tag) -{ - unsigned long old_flags, flags; - - if (!kasan_enabled()) - return; - - tag ^= 0xff; - old_flags = READ_ONCE(page->flags); - do { - flags = old_flags; - flags &= ~(KASAN_TAG_MASK << KASAN_TAG_PGSHIFT); - flags |= (tag & KASAN_TAG_MASK) << KASAN_TAG_PGSHIFT; - } while (unlikely(!try_cmpxchg(&page->flags, &old_flags, flags))); -} - -static inline void page_kasan_tag_reset(struct page *page) -{ - if (kasan_enabled()) - page_kasan_tag_set(page, KASAN_TAG_KERNEL); -} - -#else /* CONFIG_KASAN_SW_TAGS || CONFIG_KASAN_HW_TAGS */ - -static inline u8 page_kasan_tag(const struct page *page) -{ - return 0xff; -} - -static inline void page_kasan_tag_set(struct page *page, u8 tag) { } -static inline void page_kasan_tag_reset(struct page *page) { } - -#endif /* CONFIG_KASAN_SW_TAGS || CONFIG_KASAN_HW_TAGS */ - static inline struct zone *page_zone(const struct page *page) { return &NODE_DATA(page_to_nid(page))->node_zones[page_zonenum(page)]; diff --git a/include/linux/mm/page_kasan_tag.h b/include/linux/mm/page_kasan_tag.h new file mode 100644 index 000000000000..1210c62170a3 --- /dev/null +++ b/include/linux/mm/page_kasan_tag.h @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_PAGE_KASAN_TAG_H +#define _LINUX_MM_PAGE_KASAN_TAG_H + +#include + +struct page; + +#if defined(CONFIG_KASAN_SW_TAGS) || defined(CONFIG_KASAN_HW_TAGS) + +#include +#include // for struct page + +/* + * KASAN per-page tags are stored xor'ed with 0xff. This allows to avoid + * setting tags for all pages to native kernel tag value 0xff, as the default + * value 0x00 maps to 0xff. + */ + +static inline u8 page_kasan_tag(const struct page *page) +{ + u8 tag = KASAN_TAG_KERNEL; + + if (kasan_enabled()) { + tag = (page->flags >> KASAN_TAG_PGSHIFT) & KASAN_TAG_MASK; + tag ^= 0xff; + } + + return tag; +} + +static inline void page_kasan_tag_set(struct page *page, u8 tag) +{ + unsigned long old_flags, flags; + + if (!kasan_enabled()) + return; + + tag ^= 0xff; + old_flags = READ_ONCE(page->flags); + do { + flags = old_flags; + flags &= ~(KASAN_TAG_MASK << KASAN_TAG_PGSHIFT); + flags |= (tag & KASAN_TAG_MASK) << KASAN_TAG_PGSHIFT; + } while (unlikely(!try_cmpxchg(&page->flags, &old_flags, flags))); +} + +static inline void page_kasan_tag_reset(struct page *page) +{ + if (kasan_enabled()) + page_kasan_tag_set(page, KASAN_TAG_KERNEL); +} + +#else /* CONFIG_KASAN_SW_TAGS || CONFIG_KASAN_HW_TAGS */ + +static inline u8 page_kasan_tag(const struct page *page) +{ + return 0xff; +} + +static inline void page_kasan_tag_set(struct page *page, u8 tag) { } +static inline void page_kasan_tag_reset(struct page *page) { } + +#endif /* CONFIG_KASAN_SW_TAGS || CONFIG_KASAN_HW_TAGS */ + +#endif /* _LINUX_MM_PAGE_KASAN_TAG_H */ From patchwork Tue Mar 12 09:41:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589718 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 CA9E9C54E58 for ; Tue, 12 Mar 2024 09:42:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8B01D8D002B; Tue, 12 Mar 2024 05:41:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 838B58D000D; Tue, 12 Mar 2024 05:41:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6D7AC8D002B; Tue, 12 Mar 2024 05:41:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 54B7C8D000D for ; Tue, 12 Mar 2024 05:41:57 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2874EC125B for ; Tue, 12 Mar 2024 09:41:57 +0000 (UTC) X-FDA: 81887895474.26.F3E476A Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf07.hostedemail.com (Postfix) with ESMTP id 67AD640016 for ; Tue, 12 Mar 2024 09:41:55 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="A+Y9T/h/"; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf07.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236515; a=rsa-sha256; cv=none; b=SDRCYxzTqaTdSG3t50xSMRuCX9Dd5AJza2cnsTV3iwZP6mGwEUeTF5uh+1t7OyT0NaqIKS +PZlf9SqdET1ax1XRJjD5HTQUCyBPIVoY4KzzjnzzTAIeNTRnUKczQxBcg/xy6NQ23zNGi pnBipUb1gOq0txOgMe1k2Jb3dknVIvs= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="A+Y9T/h/"; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf07.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236515; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9wE2HsEwQuIKqCaqriShH9hKkj+cYk+gvkRx/+6+3to=; b=MpJjesIgtGfAkG1Uq5LU/zbXREYbmsGkW+dWM7X/Ll2uJ+Ih2GGqi+iA/yCF0bbKEO3und vZNjHwCQJS+EepRLpstiUJZbxp8JqsA7JGthf/xJIGZZhewSoczWPiDUA15SPdgj7E+Q/A rXqwfT01eZp20WyDaOHD4oDN2BkEUoE= Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a461e09ddddso252461266b.2 for ; Tue, 12 Mar 2024 02:41:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236514; x=1710841314; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9wE2HsEwQuIKqCaqriShH9hKkj+cYk+gvkRx/+6+3to=; b=A+Y9T/h/Zc2mKjyIuHynuh8VHAIjwUO+tQQmL+aBUXVzjd4ykbOxKp80Rh+GuLJjL5 J3m6/E1XfNPVL2rzqvowIXR/z+EPLE0Zf/E42YAdigRG00FZl2qvXaFUIlZksfE/LiYy uBm6WCzaxTYU1betPjefEwSbZqgBURlzB0cxXXH2ej3gN0TEe5/9sUGk+4MbrXiHp4y0 CWYApNC67Wm+JUOQXSu/gYP7vwjizHTfAnAw1kNIdC/6fkrebBbuRnvfXDmEZlN5pM75 vjBAe8k0ekMIiur87ILm/f/LVkTljtvN8uu5lnX1GP3/DqXedUanP9KTuyV6lPeExvUL 9uXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236514; x=1710841314; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9wE2HsEwQuIKqCaqriShH9hKkj+cYk+gvkRx/+6+3to=; b=B5Hb8gaNdoT1VV92I96mll/EkMjVEIFNBvCIGRl8e8DA8BmZlY/syYHNBfU1xBYlyG wXt4iWHE5FqW1K+OzTwkKl1TqKcWCv6KzmoVseMzHh75wekfWnO+YSPRuONblBo1m0Bv NLlvZO07v7JwGP1e5vzruwLoEdAlJKSvRJls9HCCr0oPl6E37rbaiUqcDWBtB3cvN4HY CTEFrCJhMO3rNWB8/Xah/viNzo/PKLwE43pPl+oSmx0Kd3X7FMv1i4U2cwHMYyET4Lp9 jbzC0abfyi4pahkXFYf503pjlo1cokCCQTmtZtVk3fcHBkznFrNEcYuhz8NFAHEj9qgb fYqA== X-Forwarded-Encrypted: i=1; AJvYcCWVNydsawrNekFtKKEd1dB4KHVcB6/3mPkd0SjAqC/Wjsq83j8bfyiVQuzgD0c4XeZ8GB2yIpTyWpZ758mKHHukVCw= X-Gm-Message-State: AOJu0YwEr7cfghSB/Pbv0/Kx+QpCKnCbsBfBL6kA5Spxp/tygb64+SB7 XcyC2CDeeSZ56gPmIbavmSEdSp2WBaztCMPuKs74TeuW1r2wQtxfaFF1cf+hvCw= X-Google-Smtp-Source: AGHT+IHwESUJTLeXYVU6c5C17eRydF4PJMg9KLfv6dX8WUbheMpCuO1M61+d7bvgT7hUFtR7+f1vtQ== X-Received: by 2002:a17:906:3a9a:b0:a46:2751:1358 with SMTP id y26-20020a1709063a9a00b00a4627511358mr2898595ejd.62.1710236514117; Tue, 12 Mar 2024 02:41:54 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:52 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 05/15] linux/mm.h: move section functions to mm/page_section.h Date: Tue, 12 Mar 2024 10:41:23 +0100 Message-Id: <20240312094133.2084996-6-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 67AD640016 X-Stat-Signature: ptqh476jc47pkj7mquyp8qkgtgd145zj X-HE-Tag: 1710236515-579650 X-HE-Meta: U2FsdGVkX1+UcMFOH8dUff7/B8BLakhc6nekSGJdUudrL6owAw2k6Y8eaEQ7JyaeSc4OMXNn6N9X3DeHUS7jbvI3kUKo0xRntZchQOphhXTq+I7RoCTt3BLSvn86eKBgPRnRAhPDibsX7ShhGXQrxkO1U60rywZwhQ8w2SHjqPjujc8XHJNjA2GXHpvkZ3Ic3NRkJIU3jZDA2AnNTp9sBcDcWTFMDqOWdsmr3fNYULJ79HGQywo3d8rU61jD3dJ8DthaOJb/UWXp+XB5n5aU1wXAu0drIH+oTmgiB/J6+wvnjBwZtc67k6ECoPkC1xJAVMrJOKt6utED5Jz6UOzn0qjkfhhP88BLBEr1fLl3n9kHc208Ns1KBf52QrWtH/sc8yC8MtXA2gyNCPIgSWKyoV9/8BZohekDy5w0uMbaHtXGdY8p34ooOiUlgJX4Fw0MqamjD+chAlA+h4Y9yevB1hJvjm6EEyes0I047wmOWkWEFGRgfJOCTRjCF8Pf99LCyKNeziUF/4ctyfavkRIw5jkuMS9P+WV6rBQUwOtPyJo4IKQCa06NHtpl2CrHGbTLXKlPaPNnOQS1g12C5dwqaD2QDNK3eMaFwhUWySTNuSugKIwv7FHbuT37Yo9kUbVCxheB6w94/ljW5tmt+qGC4v58e61oOjmLg1Bvqj0j/0CqAZBMUOvKEQaIbYzxQicwgKXObHWLveP8D5fyXjT8DIwBQua6QI/Tv/t2FKq/d4d98aLdqAb3KlbhPbMnqZZPWxZ325J4VsyJReCd97HfBWDaQZxOtLkXbsERleSX9HnsxjWBKxIuydUHjV4wnZs82lHnZ4OTjmylU0gBXDCEglFUh/p6mAtz2MDH7ADe/uYOqzl7paCHPqPYrLO8+523kKzz/hVx4jCCSDcRBeUAdlM4oLUnWekTLxjSi5zWjdUkiZfurpMo9v9D7C71Ikht8A5H3XoQFNDn08Ub+Eu jEcw90l+ DUZ3TVgaHLoTMREaUCmwyZpsNr8irX0TAZXYG8Z+SPaMTN26ve65IIm+YkYVK5/gcAU9LvWOa9EqEbWmE8i/VmP2BZEnGxuo2crcr5iLMvrhJ30YyDbT7fNS+tDlL0hhuXrgYNyz0PGsgBCMxvpeOBtU2AaXo7PQvNlNV 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: List-Subscribe: List-Unsubscribe: Prepare to reduce dependencies on linux/mm.h. page_to_section() is used by __page_to_pfn() (but asm-generic/memory_model.h does not include linux/mm.h). Thus, in order to be able to use anything that calls page_to_pfn(), linux/mm.h needs to be included. This would prevent us from moving page_address() to a separate header, because it calls lowmem_page_address() which in turn calls page_to_virt() and then page_to_pfn(). To prepare for this move, we move page_to_section() out of linux/mm.h into a separate lean header. Signed-off-by: Max Kellermann --- include/linux/mm.h | 18 +----------------- include/linux/mm/page_section.h | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 include/linux/mm/page_section.h diff --git a/include/linux/mm.h b/include/linux/mm.h index e140ee45f49c..79c1f924d4b5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3,6 +3,7 @@ #define _LINUX_MM_H #include +#include #include #include #include @@ -1637,10 +1638,6 @@ static inline bool is_nommu_shared_mapping(vm_flags_t flags) } #endif -#if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP) -#define SECTION_IN_PAGE_FLAGS -#endif - /* * The identification function is mainly used by the buddy allocator for * determining if two pages could be buddies. We are not really identifying @@ -1838,19 +1835,6 @@ static inline pg_data_t *folio_pgdat(const struct folio *folio) return page_pgdat(&folio->page); } -#ifdef SECTION_IN_PAGE_FLAGS -static inline void set_page_section(struct page *page, unsigned long section) -{ - page->flags &= ~(SECTIONS_MASK << SECTIONS_PGSHIFT); - page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT; -} - -static inline unsigned long page_to_section(const struct page *page) -{ - return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK; -} -#endif - /** * folio_pfn - Return the Page Frame Number of a folio. * @folio: The folio. diff --git a/include/linux/mm/page_section.h b/include/linux/mm/page_section.h new file mode 100644 index 000000000000..e4558c2691b8 --- /dev/null +++ b/include/linux/mm/page_section.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_PAGE_SECTION_H +#define _LINUX_MM_PAGE_SECTION_H + +#include // for struct page +#include // for SECTIONS_* + +#if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP) +#define SECTION_IN_PAGE_FLAGS + +static inline void set_page_section(struct page *page, unsigned long section) +{ + page->flags &= ~(SECTIONS_MASK << SECTIONS_PGSHIFT); + page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT; +} + +static inline unsigned long page_to_section(const struct page *page) +{ + return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK; +} +#endif + +#endif /* _LINUX_MM_PAGE_SECTION_H */ From patchwork Tue Mar 12 09:41:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589719 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 77C04C54E58 for ; Tue, 12 Mar 2024 09:42:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 99A2B8D002C; Tue, 12 Mar 2024 05:41:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 94EB98D000D; Tue, 12 Mar 2024 05:41:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7C4DB8D002C; Tue, 12 Mar 2024 05:41:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 612AD8D000D for ; Tue, 12 Mar 2024 05:41:58 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 403DD406A4 for ; Tue, 12 Mar 2024 09:41:58 +0000 (UTC) X-FDA: 81887895516.20.1DA7BD1 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) by imf21.hostedemail.com (Postfix) with ESMTP id 933E01C0008 for ; Tue, 12 Mar 2024 09:41:56 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="R2H/L3Nu"; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf21.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.46 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236516; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=9QtTxRX/inj0OtKTHCIe6FPb0V6jffrKP/nT087XKzU=; b=dVp6DDowZ885U/Uelv+LkEFtwd5ovT1Th0zY4KyPl01SDrX7wyt4CaRVrklBYOkxthfUAY oFprcWO6Cfjjibb0whG/41x03VmebUVvbAqClzVlz11T0olComGovvO7J0uRNQLLjMS2NR qIKVQpQGGu5Yr/PMBjSJSKxA64BaKFo= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="R2H/L3Nu"; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf21.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.46 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236516; a=rsa-sha256; cv=none; b=6zOlI5WXFjIE3/96kL6trQAFm8PB8o0mzJCmigsmDRfpkYDmp0RA40VuvkZWmY7S37HZRu I2FltypLLa34RlwwbPZJxtlk362XtpalAReN/h102CvBlg0N6ME0S9qzEZnI5diIuBnR9S DNWpd4Cp90WpOh34j0EidBhStzHVzA4= Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-a44665605f3so743106466b.2 for ; Tue, 12 Mar 2024 02:41:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236515; x=1710841315; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9QtTxRX/inj0OtKTHCIe6FPb0V6jffrKP/nT087XKzU=; b=R2H/L3NuHziOMe7Y5ghqTy/LinMpZzikbVNoDXHD7M8CQiSeDiM2FO6fRnzZ73HStS u8VMy8mm5JucumgCMhAPt29VA7lT+U3Tw1lDhC+KFHr1/WDjObGWQELXPhcq5CTowcpt 2kTEz+0gFk3UKcAbKqkhxtI8gxoyVH3+sLlv+ZzTNaWxFhv2ykfx7SLr5TpyLWNf9eZW 8J5wVqbH38huIy1BtulpUItwOr/uOvVngjN2pKPKW9Ezeu5mlezuzO54nUpzyZpjE+4S UL+hZ0pwtchqGLBJFCTNXQfaMsmggQjxyw55NQzBhv+1V69qvHocak7EmyE5QpVndrel w+OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236515; x=1710841315; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9QtTxRX/inj0OtKTHCIe6FPb0V6jffrKP/nT087XKzU=; b=BOgHY/wGCt+JHOAOk8hgh0Xeh38kSm5O0yUTsz0BbOVGd2kfv39gfEDLT5pPm283H4 6Mr9LKIBkhbxA0PIw7tf58AWXOjx4BvUaBNEB934DkozeBMUcBNooQwxeRfTHgxnK8S2 GYq7V5tQJ6Mip9/RYtoMs1FrMiMNQKiiEynFXGHhhTdqhN8iwikQhFXrKxo5aX65p09q 1BGpH/6eLMW/WVs0GOrwPaNe3XCkmI1C+Q70BDg8M99YbQCGCrumsFE7tjI9S6wTZsfr xxSbdCxBaQNnaC7B064Kvv8H4iiPzHEox0CeJaNoyWxYiCkG7TpTjDHcv6DDFrv9bKWr AJGQ== X-Forwarded-Encrypted: i=1; AJvYcCWU+vYq9jey/NFhTWl6K9zA4f2IAEBDBAc69/3zYS3eTq5duacsj/Essp2gh2ObrR2U8Xi1qieWOMnSAJfe0u2CiYQ= X-Gm-Message-State: AOJu0YxPpsr5W1l8YZ+Nm5/75vZyHXqAB+1fSwDmfJotRRYYvXmsbKiz FshX9Ez6FkRK2Kqqe/YbBI58J+KcgUn9a6CpELKEghYhzUh/eUOlCNaEE1YBV1oJoalLOOkOSyM Y X-Google-Smtp-Source: AGHT+IFns2Ypn2XVsNVNAKrCcBt1TN2yH+bK3v2AhDeQNnfgdKRGlRgshyozXFibXBgkrU0IXHzkGg== X-Received: by 2002:a17:906:234a:b0:a45:cdb2:b6db with SMTP id m10-20020a170906234a00b00a45cdb2b6dbmr5768531eja.46.1710236515272; Tue, 12 Mar 2024 02:41:55 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:54 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 06/15] linux/mm.h: move page_address() and others to mm/page_address.h Date: Tue, 12 Mar 2024 10:41:24 +0100 Message-Id: <20240312094133.2084996-7-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 933E01C0008 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 6u1grjmaexo34r3qdgofp5p9f3mhp63u X-HE-Tag: 1710236516-884279 X-HE-Meta: U2FsdGVkX18HVmVO3nGF45xxVpmBVXGciITDS3/ye6u9tRolOjchdv85TP30LCUTPw1Vc2g/6k9C9cO6f2YzKD7q5LCb8Jre182x1XUwCAHGrHUE1ngZkvA/2J2pakD4BvMkFr04KGLTfqjEnbb1RT3k6hJTssYOcLDEmrWOPNPMMeZCPRTKiBXV57AkMfNa49zCTDd0YvQaKhV3OaRsHCg0FDiEW5SMu2S4VIWi/NmQijO9JW3PPbdliAoEiQu35R8WLfTUHeUzLT28i57jhvYDtJUygUE7C71V+5TWWev1FZb1OyZHnjOPC//ATbIrgsTzMtx5nhiO4aL+m4tGe73cEtvMqGdhHsO2h+4Dfminz7UiA312lCPC2Q5oc1MGPR/+gd0XdTVNjXIoWGGr6DiYo+eJD6oeWdh5tME4ot2bAi/UyvYg5p+jzGKpqyyz3qdmPvHyzS0mZJUPi30bUtr5DyRGC7v8CkGOhEZ/zXQ81nxwIT50JEWjp9LnvScQNi2gon2XmE/C+9iuoVob204HJSEofVQ7lGVo4fVvA0HlC4gGLXO32AFbb/W/HfevGhY0GvSHAB4o2MfzQNCvCn6XFum0i1dKpYona7wrj+jN3lbpaKeWrKjuCFO6VBHnQOZ5GlzBJQLNwX+NRF1oa9CDHIvpTZoZZ72D2JsrWV8SuevLj12knBg5lspDQSV9UjKxI5ORM7md1aJeCVIKy5jRwrGz+mpHObaPlLOn4oOyP17zVWO/EiERz33kCmCCtW5dXC0K6SqAwqeSVgzAIltEwzLsKQnhq6w2qIscQrUAa1naibQvKUBAHhVE0eJE/tVpu1tb4IvS9ZdKNFyKZbbaD1QXALa4D1cAMRqG02lZMixu5PVtMa4wLHyzvR31J2qHA/PQfK0pzrU+rTqQugbajq5+2K9x9s7G1HeDc+uEE24qgGzPKLRoU1AvoPfXoKo5FvE+KaGgSw2vJYC 3oov4lpB NhCaBoWr3doNzqUKoOZk73eJgaAE7JrcOUWWYrAQ1KcnyJW3koK18QwFecKUbYfAY1z8SJK133J+LENA2UTJtX96Apu6v+mdj8P2KjJOIqxD7uVHRD506TvJ8OHz7IE9F9KnhaSQnRDS08Mv1aQUPRR//wlLUSSKezQlu 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: List-Subscribe: List-Unsubscribe: Prepare to reduce dependencies on linux/mm.h. page_address() is used by the following popular headers: - linux/bio.h - linux/bvec.h - linux/highmem.h - linux/scatterlist.h - linux/skbuff.h Moving it to a separate lean header will allow us to avoid the dependency on linux/mm.h. Signed-off-by: Max Kellermann --- include/linux/mm.h | 56 +------------------------- include/linux/mm/page_address.h | 71 +++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 55 deletions(-) create mode 100644 include/linux/mm/page_address.h diff --git a/include/linux/mm.h b/include/linux/mm.h index 79c1f924d4b5..713cedc03b88 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2,7 +2,7 @@ #ifndef _LINUX_MM_H #define _LINUX_MM_H -#include +#include #include #include #include @@ -104,10 +104,6 @@ extern int mmap_rnd_compat_bits __read_mostly; #define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x), 0)) #endif -#ifndef page_to_virt -#define page_to_virt(x) __va(PFN_PHYS(page_to_pfn(x))) -#endif - #ifndef lm_alias #define lm_alias(x) __va(__pa_symbol(x)) #endif @@ -211,14 +207,6 @@ int overcommit_kbytes_handler(struct ctl_table *, int, void *, size_t *, int overcommit_policy_handler(struct ctl_table *, int, void *, size_t *, loff_t *); -#if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP) -#define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n)) -#define folio_page_idx(folio, p) (page_to_pfn(p) - folio_pfn(folio)) -#else -#define nth_page(page,n) ((page) + (n)) -#define folio_page_idx(folio, p) ((p) - &(folio)->page) -#endif - /* to align the pointer to the (next) page boundary */ #define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE) @@ -2137,44 +2125,6 @@ static inline int arch_make_folio_accessible(struct folio *folio) */ #include -static __always_inline void *lowmem_page_address(const struct page *page) -{ - return page_to_virt(page); -} - -#if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) -#define HASHED_PAGE_VIRTUAL -#endif - -#if defined(WANT_PAGE_VIRTUAL) -static inline void *page_address(const struct page *page) -{ - return page->virtual; -} -static inline void set_page_address(struct page *page, void *address) -{ - page->virtual = address; -} -#define page_address_init() do { } while(0) -#endif - -#if defined(HASHED_PAGE_VIRTUAL) -void *page_address(const struct page *page); -void set_page_address(struct page *page, void *virtual); -void page_address_init(void); -#endif - -#if !defined(HASHED_PAGE_VIRTUAL) && !defined(WANT_PAGE_VIRTUAL) -#define page_address(page) lowmem_page_address(page) -#define set_page_address(page, address) do { } while(0) -#define page_address_init() do { } while(0) -#endif - -static inline void *folio_address(const struct folio *folio) -{ - return page_address(&folio->page); -} - extern pgoff_t __page_file_index(struct page *page); /* @@ -2237,10 +2187,6 @@ static inline void clear_page_pfmemalloc(struct page *page) */ extern void pagefault_out_of_memory(void); -#define offset_in_page(p) ((unsigned long)(p) & ~PAGE_MASK) -#define offset_in_thp(page, p) ((unsigned long)(p) & (thp_size(page) - 1)) -#define offset_in_folio(folio, p) ((unsigned long)(p) & (folio_size(folio) - 1)) - /* * Parameter block passed down to zap_pte_range in exceptional cases. */ diff --git a/include/linux/mm/page_address.h b/include/linux/mm/page_address.h new file mode 100644 index 000000000000..e1aaacc5003f --- /dev/null +++ b/include/linux/mm/page_address.h @@ -0,0 +1,71 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_PAGE_ADDRESS_H +#define _LINUX_MM_PAGE_ADDRESS_H + +#include // for struct page +#include // needed by the page_to_virt() macro on some architectures (e.g. arm64) +#include // for PAGE_MASK, page_to_virt() + +#if defined(CONFIG_FLATMEM) +#include // for memmap (used by __pfn_to_page()) +#elif defined(CONFIG_SPARSEMEM_VMEMMAP) +#include // for vmemmap (used by __pfn_to_page()) +#elif defined(CONFIG_SPARSEMEM) +#include // for page_to_section() (used by __page_to_pfn()) +#endif + +#ifndef page_to_virt +#define page_to_virt(x) __va(PFN_PHYS(page_to_pfn(x))) +#endif + +#if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP) +#define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n)) +#define folio_page_idx(folio, p) (page_to_pfn(p) - folio_pfn(folio)) +#else +#define nth_page(page,n) ((page) + (n)) +#define folio_page_idx(folio, p) ((p) - &(folio)->page) +#endif + +static __always_inline void *lowmem_page_address(const struct page *page) +{ + return page_to_virt(page); +} + +#if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) +#define HASHED_PAGE_VIRTUAL +#endif + +#if defined(WANT_PAGE_VIRTUAL) +static inline void *page_address(const struct page *page) +{ + return page->virtual; +} +static inline void set_page_address(struct page *page, void *address) +{ + page->virtual = address; +} +#define page_address_init() do { } while(0) +#endif + +#if defined(HASHED_PAGE_VIRTUAL) +void *page_address(const struct page *page); +void set_page_address(struct page *page, void *virtual); +void page_address_init(void); +#endif + +#if !defined(HASHED_PAGE_VIRTUAL) && !defined(WANT_PAGE_VIRTUAL) +#define page_address(page) lowmem_page_address(page) +#define set_page_address(page, address) do { } while(0) +#define page_address_init() do { } while(0) +#endif + +static inline void *folio_address(const struct folio *folio) +{ + return page_address(&folio->page); +} + +#define offset_in_page(p) ((unsigned long)(p) & ~PAGE_MASK) +#define offset_in_thp(page, p) ((unsigned long)(p) & (thp_size(page) - 1)) +#define offset_in_folio(folio, p) ((unsigned long)(p) & (folio_size(folio) - 1)) + +#endif /* _LINUX_MM_PAGE_ADDRESS_H */ From patchwork Tue Mar 12 09:41:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589720 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 0F9E5C54E68 for ; Tue, 12 Mar 2024 09:42:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1F8C28D002D; Tue, 12 Mar 2024 05:42:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 15A608D000D; Tue, 12 Mar 2024 05:42:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EF19E8D002D; Tue, 12 Mar 2024 05:41:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id D90128D000D for ; Tue, 12 Mar 2024 05:41:59 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B4BBEC0EBC for ; Tue, 12 Mar 2024 09:41:59 +0000 (UTC) X-FDA: 81887895558.09.12CDFD8 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by imf19.hostedemail.com (Postfix) with ESMTP id 04BA21A0015 for ; Tue, 12 Mar 2024 09:41:57 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=RZ243ZXe; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf19.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.51 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236518; a=rsa-sha256; cv=none; b=hcZtrFOQg3VAa7oeR/KEM14tdeUGfy79MAy7GGr19XKJMpM0WJQLUKnyayoJ3127PTa/1h sZLf35UJbumSHGkIHPXbrEIVPP2dsD2bq1ZhtZf0phqWMIBefT35IFwCtDrQGl6c2RDxhF BU8THffjFv3JN4QVj41ufE8zy4GLI3I= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=RZ243ZXe; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf19.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.51 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236518; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=pOCd08dVcNL3Vsd080U9IACgrN+4/kX0/WIiYLCuiY0=; b=sNrD8ahBVsuZuEaRaP4oW+Z/uHsa3OPtWDZIKMY5dE75E3tABoIPGNtJeFnAh63qnWO1M2 A1PY2rKgVaKCcbSY9YUq+rXuJNyBDfVV6ZPM50gpuTSMbVo7h9+0oLDTAFW+Sd40mWqY45 vJU3uGK/BE9ZlK2Gbtjqsy7wW8VGr04= Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-a4649c6f040so28048566b.0 for ; Tue, 12 Mar 2024 02:41:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236516; x=1710841316; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pOCd08dVcNL3Vsd080U9IACgrN+4/kX0/WIiYLCuiY0=; b=RZ243ZXerZxNny8mjCfBqusFiplIHTembsnIuV2hc9Ts0BritoUKxl8JpZGiEnMLa8 h81FIYC0UoBpDvOl5JGkIEAR/VNWFdGe8m+JObWjNJbbpObAPGHWqXht1eRDi0n8F+KO fgf+NDeU8uN/R8m0xHk1S/0ajYxTdN5IiXTONKZ2A/iFvs9VTy0hch6imVZmJaqoSfrE LWXNqIW1ej+PgdZcyy3l/gSRYWtxQyW0OM6rvDkIX3Ctnrrx8/3j4ERFn99Z4XFgS85m 9mvXkEoS0b9yx5kCEg8l9WfH1iuxIlwSGvKj0QNa4xEG8jhoWK5AuzXKMj+07lwt7nlG D4vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236516; x=1710841316; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pOCd08dVcNL3Vsd080U9IACgrN+4/kX0/WIiYLCuiY0=; b=tnYhc1WBFwReajsY17P3bKhF4nVtfdbd8PrzSds9tUUjFQXw34QNWy4MRqqa1HwUy8 /WC0smi4VFz0QX8M9U+6IF0N5nZ6KtYy2H8xjG58knH88rpmBtWlvCjkJli9PgwFVFWn OrTvLtw+20+LN+ZMm/LKbalpEC2rh6WauqjFabNGcLy7vLrqKD2l2kyyc1bNF9yFhDeQ M0Xdyw/JffcaiicbXikZ6CuqsF2Iji5E0NWo2Td3h2XUHXI/tsNLPegThdet82bq5Kd/ 8UccAe2t1i9c0XcKin3tOkA3fSD26oAmVbF2sypmSPRmkYmFb+aCaeMeR+E1eOIGVmNR WOTw== X-Forwarded-Encrypted: i=1; AJvYcCWEKOO26g5gb1HAadii8buBZxTpfPa+eTvLIAM3VLV3mlgh7OzDPYef6gc7dmRBpSPWXSd7cmW8pQIl7T4AZsD76CA= X-Gm-Message-State: AOJu0YyZNDpTXhSNFYjn0/I4PCwxzW96hXVrMEuOqpceCOXqXzzqbu4Z jLGhb7baKmJGHR2DOoBpMv4i7tf9tvwsgj9M431A7uVXorMWth/wU7FZWcrRynQ= X-Google-Smtp-Source: AGHT+IHjOIF4GXnxhEXYczDPqX+KWpyAlclam9FjYiLmhYYld2nrVA/ZGxZiKu/mMUbtJ1A/57F7ng== X-Received: by 2002:a17:906:9c87:b0:a45:ba06:e512 with SMTP id fj7-20020a1709069c8700b00a45ba06e512mr6914716ejc.6.1710236516574; Tue, 12 Mar 2024 02:41:56 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:55 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 07/15] linux/mm.h: move folio_size(), ... to mm/folio_size.h Date: Tue, 12 Mar 2024 10:41:25 +0100 Message-Id: <20240312094133.2084996-8-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 04BA21A0015 X-Stat-Signature: chskrcrpr85gj51b4sd8fnz7ghiri3zi X-HE-Tag: 1710236517-300475 X-HE-Meta: U2FsdGVkX1+6XLDPRm1aHcLKQCHDstdnj6TNzOSS3x8VjP7tGbklXhXNqFZ20r24HqZOTvoC6wYpkpEOcL+zhlN0zGPdrhy4LOACcvKEIow4SN8BU4XQv/GWynF1RovHPnCFZXdFzZKkHUzHn2boY5cIJ290YToh83064iurGPbxDhHpJ2xpYGLge4Qh/VnmhmWKDsmJFj0Hs+oYhg9g7N6Z+lzodVGXu0oep4ZA+mIgpvDxzwpwO8d4EWt5jbzx5lljSp2PL4Ib6ANjbM+mzhhVSPzqW9cA3HdanCEEfEe5M8JGwNwKDLVte7wGUDsWW3qr7+jHkKTiYJccwhuzeQTvZh7jWWu6cIm+t9+WUCM1QZx5lqGGKGTez0JRU1Ej44Bx9TNrl3fmgqM0C8QI3x9VOxzVew0cu+4jALOna9hReEcj4ofPRf5o6nIZNhNSqnET46zozsd6ZoOnN3N6kcb6TAZevdyf6A1GJNI7ndrq65Q2cKNUX9QSdgoMoKRaL5m6zNrBbvQ/iHhbzwVnaKhkiNhKDMk/LbIf4gJ6163amHkV4PibJJ2IQ5hZFakwnPAl05ZidsTbxQVvleQX3m2610w8uDaOwNoDLSd/Jf8J8ZzdiHbnI2xe54elqWMHmF+u4BFBgHcLA4auavnYiHvxpV2wIq5bwXhXXoMVzPkRGFHBc2xxXXVyYbfVr/Hklk5o3TuRlIiCmYw4D4rcVONErjqOivptGv2c1j+qFaeRd9aNQWHXMee5ltDStNyH06DDKxepznhLlEA9eBvHmCAgMVn+Gxje71y9HuPNpauPa5iI9OeUe8yV19JnVfmepk8SQbkhqAf/46emRJMY1QoTZPzajfkFqj706L1Mt+/SzueuhaP8jU9GWZmtkEoKz41/yzFi5wQsvPHFBWlerKlLNgxSznRWZ741lJqaeKp9kovTuptueDEJtioKXzTxj5D6ysRI2FNj6apOViu /KRwJy4i opBkTqsKmZh7yjiPkij/AQowhAatCT2h+WGV5JhvNSglI/tLqlieyHDfvjwL4HJW9lYQvjlMOWOmGwUr6we19Yv4cBuitLb/Kzf0jvUlaw7kDXiKRZjI+PAqQvFVPzKSXAPGgsmRoMCg8dG2/LhqZn4bvEhF9nmnWq/IR 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: List-Subscribe: List-Unsubscribe: Prepare to reduce dependencies on linux/mm.h. folio_size()/page_size() are used by the following popular headers: - linux/highmem.h - linux/iov_iter.h - linux/pagemap.h Moving them to a separate lean header will allow us to avoid the dependency on linux/mm.h. Additionally, it allows us to move folio_next() to a separate header, because it needs folio_nr_pages() which is also moved to folio_size.h. Signed-off-by: Max Kellermann --- include/linux/mm.h | 140 +------------------------------ include/linux/mm/folio_size.h | 150 ++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+), 139 deletions(-) create mode 100644 include/linux/mm/folio_size.h diff --git a/include/linux/mm.h b/include/linux/mm.h index 713cedc03b88..0d291ff61db3 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2,6 +2,7 @@ #ifndef _LINUX_MM_H #define _LINUX_MM_H +#include #include #include #include @@ -1068,38 +1069,6 @@ int vma_is_stack_for_current(struct vm_area_struct *vma); struct mmu_gather; struct inode; -/* - * compound_order() can be called without holding a reference, which means - * that niceties like page_folio() don't work. These callers should be - * prepared to handle wild return values. For example, PG_head may be - * set before the order is initialised, or this may be a tail page. - * See compaction.c for some good examples. - */ -static inline unsigned int compound_order(struct page *page) -{ - struct folio *folio = (struct folio *)page; - - if (!test_bit(PG_head, &folio->flags)) - return 0; - return folio->_flags_1 & 0xff; -} - -/** - * folio_order - The allocation order of a folio. - * @folio: The folio. - * - * A folio is composed of 2^order pages. See get_order() for the definition - * of order. - * - * Return: The order of the folio. - */ -static inline unsigned int folio_order(struct folio *folio) -{ - if (!folio_test_large(folio)) - return 0; - return folio->_flags_1 & 0xff; -} - #include /* @@ -1306,39 +1275,6 @@ unsigned long nr_free_buffer_pages(void); void destroy_large_folio(struct folio *folio); -/* Returns the number of bytes in this potentially compound page. */ -static inline unsigned long page_size(struct page *page) -{ - return PAGE_SIZE << compound_order(page); -} - -/* Returns the number of bits needed for the number of bytes in a page */ -static inline unsigned int page_shift(struct page *page) -{ - return PAGE_SHIFT + compound_order(page); -} - -/** - * thp_order - Order of a transparent huge page. - * @page: Head page of a transparent huge page. - */ -static inline unsigned int thp_order(struct page *page) -{ - VM_BUG_ON_PGFLAGS(PageTail(page), page); - return compound_order(page); -} - -/** - * thp_size - Size of a transparent huge page. - * @page: Head page of a transparent huge page. - * - * Return: Number of bytes in this page. - */ -static inline unsigned long thp_size(struct page *page) -{ - return PAGE_SIZE << thp_order(page); -} - #ifdef CONFIG_MMU /* * Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when @@ -1979,23 +1915,6 @@ static inline void set_page_links(struct page *page, enum zone_type zone, #endif } -/** - * folio_nr_pages - The number of pages in the folio. - * @folio: The folio. - * - * Return: A positive power of two. - */ -static inline long folio_nr_pages(struct folio *folio) -{ - if (!folio_test_large(folio)) - return 1; -#ifdef CONFIG_64BIT - return folio->_folio_nr_pages; -#else - return 1L << (folio->_flags_1 & 0xff); -#endif -} - /* Only hugetlbfs can allocate folios larger than MAX_ORDER */ #ifdef CONFIG_ARCH_HAS_GIGANTIC_PAGE #define MAX_FOLIO_NR_PAGES (1UL << PUD_ORDER) @@ -2003,33 +1922,6 @@ static inline long folio_nr_pages(struct folio *folio) #define MAX_FOLIO_NR_PAGES MAX_ORDER_NR_PAGES #endif -/* - * compound_nr() returns the number of pages in this potentially compound - * page. compound_nr() can be called on a tail page, and is defined to - * return 1 in that case. - */ -static inline unsigned long compound_nr(struct page *page) -{ - struct folio *folio = (struct folio *)page; - - if (!test_bit(PG_head, &folio->flags)) - return 1; -#ifdef CONFIG_64BIT - return folio->_folio_nr_pages; -#else - return 1L << (folio->_flags_1 & 0xff); -#endif -} - -/** - * thp_nr_pages - The number of regular pages in this huge page. - * @page: The head page of a huge page. - */ -static inline int thp_nr_pages(struct page *page) -{ - return folio_nr_pages((struct folio *)page); -} - /** * folio_next - Move to the next physical folio. * @folio: The folio we're currently operating on. @@ -2049,36 +1941,6 @@ static inline struct folio *folio_next(struct folio *folio) return (struct folio *)folio_page(folio, folio_nr_pages(folio)); } -/** - * folio_shift - The size of the memory described by this folio. - * @folio: The folio. - * - * A folio represents a number of bytes which is a power-of-two in size. - * This function tells you which power-of-two the folio is. See also - * folio_size() and folio_order(). - * - * Context: The caller should have a reference on the folio to prevent - * it from being split. It is not necessary for the folio to be locked. - * Return: The base-2 logarithm of the size of this folio. - */ -static inline unsigned int folio_shift(struct folio *folio) -{ - return PAGE_SHIFT + folio_order(folio); -} - -/** - * folio_size - The number of bytes in a folio. - * @folio: The folio. - * - * Context: The caller should have a reference on the folio to prevent - * it from being split. It is not necessary for the folio to be locked. - * Return: The number of bytes in this folio. - */ -static inline size_t folio_size(struct folio *folio) -{ - return PAGE_SIZE << folio_order(folio); -} - /** * folio_estimated_sharers - Estimate the number of sharers of a folio. * @folio: The folio. diff --git a/include/linux/mm/folio_size.h b/include/linux/mm/folio_size.h new file mode 100644 index 000000000000..dd8af39ef572 --- /dev/null +++ b/include/linux/mm/folio_size.h @@ -0,0 +1,150 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_FOLIO_SIZE_H +#define _LINUX_MM_FOLIO_SIZE_H + +#include // for test_bit() +#include // for VM_BUG_ON_PGFLAGS() +#include // for struct page +#include // for folio_test_large() +#include // for PAGE_SIZE, PAGE_SHIFT + +/* + * compound_order() can be called without holding a reference, which means + * that niceties like page_folio() don't work. These callers should be + * prepared to handle wild return values. For example, PG_head may be + * set before the order is initialised, or this may be a tail page. + * See compaction.c for some good examples. + */ +static inline unsigned int compound_order(struct page *page) +{ + struct folio *folio = (struct folio *)page; + + if (!test_bit(PG_head, &folio->flags)) + return 0; + return folio->_flags_1 & 0xff; +} + +/** + * folio_order - The allocation order of a folio. + * @folio: The folio. + * + * A folio is composed of 2^order pages. See get_order() for the definition + * of order. + * + * Return: The order of the folio. + */ +static inline unsigned int folio_order(struct folio *folio) +{ + if (!folio_test_large(folio)) + return 0; + return folio->_flags_1 & 0xff; +} + +/* Returns the number of bytes in this potentially compound page. */ +static inline unsigned long page_size(struct page *page) +{ + return PAGE_SIZE << compound_order(page); +} + +/* Returns the number of bits needed for the number of bytes in a page */ +static inline unsigned int page_shift(struct page *page) +{ + return PAGE_SHIFT + compound_order(page); +} + +/** + * thp_order - Order of a transparent huge page. + * @page: Head page of a transparent huge page. + */ +static inline unsigned int thp_order(struct page *page) +{ + VM_BUG_ON_PGFLAGS(PageTail(page), page); + return compound_order(page); +} + +/** + * thp_size - Size of a transparent huge page. + * @page: Head page of a transparent huge page. + * + * Return: Number of bytes in this page. + */ +static inline unsigned long thp_size(struct page *page) +{ + return PAGE_SIZE << thp_order(page); +} + +/** + * folio_nr_pages - The number of pages in the folio. + * @folio: The folio. + * + * Return: A positive power of two. + */ +static inline long folio_nr_pages(struct folio *folio) +{ + if (!folio_test_large(folio)) + return 1; +#ifdef CONFIG_64BIT + return folio->_folio_nr_pages; +#else + return 1L << (folio->_flags_1 & 0xff); +#endif +} + +/* + * compound_nr() returns the number of pages in this potentially compound + * page. compound_nr() can be called on a tail page, and is defined to + * return 1 in that case. + */ +static inline unsigned long compound_nr(struct page *page) +{ + struct folio *folio = (struct folio *)page; + + if (!test_bit(PG_head, &folio->flags)) + return 1; +#ifdef CONFIG_64BIT + return folio->_folio_nr_pages; +#else + return 1L << (folio->_flags_1 & 0xff); +#endif +} + +/** + * thp_nr_pages - The number of regular pages in this huge page. + * @page: The head page of a huge page. + */ +static inline int thp_nr_pages(struct page *page) +{ + return folio_nr_pages((struct folio *)page); +} + +/** + * folio_shift - The size of the memory described by this folio. + * @folio: The folio. + * + * A folio represents a number of bytes which is a power-of-two in size. + * This function tells you which power-of-two the folio is. See also + * folio_size() and folio_order(). + * + * Context: The caller should have a reference on the folio to prevent + * it from being split. It is not necessary for the folio to be locked. + * Return: The base-2 logarithm of the size of this folio. + */ +static inline unsigned int folio_shift(struct folio *folio) +{ + return PAGE_SHIFT + folio_order(folio); +} + +/** + * folio_size - The number of bytes in a folio. + * @folio: The folio. + * + * Context: The caller should have a reference on the folio to prevent + * it from being split. It is not necessary for the folio to be locked. + * Return: The number of bytes in this folio. + */ +static inline size_t folio_size(struct folio *folio) +{ + return PAGE_SIZE << folio_order(folio); +} + +#endif /* _LINUX_MM_FOLIO_SIZE_H_H */ From patchwork Tue Mar 12 09:41:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589721 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 12828C54E58 for ; Tue, 12 Mar 2024 09:42:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 182468D002E; Tue, 12 Mar 2024 05:42:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 135038D000D; Tue, 12 Mar 2024 05:42:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F14E48D002E; Tue, 12 Mar 2024 05:42:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D758B8D000D for ; Tue, 12 Mar 2024 05:42:00 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A8CDD140B11 for ; Tue, 12 Mar 2024 09:42:00 +0000 (UTC) X-FDA: 81887895600.30.F000A04 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf09.hostedemail.com (Postfix) with ESMTP id BD4B9140011 for ; Tue, 12 Mar 2024 09:41:58 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=LBB3Ux9n; spf=pass (imf09.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236518; a=rsa-sha256; cv=none; b=YbVMdpGe0nTHaFwOsp7YJcL7LQKide4l393yYxr2EMRgoLj1DO1fWwQrHg+QB0CK520na3 6I5wYG7EsxVHb1E959/6EogUp7tqgqhnzkCbgw4lN6yPBkpbFydcrPwfUhHNIe2ziqkOqs 6ZEOh0hJOoZQkEFrm0dBpB8vJaaqo8E= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=LBB3Ux9n; spf=pass (imf09.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236518; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=tPRAHmknVEgQF0+eI0cWSAplWfhzwY2EyeY5NbL7yXE=; b=JGPkTuKJ5UXgz4zp9Mu2mEqhu1uNOO2x34oBDPGxYuICyW0zsMXX2Bw0tPr3J7oZMRDaNk BaUKT20b8eS6OIPeVDq5Oo8tH8NG0ljdUXRMd6gw89VyRh2xwdg3stQpWLx1HFTqDKVuNf 1dbJsoD1R5oS6UaAYsdFml6hO0gfnUo= Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-a446b5a08f0so949685066b.1 for ; Tue, 12 Mar 2024 02:41:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236517; x=1710841317; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tPRAHmknVEgQF0+eI0cWSAplWfhzwY2EyeY5NbL7yXE=; b=LBB3Ux9ns4w95F7meLQL/K6ORhIEIGbY8bpfmoA8/zTu+3hrkM4+o9CT5ex2ScX60K atpdVGvy5VIt6Xy0hg2J7xywY1HJq3GJ8Q090gGuu1wJxUYcQN5m1DLGCM5P2iP0UyQM ONvaGfTB23pImJ4qY783ua4hWM86NYg72DHpf8rp3vVFFRqW0yhz27elPW1r7zu40d7w pjfpyS3tO8DTb8Uyy3Zfdn0dFfoYGWkAct2sUNAMo6GFVl3jbTzwZ9aJC4GXWOtY4xDh GFAcs1tpk8VfBxY773sHcFNMqSyxk5gGn1NkOBnDJA/vp70fD28DSQW0vo6kKjEcrpUZ p03A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236517; x=1710841317; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tPRAHmknVEgQF0+eI0cWSAplWfhzwY2EyeY5NbL7yXE=; b=QeuBVv7SZLixHs//ZTk/8snRW0r/vWWaxcUzpMZG7BesdQ8U1LLq7CeS8jBtkZlrol xCwZqrHlAa78SfmHaO0YbCpWZoVRzGDv3AkPRx7Vviyaig9MyNmBXAb+T3wTXhN9hHVo ogm5QPBCQ/+EbMLjWEWbbgUnUuPXxXs9k29w+QcESOwO/OZMqqo0q3SoAPdPqPZBXZEI gDlfsvbEO6fxYlSbKL9dO8vkVQEVrxaPnxy6C/sZOz1NAhgSiBIP0wqQ+ryuNMnuu19f WNI3XLBXrO8h0OhdlLyplRKLbaeZWiyTDLPSxIfVGDcl7/n3Y6BjYrK4hrbh21E3ZjH/ m+wg== X-Forwarded-Encrypted: i=1; AJvYcCW8X2oMJm3cbSuiDQbkd9jwR7VdGSYGoYp4ubSt/rnkgcf7bJ2MeTJ1/uk6ugM6n4irxwI1PEcW+TJYR2buzXXUXYA= X-Gm-Message-State: AOJu0YxREdPaeRoL4TL3pWVEvITo3dX1VzgtJuXppaSe1IZU0wI3tFvf ccm05/2YApmKg6oYdoVTkW90lKudyWSnhbF30TCykl1TF8A/R9XSdweX4yRGb9M= X-Google-Smtp-Source: AGHT+IFpb+EqT1uOp7qLMTVjHTnEYVneJSFf9T7njrEKUR2vn/eqj2u6x7yeSAPGnaQTnMQUYnssdQ== X-Received: by 2002:a17:907:868a:b0:a45:b616:29fc with SMTP id qa10-20020a170907868a00b00a45b61629fcmr9967232ejc.0.1710236517463; Tue, 12 Mar 2024 02:41:57 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:56 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 08/15] linux/mm.h: move folio_next() to mm/folio_next.h Date: Tue, 12 Mar 2024 10:41:26 +0100 Message-Id: <20240312094133.2084996-9-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: BD4B9140011 X-Stat-Signature: w89i4zbwgus1z5grkfuuq9dk4f115ewm X-Rspam-User: X-HE-Tag: 1710236518-980712 X-HE-Meta: U2FsdGVkX1/o/7nkhP30oKsaJr+SV5wP4RcnPq57AV96T1P0q2fzbxcWJKZgVKfnG1UQEAbQNXqqkDY6LkzyUNrbTFXgKCrf/O0c+7/8lQfA8sRDpm5+ItMVcm9pJOiHt4nJKxG3EJeyv1NNGOW64XSZFSaegLiWZDDJ9Ufy4TnbIJLme9Pk7OtRsM65VYAA59pzx4YxxX2sPsWDCvXbX+Lnod1OElnIuI03O6IH7BnNI2+dSTXMb3akC6R58dH4PenzFOumryhe8MGiiHWKWmPkeShWNamzHHsHdJesS30X9tJeInKzxYXiWu0ARKraJDMMhR+4TaQUHC+umW1z/14r9uqwBMoOu2lIKvDiHYWdXbUUg9QI43mzHBhNkrCEIVYutDKqo59jthTOuETRQ+yE0Lp04gQK39pg6ea97Oe+vo/y2ftZG4DoJN9NfeuzpyCR49GdT0Qc+Pje9vhAmhwEDQUak+n3aQTU8jZyRKUCSGeeyp6vZTDJBCqYeJeZr2sDcgpUy90dUmDyRb2NeAHJiaXnwWMd7mi7N785mxQZwhNRUwLhuHIJRxNx4zHXopF/FbwfLLGySkg2gfbfyOEYlL9kel2kIVj9zzTnrMyA204A+eHNtvi7kcLh/M08Y3O4/CTHkNt5Na16Y38CoPfNX0tqV/i0INYpEMJ5TUwIQpgp6nxnDT749Hg/MBFI3HxEgNq7gNDnUMa8QeIjE/IXmDJVGqHvw/PSyPW+E9z5Ov2EKmVArVJ9HihEGHRFQYcX83RybxtIiTQuRde66iZJm6UN9j+CO+lRg/qcn8kjkpc8IxklOgzduULW4do/6sEKaHbo1EtrNIG1xjMUxNJxV7ZrnW0h9O9eColZQ/Au/w4Mu9bdYVtgxkP6Q9QQrv74RHirCJ+gUOokqBfiADnC+/IbkAhqAXSsevjiT14k0cOznROSNrG6166P8BDdeiEw2IlWVU58rPK5b5P pzAj5eSd uJwrQl9NyFLmhsokTIzI3DNeGptI0dwnDrsyniaNwDKoNNsDGi+Gqcy+9bT/TuJHcmsD7w1XHKd3c+vrDrvys/g0Lz527W3GJ13h3y3vFSQvi4ZvdDAYPfvZyTsYBbRO1vXd+XrlgZdTm5LJXeN8/ebj/GoApPxNOF5gN4S9yJ8pAUSqBtaeP7zfax+Dq/NdE1biwuhNeVq6W7sUfpWjEIThahcH/2rcUCGOYDDsFWqroQ1n/bUaxlFTmwY7wuHmTK/w0NMfdoU5jgHrnB0Hbycebx2anjEO6QSwYu8EZJh2/vvghJTMF+eZoBUUvwJXT5oLp7HAs1nJPwt/Vh79PL/zwWMMCRdoLu9vbAOdCB0+HJVHggpXgqVwWDdqocv1o0KbOMI3SCHD2p4+Iu+Y7xMuQXX4jsHyHBL9yLtYWm7jJtEDXB9DLuSmPAseAxy02nHfDdkyu4JHzdA6sAQ7HaQlW4Q== X-Bogosity: Ham, tests=bogofilter, spamicity=0.001124, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Prepare to reduce dependencies on linux/mm.h. folio_next() is used by linux/bio.h. Moving it to a separate lean header will allow us to avoid the dependency on linux/mm.h. Signed-off-by: Max Kellermann --- include/linux/mm.h | 20 +------------------- include/linux/mm/folio_next.h | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 19 deletions(-) create mode 100644 include/linux/mm/folio_next.h diff --git a/include/linux/mm.h b/include/linux/mm.h index 0d291ff61db3..e6c2df977abc 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2,6 +2,7 @@ #ifndef _LINUX_MM_H #define _LINUX_MM_H +#include #include #include #include @@ -1922,25 +1923,6 @@ static inline void set_page_links(struct page *page, enum zone_type zone, #define MAX_FOLIO_NR_PAGES MAX_ORDER_NR_PAGES #endif -/** - * folio_next - Move to the next physical folio. - * @folio: The folio we're currently operating on. - * - * If you have physically contiguous memory which may span more than - * one folio (eg a &struct bio_vec), use this function to move from one - * folio to the next. Do not use it if the memory is only virtually - * contiguous as the folios are almost certainly not adjacent to each - * other. This is the folio equivalent to writing ``page++``. - * - * Context: We assume that the folios are refcounted and/or locked at a - * higher level and do not adjust the reference counts. - * Return: The next struct folio. - */ -static inline struct folio *folio_next(struct folio *folio) -{ - return (struct folio *)folio_page(folio, folio_nr_pages(folio)); -} - /** * folio_estimated_sharers - Estimate the number of sharers of a folio. * @folio: The folio. diff --git a/include/linux/mm/folio_next.h b/include/linux/mm/folio_next.h new file mode 100644 index 000000000000..7016e303439c --- /dev/null +++ b/include/linux/mm/folio_next.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_FOLIO_NEXT_H +#define _LINUX_MM_FOLIO_NEXT_H + +#include // for folio_nr_pages() +#include // for nth_page(), needed by folio_page() + +/** + * folio_next - Move to the next physical folio. + * @folio: The folio we're currently operating on. + * + * If you have physically contiguous memory which may span more than + * one folio (eg a &struct bio_vec), use this function to move from one + * folio to the next. Do not use it if the memory is only virtually + * contiguous as the folios are almost certainly not adjacent to each + * other. This is the folio equivalent to writing ``page++``. + * + * Context: We assume that the folios are refcounted and/or locked at a + * higher level and do not adjust the reference counts. + * Return: The next struct folio. + */ +static inline struct folio *folio_next(struct folio *folio) +{ + return (struct folio *)folio_page(folio, folio_nr_pages(folio)); +} + +#endif /* _LINUX_MM_FOLIO_NEXT_H */ From patchwork Tue Mar 12 09:41:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589722 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 A9D02C54E66 for ; Tue, 12 Mar 2024 09:42:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4DD5B8D002F; Tue, 12 Mar 2024 05:42:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 490588D000D; Tue, 12 Mar 2024 05:42:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2B8A98D002F; Tue, 12 Mar 2024 05:42:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 17FBA8D000D for ; Tue, 12 Mar 2024 05:42:02 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id DEB251C08EF for ; Tue, 12 Mar 2024 09:42:01 +0000 (UTC) X-FDA: 81887895642.23.9630CA8 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) by imf22.hostedemail.com (Postfix) with ESMTP id 2A270C000C for ; Tue, 12 Mar 2024 09:41:59 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=L783exgL; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf22.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.43 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236520; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=TT7smv1j1+eH6dLDpyJyxapeCn0BRAoD8ideYTGL8g4=; b=or7lUXBuxbmw4eM+BoKUC83jneaB7+sTyy0GjCshmK1S1qrLQee6xG5BDqJ8qFofCres59 OXnjUf8wTMzQVwzVWIzeBESw0+73wheRhk2UQzEKwH4H+HDVxsQ8Z6p2IxphgtftghZ/UG ih46dzyEGOY+b2tYKRhUoNtXhB+EL/M= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=L783exgL; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf22.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.43 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236520; a=rsa-sha256; cv=none; b=QfmpVkOrS9Y80TtgpQ2wXKVUr7IvpMTeTz+53hnk73buFeUvctU2qYIuTQB5njiJ3QHBzd oJz+fjTYQHwA1j74NXRXsKg0oNZ3Yqt+BrhwrhOju3rmKPlG7PxgAjMXRpevjmQ2k3a+y0 kKH6KqUH/mrA85NhWFR3Q1OJqUEIWTY= Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-a45b6fcd5e8so634487366b.1 for ; Tue, 12 Mar 2024 02:41:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236519; x=1710841319; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TT7smv1j1+eH6dLDpyJyxapeCn0BRAoD8ideYTGL8g4=; b=L783exgLZWCSbgygUuQWKhDDSNPFawpq/+UWvV2rYmm1NkiseMblTMJJHjPvqYXEFA hsDvY/ydRXCgbpBo6RC2zYnILc8NrZDtx66V/urHXUDl4Dg9dcBq+IOHVEvZj3H6Ls8i dsWFVyw/EeS7a8qkZyXs/VY+Fbk++WYoEd02g52B8+WTyYIbpH3Dr4IkoW+PrkDBcBOO 9a9DF0fzozoMaboh3PqpexIKbfNVzdYup6v6os5C3tYNfAQJYaQVa8BkwzZ2DdDgArdP rTHDCstikpiqI88eH930RfHUsHc2mwtyZyxtCP+1F9I/Ymo/KNhXC2c8FDcw8tvCFAnT L2mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236519; x=1710841319; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TT7smv1j1+eH6dLDpyJyxapeCn0BRAoD8ideYTGL8g4=; b=J9e2wt+5LSNC+dAwrmaH3/9cCaLwHiXBgm3evxHg/+dR3hrWFVZ8U7TQ/rTTpmRaj9 UveDzqYRoekHE1KOuI8vuKWHtQmws/QN2F36IfVDYX+AgQML90vo0IopdT/i04cjOiZb 75qnXAhPxEtp8pYF1+Dn7kRJbCQL3WcvA56Qnbet6WrLWdJsjl7JqMNDRKMf0aXol4k6 Q/JBT4VKTp8FHhu5si0iNXTrjDSUyPqqLwFHhKGKefOlpOtoYk9tadex0AlOhw9JDx1R 5J68P8zna91gIT94RWdSfxoeeoxe9DqfdDs0UCVq3qNaOYm1VfQn/IBHlFONvTVA0PUf kscg== X-Forwarded-Encrypted: i=1; AJvYcCUao33dGXW3S7mhc62MVr/zgS0L9tFy86KennSrCAUOTRMgxjLtcwQBevLTfGRH+e1g4J4pbsWg9S2eZ59JUXDKcSo= X-Gm-Message-State: AOJu0Yw7XqKMkPeyRo3+IHw9sD4vD79KbDJX4RDcCLhuOJkNTTZkX3ai PEYvnSo+4NSLRSwkNO1PKYeWwzUxLXFnA3WAE2xN3WWTjWc+io4o5KS2QGLPRks= X-Google-Smtp-Source: AGHT+IH7z82KjX3aHCRWUOCeL5FyYqD0JcQ3ejtaHjG0l89tCOrVbvS2n36rt9l5T0g5qz32g+2nTg== X-Received: by 2002:a17:906:7751:b0:a43:f22e:57a6 with SMTP id o17-20020a170906775100b00a43f22e57a6mr852298ejn.67.1710236518882; Tue, 12 Mar 2024 02:41:58 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:57 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 09/15] linux/mm.h: move devmap-related declarations to mm/devmap_managed.h Date: Tue, 12 Mar 2024 10:41:27 +0100 Message-Id: <20240312094133.2084996-10-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 2A270C000C X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: 4yafjt3ye3bibjkcupc6xidiygz53umn X-HE-Tag: 1710236519-548032 X-HE-Meta: U2FsdGVkX1/oSeo1KvlkXYrqVdxqpJap2TfnvC/K2BLYn4yjvmzIGSKVh4nxHaELKd8WGNmWORJrmTtel17pYtKP7rCDXGEyozpRkK+r5Ye11l38r3GNSU8zWj3aJPvutAo4dVvFVxkwO2CIPg4ESSOH6A2qQ2Zugw2iul9xah0QVjRhH84ONiWoqdtmcekTxfZRJACIyG3b1DXj3o1TZzeENDIMBYuz9En/jcO+wkJNn8njuQH7os1mBIujFbS6dtYF2RcPDszTg8g9G9Hy4IvHS6I/PVLfKu/0Qb07JvpPUcN0rUx9mrWQQCMrrP06fccQTE4X4+Uj6D7ZR2ruA9DolztsnUeJIKvPi0EufOod1IYV+BytqD0ISp5vD46NMNjXacO638ovgetUNHv1xhRMBmKkGqjoFPjU7aMebkcCMcESmiX49M5FkOMFx8DMxsaWXByvo4C6Yo2TUDQmJ4WyLAut80Ds8MFZ1ur+XVs/g+kfndvqlI5lpHEKRzJ3K84RH0EucVhtYRvZejr+IvU29f64hle8KmIEP/ldkyqlIx6lmaG8lGutjiqxbv8YmAu9e2LFsTg8psTgIbtGH3Kqx3SXQccXkWiskp1MhStcvVmuhH5vOiyj0YPDJio+43OZ0hFYrnbNINWpIcwtRrW7Q+bNbmckoYP+Z1xl+Pu9s8u/VOTsHsR+AlR9Rv3tV+snFcfftGcFkljL668nTcMIjM8kxVsouHwkt8PCDbpPBedifbYAfTmbPCZw2KQsAcG5kV2Z873zChbN8Pn22UFUyRukTeMfZklb0q+y1/QePsq6psZ6C7/7k9gA3REkEDnpFa0PxlqVM7HEY/eeIWVfh41SerikWrkP4o+HMEyspbzZRs8PVVYOfTy/QguyIzZG/7fbvLpqDAk8QmlzJZPM3C3JqwS1niLs3oH+LPNM5YW1W58rVuTV7TkuRoX7MhELGpZMfrSM/oyakiL kMspcpeX xn1kWSpforlgAwBguspqgaRATRLX+bZpfCStyWts3PKaAeFUmMei3DBiXisN+vv66Q8SueHeTZVx272e5nloLJU+nNTlh1A7RdJtrcMdZCzXMiE9beyqtatzUJF76NU0Mgeb2pyu9p73i8Bf5n+AHHJnGFMqhZV0B8oZJ 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: List-Subscribe: List-Unsubscribe: Prepare to reduce dependencies on linux/mm.h. put_devmap_managed_page() is called by put_page(). Moving it to a separate header allows us to move put_page() to a separate lean header as well. Signed-off-by: Max Kellermann --- include/linux/mm.h | 25 +-------------------- include/linux/mm/devmap_managed.h | 37 +++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 24 deletions(-) create mode 100644 include/linux/mm/devmap_managed.h diff --git a/include/linux/mm.h b/include/linux/mm.h index e6c2df977abc..61f1312a626e 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2,6 +2,7 @@ #ifndef _LINUX_MM_H #define _LINUX_MM_H +#include #include #include #include @@ -1357,30 +1358,6 @@ vm_fault_t finish_fault(struct vm_fault *vmf); * back into memory. */ -#if defined(CONFIG_ZONE_DEVICE) && defined(CONFIG_FS_DAX) -DECLARE_STATIC_KEY_FALSE(devmap_managed_key); - -bool __put_devmap_managed_page_refs(struct page *page, int refs); -static inline bool put_devmap_managed_page_refs(struct page *page, int refs) -{ - if (!static_branch_unlikely(&devmap_managed_key)) - return false; - if (!is_zone_device_page(page)) - return false; - return __put_devmap_managed_page_refs(page, refs); -} -#else /* CONFIG_ZONE_DEVICE && CONFIG_FS_DAX */ -static inline bool put_devmap_managed_page_refs(struct page *page, int refs) -{ - return false; -} -#endif /* CONFIG_ZONE_DEVICE && CONFIG_FS_DAX */ - -static inline bool put_devmap_managed_page(struct page *page) -{ - return put_devmap_managed_page_refs(page, 1); -} - /* 127: arbitrary random number, small enough to assemble well */ #define folio_ref_zero_or_close_to_overflow(folio) \ ((unsigned int) folio_ref_count(folio) + 127u <= 127u) diff --git a/include/linux/mm/devmap_managed.h b/include/linux/mm/devmap_managed.h new file mode 100644 index 000000000000..0773529d80b2 --- /dev/null +++ b/include/linux/mm/devmap_managed.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_DEVMAP_MANAGED_H +#define _LINUX_MM_DEVMAP_MANAGED_H + +#include // for bool + +struct page; + +#if defined(CONFIG_ZONE_DEVICE) && defined(CONFIG_FS_DAX) + +#include // for DECLARE_STATIC_KEY_FALSE(), static_branch_unlikely() +#include // is_zone_device_page() + +DECLARE_STATIC_KEY_FALSE(devmap_managed_key); + +bool __put_devmap_managed_page_refs(struct page *page, int refs); +static inline bool put_devmap_managed_page_refs(struct page *page, int refs) +{ + if (!static_branch_unlikely(&devmap_managed_key)) + return false; + if (!is_zone_device_page(page)) + return false; + return __put_devmap_managed_page_refs(page, refs); +} +#else /* CONFIG_ZONE_DEVICE && CONFIG_FS_DAX */ +static inline bool put_devmap_managed_page_refs(struct page *page, int refs) +{ + return false; +} +#endif /* CONFIG_ZONE_DEVICE && CONFIG_FS_DAX */ + +static inline bool put_devmap_managed_page(struct page *page) +{ + return put_devmap_managed_page_refs(page, 1); +} + +#endif /* _LINUX_MM_DEVMAP_MANAGED_H */ From patchwork Tue Mar 12 09:41:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589724 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 02E23C54E66 for ; Tue, 12 Mar 2024 09:42:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3D08A8D000D; Tue, 12 Mar 2024 05:42:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 297EA8D0032; Tue, 12 Mar 2024 05:42:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EA1D98D0030; Tue, 12 Mar 2024 05:42:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id BD76B8D000D for ; Tue, 12 Mar 2024 05:42:03 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 77FD6120169 for ; Tue, 12 Mar 2024 09:42:03 +0000 (UTC) X-FDA: 81887895726.06.65B339A Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf24.hostedemail.com (Postfix) with ESMTP id 8A83818000E for ; Tue, 12 Mar 2024 09:42:01 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=FglWLso0; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf24.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236521; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cowoIpweWt3L2bjBHT1kUeTpunMOhbiTNwgqFnKsuAs=; b=D4tziULHApF8fwkXYpVbN8eXohJSnFsWZswcb72u9oEKuOeEJYyJdDvH6RYnAggtlHtKN8 2MuLogpsb70774icjP67cxF6zcJm3quxl9o6S1rowwIvQskhO4iWBg6+CXbniaflHv0KqU j2Q13iUYL3aDjVbeYkFYuGEU9mhY7RU= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=FglWLso0; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf24.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236521; a=rsa-sha256; cv=none; b=2Dqypdnkt2NO/BjKRHreunygw98QMi+CUSLhBW6oKvunOzPzcfW3o+KDqOM4I/KkLoHvjF R/5cYz7GxeIzGv8yies3ONb0vCgwnazPZUvfKg/K78Od9LlpjKVb44yMYtd2+jD1xo3CHV SchhnXOmBaoBmt/2IhJhxMZfEtAud7g= Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a462a1b7754so229096166b.2 for ; Tue, 12 Mar 2024 02:42:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236520; x=1710841320; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cowoIpweWt3L2bjBHT1kUeTpunMOhbiTNwgqFnKsuAs=; b=FglWLso0ZVGF9VmWZygrhbCgEeFSZSg0rh+4QecMmEhEuFfyp77QT8oOp9Ojo4Cqfa IhY16c3cXKaHrbRVyzucgP6Vum6dcq9hrArTk1xvXPj0Gj0OUjucO+C20BkcJ5oMwVcg D6RCim8QurQYgB66q1W9NEsXNPEjQURbwZZN2mHowq7fVYXrZHATOIZSIresccbSpCcZ bDuciGtZ7R0HnDBLk79M5NiaDcKLRY2AWu7WAbWHSN4ZS2Kmv0+ghdSPNeTxFVuuDRk7 SN662Gsk8h4Gs/3Yqay4rEBpiw+DgIolWaTpKJWqE3KJfHOskedBdh8KpglRxeborK6v IYPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236520; x=1710841320; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cowoIpweWt3L2bjBHT1kUeTpunMOhbiTNwgqFnKsuAs=; b=swEWI55+ZZ/Ky8FFdZcsSmuVC5sRdcH28K23R9+vHrvMm0/m0+KIK50JNuxaypOman OEGkUx1gVoUcyE6lN5rotWQjHaNeybwSehTFcf/6aPFoq9ztIXeie4VElkK8DPNk24B/ Kmr/m1Y0izVj/Mo1hSX2fuIsDdRkNkEuJSGgOMEsAOF3MsIKaVR0cBF8OBoIxQHSXcfs t8SsM9PNlQOi/cTNyglqjUzImKBlDqXGL1T7sHux2D7bJiinVhNOTNxcg4fEh0ulYEcC UD5MtLe8w09T1nG9SfLePkmD2JOVp4uvxi1pUGV86DbTrDu2teYeJ1Z28HN7PClFGhYa mQpA== X-Forwarded-Encrypted: i=1; AJvYcCWyJ5cLpceZr7Lv0TI5eP4wmIeXq/mDeKZ1utyYU5edExiVmg+I0vVd7p5Y5h7kmzPeNoEC5ReaQ1LE3R7DRAr1H4Q= X-Gm-Message-State: AOJu0YwP0Vsfx9gk88TxPQDX9sZR847aavzP32oaYfrW6ZOpuGfj2EGu SuKuZliyDfKUGTNVlDcaVLqjTqkxwABf2glmLQiOVUAtvyR1+G2bCcEu/dLVtKTg1D3yeh937Oi Y X-Google-Smtp-Source: AGHT+IGPpXWDroxQd4i0sT/HxrCfRJ8qOljXYjIyFDDgh8QZaaJHbQtjUCu33nAKlDQHqMsEteNl8w== X-Received: by 2002:a17:907:d40d:b0:a46:17dd:33da with SMTP id vi13-20020a170907d40d00b00a4617dd33damr5713928ejc.29.1710236520027; Tue, 12 Mar 2024 02:42:00 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.41.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:41:59 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 10/15] linux/mm.h: move usage count functions to mm/folio_usage.h Date: Tue, 12 Mar 2024 10:41:28 +0100 Message-Id: <20240312094133.2084996-11-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 8A83818000E X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: zfuop3fo1nxadh9sgz7qzj1hed1x8ggh X-HE-Tag: 1710236521-968984 X-HE-Meta: U2FsdGVkX18PixhdrV55xnWu1j3l13qwBV5QBK4bUvCU+KtJF5rCuORl28z355dYCeqZFeB0c17HnJlWaQ3ua7AM7lKiFypHDmoISTvjexm2tq77yq0c2qfS8fj0t7l7TOdhAlb3r9NGyh1BKqtHKnDdFxJcCurmn/3+Jo2t8/MH1kZYbxNWr5tgFyRqJQ5HZfyMdTqpw0HumDWhsix0TdM0cLVOK0Eswb5766tKU50jKUDA66K2wYe9dwo7t3J/YWsn+xiAFhps6Sm0TJu1LTSD8Uvcu1w+ZGWc5C44YkP+haRwyie+pseXAiAwr75tSlrCrIzrk6cSNYLYb4WhHF2LZ205+TtzaJ9b2pUDas72AUBEJrhVmrWi9GBT4vOFDm5/neB2qBWA0D6godFGfFfH1fO0sCM8s9UB1UWMh6WGVgNtDVOhRaRz0UAhifBs9AwNjpBSO9h967Dbt89ob991gZkjvj81LP8V6woo0Iec8pS7G3/IQ8bpeXO0O5QpbUrUMOGL204Jk5iSUjkUyO7FTXS2exlptb1vESCf+S7ulru5tDMLDa4Iz2y9EfAau15XFMj+AfW5hFOUeHvLE3EgHtqUuDQ/ZQyZMqlqMlGcHwrDA/QV7sWrjfhyrQFYm3v6yOejuwI+kQ9y/mxIWyjF/AK15hLBbAIsuttXwQvWKD9TiE+xCw41iojVjF2HUPA11yTNr6yLL3RsbPm7vYhc9prlIrFsfKP9QiwMzoiHj5JKeVX5mstOu9eD+hH4j1psxmOigjy++6hFXZekxJPm9/RAFu99SMRS2YT3lv0DLybcM03Q2534W4v3r+ZTidJPmWDPJshB50bReCqFWUF0ysX6pprqiU3Tj91RSIrVNwkfKlNhnNSp4avGchWlEWz7BvgLK/mn6WX1Mmg6OAruNBViCJtzZASV85fh5fwxINQ/cig0HIBA9JiqEBMfCUawEPWV4jeIMituMGv Oq9fuLsJ tFF+URH1J1T6NjZoQVvuj7biViI2gIK8DHKC27Aof4X5HI8guCPBgurhsQRcviRvlLC4d+wJJfVMkZFow6Anm1rXYpbIKujJ67gUu1NQgV8pdyTatzlDqPqWlVM48LyBQLcGCXhaoD74/6MhfK01GjwH7cjZedywRjJR4L5apxZBa2V/2vHPqW2JMZjr6GENJscse2S2q2nCEvr10CbMhgPTZiWh+kqfnCADxFf8a05gY690oFp1axQNuF4ehQYm2WF/j+ZdePaLf8Tv5ukSUxUslRf1euM3YJ4vgOl/cFeJ5AJTLHA0cHNAdAYJwhGae6LCPyUGPca4OUnp92UxBBWjdGpSgH+HU8WxREH1tmiDAFZz/ffQSgbFnVhWt80mmNAJU76hU1CsTPbpLRSIePMOCBoQ2zSwKkgi+7SJVq+/Iyh8= 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: List-Subscribe: List-Unsubscribe: Prepare to reduce dependencies on linux/mm.h. This new header contains wrappers for the low-level functions from page_ref.h. By having those higher-level functions in a separate header, we can avoid their additional dependencies in the page_ref.h. Having these in a separate header will allow eliminating the dependency on linux/mm.h from these headers: - linux/skbuff.h - linux/swap.h Signed-off-by: Max Kellermann --- include/linux/mm.h | 172 +------------------------------ include/linux/mm/folio_usage.h | 182 +++++++++++++++++++++++++++++++++ 2 files changed, 183 insertions(+), 171 deletions(-) create mode 100644 include/linux/mm/folio_usage.h diff --git a/include/linux/mm.h b/include/linux/mm.h index 61f1312a626e..e8a914e7bebd 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2,9 +2,9 @@ #ifndef _LINUX_MM_H #define _LINUX_MM_H -#include #include #include +#include #include #include #include @@ -1073,51 +1073,6 @@ struct inode; #include -/* - * Methods to modify the page usage count. - * - * What counts for a page usage: - * - cache mapping (page->mapping) - * - private data (page->private) - * - page mapped in a task's page tables, each mapping - * is counted separately - * - * Also, many kernel routines increase the page count before a critical - * routine so they can be sure the page doesn't go away from under them. - */ - -/* - * Drop a ref, return true if the refcount fell to zero (the page has no users) - */ -static inline int put_page_testzero(struct page *page) -{ - VM_BUG_ON_PAGE(page_ref_count(page) == 0, page); - return page_ref_dec_and_test(page); -} - -static inline int folio_put_testzero(struct folio *folio) -{ - return put_page_testzero(&folio->page); -} - -/* - * Try to grab a ref unless the page has a refcount of zero, return false if - * that is the case. - * This can be called when MMU is off so it must not access - * any of the virtual mappings. - */ -static inline bool get_page_unless_zero(struct page *page) -{ - return page_ref_add_unless(page, 1, 0); -} - -static inline struct folio *folio_get_nontail_page(struct page *page) -{ - if (unlikely(!get_page_unless_zero(page))) - return NULL; - return (struct folio *)page; -} - extern int page_is_ram(unsigned long pfn); enum { @@ -1266,8 +1221,6 @@ static inline struct folio *virt_to_folio(const void *x) return page_folio(page); } -void __folio_put(struct folio *folio); - void put_pages_list(struct list_head *pages); void split_page(struct page *page, unsigned int order); @@ -1358,129 +1311,6 @@ vm_fault_t finish_fault(struct vm_fault *vmf); * back into memory. */ -/* 127: arbitrary random number, small enough to assemble well */ -#define folio_ref_zero_or_close_to_overflow(folio) \ - ((unsigned int) folio_ref_count(folio) + 127u <= 127u) - -/** - * folio_get - Increment the reference count on a folio. - * @folio: The folio. - * - * Context: May be called in any context, as long as you know that - * you have a refcount on the folio. If you do not already have one, - * folio_try_get() may be the right interface for you to use. - */ -static inline void folio_get(struct folio *folio) -{ - VM_BUG_ON_FOLIO(folio_ref_zero_or_close_to_overflow(folio), folio); - folio_ref_inc(folio); -} - -static inline void get_page(struct page *page) -{ - folio_get(page_folio(page)); -} - -static inline __must_check bool try_get_page(struct page *page) -{ - page = compound_head(page); - if (WARN_ON_ONCE(page_ref_count(page) <= 0)) - return false; - page_ref_inc(page); - return true; -} - -/** - * folio_put - Decrement the reference count on a folio. - * @folio: The folio. - * - * If the folio's reference count reaches zero, the memory will be - * released back to the page allocator and may be used by another - * allocation immediately. Do not access the memory or the struct folio - * after calling folio_put() unless you can be sure that it wasn't the - * last reference. - * - * Context: May be called in process or interrupt context, but not in NMI - * context. May be called while holding a spinlock. - */ -static inline void folio_put(struct folio *folio) -{ - if (folio_put_testzero(folio)) - __folio_put(folio); -} - -/** - * folio_put_refs - Reduce the reference count on a folio. - * @folio: The folio. - * @refs: The amount to subtract from the folio's reference count. - * - * If the folio's reference count reaches zero, the memory will be - * released back to the page allocator and may be used by another - * allocation immediately. Do not access the memory or the struct folio - * after calling folio_put_refs() unless you can be sure that these weren't - * the last references. - * - * Context: May be called in process or interrupt context, but not in NMI - * context. May be called while holding a spinlock. - */ -static inline void folio_put_refs(struct folio *folio, int refs) -{ - if (folio_ref_sub_and_test(folio, refs)) - __folio_put(folio); -} - -void folios_put_refs(struct folio_batch *folios, unsigned int *refs); - -/* - * union release_pages_arg - an array of pages or folios - * - * release_pages() releases a simple array of multiple pages, and - * accepts various different forms of said page array: either - * a regular old boring array of pages, an array of folios, or - * an array of encoded page pointers. - * - * The transparent union syntax for this kind of "any of these - * argument types" is all kinds of ugly, so look away. - */ -typedef union { - struct page **pages; - struct folio **folios; - struct encoded_page **encoded_pages; -} release_pages_arg __attribute__ ((__transparent_union__)); - -void release_pages(release_pages_arg, int nr); - -/** - * folios_put - Decrement the reference count on an array of folios. - * @folios: The folios. - * - * Like folio_put(), but for a batch of folios. This is more efficient - * than writing the loop yourself as it will optimise the locks which need - * to be taken if the folios are freed. The folios batch is returned - * empty and ready to be reused for another batch; there is no need to - * reinitialise it. - * - * Context: May be called in process or interrupt context, but not in NMI - * context. May be called while holding a spinlock. - */ -static inline void folios_put(struct folio_batch *folios) -{ - folios_put_refs(folios, NULL); -} - -static inline void put_page(struct page *page) -{ - struct folio *folio = page_folio(page); - - /* - * For some devmap managed pages we need to catch refcount transition - * from 2 to 1: - */ - if (put_devmap_managed_page(&folio->page)) - return; - folio_put(folio); -} - /* * GUP_PIN_COUNTING_BIAS, and the associated functions that use it, overload * the page's refcount so that two separate items are tracked: the original page diff --git a/include/linux/mm/folio_usage.h b/include/linux/mm/folio_usage.h new file mode 100644 index 000000000000..4a7e9cd74909 --- /dev/null +++ b/include/linux/mm/folio_usage.h @@ -0,0 +1,182 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_FOLIO_USAGE_H +#define _LINUX_MM_FOLIO_USAGE_H + +#include // for put_devmap_managed_page() +#include // for VM_BUG_ON_PAGE() +#include // for struct folio +#include + +struct folio_batch; + +/* + * Methods to modify the page usage count. + * + * What counts for a page usage: + * - cache mapping (page->mapping) + * - private data (page->private) + * - page mapped in a task's page tables, each mapping + * is counted separately + * + * Also, many kernel routines increase the page count before a critical + * routine so they can be sure the page doesn't go away from under them. + */ + +/* + * Drop a ref, return true if the refcount fell to zero (the page has no users) + */ +static inline int put_page_testzero(struct page *page) +{ + VM_BUG_ON_PAGE(page_ref_count(page) == 0, page); + return page_ref_dec_and_test(page); +} + +static inline int folio_put_testzero(struct folio *folio) +{ + return put_page_testzero(&folio->page); +} + +/* + * Try to grab a ref unless the page has a refcount of zero, return false if + * that is the case. + * This can be called when MMU is off so it must not access + * any of the virtual mappings. + */ +static inline bool get_page_unless_zero(struct page *page) +{ + return page_ref_add_unless(page, 1, 0); +} + +static inline struct folio *folio_get_nontail_page(struct page *page) +{ + if (unlikely(!get_page_unless_zero(page))) + return NULL; + return (struct folio *)page; +} + +void __folio_put(struct folio *folio); + +/* 127: arbitrary random number, small enough to assemble well */ +#define folio_ref_zero_or_close_to_overflow(folio) \ + ((unsigned int) folio_ref_count(folio) + 127u <= 127u) + +/** + * folio_get - Increment the reference count on a folio. + * @folio: The folio. + * + * Context: May be called in any context, as long as you know that + * you have a refcount on the folio. If you do not already have one, + * folio_try_get() may be the right interface for you to use. + */ +static inline void folio_get(struct folio *folio) +{ + VM_BUG_ON_FOLIO(folio_ref_zero_or_close_to_overflow(folio), folio); + folio_ref_inc(folio); +} + +static inline void get_page(struct page *page) +{ + folio_get(page_folio(page)); +} + +static inline __must_check bool try_get_page(struct page *page) +{ + page = compound_head(page); + if (WARN_ON_ONCE(page_ref_count(page) <= 0)) + return false; + page_ref_inc(page); + return true; +} + +/** + * folio_put - Decrement the reference count on a folio. + * @folio: The folio. + * + * If the folio's reference count reaches zero, the memory will be + * released back to the page allocator and may be used by another + * allocation immediately. Do not access the memory or the struct folio + * after calling folio_put() unless you can be sure that it wasn't the + * last reference. + * + * Context: May be called in process or interrupt context, but not in NMI + * context. May be called while holding a spinlock. + */ +static inline void folio_put(struct folio *folio) +{ + if (folio_put_testzero(folio)) + __folio_put(folio); +} + +/** + * folio_put_refs - Reduce the reference count on a folio. + * @folio: The folio. + * @refs: The amount to subtract from the folio's reference count. + * + * If the folio's reference count reaches zero, the memory will be + * released back to the page allocator and may be used by another + * allocation immediately. Do not access the memory or the struct folio + * after calling folio_put_refs() unless you can be sure that these weren't + * the last references. + * + * Context: May be called in process or interrupt context, but not in NMI + * context. May be called while holding a spinlock. + */ +static inline void folio_put_refs(struct folio *folio, int refs) +{ + if (folio_ref_sub_and_test(folio, refs)) + __folio_put(folio); +} + +void folios_put_refs(struct folio_batch *folios, unsigned int *refs); + +/* + * union release_pages_arg - an array of pages or folios + * + * release_pages() releases a simple array of multiple pages, and + * accepts various different forms of said page array: either + * a regular old boring array of pages, an array of folios, or + * an array of encoded page pointers. + * + * The transparent union syntax for this kind of "any of these + * argument types" is all kinds of ugly, so look away. + */ +typedef union { + struct page **pages; + struct folio **folios; + struct encoded_page **encoded_pages; +} release_pages_arg __attribute__ ((__transparent_union__)); + +void release_pages(release_pages_arg, int nr); + +/** + * folios_put - Decrement the reference count on an array of folios. + * @folios: The folios. + * + * Like folio_put(), but for a batch of folios. This is more efficient + * than writing the loop yourself as it will optimise the locks which need + * to be taken if the folios are freed. The folios batch is returned + * empty and ready to be reused for another batch; there is no need to + * reinitialise it. + * + * Context: May be called in process or interrupt context, but not in NMI + * context. May be called while holding a spinlock. + */ +static inline void folios_put(struct folio_batch *folios) +{ + folios_put_refs(folios, NULL); +} + +static inline void put_page(struct page *page) +{ + struct folio *folio = page_folio(page); + + /* + * For some devmap managed pages we need to catch refcount transition + * from 2 to 1: + */ + if (put_devmap_managed_page(&folio->page)) + return; + folio_put(folio); +} + +#endif /* _LINUX_MM_FOLIO_USAGE_H */ From patchwork Tue Mar 12 09:41:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589723 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 3DA99C54E66 for ; Tue, 12 Mar 2024 09:42:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 099528D0031; Tue, 12 Mar 2024 05:42:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 049768D000D; Tue, 12 Mar 2024 05:42:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DBC808D0031; Tue, 12 Mar 2024 05:42:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id C18F78D0030 for ; Tue, 12 Mar 2024 05:42:03 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 9B6C0160F68 for ; Tue, 12 Mar 2024 09:42:03 +0000 (UTC) X-FDA: 81887895726.02.EEBFA04 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) by imf12.hostedemail.com (Postfix) with ESMTP id DF4F540019 for ; Tue, 12 Mar 2024 09:42:01 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="DqQUIV/R"; spf=pass (imf12.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236522; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=KC2kNgBeF7Vel8Ro1rxtb7kBWctFnYPn6ChmmeyuWYw=; b=RjTwjuqthEq1IX2Vs5WfDmUDL2AT1U8vZ0mW0wKoDAfLALE0nVlne3ZXzAsEZ9tKoMYMEB aQht0RBK/wpJ3X8spqXowSIpF27g82/mf5GS1ViJB7Wy7coxTyvnsQrYop//9aX+wOW706 te5MkhD831AaI+o1JIIVnLuiv8uHg9c= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="DqQUIV/R"; spf=pass (imf12.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236522; a=rsa-sha256; cv=none; b=kYSbEd1hU19vqGMdPmkLbDLB1PhaLbafDtpk6XR6AKFi+gz0zDqtP5kKnot6MMJ54qH+Qq R+oRHSBv64uAXtyoFZmf9oaUeNYD3GYOXr5AKoVNEU4i+N890XPo+P6l9ISBiEDoR6ZmPC Fr2LdJ49RA1jGbaSZ9mv5HmSG6OE/zo= Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-563cb3ba9daso6184914a12.3 for ; Tue, 12 Mar 2024 02:42:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236520; x=1710841320; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KC2kNgBeF7Vel8Ro1rxtb7kBWctFnYPn6ChmmeyuWYw=; b=DqQUIV/RYmSLTomBvE+yynCaQQOBfI/+qvpNBO3jpdJAxbcgn9lBfhGL/VfRiZe0Dh 4xJdtVaaVjuTMBlw86FSvzNFP6Qum5CKk7MFW8k9IMHPQ4zG+hDHuFOcYXSLDnPhEnjz aOghy67ElfgcB3SshPYd2WejFNHLQNeF6Bm4RVFnaSbEyBt+FYBOUV69NXN3btgol++l XkBI1kke/mGWwkPt9obqRK3cqGOKexyN01JFqPzk2fklNGnIH5w5Gcxjng8gwEGSzm4V rp/8+LoMgOO1z7KmZNa4dUgfL94ljkUuXTR9wnlEobN1sRBp6fg7yA29PAMCWdqesEeg 7VnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236520; x=1710841320; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KC2kNgBeF7Vel8Ro1rxtb7kBWctFnYPn6ChmmeyuWYw=; b=LwCF0LKMQCBX9UQnk+N9IWw77/kN6jJi4PMNl5U/qpsWNrDkK07yc74Vby/KH9zAi9 JqoJs6OL/hBTACgXo+q7GYiCE/fY+v1Szufa34ZJmQWoEutpfWmgBDbtd8JDG4Iwv1ww MPN58BpAjpnyBdgm+c49GwzVaAUH06RVR4WJvs9CSmLIyYuHmeI+maLicXLKCu5moFbh oKseEZE1lVDpp9nu8Us3e6jASMqkhHwVDRZGXE972gGR86XUvk+UJg4cHTa7+ftsWLbt GrzFtqn8zoePOq9HdevbGIR1ocRbvV/0IDtEuSVobDMt9AGH77MixOAT8i5pLI9QGYpd LI6g== X-Forwarded-Encrypted: i=1; AJvYcCXzktz+T4Jd9N7AfXrbQc0VkwXeWcakyvaD+sBQKcrVWdWtzOiowYKhPhspxLMOeoxRVNKLc8Xh5MLyzdWDUrUVrvg= X-Gm-Message-State: AOJu0YwAdTfW2sRvldwCwAeWVslqsELDJk0GXr02U3DDzxYOHY54jTh8 mW7RmWSYVoetuL15L332hKrTHK6YLg03N8KXRmOzCZn1vzoQA6vIdjdBM/M9vZs= X-Google-Smtp-Source: AGHT+IE7UDJ1nLsSaEjUG1+PH6IJCzOExfGwyVhrMeJ4rHCcxaB2l8oErbSbMLUVuRymbgh224TGQw== X-Received: by 2002:a17:907:3594:b0:a43:f182:66c4 with SMTP id ao20-20020a170907359400b00a43f18266c4mr5390555ejc.17.1710236520620; Tue, 12 Mar 2024 02:42:00 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.42.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:42:00 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 11/15] linux/mm.h: move page_zone_id() and more to mm/folio_zone.h Date: Tue, 12 Mar 2024 10:41:29 +0100 Message-Id: <20240312094133.2084996-12-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: DF4F540019 X-Rspam-User: X-Stat-Signature: 95fu6you3sbw56oacsxkcmkr3t1cztad X-Rspamd-Server: rspam01 X-HE-Tag: 1710236521-380798 X-HE-Meta: U2FsdGVkX1+CrLmQIiiFJ9odK3S5l75XZzx9GeniSvD9/Wp56u+2iS4XE/vIca+Y+H9tp1hOEasJCw8097J+0Ka8sJQoVoruOeHVXcmh5z7qjk/BQfgoP2jKAgKC3yYWeUriUcEQRxmgtTk/j772r2iXXedMIMzO6af0/LyIZ97Ue7buIgOuP2pak1yeUsTqcJ2ddhSZtoAfUrd0Zo3SXhadjCJDats1sq9tvq3ATHeW1Dn+brV+exyvpVifUf90N6uk4bv9GnkXmEDQuoO/MsJI6OZyOu9YzdqNT+GWBjsvEJaKK1+tt98lLH3//mKTiZyPTUc0Hscp8yFDrHcYwKi4/m7xzeLsPDdMA5SWSUd5SrLuNWO8wZCEz6HqpZQkqNU4kD8CG7j33JNXLMV5yGPXPIReOAdcUfgVtKe9UY4vc0BtEYj8EmUaQrN7uukV6k+YlTZQr0oHvkj+QrNZcGtMuWXyBhWo3ThyULsPCm/iH4QVBTqenkhLXuIHwESFqr4K5AXZjwDWgwV63an/lkGgEzT1aYipFuMwIF/zJA0oUe3/jND3/G3J5f26aLEFWEwEgsQ5QKwjjoYkE4FV3CXxW8qDuJSdrxw3S80qnmcS4M0NnVAnUUi/z3z3HSkV+Q+E8qo8GmfNIZGkXLngBZUF9qXDXZ4G8wq8ZcxGm+0/c1Tl/vPT0XxV1+/aFMmcOxxTV/6g8ARCOlFkQwxqMWYcdqlSikHElhX+D/3OFMM2kmjG1sVzjC/Rdn6PDr0t70qR4V50CSb79D5btwkIxDs4kKjA7Ru939ABmczFGpSQTsesP2ZLWsr21pIBnTP4bZpyPc7G2GmNOoB74c2gzr4j/ELXYOeFEFGkVHNG5iu5E7T3CsnW4V+q0zMhMsPJlXASbVlaRO5aIgOesgOsM/xEH7XzSCxrzGmVc05N3DIu4jzhhHLXlOmHDTkR1ND4V4OS8Pp3xL4iKfCCUfv uoBTQnML DbyvczUbjtX/68O5yh+bDS2MWc6NJyo2Vm79/vJbGLa+so4XMGCgGqe/WgtQjYacUi8wyejcrnmIcJjMOkX7QGZyPtFLqdQZmlx0j0yLS7toFJ8aZbNFh6CWfa1mdKa8HWlCcM/jWlYls6ydcK57jWGLWjhEmyVWPibRe X-Bogosity: Ham, tests=bogofilter, spamicity=0.000008, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This is needed to eliminate linux/skbuff.h's dependency on linux/mm.h. Signed-off-by: Max Kellermann --- include/linux/mm.h | 28 +-------------------------- include/linux/mm/folio_zone.h | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 27 deletions(-) create mode 100644 include/linux/mm/folio_zone.h diff --git a/include/linux/mm.h b/include/linux/mm.h index e8a914e7bebd..b3f83fb26aca 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -1370,33 +1371,6 @@ static inline bool is_nommu_shared_mapping(vm_flags_t flags) } #endif -/* - * The identification function is mainly used by the buddy allocator for - * determining if two pages could be buddies. We are not really identifying - * the zone since we could be using the section number id if we do not have - * node id available in page flags. - * We only guarantee that it will return the same value for two combinable - * pages in a zone. - */ -static inline int page_zone_id(struct page *page) -{ - return (page->flags >> ZONEID_PGSHIFT) & ZONEID_MASK; -} - -#ifdef NODE_NOT_IN_PAGE_FLAGS -int page_to_nid(const struct page *page); -#else -static inline int page_to_nid(const struct page *page) -{ - return (PF_POISONED_CHECK(page)->flags >> NODES_PGSHIFT) & NODES_MASK; -} -#endif - -static inline int folio_nid(const struct folio *folio) -{ - return page_to_nid(&folio->page); -} - #ifdef CONFIG_NUMA_BALANCING /* page access time bits needs to hold at least 4 seconds */ #define PAGE_ACCESS_TIME_MIN_BITS 12 diff --git a/include/linux/mm/folio_zone.h b/include/linux/mm/folio_zone.h new file mode 100644 index 000000000000..572fe37068f1 --- /dev/null +++ b/include/linux/mm/folio_zone.h @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_FOLIO_ZONE_H +#define _LINUX_MM_FOLIO_ZONE_H + +#include // for struct page, struct folio +#include // for ZONEID_*, NODES_* +#include // for PF_POISONED_CHECK() + +/* + * The identification function is mainly used by the buddy allocator for + * determining if two pages could be buddies. We are not really identifying + * the zone since we could be using the section number id if we do not have + * node id available in page flags. + * We only guarantee that it will return the same value for two combinable + * pages in a zone. + */ +static inline int page_zone_id(struct page *page) +{ + return (page->flags >> ZONEID_PGSHIFT) & ZONEID_MASK; +} + +#ifdef NODE_NOT_IN_PAGE_FLAGS +int page_to_nid(const struct page *page); +#else +static inline int page_to_nid(const struct page *page) +{ + return (PF_POISONED_CHECK(page)->flags >> NODES_PGSHIFT) & NODES_MASK; +} +#endif + +static inline int folio_nid(const struct folio *folio) +{ + return page_to_nid(&folio->page); +} + +#endif /* _LINUX_MM_FOLIO_ZONE_H */ From patchwork Tue Mar 12 09:41:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589725 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 2598FC54E66 for ; Tue, 12 Mar 2024 09:42:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 46CAF8D0032; Tue, 12 Mar 2024 05:42:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3C8418D0030; Tue, 12 Mar 2024 05:42:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F3CC98D0032; Tue, 12 Mar 2024 05:42:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D926A8D0030 for ; Tue, 12 Mar 2024 05:42:04 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id B3F891C08D2 for ; Tue, 12 Mar 2024 09:42:04 +0000 (UTC) X-FDA: 81887895768.26.3318207 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf17.hostedemail.com (Postfix) with ESMTP id BD5FA40007 for ; Tue, 12 Mar 2024 09:42:02 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=AXbw08Ib; spf=pass (imf17.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236522; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=i50xlwbZc74AakEZHNdRuLF9vXbOX6ErFGehWmkuapg=; b=xq5AqxXwOOED1a7pcPf4Rc/AwgnrlOGZxM2eU0I31qFOrBxSU5wF81JzVbFy6akgzsZ/Dh IyZJLWcaivII2hgY2BaOdcDC3WBHT5Y1uZIXRwQQLd4nRZJot9bW0woqlag980CjbxzQQs yIQJ+nMDaFmnV4bUPqTbqWPsGGZLxUc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236522; a=rsa-sha256; cv=none; b=D9ZjhS+P4v0Ynwlu2S3BTT5tOILL0D2Ln2H87unF8qz6opJ/gUvnEk0D9XKJ4vpCdAwKtL Is9G8XrdKL4ILCc/7oJlgaYt3PuEue7SnOKLExxWvoRBF6cFBHPV9trxO+uig8DoP9x74Y MSayfpukLClezLF5wiQ4zg/ObKVVWJs= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=AXbw08Ib; spf=pass (imf17.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-5684ea117a3so4036089a12.0 for ; Tue, 12 Mar 2024 02:42:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236521; x=1710841321; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=i50xlwbZc74AakEZHNdRuLF9vXbOX6ErFGehWmkuapg=; b=AXbw08IbVbl2Q7rDjvxHlGd/Q4i2X7oYaOychnl33sgVDSRYgbcQ2w3yNbhXUfvqyr bWWZcr9mfjPgJBQzV7ORhIRbe+30Muk2J78IHBeOKUbk4BNQsYdc8d0v3hUEJaW73TSQ p4jeXI5jt2m0xf6AawY2dHLcDzGcVeV/i4EWDSwLxid5/skitBMu4F4PSiXTxIj53EHy qp3IOaIkZG7NEzHXqJMGL6rmT/MUmFbRjOlLzPinKw0VehMJPjRB1xX4m6nmFLE0hrKM TW9gaiTfK65CPR4S58pnLPYUTYDOhZI4Fr6rmX19Ogr8IHvUGJPz8TYAyYVHB53UJi9K kd1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236521; x=1710841321; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=i50xlwbZc74AakEZHNdRuLF9vXbOX6ErFGehWmkuapg=; b=qSsB6mbzwg9kBvhh78mOpE+9C5DAvvV+JZjrHAUAvA7ZseTACJSNWaMRgfRKGUKGM6 r7gMSgH1AA1f2Tj9R0ADSs06WYWe36zxYbH27MldQBJy41cIFP3Zcjyv3PNme/SbFAOm 6Q1DQqsltPF7A3mdIHqhJ45iu0UYHhgxAuECCKnQP2lVf7djiJylPcOqhmUIcJxs0Fco bpDwOZLmjgjNw6P7zrHlXaRm9F3+Ocz9QyB90k3miXhpy3t7dMY4GDR7XrjsQB5fetN9 8Si72QpLPzqXyrTybW2KWMwmsYiP7poF4uMrgUFIV54FXPrkygwlS8M9E064o5PveRU2 +KBw== X-Forwarded-Encrypted: i=1; AJvYcCWxJ09gY6YsfyDIrpXT/n45zjve2ZUNBV9d8/H3zs086stvzzd+GYo+anoAG3eydWtBSWcVlcq/CeQf+3gQSzsBbns= X-Gm-Message-State: AOJu0YxNgq4KxajA67GbLEkpMsXOloLyRkTeVEEl84hLzmA5AuiAQUz2 1f7mQ8v3CJA1IUgwDQdlbD7ESaUzcQXMJZRK71raoc3hu+n1gz73A0HGqM2X/d4= X-Google-Smtp-Source: AGHT+IHE1rmIWCBb38RKNMnxPLtWxqbctrPPIxbV0WrCoKWmsRzG7Lzagrq8yH3gH7FOwHCKd2fZew== X-Received: by 2002:a17:907:7714:b0:a45:a98f:2cf7 with SMTP id kw20-20020a170907771400b00a45a98f2cf7mr5679209ejc.57.1710236521219; Tue, 12 Mar 2024 02:42:01 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.42.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:42:00 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 12/15] linux/mm.h: move pfmemalloc-related functions to pfmemalloc.h Date: Tue, 12 Mar 2024 10:41:30 +0100 Message-Id: <20240312094133.2084996-13-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: BD5FA40007 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: xq4npshyahigr1hzcbycp9yd5k18r6td X-HE-Tag: 1710236522-925372 X-HE-Meta: U2FsdGVkX19Keep/L4YQWkJNiP8EaFJqT9Jc/u7wsxVhdxXVBS2HjV408PnABvnJQLOFyJfkHMMBPetOJh75xRnLF0J4l6s2iY85uAfw/Ahr95X9S64M1SEapJt6ZYnBL6R/e5ZnsR9iwJitPgV6sWXN0m+m/l903Wy9MuVtNu9A3+n30tX97zCAOuufli75H2dZxeVrdKxD/A19dVEsiPLAHwOkAWhCQYyGWKB8n3YTtgCxkIvSgM3tXUDhei8k+xtO5wW3EbG7yAl0l+hR9ViRN9qARpwIg+FlqG/wu+wlT2QVIrilOmzDEszN1Qeg8teIwiXXo239uov40OmqoXqBaspCYlIq+FBM7KLkfPNFbzFCGf9sPEmtWl4XZuCs7vVb+Hyqx91LRwAyBMotYG5oe4nyQKhpkUtP2XQAMFxCkVML/O91l/6waVyIhb/QZQoSAx6RgRYmYiN5oJ3o6Zr5DHGAU2PwkKJ9EMC4RpAY8hgZM9XKyFd0qlMHniNEmoC98Azk+pGqhfkXP5IwlBRevWBobZnvhziXCoVkLwvFelAWtMw5e5Xms1F4BHbJh4+4d5PNtzIcQGWjEte/OmrmYkibPgKi8I3+AI7BLzqAm51FhDOc5lKQOyxLK7G2ROUyIAf+hxhJ6XheE6WyWRjP4JaPdqpltAeW7rftHWzuskOOortBQY6/tHyQpGxYqhoSa6TiHXAofJy22CKc5/m2EcQMo/bTXug31OGkahurP0cRVxNqWT+eTFsB/PhmemA3wNjo4DZUfKYjb898lT+5AEtH3UdX3cIQg3fFFnOZDjqbnuw8r3REBb/5GDk7Tde9bxdgvIB1oW39w75X1Nf5zSEaSyvMdIABVfsGn0NZyoY/VOroUNRs57GmbkDqVC9DUFYOzBvFglCjOL6yeRt/koJihT89fzre/aD6GO3SD/X9pBoJeGXVVZqMLYfSzLkJW4NwnnikMkWBcFs gzrWgUfr GJJyB8z1+XlwrkOSUiXZMQny8e2mmyOZ18vg7VDXQBzY8ScB/DdlaWcCCDSxOBzVZzLszGwv5kxah5oNf1NymVrCM7JU4y9raXXE4uHOCJyXPPCgfy3iWHS1HWbP8teblROcMsN6D/uKYVPnvOUfoJJcw1YT6UXVlUAe+UXghWfukkNWiSZI9D6/cRr25aAnwAIMKkOV9Rwx8j95e6oaUATQG70jnSGaynhWgmnqRHhXgD9FPIFFPGW3l2j+w+4TSgBIBqJB4ZJa35KxkUV07fGgr9oWDMSKwXGlDXoR5wALD2osmx0MKGU3nmL1bOX4+f/dKHBaibvBz6vbGKCjtPb5KbXBpGU+qceZ+M000yqN9nYY/hdoetOEvgI+K4P7hSiTjySJtfwVgHxuQB20+TeZnsvCn7MXkfuND X-Bogosity: Ham, tests=bogofilter, spamicity=0.000089, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: This is needed to eliminate linux/skbuff.h's dependency on linux/mm.h. Signed-off-by: Max Kellermann --- include/linux/mm.h | 45 +----------------------------- include/linux/mm/pfmemalloc.h | 52 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 44 deletions(-) create mode 100644 include/linux/mm/pfmemalloc.h diff --git a/include/linux/mm.h b/include/linux/mm.h index b3f83fb26aca..07262ae43c5d 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -1763,50 +1764,6 @@ static inline pgoff_t page_index(struct page *page) return page->index; } -/* - * Return true only if the page has been allocated with - * ALLOC_NO_WATERMARKS and the low watermark was not - * met implying that the system is under some pressure. - */ -static inline bool page_is_pfmemalloc(const struct page *page) -{ - /* - * lru.next has bit 1 set if the page is allocated from the - * pfmemalloc reserves. Callers may simply overwrite it if - * they do not need to preserve that information. - */ - return (uintptr_t)page->lru.next & BIT(1); -} - -/* - * Return true only if the folio has been allocated with - * ALLOC_NO_WATERMARKS and the low watermark was not - * met implying that the system is under some pressure. - */ -static inline bool folio_is_pfmemalloc(const struct folio *folio) -{ - /* - * lru.next has bit 1 set if the page is allocated from the - * pfmemalloc reserves. Callers may simply overwrite it if - * they do not need to preserve that information. - */ - return (uintptr_t)folio->lru.next & BIT(1); -} - -/* - * Only to be called by the page allocator on a freshly allocated - * page. - */ -static inline void set_page_pfmemalloc(struct page *page) -{ - page->lru.next = (void *)BIT(1); -} - -static inline void clear_page_pfmemalloc(struct page *page) -{ - page->lru.next = NULL; -} - /* * Can be called by the pagefault handler when it gets a VM_FAULT_OOM. */ diff --git a/include/linux/mm/pfmemalloc.h b/include/linux/mm/pfmemalloc.h new file mode 100644 index 000000000000..345b215a3566 --- /dev/null +++ b/include/linux/mm/pfmemalloc.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_PFMEMALLOC_H +#define _LINUX_MM_PFMEMALLOC_H + +#include // for BIT() +#include // for struct page + +/* + * Return true only if the page has been allocated with + * ALLOC_NO_WATERMARKS and the low watermark was not + * met implying that the system is under some pressure. + */ +static inline bool page_is_pfmemalloc(const struct page *page) +{ + /* + * lru.next has bit 1 set if the page is allocated from the + * pfmemalloc reserves. Callers may simply overwrite it if + * they do not need to preserve that information. + */ + return (uintptr_t)page->lru.next & BIT(1); +} + +/* + * Return true only if the folio has been allocated with + * ALLOC_NO_WATERMARKS and the low watermark was not + * met implying that the system is under some pressure. + */ +static inline bool folio_is_pfmemalloc(const struct folio *folio) +{ + /* + * lru.next has bit 1 set if the page is allocated from the + * pfmemalloc reserves. Callers may simply overwrite it if + * they do not need to preserve that information. + */ + return (uintptr_t)folio->lru.next & BIT(1); +} + +/* + * Only to be called by the page allocator on a freshly allocated + * page. + */ +static inline void set_page_pfmemalloc(struct page *page) +{ + page->lru.next = (void *)BIT(1); +} + +static inline void clear_page_pfmemalloc(struct page *page) +{ + page->lru.next = NULL; +} + +#endif /* _LINUX_MM_PFMEMALLOC_H */ From patchwork Tue Mar 12 09:41:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589726 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 0DB92C54E58 for ; Tue, 12 Mar 2024 09:42:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A81A8D0030; Tue, 12 Mar 2024 05:42:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 503758D0034; Tue, 12 Mar 2024 05:42:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 307768D0033; Tue, 12 Mar 2024 05:42:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 1159A8D0030 for ; Tue, 12 Mar 2024 05:42:05 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id DF75E410E0 for ; Tue, 12 Mar 2024 09:42:04 +0000 (UTC) X-FDA: 81887895768.24.6EAE1FF Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by imf29.hostedemail.com (Postfix) with ESMTP id 32F6C120015 for ; Tue, 12 Mar 2024 09:42:02 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=MSJ7Svkr; spf=pass (imf29.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.54 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236523; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ATfCxZ0IifVoQF3dNCoyZLQIGDsbM/UfOW1XioKp6uI=; b=ja0JAbHMJeT3pPqt6sdvQNe77yvVULHzPR9KrTY3qWhy/BpI3A5fMYPRXf3LwXu5XKDfcO 9DjdHMGqmjWxOZdXPMyQxWlmky0g6ICw1ETIpSFZ5sqrxe5G8f6VhbyRbYQA1gn3TYHRgv Y4x7kxPtoENpaBzKMnNWTlJF7TD5Wgw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236523; a=rsa-sha256; cv=none; b=ujvt9P1Ww/LII7Zf36X14RC1ykK0aTqRzJyMKXwTK8gz7Ic+CtZFANjgvDI7LRz6yAHDB7 PSwwhs3nDebK3RdQj4x42LdgiIy6nUh85Pk6cHVU7zSxC/r9fTd9IdG4Z2iLuO7Pe+NBVC cOfXlQ3vaRt6dpTLcgr6JoATX/fNwDQ= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=MSJ7Svkr; spf=pass (imf29.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.54 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a4499ef8b5aso379505766b.0 for ; Tue, 12 Mar 2024 02:42:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236522; x=1710841322; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ATfCxZ0IifVoQF3dNCoyZLQIGDsbM/UfOW1XioKp6uI=; b=MSJ7Svkr018epOEU5vXu7rDwrBzpEVoeZXM9FpKgxbeqtedFd0xAfY03M8bVpKUs17 QQio54qfrxhIx3JgWG5Q5yHf6QkdTdQUM+zz+c4dfM3EEVo2ddS0FqDImzGWnwsNUf3e ubvgs2HH7zNksiedSKDofNlNOJPS56zMlrt/hiuu2PEn/nGGXHCcK5OTXpqHXkJAAjA7 7aaIXAsy8OCvmvYjwYl8+xMZh1sTyf42TUlS6QJQ5vSDdunrJRnaaw61/2NvoFJcspnF 98ml5Aa/Nr0Ifhi1kddC1FvH6pVo9cZk62S/Hdt2A9ZKD2H7n701+nYtSnhUagQKbuZ8 r7ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236522; x=1710841322; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ATfCxZ0IifVoQF3dNCoyZLQIGDsbM/UfOW1XioKp6uI=; b=mKlKHhkQ5/5wCd4rZ9KBfatJBFwgBbWye4GcxMEGvGL+qmcnp1maEFxGpVTdYL7kSB u8oVAgsY7zFtesAQdMnvfrGA0p2X0v/LBAxYFsEM11zuSBpxed9Mn2W108ulNRU8QRTw BIE23ZFqd1bLILCON5zFI481YB9zHNe1fGvcQvKPimxr0oS75FNLERF2d8UeszfWxQmM 5rHJGJQLpfJ6/k3IsT/OVDmVJiQB1JGAM0JfZm3X/QHw9AcXVeb1vcwh54j0ZW7DRKuP 6m16CZs1j53nAcUVuR1NNeVENX0jpgNsweRrmgNV69zkGlIeel06mtQemGnOchft7bRm MMCQ== X-Forwarded-Encrypted: i=1; AJvYcCUmoNb5nanTht0FUXbB8lVmbxN4PNs9bfWP8N/cJPYl4w0F0toT/SB8PGoN7Q96EcAXYtxGJSw1NpeZ8B+JyAJ68jU= X-Gm-Message-State: AOJu0Ywn98HBkNUPGaJghxt7GVECzlM4vwyK3pMKlMPbOMBGHuY77M8z cW/nXLuoNsho1iG4UJb7ueT+MJzSXA1wvzh3IOAaOHW2pNFAa2cEWvyyup+mAl8= X-Google-Smtp-Source: AGHT+IFm4FuW4Q6fcKByW+nr4fxGN22zpZHPL0egfaVaa7jH0Kxg7oTwjuowI6oi5Qt4kRMHasE2rA== X-Received: by 2002:a17:907:c706:b0:a45:6cc0:8f19 with SMTP id ty6-20020a170907c70600b00a456cc08f19mr6331728ejc.38.1710236521930; Tue, 12 Mar 2024 02:42:01 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.42.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:42:01 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 13/15] linux/mm.h: move is_vmalloc_addr() to mm/vmalloc_addr.h Date: Tue, 12 Mar 2024 10:41:31 +0100 Message-Id: <20240312094133.2084996-14-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 32F6C120015 X-Rspam-User: X-Stat-Signature: 9411fjakp6yta36ye6wx3pb4zgzdgkuc X-Rspamd-Server: rspam03 X-HE-Tag: 1710236522-194261 X-HE-Meta: U2FsdGVkX18WTsozRPN5HBKaoGcwguLuDAyYuYOJfSn5qtt0SSSg+BeBXMQGqaa2ilCxDkms08aUg9gSfJwwqRifk0EwSZ2zdJ09W7FQBx1N3Ek/p0H0XypjdqZcMrYDPWveEY5rFYWCrFX/b2OS3VNmWmcAxkbSjMs7U0Z2cZLQ5uWZyeWbsCT48o0vOz92yxvQ69Xfi1oaS7IsQW41r68XygJ0hLjWfDMX3duns5NLEP/CddmcVpAS1HIdmBCjrCR84VmiPoWUbYlNZJcydr0/D/sE83eT8D3V68Blola3VsMtrnpOHR18c4BgdVuhW2h9w1frwl9STKZcQa1h3hBS8ls7TB9DK+MSL+FdmlTepIf49+UbYAtPzSq4ASAOSUGilAchqLnhRB/ZhunRrtQ/2h6SJZuPFSY4EPqwOid9KfsZ6PCagY0oqnKoDC6+oIpItEnwmapVQRNkblVF3dvfc2ewVZAvt5FRPOyqIY7iDqgG6yn8dbZLees0y9NM2X1wF0xnXA9Ztdacrv6zjBms/RrfYHuw7Pg/6LqRBlKVxheWokyaTpNogptHjICIN94Q2Y0dZ0w3e8GDoJ0RXlQ1hVv5zAeicWADZ5CvbqHXQamr4/mhioJewoGjDOtbFBhJMc72Kvh4lO2Ni8Xpxn1U9z7D4OdXOlL4PQKBr6YaTKMEK5dl23L/VW01dT3ZSe0czWUqDgSmP+4DTZ/6noXmRtQeSHhhAcuyNGkaBiCmWuTLbwFeF9MHlTB1S/dl1+prFOkNxL5Ug9+tmbi5qakoKyr+gz15argZ62qWMCq2LpBoKdRv0rsiZZJbaMSNzudYANFRfIu1MiTaXmySu0uCQxCYRmXfIeo0/3mgktE3WlR1Za+Hc1d0p1B2d4Y4wkK1qBADHd4YRWfrFSJExABRXo9CNOSpiNUD1klCyYfh9o+HaCUiOPIYc3EdqFBu5Dec8k9rzEGX62uAPki yqyT6OpB tAcg9ADf4u2saSPaie51+SCLOQvzENuYVXCl23CEOX1ij0gUuEMOwN0X9KOh6A1AQt7F+uo8wD1U97R+s7PfLPojhlXT9FWkJuaWJNxe4lmKUkhYWwQLrCu1mGGOT2Z39V2udI3q12gPy8RgeckVq1sUPRd0HModeMGvU 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: List-Subscribe: List-Unsubscribe: This is needed to eliminate linux/dma-mapping.h's dependency on linux/mm.h. Signed-off-by: Max Kellermann --- include/linux/mm.h | 25 +------------------------ include/linux/mm/vmalloc_addr.h | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 24 deletions(-) create mode 100644 include/linux/mm/vmalloc_addr.h diff --git a/include/linux/mm.h b/include/linux/mm.h index 07262ae43c5d..80fc7df2856a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -1086,30 +1087,6 @@ enum { int region_intersects(resource_size_t offset, size_t size, unsigned long flags, unsigned long desc); -/* Support for virtually mapped pages */ -struct page *vmalloc_to_page(const void *addr); -unsigned long vmalloc_to_pfn(const void *addr); - -/* - * Determine if an address is within the vmalloc range - * - * On nommu, vmalloc/vfree wrap through kmalloc/kfree directly, so there - * is no special casing required. - */ -#ifdef CONFIG_MMU -extern bool is_vmalloc_addr(const void *x); -extern int is_vmalloc_or_module_addr(const void *x); -#else -static inline bool is_vmalloc_addr(const void *x) -{ - return false; -} -static inline int is_vmalloc_or_module_addr(const void *x) -{ - return 0; -} -#endif - /* * How many times the entire folio is mapped as a single unit (eg by a * PMD or PUD entry). This is probably not what you want, except for diff --git a/include/linux/mm/vmalloc_addr.h b/include/linux/mm/vmalloc_addr.h new file mode 100644 index 000000000000..86ad2dc94960 --- /dev/null +++ b/include/linux/mm/vmalloc_addr.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_VMALLOC_ADDR_H +#define _LINUX_MM_VMALLOC_ADDR_H + +#include // for bool + +struct page; + +/* Support for virtually mapped pages */ +struct page *vmalloc_to_page(const void *addr); +unsigned long vmalloc_to_pfn(const void *addr); + +/* + * Determine if an address is within the vmalloc range + * + * On nommu, vmalloc/vfree wrap through kmalloc/kfree directly, so there + * is no special casing required. + */ +#ifdef CONFIG_MMU +extern bool is_vmalloc_addr(const void *x); +extern int is_vmalloc_or_module_addr(const void *x); +#else +static inline bool is_vmalloc_addr(const void *x) +{ + return false; +} +static inline int is_vmalloc_or_module_addr(const void *x) +{ + return 0; +} +#endif + +#endif /* _LINUX_MM_VMALLOC_ADDR_H */ From patchwork Tue Mar 12 09:41:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589727 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 DAF96C54E58 for ; Tue, 12 Mar 2024 09:42:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BEE5E8D0034; Tue, 12 Mar 2024 05:42:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B49308D0033; Tue, 12 Mar 2024 05:42:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 971AA8D0034; Tue, 12 Mar 2024 05:42:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 807CE8D0033 for ; Tue, 12 Mar 2024 05:42:06 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 52988A1370 for ; Tue, 12 Mar 2024 09:42:06 +0000 (UTC) X-FDA: 81887895852.14.3F2167B Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by imf10.hostedemail.com (Postfix) with ESMTP id 93BE2C0007 for ; Tue, 12 Mar 2024 09:42:04 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=Jt6fM9Fl; spf=pass (imf10.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236524; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=H98hGtgyPjAfoBc3hVuyxWtvFj6EPdBcbjtg4+paKuk=; b=OxiifxRw4D3rKAuEmX00IvdVrYUJcteSy9P+NJv/5XIPbFlYQCXgf19WdJtlFSsVvBtguL 6F+0Fuhqwt0eFwsB4XmbhUupK1hf42CUHUsbZorykzO1wUXQasVBNooEOv9BwXCZl9vf3V VDDlgKuPI+QdpkwSvWpDyBoDiTz/BgE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236524; a=rsa-sha256; cv=none; b=SD8h8+8QT45o5MxQs3xukI6Q9vLfWpcbLuJ3CDj0QfDMm8zJFhAnQpkZc1uZzwBTY3tSVT SOBi2vZrRyDrdcVm5aO8yR4U/O3YlD8au56cIY9WIWbe3vntoxuIIgrAuy1TJYrXnUcIZ/ mF3YPds1FkaAoQWEruL14bYgvRILr1g= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b=Jt6fM9Fl; spf=pass (imf10.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.218.47 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com; dmarc=pass (policy=quarantine) header.from=ionos.com Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-a45fd0a0980so362185366b.2 for ; Tue, 12 Mar 2024 02:42:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236523; x=1710841323; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=H98hGtgyPjAfoBc3hVuyxWtvFj6EPdBcbjtg4+paKuk=; b=Jt6fM9Flid3mu0SXjJ2GHIjx9cYaxgtHPD0DvW2yEC6m2cLNMQs9SJa6IGByPLsNNU yZGX1dzEEQUUmHk47cBYegNCyYQveIuYDQHcuvyxZ2/Qj6vptgWraJw6pldAirIl7XL2 R5mK0iPkxdAcpfHvMn3sPK7ChHRRqdRlIv2eW1CT9yGAHy/iT/fTGHvh5M8o1HGJeUda klW7ALAY4vgGtPoN30rQqUgKX/yG/uXQUJWzxkUo9dRydoRlXC5+PDjMAAz6+KlBL1LV WynOckRaJqDJgf0X3JHdloP0menoqxgWJhPLcfb10+8RHIK9G6ars+kfUgM7KrHrzJgB oINw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236523; x=1710841323; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H98hGtgyPjAfoBc3hVuyxWtvFj6EPdBcbjtg4+paKuk=; b=OL19qAdsLtJLuJD5DVTmsDu+q4cZh8f2mWjAupJ8tSw3w6Ouj04dLK0pVKXqBWqmcA Yhn6uc3BamTiCt6Gzd8T5ERA+iWD0RRK+g290jU9YphAJ/jlmXhtDuH5cl5zTm/rEyN0 vdRZnOedYVvTdTg4ICdjF2bkgAAlA7cz94XjPujAIEingUX4TKQc/80knjTuRKtNuCf9 6T60yOAz3xR+zKLLaNo4Q8lFN/Uxm/MyombQLW5tyKvXsFZBU9TliWdyXSKzgUjPP3wu nSNVd1NCrTdRJVHQwKlBispfb60XP/0/MZCdvYQQYjzweSG3HLI5dq0d8kDhWdkJFPTv VLIw== X-Forwarded-Encrypted: i=1; AJvYcCU2wDNupCVH2LTjJ8BZ8E2YqjEjhr4OjjQG+DVT9GjLYY6GT7jJJqZLliBZC6jW19m3osVxZuUdpowQw1JVqsUo4jU= X-Gm-Message-State: AOJu0Yw+loVpzZYoqbZStoq1ya1EaCUrQ9I/c9+EVI7iWgLmN4tjWYl7 DihcN6PiQ5S5Aiz8uec4WkgH1I4jxYaeWxW8SrJ0+7hbdqi41iGSaZ4x/VF0vA4= X-Google-Smtp-Source: AGHT+IHpv90+P4zxSDURZ7ttG7/z0EYrKrLjaG5oEbvP3KEWBv4oQ9xKxdnYYEq8UAt6cIlNMDUY2g== X-Received: by 2002:a17:906:a241:b0:a43:fd9e:2d44 with SMTP id bi1-20020a170906a24100b00a43fd9e2d44mr5256532ejb.42.1710236523257; Tue, 12 Mar 2024 02:42:03 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.42.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:42:02 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 14/15] linux/mm.h: move high_memory to mm/high_memory.h Date: Tue, 12 Mar 2024 10:41:32 +0100 Message-Id: <20240312094133.2084996-15-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Stat-Signature: 3385jy9taziu73ydxxx5cyxrm4b6ajsi X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 93BE2C0007 X-Rspam-User: X-HE-Tag: 1710236524-298154 X-HE-Meta: U2FsdGVkX1/0NLUffWvmNN3UHb9Ti5P7KkcYBYdJxJGAGjUJWbPUEHv+/SGP5QoGazzy5Of1ZXIBykR8RDEcs77jKayyDc+3L0KDQLj/fOCOgPk9wW/NcLHpePRUVr8odkHFLiCn2QTz/MqLgxUT0kwD0IBFVrm5fEohadyZeXAf8O/L5/0IqXCKpdJWifcAmmBZjmnSKavSw1Z/uRWcYpR3GUIubL16/4f5W/DhNBtmHzyRNs+hbXcsGLi7WVQ5Ay5q0Q/mmRPXkbUEMbOcO8wkEVh/R5A8h92H1JQj2dwvs22WWO4qiNAkvIMqw8suewlpSa7O5j9h+1AuxJ9EdCsDiALUywm/1upx0RCIwGlSXbenFySc+dV275VswHdxGYkGBTDuV3CGU7hrC9I8V7Wbs21zUhCd9AFweAOYtlYqAbGxxOfQPJ2rwiTcbau6tkvDI5eZ3n0B7H0vsesaJUOqAdQVeQe+Zd/HUyYah8w6I9h3kWPacUtQDokSTYs3whpO0sHzPKs65JNBC9KKZIQDzSKtXhOK/u6/QdcW4qIHUKc9RUjp4VKpWxOFzsZGezh6BxzO1TiLVgTJVQxIgZB508NuQiOK7s9ja/Ls7MNK2HWCTDebTlgt7Qv2EonhQYH3Wxllecc1ieBqRQ0NkXVgH/YWb0Yslb92yijl8GqsHdRvDQDKNUy7A75huVOJjQfe4iqMOVdmV+qD6wx3rgNfhCwE5uxO5Om/05nMZpFJTG7Aryjk6rxo0K3loSu14Ae0D5kOI0tpSe7OSLImTpnOq5kxTsDliKOelPvi16cg06bMIvl7uq/+2PJhdzK4wiDCRyFQzNZKMAjZwJfqJNCMvklLHS6eh0vEzj+JXCyGoq7aJzWRsKOUEQAGDC+U9jp/dvn2LyZm4QHKMa1gbYRBZkDXBsP2kYvc8eGeo3CT8vFRPYePbXveFE3WnVpArMAF6EE9ezLaGxn/iui P8rlkYcY eQ5YW8kU49KcI3DrvVw73/Spaqn5lkSwQE6QVf4sZOia75JF9X39NjY3I1CONEp00EvPQI9OtC3r85YMY/TDEbbc3uxpgfsabNSG5uRujqT0fcG64rdNM8sdI9gTV6ipilUDsbJ1/er/yWR2RR7iZOU9hYhIQa7APeS3H 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: List-Subscribe: List-Unsubscribe: This variable is used by lots of arch/*/include/asm/ headers, but these do not (and should not) include the huge linux/mm.h header. Let's move this "extern" variable to a separate header and include this one in arch/. Signed-off-by: Max Kellermann --- arch/arm/include/asm/memory.h | 4 ++++ arch/arm/include/asm/pgtable.h | 2 ++ arch/csky/include/asm/page.h | 1 + arch/hexagon/include/asm/mem-layout.h | 4 ++++ arch/m68k/include/asm/page_mm.h | 1 + arch/m68k/include/asm/pgtable_mm.h | 1 + arch/parisc/include/asm/floppy.h | 1 + arch/powerpc/include/asm/book3s/32/pgtable.h | 4 ++++ arch/powerpc/include/asm/nohash/32/pgtable.h | 1 + arch/powerpc/include/asm/page.h | 1 + arch/x86/include/asm/floppy.h | 1 + arch/x86/include/asm/pgtable_32_areas.h | 4 ++++ drivers/mtd/nand/onenand/onenand_samsung.c | 1 + include/linux/mm.h | 2 +- include/linux/mm/high_memory.h | 7 +++++++ 15 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 include/linux/mm/high_memory.h diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h index ef2aa79ece5a..a67afb213e2e 100644 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h @@ -387,6 +387,10 @@ static inline unsigned long __virt_to_idmap(unsigned long x) */ #define ARCH_PFN_OFFSET PHYS_PFN_OFFSET +#ifndef __ASSEMBLY__ +#include +#endif + #define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr)) #define virt_addr_valid(kaddr) (((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory) \ && pfn_valid(virt_to_pfn(kaddr))) diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index be91e376df79..eb80f6a65619 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h @@ -11,6 +11,8 @@ #include #ifndef __ASSEMBLY__ +#include + /* * ZERO_PAGE is a global shared page that is always zero: used * for zero-mapped memory areas etc.. diff --git a/arch/csky/include/asm/page.h b/arch/csky/include/asm/page.h index 0ca6c408c07f..17ccc91c3cd6 100644 --- a/arch/csky/include/asm/page.h +++ b/arch/csky/include/asm/page.h @@ -32,6 +32,7 @@ #ifndef __ASSEMBLY__ +#include #include #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && \ diff --git a/arch/hexagon/include/asm/mem-layout.h b/arch/hexagon/include/asm/mem-layout.h index e2f99413fe56..a09116c50043 100644 --- a/arch/hexagon/include/asm/mem-layout.h +++ b/arch/hexagon/include/asm/mem-layout.h @@ -10,6 +10,10 @@ #include +#ifndef __ASSEMBLY__ +#include +#endif + /* * Have to do this for ginormous numbers, else they get printed as * negative numbers, which the linker no likey when you try to diff --git a/arch/m68k/include/asm/page_mm.h b/arch/m68k/include/asm/page_mm.h index e0ae4d5fc985..f958655d1931 100644 --- a/arch/m68k/include/asm/page_mm.h +++ b/arch/m68k/include/asm/page_mm.h @@ -5,6 +5,7 @@ #ifndef __ASSEMBLY__ #include +#include #include /* diff --git a/arch/m68k/include/asm/pgtable_mm.h b/arch/m68k/include/asm/pgtable_mm.h index dbdf1c2b2f66..ec593656bdc5 100644 --- a/arch/m68k/include/asm/pgtable_mm.h +++ b/arch/m68k/include/asm/pgtable_mm.h @@ -13,6 +13,7 @@ #ifndef __ASSEMBLY__ #include +#include #include #include diff --git a/arch/parisc/include/asm/floppy.h b/arch/parisc/include/asm/floppy.h index b318a7df52f6..98ed37c5dc59 100644 --- a/arch/parisc/include/asm/floppy.h +++ b/arch/parisc/include/asm/floppy.h @@ -8,6 +8,7 @@ #ifndef __ASM_PARISC_FLOPPY_H #define __ASM_PARISC_FLOPPY_H +#include #include diff --git a/arch/powerpc/include/asm/book3s/32/pgtable.h b/arch/powerpc/include/asm/book3s/32/pgtable.h index 52971ee30717..03e0a32e1c2c 100644 --- a/arch/powerpc/include/asm/book3s/32/pgtable.h +++ b/arch/powerpc/include/asm/book3s/32/pgtable.h @@ -4,6 +4,10 @@ #include +#ifndef __ASSEMBLY__ +#include +#endif + /* * The "classic" 32-bit implementation of the PowerPC MMU uses a hash * table containing PTEs, together with a set of 16 segment registers, diff --git a/arch/powerpc/include/asm/nohash/32/pgtable.h b/arch/powerpc/include/asm/nohash/32/pgtable.h index 9164a9e41b02..8a9f5b546e4a 100644 --- a/arch/powerpc/include/asm/nohash/32/pgtable.h +++ b/arch/powerpc/include/asm/nohash/32/pgtable.h @@ -5,6 +5,7 @@ #include #ifndef __ASSEMBLY__ +#include #include #include #include /* For sub-arch specific PPC_PIN_SIZE */ diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h index e411e5a70ea3..9ae87fc2c648 100644 --- a/arch/powerpc/include/asm/page.h +++ b/arch/powerpc/include/asm/page.h @@ -7,6 +7,7 @@ */ #ifndef __ASSEMBLY__ +#include #include #include #include diff --git a/arch/x86/include/asm/floppy.h b/arch/x86/include/asm/floppy.h index 6ec3fc969ad5..7756e984f146 100644 --- a/arch/x86/include/asm/floppy.h +++ b/arch/x86/include/asm/floppy.h @@ -10,6 +10,7 @@ #ifndef _ASM_X86_FLOPPY_H #define _ASM_X86_FLOPPY_H +#include #include /* diff --git a/arch/x86/include/asm/pgtable_32_areas.h b/arch/x86/include/asm/pgtable_32_areas.h index b6355416a15a..b339137b4f4e 100644 --- a/arch/x86/include/asm/pgtable_32_areas.h +++ b/arch/x86/include/asm/pgtable_32_areas.h @@ -3,6 +3,10 @@ #include +#ifndef __ASSEMBLY__ +#include +#endif + /* * Just any arbitrary offset to the start of the vmalloc VM area: the * current 8MB value just means that there will be a 8MB "hole" after the diff --git a/drivers/mtd/nand/onenand/onenand_samsung.c b/drivers/mtd/nand/onenand/onenand_samsung.c index fd6890a03d55..7c3cc270386d 100644 --- a/drivers/mtd/nand/onenand/onenand_samsung.c +++ b/drivers/mtd/nand/onenand/onenand_samsung.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/include/linux/mm.h b/include/linux/mm.h index 80fc7df2856a..1d7b4c781995 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -82,7 +83,6 @@ static inline void totalram_pages_add(long count) atomic_long_add(count, &_totalram_pages); } -extern void * high_memory; extern int page_cluster; extern const int page_cluster_max; diff --git a/include/linux/mm/high_memory.h b/include/linux/mm/high_memory.h new file mode 100644 index 000000000000..e504aafd0d48 --- /dev/null +++ b/include/linux/mm/high_memory.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_MM_HIGH_MEMORY_H +#define _LINUX_MM_HIGH_MEMORY_H + +extern void * high_memory; + +#endif /* _LINUX_MM_HIGH_MEMORY_H */ From patchwork Tue Mar 12 09:41:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Kellermann X-Patchwork-Id: 13589728 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 4712FC54E66 for ; Tue, 12 Mar 2024 09:42:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 813988D0035; Tue, 12 Mar 2024 05:42:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7C27C8D0033; Tue, 12 Mar 2024 05:42:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 616108D0035; Tue, 12 Mar 2024 05:42:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 462808D0033 for ; Tue, 12 Mar 2024 05:42:07 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 204D61C0581 for ; Tue, 12 Mar 2024 09:42:07 +0000 (UTC) X-FDA: 81887895894.06.954EC58 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by imf15.hostedemail.com (Postfix) with ESMTP id 5ED8AA000E for ; Tue, 12 Mar 2024 09:42:05 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="GSz6Q/z1"; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf15.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.53 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710236525; a=rsa-sha256; cv=none; b=h0DP4Kt4RB23F4G7kkdqygUPl7PJUxNvav15rr8q9ujKjv3mL39Zg3jGmOeDHK59VzADgt G9/8UvSMm0qm4XQr4r70vaxb8ymKwTe8vKtZ8XTOQm65JE6IZGQ5HROxmIVup0moHpREQx AVim0Uqqh0usAoxBscW8gZkNieSO39o= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=ionos.com header.s=google header.b="GSz6Q/z1"; dmarc=pass (policy=quarantine) header.from=ionos.com; spf=pass (imf15.hostedemail.com: domain of max.kellermann@ionos.com designates 209.85.208.53 as permitted sender) smtp.mailfrom=max.kellermann@ionos.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710236525; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Jrscdt21PtPY517djC+TvV15g1fCQxv1c3sR3dIsMR0=; b=0uRQhXZ7oov8zRAcXclgvYu6BAHwe/zfNDuTWzEsVrtTOJkLpQ5YIOErfMqXaTsF82uMJX rYI5lioUfCz2uqIN70DTltG099m/3mAGaiR2tUdLGuSoCPZ3jXR66g5ncRDjC9k7EKuU7M gccmeEczwCtcr3A/lIyj/6II1ZguC8o= Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-5686677bda1so2339948a12.0 for ; Tue, 12 Mar 2024 02:42:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; t=1710236524; x=1710841324; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Jrscdt21PtPY517djC+TvV15g1fCQxv1c3sR3dIsMR0=; b=GSz6Q/z1OfrgVYdQlFhxpC5mEMWaGtvVWp2ItWh6QBc2wgMEW8TGrHdnOjZLVbc9jb aVaksYhmRNaMR7IRtVU7c8t+vQW0YJKkhP0AtmdNkCSWh5/9GOJmEGxQ/fFZVZhjyhdB D1/VYvnfyq4bPKd8iRPqq4UYgijQO8GxuVt7r3RZGEr30gpSgpzR+MXxHEoM74A3i4fW 71a4s2OBQAsIOripLu+0DbqrfFDBqCTkQt1tYY9gBm5U7pWzOXPCS5Z9VDQh3kOFrcwk bS4pG50p7nLTXKnPMsviMs2UeLra52VVYCsVD9KLoXBxOxyDL7i4yVUOmGfGw0uJNQ2k GbTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710236524; x=1710841324; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Jrscdt21PtPY517djC+TvV15g1fCQxv1c3sR3dIsMR0=; b=H6fZKjU0Pry76emuPH0v/apaAH0ZTCW/lEjCgdY31ArWK8jCQafSUYf37krX2J5D42 M+JpvaruDSBnESGYczj59cY4FqblyUa9TvjFMslRgxAVlbFZZYYqi9Yh4h5Lihbgtzh7 gj/7xVlVC5fcExoJaijETMOyMjnj9SLl/5/3Pobvg65sZXzFy93gPNUMZbexU2bxp4KT SaGUku4dYgLUshqDjGZQW5Z2Od7AK5n11tTh9FQoZ5r1GsLLuAf25NUzSrtCVd07t0Lo bByWzNdXAB/G00MwzbNDJsS8zy/Hc+oFr/6FDvPKObJrXlu0IoGSl/kH6yl00anKhTXN TI0g== X-Forwarded-Encrypted: i=1; AJvYcCW5oeP5sAko+zcFHDNlIGbAO1v0iaMJyyH1DEPYapP1YWXAKRHq6mcGMxF+V2STuxfyJq/gIXCmLnMw2VmH9EDKLfs= X-Gm-Message-State: AOJu0YxzlK/z2ljErt8cI7Uwbdli6cgnZs7RemiPTpflgXd/ywPHPQ9V TkwV8bNPZvF161ajACo7bw34jIpXUxGjXp2oQmfoTmGKondYIgxB5AXRqXCV7Nc= X-Google-Smtp-Source: AGHT+IH+55sS4D1Wofdn/P5aBaDbVhmB1/EaSYmDeSmBmhB/cebupf3IhOpDFPGmtUJAfiNuT3MXBw== X-Received: by 2002:a17:907:d50a:b0:a43:ffe1:7d1 with SMTP id wb10-20020a170907d50a00b00a43ffe107d1mr8979316ejc.17.1710236524165; Tue, 12 Mar 2024 02:42:04 -0700 (PDT) Received: from raven.blarg.de (p200300dc6f010900023064fffe740809.dip0.t-ipconnect.de. [2003:dc:6f01:900:230:64ff:fe74:809]) by smtp.gmail.com with ESMTPSA id jw22-20020a170906e95600b00a4623030893sm2091961ejb.126.2024.03.12.02.42.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 02:42:03 -0700 (PDT) From: Max Kellermann To: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: willy@infradead.org, sfr@canb.auug.org.au, Max Kellermann Subject: [PATCH v4 15/15] include: reduce dependencies on linux/mm.h Date: Tue, 12 Mar 2024 10:41:33 +0100 Message-Id: <20240312094133.2084996-16-max.kellermann@ionos.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240312094133.2084996-1-max.kellermann@ionos.com> References: <20240312094133.2084996-1-max.kellermann@ionos.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 5ED8AA000E X-Stat-Signature: q5sui77horq6gfzjyniamjjud58bk39w X-HE-Tag: 1710236525-598611 X-HE-Meta: U2FsdGVkX1/xRZaoP5BPgNKdnBCPv5Yr3VY5ou/5mB28ktNfGT/D3eyE7uzKYf5ISlB3kyQUQwsxJzwfCSXb6vVnY1HtR3GVo8fo4bCT2Bh6Gg1Pc1V6fhnTeqFplVbq/W44TFUF9qXtHgnST3ie7NC0R1Hv3NPYwigFuyVDPwO/M8BQlY0sPKZYNEYlP6z55IjEiETH7SgP+NsbFKIcMpb3+K4Aph8IQ36bHENBxTFRpMJQ3XH1bzzDFgUUeja+FnDdPX486ew0uocARDD/FS+2C9DV7wbL8P+OoKv9Dc0R/OxJDEivWrUGWQqgrdJmSgrwGqDQA6yhejNvl+Qvzghl8t5jB1z32t6bIDzd3fpof0rrXBA0lU0mqkPJemGZzUIo05oMT7DqgkGutXl1lul1ie4cjpT5fLOx+paI+6skFGrKQc5Ds3U67Z7aTxADbVmXZft5kF+puxYgrJjrPGv2L7HFLpRG+aYspQABDXDhQvGKEnvlPIgv2qkgQ8C3t+xMRUA99RPZh2Z2ErDLY5UIAxXdT/53XluwzOIRwKdpEv18lPoiWnYPSuGzBie6dl5aF0VsOmn3B9NyE9vMCwjC5OYpdALOLvX/A7NDFT/aNJtTQYhpKrmuD1WntvRUKylg2/V1GSlqhCrc0szumvKvBMeyhGnL083oovqBTJ77pH6pGYUq5Lc+Kn0yk/DneHjdzklQnmtRebnsN/e79nt+XnRwR5ntdbyKEzxzxdwvN0Wx2qmGuCZidezmwwnWIumFU6xGDKTAJvT46HA4yefuHYwCrdb5wrH8IiXlwFkCdWlUklRVu9NP44zrq55DRysCuQqwuEjOMNR9LsCN3Vcaj52jhZFhUXLjOYpUtzlF8RAP6WGKre8/TU47RPcxQxj/hGBMFmOA6XFmyW+GVxFxAU1uxhbjZIJ3hGdYN1VdpbZL/peM4nnm8ybXsRxJ4o/5zESjVKsb6Lzq4n/ St5OY4Oz wB/BrrPQS8Wf1sliGR/q6e2rv37DrTzfhRcHV1T3ofgD0KDJg5fXQq3DCXGJ6HDIyYNVCFh2MeSCSrDCLA9ggaSPQu+Xx62zpYhNRLkKEBdgR78/jb4UuRAgLRQ== 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: List-Subscribe: List-Unsubscribe: Replace with the smaller pieces that were just splitted out. This affects a few headers that are included by many, e.g. bio.h and highmem.h, which now no longer depend on the fat header. For this, several missing includes need to be added because they are no longer indirectly included, e.g. . Signed-off-by: Max Kellermann --- include/linux/bio.h | 2 ++ include/linux/dma-mapping.h | 1 + include/linux/highmem-internal.h | 2 ++ include/linux/highmem.h | 4 +++- include/linux/scatterlist.h | 2 +- include/linux/skbuff.h | 4 ++++ lib/scatterlist.c | 1 + 7 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/linux/bio.h b/include/linux/bio.h index 875d792bffff..e2f24d7235d3 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -5,7 +5,9 @@ #ifndef __LINUX_BIO_H #define __LINUX_BIO_H +#include // for struct kiocb, IOCB_NOWAIT #include +#include /* struct bio, bio_vec and BIO_* flags are defined in blk_types.h */ #include #include diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 4a658de44ee9..37d5591039c7 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -11,6 +11,7 @@ #include #include #include +#include /** * List of possible attributes associated with a DMA mapping. The semantics diff --git a/include/linux/highmem-internal.h b/include/linux/highmem-internal.h index a3028e400a9c..a479e6b7c54c 100644 --- a/include/linux/highmem-internal.h +++ b/include/linux/highmem-internal.h @@ -2,6 +2,8 @@ #ifndef _LINUX_HIGHMEM_INTERNAL_H #define _LINUX_HIGHMEM_INTERNAL_H +#include + /* * Outside of CONFIG_HIGHMEM to support X86 32bit iomap_atomic() cruft. */ diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 00341b56d291..10a165a913ad 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -7,7 +7,9 @@ #include #include #include -#include +#include // for page_size() +#include // for folio_put() +#include #include #include diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 0516e64dc03e..9221bba82b23 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #ifdef CONFIG_UML diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 3023bc2be6a1..7b61eac3baa4 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -16,6 +16,10 @@ #include #include #include +#include // for alloc_pages_node() +#include // for get_page(), put_page() +#include // for page_to_nid() +#include // for page_is_pfmemalloc() #include #include #include diff --git a/lib/scatterlist.c b/lib/scatterlist.c index 68b45c82c37a..03599396f15d 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include