From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977066; cv=none; d=zohomail.com; s=zohoarc; b=cpHrwp/vkKkzdTi7mfZXMDoy9o4o8MGBm6t/+0Nk9K5qMTTZoWuhzXpGAFBVjSii+1q94gIoBURvDVAc0abAye8jcsdfrrroC/bNtb3cFQKvWMKaGwVUZmS+T3HDCrQSHdG6dU11ZFET77vzZyR3eQnN5aoC9yln6gv6qELp4Dk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977066; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aklx2xGgDQNbjMLifr3+RHSJMwqIIoFZqjTwJHtrWFA=; b=ggb5D4HUILb2uZLRjvVJqUgdRIRxYVy0KV8xCLYZSPNe9PIF2EOxoNz406bGRzXpxYn67jJqRM/IKpNQ3y49I3QZip5/N6hs/D4me2NLI6cRr1BYofyUFgcfq2GNRGFX8W+SwTUSl3Zzmt6lWQbuavm3arRs37EaAWtJuCbR8ps= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750977066104712.7290042197023; Thu, 26 Jun 2025 15:31:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5K-0006Oi-1i; Thu, 26 Jun 2025 18:28:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv52-0006L9-AX for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:28 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv4w-0000ss-EG for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:28 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2350fc2591dso15860095ad.1 for ; Thu, 26 Jun 2025 15:28:17 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976896; x=1751581696; darn=nongnu.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=aklx2xGgDQNbjMLifr3+RHSJMwqIIoFZqjTwJHtrWFA=; b=Ud03Hhi326YTARsJjoF9HnX1is789jJjsv5UmkmXIFqkm5K11ccdHm7n2nu47yPmEz PLfF2r/2yAJ429yJmnx7D7sS1jmNlpCLB2SS/nE4c9LlQKdgUkCPbjWB8sjE2EIpZUYT WIN0YBlwEv21VJmSZijdImTkGzVa+s/2ru7SUfxDaf92UuxF1Hk3t1ebSnaOt2Wi7vxV le/HRbMlkM/9qkZH3M8Y0mf1EF84DjHIErNcm9VHqUUIE3nTN27ZYbG5885MvLcUVZKR ShKOUDKCdoi6kyGUJDgSgUFw8h2MQNVNtf/4WJLvdea8qf0AQ+yn8LQrd2HreGP1TTAU dENA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976896; x=1751581696; 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=aklx2xGgDQNbjMLifr3+RHSJMwqIIoFZqjTwJHtrWFA=; b=cfgAAeXI3syd+UejUgq1koBW/vy1Tq0xmbbj5Le65Us9pXvztJa2nTecA3QL+I+Jdx j7/vy6zsz8v5pgjK+19yOl6ZMYFs6mrQe0/+L+S+rLnSEU5gJZhzTSejiQk5dyynRZus hSQ3AHEDm0pBUft4D0eViFERlfByhVS2q6IzqTd5GPpzxlOVZGvwdI5af/xeoTRLkux6 cKns9eVilTKchfjW6seBnRH7nBiH1hfNkJtlYHNZza+Uupj0UxD/+XvpAye+ey9EdXYX C1iCDwzLaVxLkZnFnM8u76cy6HeRvISx0ugQUN1LwxnBtMb5E2a4rDDZuwhsOs1PNnoe emgA== X-Gm-Message-State: AOJu0YzaQSlFvqcpi1VVsfhuyxriFngELZICkCW2Hag8G0LS7y/rmZ9w kA+hx8ySI8Vzr6BkQF6l2qshSMXggpjRw0bXIMfwFLsAf56Rsh6ezGYDLZpo2A== X-Gm-Gg: ASbGncvjDzdlXYC1bldNU9RErN/CGR5+eqPRKkj148afI3LKivsSUvqztgmA2NStkXg hIP1AqXawqd5i6WoiPqgvLlSIENyaUu7YoMdG54fmlTwluTIiGwjXDYBPaf5qMS8piEV2J8F5z2 YYxotVzgxaHIM3muweK2FNGNnZGK3Rj0q7ToE/3H/INn9h1j0aZkuNVwAe3bxRHp6auE0RmOj3r Qpk2ZyJq1Uowx7vMAasCPnVQ8QbB1lYY0T55mNAxnMS170bkVVjyqtR++BDGPyEIM6jCXWIpc4i N+D3fTSDENLcrIUsrT4b0pwkYTtzRbQs940wBm1phxNqfLpr47UMAHJwoGY95aR5mMI8m0xHPxu I2jauXBY= X-Google-Smtp-Source: AGHT+IHz2T1AGTKlgEh04tTP+AB1TPi1D0Imo3NC98lquq5mX2SDbpto25YBL0kXICCj64vRD1vP8A== X-Received: by 2002:a17:902:ce8d:b0:234:8a4a:ad89 with SMTP id d9443c01a7336-23ac4e9784amr10003215ad.1.1750976896114; Thu, 26 Jun 2025 15:28:16 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su , Fan Ni Subject: [QEMU PATCH v4 01/10] cxl-mailbox-utils: 0x5600 - FMAPI Get DCD Info Date: Thu, 26 Jun 2025 22:23:24 +0000 Message-ID: <20250626222743.1766404-2-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977068335116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su FM DCD Management command 0x5600 implemented per CXL 3.2 Spec Section 7.6.7= .6.1. Reviewed-by: Fan Ni Signed-off-by: Anisa Su --- hw/cxl/cxl-mailbox-utils.c | 59 +++++++++++++++++++++++++++++++++++++ hw/mem/cxl_type3.c | 4 +++ include/hw/cxl/cxl_device.h | 1 + 3 files changed, 64 insertions(+) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 3914fa73b9..9a0f8bd2fc 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -23,6 +23,7 @@ #include "qemu/uuid.h" #include "system/hostmem.h" #include "qemu/range.h" +#include "qapi/qapi-types-cxl.h" =20 #define CXL_CAPACITY_MULTIPLIER (256 * MiB) #define CXL_DC_EVENT_LOG_SIZE 8 @@ -117,6 +118,8 @@ enum { #define GET_PHYSICAL_PORT_STATE 0x1 TUNNEL =3D 0x53, #define MANAGEMENT_COMMAND 0x0 + FMAPI_DCD_MGMT =3D 0x56, + #define GET_DCD_INFO 0x0 }; =20 /* CCI Message Format CXL r3.1 Figure 7-19 */ @@ -3237,6 +3240,52 @@ static CXLRetCode cmd_dcd_release_dyn_cap(const stru= ct cxl_cmd *cmd, return CXL_MBOX_SUCCESS; } =20 +/* CXL r3.2 section 7.6.7.6.1: Get DCD Info (Opcode 5600h) */ +static CXLRetCode cmd_fm_get_dcd_info(const struct cxl_cmd *cmd, + uint8_t *payload_in, + size_t len_in, + uint8_t *payload_out, + size_t *len_out, + CXLCCI *cci) +{ + struct { + uint8_t num_hosts; + uint8_t num_regions_supported; + uint8_t rsvd1[2]; + uint16_t supported_add_sel_policy_bitmask; + uint8_t rsvd2[2]; + uint16_t supported_removal_policy_bitmask; + uint8_t sanitize_on_release_bitmask; + uint8_t rsvd3; + uint64_t total_dynamic_capacity; + uint64_t region_blk_size_bitmasks[8]; + } QEMU_PACKED *out =3D (void *)payload_out; + CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); + CXLDCRegion *region; + int i; + + out->num_hosts =3D 1; + out->num_regions_supported =3D ct3d->dc.num_regions; + stw_le_p(&out->supported_add_sel_policy_bitmask, + BIT(CXL_EXTENT_SELECTION_POLICY_PRESCRIPTIVE)); + stw_le_p(&out->supported_removal_policy_bitmask, + BIT(CXL_EXTENT_REMOVAL_POLICY_PRESCRIPTIVE)); + out->sanitize_on_release_bitmask =3D 0; + + stq_le_p(&out->total_dynamic_capacity, + ct3d->dc.total_capacity / CXL_CAPACITY_MULTIPLIER); + + for (i =3D 0; i < ct3d->dc.num_regions; i++) { + region =3D &ct3d->dc.regions[i]; + memcpy(&out->region_blk_size_bitmasks[i], + ®ion->supported_blk_size_bitmask, + sizeof(out->region_blk_size_bitmasks[i])); + } + + *len_out =3D sizeof(*out); + return CXL_MBOX_SUCCESS; +} + static const struct cxl_cmd cxl_cmd_set[256][256] =3D { [INFOSTAT][BACKGROUND_OPERATION_ABORT] =3D { "BACKGROUND_OPERATION_ABO= RT", cmd_infostat_bg_op_abort, 0, 0 }, @@ -3350,6 +3399,11 @@ static const struct cxl_cmd cxl_cmd_set_sw[256][256]= =3D { cmd_tunnel_management_cmd, ~0, 0 }, }; =20 +static const struct cxl_cmd cxl_cmd_set_fm_dcd[256][256] =3D { + [FMAPI_DCD_MGMT][GET_DCD_INFO] =3D { "GET_DCD_INFO", + cmd_fm_get_dcd_info, 0, 0 }, +}; + /* * While the command is executing in the background, the device should * update the percentage complete in the Background Command Status Register @@ -3647,7 +3701,12 @@ void cxl_initialize_t3_fm_owned_ld_mctpcci(CXLCCI *c= ci, DeviceState *d, DeviceState *intf, size_t payload_max) { + CXLType3Dev *ct3d =3D CXL_TYPE3(d); + cxl_copy_cci_commands(cci, cxl_cmd_set_t3_fm_owned_ld_mctp); + if (ct3d->dc.num_regions) { + cxl_copy_cci_commands(cci, cxl_cmd_set_fm_dcd); + } cci->d =3D d; cci->intf =3D intf; cxl_init_cci(cci, payload_max); diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index f283178d88..f608470362 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -8,6 +8,7 @@ * * SPDX-License-Identifier: GPL-v2-only */ +#include =20 #include "qemu/osdep.h" #include "qemu/units.h" @@ -634,6 +635,8 @@ static bool cxl_create_dc_regions(CXLType3Dev *ct3d, Er= ror **errp) uint64_t region_len; uint64_t decode_len; uint64_t blk_size =3D 2 * MiB; + /* Only 1 block size is supported for now. */ + uint64_t supported_blk_size_bitmask =3D BIT((int) log2(blk_size)); CXLDCRegion *region; MemoryRegion *mr; uint64_t dc_size; @@ -679,6 +682,7 @@ static bool cxl_create_dc_regions(CXLType3Dev *ct3d, Er= ror **errp) .block_size =3D blk_size, /* dsmad_handle set when creating CDAT table entries */ .flags =3D 0, + .supported_blk_size_bitmask =3D supported_blk_size_bitmask, }; ct3d->dc.total_capacity +=3D region->len; region->blk_bitmap =3D bitmap_new(region->len / region->block_size= ); diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index c43a394ce1..1170ac58a3 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -537,6 +537,7 @@ typedef struct CXLDCRegion { uint32_t dsmadhandle; uint8_t flags; unsigned long *blk_bitmap; + uint64_t supported_blk_size_bitmask; } CXLDCRegion; =20 typedef struct CXLSetFeatureInfo { --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750976993; cv=none; d=zohomail.com; s=zohoarc; b=Dk5SIc8gc2b80Wy97kbWdJowKD3nMvunx0jdoZv53F0yy7bzx5BrF3vNXG3w9+F4KoTYMTPLNMbWuMwJBk1TgBMa4W1xS1hTWC9yf1ibPKqxg1ewxNT37UHe8XDP8xegPh+BfcdzPBRkPyUPjcAY3emwGImYG9Q9IlQa+RUoYiI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750976993; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/txe+GX1yelBZfnxrTVVuIYl+qM4L46oqnhDie7BELg=; b=AS/Zl8XcALzDUHWAW/S7cJnrlQuXk1pywJXKPPuMHMpQc96oGw6I2cGmpuXBmuL21XQ5fratIAPZuEjVvdUlN4NlEqz9I5appYpYgBxuUj+lYc3IxF13HjKRWiYrEpwGaklFcrYg+aCvqO8QIrt1jIjpC1QfHmuN9gGZKjC7A04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750976993811302.07239066679426; Thu, 26 Jun 2025 15:29:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5G-0006NL-Br; Thu, 26 Jun 2025 18:28:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv4z-0006KZ-RH for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:26 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv4x-0000t4-91 for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:25 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-234b440afa7so18092575ad.0 for ; Thu, 26 Jun 2025 15:28:20 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976899; x=1751581699; darn=nongnu.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=/txe+GX1yelBZfnxrTVVuIYl+qM4L46oqnhDie7BELg=; b=CZfqinzJ1t587cGtfu9ExuQ6Ibv57oLgd7vk71EWwpvsENxmdlFSgL5gmu9AYI4d+O V0YSPJyTfAD9U74OZAena3S/lxVLsh3HChaYoPVqQFadyJJKvQJz9Xoqwe+4Tc7kBGxG TgR7TRkgUq9rXaj4P7uWz5MvfY35PbtYVlz0WsIHoJho7TzG5aIBuyXQUdZE+5DgH1n9 ztuLVnpNItp8D6XnbgfSipTR1JB8vNl66AAO310gw6ID7udWTJWSxilv7eAlTCcKaSZ1 Bs/xDKLDpWPbdAahEjR1fd7qdvXAH9YrHItP8SpziFT21toXPXhXUlqjI5IvHbGeg3IJ h6vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976899; x=1751581699; 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=/txe+GX1yelBZfnxrTVVuIYl+qM4L46oqnhDie7BELg=; b=qPEn+Y4yXWMD+86VF6MchS+i7kLzm0bj1qjUcbetXyI/0VkSGx3Nq/0cV2bBSv+CQ8 EYEjzqDLbY9Kg/FTCzEm7lDB/IhFE8Vs0/N6phZ3vlH7v6vo4YpBqZoJvFazqGviisG4 YBR0ef24Y53FLzUg7S5ZjAjm3/pw54M4K/C/IYxW8bDBbiUyx0CHbjglmIrBummN3QgH RL/Cg34jFA0fkdfqxSxyw+dwAOnoCbnqD1lWGcINoFhPxWLUsZGP7eJlhlXytgaeN0cS zS/Ei/9XwwU5P+FE7HZJhpEFaM+/XqjVkzhWt3BS8ixtIKOk1+1MuRtq3CmwkJag1K9n 9S2w== X-Gm-Message-State: AOJu0YwAuVRVqKFXxUyd0eOO5GuYXRwtZC+P8JALW1fDbK9jjTptOqSh gg5ttlNRcVE0nvE2g7OJ17qe/e2F/VxLb039LPPlanO5L9Q7JZH4cXCnv5yx/w== X-Gm-Gg: ASbGncuIGCF77k7dynJAaSmeQnLlNqxwnKHLzUehXQVaCWFg8SYVW1AppfSRURU0MoR wQeNJRMwsHO5HPy+GxJ9PMprJgIMQLPf6ij74IctvtJRtXrVWcRz7i8C5VoC8NNoB3Gr1yNrp2j 9la1/wBC697cno9YgszE1C2BdcM+yZl62ph9JLZ0mHMzscFroRnnKukoffOkXh17BIVx6Mty/5X Yn2sc3qBIqc+Vnnu6R8dhRAdehPOMc5UQzoXmDiUMAqVG9r/Mgv6crQWgnGeZ9AHi9UX3jBiksO oYhEyBhljBST2h5vreiyaKh+4xLiS3X7y4fogZt6vRiXPU7jfl3m6RR/nj2h9ylVncVjqsL3BwK +iKBN/dHMAa3sp3puqw== X-Google-Smtp-Source: AGHT+IGlta+/mPFCCDU/bXzB0MEGu5PRj9+kz3XbJlCrBwUqQ7GCFPAD+WOadorLND+c+51S6uQnzg== X-Received: by 2002:a17:902:e543:b0:235:779:edfe with SMTP id d9443c01a7336-23ac4653fc7mr14517155ad.43.1750976899056; Thu, 26 Jun 2025 15:28:19 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su , Fan Ni Subject: [QEMU PATCH v4 02/10] cxl/type3: Add dsmas_flags to CXLDCRegion struct Date: Thu, 26 Jun 2025 22:23:25 +0000 Message-ID: <20250626222743.1766404-3-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750976995484116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su Add booleans to DC Region struct to represent dsmas flags (defined in CDAT)= in preparation for the next command, which returns the flags in the next mailb= ox command 0x5601. Reviewed-by: Fan Ni Signed-off-by: Anisa Su --- hw/mem/cxl_type3.c | 8 +++++++- include/hw/cxl/cxl_device.h | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index f608470362..0fccd22800 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -226,10 +226,16 @@ static int ct3_build_cdat_table(CDATSubHeader ***cdat= _table, void *priv) * future. */ for (i =3D 0; i < ct3d->dc.num_regions; i++) { + ct3d->dc.regions[i].nonvolatile =3D false; + ct3d->dc.regions[i].sharable =3D false; + ct3d->dc.regions[i].hw_managed_coherency =3D false; + ct3d->dc.regions[i].ic_specific_dc_management =3D false; + ct3d->dc.regions[i].rdonly =3D false; ct3_build_cdat_entries_for_mr(&(table[cur_ent]), dsmad_handle++, ct3d->dc.regions[i].len, - false, true, region_base); + ct3d->dc.regions[i].nonvolatile, + true, region_base); ct3d->dc.regions[i].dsmadhandle =3D dsmad_handle - 1; =20 cur_ent +=3D CT3_CDAT_NUM_ENTRIES; diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 1170ac58a3..397edcff4c 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -133,6 +133,15 @@ typedef enum { CXL_MBOX_MAX =3D 0x20 } CXLRetCode; =20 +/* r3.2 Section 7.6.7.6.2 Table 7-66 DSMAS Flags Bits */ +typedef enum { + CXL_DSMAS_FLAGS_NONVOLATILE =3D 2, + CXL_DSMAS_FLAGS_SHARABLE =3D 3, + CXL_DSMAS_FLAGS_HW_MANAGED_COHERENCY =3D 4, + CXL_DSMAS_FLAGS_IC_SPECIFIC_DC_MANAGEMENT =3D 5, + CXL_DSMAS_FLAGS_RDONLY =3D 6, +} CXLDSMASFlags; + typedef struct CXLCCI CXLCCI; typedef struct cxl_device_state CXLDeviceState; struct cxl_cmd; @@ -538,6 +547,12 @@ typedef struct CXLDCRegion { uint8_t flags; unsigned long *blk_bitmap; uint64_t supported_blk_size_bitmask; + /* Following bools make up dsmas flags, as defined in the CDAT */ + bool nonvolatile; + bool sharable; + bool hw_managed_coherency; + bool ic_specific_dc_management; + bool rdonly; } CXLDCRegion; =20 typedef struct CXLSetFeatureInfo { --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977038; cv=none; d=zohomail.com; s=zohoarc; b=Trs9hJ66Hf0ch5RAAb/mr/EpWVbnbFKRDZW4Mye+EBuY64EWgu8dr4ukWek5NZC8IOrxAKa2n8USBDfg/JjoL9oTirV0L94GbdY8QZVMK/5lLxzZu2yKIgEUwVb0NFP2bKwAo6+eKo2SpxwwRCcP1HcrSGuraBg8uM98Bgd4KWk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977038; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0+GGKtwzBUfn14ahXvUOzUJbIbHLEyGrCz9OblHISOk=; b=fde1Pq3WObrM+aN6d98Lajp1ho3aUJIk5W1JtH+6enPI681oY06+zZTtLiFiZDYZJLF/QHjlP+YI4XPU9+IV3tXkn6uVPrp+cpEbjRTwL5yzwaADy7xEJtARc72LDj0ORnCbyPNwPvEg21vWPUtNIwRU4pfj62ClGoxwRwxm4tg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175097703817742.52858885373257; Thu, 26 Jun 2025 15:30:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5K-0006PW-LG; Thu, 26 Jun 2025 18:28:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv57-0006LN-1L for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:39 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv4y-0000t6-H7 for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:30 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-23636167afeso17563135ad.3 for ; Thu, 26 Jun 2025 15:28:23 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976901; x=1751581701; darn=nongnu.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=0+GGKtwzBUfn14ahXvUOzUJbIbHLEyGrCz9OblHISOk=; b=G0p+58tRqeN3FjdhNSDxSFUff6ycmuH5pYBebthKvPcev9cx+x2ndJz+w49ZrJHlxf 1Q9BbKjuprIe7Stz7F+YH8Gs+gjZDg0iyK1zGshQeFQnfTZKPbXMb1MjJbUlDfSQRrPY YXALurarLckoqyjpP7qWgdvtnELXSd8FcApHX3/MUZmrhBmIg7ojCUyQSft7348G0W1L dDakG3omcsy051RHYT1rqaxF8XuNAAbcBZbK76773qnkMMkQTu/SbbTIFlpxiL9XLVnz DapnLK5TdVcjGgpujn9KbEz1EgNN4LfbMmMw5AUkb/ih2ia30xcqqp99Jcujhi39N7az giNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976901; x=1751581701; 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=0+GGKtwzBUfn14ahXvUOzUJbIbHLEyGrCz9OblHISOk=; b=G90g3/8yD+kzU3aEDeXqg15f7ihAvGcTlrfuBnH6AG5s7/d7EitkaUJoZ1RG+ZGnqQ ciy3cYGdhd8ZRdgKBIF17piO077pVmUd4ikUw075F+ILAD8Wf9XYV48Jcc5fZ2+sAcqe ivJ5gRCz0YZRZVyifYF6R+R9DhyXJSLWAVb5X8VUJae+EFjWS2IRiNysQiUDMRxattqN S8WkfRy5RKSrM5gDUTWBkOKj6aPDe3B6DgrXmpVBCPbA9NLPj2fJYjdh4Hl9u+XJVphn 4oLJ1GAxASbJqiBa4re7BmrFKpRSFwFkoqgXelRE+h0xhTf+nC4jtLDdHM0Y1NrvwTTA XpWg== X-Gm-Message-State: AOJu0Yy+xSfgjf0ySBOMP9p3nlM6Eo9tckXc+uiwaLJ7RTMsOUAC66bt wZCWyi4bj1DRkgeAtsVyP8vmiq3334vQdWs5DIqenL2ccJX2s6vZ9+P3SUErKw== X-Gm-Gg: ASbGncvjxF+nWtGbeZ3A88xBSDi9JNa9qJGYg0zl6on+HqRaBvIwU4G5OjT3b7MidmZ qCQ8vQ/q0/bHp392m/uVGdS8ItPBwAfUNdv2/5mKM+g+9p0M/L+9puXM4syEIC5lLC1E43RRu8y F6b9Rvx1VmcmFO3MKT9ED7hokWK/AOmKOyasexbD0iAFupx5USgFmWCoCaBDX/k6FXc6x+qiapy fyZte0pt2RqDaYCf9LYimPCTOphjseLeSxri+4b6VLadcRWRb7DB8Pp11DRMS2x2q5Rn/F5kxp8 kus4nGJCWE715e79Fi3RTApxa6yWi9pv6RFWmCGh/04CsXOIy25v14g5LR75XOtkE1OGRF5+gEw lp6/eCBQ= X-Google-Smtp-Source: AGHT+IEXv04antYorBEAkJ0OQO4gMHB5P6HUZXaOyXNr/drr5XPtQtIJi7p4+d/5UHqi+dTKqu35TQ== X-Received: by 2002:a17:903:22cf:b0:234:8e78:ce8a with SMTP id d9443c01a7336-23ac4636e48mr13604335ad.48.1750976901408; Thu, 26 Jun 2025 15:28:21 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su , Fan Ni Subject: [QEMU PATCH v4 03/10] cxl-mailbox-utils: 0x5601 - FMAPI Get Host Region Config Date: Thu, 26 Jun 2025 22:23:26 +0000 Message-ID: <20250626222743.1766404-4-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x62a.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977039731116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su FM DCD Management command 0x5601 implemented per CXL r3.2 Spec Section 7.6.= 7.6.2 Reviewed-by: Fan Ni Signed-off-by: Anisa Su --- hw/cxl/cxl-mailbox-utils.c | 103 +++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 9a0f8bd2fc..7f0709a27f 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -120,6 +120,7 @@ enum { #define MANAGEMENT_COMMAND 0x0 FMAPI_DCD_MGMT =3D 0x56, #define GET_DCD_INFO 0x0 + #define GET_HOST_DC_REGION_CONFIG 0x1 }; =20 /* CCI Message Format CXL r3.1 Figure 7-19 */ @@ -3286,6 +3287,106 @@ static CXLRetCode cmd_fm_get_dcd_info(const struct = cxl_cmd *cmd, return CXL_MBOX_SUCCESS; } =20 +static void build_dsmas_flags(uint8_t *flags, CXLDCRegion *region) +{ + *flags =3D 0; + + if (region->nonvolatile) { + *flags |=3D BIT(CXL_DSMAS_FLAGS_NONVOLATILE); + } + if (region->sharable) { + *flags |=3D BIT(CXL_DSMAS_FLAGS_SHARABLE); + } + if (region->hw_managed_coherency) { + *flags |=3D BIT(CXL_DSMAS_FLAGS_HW_MANAGED_COHERENCY); + } + if (region->ic_specific_dc_management) { + *flags |=3D BIT(CXL_DSMAS_FLAGS_IC_SPECIFIC_DC_MANAGEMENT); + } + if (region->rdonly) { + *flags |=3D BIT(CXL_DSMAS_FLAGS_RDONLY); + } +} + +/* CXL r3.2 section 7.6.7.6.2: Get Host DC Region Configuration (Opcode 56= 01h) */ +static CXLRetCode cmd_fm_get_host_dc_region_config(const struct cxl_cmd *c= md, + uint8_t *payload_in, + size_t len_in, + uint8_t *payload_out, + size_t *len_out, + CXLCCI *cci) +{ + struct { + uint16_t host_id; + uint8_t region_cnt; + uint8_t start_rid; + } QEMU_PACKED *in =3D (void *)payload_in; + struct { + uint16_t host_id; + uint8_t num_regions; + uint8_t regions_returned; + struct { + uint64_t base; + uint64_t decode_len; + uint64_t region_len; + uint64_t block_size; + uint8_t flags; + uint8_t rsvd1[3]; + uint8_t sanitize; + uint8_t rsvd2[3]; + } QEMU_PACKED records[]; + } QEMU_PACKED *out =3D (void *)payload_out; + struct { + uint32_t num_extents_supported; + uint32_t num_extents_available; + uint32_t num_tags_supported; + uint32_t num_tags_available; + } QEMU_PACKED *extra_out; + CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); + uint16_t record_count, out_pl_len, i; + + if (in->start_rid >=3D ct3d->dc.num_regions) { + return CXL_MBOX_INVALID_INPUT; + } + record_count =3D MIN(ct3d->dc.num_regions - in->start_rid, in->region_= cnt); + + out_pl_len =3D sizeof(*out) + record_count * sizeof(out->records[0]); + extra_out =3D (void *)out + out_pl_len; + out_pl_len +=3D sizeof(*extra_out); + + assert(out_pl_len <=3D CXL_MAILBOX_MAX_PAYLOAD_SIZE); + + stw_le_p(&out->host_id, 0); + out->num_regions =3D ct3d->dc.num_regions; + out->regions_returned =3D record_count; + + for (i =3D 0; i < record_count; i++) { + stq_le_p(&out->records[i].base, + ct3d->dc.regions[in->start_rid + i].base); + stq_le_p(&out->records[i].decode_len, + ct3d->dc.regions[in->start_rid + i].decode_len / + CXL_CAPACITY_MULTIPLIER); + stq_le_p(&out->records[i].region_len, + ct3d->dc.regions[in->start_rid + i].len); + stq_le_p(&out->records[i].block_size, + ct3d->dc.regions[in->start_rid + i].block_size); + build_dsmas_flags(&out->records[i].flags, + &ct3d->dc.regions[in->start_rid + i]); + /* Sanitize is bit 0 of flags. */ + out->records[i].sanitize =3D + ct3d->dc.regions[in->start_rid + i].flags & BIT(0); + } + + stl_le_p(&extra_out->num_extents_supported, CXL_NUM_EXTENTS_SUPPORTED); + stl_le_p(&extra_out->num_extents_available, CXL_NUM_EXTENTS_SUPPORTED - + ct3d->dc.total_extent_count); + stl_le_p(&extra_out->num_tags_supported, CXL_NUM_TAGS_SUPPORTED); + stl_le_p(&extra_out->num_tags_available, CXL_NUM_TAGS_SUPPORTED); + + *len_out =3D out_pl_len; + return CXL_MBOX_SUCCESS; +} + static const struct cxl_cmd cxl_cmd_set[256][256] =3D { [INFOSTAT][BACKGROUND_OPERATION_ABORT] =3D { "BACKGROUND_OPERATION_ABO= RT", cmd_infostat_bg_op_abort, 0, 0 }, @@ -3402,6 +3503,8 @@ static const struct cxl_cmd cxl_cmd_set_sw[256][256] = =3D { static const struct cxl_cmd cxl_cmd_set_fm_dcd[256][256] =3D { [FMAPI_DCD_MGMT][GET_DCD_INFO] =3D { "GET_DCD_INFO", cmd_fm_get_dcd_info, 0, 0 }, + [FMAPI_DCD_MGMT][GET_HOST_DC_REGION_CONFIG] =3D { "GET_HOST_DC_REGION_= CONFIG", + cmd_fm_get_host_dc_region_config, 4, 0 }, }; =20 /* --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977010; cv=none; d=zohomail.com; s=zohoarc; b=lBBX3SDeMAFlxL1AFOSQ51GokIQ+A7YXiSCClcpeYq/pYAYxw+Oi5b6KfEt8hUsi7JO2dRHsaVqOtEmG/8611pJgBQJc4leQWjoL2dPXXWbb0Jh2YTH51PKl26HM+n7PAByv4J4VmdREAkN2j9Uvzn5JW9wJJq9HIPwFQBnRdNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977010; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dlJ/ihmtY/Bs+6QNasQQE5ci8/VnkGAsX6ch1ZEqQ/Y=; b=IaDR2fNiAuxtEPwq4pLwlmieHA5Z/dJPC91a+qJZFY3FqliA+wIJYNxyAzCSkSHnt2zHU5riR/Lm4y6l8gOSvOECzKXZn+0ksmUupP6nto2EsC/Iv/k9gyNCLdzcnDx4jQ+zFM0NGcffaJC1puV/3ufqVMXtTfn7TG/BbKjDWrk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750977010501914.6505071015054; Thu, 26 Jun 2025 15:30:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5K-0006Om-GI; Thu, 26 Jun 2025 18:28:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv54-0006LJ-9N for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:39 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv51-0000tI-E3 for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:30 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2363e973db1so23201615ad.0 for ; Thu, 26 Jun 2025 15:28:24 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976903; x=1751581703; darn=nongnu.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=dlJ/ihmtY/Bs+6QNasQQE5ci8/VnkGAsX6ch1ZEqQ/Y=; b=NBO7dvO9m2N8SgCq6oCaig59nFcTbCQnIGgb2WI1sSN7zP0drYklMQ1AYUWtX0/1VD vYugRAg7feQRr+sGwxL4oYx3wKYkmjFCyRa94gXkSgi9lQlxIIZ7e6xke+mschaROGSl NrANpHCcLiCQJYABWe0PWiFPTlDj8pVv+vVZ0L3XSjBpSrhemFFVUlcWsdSAvtpztVoW ALDiWCZDvoEPNbejoulo8zZz9B1zvPNWn+JBKN8hvsWjNBj5yEaCQ0vLI09Rg4cs4JLF 7Wpq/7k8sMLGptqYxp9/2y4f4Fr4M/aZycxHc6dQb7KvwagJQFL+HHyQZZCbt+1050o1 zj1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976903; x=1751581703; 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=dlJ/ihmtY/Bs+6QNasQQE5ci8/VnkGAsX6ch1ZEqQ/Y=; b=htBNCAIv9lOFmxHnVP2N9Xb2OjnhFxAb2cXhXNVPdj3+sy9FxQT0XI15vOmp/XS6Kl 98mTjCVJUDzbpLTKrzDDriOpWqMYX++OQ02inxXOiobqe+ONyS7GeZrvot+B3+dv71vC NQnDicyu8hpRY/u1Y4zwwP1imrUMs5wRem90GYRSAoDJ/Kw6VK2Xjcy+ledr6EFViVGb 2nMo6iwxyRKuaH2bca90njlwqzh0yP+WTzeK/hw0ifAox979n9DZd9dczS1knKmirWl7 kmSSXVaGkbZ2Vxu2huys8IWe5cp4yjaxXnX5smaZeMSeKJ1t/qSc6DMCr1fBcv4oSCn3 yyIg== X-Gm-Message-State: AOJu0YxKhk828wZk0G9INBAzaY064dctK5JLNwvIhAW+8y2h8TNsmgGq bnnUDoiVoW0W3KDgLh+tEUR5spU5m4g4LfTM/InfR0OkhtDEHdg1gg3uM6lC+Q== X-Gm-Gg: ASbGncub5bp7/06VX1J1vi0JZhLmRfvNuNz8jM5tBqxGsHcsdOcdWHUH5u3SlmVQpw+ NE68UyUMNQkLDYikK++LRvyNPrLpQI2edUtrLU9yBW1XkEjh8MCdiSQuozWw0Eo6gLLt9UqtTug /DwRyfo1NkB3ixaZ59IxXiJP0alUXnJqemdiIuq4oPAB9sDTmQn3HSvzamCS/lfJ4oW7W2jyq1X OwV8mufafl0ABjKLGX54NP134LPxeM+/xYOLMQJPtNg3T9RXQFSE8OgBJE3V4arYAxgYoOKbRDA NWLnY2JC1PEiLSdrqmEmnIFZIDDUYxkBfC2eRmq4rxlDW4Re2pKQ6Xvua+JDAhy75aFSztJ9rPL JYS5svmg= X-Google-Smtp-Source: AGHT+IH3JDlsQy+VzeCP6XavKPgibPAly4QUpzv/KCtsAmiIQzL44pbquOf0jrrKRll8b2m1y7/L2g== X-Received: by 2002:a17:903:807:b0:234:1e11:95a3 with SMTP id d9443c01a7336-2390a4a8832mr60381845ad.13.1750976903096; Thu, 26 Jun 2025 15:28:23 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su , Fan Ni Subject: [QEMU PATCH v4 04/10] cxl_events.h: Move definition for dynamic_capacity_uuid and enum for DC event types Date: Thu, 26 Jun 2025 22:23:27 +0000 Message-ID: <20250626222743.1766404-5-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977011768116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su Move definition/enum to cxl_events.h for shared use in next patch Reviewed-by: Fan Ni Signed-off-by: Anisa Su --- hw/mem/cxl_type3.c | 15 --------------- include/hw/cxl/cxl_events.h | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 0fccd22800..cdd60079c4 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1876,21 +1876,6 @@ void qmp_cxl_inject_memory_module_event(const char *= path, CxlEventLog log, } } =20 -/* CXL r3.1 Table 8-50: Dynamic Capacity Event Record */ -static const QemuUUID dynamic_capacity_uuid =3D { - .data =3D UUID(0xca95afa7, 0xf183, 0x4018, 0x8c, 0x2f, - 0x95, 0x26, 0x8e, 0x10, 0x1a, 0x2a), -}; - -typedef enum CXLDCEventType { - DC_EVENT_ADD_CAPACITY =3D 0x0, - DC_EVENT_RELEASE_CAPACITY =3D 0x1, - DC_EVENT_FORCED_RELEASE_CAPACITY =3D 0x2, - DC_EVENT_REGION_CONFIG_UPDATED =3D 0x3, - DC_EVENT_ADD_CAPACITY_RSP =3D 0x4, - DC_EVENT_CAPACITY_RELEASED =3D 0x5, -} CXLDCEventType; - /* * Check whether the range [dpa, dpa + len - 1] has overlaps with extents = in * the list. diff --git a/include/hw/cxl/cxl_events.h b/include/hw/cxl/cxl_events.h index 38cadaa0f3..758b075a64 100644 --- a/include/hw/cxl/cxl_events.h +++ b/include/hw/cxl/cxl_events.h @@ -184,4 +184,19 @@ typedef struct CXLEventDynamicCapacity { uint32_t tags_avail; } QEMU_PACKED CXLEventDynamicCapacity; =20 +/* CXL r3.1 Table 8-50: Dynamic Capacity Event Record */ +static const QemuUUID dynamic_capacity_uuid =3D { + .data =3D UUID(0xca95afa7, 0xf183, 0x4018, 0x8c, 0x2f, + 0x95, 0x26, 0x8e, 0x10, 0x1a, 0x2a), +}; + +typedef enum CXLDCEventType { + DC_EVENT_ADD_CAPACITY =3D 0x0, + DC_EVENT_RELEASE_CAPACITY =3D 0x1, + DC_EVENT_FORCED_RELEASE_CAPACITY =3D 0x2, + DC_EVENT_REGION_CONFIG_UPDATED =3D 0x3, + DC_EVENT_ADD_CAPACITY_RSP =3D 0x4, + DC_EVENT_CAPACITY_RELEASED =3D 0x5, +} CXLDCEventType; + #endif /* CXL_EVENTS_H */ --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977015; cv=none; d=zohomail.com; s=zohoarc; b=GpcaD0N5V9hqbcxpJVWHkIlOrT/wx8+VrEx1k0HqpKyknmIKsO/m/PVaUsptvcCuP29bfcFrEhYHcDGNKsA2O5OOHXvGysPYPUyDi3dbbXq8StsKonDQLXoOWhgNxHpCdSMUntccXNJzFiSUpcIXwf1JjkVzPdozCgsmiW+4fyw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977015; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zBps1tm/E0rqCasT+u+6aJlRaXwKKIUQT/6/1t5YR3A=; b=lH4+VcMBqcvOWzLaSDkQmTC9CnbOeqXm5a9wCTYod4v+Yhyd3b0ix4cMfRAvf+eD4Km7ge3o65nEPBWGeS5mEj8unWTTqtTNAI6OsTS1wh+IoF7zN1Spq5kbdW4KZ9+7YardOdt6hdZciq9TPCRujjokD9uoAk9tEcJuOLj+zU4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750977015749746.5571941619721; Thu, 26 Jun 2025 15:30:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5L-0006Q5-Vd; Thu, 26 Jun 2025 18:28:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv5C-0006M0-Rc for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:40 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv54-0000th-9I for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:38 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-236377f00easo20588895ad.1 for ; Thu, 26 Jun 2025 15:28:27 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976906; x=1751581706; darn=nongnu.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=zBps1tm/E0rqCasT+u+6aJlRaXwKKIUQT/6/1t5YR3A=; b=EhYMf0ZSAeKLkXgAEKIwUlANM3tPDNGYKHZjbGsbeCgvG+IxJ42+WOn2f2XF+0yQ8P k8dWpM3N3GPMW6tKeZ1vpkgpXaqOps1QEUd8yI+8s2Es4fp2DgCDeF2dKam3c0gP65f5 FkbDnlNqM6Re6K9UocuDMu9tWiyDHOtpeCGAnecTp6yQVZEV2bMqU2sFSrsu5rlQrrkx 9PSFbxIed6quyy78bWk5M1BwhiTVunQZ11tDPBw2DlJjqQoYb+KCHv9AOiWyb5aGMUwT vq0XkBe59IdVpH8/IbbGNyZzQF/OiNsCcU2QqyVY3QeWQwQZGT0cFp9zSfUYWaKKDY5n 98TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976906; x=1751581706; 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=zBps1tm/E0rqCasT+u+6aJlRaXwKKIUQT/6/1t5YR3A=; b=nGbEqDfZa34Q1MjhLH4CJ0qXSWeeZ+YFcflfC0iZ6ZqTAfe3UgJsKoXwmQFNMI+K8X v/YSHq0z56ujlHouvZ9YRXls8zjX2jJGfXbgQGhMwQKSxmQqRzmSer5Z0V8t+omBSvWt mByeLm4nbSsXXQz9EKDEXxn9s7/QIpau/YoUTakpfWiJomPjXYMVEHka5Czyl6J7dMxw 8lY8/m6gD1ztK+IpQJ8LcXEPII3I2kzZPV3Wtz0RijNvr3hYVteZ6XJfjQQ8zF/M0cLE sos3ZJ9NE2YG9g16hQwyTiUP2Fd98x9Y/Szznhi1KvW/uWx2AkXRbqqJo28He+A3kkWF vxXA== X-Gm-Message-State: AOJu0YzDXvPkOJQiuYw8cVZNh5UH7gYvb7c+rC/ok3NrtXu9tHrhDVo+ uGypKr9U29oAhbKa/DU9rSA0WBsd6nii81ehxPVp5Hm+DwzBcjZyGeM2bmXbig== X-Gm-Gg: ASbGnctOmfjn1WvT62SiOJV3mqENpusuH05Q0nJ/ndowyVuUgkxiNgXvCTOI6A/vVOF c2uA4pDLZfch8wLXOJ1TeCxB7RhoBo4a9WBTLXb7c9IlyT6sCrMf8PiBDwUm0qk52n4IEdWrR1T Ccl1D5qfp59UuEvYLQVEGP5r7Deublz9RTYIMmhandDSu8DvW8ZezUEzCUyb3p3MTv8u8aHIW0n qwhMmEFbjypNDTPOYI1CuCbL8Sow9HLq66KSNCCGrsEkb923kbdUUiJ4f9Sx4tbMOi87J/I8H3t lLkZNzIGG2vvy6Q3cn+07b8+O52Jb+hT55HcpymtVWfSOwPyKjxU7XVbG1Cg0pHUWX0GjPcSrsw HRUk1Lkukq2oodjavfA== X-Google-Smtp-Source: AGHT+IE0vEXNHth7oaL4diMn3sE9UxFbYJIMXP4uA3k28cRYItq0xgl7K501CLHx1FPhTKL//pIV7w== X-Received: by 2002:a17:902:f548:b0:237:e3a0:9d63 with SMTP id d9443c01a7336-23ac46344aemr14497665ad.43.1750976906080; Thu, 26 Jun 2025 15:28:26 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su , Fan Ni Subject: [QEMU PATCH v4 05/10] hw/cxl_type3: Add DC Region bitmap lock Date: Thu, 26 Jun 2025 22:23:28 +0000 Message-ID: <20250626222743.1766404-6-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977017603116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su Add a lock on the bitmap of each CXLDCRegion in preparation for the next patch which implements FMAPI Set DC Region Configuration. This command can modify the block size, which means the region's bitmap must be updated accordingly. The lock becomes necessary when commands that add/release extents (meaning they update the bitmap too) are enabled on a different CCI than the CCI on which the FMAPI commands are enabled. Reviewed-by: Fan Ni Signed-off-by: Anisa Su --- hw/mem/cxl_type3.c | 4 ++++ include/hw/cxl/cxl_device.h | 1 + 2 files changed, 5 insertions(+) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index cdd60079c4..b872a26173 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -692,6 +692,7 @@ static bool cxl_create_dc_regions(CXLType3Dev *ct3d, Er= ror **errp) }; ct3d->dc.total_capacity +=3D region->len; region->blk_bitmap =3D bitmap_new(region->len / region->block_size= ); + qemu_mutex_init(®ion->bitmap_lock); } QTAILQ_INIT(&ct3d->dc.extents); QTAILQ_INIT(&ct3d->dc.extents_pending); @@ -1020,6 +1021,7 @@ void ct3_set_region_block_backed(CXLType3Dev *ct3d, u= int64_t dpa, return; } =20 + QEMU_LOCK_GUARD(®ion->bitmap_lock); bitmap_set(region->blk_bitmap, (dpa - region->base) / region->block_si= ze, len / region->block_size); } @@ -1046,6 +1048,7 @@ bool ct3_test_region_block_backed(CXLType3Dev *ct3d, = uint64_t dpa, * if bits between [dpa, dpa + len) are all 1s, meaning the DPA range = is * backed with DC extents, return true; else return false. */ + QEMU_LOCK_GUARD(®ion->bitmap_lock); return find_next_zero_bit(region->blk_bitmap, nr + nbits, nr) =3D=3D n= r + nbits; } =20 @@ -1067,6 +1070,7 @@ void ct3_clear_region_block_backed(CXLType3Dev *ct3d,= uint64_t dpa, =20 nr =3D (dpa - region->base) / region->block_size; nbits =3D len / region->block_size; + QEMU_LOCK_GUARD(®ion->bitmap_lock); bitmap_clear(region->blk_bitmap, nr, nbits); } =20 diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 397edcff4c..6a5025200c 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -547,6 +547,7 @@ typedef struct CXLDCRegion { uint8_t flags; unsigned long *blk_bitmap; uint64_t supported_blk_size_bitmask; + QemuMutex bitmap_lock; /* Following bools make up dsmas flags, as defined in the CDAT */ bool nonvolatile; bool sharable; --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977055; cv=none; d=zohomail.com; s=zohoarc; b=gXV+zJ0m/J4FbbDXExexkEiO7XqfKPYbK6uIaz3hpuqCxB6S+IKuSVcFbw3PP6HJ9ZYcNOWe/v+3so8NT4zInlxnd/0sF+0zllW3QxKsmFO0uVIg62sPMrebrTZhhY0+dv8xxVWO6BLdMcpL570w90ei9yme9hgLkpaUbHJHx6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977055; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=B3OR2sM5Mt73qc/RceEmvVlGIx7XFJ60NMbMeF9QBhw=; b=XNzM60LvaZcfrIc2tnd8VieMdyRAMsUJH3eJkcglrYmbnrVyW9I0U4YwlqPKrAIjjQEUulPTZM+Dq0TVQTS1IwIx9s4/SyjMgmfKX9XtjQWzwURZe7xaXGTzIUciiHNAGdU5QrXp8u9RhPnBsv+QNmB8H9GXleVj3fvVRnTxIEE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750977055043319.5621838558227; Thu, 26 Jun 2025 15:30:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5K-0006PX-PM; Thu, 26 Jun 2025 18:28:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv5A-0006Lr-Jw for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:39 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv54-0000tk-30 for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:35 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2350fc2591dso15861185ad.1 for ; Thu, 26 Jun 2025 15:28:29 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976907; x=1751581707; darn=nongnu.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=B3OR2sM5Mt73qc/RceEmvVlGIx7XFJ60NMbMeF9QBhw=; b=TirIhFoWroxG++M+lruvc83t3cKULKUE3vD3mDX7EH+Vz71bzI9iEgGXaMLE1wm8i8 Qv0NjZTAnbOdWB28q+fuXiPLGE+vCymR3F4437hde8DG8cuHmncilq42O2k3JmrwvY0g qyFFjYlLyF4oFAlAqDGXcOTljJoozakkxNzsKgoAGjt+PmUqSAC7x1bmH9bb3jvxfs6b 5CVRLpPnzTghPvabuZBrqSbQIDuNWOMN0nGOyJgvXPqP31pyeHxL+8+EoAR53UiSGI37 d1ye5xUlwAJ/7Zqf9klRs52tMVDehlkp93efbSylhHUlLUILRFoxnGwqXPPujRpopDE0 w7eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976907; x=1751581707; 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=B3OR2sM5Mt73qc/RceEmvVlGIx7XFJ60NMbMeF9QBhw=; b=etHyQZiOCQT87Ayjdn8fM0OIKmANu4E+omu4E5MdtZHRX10wFg6x0YC1z/4E2njChN cXwWKl677UhgGtMcBInz3K/670sDfMamSyzg8+bgnJ8agtZaLQIg1P8rZWfV6rUGv0af K2faPkIlTAzPiJVkMi9RPoegL31Fz8p2d5yx/X3eBCajIFNael45ZP4nzu0J8BuWkW5s QsIVydZbCg1Jo8CZZ6D3t5JWTBzdIf+kvQbMgRbLg3/w7dgQbss8cF0ZnBH6LaGcD//4 ZVBE7KpZvpuDLq/JTxpZhMuGM3f71NnBg6jHnuI2Avj9sDKI23RO7ZXC9THybOu9ziIB LCBw== X-Gm-Message-State: AOJu0YxYGkAVZgNNAOONJKBOjq5Yn+P11kxLYYENtSXeQ1aa0TgJO5ZH UoiB7fG1O5Ivzc/aQUEp/lpzPCRzqnogvBLz99Do3WF67LH0te2zAS9XxQdQaw== X-Gm-Gg: ASbGncscDDOFk74dNtP4ba98agkrHI7wdSVDB3RKD8jXHpcKpS4fFxxaR3NLEOjWbVY 2APKOC47Oxnm2qkqBKsxGiP7TKgKKicDfOPs7sRfmgise01yjAQRnDPizcrT1TIAqmix+5+rNFJ YO2G3Z32SWusZUfioE6fE5no/ry+xIj51VK0Nm84zZDV1WuIl/ohxHLn8Tg6Xtp9T4Rz2bTqtRR xZzIrUf5KY7GCSZ7m78vAwqBZZsj2U7h7x9bceu4eTg3fNDOPO1Xw3x2nGEJd6mUEzBCPa3VF8o 4Gi2X3os9v8gzw+yXcdJ/zQ5jvsAqSmg+qUuuYZyp5dykgfO55uTbidbne31WHLsr0ie6Dmyk+8 4fi5QgQw= X-Google-Smtp-Source: AGHT+IFu9sX5qahTX6pLMUGmJOeGYzCNgXfj800wA7YwHPMovd/dEXpPsBTFkpCCcZuKHYFr7c+Ndw== X-Received: by 2002:a17:903:8c6:b0:232:59b:5923 with SMTP id d9443c01a7336-23ac6375c83mr10666695ad.23.1750976907058; Thu, 26 Jun 2025 15:28:27 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su , Fan Ni Subject: [QEMU PATCH v4 06/10] cxl-mailbox-utils: 0x5602 - FMAPI Set DC Region Config Date: Thu, 26 Jun 2025 22:23:29 +0000 Message-ID: <20250626222743.1766404-7-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977058376116600 From: Anisa Su FM DCD Management command 0x5602 implemented per CXL r3.2 Spec Section 7.6.= 7.6.3 Reviewed-by: Fan Ni Signed-off-by: Anisa Su --- hw/cxl/cxl-mailbox-utils.c | 86 ++++++++++++++++++++++++++++++++++++ hw/mem/cxl_type3.c | 6 +-- include/hw/cxl/cxl_device.h | 3 ++ include/hw/cxl/cxl_mailbox.h | 6 +++ 4 files changed, 98 insertions(+), 3 deletions(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 7f0709a27f..69c618383a 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -121,6 +121,7 @@ enum { FMAPI_DCD_MGMT =3D 0x56, #define GET_DCD_INFO 0x0 #define GET_HOST_DC_REGION_CONFIG 0x1 + #define SET_DC_REGION_CONFIG 0x2 }; =20 /* CCI Message Format CXL r3.1 Figure 7-19 */ @@ -3387,6 +3388,84 @@ static CXLRetCode cmd_fm_get_host_dc_region_config(c= onst struct cxl_cmd *cmd, return CXL_MBOX_SUCCESS; } =20 +/* CXL r3.2 section 7.6.7.6.3: Set Host DC Region Configuration (Opcode 56= 02) */ +static CXLRetCode cmd_fm_set_dc_region_config(const struct cxl_cmd *cmd, + uint8_t *payload_in, + size_t len_in, + uint8_t *payload_out, + size_t *len_out, + CXLCCI *cci) +{ + struct { + uint8_t reg_id; + uint8_t rsvd[3]; + uint64_t block_sz; + uint8_t flags; + uint8_t rsvd2[3]; + } QEMU_PACKED *in =3D (void *)payload_in; + CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); + CXLEventDynamicCapacity dcEvent =3D {}; + CXLDCRegion *region =3D &ct3d->dc.regions[in->reg_id]; + + /* + * CXL r3.2 7.6.7.6.3: Set DC Region Configuration + * This command shall fail with Unsupported when the Sanitize on Relea= se + * field does not match the region=E2=80=99s configuration... and the = device + * does not support reconfiguration of the Sanitize on Release setting. + * + * Currently not reconfigurable, so always fail if sanitize bit (bit 0) + * doesn't match. + */ + if ((in->flags & 0x1) !=3D (region->flags & 0x1)) { + return CXL_MBOX_UNSUPPORTED; + } + + if (in->reg_id >=3D DCD_MAX_NUM_REGION) { + return CXL_MBOX_UNSUPPORTED; + } + + /* Check that no extents are in the region being reconfigured */ + if (!bitmap_empty(region->blk_bitmap, region->len / region->block_size= )) { + return CXL_MBOX_UNSUPPORTED; + } + + /* Check that new block size is supported */ + if (!test_bit(BIT((int) log2(in->block_sz)), + ®ion->supported_blk_size_bitmask)) { + return CXL_MBOX_INVALID_INPUT; + } + + /* Return success if new block size =3D=3D current block size */ + if (in->block_sz =3D=3D region->block_size) { + return CXL_MBOX_SUCCESS; + } + + /* Free bitmap and create new one for new block size. */ + qemu_mutex_lock(®ion->bitmap_lock); + g_free(region->blk_bitmap); + region->blk_bitmap =3D bitmap_new(region->len / in->block_sz); + qemu_mutex_unlock(®ion->bitmap_lock); + region->block_size =3D in->block_sz; + + /* Create event record and insert into event log */ + cxl_assign_event_header(&dcEvent.hdr, + &dynamic_capacity_uuid, + (1 << CXL_EVENT_TYPE_INFO), + sizeof(dcEvent), + cxl_device_get_timestamp(&ct3d->cxl_dstate)); + dcEvent.type =3D DC_EVENT_REGION_CONFIG_UPDATED; + dcEvent.validity_flags =3D 1; + dcEvent.host_id =3D 0; + dcEvent.updated_region_id =3D in->reg_id; + + if (cxl_event_insert(&ct3d->cxl_dstate, + CXL_EVENT_TYPE_DYNAMIC_CAP, + (CXLEventRecordRaw *)&dcEvent)) { + cxl_event_irq_assert(ct3d); + } + return CXL_MBOX_SUCCESS; +} + static const struct cxl_cmd cxl_cmd_set[256][256] =3D { [INFOSTAT][BACKGROUND_OPERATION_ABORT] =3D { "BACKGROUND_OPERATION_ABO= RT", cmd_infostat_bg_op_abort, 0, 0 }, @@ -3505,6 +3584,13 @@ static const struct cxl_cmd cxl_cmd_set_fm_dcd[256][= 256] =3D { cmd_fm_get_dcd_info, 0, 0 }, [FMAPI_DCD_MGMT][GET_HOST_DC_REGION_CONFIG] =3D { "GET_HOST_DC_REGION_= CONFIG", cmd_fm_get_host_dc_region_config, 4, 0 }, + [FMAPI_DCD_MGMT][SET_DC_REGION_CONFIG] =3D { "SET_DC_REGION_CONFIG", + cmd_fm_set_dc_region_config, 16, + (CXL_MBOX_CONFIG_CHANGE_COLD_RESET | + CXL_MBOX_CONFIG_CHANGE_CONV_RESET | + CXL_MBOX_CONFIG_CHANGE_CXL_RESET | + CXL_MBOX_IMMEDIATE_CONFIG_CHANGE | + CXL_MBOX_IMMEDIATE_DATA_CHANGE) }, }; =20 /* diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index b872a26173..ee554a77be 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1590,9 +1590,9 @@ void qmp_cxl_inject_correctable_error(const char *pat= h, CxlCorErrorType type, pcie_aer_inject_error(PCI_DEVICE(obj), &err); } =20 -static void cxl_assign_event_header(CXLEventRecordHdr *hdr, - const QemuUUID *uuid, uint32_t flags, - uint8_t length, uint64_t timestamp) +void cxl_assign_event_header(CXLEventRecordHdr *hdr, + const QemuUUID *uuid, uint32_t flags, + uint8_t length, uint64_t timestamp) { st24_le_p(&hdr->flags, flags); hdr->length =3D length; diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 6a5025200c..82e3bc1a71 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -729,4 +729,7 @@ void ct3_clear_region_block_backed(CXLType3Dev *ct3d, u= int64_t dpa, uint64_t len); bool ct3_test_region_block_backed(CXLType3Dev *ct3d, uint64_t dpa, uint64_t len); +void cxl_assign_event_header(CXLEventRecordHdr *hdr, + const QemuUUID *uuid, uint32_t flags, + uint8_t length, uint64_t timestamp); #endif diff --git a/include/hw/cxl/cxl_mailbox.h b/include/hw/cxl/cxl_mailbox.h index 9008402d1c..a05d7cb5b7 100644 --- a/include/hw/cxl/cxl_mailbox.h +++ b/include/hw/cxl/cxl_mailbox.h @@ -8,6 +8,7 @@ #ifndef CXL_MAILBOX_H #define CXL_MAILBOX_H =20 +#define CXL_MBOX_CONFIG_CHANGE_COLD_RESET (1) #define CXL_MBOX_IMMEDIATE_CONFIG_CHANGE (1 << 1) #define CXL_MBOX_IMMEDIATE_DATA_CHANGE (1 << 2) #define CXL_MBOX_IMMEDIATE_POLICY_CHANGE (1 << 3) @@ -15,5 +16,10 @@ #define CXL_MBOX_SECURITY_STATE_CHANGE (1 << 5) #define CXL_MBOX_BACKGROUND_OPERATION (1 << 6) #define CXL_MBOX_BACKGROUND_OPERATION_ABORT (1 << 7) +#define CXL_MBOX_SECONDARY_MBOX_SUPPORTED (1 << 8) +#define CXL_MBOX_REQUEST_ABORT_BACKGROUND_OP_SUPPORTED (1 << 9) +#define CXL_MBOX_CEL_10_TO_11_VALID (1 << 10) +#define CXL_MBOX_CONFIG_CHANGE_CONV_RESET (1 << 11) +#define CXL_MBOX_CONFIG_CHANGE_CXL_RESET (1 << 12) =20 #endif --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977019; cv=none; d=zohomail.com; s=zohoarc; b=fZIZuyDK9n3m90cMvra9ZOnCmWXMeqGj7p8/Mz3cLiHl7QmRGWEqWlKvYN+3QFmOF33h57j2BlmE8wu2tf9gC0PSa6xOcVEnQpnAXkHZXB/IELeAA4bxidG/RuG6NxfRKYQeT1uXEtdmDWKD+iPLAklSO89SRRuL12O0KX4jdCo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977019; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=q4FJYJ8U4O5w3tqy5MpavB61ZpcaWiN2iAUIoKHfFUQ=; b=NJLo8biZu4IhAkAotFBpdGJWg+HIEdmXkZDKxtZdKHVMJmeB/VTs8qterqFKJJemkDQES/bHB+RpuWM1wivJ4pPGPGKa0lXMc1xqm35KxcHs5qFOTM94JG9+zK15gFx6AK/AiBvGq9rxZ0KVnIKTcD+b1jV+8aL1gCl/qEtIll4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750977019857609.5736305725173; Thu, 26 Jun 2025 15:30:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5L-0006Q2-BE; Thu, 26 Jun 2025 18:28:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv5B-0006Lu-4S for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:39 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv54-0000tt-Su for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:36 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-237e6963f63so11298795ad.2 for ; Thu, 26 Jun 2025 15:28:29 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976908; x=1751581708; darn=nongnu.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=q4FJYJ8U4O5w3tqy5MpavB61ZpcaWiN2iAUIoKHfFUQ=; b=Xiq5iIsKPiKHAkFt+Qmzv6L3hhWf9HtAFYK+YATmXyqOYl5c36QJVvRFrugaQxQlHl B3oPXb5gkO0b7Nd3cQZRCgBqEElCApY8gKxStgM91jGXVmtaLlDPpitFtPDb7xmjPAh6 mmMzM1wPSoSQi62zEbcDkH3GezPPgeCgaRshoxJkGm67kra6IrTwCLkZV6ZReGvbVvAO s0x7cb8cYz0STBbKWn1XhXiiCgSp8cJpry1waI9DyU40To9MqXSX3oQUsKfQ+GojifVZ TS9JHZsZ1gtjQ9ejNLoyvXIuC8eLa3xDkLUBTUqwPzWOpT8eO13SA+Ibi5vGlTH4Bus9 A+6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976908; x=1751581708; 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=q4FJYJ8U4O5w3tqy5MpavB61ZpcaWiN2iAUIoKHfFUQ=; b=MpMO2o1LA7ET/5hSbej7UmMFAaS+drf+FVhK78UhNLRPZZcTrrpnTJjAgQ4I35pPof EVZi8iYRwWlysMD9EvHA3lzXuWJJ6SOyLB2uYQzfE7dGmhgmdQpIxtiGKtexzZyLpj0h isKn8NNwFKBTKQJ9hwHBuzuYGMrj9e9eAMXGbspAkCnz7dGm6ngj+ufRcBY7rvrmwgeu jAzwAmlhPiDrpEn1A5Bn5Hc6GiV/NGa+eI5I5sT55zMshX19l+62bXZa6rE71N9DVY1Z tDJm72lYdPC/rmovt+4j3nl8yLJVNG7UC5Cp3AMtk+u3iBPZaWP0T/TEOCvA57P7f75V L2+Q== X-Gm-Message-State: AOJu0YwbY4+BunhOYHUj2UMrWqAU21c7xeTlcG952g7EZwMWj/Q0YcOb bXifHob5OMSMWTfCvrJ1d/UKMNsfr+9dGcIBhfg/t0B9H7fRI2cpk8hp8HE4Ug== X-Gm-Gg: ASbGncsZWoXyHKhHUkqvioDdnGH3ky8nSercpUqii+hQ2imcWnodDC61hVLnFzOl8OD cx9B8gIwVZt72nrvFON8lQPFtbMaSykM/xjpAK/2uBiN0XUwZUcAeveIsjoAmF8ZAFMdtx8peoV uyxejGf+YlZ3O0iBOb9y0E2BxCwcRZ/2wFlfDmV7SC/ekXfWm8iTAM4cmQSLZJtR4AsBjeTDApU hiLjq13MZLxK7UVtc5sap8pkF8I2HkSimaV8a5USDIBv4Gj+AnDo5rdVGRS9845GjLumL6xTdhj Awqw4XZZL6MzthyowcNcpp7VpZo0mNMA66AZDi3z4CbYTkeA6Mjous2VVcGPJbtYRXXYkG3GGe5 UTkjBVv8= X-Google-Smtp-Source: AGHT+IFPGI/jENu1Opk6rzXQM1PGC5KaqM00tRrzeAzqShzQOnfmyVlrJeo/YfMr80WZPQXkgnxrGw== X-Received: by 2002:a17:903:1b6b:b0:234:8eeb:d834 with SMTP id d9443c01a7336-23ac43d318dmr14505035ad.16.1750976908121; Thu, 26 Jun 2025 15:28:28 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su , Fan Ni Subject: [QEMU PATCH v4 07/10] cxl-mailbox-utils: 0x5603 - FMAPI Get DC Region Extent Lists Date: Thu, 26 Jun 2025 22:23:30 +0000 Message-ID: <20250626222743.1766404-8-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977021704116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su FM DCD Management command 0x5603 implemented per CXL r3.2 Spec Section 7.6.= 7.6.4 Very similar to previously implemented command 0x4801. Reviewed-by: Fan Ni Signed-off-by: Anisa Su --- hw/cxl/cxl-mailbox-utils.c | 76 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 69c618383a..e3d54ed124 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -122,6 +122,7 @@ enum { #define GET_DCD_INFO 0x0 #define GET_HOST_DC_REGION_CONFIG 0x1 #define SET_DC_REGION_CONFIG 0x2 + #define GET_DC_REGION_EXTENT_LIST 0x3 }; =20 /* CCI Message Format CXL r3.1 Figure 7-19 */ @@ -3466,6 +3467,79 @@ static CXLRetCode cmd_fm_set_dc_region_config(const = struct cxl_cmd *cmd, return CXL_MBOX_SUCCESS; } =20 +/* CXL r3.2 section 7.6.7.6.4 Get DC Region Extent Lists (Opcode 5603h) */ +static CXLRetCode cmd_fm_get_dc_region_extent_list(const struct cxl_cmd *c= md, + uint8_t *payload_in, + size_t len_in, + uint8_t *payload_out, + size_t *len_out, + CXLCCI *cci) +{ + struct { + uint16_t host_id; + uint8_t rsvd[2]; + uint32_t extent_cnt; + uint32_t start_extent_id; + } QEMU_PACKED *in =3D (void *)payload_in; + struct { + uint16_t host_id; + uint8_t rsvd[2]; + uint32_t start_extent_id; + uint32_t extents_returned; + uint32_t total_extents; + uint32_t list_generation_num; + uint8_t rsvd2[4]; + CXLDCExtentRaw records[]; + } QEMU_PACKED *out =3D (void *)payload_out; + QEMU_BUILD_BUG_ON(sizeof(*in) !=3D 0xc); + CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); + CXLDCExtent *ent; + CXLDCExtentRaw *out_rec; + uint16_t record_count =3D 0, record_done =3D 0, i =3D 0; + uint16_t out_pl_len, max_size; + + if (in->host_id !=3D 0) { + return CXL_MBOX_INVALID_INPUT; + } + + if (in->start_extent_id > ct3d->dc.nr_extents_accepted) { + return CXL_MBOX_INVALID_INPUT; + } + + record_count =3D MIN(in->extent_cnt, + ct3d->dc.nr_extents_accepted - in->start_extent_id); + max_size =3D CXL_MAILBOX_MAX_PAYLOAD_SIZE - sizeof(*out); + record_count =3D MIN(record_count, max_size / sizeof(out->records[0])); + out_pl_len =3D sizeof(*out) + record_count * sizeof(out->records[0]); + + stw_le_p(&out->host_id, in->host_id); + stl_le_p(&out->start_extent_id, in->start_extent_id); + stl_le_p(&out->extents_returned, record_count); + stl_le_p(&out->total_extents, ct3d->dc.nr_extents_accepted); + stl_le_p(&out->list_generation_num, ct3d->dc.ext_list_gen_seq); + + if (record_count > 0) { + QTAILQ_FOREACH(ent, &ct3d->dc.extents, node) { + if (i++ < in->start_extent_id) { + continue; + } + out_rec =3D &out->records[record_done]; + stq_le_p(&out_rec->start_dpa, ent->start_dpa); + stq_le_p(&out_rec->len, ent->len); + memcpy(&out_rec->tag, ent->tag, 0x10); + stw_le_p(&out_rec->shared_seq, ent->shared_seq); + + record_done++; + if (record_done =3D=3D record_count) { + break; + } + } + } + + *len_out =3D out_pl_len; + return CXL_MBOX_SUCCESS; +} + static const struct cxl_cmd cxl_cmd_set[256][256] =3D { [INFOSTAT][BACKGROUND_OPERATION_ABORT] =3D { "BACKGROUND_OPERATION_ABO= RT", cmd_infostat_bg_op_abort, 0, 0 }, @@ -3591,6 +3665,8 @@ static const struct cxl_cmd cxl_cmd_set_fm_dcd[256][2= 56] =3D { CXL_MBOX_CONFIG_CHANGE_CXL_RESET | CXL_MBOX_IMMEDIATE_CONFIG_CHANGE | CXL_MBOX_IMMEDIATE_DATA_CHANGE) }, + [FMAPI_DCD_MGMT][GET_DC_REGION_EXTENT_LIST] =3D { "GET_DC_REGION_EXTEN= T_LIST", + cmd_fm_get_dc_region_extent_list, 12, 0 }, }; =20 /* --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750976984; cv=none; d=zohomail.com; s=zohoarc; b=JnDbk/aeoSoVAVE1W3kpPZu5sbBF9SKZ5NDMAr03VZZMw6Ov13Pl17mEFsAi9Icy8zqeMQ3C7qv2cWqWTCmh+wfpAbGrTz+4q0K8eQ0wBtlnSQwEhkxO1Gqg0dP25MUuuBsxkGWYVAjcyFj7ow17Hlr38rSuX5oQwKFZFU2jlu4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750976984; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fNzdswBVnpQdWNT16OCETeREezHNIv1SZz5MkHcTEn8=; b=de3lVUiFSekPEHM77oZIwDIU3gTMLuN4Bdo4LHjPHmdo0FU1ssk1+TsOeGT3qTDljzwQMBqXbxn+ReqzudumE6TwHhZGfN/n5vBv5DUlRs/4eIlVVhDzilpgT+5/BjyA7Gezjvd1QRmyyM7o0EQc7z22S+51y8XWrwRhLP0LcG4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750976984597749.28459780088; Thu, 26 Jun 2025 15:29:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5M-0006QF-MY; Thu, 26 Jun 2025 18:28:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv5I-0006OM-1X for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:44 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv56-0000tx-Sf for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:43 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-23633a6ac50so22416695ad.2 for ; Thu, 26 Jun 2025 15:28:30 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976909; x=1751581709; darn=nongnu.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=fNzdswBVnpQdWNT16OCETeREezHNIv1SZz5MkHcTEn8=; b=UMs60P+xLmvhP7TzHDhN8Kmw0jftpLbvVUjd8bkIGJLOq/1JADpW6/NJsbRTxYd64Y djm3DHmVAYWEmIf6TrX8LLzly5FBVEwCSxcTOfoTEIYEU1eW0PmwQnFCVKKM05tmfQxk WSB2Gp9Nbm+f55Z8XPbIf3sBN8UZT91j2tUvVOUWYLNKyVKE8AhKh+x/0CeMBdXgcOKH MngROsW6rIv1C4ip/0qfWkZh8x/DlxUk9jBZvmY4grgGDAhRUCNjSus0RjTIDjtpJIX6 9mrB9ZBKnURgjluAKQZlyK729feXXKmtN9htuCAkWVj3bm+rcAi5d6kAYqsKnZ3TztB5 TQFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976909; x=1751581709; 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=fNzdswBVnpQdWNT16OCETeREezHNIv1SZz5MkHcTEn8=; b=hil66k/VYkp7nMqOIxYX33zLQwn4G+K4K9qS2dy+10tnYcBgt7GNYjFr1Je2MV3qP6 WX3BwlxG43my5H55/rBjnmb4sd1KJo2ZNj6XtD6CHzLqt1c2O7r36QXKq3F9vz92eX/U +v9CiHcow8wClvlhupwQXs9mxHN3nTYgIpZ0/zeiYFO4+YBrtL/MFUDXv6jK28uQ+dDe zfZyGE/m7+z3m0gXUlRB2eUG8p39vHaXgVoNyeAgtIRFVSKkwiANqP7itp8FLjyoSF8G l772kXF+DWk2RPgb2mECAUAnl1sumtiwY4yzJY2rYJ9KYZLsfPWhO3LwH7UUG0ZSfKf4 69cg== X-Gm-Message-State: AOJu0YwUgW7CfMToWyXvQ496lHg2lcMf75y5GVea5EXlHQT8TSYOvY5B iQeVEFjyQeGFmF93atXqxVLvL2OChAjttFdcou7ey60PUZ8723x9Tcx+iVyp6Q== X-Gm-Gg: ASbGncv5wTAEEAPjknOJ2RC9TzffFAyfFh3wSJ/XffGDve2PlIKzTAQkYevehVlNsuG IMiuRYiqO+KnaTSs3KGVhwfQoy2TKN0v8RcxhqYBYOSqRe+1g4+BoxseALcKQWFDOWwRNOiMmjy URkLv+eBkCDcFXQGwIH0jTeYYF3H2aVZzrmEk5VH+BBvNaA5mQ+d9lHJixrELoUwytvElmwPnbR GCISzPWBrK2oF7xU0hbOjgAgjdg+XluCmMlO6aVlJJNSqc08beJe76KcpRIC0rk+AIENRDxvAb3 Zg8yeIUG6fZMIfHfoEfyX8Z7oVPsmxpAlnr1NqojGylM1pSP+4wwPRfg3Dq02rC6XbLU7iJBC6E Su3YlqvEZ3J9eY9Nkrg== X-Google-Smtp-Source: AGHT+IEoLN21IQhU3rd/hGmCc35DGpKEcYEcpyldg1wX32m6cPlhGIDY4ch+t8LStiJysEhJ+nzDOA== X-Received: by 2002:a17:902:ce11:b0:235:5a9:976f with SMTP id d9443c01a7336-23ac462451bmr16428175ad.24.1750976909069; Thu, 26 Jun 2025 15:28:29 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su Subject: [QEMU PATCH v4 08/10] hw/cxl: create helper function to create DC Event Records from extents Date: Thu, 26 Jun 2025 22:23:31 +0000 Message-ID: <20250626222743.1766404-9-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750976985371116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su Prepatory patch for following FMAPI Add/Release Patches. Refactors part of qmp_cxl_process_dynamic_capacity_prescriptive() into a helper function to create DC Event Records and insert in the event log. Moves definition for CXL_NUM_EXTENTS_SUPPORTED to cxl.h so it can be accessed by cxl-mailbox-utils.c and cxl-events.c, where the helper function is defined. Signed-off-by: Anisa Su Reviewed-by: Fan Ni --- hw/cxl/cxl-events.c | 38 +++++++++++++++++++++++++++++++++++++ hw/cxl/cxl-mailbox-utils.c | 1 - hw/mem/cxl_type3.c | 37 +----------------------------------- include/hw/cxl/cxl.h | 1 + include/hw/cxl/cxl_device.h | 4 ++++ 5 files changed, 44 insertions(+), 37 deletions(-) diff --git a/hw/cxl/cxl-events.c b/hw/cxl/cxl-events.c index 12dee2e467..724055f2cf 100644 --- a/hw/cxl/cxl-events.c +++ b/hw/cxl/cxl-events.c @@ -260,3 +260,41 @@ void cxl_event_irq_assert(CXLType3Dev *ct3d) } } } + +void cxl_create_dc_event_records_for_extents(CXLType3Dev *ct3d, + CXLDCEventType type, + CXLDCExtentRaw extents[], + uint32_t ext_count) +{ + CXLEventDynamicCapacity event_rec =3D {}; + int i; + + cxl_assign_event_header(&event_rec.hdr, + &dynamic_capacity_uuid, + (1 << CXL_EVENT_TYPE_INFO), + sizeof(event_rec), + cxl_device_get_timestamp(&ct3d->cxl_dstate)); + event_rec.type =3D type; + event_rec.validity_flags =3D 1; + event_rec.host_id =3D 0; + event_rec.updated_region_id =3D 0; + event_rec.extents_avail =3D CXL_NUM_EXTENTS_SUPPORTED - + ct3d->dc.total_extent_count; + + for (i =3D 0; i < ext_count; i++) { + memcpy(&event_rec.dynamic_capacity_extent, + &extents[i], + sizeof(CXLDCExtentRaw)); + event_rec.flags =3D 0; + if (i < ext_count - 1) { + /* Set "More" flag */ + event_rec.flags |=3D BIT(0); + } + + if (cxl_event_insert(&ct3d->cxl_dstate, + CXL_EVENT_TYPE_DYNAMIC_CAP, + (CXLEventRecordRaw *)&event_rec)) { + cxl_event_irq_assert(ct3d); + } + } +} diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index e3d54ed124..382c41c025 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -27,7 +27,6 @@ =20 #define CXL_CAPACITY_MULTIPLIER (256 * MiB) #define CXL_DC_EVENT_LOG_SIZE 8 -#define CXL_NUM_EXTENTS_SUPPORTED 512 #define CXL_NUM_TAGS_SUPPORTED 0 #define CXL_ALERTS_LIFE_USED_WARN_THRESH (1 << 0) #define CXL_ALERTS_OVER_TEMP_WARN_THRESH (1 << 1) diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index ee554a77be..9c2b9d197b 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1957,15 +1957,11 @@ static void qmp_cxl_process_dynamic_capacity_prescr= iptive(const char *path, CxlDynamicCapacityExtentList *records, Error **errp) { Object *obj; - CXLEventDynamicCapacity dCap =3D {}; - CXLEventRecordHdr *hdr =3D &dCap.hdr; CXLType3Dev *dcd; - uint8_t flags =3D 1 << CXL_EVENT_TYPE_INFO; uint32_t num_extents =3D 0; CxlDynamicCapacityExtentList *list; CXLDCExtentGroup *group =3D NULL; g_autofree CXLDCExtentRaw *extents =3D NULL; - uint8_t enc_log =3D CXL_EVENT_TYPE_DYNAMIC_CAP; uint64_t dpa, offset, len, block_size; g_autofree unsigned long *blk_bitmap =3D NULL; int i; @@ -2078,38 +2074,7 @@ static void qmp_cxl_process_dynamic_capacity_prescri= ptive(const char *path, dcd->dc.total_extent_count +=3D num_extents; } =20 - /* - * CXL r3.1 section 8.2.9.2.1.6: Dynamic Capacity Event Record - * - * All Dynamic Capacity event records shall set the Event Record Sever= ity - * field in the Common Event Record Format to Informational Event. All - * Dynamic Capacity related events shall be logged in the Dynamic Capa= city - * Event Log. - */ - cxl_assign_event_header(hdr, &dynamic_capacity_uuid, flags, sizeof(dCa= p), - cxl_device_get_timestamp(&dcd->cxl_dstate)); - - dCap.type =3D type; - /* FIXME: for now, validity flag is cleared */ - dCap.validity_flags =3D 0; - stw_le_p(&dCap.host_id, hid); - /* only valid for DC_REGION_CONFIG_UPDATED event */ - dCap.updated_region_id =3D 0; - for (i =3D 0; i < num_extents; i++) { - memcpy(&dCap.dynamic_capacity_extent, &extents[i], - sizeof(CXLDCExtentRaw)); - - dCap.flags =3D 0; - if (i < num_extents - 1) { - /* Set "More" flag */ - dCap.flags |=3D BIT(0); - } - - if (cxl_event_insert(&dcd->cxl_dstate, enc_log, - (CXLEventRecordRaw *)&dCap)) { - cxl_event_irq_assert(dcd); - } - } + cxl_create_dc_event_records_for_extents(dcd, type, extents, num_extent= s); } =20 void qmp_cxl_add_dynamic_capacity(const char *path, uint16_t host_id, diff --git a/include/hw/cxl/cxl.h b/include/hw/cxl/cxl.h index 75e47b6864..3ae4303383 100644 --- a/include/hw/cxl/cxl.h +++ b/include/hw/cxl/cxl.h @@ -23,6 +23,7 @@ #define CXL_DEVICE_REG_BAR_IDX 2 =20 #define CXL_WINDOW_MAX 10 +#define CXL_NUM_EXTENTS_SUPPORTED 512 =20 typedef struct PXBCXLDev PXBCXLDev; =20 diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 82e3bc1a71..91ec1ba299 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -732,4 +732,8 @@ bool ct3_test_region_block_backed(CXLType3Dev *ct3d, ui= nt64_t dpa, void cxl_assign_event_header(CXLEventRecordHdr *hdr, const QemuUUID *uuid, uint32_t flags, uint8_t length, uint64_t timestamp); +void cxl_create_dc_event_records_for_extents(CXLType3Dev *ct3d, + CXLDCEventType type, + CXLDCExtentRaw extents[], + uint32_t ext_count); #endif --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977093; cv=none; d=zohomail.com; s=zohoarc; b=Gm852eeLiMI/Gg8wyOPCAFlokhQcVC6EgMBlxBEU0113IK0J42PKEvxfmsxIKS5mhOyAi7zfV8SULmxLx4bKIrU2C4enK77i3oaTME3N0ToZVj4zhmWhMpuGPvXS0AUwA9Kh3AnZtUilEkG9rMwDeU4TiWxWewWLtCCwyIVPLdo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977093; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+0+GG0gjJCw7pfb+JxSIZ+IHUVC7BruErkqzXq+9RoU=; b=kqTF8+hDdcDjC2sm6Y8Wt9MQi/3NyxjH+VhrExvtfertrn21w0iGd+cdBMtE4CG67AtYkjjnROzol0UutYglEO5rKJco4bC+jzDc0HW7Bcbkv+UmEMPSk9JOPlRFSyRAVYkHtZAGPyeJBTfrO7bJAOWojPcWhJyzXHEtvVhR7MA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750977093836479.27925831121297; Thu, 26 Jun 2025 15:31:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5N-0006QY-9m; Thu, 26 Jun 2025 18:28:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv5I-0006ON-3R for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:44 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv57-0000u9-VZ for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:43 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-236377f00a1so18307475ad.3 for ; Thu, 26 Jun 2025 15:28:31 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976910; x=1751581710; darn=nongnu.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=+0+GG0gjJCw7pfb+JxSIZ+IHUVC7BruErkqzXq+9RoU=; b=cywpy7/KNU2ZsL69cIxb0a58p7Byy715ZS9GXrRmlMMIo3qUy7qtnKuWxKHOsE6fPO nNGCgt++uT1ch4XlfljjKma87tMlNyak5xSq+1bgHHZBl9XDeU+CvYgnzsYcYsRAtlUX bJsHb7QcxgCpenjRP22rXkprgBGtzlPmzlGW7nF5HKoQwBfu9aJptVeKnGQAIacr6RSf f4qUBIAzs0gDiamg3W5nysVnkmqu8RkoLu0k2zgkIzAT9ozuTQdN0xMk+aci6NWxUfe6 obwF9/2USY1L0ooSNUTBXKpnULc7KByfebdSmImLs/E1zSJNMjIt4CLdLJ22C5Z+JXfc z0lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976910; x=1751581710; 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=+0+GG0gjJCw7pfb+JxSIZ+IHUVC7BruErkqzXq+9RoU=; b=hQ7qG9N3EQYeJK5eZJyZlfYnl/rgaFZuXKHKHnmbWid7i7y7cnDt7fakqHpi06STcd XibuUBqsKtfxZ6R9luZKFYLRa3iuoVcDg5JU6fi6daQs/1N1vVOeO8/vDTVHcbfARjw5 w35wvlcdLGyszJOk8jovvXaFtMEgziiYZAfve8CS36nuCy4Y9UYtA+CYTeMx3O772Rfg gXXUsxXGnTYcMmaEkhJeJAncPqCtGYeBMQ3z4ImQeqweaV3ob5HFF0C7l1Y4EJESo9hd Naeo3UZRcoGbfDjXKU8xlMZMjlV043ndy2uFVF01TByfZP9Aj1ou85KsX8/jNCMgKQx1 6aYA== X-Gm-Message-State: AOJu0YzQpCiYYMg8mjQVbgkgSy7bhSteqF7htlEdY0cRh2PfgqR21B+2 FTeRLLmTyrEC8NpRQSdu3lzwnM3Zqxp5iYcQpFFJAsJQwFZCITeKc9Lug8pb6g== X-Gm-Gg: ASbGncsxRbMiwCnq02k4eQVYGWkoK7PBKX715+yrLY8O6W2oZyYvcQy9T4LUsxhvZJt nBBJ0jutsCrfn27gJ+eF2pxdBbWDTYqhGbzZOcs8vnaAjJxwxUEOYLXAiSMbs1Cx1fwywTYg0w8 yISHV/syBNMReiDHvlRy7sZxXTYxYFgkUxC/chwEXby5o0lg3gjAoKkdUY3oJBMcbVXt3k351oI 9QFvGg/0dabhzHdoYK6Wfg0webGDR3kKrrECBlNKmVb/BkdGCt+b9EUG4CXTd2soMeopKQL8jMC CAdmukTUF7vpwR6VC25jMblxq1B+5y/lzJM0GNFqBtPEmWmJIq2LCzTsARpHlEjThLdKg+oj0vu 6hHw0OKXVzlfQh2C+WA== X-Google-Smtp-Source: AGHT+IGb7C9jfd9dLU4Z2QTBlI1DepmvSTcctPfgZhCBugJCbUg3ZaVrc15bUxaL4S6DLsL6lJyw+Q== X-Received: by 2002:a17:902:e5c9:b0:234:9656:7db9 with SMTP id d9443c01a7336-23ac4633b92mr13533185ad.32.1750976909974; Thu, 26 Jun 2025 15:28:29 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su Subject: [QEMU PATCH v4 09/10] cxl-mailbox-utils: 0x5604 - FMAPI Initiate DC Add Date: Thu, 26 Jun 2025 22:23:32 +0000 Message-ID: <20250626222743.1766404-10-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x62a.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977094514116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su FM DCD Management command 0x5604 implemented per CXL r3.2 Spec Section 7.6.= 7.6.5 Signed-off-by: Anisa Su --- hw/cxl/cxl-mailbox-utils.c | 106 ++++++++++++++++++++++++++++++++++++ hw/mem/cxl_type3.c | 8 +-- include/hw/cxl/cxl_device.h | 4 ++ 3 files changed, 114 insertions(+), 4 deletions(-) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 382c41c025..787eeaa7b9 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -122,6 +122,7 @@ enum { #define GET_HOST_DC_REGION_CONFIG 0x1 #define SET_DC_REGION_CONFIG 0x2 #define GET_DC_REGION_EXTENT_LIST 0x3 + #define INITIATE_DC_ADD 0x4 }; =20 /* CCI Message Format CXL r3.1 Figure 7-19 */ @@ -3539,6 +3540,104 @@ static CXLRetCode cmd_fm_get_dc_region_extent_list(= const struct cxl_cmd *cmd, return CXL_MBOX_SUCCESS; } =20 +/* + * Helper function to convert CXLDCExtentRaw to CXLUpdateDCExtentListInPl + * in order to reuse cxl_detect_malformed_extent_list() function which acc= epts + * CXLUpdateDCExtentListInPl as a parameter. + */ +static void convert_raw_extents(CXLDCExtentRaw raw_extents[], + CXLUpdateDCExtentListInPl *extent_list, + int count) +{ + int i; + + extent_list->num_entries_updated =3D count; + + for (i =3D 0; i < count; i++) { + extent_list->updated_entries[i].start_dpa =3D raw_extents[i].start= _dpa; + extent_list->updated_entries[i].len =3D raw_extents[i].len; + } +} + +/* CXL r3.2 Section 7.6.7.6.5 Initiate Dynamic Capacity Add (Opcode 5604h)= */ +static CXLRetCode cmd_fm_initiate_dc_add(const struct cxl_cmd *cmd, + uint8_t *payload_in, + size_t len_in, + uint8_t *payload_out, + size_t *len_out, + CXLCCI *cci) +{ + struct { + uint16_t host_id; + uint8_t selection_policy; + uint8_t reg_num; + uint64_t length; + uint8_t tag[0x10]; + uint32_t ext_count; + CXLDCExtentRaw extents[]; + } QEMU_PACKED *in =3D (void *)payload_in; + CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); + int i, rc; + + switch (in->selection_policy) { + case CXL_EXTENT_SELECTION_POLICY_PRESCRIPTIVE: { + /* Adding extents exceeds device's extent tracking ability. */ + if (in->ext_count + ct3d->dc.total_extent_count > + CXL_NUM_EXTENTS_SUPPORTED) { + return CXL_MBOX_RESOURCES_EXHAUSTED; + } + + g_autofree CXLUpdateDCExtentListInPl *list =3D + g_malloc0(sizeof(*list) + + in->ext_count * sizeof(*list->updated_entries)); + + convert_raw_extents(in->extents, list, in->ext_count); + rc =3D cxl_detect_malformed_extent_list(ct3d, list); + + for (i =3D 0; i < in->ext_count; i++) { + CXLDCExtentRaw ext =3D in->extents[i]; + /* Check requested extents do not overlap with pending ext= ents. */ + if (cxl_extent_groups_overlaps_dpa_range(&ct3d->dc.extents= _pending, + ext.start_dpa, ex= t.len)) { + return CXL_MBOX_INVALID_EXTENT_LIST; + } + /* Check requested extents do not overlap with existing ex= tents. */ + if (cxl_extents_overlaps_dpa_range(&ct3d->dc.extents, + ext.start_dpa, ext.len)= ) { + return CXL_MBOX_INVALID_EXTENT_LIST; + } + } + + if (rc) { + return rc; + } + + CXLDCExtentGroup *group =3D NULL; + for (i =3D 0; i < in->ext_count; i++) { + group =3D cxl_insert_extent_to_extent_group(group, + in->extents[i].s= tart_dpa, + in->extents[i].l= en, + in->extents[i].t= ag, + in->extents[i].s= hared_seq); + } + + cxl_extent_group_list_insert_tail(&ct3d->dc.extents_pending, g= roup); + ct3d->dc.total_extent_count +=3D in->ext_count; + cxl_create_dc_event_records_for_extents(ct3d, + DC_EVENT_ADD_CAPACITY, + in->extents, + in->ext_count); + + return CXL_MBOX_SUCCESS; + } + default: { + qemu_log_mask(LOG_UNIMP, + "CXL extent selection policy not supported.\n"); + return CXL_MBOX_INVALID_INPUT; + } + } +} + static const struct cxl_cmd cxl_cmd_set[256][256] =3D { [INFOSTAT][BACKGROUND_OPERATION_ABORT] =3D { "BACKGROUND_OPERATION_ABO= RT", cmd_infostat_bg_op_abort, 0, 0 }, @@ -3666,6 +3765,13 @@ static const struct cxl_cmd cxl_cmd_set_fm_dcd[256][= 256] =3D { CXL_MBOX_IMMEDIATE_DATA_CHANGE) }, [FMAPI_DCD_MGMT][GET_DC_REGION_EXTENT_LIST] =3D { "GET_DC_REGION_EXTEN= T_LIST", cmd_fm_get_dc_region_extent_list, 12, 0 }, + [FMAPI_DCD_MGMT][INITIATE_DC_ADD] =3D { "INIT_DC_ADD", + cmd_fm_initiate_dc_add, ~0, + (CXL_MBOX_CONFIG_CHANGE_COLD_RESET | + CXL_MBOX_CONFIG_CHANGE_CONV_RESET | + CXL_MBOX_CONFIG_CHANGE_CXL_RESET | + CXL_MBOX_IMMEDIATE_CONFIG_CHANGE | + CXL_MBOX_IMMEDIATE_DATA_CHANGE) }, }; =20 /* diff --git a/hw/mem/cxl_type3.c b/hw/mem/cxl_type3.c index 9c2b9d197b..7676d785c2 100644 --- a/hw/mem/cxl_type3.c +++ b/hw/mem/cxl_type3.c @@ -1885,8 +1885,8 @@ void qmp_cxl_inject_memory_module_event(const char *p= ath, CxlEventLog log, * the list. * Return value: return true if has overlaps; otherwise, return false */ -static bool cxl_extents_overlaps_dpa_range(CXLDCExtentList *list, - uint64_t dpa, uint64_t len) +bool cxl_extents_overlaps_dpa_range(CXLDCExtentList *list, + uint64_t dpa, uint64_t len) { CXLDCExtent *ent; Range range1, range2; @@ -1931,8 +1931,8 @@ bool cxl_extents_contains_dpa_range(CXLDCExtentList *= list, return false; } =20 -static bool cxl_extent_groups_overlaps_dpa_range(CXLDCExtentGroupList *lis= t, - uint64_t dpa, uint64_t le= n) +bool cxl_extent_groups_overlaps_dpa_range(CXLDCExtentGroupList *list, + uint64_t dpa, uint64_t len) { CXLDCExtentGroup *group; =20 diff --git a/include/hw/cxl/cxl_device.h b/include/hw/cxl/cxl_device.h index 91ec1ba299..7be68d98c6 100644 --- a/include/hw/cxl/cxl_device.h +++ b/include/hw/cxl/cxl_device.h @@ -736,4 +736,8 @@ void cxl_create_dc_event_records_for_extents(CXLType3De= v *ct3d, CXLDCEventType type, CXLDCExtentRaw extents[], uint32_t ext_count); +bool cxl_extents_overlaps_dpa_range(CXLDCExtentList *list, + uint64_t dpa, uint64_t len); +bool cxl_extent_groups_overlaps_dpa_range(CXLDCExtentGroupList *list, + uint64_t dpa, uint64_t len); #endif --=20 2.47.2 From nobody Sat Nov 15 14:49:47 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1750977036; cv=none; d=zohomail.com; s=zohoarc; b=TGih90m80xcFlc1uhqtbWNqWLMzm9zX8otkclGxyR+KSQ2sMPvS27fxoAvqn03bT66705EuN8ESKVcgMWTbdzAhysg0HzZg1DqfeYLCKdNzBzIqmmT4jNgvDHkD4ncWuiU/Mj2bbHVAjkMckU3+geQTYZOKde37Kxw82G2X49ZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1750977036; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7glFkwmiYhht2UqiHenwImRsN9dIKZyhfzkSZpDnTys=; b=KPUS2yL7006iOzEmpSq7npKw6JHjqNZAxk27R8gl5RZU2GkzQbYDZG+36dQG99G7uAbuzcyMsHXkNYFuzktusky//4NrjgZhySBrf1FNeR9DgLTzR3HUBrWHHXZwQRFc92rcmiv9q09aflnwly2jasKmfIFx5CmS0PwC58CqyuY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1750977036385965.7968916076956; Thu, 26 Jun 2025 15:30:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uUv5M-0006Q7-8t; Thu, 26 Jun 2025 18:28:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uUv5B-0006Lv-D0 for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:39 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uUv58-0000uI-LK for qemu-devel@nongnu.org; Thu, 26 Jun 2025 18:28:37 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2350fc2591dso15861495ad.1 for ; Thu, 26 Jun 2025 15:28:32 -0700 (PDT) Received: from deb-101020-bm01.dtc.local ([149.97.161.244]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c4b23sm870365ad.214.2025.06.26.15.28.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Jun 2025 15:28:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750976911; x=1751581711; darn=nongnu.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=7glFkwmiYhht2UqiHenwImRsN9dIKZyhfzkSZpDnTys=; b=NX9zSwTaTB51VTrq2u6YP2oSQT3hAgirYHw1h4zUPC+JzJSYKJtd4Qb0hefeVUh/1d 3n0IQjbSUksV8pw2ubZvJEuFAOFHblOVwyTaQRhZJI/+eWMvZm/eMN3DI5wrJn1JFV3a 60nwAl2qQmQYmlrim6YvLhUyo2vojUjqJVLE7Xcy9zGmIveiKdM6kMN4uHuHuIvlv2bk fEVnQIwPtZ8Y1agOau3kFiEBNPqBt9MZVVmuawpAKpfvu8FoW/ZLwNx6bWEI4cFwHk/V uZ/po6ox9B+PpbLpZ0+cJgthUaasqE10MqxuqhOGPD6Rb/r8ZR/9KEWGnvwjz+dXoMj+ uBAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750976911; x=1751581711; 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=7glFkwmiYhht2UqiHenwImRsN9dIKZyhfzkSZpDnTys=; b=Bv42M6jA5F6l1YaNDdhnDnaNHPf0m5981PS3HZGOJpV5Dzw6V9Vda4TlTNiJsI+gmA Wjyz4bQfgnEKm1GGz3Gm8+5OXB7gS54+rEcFKSqvnbi6kdRcIKJHWBZEwcA5PV+SNAtB i65hTupYlNcw0k2+1OMPvLaC29xEl42Wsp9FoD1C3JAs5/Q2VhPC/LeKcixr8lGvRC93 Yibd9xfzPPBJtbSVG5dfxyNh84xxZo+oAt70lK11X4xMoOFwdZbFwVhT4enPhsGq5ZCo 1pKi2byDFZOxAJmBXIZHp+ihgduIG5ka3QSF4izfvTm2OV7BI6r5ClqCeQfEAtU6IUCS zk5g== X-Gm-Message-State: AOJu0YzeOXXq8jxlImZ78Fs4DZr8J4reWfk9YMa0cQ+vYyu8ENuqfneU nHcSvAUXRNtYWRBIO9CEwApDMZQcmftxVpbfVZ5ix/QGb0xbtNETKFQdAkinSw== X-Gm-Gg: ASbGnctFAtIgnrWAzAq14Z9b61F0wqcDLnT1x4aTV872QipVYd4KGyfQZwrclBEmIPX yUFRxZWKRBGJHJCvXzd6TD3y3p5+EQWXPIYLxaAiymChb+hYy5hs1UK5pHl8lvlaMrvSPVHyATh 68W4zlSj7vxA1tbdP9OcGIVtZP+IyE2meslGUEY+Mv6GovhBiTLmE5f+G3Jj3iy5u819rFSg7ZD QQXf86mUr4dJUtloYbXqTuGgA7uiAWcPbO+InaeqVVIQd178edQWdGmj8vfWLTY9wO/mlbkSafH VY26zn9TaixvS8522q4a4jAUVY2ji3pK53/mOmpa7tj22pgVGmw3sQBmaUNMkC2qy17ojhjfpNp +Ry6o/PLr+Wv4tORXDg== X-Google-Smtp-Source: AGHT+IERKAxuYglZ602YznoXS5WYzlxGHsy6vL5DHQrNlWRyuMa8i4Cr/x9YgZZ+r9vALe46nBLCtQ== X-Received: by 2002:a17:903:110d:b0:215:6c5f:d142 with SMTP id d9443c01a7336-23ac61842d1mr8904825ad.20.1750976910978; Thu, 26 Jun 2025 15:28:30 -0700 (PDT) From: anisa.su887@gmail.com To: qemu-devel@nongnu.org Cc: Jonathan.Cameron@huawei.com, nifan.cxl@gmail.com, dave@stgolabs.net, alok.a.tiwari@oracle.com, linux-cxl@vger.kernel.org, Anisa Su Subject: [QEMU PATCH v4 10/10] cxl-mailbox-utils: 0x5605 - FMAPI Initiate DC Release Date: Thu, 26 Jun 2025 22:23:33 +0000 Message-ID: <20250626222743.1766404-11-anisa.su887@gmail.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250626222743.1766404-1-anisa.su887@gmail.com> References: <20250626222743.1766404-1-anisa.su887@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=anisa.su887@gmail.com; helo=mail-pl1-x629.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1750977037835116600 Content-Type: text/plain; charset="utf-8" From: Anisa Su FM DCD Management command 0x5605 implemented per CXL r3.2 Spec Section 7.6.= 7.6.6 Signed-off-by: Anisa Su --- hw/cxl/cxl-mailbox-utils.c | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/hw/cxl/cxl-mailbox-utils.c b/hw/cxl/cxl-mailbox-utils.c index 787eeaa7b9..87f9535d46 100644 --- a/hw/cxl/cxl-mailbox-utils.c +++ b/hw/cxl/cxl-mailbox-utils.c @@ -123,6 +123,7 @@ enum { #define SET_DC_REGION_CONFIG 0x2 #define GET_DC_REGION_EXTENT_LIST 0x3 #define INITIATE_DC_ADD 0x4 + #define INITIATE_DC_RELEASE 0x5 }; =20 /* CCI Message Format CXL r3.1 Figure 7-19 */ @@ -3638,6 +3639,77 @@ static CXLRetCode cmd_fm_initiate_dc_add(const struc= t cxl_cmd *cmd, } } =20 +#define CXL_EXTENT_REMOVAL_POLICY_MASK 0x0F +#define CXL_FORCED_REMOVAL_MASK (1 << 4) +/* CXL r3.2 Section 7.6.7.6.6 Initiate Dynamic Capacity Release (Opcode 56= 05h) */ +static CXLRetCode cmd_fm_initiate_dc_release(const struct cxl_cmd *cmd, + uint8_t *payload_in, + size_t len_in, + uint8_t *payload_out, + size_t *len_out, + CXLCCI *cci) +{ + struct { + uint16_t host_id; + uint8_t flags; + uint8_t reg_num; + uint64_t length; + uint8_t tag[0x10]; + uint32_t ext_count; + CXLDCExtentRaw extents[]; + } QEMU_PACKED *in =3D (void *)payload_in; + CXLType3Dev *ct3d =3D CXL_TYPE3(cci->d); + int i, rc; + + switch (in->flags & CXL_EXTENT_REMOVAL_POLICY_MASK) { + case CXL_EXTENT_REMOVAL_POLICY_PRESCRIPTIVE: { + CXLDCExtentList updated_list; + uint32_t updated_list_size; + g_autofree CXLUpdateDCExtentListInPl *list =3D + g_malloc0(sizeof(*list) + + in->ext_count * sizeof(*list->updated_entries)); + + convert_raw_extents(in->extents, list, in->ext_count); + rc =3D cxl_detect_malformed_extent_list(ct3d, list); + if (rc) { + return rc; + } + + /* Fail with Invalid PA if an extent is pending and Forced Rem= oval + * flag not set + */ + if (!(in->flags & CXL_FORCED_REMOVAL_MASK)) { + for (i =3D 0; i < in->ext_count; i++) { + CXLDCExtentRaw ext =3D in->extents[i]; + /* Check requested extents don't overlap with pending = extents. */ + if (cxl_extent_groups_overlaps_dpa_range(&ct3d->dc.ext= ents_pending, + ext.start_dpa= , ext.len)) { + return CXL_MBOX_INVALID_PA; + } + } + } + + rc =3D cxl_dc_extent_release_dry_run(ct3d, + list, + &updated_list, + &updated_list_size); + if (rc) { + return rc; + } + cxl_create_dc_event_records_for_extents(ct3d, + DC_EVENT_RELEASE_CAPAC= ITY, + in->extents, + in->ext_count); + return CXL_MBOX_SUCCESS; + } + default: { + qemu_log_mask(LOG_UNIMP, + "CXL extent removal policy not supported.\n"); + return CXL_MBOX_INVALID_INPUT; + } + } +} + static const struct cxl_cmd cxl_cmd_set[256][256] =3D { [INFOSTAT][BACKGROUND_OPERATION_ABORT] =3D { "BACKGROUND_OPERATION_ABO= RT", cmd_infostat_bg_op_abort, 0, 0 }, @@ -3772,6 +3844,13 @@ static const struct cxl_cmd cxl_cmd_set_fm_dcd[256][= 256] =3D { CXL_MBOX_CONFIG_CHANGE_CXL_RESET | CXL_MBOX_IMMEDIATE_CONFIG_CHANGE | CXL_MBOX_IMMEDIATE_DATA_CHANGE) }, + [FMAPI_DCD_MGMT][INITIATE_DC_RELEASE] =3D { "INIT_DC_RELEASE", + cmd_fm_initiate_dc_release, ~0, + (CXL_MBOX_CONFIG_CHANGE_COLD_RESET | + CXL_MBOX_CONFIG_CHANGE_CONV_RESET | + CXL_MBOX_CONFIG_CHANGE_CXL_RESET | + CXL_MBOX_IMMEDIATE_CONFIG_CHANGE | + CXL_MBOX_IMMEDIATE_DATA_CHANGE) }, }; =20 /* --=20 2.47.2