From patchwork Sun Apr 13 22:52:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ira Weiny X-Patchwork-Id: 14049479 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6328921480B for ; Sun, 13 Apr 2025 22:52:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.7 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744584763; cv=fail; b=hIiTyi2tiot1JkHg6gGOWMOzpyUADx818W+MoNIA59FlSMcPod2ZxiDAR0q5dbC2Rt6r/taKCkSTUaxqSgsyIz7jPKF9zNg+ChxGsZnQalDQjANju8olpz6ec07h9szQZjTR0GGqLAC1M23qxIJn2uEbGt1dR32Sd1ZmFVglUdw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744584763; c=relaxed/simple; bh=IXXz9ma+sLFTS3/AZjlqAxGNvG3+Lzvfiga4mSetDHA=; h=From:Date:Subject:Content-Type:Message-ID:References:In-Reply-To: To:CC:MIME-Version; b=MkfBTRxh0esnOFnCJwvu52blDE8B/y60j2ulKeWdIxSnwmWKwHRY2+Xs3w7WAUzzYYqu9uONgq67adRYgdW/3/zzGT/wRHFLYu00BEd2SYD46f9u6WMyOOUkpKfyyXjfjG1LUyhTiGy3MzdJr0RVRdj4NUXEkZvu9PlUsNu7OD0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=jKLDeBzQ; arc=fail smtp.client-ip=192.198.163.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="jKLDeBzQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744584761; x=1776120761; h=from:date:subject:content-transfer-encoding:message-id: references:in-reply-to:to:cc:mime-version; bh=IXXz9ma+sLFTS3/AZjlqAxGNvG3+Lzvfiga4mSetDHA=; b=jKLDeBzQGkTI0CaJOjmqA62Tu/PyBWWc3womVD00IaePqSvGElVyZ9sT z81xqR3JcLY0m42OScteDT/eaXdYoNIpozB+Glj9TCRQ5hD7tgc0ii9wB xDrsvA6TTBfKg8BD1ox6eS8tPoXAz4aqvb4lo536dLD++mFjLXGcVzLXk Z4gwCCHDwQJG4UBJ6G2GKRsVNQE4pU7XLZwMacCq7WnkwW/EDSlR4fUWB 6KKVAGaaVBb+sIZ4UU8PTK+IafL08PMpajfOCvt4P3UmUeFWS8j0RZpYF mfxZjA2LWK8qYp8ho6zsh3EUSBkRWa1tLH82ydEUocHZXrRYRvZVojKNA A==; X-CSE-ConnectionGUID: FaiC1Pf2QJSACkJ/gEHAdA== X-CSE-MsgGUID: 1gCMIjLVT6Ojr36ThUKWMA== X-IronPort-AV: E=McAfee;i="6700,10204,11402"; a="71431156" X-IronPort-AV: E=Sophos;i="6.15,211,1739865600"; d="scan'208";a="71431156" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2025 15:52:40 -0700 X-CSE-ConnectionGUID: 6K8XBdPBTJGRyzlEGkvZdw== X-CSE-MsgGUID: VVrMQQrFTtCTYCrUv63sNg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,211,1739865600"; d="scan'208";a="134405598" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by fmviesa005.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2025 15:52:41 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Sun, 13 Apr 2025 15:52:40 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Sun, 13 Apr 2025 15:52:40 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.44) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Sun, 13 Apr 2025 15:52:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vZHfLNlsBrDQPI99YYkPR6EF/BW6R/qn8jV9Y0WDw8rHVxoiyb3mRc57WJmvnEcMeiZ3ltIP8IhWmdzwC/mOMBm0AYBBo/yo3qbfR/vBO6qLG4wiIlscfN3MbvNsM2WVgonGGhZQo0mUe41iUHTSYPOOBnsOgM/OBifeLiZHs00R/vHL8FxBjlVd5/MM6exWWubjU5VdcvzV4p0995VIlylz8QIV0rwswHFs6ujFHnMDxRoFPZI/BOIqNwCPxp46LEF8tj+/hQgLcAPJw9WaXgSMs2EZMiNfr0wOanReFYclgCjO6s54K/9lvgmrWg4k8dV7+n0I0cdrbGYUC6F+4g== 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=oZl4Vlki6bfQx7xxAH7vGT4mRBwehSOgPocHtpdgXgU=; b=uRYjfek9H6jRh+sSiyPf3TgiTiwYWU3oWutDpR+ivUSC4VyV18l31mB8qnNTCGwDQpQGM5BMKidLWJEpzNM8Op7Fd0F5Bu8dBNs5rAhgVths3swEPoLklycPn/Rp98lw0XBL7dRdN8+VkmzaBp7HdBgFxrc/SwfNVib1ETBpWgmPt7j6PdAB1GdYxFy6dUYnz1gG6qGJeBUh9Lt0U/vyf1VY3tmDOM4lVqtIbneJYgoF2qwHONT5V4sTTJ6R4g8WlYqu+0AgTN6cHetT5j2jV2caDBzAKsEMmwvE7BLdTbyFVdwkudZ7ytKTjjhQSTeECykyjNeBR67zxuUerROzUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from MW4PR11MB6739.namprd11.prod.outlook.com (2603:10b6:303:20b::19) by PH7PR11MB7003.namprd11.prod.outlook.com (2603:10b6:510:20a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.33; Sun, 13 Apr 2025 22:52:37 +0000 Received: from MW4PR11MB6739.namprd11.prod.outlook.com ([fe80::a7ad:a6e8:fced:3f24]) by MW4PR11MB6739.namprd11.prod.outlook.com ([fe80::a7ad:a6e8:fced:3f24%4]) with mapi id 15.20.8606.033; Sun, 13 Apr 2025 22:52:37 +0000 From: Ira Weiny Date: Sun, 13 Apr 2025 17:52:59 -0500 Subject: [ndctl PATCH v5 2/5] cxl/region: Add cxl-cli support for dynamic RAM A Message-ID: <20250413-dcd-region2-v5-2-fbd753a2e0e8@intel.com> References: <20250413-dcd-region2-v5-0-fbd753a2e0e8@intel.com> In-Reply-To: <20250413-dcd-region2-v5-0-fbd753a2e0e8@intel.com> To: Alison Schofield CC: Vishal Verma , Jonathan Cameron , Fan Ni , Sushant1 Kumar , Dan Williams , "Dave Jiang" , , , Ira Weiny X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1744584788; l=4916; i=ira.weiny@intel.com; s=20221211; h=from:subject:message-id; bh=IXXz9ma+sLFTS3/AZjlqAxGNvG3+Lzvfiga4mSetDHA=; b=g2oC7F7fvdFc4wtEIH1VSXIhOwdbScPQp9SZhHuzNI0jECqA7L1z9pXG1Gy3QGaihpFHAbeZf vs5exITZQBFBhu2TMHU2g8Ha4lklKbvqvSHsmzxId0jFfoTwe3pvnUy X-Developer-Key: i=ira.weiny@intel.com; a=ed25519; pk=noldbkG+Wp1qXRrrkfY1QJpDf7QsOEthbOT7vm0PqsE= X-ClientProxiedBy: MW2PR2101CA0016.namprd21.prod.outlook.com (2603:10b6:302:1::29) To MW4PR11MB6739.namprd11.prod.outlook.com (2603:10b6:303:20b::19) Precedence: bulk X-Mailing-List: nvdimm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW4PR11MB6739:EE_|PH7PR11MB7003:EE_ X-MS-Office365-Filtering-Correlation-Id: 16b0440d-16c7-4fb3-23c8-08dd7adde2e3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?MzmzuKivpih3ndkLatiYFCSofmKWWlL?= =?utf-8?q?oJwCdK+waujSubqjPR2QWk1IFxrE+dWo81a021mbn29Ob0HvBFzso3khbnxYPVkFW?= =?utf-8?q?3HO2DPfEUxX1T8bHwuU9DM1jL2QSjcwQvLD4xT3fsbBW+yaDI5j1ZutZNCMK1qV/5?= =?utf-8?q?5wrVSArvGhIAmJlJiypuKAoebaYHfFr9o9cpU9uATEcEvT5XU1g/ZYBrQ7MLAZeP6?= =?utf-8?q?i6/hR6V1yKfGulbiNl5LyZFVl74YqOvEFXZDgln4Cmlu7KtV6YGoCoQXV4NGibOHJ?= =?utf-8?q?vKU3SvMNgNfb6N+MEY7XvWBU1ksgTA508ghNkv5SO9mmZLkQ+un9rnAgvciicvGqY?= =?utf-8?q?+pqDrCwK6LGK4+SyBl4l1lKTfgOJl9XqJjZ0d6CdV0QiEdLft/52uNARSlc15Sx9M?= =?utf-8?q?YziWQJ2PCanTnKpznStKq8R6+Q966ipgCRZO936t4gbBsVPT1+A2pZt7UbQBrv10w?= =?utf-8?q?uP/+eiN/72tA0Jup0ZM2qNfQR91w/Tk0bH/C4zGfe3DO0+be2Da0kBj9s0vTudZ9L?= =?utf-8?q?1SLHl1OLXc++oLY92kTCENjLfkAxzdt1lx76Pg5M2pFFzo6tSP+uJc/1zAxk5zOuT?= =?utf-8?q?HwOhtJ7nUkurgDFE60RU7EHzEN54yp26d6E7t2oK3epconK/2WMxuadUNUKPwHPz6?= =?utf-8?q?e2eaVqyhOjwqI1NGKBTuYktWtAetae+/XWjnkCYJtPX6K8b+inYlrrFLrr/OGMWc0?= =?utf-8?q?tqglZIRHLl9D0j2bivmXodZ6H4hUkzf4myQ+8euV9Aj6R15ugGBUn8oFoTqR+EPWo?= =?utf-8?q?7BCblzv9l5OhS1UTtKN4Uj8VqLAYWczBhXvvstdwVR0Wac/OK2g/uUhhXsQSAjPDY?= =?utf-8?q?zIRnLq4JxquX+ENgfyMuQFyv8OkMZVrTgj1HSutys5KK3Epk75uKiq5U7W/suP8Jd?= =?utf-8?q?RCmovGdoIGqVDsfAnrK7UqY50TlNSoOjHD3/9dOLjcHJ0GdMNXQjFRUwdvxxGpavB?= =?utf-8?q?HQTAbjSvi7l1BPCxry9dw3yi2JRDGJxDYCT/B6xOZB1rv1yHoScw7wUnc3Lkc+dNS?= =?utf-8?q?JjkVRmgb/aKpjlM9cfbl1jwTThTIkm26wGW0ovnN240IsupM1+A1b2kbQm+ieJ81v?= =?utf-8?q?YWAGvqjb9olpsEqL1pH9wV/+R7iZ6iqQPYROveEemhSCrZk8Wo/d+KA+ViFKByaPv?= =?utf-8?q?F0O+zIsKR83ATM5Y9LUQbKPgnOA3XZtKfWfwUNKJtLeedAOv8yLPCWidXXtSsSyvk?= =?utf-8?q?GGVo/Wz/csA8IquLQcS3cwt0Q0OvuK/hDfWl9/5LWEFPMLK2dsJL9E5GftVpLRVcQ?= =?utf-8?q?yWA6YSte8r1tLIqiJXRfjDasE69s3p205ef570IISZQBAPTwiUUIjceH4nLntqcGV?= =?utf-8?q?1Xi/IvgwAtUru/9lJbFjFDDCE/+C78DcJ8pFNH8z0Rj6lt5+f95tNFU=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB6739.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?/JF0xjdUvhh+u9kOfuFb0PHv9X7U?= =?utf-8?q?mNnm92D7/CfdV2/jiZHteP7N/EyVDO/1OETUaXb7gwJnHLEI6iL1Ic0cfamJaVuuX?= =?utf-8?q?Tgmmja+1KynctlbLPqXTGuqAsC3vdZFmbvwS5BzLDol5wtKOb4nDDJh/QmW+f1dLf?= =?utf-8?q?STTz8Hg9OcoV9Ed4vVXLfzpQnQ6bYlNgiYKl49KEmuHrhUIPH9VLrrjVzgqvgeNja?= =?utf-8?q?ucjfwuR7DOgJjElkF7sup9AfBoJTrx3J1ojhqETcFF5MW7GWD1R4yUzezCaX7LLk/?= =?utf-8?q?RzabLDCmzzxJQ3C1OwPEmtLoloPZMAZ1OzDH5bYUGxA2nZfSSYGkIAszmFQqaWted?= =?utf-8?q?w7SSjF5eYMk2sMbZIsw0X2s542fooCzLiYI8lnTw0A3moz7a43vvQjIb437qtdOae?= =?utf-8?q?6aPFKjD7geKUOB5CaZXZopy8Vwz5VR+qxj4AeDocmbxffQsmCgcRpbuGu/bTN9DlG?= =?utf-8?q?TAWOQVqrK5Rdx5zgYnMBJ0AIeRm25e/tKM/oVm1FO2gfFKkFeHGjvpnz6oUXLAGed?= =?utf-8?q?v7QVF7UT+iWfwZ2wlDBewziQ1HeagmXAEcc2738woco/oETz2f+QCK/cfXo75zPY7?= =?utf-8?q?/Bh6Dcutl7+rbtaqWDd4xgkVPFH+m11cZ1dZI9Drc75XFkN11r8fEv3BVDMrN3Z6d?= =?utf-8?q?54JRtggd/IXTCflmpojmWJT8OduYQerR0It0nvQTPSB6Zq+aJYMKQhZkr/Uupi6K5?= =?utf-8?q?cD9HLblP+Zf+cHqDrsjcDszJDptVpAZN+PcXtEWpAAPtg87sbBKRdMDUBsCsSYf7q?= =?utf-8?q?JtUTIxZ4/Pl8JqvBntiRvg8M5D32ryccs3liEu0KV7Dpf6+SQqCApFZyE29YmH2cX?= =?utf-8?q?Kq6k7TMKGWSaeIhTJdtf8eKR+4Nq3xtXoIfYgR2tuS1SDdF7kgU/92jpFF8OLAlYE?= =?utf-8?q?viulYVFfmga/YlABl86XVreRS87cu/OyKmS8UmKjuZBC1T6lIzb5RBrmA9W1KD91o?= =?utf-8?q?otIR12N0Vtg2kspNxfxD6Z1iZDYYlW2UviKNJycUwlU/SxZeVLQPvgXvojEZGPSop?= =?utf-8?q?81koF4BL1BsJAvbQ6NCN0bu1IUR9MuG2TFKbW6ioWqHnSuNqv6LOrsgEXTTRGXlEX?= =?utf-8?q?gsvxKAgA4CHhThtInmRKldWeFZY6uC458jPUrnpotEWuMDQ/VP00VIi44NR50QurM?= =?utf-8?q?SQ2fRiwkDBpTJwI7utaWlNlGbXeqBcunGxForhjhvc067Ui6Us56CI6Vl2e+GntKi?= =?utf-8?q?2UA9Tw/x+KcYKeDoPPtnOtzuoMKkOJSdFc8PQxblmkUswD/cFJvsxCMhLggNUiQCY?= =?utf-8?q?WCdgVzrueoY4uu4VvYmd6AcEO4AWbysoOOsdv6CJdqU4BTGs0XbDoLOH1CitfO5K1?= =?utf-8?q?oTbqA9m6+jqaXCdaqevIEMmwGRZPYEETYckvinr+bMzB38DwrAr1NTLb8mc0DCDad?= =?utf-8?q?lBASrsJUaQI23pv9bRRJSxhqp3bYeH7lww/0ZJ8p3iciG7DF8ja04F5vXdi1TrApD?= =?utf-8?q?haiTbjgve4LgeHuYY4hq+rDsBJf2ASkosXxaI1RjTh09v/J4XUPKFqk7Sgih0wnQL?= =?utf-8?q?ceUMqFE9o/1F?= X-MS-Exchange-CrossTenant-Network-Message-Id: 16b0440d-16c7-4fb3-23c8-08dd7adde2e3 X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB6739.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2025 22:52:37.1779 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 1lF+VGSoNPb53R05D+8uAi1XrF01BKW8bE4CyaczJ+PrszailyDwWvcfFnUtntgrGdQDC7gw5kFzDaCSNlJZsg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7003 X-OriginatorOrg: intel.com A singular Dynamic RAM partition is exposed via the kernel. Use this partition in cxl-cli. Signed-off-by: Ira Weiny --- Changes: [iweiny: New patch for decoder_ram_a] --- cxl/json.c | 20 ++++++++++++++++++++ cxl/memdev.c | 4 +++- cxl/region.c | 27 ++++++++++++++++++++++++--- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/cxl/json.c b/cxl/json.c index e65bd803b706..79b2b527f740 100644 --- a/cxl/json.c +++ b/cxl/json.c @@ -800,6 +800,20 @@ struct json_object *util_cxl_memdev_to_json(struct cxl_memdev *memdev, } } + size = cxl_memdev_get_dynamic_ram_a_size(memdev); + if (size) { + jobj = util_json_object_size(size, flags); + if (jobj) + json_object_object_add(jdev, "dynamic_ram_a_size", jobj); + + qos_class = cxl_memdev_get_dynamic_ram_a_qos_class(memdev); + if (qos_class != CXL_QOS_CLASS_NONE) { + jobj = json_object_new_int(qos_class); + if (jobj) + json_object_object_add(jdev, "dynamic_ram_a_qos_class", jobj); + } + } + if (flags & UTIL_JSON_HEALTH) { jobj = util_cxl_memdev_health_to_json(memdev, flags); if (jobj) @@ -1059,6 +1073,12 @@ struct json_object *util_cxl_decoder_to_json(struct cxl_decoder *decoder, json_object_object_add( jdecoder, "volatile_capable", jobj); } + if (cxl_decoder_is_dynamic_ram_a_capable(decoder)) { + jobj = json_object_new_boolean(true); + if (jobj) + json_object_object_add( + jdecoder, "dynamic_ram_a_capable", jobj); + } } if (cxl_port_is_root(port) && diff --git a/cxl/memdev.c b/cxl/memdev.c index 6e44d1578d03..bdcb008f1d73 100644 --- a/cxl/memdev.c +++ b/cxl/memdev.c @@ -269,8 +269,10 @@ static int __reserve_dpa(struct cxl_memdev *memdev, if (mode == CXL_DECODER_MODE_RAM) avail_dpa = cxl_memdev_get_ram_size(memdev); - else + else if (mode == CXL_DECODER_MODE_PMEM) avail_dpa = cxl_memdev_get_pmem_size(memdev); + else + avail_dpa = cxl_memdev_get_dynamic_ram_a_size(memdev); cxl_decoder_foreach(port, decoder) { size = cxl_decoder_get_dpa_size(decoder); diff --git a/cxl/region.c b/cxl/region.c index 207cf2d00314..824274e25ed8 100644 --- a/cxl/region.c +++ b/cxl/region.c @@ -303,7 +303,8 @@ static int parse_create_options(struct cxl_ctx *ctx, int count, if (param.type) { p->mode = cxl_decoder_mode_from_ident(param.type); - if (p->mode == CXL_DECODER_MODE_RAM && param.uuid) { + if ((p->mode == CXL_DECODER_MODE_RAM || + p->mode == CXL_DECODER_MODE_DYNAMIC_RAM_A) && param.uuid) { log_err(&rl, "can't set UUID for ram / volatile regions"); goto err; @@ -417,6 +418,9 @@ static void collect_minsize(struct cxl_ctx *ctx, struct parsed_params *p) case CXL_DECODER_MODE_PMEM: size = cxl_memdev_get_pmem_size(memdev); break; + case CXL_DECODER_MODE_DYNAMIC_RAM_A: + size = cxl_memdev_get_dynamic_ram_a_size(memdev); + break; default: /* Shouldn't ever get here */ ; } @@ -448,8 +452,10 @@ static int create_region_validate_qos_class(struct parsed_params *p) if (p->mode == CXL_DECODER_MODE_RAM) qos_class = cxl_memdev_get_ram_qos_class(memdev); - else + else if (p->mode == CXL_DECODER_MODE_PMEM) qos_class = cxl_memdev_get_pmem_qos_class(memdev); + else + qos_class = cxl_memdev_get_dynamic_ram_a_qos_class(memdev); /* No qos_class entries. Possibly no kernel support */ if (qos_class == CXL_QOS_CLASS_NONE) @@ -488,6 +494,12 @@ static int validate_decoder(struct cxl_decoder *decoder, return -EINVAL; } break; + case CXL_DECODER_MODE_DYNAMIC_RAM_A: + if (!cxl_decoder_is_dynamic_ram_a_capable(decoder)) { + log_err(&rl, "%s is not dynamic_ram_a capable\n", devname); + return -EINVAL; + } + break; default: log_err(&rl, "unknown type: %s\n", param.type); return -EINVAL; @@ -509,9 +521,11 @@ static void set_type_from_decoder(struct cxl_ctx *ctx, struct parsed_params *p) return; /* - * default to pmem if both types are set, otherwise the single + * default to pmem if all types are set, otherwise the single * capability dominates. */ + if (cxl_decoder_is_dynamic_ram_a_capable(p->root_decoder)) + p->mode = CXL_DECODER_MODE_DYNAMIC_RAM_A; if (cxl_decoder_is_volatile_capable(p->root_decoder)) p->mode = CXL_DECODER_MODE_RAM; if (cxl_decoder_is_pmem_capable(p->root_decoder)) @@ -699,6 +713,13 @@ static int create_region(struct cxl_ctx *ctx, int *count, param.root_decoder); return -ENXIO; } + } else if (p->mode == CXL_DECODER_MODE_DYNAMIC_RAM_A) { + region = cxl_decoder_create_dynamic_ram_a_region(p->root_decoder); + if (!region) { + log_err(&rl, "failed to create region under %s\n", + param.root_decoder); + return -ENXIO; + } } else { log_err(&rl, "region type '%s' is not supported\n", param.type);