From patchwork Tue Feb 4 22:48:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Popple X-Patchwork-Id: 13960196 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 51D8BC02194 for ; Tue, 4 Feb 2025 23:16:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-ID:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=RtBaqYvfVYWwhkk0mbirzaJ8NN/nkFZeQ7cueszAH5c=; b=sCRRh8qDfY6cC2PKpN5M1kgnj7 +uBTk20tKP708+6fnurz6zALcJ6EKPqIh0yHlDKMMxKgZJFwcCk8sxfBsWgQ/ZdJOOK6CXMkFm4Zb heSjYaQ8HPuqP1fN5VUqWUz+bWtNzdYgD9Kmh5Gtbfh2a+turOK58xuqy9gD22CJ7LdqqRySsnNGB nFxV8lVvNmE1HNzMODCDLLZ+O4dDwaqNkbt87n5aPFnv6pBthAlwbvRdJYYxM0MlZAmrh5NiPq7GH KoNkMqwlF6VEkDBCFCT2YOuIAF8mvZDTVJJXB2W5LtV1qkZwwbWenRrsNJmLkGQSZ9r0i3ls8tqb+ +jCx1MHQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tfS91-00000001oP6-2BcX; Tue, 04 Feb 2025 23:15:51 +0000 Received: from mail-dm6nam12on2061f.outbound.protection.outlook.com ([2a01:111:f403:2417::61f] helo=NAM12-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tfRkC-00000001jVN-070o for linux-arm-kernel@lists.infradead.org; Tue, 04 Feb 2025 22:50:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=acdbjI+JlmyZHeF02C4EgbEEWvQzHeSFnFsI/UgF36voQprAum6tyqfaFqzCx3mze+XVQ9JcZYQk14NIFKTSwuOLXpMwCPbi9llZCgZyl16JcKEVRUQ4odpfe7KmPLGpXbh5hB9hPaW8met24muPQJgXmxTuRbolwKijcE3INXcMt56rG1V4ySWtoRylvs/JKoyVzsw6sqrR7jH+K19NztXnGdcA3Bn9vugDtv3MOaXBkCahnpIUVYS/v0RyD3aSpDr9Sa5KyjBTXxqTu0f5OZ4dyJi6hKAyn+VO2j18WK2NLZjdTaOJdYEslor+566SdelSNd5HwfV7jFKo85RJEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RtBaqYvfVYWwhkk0mbirzaJ8NN/nkFZeQ7cueszAH5c=; b=E6/cmO1JniINZsmkCTgY9PSGvXMj/40PnY2HYP5M4g6LeTBDrMDopfkF1yc9w07csWd6vXHK3t4KQHHrFtAZUk9GQLuOb5kKZww05aTEbt8yPRO3fjXZ1ZmQChNoMjnZ84/aRdgbbEFHrX/QltvSDlQjNDYLN+Gn/L7nfhQS+ll+E0mONcDlXDQphZ7OIRDzv1FjV39p6quRecV/YsHk+DA4YSiTeYLARoQbj/YmDJD9MBMWTYQXxelx1r8CHwRk1yC5mhXNMX/gE2it9PDHCEYR9kztslvzsm6DQH+15nHoF7JZQZIDkMq/+E2la+MKNOUk71veRB17NZhMDkD8/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RtBaqYvfVYWwhkk0mbirzaJ8NN/nkFZeQ7cueszAH5c=; b=UZbNZ4E7KqfTxOmJlWnjvwU9jcNFD+MIHg5Fz1xQfwW7Pntoc+GbX+RFUw5vg4sZaKaz6VzxU8HcEXDAbhKgs3fU2DeSoDhWVS1feVWS7MI8qDATK3ycEaj7xE7FvPbTKCHrOCn1FSZqYU6jR5xjPSekvVmw5darkDZCgDbxhPMhm22ssp4Qc97XL6UloGUsTf+QFmvJTWYgagRneNTB24Bm6Ae0GQVYS74TsdNtFOaVCU4AAaJQc5C1X+FHz4o+c1JF7kxZvsNfnsz9hnMABUkVPY7YhN/vpIY14Cpwp0EDAA+8PJuEzaHU4diBpbi/QZtb8FWaGpmUSI/gruZleg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS0PR12MB7726.namprd12.prod.outlook.com (2603:10b6:8:130::6) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.25; Tue, 4 Feb 2025 22:50:09 +0000 Received: from DS0PR12MB7726.namprd12.prod.outlook.com ([fe80::953f:2f80:90c5:67fe]) by DS0PR12MB7726.namprd12.prod.outlook.com ([fe80::953f:2f80:90c5:67fe%7]) with mapi id 15.20.8398.025; Tue, 4 Feb 2025 22:50:09 +0000 From: Alistair Popple To: akpm@linux-foundation.org, dan.j.williams@intel.com, linux-mm@kvack.org Cc: Alistair Popple , Alison Schofield , lina@asahilina.net, zhang.lyra@gmail.com, gerald.schaefer@linux.ibm.com, vishal.l.verma@intel.com, dave.jiang@intel.com, logang@deltatee.com, bhelgaas@google.com, jack@suse.cz, jgg@ziepe.ca, catalin.marinas@arm.com, will@kernel.org, mpe@ellerman.id.au, npiggin@gmail.com, dave.hansen@linux.intel.com, ira.weiny@intel.com, willy@infradead.org, djwong@kernel.org, tytso@mit.edu, linmiaohe@huawei.com, david@redhat.com, peterx@redhat.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, jhubbard@nvidia.com, hch@lst.de, david@fromorbit.com, chenhuacai@kernel.org, kernel@xen0n.name, loongarch@lists.linux.dev, Alexander Gordeev , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle Subject: [PATCH v7 18/20] dcssblk: Mark DAX broken, remove FS_DAX_LIMITED support Date: Wed, 5 Feb 2025 09:48:15 +1100 Message-ID: <229397bf27e565ed8dfc3832c4e57551fac86c90.1738709036.git-series.apopple@nvidia.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: References: X-ClientProxiedBy: SYBPR01CA0014.ausprd01.prod.outlook.com (2603:10c6:10::26) To DS0PR12MB7726.namprd12.prod.outlook.com (2603:10b6:8:130::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR12MB7726:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: feca1f5b-63c2-4bb0-0e55-08dd456e468d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: gMOCCAj4fuTvXAmjSw8M3ggfwP/ubVnvhux/CvpKyojBBc3mNEMzgEyapyNeX/zrA++YUR6TweXr5YYFuuGkM1u7kpw1Z+v9YiZ18KWMbcJSsON7Qy0+L+DX2GRDfbrGz+salkk1wRRw4outIeccLkDV3X5H4/XOakiv2vb9l0U1K/JDC8TNtjmy8wgO4MFVTncEe97AgBOlfnQWW9lNqH9qdnqD4YzaEFnIv1+W6ZcJQ+JV0kV0zbYm7S8+VNwcUql1NNbNMweCJeIKtv1MHSQjL5ArCRCY/iRbfe4jFAmQ1qErUo8mw7/uoMjmPcwzbyMnqA9GVHyI6NDAIHUVbaIPr+Nk0NtgCm1ZhkXjxpvYWQjxkk9w29MJKLm91c/CZZ+J4SRW+0OCig3MyVfjxohCGKLBjPJ9OGO0hNP5cQiY8vowEVDvxNxD6pXsBUA81VcQJrforCKQZMtScJxGAMNYMwbOa2sLi6tKNYvTnJInUPxR2qy+Vr03s/Jg8zIjXOGInY6bqN8aKz7qGd5rw1y8D5upS5bykQSUMZcvxs99oq7Q5tKRzivkpLZF0z3y2a0VvP6glgZPXHrwCsnHgniMlJ8j9RIilA0ZdLF9CYffePabuFOsw72BD+QsuNIVfsgA0GpXmcPHVIQq/EE6lQ4vZvjAZt5422pFxw9EN0wBw66Cn3MMFm+Snln3Ujk6VAmBFoPMOuFhVk7Kiryof2Q63QgPfR2VDlWnfTf+zpTVS7VudEygNiFM7EnTP2GrMy20rAcTwYMeCv0aJAEXPbFYbItaof5cwzs+chJSVNxWExPG+gCfnfLhOKbjTV2EFAjnVTdvWWEQkdennR4r3XJpErnu3sanCJdqzOo1ATcZ+/tTYrTN413BpBIgex4I+AUcjvrGqSS8ly+zxtqQTPzBgYwEsEufn//8alFjnqn1bHFbJahrX4vYX2CaGxZDWE/ECCF+FErw1OHssVXYt8KCGyGtsUmK0uwXUtwFTFLX6+eUovwnXOcJv4tH8TmlqneEkrO/o/nfFvPb4HUyJksm7qTo8Q2ySiAg6j2SgKcQzRmDWXy79xfh6bVQviprCyWTJzzGHi8SYr5B6BL0gWvRVws9IGqUYkp0rKoy4mNrNM1Ry/IXqJwlnIAWFcoXKnRrG5EoEOFBwlQLmGgn2JLQIr/gVOEVITfHRn8xMOyDBYHHBCn/Rs2eWDFwZozXzesepyCMlz67Sy2pS25IlEOvAvpSPU+zBAwszghPaLuLK+3e75Q32i8EONhcTrTqM8t6moIp2Dg1Ki19Vsod9quQwt5oRW+5u3VXg2PrGScvIM7fYcpWD4DqWPHC1GNdjjuCv44pyDKPFOGUNiE70doeFG+uTenlWnAYAv3RZxXSMOyJH6FHwi2lIpOe2qMS X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR12MB7726.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LMEnuwCrmGiliI4hsbYJHDwe92wbcNkdxuCOUD6gDQDd79wfdRACqHZat+zF4wgocSg0ozhDGdcNDZq/nFRIjya8hlZwCK/VAuv5RVDtRzX+ib0gUJK0w+1vKXS0yVeaCEs/9e2QF+CxNhqouKxUts0QIM5qLsRXFoX+QHqgg7tye1ox6E7QdLWHj7R39HL/FbgoIzpLqJ5t+Ule8MR6dewqNYHlnJYXF2fSHT6K+OflIG2VdDW/ShOcowIO+Gxji3hTXevh1AV90QAjH6JnSTDU6NTGDEKhMU9l7LCZrQLRy/WLnL0Ts3mJzNLd8votHzseF0XK3zIjTkzfdLCKW1/J6W3dNfeJWGrnxxodE+Fi7+0N8rFNDnDAsjImko3wzJuA6FFBXUBrzZq2hUJ8cipcSSuYhjUL5h9dhm9vb/HOcLeXhow5iurVmWYHOj0QV6672XVYpIgDcdLUwQvZeYS528ceAmSvaecqwZBeW/8ltD1v7WW1UgPYSqgOIue+4N0wgl6HbapeKHaEiWiCFoa20xG6qkDE1a2eGPM2SoBk23bahd1OU8SX6HXU/VioJ1jEYbRE8IT+RFssMCw95WUpLN5tGnib8XFc8ftOdYSAr1QgKsPuhkmAx2z0PTINf3V1avWThu1B+zqq3XY0RcvnuYGtjlpb13KlwqIbVWhXyHuHvkVq/6ZR8PM6ORspfWEmTNemJHSO9k7HUs36AhVGhhAoFPrCfwIJ5x71g42xckt3rGRYt3TPvLUg9lIIIXejVkz8dIlIQf8sHhYRnnI7/leApfotaD2wgI6PvLhlI2PgVXzAOvGugQZUFfVuWFHbgW0Ggw2j75rqNHF7MrGhV7xtZhj9GKxK2FDLHykkNpkHhjnu/PZm3kszhu8nDKL4MGCIhXXK6/yuZJBVbRpKGss60M93pSnPVixJoD7ow54Wz27eqf83yFtHIhEXcqdLJ4/AbUxm0EGEBLX5+MsqEeeR2C46twVWkvJgF2ZNSD33n0LLxjqRGDmkAC8oUEyvzGmU/z8gnal/wjNcyME6GoNoXxeNYmlO7WNyWN7NIJnqJh99FZVIpKqbZ0m6CNTfYyaKeEp+w04TJug9aXiNsAdBhhmqTv7cdEGdNtsUhTcNG/0/0q9tfVflKxyIvFwMnm6vG796G4SZdfWFN3XhSc1nKyRNLkbpXm5nyHiPhR/co0zP9FJmUq2XQ5rN5NkxzS4n0SIfRJ3ziNze4+PSWKOYK7+07lLA4jk5ClBMMSNjifPzyJnKgDv/OHWzrmS6gUE9p07Krz3goyxBsUerCemQFM71QN5APoV7NluiT6llYd2rY2Fag5kv6r3q1//eIhqrdEuJsNL+FYoXeV+7KZjf26P9buA60QjkhKQAUM41GjhRme9LBsQy7quxSBEzdNgoNHphJ9Ctl7nQ/kU1cis7n1ZmI1LYIOjWcpLHO7VqSMNqIRY+kwM+qv1GGwOzlcrDWYu2VBEkxynU87ay9nzTMJ8LGCpjEF794HQ6iLrxUyZHnaTh5KFkDPsp/+HaefAcc48nFDu8Gdd0cflr/2JP65BwpzV3u70yMByi0fplFe/WCs1pmfdCAuOE X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: feca1f5b-63c2-4bb0-0e55-08dd456e468d X-MS-Exchange-CrossTenant-AuthSource: DS0PR12MB7726.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2025 22:50:09.2273 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: B9L9wyMf0dUYlAXPWr5LM0Gh//MwCpX2TA4rV4lxjmh+d+j0VOMFgVh/YhsipKLNZza+KEpcx5g5cRxn9ctXHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250204_145012_096462_C35B54F8 X-CRM114-Status: GOOD ( 17.32 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Dan Williams The dcssblk driver has long needed special case supoprt to enable limited dax operation, so called CONFIG_FS_DAX_LIMITED. This mode works around the incomplete support for ZONE_DEVICE on s390 by forgoing the ability of dax-mapped pages to support GUP. Now, pending cleanups to fsdax that fix its reference counting [1] depend on the ability of all dax drivers to supply ZONE_DEVICE pages. To allow that work to move forward, dax support needs to be paused for dcssblk until ZONE_DEVICE support arrives. That work has been known for a few years [2], and the removal of "pte_devmap" requirements [3] makes the conversion easier. For now, place the support behind CONFIG_BROKEN, and remove PFN_SPECIAL (dcssblk was the only user). Link: http://lore.kernel.org/cover.9f0e45d52f5cff58807831b6b867084d0b14b61c.1725941415.git-series.apopple@nvidia.com [1] Link: http://lore.kernel.org/20210820210318.187742e8@thinkpad/ [2] Link: http://lore.kernel.org/4511465a4f8429f45e2ac70d2e65dc5e1df1eb47.1725941415.git-series.apopple@nvidia.com [3] Reviewed-by: Gerald Schaefer Tested-by: Alexander Gordeev Acked-by: David Hildenbrand Cc: Heiko Carstens Cc: Vasily Gorbik Cc: Christian Borntraeger Cc: Sven Schnelle Cc: Jan Kara Cc: Matthew Wilcox Cc: Christoph Hellwig Cc: Alistair Popple Signed-off-by: Dan Williams --- Documentation/filesystems/dax.rst | 1 - drivers/s390/block/Kconfig | 12 ++++++++++-- drivers/s390/block/dcssblk.c | 27 +++++++++++++++++---------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/Documentation/filesystems/dax.rst b/Documentation/filesystems/dax.rst index 719e90f..08dd5e2 100644 --- a/Documentation/filesystems/dax.rst +++ b/Documentation/filesystems/dax.rst @@ -207,7 +207,6 @@ implement direct_access. These block devices may be used for inspiration: - brd: RAM backed block device driver -- dcssblk: s390 dcss block device driver - pmem: NVDIMM persistent memory driver diff --git a/drivers/s390/block/Kconfig b/drivers/s390/block/Kconfig index e3710a7..4bfe469 100644 --- a/drivers/s390/block/Kconfig +++ b/drivers/s390/block/Kconfig @@ -4,13 +4,21 @@ comment "S/390 block device drivers" config DCSSBLK def_tristate m - select FS_DAX_LIMITED - select DAX prompt "DCSSBLK support" depends on S390 && BLOCK help Support for dcss block device +config DCSSBLK_DAX + def_bool y + depends on DCSSBLK + # requires S390 ZONE_DEVICE support + depends on BROKEN + select DAX + prompt "DCSSBLK DAX support" + help + Enable DAX operation for the dcss block device + config DASD def_tristate y prompt "Support for DASD devices" diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c index 0f14d27..7248e54 100644 --- a/drivers/s390/block/dcssblk.c +++ b/drivers/s390/block/dcssblk.c @@ -534,6 +534,21 @@ static const struct attribute_group *dcssblk_dev_attr_groups[] = { NULL, }; +static int dcssblk_setup_dax(struct dcssblk_dev_info *dev_info) +{ + struct dax_device *dax_dev; + + if (!IS_ENABLED(CONFIG_DCSSBLK_DAX)) + return 0; + + dax_dev = alloc_dax(dev_info, &dcssblk_dax_ops); + if (IS_ERR(dax_dev)) + return PTR_ERR(dax_dev); + set_dax_synchronous(dax_dev); + dev_info->dax_dev = dax_dev; + return dax_add_host(dev_info->dax_dev, dev_info->gd); +} + /* * device attribute for adding devices */ @@ -547,7 +562,6 @@ dcssblk_add_store(struct device *dev, struct device_attribute *attr, const char int rc, i, j, num_of_segments; struct dcssblk_dev_info *dev_info; struct segment_info *seg_info, *temp; - struct dax_device *dax_dev; char *local_buf; unsigned long seg_byte_size; @@ -674,14 +688,7 @@ dcssblk_add_store(struct device *dev, struct device_attribute *attr, const char if (rc) goto put_dev; - dax_dev = alloc_dax(dev_info, &dcssblk_dax_ops); - if (IS_ERR(dax_dev)) { - rc = PTR_ERR(dax_dev); - goto put_dev; - } - set_dax_synchronous(dax_dev); - dev_info->dax_dev = dax_dev; - rc = dax_add_host(dev_info->dax_dev, dev_info->gd); + rc = dcssblk_setup_dax(dev_info); if (rc) goto out_dax; @@ -917,7 +924,7 @@ __dcssblk_direct_access(struct dcssblk_dev_info *dev_info, pgoff_t pgoff, *kaddr = __va(dev_info->start + offset); if (pfn) *pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset), - PFN_DEV|PFN_SPECIAL); + PFN_DEV); return (dev_sz - offset) / PAGE_SIZE; }