From patchwork Thu Feb 8 18:49:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Desnoyers X-Patchwork-Id: 13550326 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 85C20C4828F for ; Thu, 8 Feb 2024 18:49:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 07EF56B008C; Thu, 8 Feb 2024 13:49:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E5D986B0092; Thu, 8 Feb 2024 13:49:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B54866B0095; Thu, 8 Feb 2024 13:49:28 -0500 (EST) 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 99B4C6B008C for ; Thu, 8 Feb 2024 13:49:28 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 743EA120F72 for ; Thu, 8 Feb 2024 18:49:28 +0000 (UTC) X-FDA: 81769524816.08.D37742D Received: from smtpout.efficios.com (smtpout.efficios.com [167.114.26.122]) by imf21.hostedemail.com (Postfix) with ESMTP id D64A41C0012 for ; Thu, 8 Feb 2024 18:49:26 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=efficios.com header.s=smtpout1 header.b=G+MCYgcI; dmarc=pass (policy=none) header.from=efficios.com; spf=pass (imf21.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 167.114.26.122 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707418166; 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=8wpHKT9Hi7IbUfkZ2WanEEBa5TZxfFZsQCKHq9VYM5A=; b=4YGoF/ch8wBjYOnw1s8JqFEz71jUGAyBGVY2qOMLeLUVAWEP03Q3i73b9n0bmkuBn0iV78 Wsn478FKkv1GV6e0mysjCl0WSPYCAQfHVg77AlDyA/Qx4AE+DF7NcvHnvsjqtthXKaKGqK EekooVRY/UweR90jlAQfl+PSKd0HPyA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=efficios.com header.s=smtpout1 header.b=G+MCYgcI; dmarc=pass (policy=none) header.from=efficios.com; spf=pass (imf21.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 167.114.26.122 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707418166; a=rsa-sha256; cv=none; b=z3DQ/nAirm4IvgPPv+mnj+bbLmFvgdrH8usmchkB9GQEgzE4YWKzxxzfwrAngNoKfWdli8 YyAupflXD9DtdH2ciEeR1KVmJ/P0rEgZntKGKjMedcBfPUVtKdYDbI2SGAJ1TJH1DtmXNC AQFpqhkGkOGmKDuyzwPDJ/lVhmvvxaA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=efficios.com; s=smtpout1; t=1707418166; bh=MgteUY0CjaNYCNu4ZJjdjfbOYQwaLS6hDEa6C2rXhOI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G+MCYgcI7iOhUtOG80uDYEEj9WDUFtjZj9v5kigEOVyg1Gl0p5tefCTOJimzq7BIl Bntq03Tcm/N+e6ObNbaOTegq2ADAQ6pQAwKRVSja1uTLw5yeNuWK/hvvwPRF7XXbX/ M6nZvFFxMKHg5SQuBdBtw17hxlxVb8oD+kSkJNaegeMMMlHzHo5f/VuV5nAyz64Pyw A0gPrGc0Vnc/Vms7OHuOkBj+zaxkVYidiXOcY2aohU+UyZ2+NFyxkSnkI7UeA2jGpn EkUAuevUw1ZVowe9kZH+93MAkvXFLN/9+SJBI+P9oBDLUkZMEhunrIKZMVOfThz2S7 T2GUX150wzk3A== Received: from thinkos.internal.efficios.com (192-222-143-198.qc.cable.ebox.net [192.222.143.198]) by smtpout.efficios.com (Postfix) with ESMTPSA id 4TW5cj6MmwzY5R; Thu, 8 Feb 2024 13:49:25 -0500 (EST) From: Mathieu Desnoyers To: Dan Williams , Arnd Bergmann , Dave Chinner Cc: linux-kernel@vger.kernel.org, Mathieu Desnoyers , Andrew Morton , Linus Torvalds , Vishal Verma , Dave Jiang , Matthew Wilcox , Russell King , linux-arch@vger.kernel.org, linux-cxl@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-xfs@vger.kernel.org, dm-devel@lists.linux.dev, nvdimm@lists.linux.dev, linux-s390@vger.kernel.org Subject: [PATCH v4 08/12] dax: Fix incorrect list of data cache aliasing architectures Date: Thu, 8 Feb 2024 13:49:09 -0500 Message-Id: <20240208184913.484340-9-mathieu.desnoyers@efficios.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240208184913.484340-1-mathieu.desnoyers@efficios.com> References: <20240208184913.484340-1-mathieu.desnoyers@efficios.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: D64A41C0012 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: i4dxhg9e4zrpi41xa5iydm1jkmar8yis X-HE-Tag: 1707418166-651402 X-HE-Meta: U2FsdGVkX1/5cXTQtMFApRejRvpzmbRD00TJM79wi/RVsXAf3Yk+EQGqtX/984ycyhZZe5DeS174lU/XiTXKIm8aeduL8xRNGWAEtJv12A7OCmOUsQuAwIinoLuDVeMMLFKtolYpmcHM9LVNvFX+Qv111J30s3OzGflVZYm32g6PEpXgoe9c3ZR0dukIfeyyvWg/WvQ2iPP6/gqhuI6hOm3c5bDKFPxquj+J3oYhazRFQ4a8lN7wjwilM5HouVX2/G/ENxkwKNUtBMMPBz/3q947XBda6z0uvtF8Y2d+HopFTjTyRGaSrArJq+5jFqX3zGqA9XvdMdRZoZK7h3yLxfR+PphoOtK8biJxXvrZHJgtQy/VG6gopZCLaseP1/jtqMNiYimDFn03kxMZRm5CPTdb7tlTn6hshFzYHIbyztI1TR7xGsddmp2qiT8WYgLqU3f+jcg5bx5F49CUsdHK2vGV2joIi9ruP4pgVKUT4E/z0sBreKHHX5feqpgmD4h69SNlfx8DxiJ911vNX40r4y0RB61YkcDbVGdOvzJQ0GB3q87Bo9P+RXyeVSjKSfLHRFmYHpgJ/BFOwGm1sWI2XcMiGBuwsaEqKU5kJK32A8V0LNzjvHaZZsjETY9PQCrRmGioumx1NS89VHWN15ArYc/HbDoOc5mNdxXdeGkGC049hzwIoAuBR4YaYwU3Ilu5vZMwqlypu/ASO2Ja8g2RhcDiQzbwV12tJ59xtpYv2qCTeDfWV6oQdzbk3cw/8tJvL/iwqE1ymSx96fMGZwBKPjj5/uad6Rti54ghirDfT8yYRDeCQYJfDJTZxXx31/eDgWVQRIAUV7poALMs7xRCjAXXEWJ59sxH4slKVAiDK1M7OVjLjnynMDMy7UMVHeRPSye37jF99G8TBpE+RWX5ejX+bTnfBO81fVkntkwQxXSDlSUvfKerrczMK81A4UyKHZmKYyPP433DhRRUGr0 zsUIvOf3 cgBvyFFFQY2rf4OkUT3sqYK8I0InRkDJ0FQHqxTIpYsKypKGk8X9ZpUQr16mlweeNK528tI2NJ3C2+VR5UbEuLY7tW4yszFVIOW5bs65/tHfGzzKtWGYhW/vOuqHhFmieoUZh29eRcVjSMtxEPLh3N1jzul3iINbwqYHHEbKJKV7xobX6T+N3alTJh4aHhMJbJPlx2PiVr4u/ESd9YwDjTiJtyjaj3PruAH0/EOasciC7bFfYGKEsbjJ125/VSCSCajZI77yn3w8kqVC/lwObBEGizcMF7EmOPumq8MHxo0vxuvTvmp4gmmlwE9qoAMRWhnPB5A5FqYrJxdWE6JgLGsWwbCOSUdxb19SH4hUwrVzzdTnRxaATW89PxpKE4MamP3rAfsl+ign1Ap5VeBiXZGcKyvhILmptOO9hEPSq27dxDEOpihliCC2uYMZRo5aPKwviOK8AOgj7yDdaZDJIOYFNXSLbTVPOUIYxKaStQJkBMpbxyAFCsze96UZRPTbmQMrT8UJjdLG134jKxnZCwMs33zc3O/M4rTI8LbHx1f9NKGMs6jNUdwNtjfRNmph/2vmC 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: commit d92576f1167c ("dax: does not work correctly with virtual aliasing caches") prevents DAX from building on architectures with virtually aliased dcache with: depends on !(ARM || MIPS || SPARC) This check is too broad (e.g. recent ARMv7 don't have virtually aliased dcaches), and also misses many other architectures with virtually aliased data cache. This is a regression introduced in the v4.0 Linux kernel where the dax mount option is removed for 32-bit ARMv7 boards which have no data cache aliasing, and therefore should work fine with FS_DAX. This was turned into the following check in alloc_dax() by a preparatory change: if (ops && (IS_ENABLED(CONFIG_ARM) || IS_ENABLED(CONFIG_MIPS) || IS_ENABLED(CONFIG_SPARC))) return NULL; Use cpu_dcache_is_aliasing() instead to figure out whether the environment has aliasing data caches. Fixes: d92576f1167c ("dax: does not work correctly with virtual aliasing caches") Signed-off-by: Mathieu Desnoyers Cc: Andrew Morton Cc: Linus Torvalds Cc: Dan Williams Cc: Vishal Verma Cc: Dave Jiang Cc: Matthew Wilcox Cc: Arnd Bergmann Cc: Russell King Cc: linux-arch@vger.kernel.org Cc: linux-cxl@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org Cc: linux-mm@kvack.org Cc: linux-xfs@vger.kernel.org Cc: dm-devel@lists.linux.dev Cc: nvdimm@lists.linux.dev Reviewed-by: Dan Williams --- drivers/dax/super.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/dax/super.c b/drivers/dax/super.c index ce5bffa86bba..a21a7c262382 100644 --- a/drivers/dax/super.c +++ b/drivers/dax/super.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "dax-private.h" /** @@ -455,9 +456,7 @@ struct dax_device *alloc_dax(void *private, const struct dax_operations *ops) * except for device-dax (NULL operations pointer), which does * not use aliased mappings from the kernel. */ - if (ops && (IS_ENABLED(CONFIG_ARM) || - IS_ENABLED(CONFIG_MIPS) || - IS_ENABLED(CONFIG_SPARC))) + if (ops && cpu_dcache_is_aliasing()) return ERR_PTR(-EOPNOTSUPP); if (WARN_ON_ONCE(ops && !ops->zero_page_range))