From patchwork Thu Dec 7 04:36:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Verma, Vishal L" X-Patchwork-Id: 174911 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4553323vqy; Wed, 6 Dec 2023 20:36:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IHHqQj6/E25EqVPsLI7B/EYjB8YBCLFz7AQqzzSq94/3jEyeOdD4rs/wJITMFDTCfUsVb6e X-Received: by 2002:a17:903:228e:b0:1d0:9c53:9cca with SMTP id b14-20020a170903228e00b001d09c539ccamr1882720plh.96.1701923797118; Wed, 06 Dec 2023 20:36:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701923797; cv=none; d=google.com; s=arc-20160816; b=b/iW4DeHd6qRxehrnNdsLdaQ5+xZ0Krpu7bdsWHyGX+mMW2tFl6Yk4/XIjQODfnK80 c0sQMHHCmHObYaYuFHm5E+SYaSDjtWv7QniZcJ3/KJaAB4xGMBDFRPjPJGUYQL3j0iWi 1dNkub/riDLRM21/XErY/aC4gYVu7IDu7vyLumhGjSVoMxNmwzrj477fAn6FNt13aES6 XX3HgPgIPESVWJD5LejjWsb8o1xIuukawT5AL0YR2/fwfSd8iinsmUjEKv5jKwCb2sDl UKXRrxnoXkKOmjStTULKwVk+GvrzYpLW6f2KaFRIT6KTD388UXv278uMhnwz0EYw8DsS YWHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=hWtfM1F1vel+w8mwo45vU58LTBi++96l4z4DbzmF57Q=; fh=xvw/9LxGhEhKtbn4+KcWGYjFdU8db8H756+/ZyItSxU=; b=pL+Ppg6aJ8WqILrcooChIxg8tN3I6srldNxQoDHbfe8Sy1SF4nxDjicXMC3tNVDpgI 5CPrIn0YaA0eIzzw98ncI0lNBDRCD519EvrDO5ds78ajvIyNgKf+rsixCxSW4xMS4bLV rMUYMEUsaCpPUgfybrjFiWcpDhcgGMi9d7RDD5yg9F5X6pggSySVjSazCC0LTP3SfTSv N1UPcG29eM8oGV5VAWD8TUKnYNgC/Z4O+2e58KMMR3VMu0Qml6j8sWRcp+E6Fu4+rGbR tIcC7MWJwc/WAoc5QDeEuW7K+D+93BJNUtGZz3pWVEojw3oDh4OMyA/hK/IijRT5/s3z MEbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=QJIBpjh+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id jo3-20020a170903054300b001d0969c5b76si432566plb.74.2023.12.06.20.36.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 20:36:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=QJIBpjh+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 9A26B802AF0E; Wed, 6 Dec 2023 20:36:33 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229890AbjLGEgT (ORCPT + 99 others); Wed, 6 Dec 2023 23:36:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229745AbjLGEgO (ORCPT ); Wed, 6 Dec 2023 23:36:14 -0500 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BDF87110; Wed, 6 Dec 2023 20:36:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701923779; x=1733459779; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=j9znkpM/52KvUGuun0RJffYF/wG7fdqoc+th2+hzW9E=; b=QJIBpjh+RtTg0bA6uFsoi5Po5zb5zWXRNb9ERW4Gf0awkZd3iXLh8ilO SG1yr+3cZRTRg+r3SkHW/mWVdEbva8x8fBolSENa+efD5Wkr1zF7Nhk41 i4KHWf0qAIjDaWd62NtIm2L2f7XB5LP+FfmHGA0s3RwBP9aJK0sP8Tdyl pJpMErX+TBwPQ78VX1U6l9dmNG8aHDgT6DDDPViCPfKeNqaXAyb9p/rdM FSjPKPxqwh3inagFUtcFKPaOqO5ZHhOaVMslWINihSuEgpd4vghFh1aNC gxxcIsys94rrMNQiPVG6yHkmpVp2HoAY2amGP2br5UEc8LptKWRSDed2m A==; X-IronPort-AV: E=McAfee;i="6600,9927,10916"; a="1053223" X-IronPort-AV: E=Sophos;i="6.04,256,1695711600"; d="scan'208";a="1053223" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Dec 2023 20:36:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,256,1695711600"; d="scan'208";a="19570378" Received: from apbrezen-mobl.amr.corp.intel.com (HELO [192.168.1.200]) ([10.213.160.175]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Dec 2023 20:36:18 -0800 From: Vishal Verma Date: Wed, 06 Dec 2023 21:36:14 -0700 Subject: [PATCH v2 1/2] Documentatiion/ABI: Add ABI documentation for sys-bus-dax MIME-Version: 1.0 Message-Id: <20231206-vv-dax_abi-v2-1-f4f4f2336d08@intel.com> References: <20231206-vv-dax_abi-v2-0-f4f4f2336d08@intel.com> In-Reply-To: <20231206-vv-dax_abi-v2-0-f4f4f2336d08@intel.com> To: Dave Jiang Cc: Dan Williams , linux-kernel@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, Vishal Verma X-Mailer: b4 0.13-dev-26615 X-Developer-Signature: v=1; a=openpgp-sha256; l=6438; i=vishal.l.verma@intel.com; h=from:subject:message-id; bh=j9znkpM/52KvUGuun0RJffYF/wG7fdqoc+th2+hzW9E=; b=owGbwMvMwCXGf25diOft7jLG02pJDKmF3vsX7HHeeebriecrAh6+O77s1pwuc9P1j5cpRiY2Z VWk+4smdZSyMIhxMciKKbL83fOR8Zjc9nyewARHmDmsTCBDGLg4BWAiDg4M/7T80+Qszjnv3Tq5 17lIovINX6yD7oErS124auzfWv2xmMXI0MbP7nS4ccaEHzWp4eUX0mtPfv08e1KfTsHLV6J+TEu d+AA= X-Developer-Key: i=vishal.l.verma@intel.com; a=openpgp; fpr=F8682BE134C67A12332A2ED07AFA61BEA3B84DFF X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 06 Dec 2023 20:36:33 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784596447627112880 X-GMAIL-MSGID: 1784596447627112880 Add the missing sysfs ABI documentation for the device DAX subsystem. Various ABI attributes under this have been present since v5.1, and more have been added over time. In preparation for adding a new attribute, add this file with the historical details. Cc: Dan Williams Signed-off-by: Vishal Verma --- Documentation/ABI/testing/sysfs-bus-dax | 151 ++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-dax b/Documentation/ABI/testing/sysfs-bus-dax new file mode 100644 index 000000000000..a61a7b186017 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-dax @@ -0,0 +1,151 @@ +What: /sys/bus/dax/devices/daxX.Y/align +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RW) Provides a way to specify an alignment for a dax device. + Values allowed are constrained by the physical address ranges + that back the dax device, and also by arch requirements. + +What: /sys/bus/dax/devices/daxX.Y/mapping +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (WO) Provides a way to allocate a mapping range under a dax + device. Specified in the format -. + +What: /sys/bus/dax/devices/daxX.Y/mapping[0..N]/start +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RO) A dax device may have multiple constituent discontiguous + address ranges. These are represented by the different + 'mappingX' subdirectories. The 'start' attribute indicates the + start physical address for the given range. + +What: /sys/bus/dax/devices/daxX.Y/mapping[0..N]/end +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RO) A dax device may have multiple constituent discontiguous + address ranges. These are represented by the different + 'mappingX' subdirectories. The 'end' attribute indicates the + end physical address for the given range. + +What: /sys/bus/dax/devices/daxX.Y/mapping[0..N]/page_offset +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RO) A dax device may have multiple constituent discontiguous + address ranges. These are represented by the different + 'mappingX' subdirectories. The 'page_offset' attribute indicates the + offset of the current range in the dax device. + +What: /sys/bus/dax/devices/daxX.Y/resource +Date: June, 2019 +KernelVersion: v5.3 +Contact: nvdimm@lists.linux.dev +Description: + (RO) The resource attribute indicates the starting physical + address of a dax device. In case of a device with multiple + constituent ranges, it indicates the starting address of the + first range. + +What: /sys/bus/dax/devices/daxX.Y/size +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RW) The size attribute indicates the total size of a dax + device. For creating subdivided dax devices, or for resizing + an existing device, the new size can be written to this as + part of the reconfiguration process. + +What: /sys/bus/dax/devices/daxX.Y/numa_node +Date: November, 2019 +KernelVersion: v5.5 +Contact: nvdimm@lists.linux.dev +Description: + (RO) If NUMA is enabled and the platform has affinitized the + backing device for this dax device, emit the CPU node + affinity for this device. + +What: /sys/bus/dax/devices/daxX.Y/target_node +Date: February, 2019 +KernelVersion: v5.1 +Contact: nvdimm@lists.linux.dev +Description: + (RO) The target-node attribute is the Linux numa-node that a + device-dax instance may create when it is online. Prior to + being online the device's 'numa_node' property reflects the + closest online cpu node which is the typical expectation of a + device 'numa_node'. Once it is online it becomes its own + distinct numa node. + +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/available_size +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RO) The available_size attribute tracks available dax region + capacity. This only applies to volatile hmem devices, not pmem + devices, since pmem devices are defined by nvdimm namespace + boundaries. + +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/size +Date: July, 2017 +KernelVersion: v5.1 +Contact: nvdimm@lists.linux.dev +Description: + (RO) The size attribute indicates the size of a given dax region + in bytes. + +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/align +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RO) The align attribute indicates alignment of the dax region. + Changes on align may not always be valid, when say certain + mappings were created with 2M and then we switch to 1G. This + validates all ranges against the new value being attempted, post + resizing. + +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/seed +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RO) The seed device is a concept for dynamic dax regions to be + able to split the region amongst multiple sub-instances. The + seed device, similar to libnvdimm seed devices, is a device + that starts with zero capacity allocated and unbound to a + driver. + +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/create +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (RW) The create interface to the dax region provides a way to + create a new unconfigured dax device under the given region, which + can then be configured (with a size etc.) and then probed. + +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/delete +Date: October, 2020 +KernelVersion: v5.10 +Contact: nvdimm@lists.linux.dev +Description: + (WO) The delete interface for a dax region provides for deletion + of any 0-sized and idle dax devices. + +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/id +Date: July, 2017 +KernelVersion: v5.1 +Contact: nvdimm@lists.linux.dev +Description: + (RO) The id attribute indicates the region id of a dax region. From patchwork Thu Dec 7 04:36:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Verma, Vishal L" X-Patchwork-Id: 174912 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp4553379vqy; Wed, 6 Dec 2023 20:36:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IGa9qJkO0dWddnIu3fnnoMYLAHnbRpVA2o5Dv9PovgAlYjF7BJ1FMZU9l0tJuGghfW64Mbb X-Received: by 2002:a17:90a:660a:b0:286:6cc1:781b with SMTP id l10-20020a17090a660a00b002866cc1781bmr2129395pjj.94.1701923807441; Wed, 06 Dec 2023 20:36:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701923807; cv=none; d=google.com; s=arc-20160816; b=UooTeg26ntceK2LGUSqjh7D6QcVlCndYsPCCkZzKNQcWFWnPIFFEv6LWs177dxgm1d 5FHYCHL0bavylEvFJI5avrnQzrsMTJYxtTJs/ZKNXPGJM9M/4Kz8BKbX7AArhuALUlyZ g+xx/yMGjuCJfbWF+b/ppliceiw67IrYUPyHjdJ+Nosl3Dt6tDgnNMsahjHjQqnJzJ0C teiWc+wDgfraV5C2y54gYzewFiIKePvSLR2nM/cKEBng3EjLCgeW1C9LzF2AFx/KLpSU 3Y9go2ymyG/jZNwGztpcgu2RwQP5Y7yFbkUkf3AtmZXDGxp0EFkYVIE/7gPzRjab2ROe cYWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=MLd0qhASlQ85xAWcyv7h/W9riIqLqjmj76f3kMIgcwI=; fh=C1z4TcJ8nNma5YAz1Ryxr0a/S4W3aZVdFd4B3sd28Kk=; b=FG8afetQwQjByi7SH8BZBEExEiuQLOexjSCLu4hDxb50SSkOKzXj4aSRt4jh+msvaM vbGAquXKzUeJXnIPIIf2j1DAY6Lct2aCf6uoMYH0+72mGHL78BgUk9lcaESDabG/Gaa7 dSzRGWnbR9uWhGXFFkC5t5xv66PsqJh5ZyeV5R/82wOn1Qb8Te+UHqY+UjSC0wGJnpp7 geZvzruvxwbBn8XqLZmt9waLNP8pEhX/o7QcxjXJmddPNiGPNt+WaM6sNkzanbgohcz3 0vGNMsSYS6z913w+yGVQPPJJF5LKBIdmLQ9oWS+19XDv135OEywhKM81PeXU2zeunwVq /70A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=X8ibD31H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id ie2-20020a17090b400200b002865967fa43si363822pjb.112.2023.12.06.20.36.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 20:36:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=X8ibD31H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 6926C83EE9E1; Wed, 6 Dec 2023 20:36:28 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229841AbjLGEgQ (ORCPT + 99 others); Wed, 6 Dec 2023 23:36:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229552AbjLGEgN (ORCPT ); Wed, 6 Dec 2023 23:36:13 -0500 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CE091126; Wed, 6 Dec 2023 20:36:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701923779; x=1733459779; h=from:date:subject:mime-version:content-transfer-encoding: message-id:references:in-reply-to:to:cc; bh=GLP9N2ferQtSs1kZ5RuoBDkk5vqBcdypuQXPjkQVI40=; b=X8ibD31HmjD6dEsDuWjAgiWKn+hA7mbiNP6hjPU98obC9wFJihP0jgww sDbBe/GUyaVDqnYe9p+2dSbG8eaPjQj1E+M2511LGHJujH4OcIxh+8AhU dsnMEsSH4+rWoCIP2H1H+ELP3riFep82wBlkgLsXxldbQGUi2wVubz+VE DzmZ8le5Q6p6YOqabb/hIJYVH8/r1+xBF/CSlCm4NY1FYHWXmnX3Tclju QD1D6AeH5iqYrXP6M4Pfv4MPIaWY5yAYpEx7VZfz2bmsrFc9plT0KpWOr f68Z8RAKes8s0lz/jukPPCuo+/6VpQc4omZ+1TUfpwnqGt53Y0jnne9xY w==; X-IronPort-AV: E=McAfee;i="6600,9927,10916"; a="1053229" X-IronPort-AV: E=Sophos;i="6.04,256,1695711600"; d="scan'208";a="1053229" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Dec 2023 20:36:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,256,1695711600"; d="scan'208";a="19570383" Received: from apbrezen-mobl.amr.corp.intel.com (HELO [192.168.1.200]) ([10.213.160.175]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Dec 2023 20:36:18 -0800 From: Vishal Verma Date: Wed, 06 Dec 2023 21:36:15 -0700 Subject: [PATCH v2 2/2] dax: add a sysfs knob to control memmap_on_memory behavior MIME-Version: 1.0 Message-Id: <20231206-vv-dax_abi-v2-2-f4f4f2336d08@intel.com> References: <20231206-vv-dax_abi-v2-0-f4f4f2336d08@intel.com> In-Reply-To: <20231206-vv-dax_abi-v2-0-f4f4f2336d08@intel.com> To: Dave Jiang Cc: Dan Williams , linux-kernel@vger.kernel.org, nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org, Vishal Verma , David Hildenbrand , Dave Hansen , Huang Ying , Jonathan Cameron X-Mailer: b4 0.13-dev-26615 X-Developer-Signature: v=1; a=openpgp-sha256; l=3572; i=vishal.l.verma@intel.com; h=from:subject:message-id; bh=GLP9N2ferQtSs1kZ5RuoBDkk5vqBcdypuQXPjkQVI40=; b=owGbwMvMwCXGf25diOft7jLG02pJDKmF3gcKzPfKbereozs7go1h30Gr2z0vtixXrP9WH6aV0 WHGt+ZHRykLgxgXg6yYIsvfPR8Zj8ltz+cJTHCEmcPKBDKEgYtTACZyspDhN8uE/G1d5ypauhc5 5IRuu+B2hOnShtvJ7DXprIF6ZywyzRn+8DjbsxYyqgbaKfAVlauEsdSHtL+9VmC32TWz50b1pt/ 8AA== X-Developer-Key: i=vishal.l.verma@intel.com; a=openpgp; fpr=F8682BE134C67A12332A2ED07AFA61BEA3B84DFF X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Wed, 06 Dec 2023 20:36:28 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784596458482773704 X-GMAIL-MSGID: 1784596458482773704 Add a sysfs knob for dax devices to control the memmap_on_memory setting if the dax device were to be hotplugged as system memory. The default memmap_on_memory setting for dax devices originating via pmem or hmem is set to 'false' - i.e. no memmap_on_memory semantics, to preserve legacy behavior. For dax devices via CXL, the default is on. The sysfs control allows the administrator to override the above defaults if needed. Cc: David Hildenbrand Cc: Dan Williams Cc: Dave Jiang Cc: Dave Hansen Cc: Huang Ying Reviewed-by: Jonathan Cameron Reviewed-by: David Hildenbrand Signed-off-by: Vishal Verma Tested-by: Li Zhijian --- drivers/dax/bus.c | 40 +++++++++++++++++++++++++++++++++ Documentation/ABI/testing/sysfs-bus-dax | 13 +++++++++++ 2 files changed, 53 insertions(+) diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c index 1ff1ab5fa105..11abb57cc031 100644 --- a/drivers/dax/bus.c +++ b/drivers/dax/bus.c @@ -1270,6 +1270,45 @@ static ssize_t numa_node_show(struct device *dev, } static DEVICE_ATTR_RO(numa_node); +static ssize_t memmap_on_memory_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct dev_dax *dev_dax = to_dev_dax(dev); + + return sprintf(buf, "%d\n", dev_dax->memmap_on_memory); +} + +static ssize_t memmap_on_memory_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t len) +{ + struct dev_dax *dev_dax = to_dev_dax(dev); + struct dax_region *dax_region = dev_dax->region; + ssize_t rc; + bool val; + + rc = kstrtobool(buf, &val); + if (rc) + return rc; + + if (dev_dax->memmap_on_memory == val) + return len; + + device_lock(dax_region->dev); + if (!dax_region->dev->driver) { + device_unlock(dax_region->dev); + return -ENXIO; + } + + device_lock(dev); + dev_dax->memmap_on_memory = val; + device_unlock(dev); + + device_unlock(dax_region->dev); + return rc == 0 ? len : rc; +} +static DEVICE_ATTR_RW(memmap_on_memory); + static umode_t dev_dax_visible(struct kobject *kobj, struct attribute *a, int n) { struct device *dev = container_of(kobj, struct device, kobj); @@ -1296,6 +1335,7 @@ static struct attribute *dev_dax_attributes[] = { &dev_attr_align.attr, &dev_attr_resource.attr, &dev_attr_numa_node.attr, + &dev_attr_memmap_on_memory.attr, NULL, }; diff --git a/Documentation/ABI/testing/sysfs-bus-dax b/Documentation/ABI/testing/sysfs-bus-dax index a61a7b186017..bb063a004e41 100644 --- a/Documentation/ABI/testing/sysfs-bus-dax +++ b/Documentation/ABI/testing/sysfs-bus-dax @@ -149,3 +149,16 @@ KernelVersion: v5.1 Contact: nvdimm@lists.linux.dev Description: (RO) The id attribute indicates the region id of a dax region. + +What: /sys/bus/dax/devices/daxX.Y/memmap_on_memory +Date: October, 2023 +KernelVersion: v6.8 +Contact: nvdimm@lists.linux.dev +Description: + (RW) Control the memmap_on_memory setting if the dax device + were to be hotplugged as system memory. This determines whether + the 'altmap' for the hotplugged memory will be placed on the + device being hotplugged (memmap_on+memory=1) or if it will be + placed on regular memory (memmap_on_memory=0). This attribute + must be set before the device is handed over to the 'kmem' + driver (i.e. hotplugged into system-ram).