From nobody Sun Jul 26 13:29:04 2026 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1781600959; cv=pass; d=zohomail.com; s=zohoarc; b=YXiILKfA0JxeJkrX2Z4sRcHn2vUotiWt2yvhYf7hkRm/ZAVDFYuHt6NQ4g3jKr6eog4l48J4TKY6CcO89Z7QG7M9F9i76eTtp+o9DUf1MERQqjfpWBdVQSNvw5YOXM3YU5E9CAoC7T9ps9NxVoGFLlVnXTkgZuEDNxF9SQ/zYI0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781600959; 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=aF1CcG6m0SEEkGPYfX0jhMBdhEke1TMSrqlpHrhl7yo=; b=iCAnf9+Fy5aex9moy9MRnT39GgioqnJ3x8PJOXBjdgmY2WHJcUMPrRoBHMwYP7kDE7hAAAHKWCctzLi7B0YvmH7kTJblc+d5w0t/ktYTCPSp923FTZ0n2jDuJnpRh/ka6F/YaMr7BR81w80h/pFkYuVWa9coHd/6xhit+N/9Nxs= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781600959689576.32961922601; Tue, 16 Jun 2026 02:09:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZPmp-0002JR-FI; Tue, 16 Jun 2026 05:08:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmn-0002Iy-FE for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:45 -0400 Received: from mail-westus2azlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c007::2] helo=MW6PR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmk-0004O1-NV for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:45 -0400 Received: from DM6PR02CA0129.namprd02.prod.outlook.com (2603:10b6:5:1b4::31) by CH3PR12MB8657.namprd12.prod.outlook.com (2603:10b6:610:172::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Tue, 16 Jun 2026 09:08:35 +0000 Received: from DS1PEPF00017091.namprd03.prod.outlook.com (2603:10b6:5:1b4:cafe::8d) by DM6PR02CA0129.outlook.office365.com (2603:10b6:5:1b4::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.18 via Frontend Transport; Tue, 16 Jun 2026 09:08:34 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF00017091.mail.protection.outlook.com (10.167.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Tue, 16 Jun 2026 09:08:34 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 04:08:34 -0500 Received: from k-Super-Server.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 02:08:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dS8sL8+hHxqGUkLGA/ObZ54BYhdAWbLtgTzAlB/oPz1tAV4dQaN1eKkqZmxcNJ5ftr4BSFYVdopmWj41WeFnaOLUA78S2z3uB3JdycI5sfxxhPhFzsrbQGSfVLFor4CMohEcrsQ0FTNE40grk9MICGWqD+/RubwcFXcgBDNQKzQGha/9xNd2jz1waIJlne6jDqj1R0vxvYvD/v5UT/rnRkjJmtYB1fAaGp9iXd2MAFITGEm6IMrdD8+N3DrkxlnlNDJzEJc9qZL5iOxvIxJMV2G7VwzlH7vvf5/5xuDBX0ZfLmu4CjfIvPipaN0zEXSYlci/Bql/J1PBOlZ0+9uhIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aF1CcG6m0SEEkGPYfX0jhMBdhEke1TMSrqlpHrhl7yo=; b=v73DrPHlRwUowVtRiPU99zLMeE8JwyVM45W4wnwme+A200RiCzazPtqoFQFHmZRC/3m/ll0BZokiimo3Dfz51WZPZRPYTlAnoGwRPXHbI/jdol9o1llW65zp9y3euRjcfJDtaII6+1q2iIBXf7eHMhqTrtopWMl+lK8d5FExee1U2RhYH0IHqCQzJv0MB91wWk+iXfjc/v0YrQcmqMOmaDur6lWbcVPF8G8P27rRpAqn2yp6Zw9/o5RzZlLiWQwQwBPCiYPRYUjNBpeMRE7Cd/4rY/fSf4ybHQ59FLssD2ow8pDG9mEmehiXfCnFw+B7qHgW4IfyvVwZdrFEB2bf1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aF1CcG6m0SEEkGPYfX0jhMBdhEke1TMSrqlpHrhl7yo=; b=fjmghyGh3kxX+QxU1+tYaowsi7EVhBK8BinYkutn/zIQRS16mB0Nnq7Sk4DLNh4VLAeg88DRVJh2LAdkgv16eKmS85RDOqpu8M/DST/Rd5q1W1VyOyw7Q3Rp3CB7kaQI69Kuh/mD+r0nqv492unGIxdoKo7f01zNTTwoRcLJnMY= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: fanhuang To: , , , , CC: , , fanhuang Subject: [PATCH v12 1/4] hw/mem: add sp-mem device for Specific Purpose Memory Date: Tue, 16 Jun 2026 17:08:05 +0800 Message-ID: <20260616090808.3047939-2-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260616090808.3047939-1-FangSheng.Huang@amd.com> References: <20260616090808.3047939-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017091:EE_|CH3PR12MB8657:EE_ X-MS-Office365-Filtering-Correlation-Id: 13ea4e22-57d5-42e5-377b-08decb86d85b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|23010399003|82310400026|376014|36860700016|18002099003|22082099003|11063799006|56012099006|6133799003|43062017; X-Microsoft-Antispam-Message-Info: DSquOvaRy/gx9h/2kaA4oayfzHvhKDFeWohtRyaO2o6pxiuuETMIpNiimxhMMDAbWMBO5tlHF5J4vdm2cFE/R3mMSqwFkZXNMOhXII7NDYyOY7xbYjqQaBwDFwZ/hRSy7atgC8rQgynDDVLpsJbiIuX5Z/Adj46rUSBMo8UImgaaI2LqJby4ixOtEctFQ3L9C7y9qLy1KrMc+ZX8VR0VPjFbzNCGvP2H7j3EAP72oqLaE6M+oBP4zvEheHRhfBNlPScYWNyhFhUhm2MexJsf4DZChGySQ7lhz5/27K/jOTmo/vgE6IDub+/m8qMJGUsfYueCYmksyck88lxlMamP2a3Er6gCfc1chG9PoNI7JG1SAtFLq8WkvOA23k9oA8lq62WRDSAm50aOzoHumtPe50OiWj7TrM6+F09xlEjJ5MB80XNHHhojMjU6t3ez09fkIkXiN/ddeJU7aI3AY1tZdHGttAf38z+WqP3SKkTk/OARVsKpVQkeW2v6grRr+XX3PWD3rzcS1zdqCMtJlDr/6D0lxOFgyHFgjDhv2JMBSQYhYztQx/+M+hTPjyKwx7VHSJ6NEHblD+ZA7TMA/5rzBPSoXRszD24T9vjOYDk6yWZqJKXrLaLlc5O0lyr/RwML9l3HpJ+Nh5Mcb21Qsa1oMmBxMFnrVB7g/mSulhGqRnHPGStmSKMwe61MfYu8mikzEKuXP4qD3XU0FRvntMTdGeB7//gJBsOFalYxtRRSuvgzO2Hz3XD/gunQ8yj1fvd/es+yuYURUDw54/GsVShCJa2n7glFisU/IQQB3IonH1Q= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(23010399003)(82310400026)(376014)(36860700016)(18002099003)(22082099003)(11063799006)(56012099006)(6133799003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: i/ue76foo5y1Oc2ncUENcZiaqkeC0FG/l6o1JPhsNkhJACQcTwRz6WYF8F+wv7sbcIg5PWjgYquZ/rBpGHd7E+czMBtvz46o3+9neSAV3zdzDsikLJr2nHYpff+kH8E9jKbdoO3T8aogOah07YVDLAb0djoE+BpXw1HPS+F5oKzAvV1uhDtDqFnFVqufMwgUbsjUlvBtXm6+d15OekmeD6X2rkEx76kWBSYhgprB4V/z1Cb6kwyRXSUGBYvnLz7fziTBun779+em+b6KpmpC6mFR9hYFSGhs0YRIOr3hQa+F1JaXX9x44IAO/QFnlCQEM//yv0dNIziRPBLLFJ4j5925mH0K01/t1eGFjHRXiQ2ed6XI3XTW2v4vGdmvC4LNIo022Ut5MiGcY/9Flg2zSj19DbXNC4rMvy7V47jmAP1wqfV43Ebtq5e8fAy7zL1H X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2026 09:08:34.8716 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 13ea4e22-57d5-42e5-377b-08decb86d85b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017091.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8657 Received-SPF: permerror client-ip=2a01:111:f403:c007::2; envelope-from=FangSheng.Huang@amd.com; helo=MW6PR02CU001.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: qemu development 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 @amd.com) X-ZM-MESSAGEID: 1781600960643158500 Content-Type: text/plain; charset="utf-8" Introduce a TYPE_MEMORY_DEVICE subclass `sp-mem` for boot-time SOFT_RESERVED memory exposed to the guest with a per-device NUMA proximity domain. The device targets accelerator memory (HBM and similar) that the firmware hands to the guest OS as SOFT_RESERVED memory, so a driver in the guest -- rather than the kernel's general allocator -- owns the range. Usage: -object memory-backend-ram,id=3Dspm0,size=3D$SIZE -numa node,nodeid=3D$N -device sp-mem,id=3Ddev0,memdev=3Dspm0,node=3D$N[,addr=3D$GPA] The device is boot-time only (no hotplug). Signed-off-by: FangSheng Huang --- qapi/machine.json | 43 +++++++++++- include/hw/mem/sp-mem.h | 33 +++++++++ hw/core/machine-hmp-cmds.c | 11 +++ hw/mem/sp-mem.c | 136 +++++++++++++++++++++++++++++++++++++ hw/mem/Kconfig | 4 ++ hw/mem/meson.build | 1 + 6 files changed, 226 insertions(+), 2 deletions(-) create mode 100644 include/hw/mem/sp-mem.h create mode 100644 hw/mem/sp-mem.c diff --git a/qapi/machine.json b/qapi/machine.json index 685e4e29b8..777cfc81e1 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -1413,6 +1413,32 @@ } } =20 +## +# @SpMemDeviceInfo: +# +# sp-mem device state information +# +# @id: device's ID +# +# @addr: physical address, where device is mapped +# +# @size: size of memory that the device provides +# +# @node: NUMA proximity domain to which the device is assigned +# +# @memdev: memory backend linked with device +# +# Since: 11.1 +## +{ 'struct': 'SpMemDeviceInfo', + 'data': { '*id': 'str', + 'addr': 'size', + 'size': 'size', + 'node': 'int', + 'memdev': 'str' + } +} + ## # @MemoryDeviceInfoKind: # @@ -1426,11 +1452,13 @@ # # @hv-balloon: since 8.2. # +# @sp-mem: since 11.1. +# # Since: 2.1 ## { 'enum': 'MemoryDeviceInfoKind', 'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc', - 'hv-balloon' ] } + 'hv-balloon', 'sp-mem' ] } =20 ## # @PCDIMMDeviceInfoWrapper: @@ -1482,6 +1510,16 @@ { 'struct': 'HvBalloonDeviceInfoWrapper', 'data': { 'data': 'HvBalloonDeviceInfo' } } =20 +## +# @SpMemDeviceInfoWrapper: +# +# @data: sp-mem device state information +# +# Since: 11.1 +## +{ 'struct': 'SpMemDeviceInfoWrapper', + 'data': { 'data': 'SpMemDeviceInfo' } } + ## # @MemoryDeviceInfo: # @@ -1499,7 +1537,8 @@ 'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper', 'virtio-mem': 'VirtioMEMDeviceInfoWrapper', 'sgx-epc': 'SgxEPCDeviceInfoWrapper', - 'hv-balloon': 'HvBalloonDeviceInfoWrapper' + 'hv-balloon': 'HvBalloonDeviceInfoWrapper', + 'sp-mem': 'SpMemDeviceInfoWrapper' } } =20 diff --git a/include/hw/mem/sp-mem.h b/include/hw/mem/sp-mem.h new file mode 100644 index 0000000000..a8951b49e6 --- /dev/null +++ b/include/hw/mem/sp-mem.h @@ -0,0 +1,33 @@ +/* + * Specific Purpose Memory (SPM) device + * + * TYPE_MEMORY_DEVICE subclass for boot-time-only memory exposed to the + * guest as an E820 SOFT_RESERVED range with a SRAT memory-affinity entry. + * + * Copyright (c) 2026 Advanced Micro Devices, Inc. + * + * Authors: + * FangSheng Huang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QEMU_SP_MEM_H +#define QEMU_SP_MEM_H + +#include "hw/core/qdev.h" +#include "qom/object.h" + +#define TYPE_SP_MEM "sp-mem" + +OBJECT_DECLARE_SIMPLE_TYPE(SpMemDevice, SP_MEM) + +struct SpMemDevice { + DeviceState parent_obj; + + HostMemoryBackend *hostmem; + uint32_t node; + uint64_t addr; +}; + +#endif /* QEMU_SP_MEM_H */ diff --git a/hw/core/machine-hmp-cmds.c b/hw/core/machine-hmp-cmds.c index 46846f741a..686304bafa 100644 --- a/hw/core/machine-hmp-cmds.c +++ b/hw/core/machine-hmp-cmds.c @@ -279,6 +279,7 @@ void hmp_info_memory_devices(Monitor *mon, const QDict = *qdict) PCDIMMDeviceInfo *di; SgxEPCDeviceInfo *se; HvBalloonDeviceInfo *hi; + SpMemDeviceInfo *spmi; =20 for (info =3D info_list; info; info =3D info->next) { value =3D info->value; @@ -350,6 +351,16 @@ void hmp_info_memory_devices(Monitor *mon, const QDict= *qdict) monitor_printf(mon, " memdev: %s\n", hi->memdev); } break; + case MEMORY_DEVICE_INFO_KIND_SP_MEM: + spmi =3D value->u.sp_mem.data; + monitor_printf(mon, "Memory device [%s]: \"%s\"\n", + MemoryDeviceInfoKind_str(value->type), + spmi->id ? spmi->id : ""); + monitor_printf(mon, " addr: 0x%" PRIx64 "\n", spmi->addr); + monitor_printf(mon, " node: %" PRId64 "\n", spmi->node); + monitor_printf(mon, " size: %" PRIu64 "\n", spmi->size); + monitor_printf(mon, " memdev: %s\n", spmi->memdev); + break; default: g_assert_not_reached(); } diff --git a/hw/mem/sp-mem.c b/hw/mem/sp-mem.c new file mode 100644 index 0000000000..3b46cabc46 --- /dev/null +++ b/hw/mem/sp-mem.c @@ -0,0 +1,136 @@ +/* + * Specific Purpose Memory (SPM) device + * + * Copyright (c) 2026 Advanced Micro Devices, Inc. + * + * Authors: + * FangSheng Huang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/module.h" +#include "qapi/error.h" +#include "hw/core/qdev-properties.h" +#include "hw/core/qdev.h" +#include "hw/mem/sp-mem.h" +#include "hw/mem/memory-device.h" +#include "migration/vmstate.h" +#include "system/hostmem.h" + +#define SP_MEM_MEMDEV_PROP "memdev" +#define SP_MEM_NODE_PROP "node" +#define SP_MEM_ADDR_PROP "addr" + +static const Property sp_mem_properties[] =3D { + DEFINE_PROP_LINK(SP_MEM_MEMDEV_PROP, SpMemDevice, hostmem, + TYPE_MEMORY_BACKEND, HostMemoryBackend *), + DEFINE_PROP_UINT32(SP_MEM_NODE_PROP, SpMemDevice, node, 0), + DEFINE_PROP_UINT64(SP_MEM_ADDR_PROP, SpMemDevice, addr, 0), +}; + +static uint64_t sp_mem_get_addr(const MemoryDeviceState *md) +{ + return object_property_get_uint(OBJECT(md), SP_MEM_ADDR_PROP, + &error_abort); +} + +static void sp_mem_set_addr(MemoryDeviceState *md, uint64_t addr, + Error **errp) +{ + object_property_set_uint(OBJECT(md), SP_MEM_ADDR_PROP, addr, errp); +} + +static MemoryRegion *sp_mem_get_memory_region(MemoryDeviceState *md, + Error **errp) +{ + SpMemDevice *spm =3D SP_MEM(md); + + if (!spm->hostmem) { + error_setg(errp, "'%s' property must be set", SP_MEM_MEMDEV_PROP); + return NULL; + } + return host_memory_backend_get_memory(spm->hostmem); +} + +static void sp_mem_fill_device_info(const MemoryDeviceState *md, + MemoryDeviceInfo *info) +{ + SpMemDeviceInfo *di =3D g_new0(SpMemDeviceInfo, 1); + SpMemDevice *spm =3D SP_MEM(md); + DeviceState *dev =3D DEVICE(md); + + di->id =3D dev->id ? g_strdup(dev->id) : NULL; + di->addr =3D spm->addr; + di->size =3D memory_region_size( + host_memory_backend_get_memory(spm->hostmem)); + di->node =3D spm->node; + di->memdev =3D object_get_canonical_path(OBJECT(spm->hostmem)); + + info->u.sp_mem.data =3D di; + info->type =3D MEMORY_DEVICE_INFO_KIND_SP_MEM; +} + +static void sp_mem_realize(DeviceState *dev, Error **errp) +{ + SpMemDevice *spm =3D SP_MEM(dev); + + if (!spm->hostmem) { + error_setg(errp, "'%s' property is required", SP_MEM_MEMDEV_PROP); + return; + } + if (host_memory_backend_is_mapped(spm->hostmem)) { + error_setg(errp, "memory backend '%s' is already in use", + object_get_canonical_path_component(OBJECT(spm->hostmem= ))); + return; + } + host_memory_backend_set_mapped(spm->hostmem, true); +} + +static void sp_mem_unrealize(DeviceState *dev) +{ + SpMemDevice *spm =3D SP_MEM(dev); + + host_memory_backend_set_mapped(spm->hostmem, false); +} + +static const VMStateDescription vmstate_sp_mem =3D { + .name =3D TYPE_SP_MEM, + /* boot-time only; no plug/unplug state to migrate */ + .unmigratable =3D 1, +}; + +static void sp_mem_class_init(ObjectClass *oc, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + MemoryDeviceClass *mdc =3D MEMORY_DEVICE_CLASS(oc); + + dc->desc =3D "SPM (Specific Purpose Memory) device"; + dc->hotpluggable =3D false; + dc->realize =3D sp_mem_realize; + dc->unrealize =3D sp_mem_unrealize; + dc->vmsd =3D &vmstate_sp_mem; + device_class_set_props(dc, sp_mem_properties); + + mdc->get_addr =3D sp_mem_get_addr; + mdc->set_addr =3D sp_mem_set_addr; + mdc->get_memory_region =3D sp_mem_get_memory_region; + mdc->get_plugged_size =3D memory_device_get_region_size; + mdc->fill_device_info =3D sp_mem_fill_device_info; +} + +static const TypeInfo sp_mem_types[] =3D { + { + .name =3D TYPE_SP_MEM, + .parent =3D TYPE_DEVICE, + .class_init =3D sp_mem_class_init, + .instance_size =3D sizeof(SpMemDevice), + .interfaces =3D (InterfaceInfo[]) { + { TYPE_MEMORY_DEVICE }, + { } + }, + }, +}; + +DEFINE_TYPES(sp_mem_types) diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig index 73c5ae8ad9..39ddb36710 100644 --- a/hw/mem/Kconfig +++ b/hw/mem/Kconfig @@ -16,3 +16,7 @@ config CXL_MEM_DEVICE bool default y if CXL select MEM_DEVICE + +config SP_MEM + bool + select MEM_DEVICE diff --git a/hw/mem/meson.build b/hw/mem/meson.build index 8c2beeb7d4..f410d75475 100644 --- a/hw/mem/meson.build +++ b/hw/mem/meson.build @@ -4,6 +4,7 @@ mem_ss.add(when: 'CONFIG_DIMM', if_true: files('pc-dimm.c')) mem_ss.add(when: 'CONFIG_NPCM7XX', if_true: files('npcm7xx_mc.c')) mem_ss.add(when: 'CONFIG_NVDIMM', if_true: files('nvdimm.c')) mem_ss.add(when: 'CONFIG_CXL_MEM_DEVICE', if_true: files('cxl_type3.c')) +mem_ss.add(when: 'CONFIG_SP_MEM', if_true: files('sp-mem.c')) stub_ss.add(files('cxl_type3_stubs.c')) =20 stub_ss.add(files('memory-device-stubs.c')) --=20 2.34.1 From nobody Sun Jul 26 13:29:04 2026 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1781600944; cv=pass; d=zohomail.com; s=zohoarc; b=KKgOSJ1F3qsn3WJ4MOjQSJxqTzfEwW6/oQliLpVg4IjH7KpUY6aD/kAZTTUaZV0/BfTTTmicMehsVVZc5QFchFVh6bs4uWCTSoR0pXkWGvFmkxU89qBJpsk/mhsIC7PJ0eor8w/AZJ9uh4ax9XE/MOSm6XF3bSw+CiW0KhZvRBc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781600944; 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=8TWhbF3d0nvIsp9a3V1svbMHYOt+O61G6qdTmCLNzrc=; b=GEFDM8zeb75nGb2QN/ay0Ohbxpz386ucek22LzjH9mcXlMckp35JwyOL1CEjw9Y3f8qTRNxt1stUbrJ75PeAqCcKAHvRrjR2ulYIv9qqs3/aErl5drAcAQjaAtP0/XX+lzzOeQlbc/mBSLI/GCW116BCpZ/ZmO7FzDWNyZTB/1I= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781600944349113.74633645119832; Tue, 16 Jun 2026 02:09:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZPmp-0002Jf-TU; Tue, 16 Jun 2026 05:08:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmo-0002JF-PN for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:46 -0400 Received: from mail-eastusazlp170120007.outbound.protection.outlook.com ([2a01:111:f403:c101::7] helo=BL0PR03CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmm-0004OJ-Ru for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:46 -0400 Received: from DM6PR01CA0002.prod.exchangelabs.com (2603:10b6:5:296::7) by CY5PR12MB6598.namprd12.prod.outlook.com (2603:10b6:930:42::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Tue, 16 Jun 2026 09:08:37 +0000 Received: from DS1PEPF00017093.namprd03.prod.outlook.com (2603:10b6:5:296:cafe::c) by DM6PR01CA0002.outlook.office365.com (2603:10b6:5:296::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.18 via Frontend Transport; Tue, 16 Jun 2026 09:08:37 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS1PEPF00017093.mail.protection.outlook.com (10.167.17.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Tue, 16 Jun 2026 09:08:37 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 04:08:37 -0500 Received: from k-Super-Server.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 02:08:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IES/iiOZZqPSgzvC442VGo4qEjHoUXQ/hfiXW/h4WxLwAcuH93YpPEj+tKdZdIBQAS8jlfXuReOoG6mm1BU85urZlGyqYdtJgTUlVFMfhfLxMKvPs62U5G0s9oiGjmAWGqGscd7i5+kWldRx3Se2RaxjePUzKaVzD/e3fCd8fofbWeNfW5iThyW5b4EXRY9820qt1q8iUR/fYmvTSs2zspFCa8VNl7R5oX8knwnPQaijB+w4IWHy3Tb78iyFEGusA5BcKipPa1SEryxon2sFHJXsZOXCjkdoh6tuW18TUbYuwNueLtoCcEKUMXFJQhSDc/jvUhTj87ki93LjWTyXTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8TWhbF3d0nvIsp9a3V1svbMHYOt+O61G6qdTmCLNzrc=; b=U68zyAKJ4jVd1IfNXOYyX/2rNFbyoLM6iJZCGUEOAkPBQWATHZV6ypW0ZUGFfnw8bLUtXStPyux5JFW4B0LBAx4grKVZ6aNYgYsNLtRlvBex2G14Td9aByrz017zIPmMfcnkFMqO3lbSI5+06s5Wh4I9+vAehTLe3NgDkR6GTXVG01gidbzrnUsHxCzPiFRG007U/rHZJ4bdfVwmTUuJD92hXwn2+ZOvNoY7F/0zd8GTJKOFz9tSgyAawJhIIrg4WPGt6vnV0Zvp2XrFi5XkImdQZtAsfzfhXBeiVYkS7BtyondrtW/MdzKuhr1vsYDJ0MJrAPguwl6WnYaEJCgbRw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8TWhbF3d0nvIsp9a3V1svbMHYOt+O61G6qdTmCLNzrc=; b=Yno2uKF/CiSYvJk+svIOwQbHLNmvB4Lyp26/CWsypuYfxnwyj68d0D+V1aSUmo7r3FJlU8bERCAEhce6o/vlVOaRyCEmywXF5Pa1hN8+bK7o1s9mAgS42Yn2+QUMTFHNl5NdkxdyjDLC9HlRKpetj8unzyk/fiqEKWRVvUpjnzw= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: fanhuang To: , , , , CC: , , fanhuang Subject: [PATCH v12 2/4] i386/acpi-build: partition device_memory SRAT umbrella for sp-mem Date: Tue, 16 Jun 2026 17:08:06 +0800 Message-ID: <20260616090808.3047939-3-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260616090808.3047939-1-FangSheng.Huang@amd.com> References: <20260616090808.3047939-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017093:EE_|CY5PR12MB6598:EE_ X-MS-Office365-Filtering-Correlation-Id: f8cac50b-805f-4ae2-1603-08decb86d9b8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|23010399003|1800799024|36860700016|376014|22082099003|18002099003|6133799003|56012099006|11063799006|43062017; X-Microsoft-Antispam-Message-Info: IM0+ZHvMTMYYm9Z2G6ODrma1C5/FCisI8yV+ySAJepoUdrNRYN5u598K42OnDxVOpuR4C7nRRsKELlPb42NLNCEISA8OblIzVRb0HQYBETLJyt0ZlY8qJX1XOpZpfEaAidc3crt4GEe+MB2PoDL3VyUpUuZnLfxHoy1BXX8pcJxw7NoHWQOccPoTDXDiT+AWpQijP0Y4ME38JClm0bJV8WeluehurJ37fek/quQbFTmB2BTHL1yy3wZOWk1bX6X3dq19JDDjNfjnIFUs/yA40GcY5YijWbwe/t3Xt1u6VoGKDowpAVQvXYeiL3RdCxL/qprMpLShV2n8cSB6CQHj1N+kbDbbOiQHGUVO8WsQ7wA9Gc1nbFhiCXqpV/awkW2teezmVh8pIGvHslcEJSU8tgToiprxzlHa4xHm2gtnRpiJ4NvCwfAHUty2/AmpyY58mFlk5aAj8a8BMokHX7GHs6ZUPUaQiWlG0zjPecAnQvTPVIOrA+iqS/Kf51gC6NyvS9r49TttwuAEcjntPDwDqYWC0rYBaDf7OcLjzcoSAVVtQbLKCPBobkvkp6e/QMSZB5UGLlEfpWBSIXPjHJtTYOquPUdAKWIx5sM+iEG8oI9XSNWa1pRsXuWQsycpdHI9j6D319IsbUAgIzV5r+u8uAMyXJwe7tAQYeIGVASaMUhoSVTeiAovjXZYN9FJWdxgdWy/wZNsCqoUaOgK0azMrq+2r4mxj1+yfG1zN3EBgQwpVgH4IYkgg2W4eh0eUFbwCix5XVCNBMXgWx+O4vmrHQ== X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(23010399003)(1800799024)(36860700016)(376014)(22082099003)(18002099003)(6133799003)(56012099006)(11063799006)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VYqWWV/ozYC50EmafwgF1EHTkoWcqgSUPfYkoGQ7nVsXd3SLiwnCGQfKWiGm7l43s6leq4uuLN5cogHWeS+ORcn8KD429pK0RB32uCaUZogyzs8arJMkQinJRrhHCON41WkknP289VeuUQkki8Q3PFFyNMtwoLscPdaNCYN2YmJhtYV1LB0bkWqfyoT/mpkpBpoqAJTFGMwGP7Mw+wOKk9OJ7mh2uwPIdRB6johFHmq2izkepJNIwfU8qUexl5iAdapfBjb9WhCv1RLv9POMHBYO+J9Q4JOSItr/n2oh/6kP5dGv2qfv17tQS42BhlLpraUjRoNirIuTxgVxxF4ebiM57yfVHjnbitorGY8fHb2aRe+tgaDtadTy5FFMQKzpSx5c+5c4yxgLaQxKvL8Bmc+kXmY/tp7Ttq0rKo9ANtaFx5EogDzuyDNQVvn5HYRD X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2026 09:08:37.1585 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f8cac50b-805f-4ae2-1603-08decb86d9b8 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017093.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6598 Received-SPF: permerror client-ip=2a01:111:f403:c101::7; envelope-from=FangSheng.Huang@amd.com; helo=BL0PR03CU003.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: qemu development 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 @amd.com) X-ZM-MESSAGEID: 1781600947586158500 Content-Type: text/plain; charset="utf-8" Restructure the device_memory SRAT umbrella entry into a per-kind partition: each TYPE_SP_MEM device gets an ENABLED entry at its own proximity_domain; the remaining sub-ranges get HOTPLUGGABLE | ENABLED placeholders at the highest PXM, preserving the existing umbrella convention. Signed-off-by: FangSheng Huang Reviewed-by: Igor Mammedov --- hw/i386/acpi-build.c | 96 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 4 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 0d7c83d5e9..db144b5706 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -52,6 +52,7 @@ #include "migration/vmstate.h" #include "hw/mem/memory-device.h" #include "hw/mem/nvdimm.h" +#include "hw/mem/sp-mem.h" #include "system/numa.h" #include "system/reset.h" #include "hw/hyperv/vmbus-bridge.h" @@ -1346,6 +1347,96 @@ build_tpm_tcpa(GArray *table_data, BIOSLinker *linke= r, GArray *tcpalog, } #endif =20 +typedef struct { + uint64_t addr; + uint64_t size; + uint32_t node; +} SpMemRange; + +static int sp_mem_collect_ranges_cb(Object *obj, void *opaque) +{ + GArray *ranges =3D opaque; + SpMemDevice *spm; + MemoryDeviceClass *mdc; + SpMemRange r; + + if (!object_dynamic_cast(obj, TYPE_SP_MEM)) { + return 0; + } + spm =3D SP_MEM(obj); + mdc =3D MEMORY_DEVICE_GET_CLASS(MEMORY_DEVICE(spm)); + r.addr =3D mdc->get_addr(MEMORY_DEVICE(spm)); + r.size =3D memory_region_size( + host_memory_backend_get_memory(spm->hostmem)); + r.node =3D spm->node; + g_array_append_val(ranges, r); + return 0; +} + +static gint sp_mem_range_compare(gconstpointer a, gconstpointer b) +{ + const SpMemRange *range_a =3D a; + const SpMemRange *range_b =3D b; + + if (range_a->addr < range_b->addr) { + return -1; + } + if (range_a->addr > range_b->addr) { + return 1; + } + return 0; +} + +/* + * Emit SRAT memory-affinity entries covering the device_memory region. + * + * For each plugged TYPE_SP_MEM device, emit an ENABLED entry at the + * device's own proximity_domain. All remaining sub-ranges (gaps + * between sp-mem devices, leading and trailing padding, and ranges + * occupied by other memory devices) are covered by HOTPLUGGABLE | + * ENABLED placeholder entries at PXM =3D nb_numa_nodes - 1. + */ +static void build_srat_device_memory(GArray *table_data, MachineState *ms) +{ + g_autoptr(GArray) ranges =3D g_array_new(FALSE, TRUE, sizeof(SpMemRang= e)); + uint32_t hotplug_pxm =3D ms->numa_state->num_nodes - 1; + uint64_t region_start, region_end; + guint i; + + region_start =3D ms->device_memory->base; + region_end =3D region_start + memory_region_size(&ms->device_memory->m= r); + + object_child_foreach_recursive(qdev_get_machine(), + sp_mem_collect_ranges_cb, ranges); + g_array_sort(ranges, sp_mem_range_compare); + + for (i =3D 0; i < ranges->len; i++) { + SpMemRange *r =3D &g_array_index(ranges, SpMemRange, i); + + if (region_start < r->addr) { + build_srat_memory(table_data, region_start, r->addr - region_s= tart, + hotplug_pxm, + MEM_AFFINITY_HOTPLUGGABLE | + MEM_AFFINITY_ENABLED); + } + build_srat_memory(table_data, r->addr, r->size, r->node, + MEM_AFFINITY_ENABLED); + region_start =3D r->addr + r->size; + } + + /* + * Cover the rest of the device_memory window that no sp-mem device + * occupies. Keeping it HOTPLUGGABLE preserves the umbrella entry's + * role for future pc-dimm / virtio-mem hot-add into this window. + */ + if (region_start < region_end) { + build_srat_memory(table_data, region_start, region_end - region_st= art, + hotplug_pxm, + MEM_AFFINITY_HOTPLUGGABLE | + MEM_AFFINITY_ENABLED); + } +} + #define HOLE_640K_START (640 * KiB) #define HOLE_640K_END (1 * MiB) =20 @@ -1482,10 +1573,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, M= achineState *machine) * providing _PXM method if necessary. */ if (machine->device_memory) { - build_srat_memory(table_data, machine->device_memory->base, - memory_region_size(&machine->device_memory->mr), - nb_numa_nodes - 1, - MEM_AFFINITY_HOTPLUGGABLE | MEM_AFFINITY_ENABLED= ); + build_srat_device_memory(table_data, machine); } =20 acpi_table_end(linker, &table); --=20 2.34.1 From nobody Sun Jul 26 13:29:04 2026 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1781600953; cv=pass; d=zohomail.com; s=zohoarc; b=Z5PGcCo1qi6DFyyUg84Kl6Zxddil5WY8o4/PncV3yMmYfO62YgHtziYTDfcFUGYLkDJZcUyq6XsY+KlCAAGsg59IJ9FH8UHWMwOKPiZQ9Z3oFhQBDwL6Y6T3yqIMt9GYGVlcgDKNFRCW7x1ge70bNd2OSrAVeUZQEMrjuSp13yw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781600953; 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=NHqu31DCMg5uLcqIE+KC1KBbRygHlagmkMo7e4N71Bs=; b=lPhQ6mmWmPhNGjc1rtX4kp1DGq6T1jAD1CoWXZMMvuFUv/ALeVM4OKj8x0P0FIvyW1Rx+jv7RvHs1LWxDjSID60MJWutotvTb2+guEm0B0tHlNm8G0O+w/Pb/6j5GA83am4iu5td5rmf22EdYBcByvlNsGGhGUSUJ0KwK5bWWCg= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781600953608391.44777585784254; Tue, 16 Jun 2026 02:09:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZPmu-0002Kb-4J; Tue, 16 Jun 2026 05:08:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmr-0002Jx-TF for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:49 -0400 Received: from mail-westus3azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c107::3] helo=PH0PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmq-0004Oj-26 for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:49 -0400 Received: from DM6PR06CA0077.namprd06.prod.outlook.com (2603:10b6:5:336::10) by MW9PR12MB999210.namprd12.prod.outlook.com (2603:10b6:303:301::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.15; Tue, 16 Jun 2026 09:08:39 +0000 Received: from DS1PEPF0001708F.namprd03.prod.outlook.com (2603:10b6:5:336:cafe::31) by DM6PR06CA0077.outlook.office365.com (2603:10b6:5:336::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.18 via Frontend Transport; Tue, 16 Jun 2026 09:08:39 +0000 Received: from satlexmb08.amd.com (165.204.84.17) by DS1PEPF0001708F.mail.protection.outlook.com (10.167.17.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Tue, 16 Jun 2026 09:08:39 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 04:08:39 -0500 Received: from k-Super-Server.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 02:08:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nZKmLtTzlMxPNMiUuTiwc7F8RJwRMJb6iFo8Y/fxk0kjpewVf1zboLBh2sFFmVJk2gFa7i2hMb0mLDvV9zkXy+OKZYY6hHAmxghgttZfGrUOpmlRfr08IcHwkzPKZ++4LoNIsnwnh4K9+UYuCYYnBpziIjZTCzuSVRa51XSpkT+ANVGRPBQTOZD3h5/If4pMwQVZTTs/2lg1dUoS8UtN1gTsyVRtCf+hB09zKM+P2HBd1mSm5Rwa9DzrJtQr5hZws9FUFfLxY4MerIDoOMmXfUVj81UkaPQQTiiCpu/8HOX0hXJa4VvgLctwK4gQ/e2nZl8ye1qYB+8ahuyBCK5e+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NHqu31DCMg5uLcqIE+KC1KBbRygHlagmkMo7e4N71Bs=; b=RUtHJwaHww9Ah1YtC4Pbsq6/qUJA61T+Hx8l/5TpalJ8eBsBU5fdTk4H/AL2ejvBY+GvpkBOLl/PoABTl0TWZztYzgAbOql/LE0yAn88U8FgSKjWLKupLGfshF1Fq9rsCEV9bq6tVy732xtMgla+uiuya/dbjewF0q2Jqvfl9iPwq6QjNyGs4NW67PnPCRX9Hj2iTMYVlm+0+OdtEHOxAX9IoTfBHpVlQ4IAulm9rSKHaNw+TeiqG7Ycbca0Ikx0vYI/+HrBxVC8hxTKwbE0cKkPV5JsPz1cVO2kHlBq5ROiCHTXu3Qwll5DUY2lYfvzGPIPe519SgGAeYWsLMHzGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NHqu31DCMg5uLcqIE+KC1KBbRygHlagmkMo7e4N71Bs=; b=R+d242VJYfylOfMjA5WK90Iy+DCEeqFGFIJq1ZOiuaRn3PeVApZPCzyWY+4LtxoVbCpGZUq6oI4lWsKmf/j/dimsht2vHRTfckHpkbVy88AbqxT32nhqeMvbikqsFEnTbJDO1Cn0AhN2M43uApV4nw9sTwSwDDp971A8CnGJxKg= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb08.amd.com; pr=C From: fanhuang To: , , , , CC: , , fanhuang Subject: [PATCH v12 3/4] hw/i386: hook sp-mem into the pc machine plug path Date: Tue, 16 Jun 2026 17:08:07 +0800 Message-ID: <20260616090808.3047939-4-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260616090808.3047939-1-FangSheng.Huang@amd.com> References: <20260616090808.3047939-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0001708F:EE_|MW9PR12MB999210:EE_ X-MS-Office365-Filtering-Correlation-Id: 0dc35f0a-e3f6-483d-b950-08decb86db21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|1800799024|82310400026|36860700016|376014|18002099003|22082099003|11063799006|56012099006|43062017; X-Microsoft-Antispam-Message-Info: vQaJ4SQKuANZEVdgiJEApbeW3REn3xHg4UAj4e/kicpQAPMVDCkWM9ZfiHFR9eUmwA7VZC3asIQkyxKWcXS7ln75Rgql2o0sd9y9twXdBadiyctENjPdsEcrHnxj8ms/XeEWdXJQdVbx9guPeupIMJ0dh9KYlqQDD0w5FHM+M3p+nwsTeSsgi1rHZESN1AFU8aMtPHS35ckPFH4EEhERItfW4nMDOXUqfx3jeUYgtweGkFxm0McYTKOguS7/dfYpKiyiIqtiSTSwDmNc01Q0pLlcy0kQmpTeZCfbwBQxVkBDdMdX/Y2tjfU4LSmA+f6J5SejYIVWK64zjDok+f0uGKXd9kGIuICWylPySl11W9w/w1DNhwmf0si100LYzCXk3Xxbn6KezVN+Cf825m5mAWwBKGDW81wHUihYakHZ4R7NjUWNE6kvlv1DcMgCUsBfHHP3et9Sk3ZmlYc0v1ODOcatRtzWoi34k5GL202HQAKykV9ZGe3VTBjjXoQi7YaxNhQ1wSA4M4IL5CpDroceZym3GsPTTJT6VSMjJkGXIOGCFig8TtcTAHLDLQkOIuDmUwXPN7rblLBxwEd8pHosYQI4wPoip0rh4SYIvsmK1Bg98LkbQFT3ccxoT264smjxKv1k1UKVV3b75QfVhHUmPX9+3uUTTTJnSiB0YG44yBcvRcCp7Kp/8AoapzLIWvezmuwQKC0d1adPn2ahG+ZTmMFiNSV+MRnIIN7diOl/folgVes7cozJNkUH03Z3059YiSi7HjdPZu9+cUfxS+CWaw== X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb08.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(23010399003)(1800799024)(82310400026)(36860700016)(376014)(18002099003)(22082099003)(11063799006)(56012099006)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LKiH0lsgTYG5trUvt98pHwB3QnQfJ+31J674R6TeXjziUYBkjszm6Ro1VVJzHHK/ZtVMkLAhB2Hre4Xvp+ZzsYQuOyCU0mvAll6QaD+aBUssgXjb5KiFZgkMhML4XOHAzRg6UHJzoJUi6tGVgWuqpI1ev3VNjp5FndwbBMFm4i6RH59ezZlOiqpRpQXBxNLq5vFN6HlZj3SWes2GzUtc08W/nBghPhwYGXZ8d7qY2Bym7Br9PbGXFoRDZlZueUosVlmnRP2jJl/AhmainaHT8OJ2WzaOool29TRz/vxldXQefAgX+/JUqddcAWiYLy6XxQ7fCbU0EcSjTC4FXMkNZemmZlPQJ6a7NShK9NnXgiwhfpWC/hbZnxGCM325zcLIg+UQ1uUF+g2BFeY7o1CPqOZRS26zfUzYmZ6klx7ajrAGmkLGYHJHphHrPGonTVHB X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2026 09:08:39.5211 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0dc35f0a-e3f6-483d-b950-08decb86db21 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb08.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0001708F.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW9PR12MB999210 Received-SPF: permerror client-ip=2a01:111:f403:c107::3; envelope-from=FangSheng.Huang@amd.com; helo=PH0PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: qemu development 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 @amd.com) X-ZM-MESSAGEID: 1781600954484158500 Content-Type: text/plain; charset="utf-8" Add the pc machine hookup for TYPE_SP_MEM so each sp-mem instance is placed by the memory-device framework and reported to the guest as E820_SOFT_RESERVED. Signed-off-by: FangSheng Huang Reviewed-by: Igor Mammedov --- hw/i386/e820_memory_layout.h | 11 ++++++----- hw/i386/pc.c | 36 ++++++++++++++++++++++++++++++++++++ hw/i386/Kconfig | 2 ++ 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/hw/i386/e820_memory_layout.h b/hw/i386/e820_memory_layout.h index b50acfa201..6ef169db9c 100644 --- a/hw/i386/e820_memory_layout.h +++ b/hw/i386/e820_memory_layout.h @@ -10,11 +10,12 @@ #define HW_I386_E820_MEMORY_LAYOUT_H =20 /* e820 types */ -#define E820_RAM 1 -#define E820_RESERVED 2 -#define E820_ACPI 3 -#define E820_NVS 4 -#define E820_UNUSABLE 5 +#define E820_RAM 1 +#define E820_RESERVED 2 +#define E820_ACPI 3 +#define E820_NVS 4 +#define E820_UNUSABLE 5 +#define E820_SOFT_RESERVED 0xefffffff =20 struct e820_entry { uint64_t address; diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 7b6ad97e5a..ec3459389b 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -63,6 +63,7 @@ #include "hw/i386/kvm/xen_gnttab.h" #include "hw/i386/kvm/xen_xenstore.h" #include "hw/mem/memory-device.h" +#include "hw/mem/sp-mem.h" #include "e820_memory_layout.h" #include "trace.h" #include "sev.h" @@ -1283,11 +1284,43 @@ static void pc_hv_balloon_plug(HotplugHandler *hotp= lug_dev, memory_device_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); } =20 +static void pc_sp_mem_pre_plug(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + MachineState *ms =3D MACHINE(hotplug_dev); + SpMemDevice *spm =3D SP_MEM(dev); + + if (ms->numa_state && spm->node >=3D ms->numa_state->num_nodes) { + error_setg(errp, + "'node' property value %" PRIu32 + " exceeds the number of NUMA nodes (%d)", + spm->node, ms->numa_state->num_nodes); + return; + } + memory_device_pre_plug(MEMORY_DEVICE(dev), ms, errp); +} + +static void pc_sp_mem_plug(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + SpMemDevice *spm =3D SP_MEM(dev); + MemoryDeviceClass *mdc =3D MEMORY_DEVICE_GET_CLASS(MEMORY_DEVICE(dev)); + uint64_t addr, size; + + memory_device_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); + + addr =3D mdc->get_addr(MEMORY_DEVICE(dev)); + size =3D memory_region_size(host_memory_backend_get_memory(spm->hostme= m)); + e820_add_entry(addr, size, E820_SOFT_RESERVED); +} + static void pc_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { pc_memory_pre_plug(hotplug_dev, dev, errp); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_SP_MEM)) { + pc_sp_mem_pre_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { x86_cpu_pre_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MD_PCI)) { @@ -1324,6 +1357,8 @@ static void pc_machine_device_plug_cb(HotplugHandler = *hotplug_dev, { if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { pc_memory_plug(hotplug_dev, dev, errp); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_SP_MEM)) { + pc_sp_mem_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { x86_cpu_plug(hotplug_dev, dev, errp); } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MD_PCI)) { @@ -1368,6 +1403,7 @@ static HotplugHandler *pc_get_hotplug_handler(Machine= State *machine, DeviceState *dev) { if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) || + object_dynamic_cast(OBJECT(dev), TYPE_SP_MEM) || object_dynamic_cast(OBJECT(dev), TYPE_CPU) || object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MD_PCI) || object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI) || diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index 12473acaa7..e27d8816e5 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -84,6 +84,7 @@ config I440FX select PCI_I440FX select PIIX select DIMM + select SP_MEM select SMBIOS select SMBIOS_LEGACY select FW_CFG_DMA @@ -113,6 +114,7 @@ config Q35 select LPC_ICH9 select AHCI_ICH9 select DIMM + select SP_MEM select SMBIOS select FW_CFG_DMA =20 --=20 2.34.1 From nobody Sun Jul 26 13:29:04 2026 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1781600950; cv=pass; d=zohomail.com; s=zohoarc; b=cGkNaA7aHufSpB+H9IGge//xU8slJj+1PbbNWEx9GF05HqoLU5dhKUHbYqdkroIUUDGLpPIWJnq+EO75ljT0kqJZ5BGWqS3V5JoV8bgMHgELkPdAR7Lzyu7RkziVg14R/Y92dG8ngG8SLFLoOlCJWbBeQHRqDCnT2iDvCnm3iW8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781600950; 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=g+lfvpqP+ijTA2UH9NjVUI16UYYo0kAH1hunDM/bi9g=; b=ipGf9WYqiR6K91C/qoGZtSnLpCG1PT6JToZEVQoaQ7HHoiJzF+3csR0uyNME9ngo3Afq2i9jGzwH2lmI1/8r4k8JsNZVyRmCI3nLyouQG9XobgMipP6MpRpe8jqJy8qwFiuQtwOcnM13HRhoXGn8Yi+l9zNxNs58TRxRuT1E69A= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781600950023372.8919708953108; Tue, 16 Jun 2026 02:09:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wZPmu-0002Ka-1Z; Tue, 16 Jun 2026 05:08:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmt-0002K8-9o for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:51 -0400 Received: from mail-westus3azlp170120001.outbound.protection.outlook.com ([2a01:111:f403:c107::1] helo=PH8PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wZPmr-0004Ot-56 for qemu-devel@nongnu.org; Tue, 16 Jun 2026 05:08:51 -0400 Received: from DS1P222CA0009.NAMP222.PROD.OUTLOOK.COM (2603:10b6:8:454::15) by DS7PR12MB6005.namprd12.prod.outlook.com (2603:10b6:8:7c::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Tue, 16 Jun 2026 09:08:42 +0000 Received: from DS1PEPF00017094.namprd03.prod.outlook.com (2603:10b6:8:454:cafe::51) by DS1P222CA0009.outlook.office365.com (2603:10b6:8:454::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.18 via Frontend Transport; Tue, 16 Jun 2026 09:08:42 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DS1PEPF00017094.mail.protection.outlook.com (10.167.17.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Tue, 16 Jun 2026 09:08:41 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 04:08:41 -0500 Received: from k-Super-Server.amd.com (10.180.168.240) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Tue, 16 Jun 2026 02:08:39 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q5yxO50xj05alJAykGGmdoIYyTAw5yuvAIWVkNTNqBvN6D80SbEWbOKcbbgXCExJfZ1dY5bBTSg7f7PDG7SVOTCbSzeenXLMXtI0zJIm3VNXvh72oE1yLSHzWII8Bj6R89mux6i0G9mXFHvz+6LZG01YhJMpGTLUQgzb3GO8vCDk5leryEf2qUH68wbI2cKXVt/POg8LhQ3yRY9x1ouRN9CnOs2pdhsMEOR9lK6fEAfUClFRuBzTEszGs6oHHSMO5/qOfJ1gFPct/RP5R3F7srHKuGHtKv/hDv8uWUPGOJwww9zGMPHn/sbq3Whs1Ac+l5uNHKrSDi++DwthcaBPQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=g+lfvpqP+ijTA2UH9NjVUI16UYYo0kAH1hunDM/bi9g=; b=G52wBvIoM8D3Zni7b7rA/MiBiaosPv9TNNuwsgfKY3JZl7+eyWT6sqESMJe7p9HbU0GiMYm9O6seap9Kiwlcy8/Tt8Kadw9Gkcm+brV+PD7tqKC8dz0X/ONNiL5YOE5DBYsOIK+7RZMejOIp4PhpeO2ZMuZD67kvRPj2V0u0Mk6IrNHwywUv5X9HgRMK9eOzvlN42esw/KQfB1iPtikgKEPrY0j7fuR+I6XcCtT6yNj7qxdiDP/SNqT7chiWFItB3BC8Jit2jLZNtZKEQsU+gLTzRdNnP4F44vxEgIibIHrxhTyoSP9TbypGnVulUJ3iK/GSX9SD430A5IiEWDn7LA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g+lfvpqP+ijTA2UH9NjVUI16UYYo0kAH1hunDM/bi9g=; b=J/440lCVxtKpmS/eJTfl7/YbglHv0T4woB3TTfnncQ/yymb6fa3vQiNmvImoXvt50H2dWWx/6Bfp3obi2ApgDRy8cpNdni0azAgzLva15yC+WruUGVy3dseJmp6jVyRjga0nwt+KGt7QkC3kgRm+iiotRo8vTU7EY4EbqRKeDMI= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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=lists1p.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C From: fanhuang To: , , , , CC: , , fanhuang Subject: [PATCH v12 4/4] MAINTAINERS: cover sp-mem under Memory devices, add R: tag Date: Tue, 16 Jun 2026 17:08:08 +0800 Message-ID: <20260616090808.3047939-5-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260616090808.3047939-1-FangSheng.Huang@amd.com> References: <20260616090808.3047939-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb09.amd.com (10.181.42.218) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017094:EE_|DS7PR12MB6005:EE_ X-MS-Office365-Filtering-Correlation-Id: 26381971-7f4c-4e8a-e93c-08decb86dc76 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|23010399003|376014|82310400026|1800799024|11063799006|56012099006|18002099003|22082099003|43062017; X-Microsoft-Antispam-Message-Info: zRXlVWuEX0fO90Iz3XbMpN3sLa7A4SkEUsEWoXbH49i7d+zLTAqbJzI6mEFnMEFTJ5Mld+mQGHOWKIpMn9GxG42o0GXcqD5wb+kSehZno9eY8iJGTQz3sc1VLburUNZgXhzX5m7k1prW73pyqSU5PN/ywGwKmV2YiTRnFAzvyt+MRdYyCGm0QtgKEpWDvQp8cdRbeCisrBgxW3VrCKdRX88J8vf0odyjmKCVDPANxI58kBW/SCDiqJNi5oakh3oZH6QBnXOuUrzh5TS3V57ltPrMZX4fbsnmKYjXXLAQoyUdODYH9Gyla+qAEmAucowWKGntHdXAaSWWTtTBy1dMBUAcj9QJkzFX6pD0JeDnstPDBgmVHijkedjoNqQJxxubJOpd5YRFDxbJSCllWnE92leWdq3jAbABmWMbQ3UnMUsDtgpPy0fUVSewkvZKc7hHQX9oRMs6OSoPpwmjJcLEfB5infGNTP/1vn1rW1AHuYJcyyhbQ8UdvFtFHrAno5bj5TB1jiXy6b6HCvUUhUObHyRDLD+ltZ5QzIOozmy/SqzO0ryLVgIcgT6u4nDowMc+BYQGehElR25Yhjlqeuc4M9I8hraac4+5WfN4hY+BijKw2WaGJLSwU9oeyTO+//dcRH42meyQLpqdDWzUULxQ+R+yUebzaV48Y0U4UG5LwcWIm24DVDYUWTyKIPBOlbmtfwOZyZtxTWnhspVzRo+RwrWaRsUhV2r8vQtdoks12vkj/AmrDbHDVFMVI4sSNRbxO3YImxsAIcuI9bEZtxC9RyDBcs5QCzvFwXqEHsDNE5Q= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700016)(23010399003)(376014)(82310400026)(1800799024)(11063799006)(56012099006)(18002099003)(22082099003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ftTFRbCkfEUPiha92/mJYkpA8LCuHeeMjzJFyLc8AYNFhFlMdUwccEWNpFt4xdBRAXsubEbA8OH/ZzM6iNPAh2/915saLbddW6eow+vuBPV/C3SgMEzpdO4pLWif7EAPblbi+qRbXHYmE0NRTKkQCObOUfFD26pdtbP/P5IWkbxWGZTfgtN5gIYVn1yNw4ZmpGO3I+h1f2mjVovXDr/T5hHJtLEgocwcZhi6Y1M8aGQsnbg07kRiWZtd6b4K+6mwCxfgb30d3PoOUDQZCASLhMh7sTQiOzOkBTQZRMa3OS7wqjkbCbCAdqa2thcGjUdDqHSWKxn/14ZXi8HYXMxU/m/E2HBA10cEadx85w0AC+R8Z0ZExfb+07YXIufaWuOVaZxWWSw6UXEdNBjuGSysfsEd7enWyNmMkWVkmkWbMvVUatM6/0fc2HsRyhU1pYZF X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2026 09:08:41.7645 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 26381971-7f4c-4e8a-e93c-08decb86dc76 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017094.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6005 Received-SPF: permerror client-ip=2a01:111:f403:c107::1; envelope-from=FangSheng.Huang@amd.com; helo=PH8PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: qemu development 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 @amd.com) X-ZM-MESSAGEID: 1781600952510158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: FangSheng Huang Acked-by: Igor Mammedov Acked-by: David Hildenbrand --- MAINTAINERS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 2b5b581e17..192b5337d2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3346,13 +3346,16 @@ F: scripts/coccinelle/memory-region-housekeeping.co= cci Memory devices M: David Hildenbrand M: Igor Mammedov +R: FangSheng Huang S: Supported F: hw/mem/memory-device*.c F: hw/mem/nvdimm.c F: hw/mem/pc-dimm.c +F: hw/mem/sp-mem.c F: include/hw/mem/memory-device.h F: include/hw/mem/nvdimm.h F: include/hw/mem/pc-dimm.h +F: include/hw/mem/sp-mem.h F: docs/nvdimm.txt =20 SPICE --=20 2.34.1