From nobody Sat Jun 27 08:27:11 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=1781172481; cv=pass; d=zohomail.com; s=zohoarc; b=TKW+O3U/4oqSfmL+VDupvTLDT/fyEJZAt7rnKEDA/1phNwvNnORVD+Dk10DWsTN0IIDbSZTyO1x3FoZlfo8wv+LXCrDZOeFptVQrrgyk6CdwbfyMhwNLMdjIE8bUDoK+sohhhWhnaJ8xArErsgB6kgIzGF6TWT5qZ0KvCG1T9Kc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781172481; 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=6K453U82JZV4zO9LexDUGY0+vNplzTuYqsUtWbK/dT0=; b=Ke47f9U/L5xFRIUqpar9gchmPLDXlSr0kPArRP3rqh5GVP7MVFqerAWGHYHLEvldRUYMn+B65/gM6uuVJ8qHrqYbNuy8chuMHOPmTWfrCgejX8lUmPfw8cXIsT5wnIbGpY2al7Q0WVucz/fMdnuOu3TQdg4eBEdLGapKjKWulPI= 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 1781172481708539.7851320362724; Thu, 11 Jun 2026 03:08:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXcJg-0001kj-7A; Thu, 11 Jun 2026 06:07:16 -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 1wXcJa-0001ge-ME for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:10 -0400 Received: from mail-centralusazlp170110009.outbound.protection.outlook.com ([2a01:111:f403:c111::9] helo=DM5PR21CU001.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 1wXcJY-0006zx-1n for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:10 -0400 Received: from BN9PR03CA0119.namprd03.prod.outlook.com (2603:10b6:408:fd::34) by SA1PR12MB6797.namprd12.prod.outlook.com (2603:10b6:806:259::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.13; Thu, 11 Jun 2026 10:07:00 +0000 Received: from BN1PEPF00004682.namprd03.prod.outlook.com (2603:10b6:408:fd:cafe::3d) by BN9PR03CA0119.outlook.office365.com (2603:10b6:408:fd::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.13 via Frontend Transport; Thu, 11 Jun 2026 10:07:00 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004682.mail.protection.outlook.com (10.167.243.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.7 via Frontend Transport; Thu, 11 Jun 2026 10:07:00 +0000 Received: from k-Super-Server.amd.com (10.180.168.240) 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; Thu, 11 Jun 2026 05:06:57 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Vq4J2eWVFbTWon6A9KY1HRCdRUKCb5Q/efgDqwe46pZdOlLLUmvSQOEpHcGRdmdWiTJ0oUcL08kxImJsON7mNAsqseOmQAL0U9ayHcCXIj5ps2ayPwfeQ1KInK55IWy8qVr23+05+nWaQkEcn7Zq4K52RHup8ES7BzFFFsB4uX8TR4dPjEHy94v/bCfIhNpz+a74B1GjmJL0+WDoNYZAXNphK8VGlpKvRVXFuZ6POD7WQEkH5NQzRUpP0eRry7NqEH9GcAVRr5kLPjJFQDKdvfvLoEeJCNc2CygfhWadWGbpOirnyw/59aF4uJhNfwDpJnAny+w/4VAYZsX42u50qQ== 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=6K453U82JZV4zO9LexDUGY0+vNplzTuYqsUtWbK/dT0=; b=YzXkB17LDMtEWaLL7//97yqYjIK+Y68VqJwqywkKCg3fbevZniFlxOJqgeBe7oDHvd7yjzwWfj8N/1nEs7WpirwaVZagM16peTSKwyCsCvX2U6AlvUaQxqn9H/SIvErT78HhlHZx6V0bmui7o/TQ+eMD/G2u1ddLmMxC2yFl6IewgHWyIAiVhvLzoFl7e4LvY8CfLtHVWBSlrZ78dlMATkZCYr+Jcju1trHgTXIoNrqRvp/9VlwbyntLe5ZDKm+QzU1FnGKJifE7XhM6Yz1kHJx95WUgbv1bbwemSeEfYwueZjXGanX2HO8irlcPpvSbLziVKoqDqRWUX4BCpRViSA== 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=6K453U82JZV4zO9LexDUGY0+vNplzTuYqsUtWbK/dT0=; b=Fg9dgWPzLpPlmAGeHHnjfGwQPfQ5vM5Q2L5UHnDEpg0jNGPqORU+Va+/abAaKkAlsxkBDZUCWcalqzkYYgHnw9EB//zG5BsvwarkFiUwcxHBf5Daljxet07bfnpK90HxviMcDGz4jbNcymGB6fS7PuJTjP13rJ93QZZfblK4Prc= 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 v11 1/4] hw/mem: add sp-mem device for Specific Purpose Memory Date: Thu, 11 Jun 2026 18:06:34 +0800 Message-ID: <20260611100637.2460507-2-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260611100637.2460507-1-FangSheng.Huang@amd.com> References: <20260611100637.2460507-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004682:EE_|SA1PR12MB6797:EE_ X-MS-Office365-Filtering-Correlation-Id: ebbc005a-e9aa-4e8a-a49c-08dec7a12dab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|23010399003|82310400026|1800799024|36860700016|6133799003|11063799006|56012099006|18002099003|22082099003|43062017; X-Microsoft-Antispam-Message-Info: 7yTcG0M0bzCGw/Z1FMI1DfL3v3LgzaeK/YcdO+Um4GQnpyPeJSZIwa8Clu96qNEm/9qEiuNxyvwGf+QjHmG5g4ZcGw25xuVNRI1eVqo38Zb4Wz9Crp8CvMvJ/131Q5WshMfYicE5LQP0dGZUE9vG6Te7Ey3H1044SRlOWGW0VzBVxe1swKA0h7LsF7N8jjadGVnR64oiQ2JhvuZWkfsLr9wRoz5AJE+fYL0uvP9OXiAahCojE3Mhpvf8/mgyGmsSh25aISjigjHsWrGMEllDCWHG2J8nLducDvvbbVfc8+WSwWmYdctStAPftWHbXGFFfYuNevDpNd/+7vYVp44dWMVx1AQxab0s/5qDoQRNMXGk/SQjokwF06ADkawD7qhhmKu8AC8U7Ygg5r25hU16wUvp8+JAw2h9vW/S6fAITh2i69mZT9jd3wXNxxU3OK4BE/EV6AgkEb0SESLiuuem2bgy2HcGMRi6i3lFGCbj1wBfBf5+oFVYdLkgNa+kG7XO4X5G/LDeL5N6XTbbcKBj+UqPLheDH/FJvKGIcpNqYT0kU5LCEbQtpw+7p8z1KwFSDPrWs/ieO39q2YBf6DvVvfxz3FvxQwlku5bAnw3u/DITpBL6jSK1LDC3IvA19YCX3JJc9w7VxG9AqrA4UyWWtmSsD4hu4XX3a9LJDwapA1hA74Jci8o0h4QhkEL25OvEEwEEAopU8Itex8ZZGJNCaNGjICwpSWxS9O9VZN+MxfK0BYKx02v9urOb0uizDO4WNDF3b2wqMkGtVNkwpGHTkv4Jw26WUonzE25hn43skX8= 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)(376014)(23010399003)(82310400026)(1800799024)(36860700016)(6133799003)(11063799006)(56012099006)(18002099003)(22082099003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5pVQT9v/4Cx96R7Uf1oSfYw+Vs5KruFTwjrJz6iCQ2asZSHNxlx5XxGPiWrycLY57wejIXfrQ+IhP78HypTQ+32IFFCN0ABbJ1dNkS+J1X9FnQVnz5ACmgW+c30bRACo/pU4Dd8ysgpLLlE7BzdlUz0bEZXMnF30n6teaRajjdIukArFUrZUAqX2iMguTgAmazRvLKLW/sbyhpwYchCvljcFlwcoCcIW838+7WbUZlnXiJw9mXaet2B19xgTaBNTTviWzeie0/qVtau4REUacPekKeCw8yyU6ynZghkvcdqaPslPlTDByEir0DqDAzrdQZgVso+fKYYac9SNQSHatGfJjJaC+VPWDK7fUeKMkm44qbjYEc8Le+BmQJ2yv4BOsnoU7u/tZE2tHvmHoWtCpLXy++bLNTzX7Gbo83AG/JQ6Sng37OfRNwgRPGUZu0y+ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2026 10:07:00.2680 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ebbc005a-e9aa-4e8a-a49c-08dec7a12dab 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: BN1PEPF00004682.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6797 Received-SPF: permerror client-ip=2a01:111:f403:c111::9; envelope-from=FangSheng.Huang@amd.com; helo=DM5PR21CU001.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_PASS=-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: 1781172482297158500 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 | 35 ++++++++++ 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, 228 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..5c0b6ec4f8 --- /dev/null +++ b/include/hw/mem/sp-mem.h @@ -0,0 +1,35 @@ +/* + * 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/mem/memory-device.h" +#include "hw/core/qdev.h" +#include "qom/object.h" +#include "system/hostmem.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..d0244a8f70 --- /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, "'memdev' property must be set"); + 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); +} + +/* boot-time only; no plug/unplug state to migrate */ +static const VMStateDescription vmstate_sp_mem =3D { + .name =3D TYPE_SP_MEM, + .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 Sat Jun 27 08:27:11 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=1781172461; cv=pass; d=zohomail.com; s=zohoarc; b=mQvRjJ/xXn9k9/Bo70cw+sNa4246KOduLpq0Nt87c7k+yIuoawJ1kITId/v/g/wwTqu5ZXwVqcRqGSgnwq3IC80hd+xEb2CkdogWarZ8yazzP3uTYZbFKNKDf4AIEOI4pwYJNvsCuGsakudd3F6paJw2IMEdP+VWrwN0pE/7aW8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781172461; 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=hNJlp/SvELZfs1fk8ewfhdLcnO5OR9r46DTPpzLODBJKkgJzSAfFpQcgMnps5KxiUiBm269ziihLtH0VregGg9K82KqLHS9b9jEnYn7YDt8odGikdscrjx1SoS7WgwKkrYoSMbeOOhP1Qxc02vybjkiqy9pzv9Nb1Y5eqdw9lus= 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 1781172461851195.31334952462078; Thu, 11 Jun 2026 03:07:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXcJf-0001kf-04; Thu, 11 Jun 2026 06:07:15 -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 1wXcJc-0001gr-1W for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:12 -0400 Received: from mail-northcentralusazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c105::5] helo=CH5PR02CU005.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 1wXcJX-0006zr-Si for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:11 -0400 Received: from BN9PR03CA0122.namprd03.prod.outlook.com (2603:10b6:408:fe::7) by DM6PR12MB4466.namprd12.prod.outlook.com (2603:10b6:5:2ae::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.17; Thu, 11 Jun 2026 10:07:03 +0000 Received: from BN1PEPF00004681.namprd03.prod.outlook.com (2603:10b6:408:fe:cafe::a8) by BN9PR03CA0122.outlook.office365.com (2603:10b6:408:fe::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.12 via Frontend Transport; Thu, 11 Jun 2026 10:07:02 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004681.mail.protection.outlook.com (10.167.243.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.7 via Frontend Transport; Thu, 11 Jun 2026 10:07:02 +0000 Received: from k-Super-Server.amd.com (10.180.168.240) 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; Thu, 11 Jun 2026 05:07:00 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=v4/ZiIj30CgxkPeP8+yrhUWDxrDlmWxra6RWOhYABfneRxG2p8ghfRQfFxgZxylAEWUDWGsM9bUAYZpIlE9zQS2YAugyKkVqdhox0L+Guwzoh1nkM5dtwHtUgHfPpuFVIyiB2d2oQxgEfNP8PU/o6V7lJ6r5AF9BjfK5DbOG+Z4cY5YOkMSi0H29rBKzEtfPFsXGihJEzD3dkinMG9sUSKUPpJpiPlVGFO826+DW4Ndx3olcmIvp5DcqIZuENlUfJOfFGvv6DatUFP5VYpKSNQcJCeNP7EwXhvMmeoVaw42X+gLqctoQYmzbwZ/e+u0qtrScSkfgp8NlDT+tkBLmyw== 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=WQ7OjcdwbX2hiZ9EtD1YVFhu0dkgUIz6UXBiUl/V/GO2Crw5HTWn+bq3Ay/TtxQqb+VU/DMzTRJDOkMssxAbNooq2hT7id8f8R4cCMN6sx1M1CEkKLoIQ7aYUZY8mCXlMSt5fp8rW8dJirrLCbQFTTb2c1HdXkKCF8ufibpA8+93uXsCgZrRlPicdKWG4qwF17y8D/72WaUkl3hnjKubBuy6E3nxiw91DmSjbe5SO0f0VfJHtnpl2B0qdTYrd1G6ECmUdTA+UsLZh/zE0Sw2JChOzVplCjKvUnwlpiBCQ3FRLhGw+aZlNh90IYK69FrZBgPqG2lHDgZlqUQFjwSxGw== 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=xtLVc1nHiZCdHmq1MvaMY3sBesxYoE0t3FOmJzphA8NLhbch50AIPtKniS3+9oxZ2W7BtAI6R+NS0WOx7MKGBuqYfgXr8u9AI9l5UWoKphHu8r63WkIEMwDPGd3VC0egFWAhNHEWAXg4ZYeH2gQYKL95LaRKaj2r8bVC1oYWXH0= 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 v11 2/4] i386/acpi-build: partition device_memory SRAT umbrella for sp-mem Date: Thu, 11 Jun 2026 18:06:35 +0800 Message-ID: <20260611100637.2460507-3-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260611100637.2460507-1-FangSheng.Huang@amd.com> References: <20260611100637.2460507-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004681:EE_|DM6PR12MB4466:EE_ X-MS-Office365-Filtering-Correlation-Id: c456d5d4-ae28-419b-4354-08dec7a12f0f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|36860700016|376014|1800799024|82310400026|6133799003|11063799006|56012099006|22082099003|18002099003|43062017; X-Microsoft-Antispam-Message-Info: Fzxq+zAb2pPSNpu5OveuePImdBaITOy81qACRTKl/+A9cJMUrQk9X/OXJAtUJeXGUrqO3+s4FNis7eM3aUf29KWbcjVD5txwMs1b21F6E07L9dRrSNFoHU62BOAiz/9ykvPO3KiwAAcA6KWnXa93A0qkpyIqgxlW0R1IRfmQJ9VPIkGmInvflCaJj9cbgAWLhAlQwDM1+63SUYa5ZQQuFGgkyfOuSK4wbpzjrl8Lk1DIFCkSUfh+8U/mW878Oj6sFQXGq4A7QVjEr5IqV/5SuZNmV4pHhJuJckDpRCsHL0I/MP0TUCVPagJw7OWMZ5XBNI25cHCNCNGYGnyobVwuxjOBDW+1KGeUcVrFUgY2eMh1wuAZDGBl3zh3z28uO8TUDhNbrazjNU7yzg4gwG1DCMAX6fEKhnZIDeFS/iPhAt3ltAzqIPhthPaoVGO3G7F2JjltC66/BrQxQtkRa8UlmnColI/HJVqukqi/JY7oY1np5ch9mrIxcSP8g26f6K12YijqJgeUYHjgPGlPKJ6UrICrAt8kFbwQI6VKjSTG09hmTw+Tz0ubDhH7cRPd/B6PHpm1UGU6yFfFblS84TVu+btDRiMfTCg12v9ruJoTVBVO2jNrJK8JBqDJCsumbtWAcTkoGi+t0l5gM4faOOe7boAblclEBTJ+l90VQtnTFS3JOrByoXrg9e6vTTQDhCCp8+29CbeSxByyyqdTE+vZ3v1lu95dIP2xPfhaFrQJ5R0Ly0znfbrPHc6rj2c6ce98qFxbZYw3kBJcrc9l5T60vQ== 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)(23010399003)(36860700016)(376014)(1800799024)(82310400026)(6133799003)(11063799006)(56012099006)(22082099003)(18002099003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nrgp3NVmg6Ri/v3HYEsb/r0HPN/wLzt8F+QWKQqjoaY3T9jHBo5Nrwmu8biL778DfXtzXzNvnouGcAaPQTLqIH9jjy7rd9NlnJoygtDhSNgvn41qVp7vwK1h1XzsXOTh+K2snXM9ywEzzW8ETxyFSofzfYH9Fda/es3sjqj/Hv1nM+pgUV7bYoGs/uLLRl6gYAI5E1+9W+KPBL+vmKKSgIH9UMNkn+9A94MkrZiN0/NmbFvmZLUE+SzBNGMvUMdm5OfjynUOOJRjEFCol1sW52QMj2MaeguNfok+lwAcTsyodexltdAHSEBBpdWV2s2Vcfy1js4gfxeN3r8TZFahk70TonS6vZ7Q7gm0FUJZEAd68ygZeSdupYrXf1ZZaPbqo4BsK+uDfFrQTCh4+yudsfQ1WL8RNvjXsuKQi6GLfSIY5h7RykshjIGY50DVqubW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2026 10:07:02.5958 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c456d5d4-ae28-419b-4354-08dec7a12f0f 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: BN1PEPF00004681.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4466 Received-SPF: permerror client-ip=2a01:111:f403:c105::5; envelope-from=FangSheng.Huang@amd.com; helo=CH5PR02CU005.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_PASS=-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: 1781172462610158500 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 --- 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 Sat Jun 27 08:27:11 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=1781172478; cv=pass; d=zohomail.com; s=zohoarc; b=bl0/XXEqtEQWjqeSloaPG4xXztbJYfAwRlGkRdZvfNzRzYpL4EVB2ddVzHurwWr/BFnppshXNFFyIufzoq/v4mdPrDX3s29jQ3RYxJV2jxyON+XbHoM1hHJFyC9JAOVCVpx7+YsvznunXJyNtmvgpmbq+cNPnKdeWdpRD7/6s6E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781172478; 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=FgiNW+4HQjTliAXo1tI3X23y1VEInZIzHk1dhieInF9HMJOx/UlSrdZD9ywY734mq80L4KX0Evn9MwO/vw0j+A6CPIX+09N0cg0s91Xn2kF1EQK1djHzlGdmRo/ywFl2q59wCZw0q2JjUIG0UhyZT/E+ZIFO9DqPqOv6etz/jB0= 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 1781172478510178.2829555655744; Thu, 11 Jun 2026 03:07:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXcJg-0001kn-6Y; Thu, 11 Jun 2026 06:07:16 -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 1wXcJc-0001gt-1a for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:12 -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 1wXcJY-00071r-S3 for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:11 -0400 Received: from BN9PR03CA0091.namprd03.prod.outlook.com (2603:10b6:408:fd::6) by SN7PR12MB8104.namprd12.prod.outlook.com (2603:10b6:806:35a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.17; Thu, 11 Jun 2026 10:07:05 +0000 Received: from BN1PEPF00004682.namprd03.prod.outlook.com (2603:10b6:408:fd:cafe::72) by BN9PR03CA0091.outlook.office365.com (2603:10b6:408:fd::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.113.13 via Frontend Transport; Thu, 11 Jun 2026 10:07:04 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004682.mail.protection.outlook.com (10.167.243.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.7 via Frontend Transport; Thu, 11 Jun 2026 10:07:04 +0000 Received: from k-Super-Server.amd.com (10.180.168.240) 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; Thu, 11 Jun 2026 05:07:02 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QohvlXI30V+nKcFtmjI3DW6HosjnFFRP9lOZyAfozAjON1S+1qnkJ5WVJH/2eOOLWBKCpSFxyBsAnw2tUcznpwi5oDeTgCLoHdzude4OSne/L8ZBQfJDyzS0NEdJbBHQ+o6HI8o4gr85AiXKahoWT7li7zutU0bmHK/6c5jxwLRZsEa/wG/whEEIy9XPQ+jR/yySEcAz0N/zwJrBPwBoVrc/pX5CSvCUSf00iFbfk2JmPV79PzuzTlAG7QW2wZ3Ko182jJRbRjQ5EwZfwpEEsH18fS5Qrdtb7dRyI/IvLtO7crCGn2So1/SCkPd+Kmv/rWzNPAnlCqfROoevz5uX5g== 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=Oan1awhqOT8Hh+dtPpScNsIJYPmBOj+F8tCkuTzWJluKFwB8zkeP/wZEf3gp15rrpZnu0XzT2Z8J/60ABWFOLJ6oIpLWd68kp9mrhLlt84muuKsLShxDStkp4gphhF/A67sch6YCUi3siEd0mxSrFKYMPWtafT4iGaBef/IIx3u8j0+6Kg1Dk9X1EegHUTNLaJw7NBduNzwvJ/0jrvPWrnGMNVH0IVzU+CBsbz19aN0ta6JfLQ+wJuXDYl5j3UiOl0gHorYShTqxogQ3mtSyAsK1ES52TN3k6g8JYeVzcfuJPDc5EgP7pJNAEtvEW0cYWRzVLFZLFurr8UEH7nkUug== 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=L+juw7DN76j0ArUjOd2MUrShyD8oJEMClPxrOfRhdIcwDMbw2qpdHYKdmW0gZ4bRX0EvxfBO2IRVMHqxSlK7fZ3vt+wyA8stMaEMZaI1WJm85IKt+zZpQdhuQ3aAO+L69tKKsPtgNXSiCa8iTyIvjVVCUCjsbKERCeSIyUuUkWg= 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 v11 3/4] hw/i386: hook sp-mem into the pc machine plug path Date: Thu, 11 Jun 2026 18:06:36 +0800 Message-ID: <20260611100637.2460507-4-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260611100637.2460507-1-FangSheng.Huang@amd.com> References: <20260611100637.2460507-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004682:EE_|SN7PR12MB8104:EE_ X-MS-Office365-Filtering-Correlation-Id: c1cedb22-d8c0-4604-5593-08dec7a1306e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|1800799024|82310400026|376014|23010399003|22082099003|18002099003|11063799006|56012099006|43062017; X-Microsoft-Antispam-Message-Info: qdrPJO311oRsGla6JudXEpnJdsyVj9AueJSWGEjX8HYnY/8Jvf8WPH4TvyjhQ8PRXaOOBH4Tt7jB7BZtPKcJHCVikg8+IDyBsfll0m5zqoIpoOSFlQoyGPgMP6uwj1+E2ibHbNZEQ12K7hqdVGj1C9lDvH2SKhCgClXWp+MRrHaQW9hKlEvQhagW8wME9r6B204s6OhgbANd/Eq/L63uV1zgynqyTXTt/0KjZKXwJ7wNEOpcQoTx6SBJWEZMLZkZvM1UD09wcfbuFp4Tdk+bnIQEUDjzILApd1o2up1pVUC3UC7w0U3drkMXdOe0FImxLbytA52LrZr8bWekS9mp2OA76dBsNOvarPex4kLjIewEmG2i1E6OI5dkP3GO9spvMKWTdey94GVz4YzYaxNDm72oZ4RHdsMCj+7h+s7N+xfFDnyT5S45/mdppo/LZuOMKUqIOEzodKo3ww0j7GAM2fjXSWQ580OP4kt7d0S5q7iD0rDPAlmaeJ8clikGl0TyDZMQDwlXGSwwMG1E9osoOwspRJ01Nllnme6OvJWpSACPydCYOJ/ZhI+5lYVVexzAIvM3sxJEBVxD7n6NfL256kCfkii7E6afq2CaDfL4YjW58EVvf+nJIYyAcBIjSlk33lJ4V3GoIukXhs05PXKhKCbsT75ULMOPQNV6HahI9HgqCARO8vDnSVUAhZTbOm7YlU33YfO5UY4f1zLaY3Q9ewdswQgxoa9NF2lbPqbUsEs7PEN/XJ5YobQiHc1Z7hwTfbe+ztyHrgM0cRpLNCMK9A== 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)(1800799024)(82310400026)(376014)(23010399003)(22082099003)(18002099003)(11063799006)(56012099006)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GnyGezJ2jHUEscT5SN11C5XNKAqibWaWrxlZ2kgEyUBxDVdyuKqx6Hor7prQwzfXImUEJiJ0VDEllB53i3ETRk9e9Ymde+638KrUTTqnWQBK/7fYwkK1RPC+QdhIWxdXVSp+y8SO0MzEEAAE+PjPG0tKRxQOVbGwyaQlwb3C2nkYO7dGEp3WopnCMsYnxY5BYHgcinvZxCw1NtLfWPklchmqVPyvsFcH4FQpak4fUriogvGsG0rid3A4OfK1eBIw0bFooK5oqYHZA1K5il2wE/B5+8jZ3mi72JPz0Sn5XM+aBBRWit0dDbw5tDzXpwL63FiuxJvkk1OIgc7ZyIUSrL8Msg04pF5Ima6MlDfTcPnKh0VIN6cbiZTQauhU02t3ghZ4GMc+yOMm+HpbbMnY+0oZ2PF0dH4D4CFfaKWX+fgW2MiKSg82Ky4d+kZi5vbR X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2026 10:07:04.8946 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c1cedb22-d8c0-4604-5593-08dec7a1306e 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: BN1PEPF00004682.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8104 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: 1781172480329158500 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 --- 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 Sat Jun 27 08:27:11 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=1781172465; cv=pass; d=zohomail.com; s=zohoarc; b=hedj+JiznXMHa0m9zlnfxcguhWWRbQV+jhK9wg0LtdMjJhu62ZQV6RRPw6KUHxMszqj0DjC+/v/FI6dO7k/PGwVKB5+Ens8o/JRsKpytGheJvy5iuSqOdhKsZNMwjYFJYh9ayb2KGIOey1cUTF4BJ8FJ9qbP4awFKKbA56pCRiU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781172465; 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=SMGYAl7+N8SzoiEY6KKg+rfN6dscNHkFuaT1cf2lpFE=; b=LTuBbXQeEtHVZto3E2mj76N0RSnxKFXy4c9c/Sz8xWhtg6IjkhafChZk4QKocze88ndD9KQM/DP8yEZ6+a9ORm75uM7EP8RoYGYNSyVc3WDevv2+5NH7emRO3m1bAOm1ZvlvePFeJDs8ShUQxr+lRLVENTpM7KPZO9g2aDYS2tk= 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 1781172465580315.1610956949505; Thu, 11 Jun 2026 03:07:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXcJh-0001lb-T0; Thu, 11 Jun 2026 06:07:17 -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 1wXcJf-0001ki-0i for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:16 -0400 Received: from mail-eastus2azlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c110::1] helo=BN1PR04CU002.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 1wXcJc-00074D-9B for qemu-devel@nongnu.org; Thu, 11 Jun 2026 06:07:14 -0400 Received: from BN1PR13CA0001.namprd13.prod.outlook.com (2603:10b6:408:e2::6) by SA0PR12MB7073.namprd12.prod.outlook.com (2603:10b6:806:2d5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.13; Thu, 11 Jun 2026 10:07:07 +0000 Received: from BN1PEPF00004683.namprd03.prod.outlook.com (2603:10b6:408:e2:cafe::ad) by BN1PR13CA0001.outlook.office365.com (2603:10b6:408:e2::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.5 via Frontend Transport; Thu, 11 Jun 2026 10:07:07 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by BN1PEPF00004683.mail.protection.outlook.com (10.167.243.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.7 via Frontend Transport; Thu, 11 Jun 2026 10:07:07 +0000 Received: from k-Super-Server.amd.com (10.180.168.240) 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; Thu, 11 Jun 2026 05:07:04 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OsFYpRvHdOwGrmj964YANtLhNW8yrSS05sBIXWP/tts8wgcrhnFXv2dXOIluaZkWOjjViitYkdFauHSl7gqu76mL5opB6puiudyXlGBkuGhHez4noHT5/0gt58TDBKVWvwYO9dl8IFQPQikkDnMhNFNwp2R34qbGx7cu0hSfliYH5KygZtbhf5nSIgOmNfh4Hw71Jlpy1KqGDt0K5g51fKJh7JME/QNm94mEUQoJn5lmvs7fhL4Rni2BOzumW7bBxDaf+5YeIPzkx1PB81Hg1HkG3iI+6mSzuqEiLx1Uupn9iJHmuFgye06qsatgwphDhKGirIwsncwpOpSiYExzTQ== 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=SMGYAl7+N8SzoiEY6KKg+rfN6dscNHkFuaT1cf2lpFE=; b=ffCCUkwhUgidiVxGrWtxkAp4Xup8TGsgNqafoJA9zQ98NFeRXmcQs1aJl685NTCjxsPzAVXUuXdccwD71sUOHuf0Zk5UGZUj4DLyiC5SiZHmP2rBzkUfBd/qfu6vl1wVWy9GUWdzZrKUuVTHcckrvF3isbjc7I/nfrgPsRn0PiacB5vSM/nmLMAi5GJRn0fy2iY5FE1NSB2fzGsUndbv+THI7lANYyfKx0tDoX3y9h0/EpU425wg7pILuWbIaquUyBSicZI8qxPj6Uzof0lxfhjYAeY878u8ZCgkFWWG379+KQjqtfBKuGxzi7GP61+NGX7FCiogPz7fss+E+oUhgA== 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=SMGYAl7+N8SzoiEY6KKg+rfN6dscNHkFuaT1cf2lpFE=; b=4+wmZRdHrMjlawwEQ1worN+jcdSMciwmTl4n+hGgLNo5JbZs1ENqYlLwzCTleinkpJddgmj8xnQQz5QxS4ZLXk/kdrVG91JQOZ6W9scKoBtXyxDd5uqehtfcwPm/o8/27lX9dC27SqhN8MIlNJBFI82hJEQlJpWx3NX6kxivxDM= 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 v11 4/4] MAINTAINERS: cover sp-mem under Memory devices, add R: tag Date: Thu, 11 Jun 2026 18:06:37 +0800 Message-ID: <20260611100637.2460507-5-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260611100637.2460507-1-FangSheng.Huang@amd.com> References: <20260611100637.2460507-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004683:EE_|SA0PR12MB7073:EE_ X-MS-Office365-Filtering-Correlation-Id: b7f57eb8-cec2-474c-aa73-08dec7a131bc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|376014|36860700016|1800799024|82310400026|18002099003|22082099003|11063799006|56012099006|43062017; X-Microsoft-Antispam-Message-Info: zMYxpJqX2643D31Xi2nCeMGNnWnR2Bmw+erbElHxboe3YswV1wppDtUJCSfmraLXJgAV1MDYlZK3YTjWBPuV97ydhNauFgT97w/SOtzl4KxUZL56Jh+wQeKsuRplHTSei8Z6fmHAOsVbiqsZShI0XjB4bEnkGKt6ONE4WZZvrNOiqirPhErTg9dDipt53cxuxZ3zAWcl5rUcRMmO4XIWGRSvve73m9XPwtT3EUXXIKcoRXPCpKpYGbs41Sz4vbXVPwDqq6AU5y3XNZ6YdFA9kHQ2EgbeyPd6hIjdfWBFhGIwupyHs3mJ8TbXY77Qi1nLzWMCaPmD3leqG8Xh+ACpNZ6+d3msEENhpQeocznjSj47LXKFKTRosFftUDrXMYS/3sm4jCHxb5JAop4YdKOoFUoXkptRLyHn630144sJef7VEFPhk7Z8wVF455KYlRfAE7vLZbFlKlkPFeX1WXK8KS1/1K/+OcPAl+gvg91RQe/HpO8elZYfwNoshksHurWVZ6opMR3tKmLELHEY/+Q8t7/7H6XI4VowORuG0Z+i4P5M0oUMUCPUzKJBjegjcBeI348jgOxEYMhSqkqAMp27ffx8Xlz9GPYK2LmKfZhxz5NxGcA8cTR7cmCPtQzDyyFtSCfMc/y8rSNG67Im/ZOMryC9/Pp8A/N4z0YpY2RgP+glG3kEmsLw0Wbr7q42AZDETPwRYKH+CKj05Y2tj2bGNIhRHUoNq2FQvBT2AoMcXxWynVZ95c8sH2ndsHFjs1HERn0U6ExcBcVbnf49ybOxAxA9TZ6yEfG9tHBkMWJ0+RQ= 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)(23010399003)(376014)(36860700016)(1800799024)(82310400026)(18002099003)(22082099003)(11063799006)(56012099006)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AUwW+IaRwGTGoR/W4GbTkCGA9HNJvCaX3Q8fA01AzquIE8/vFR2xLkC0ozporjLV/8AS+6aBJMXaLguyJzmSre7qTm8Xzcp31WtdeQyf1qKN2dWyxNEpogi13bmE8PeuTXJqT4cUjsCL7Lmb9gYh6IHv9G1+EHiqyRLK1EKNQcPyORf4Iy5ttNlPbpLHz0ljzEFvnmoqdXxy2WFKVYuvS0EgPbTeDKjicc1jR1xFWxxrkf9y0HDSmHKAjQjibndgQXNvdjM/+rFrgs8RqCVPW30CO0mc3BVDw+x50diog07UjA9U/GaHEPn+a6egxMFX747YIjD4lV1lJ4JYYEwXnozBUe5Ga7cKMo0peNL3zjtOyIGZoFaW7H9q8J/P1ZmzFZFty2rrY+S8ayCemcLm9eYpOlZepHjTxUXtqZ1An3BxOqrgkeqHoQARQSV57WL5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2026 10:07:07.0905 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b7f57eb8-cec2-474c-aa73-08dec7a131bc 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: BN1PEPF00004683.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB7073 Received-SPF: permerror client-ip=2a01:111:f403:c110::1; envelope-from=FangSheng.Huang@amd.com; helo=BN1PR04CU002.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_PASS=-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: 1781172466462158500 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 748ec77beb..0e445932ba 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3361,13 +3361,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