From nobody Sun Jun 7 22:18:59 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=1780656441; cv=pass; d=zohomail.com; s=zohoarc; b=IU+SXv90eRVMP1iHSGlZGS/ZMnpc1NB71jRKoPjO9GZQOawHmFgq2gryJ0iWGCaK0LH0KJEEV1839hHRb+n+W8c64sChXAaGPdOmjjBgR9aZeR66uB8+ei+fod2VxZyYxyULTlnIoZex3/x4vIfFKGeHJJOvYEpjs/1K4OfCTP0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780656441; 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=ozsTOAvXx4e7HGxaQk5y2RGCnZd/ViGM9GWOSiGQ+nE=; b=NdcCFq+WZU+fTqtuCzvkSBUq5YfRQloYZyc0Xfh4kWO6Sllj2DP4WONZBFH1DRGpX+kKZeLHpb42K+b7twjHp6kMGdTviU/hU43DZjfKBKSiaID92VhYatqwcA3VuGovtFzHWT5fjuNUQmcxNFA/Bjpnat1WVqCvArC7JpOR0Ic= 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 17806564416681016.1414016517402; Fri, 5 Jun 2026 03:47:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVS4b-00028M-6n; Fri, 05 Jun 2026 06:46:45 -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 1wVS4Y-00027W-To for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:42 -0400 Received: from mail-westusazlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c001::2] helo=SJ2PR03CU001.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 1wVS4W-0004Ti-HA for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:42 -0400 Received: from BY1P220CA0018.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::8) by BL1PR12MB5970.namprd12.prod.outlook.com (2603:10b6:208:399::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 10:46:32 +0000 Received: from SJ1PEPF000023CE.namprd02.prod.outlook.com (2603:10b6:a03:5c3:cafe::2f) by BY1P220CA0018.outlook.office365.com (2603:10b6:a03:5c3::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.9 via Frontend Transport; Fri, 5 Jun 2026 10:46:32 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF000023CE.mail.protection.outlook.com (10.167.244.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Fri, 5 Jun 2026 10:46:32 +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; Fri, 5 Jun 2026 05:46:29 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Eu86Bj5LxymJS5w8IYWAQMsv6dCy+bMnaNCR9tCCL0R9lSp551Y4zq91G0HxWPqvLj34DZDcgduGKDfFfKdSMrhbF9RHdoz8lG1zVnWITohPnRH7sCWFDWed+Hlt5odRZ/UBi0xUv9eyGlql7/2BKZFX/SmY/fUY0nYcJ4tp/YVSFIiEH69FZniABqakkhETjtfhaDezxstcZBYz58v8got7NIfTKPaPf9/x0MfQzXNfyRKIjRynhH57xdVrp7LsqPujuiljnW4frwvELFcx65iVzL7r6OkdRMSsxfK3QflUmnHQXwGMFm+7oIQ0hBg+I986lngJOiW+6WkhlzadEA== 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=ozsTOAvXx4e7HGxaQk5y2RGCnZd/ViGM9GWOSiGQ+nE=; b=OcLE3sQNz2Ou6utwhp7FA8D3M5QK33e5SCf4ZpOfXMElIo49wsH4o9UK3Ys7lKSJHjwPPWIZhayTPIP7dBj3RGs8cOguaTVTtVIYUc6Ujla5wfVb6woqBsCbtg0EUX0jOkieq7+piobHPDm0sfoOn5o6eRebo9sjIf4uqoJf7aWNpKOg7hat6IYDN3448IZ822En7f8BK1q79oCYXoLWnF+V08fq+5xwZZlPg6g4ercXfeM9TXxS1Lfj99mFlLqSE6E550YiU+NV3zkPtvP5rDCHMvxiPt+bc2bteF2mirpJcbLX1Eq3yfCVo3Y8U/nbrtqIK6ehOa/WkuBb/mczhA== 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=ozsTOAvXx4e7HGxaQk5y2RGCnZd/ViGM9GWOSiGQ+nE=; b=gSuNv0SJQjDtNUHD3zJv112w9KG7ntY3/fwgbj77So/oLOh0r2JiktvKSxav7PYBcyE290UHzFKBrY4C5ZTQWPAsO9/42oj+YjGtIPeJFa2ZfzRWvWx4cZUQ8vmbdQeeqw6MmARVqe2jX3kruXNNcw0KO3jPvXEX8ItbIUkPT/w= 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 v10 1/4] hw/mem: add sp-mem device for Specific Purpose Memory Date: Fri, 5 Jun 2026 18:46:06 +0800 Message-ID: <20260605104609.1739911-2-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605104609.1739911-1-FangSheng.Huang@amd.com> References: <20260605104609.1739911-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: SJ1PEPF000023CE:EE_|BL1PR12MB5970:EE_ X-MS-Office365-Filtering-Correlation-Id: e3f7fc3b-9a5c-4381-5155-08dec2efb50b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|376014|1800799024|82310400026|11063799006|56012099006|18002099003|22082099003|6133799003|43062017; X-Microsoft-Antispam-Message-Info: 3b+IKpuIHZoKf2ysUaSQYC0R/bwAJxAMcWnzD3xLnBQaWtakovGzOI/w+taOOMonwGqEPwD+yslKQnhNESuazc175vUcKOZwlW4GVsZ+NdnmzQ1qTg4R70qE/f18dwV/kqO5dBPq4ImLgXRo+rCG4RP34F1E4SaoN+wV1ZeY8bcIJVT6CYfwntBFfLVygp8VT4K1hGQWfd6ruflyZaMbbZxLGgZ38JKQxsBf5LodbEVoeGHWC3YExnnHmA9zKqYhcKGqTEtBsNw5i/BGtB85GlVqUGk6FrFcOF5DHLgvA6RcVLJhexqVdwe/8gqWR8bQkvhLSd+cL051hRzb/j7lsDZAHPZz3kLQuTs5ungGTBZeHpKGuBT1qFNsNYfFg+ISDKnanyYvKXkLlKEeH/0e0OYCOmFBgN/H58o1WAgGSUk3EYzsx0/eYW/sOw8je8NGG2dDmlKH76GR4xpkWQFa9gq6CdkPBe69zpAIwPwXvohsU6VfALLkSiNoBDM15+IXVBglpWImzBnhTY1PhkZj8yQN7JbP8tUtMFearoRdI4hXW86IUNHTxJbbQM/pN308GirmMPjOOON3Qk1yAyjkraMnUp2YRsczSsIi3/Fv8jEPhU2qAOH6s8MrRxxiT6w6V7ruAVsz22/ZFCxSKx4Dm/PGukKxe+KJyNp6orD12QZ8UXDO7iVHklgJXbkuegtL5E8Ekn/K2HGuIjX8Vi4V9/vm4dMaCSziBHLRJiBkwBisE3/fBCPWisaGFiIcVRAvjGmQLHS9ZOSebtzBaF6cOw1OIcOySIKo0HsYcTytZMM= 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)(376014)(1800799024)(82310400026)(11063799006)(56012099006)(18002099003)(22082099003)(6133799003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: h/hiIcI7SLOatskLIndo6PyAiSyfxNvQontrPUABOxBHSQ6Ex1a9xW8rL1bJYC4YCWHIhFOhGh3AXmEBQI6gIP7LiVkHIE40pbYYTyzwIY/myJJIe22cJJPfKBqM2xYpsrgegIO9DFSUHA/Yvp4+FtKeCYKOcW9PmVa01QwJdM7Kju0kyILALqEC0McLoJwBuMTl+rZIfLEw72KynC6cQ7x3BrAzx+U1r7+Qk2/9A4BUCpe6si2c1GotwGEjfKH1vjeZfplbwk7ffHH7yUNcHYVviVeCn05PYPDYj/i3uwqtlw6y11b5s8hLH9Z3L/acAaajqcbUb6NtiWkaBPJPTnA7Wte4gxJ/joiLPXEDNVD5yydSLz8+mwS/kmZEW2FRgWGthT5RD6MmU+FKRfGRdiVA/LKDLejoepErOOrFw1n0duEj9KxK3Hhkk73Dgs6L X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 10:46:32.2216 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e3f7fc3b-9a5c-4381-5155-08dec2efb50b 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: SJ1PEPF000023CE.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5970 Received-SPF: permerror client-ip=2a01:111:f403:c001::2; envelope-from=FangSheng.Huang@amd.com; helo=SJ2PR03CU001.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: 1780656443379158500 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 Reviewed-by: David Hildenbrand Reviewed-by: Gregory Price --- qapi/machine.json | 43 ++++++++++++- include/hw/mem/sp-mem.h | 35 +++++++++++ hw/mem/sp-mem.c | 130 ++++++++++++++++++++++++++++++++++++++++ hw/mem/Kconfig | 4 ++ hw/mem/meson.build | 1 + 5 files changed, 211 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..41cc3a188a 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -1413,6 +1413,32 @@ } } =20 +## +# @SpMemDeviceInfo: +# +# sp-mem device state information +# +# @id: device's ID +# +# @memaddr: physical address in memory, 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', + 'memaddr': '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/mem/sp-mem.c b/hw/mem/sp-mem.c new file mode 100644 index 0000000000..f6ba9a6d7c --- /dev/null +++ b/hw/mem/sp-mem.c @@ -0,0 +1,130 @@ +/* + * 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 SP_MEM(md)->addr; +} + +static void sp_mem_set_addr(MemoryDeviceState *md, uint64_t addr, + Error **errp) +{ + SP_MEM(md)->addr =3D addr; +} + +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 uint64_t sp_mem_get_plugged_size(const MemoryDeviceState *md, + Error **errp) +{ + SpMemDevice *spm =3D SP_MEM(md); + return spm->hostmem ? + memory_region_size(host_memory_backend_get_memory(spm->hostmem)) := 0; +} + +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->memaddr =3D spm->addr; + di->size =3D spm->hostmem ? memory_region_size( + host_memory_backend_get_memory(spm->hostmem)) : 0; + di->node =3D spm->node; + di->memdev =3D spm->hostmem ? + object_get_canonical_path(OBJECT(spm->hostmem)) : NULL; + + 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; + } +} + +/* 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->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 sp_mem_get_plugged_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 Jun 7 22:18:59 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=1780656438; cv=pass; d=zohomail.com; s=zohoarc; b=ieCPbkgOSvQUaJbOHsx5PZDHPnO1NUcBMoVZRXiVDlZKvoLusgupzW3MgpLYQGjlGhm2w6Ix3Zeu+t+79XmMIx0uljbhLoRKvPIufqpqEovtTSaPzSHOiZSVaQIBa6FU3ITWPxwuR+lM2Cz+2JyPmOJy1sCz2KgdmRGHbSqm738= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780656438; 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=wPzE6w7Yh0e0kM2aJ6EH/P0Er9uDL6auYqDUmwh74ps=; b=OfK0oF9KkkEMglMGRO42Q0ZGpyVx6LbW8//bs8welGATMbG/AaYnlfYEcAz/sr8GzKH+Udc2QDSmFTiQp8SM47to+mpyfrtyiAtG5YflMlevnUUiL2v9UoZdfGQp58Gw0acAibHK5CVN4cSxPwIbXCR2e3yA8oYLA4ORpCFXxZU= 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 1780656438919208.33151316517365; Fri, 5 Jun 2026 03:47:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVS4Z-00027d-EO; Fri, 05 Jun 2026 06:46:43 -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 1wVS4X-00023r-PN for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:41 -0400 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] helo=PH7PR06CU001.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 1wVS4V-0004Tf-Sn for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:41 -0400 Received: from BY1P220CA0020.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:5c3::7) by CY5PR12MB6648.namprd12.prod.outlook.com (2603:10b6:930:3e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.9; Fri, 5 Jun 2026 10:46:34 +0000 Received: from SJ1PEPF000023CE.namprd02.prod.outlook.com (2603:10b6:a03:5c3:cafe::29) by BY1P220CA0020.outlook.office365.com (2603:10b6:a03:5c3::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.9 via Frontend Transport; Fri, 5 Jun 2026 10:46:34 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF000023CE.mail.protection.outlook.com (10.167.244.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Fri, 5 Jun 2026 10:46:34 +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; Fri, 5 Jun 2026 05:46:31 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=s3MD61W7G/5xJoh5ixZTCAuC3GXZi8jDQDea0P3sOHr2D6JkYZjZwDWQ51tUk67lFuJFU0aUFTgU2rfRy3e7kNamYMI029i0jfYCvNBCTUykmKAxFHu3+HTQJZOgy6ChdFqr5rNR/kQx3pmGJdAVC8v1zAi5Me3DBLYELDhiF0MhWqx4KrWk89sajW6NMhqImI24dTob8oV7BjfpizAtp0QjylIEa7VpfYNuKTBgDYVhDK3G4eKMG3H/g8x1HFtFXsuPLYcSmFV/rLpeuRyrOII02Z+fB19EN5+sE0JhVNQRkVCpADlCoooy+Z+BlwCc/GHV7pLrggwbdK3nxd0vmQ== 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=wPzE6w7Yh0e0kM2aJ6EH/P0Er9uDL6auYqDUmwh74ps=; b=aU0SAMavBWnyJPmwHSYl+pR1eha/DxeM7GggzTqk+ZuZ02Iex3OPA33TT4OGqQGzLh1pB7FrQKBRpAAeIzrWxUzyuuZfLR2kLo8lnD8ZHVnbnRMafCzJ+4dNPCyi+QROR8FGY/gjYRR3ab8zSMIMKwC6vcKwC/SzO5DJuB31DVx5Zk+raAjcnpp0chdCUL/g6xfCy0k34pVTh1h4JXhcsLwBlXY9bsoBTwO5htLFdTEmCmA0RBBW6qDJWMIp4QZD0nSoNljpMduYMjQ4PpjJR/z+ejpKhCEcIcB6jhRbscK0b+09Kt7RgtgML/4NpxkVIu3vOLfld3nesSN25UIK3Q== 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=wPzE6w7Yh0e0kM2aJ6EH/P0Er9uDL6auYqDUmwh74ps=; b=LqbnBw94GGD9HECa/yr67TMe/ze1CaNGJRWfApu1EFCQyuz4EZUdaCgkMBCZgarTf5UyvGX7keb5Ito6OrmlGz1o+Jw7cPGhzPRWhvKV7jd+EYFw5ZWA2lE8UjKCgkJ4aC6MQK/sWcnbxt1mIicdWKfqgMvqFv5pUVvikaUa2So= 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 v10 2/4] i386/acpi-build: partition device_memory SRAT umbrella for sp-mem Date: Fri, 5 Jun 2026 18:46:07 +0800 Message-ID: <20260605104609.1739911-3-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605104609.1739911-1-FangSheng.Huang@amd.com> References: <20260605104609.1739911-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: SJ1PEPF000023CE:EE_|CY5PR12MB6648:EE_ X-MS-Office365-Filtering-Correlation-Id: b07e61d2-c6d2-4426-a09c-08dec2efb63a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|376014|1800799024|82310400026|11063799006|56012099006|3023799007|6133799003|18002099003|22082099003|43062017; X-Microsoft-Antispam-Message-Info: Sr3VDQGiLhBOXAjxRmJrps2tGgd5ZykaGgbLdIKtUJOjEWDHqTyTrqo8ThpFkXmWdVINcQOeC4qq1ZWTlu7afxov8cM0Xd3pm4cRcoWcIKrVmx+t0JwwSiBeN27sSExsshiJDYcpCPFnOcAkbQZEEpisMeysR7Xa/aXX55V89VUZXTuOvkSraesRZvN1/QmRwFRqV+idmJwr4ZmbddxogCARsbXxWDZ6/+RiGiJ+MxRr31vCi2tOUVwN2H9jKDXXnVfzjXGJnu+nleL8fWnmkeJYaBnVI3uY6Y9wyP/8WiOHbeNToivQkbEPra8oOeZmLvpecrrlQ+KjTZSQBalRmLgQIkFqRZIdbsyFx/61qh1mVQ9TDgF6zqMZPednR1CJ8501ov3Cg3zQ+HtkNjcJ8NxCKsQVkMdefaMYsns2s7v2eYu2MYV1g76WZbAOs7okj206W49saB5w0kZXFDUVIIV9PW53KKm5HgGeemyG2nYVK3t8yvPRbiSQvfddBBOf0IEs+zif6AljjJ5FYRfsWf10AFdSF83SBP1exD30anvgArUb9ykn2iIcdMf38Cvf9gzDfBiM5UCsTgfbH5TwkF33l52pyRf6wOU3EE/T4ljqZp4B5/A2uJj43SLifs+JZalv6Zr3BRRiGqjkaWrAnX/rS1Rn8srC6iv83RtIJUACDIDL/e7+4Gzdans7wVz2AsMlDasRwZXvDa6913dptBCPWxELHqbPQ8fza1fI7+aBG+HTQ8BHeVyMzg/cascrOdaITEdyWELmQ+o4Z2n+gse5ZhJV9UqhmiC1qcrm4OA= 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)(376014)(1800799024)(82310400026)(11063799006)(56012099006)(3023799007)(6133799003)(18002099003)(22082099003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: EUdn5BF1jAMHhjbcPtX+q3i54rPKLJGBsiZvejMtpFNCEJ6o6asIxE1TnTKgNMk7+F64VxmfZgG5VQ9cZlIBvDHt5Ms1fO+P0H3QmKyuBiBq8TkPQIyq/vpzox6xrGmH7qefIY/KkQotI4NeX47JiEt5lM4KIj1yka1QNIirUG9MUZxtynnlbFsD5bN90dEnNqBOW5DsJxU3x4jDKjDb3XY7tAhyijSh7lANVnT5m+nuPW1IaJl6CoXaWXoIRWMxpPqieC43WiSXX43jU8h8LAARyXfrzfiDnJgl7hXpFk0yvGKAJ7PHtYqJ6WJsnAq0sjt1dfP6WtQiEwFbwcYRfTFjcsHy9W2OylKxu/WkL8w6wQpQwSW5iPvhR6wdo643WUDr4xeQuBiAOARyHC/o72dh5/4T904n2R6Ad/TDSVx6NnTs4wuA6ZV1QCUPsr+j X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 10:46:34.2705 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b07e61d2-c6d2-4426-a09c-08dec2efb63a 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: SJ1PEPF000023CE.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6648 Received-SPF: permerror client-ip=2a01:111:f403:c107::9; envelope-from=FangSheng.Huang@amd.com; helo=PH7PR06CU001.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: 1780656439329158500 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 | 98 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 92 insertions(+), 6 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 0d7c83d5e9..76efa83808 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 collect_sp_mem_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)); + uint64_t cursor, end; + int nb_nodes =3D ms->numa_state ? ms->numa_state->num_nodes : 0; + uint32_t hotplug_pxm =3D nb_nodes > 0 ? nb_nodes - 1 : 0; + guint i; + + if (!ms->device_memory) { + return; + } + + cursor =3D ms->device_memory->base; + end =3D cursor + memory_region_size(&ms->device_memory->mr); + + object_child_foreach_recursive(qdev_get_machine(), + collect_sp_mem_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 (cursor < r->addr) { + build_srat_memory(table_data, cursor, r->addr - cursor, + hotplug_pxm, + MEM_AFFINITY_HOTPLUGGABLE | + MEM_AFFINITY_ENABLED); + } + build_srat_memory(table_data, r->addr, r->size, r->node, + MEM_AFFINITY_ENABLED); + cursor =3D r->addr + r->size; + } + + if (cursor < end) { + build_srat_memory(table_data, cursor, end - cursor, + hotplug_pxm, + MEM_AFFINITY_HOTPLUGGABLE | + MEM_AFFINITY_ENABLED); + } +} + #define HOLE_640K_START (640 * KiB) #define HOLE_640K_END (1 * MiB) =20 @@ -1481,12 +1572,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, M= achineState *machine) * Memory devices may override proximity set by this entry, * 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 Jun 7 22:18:59 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=1780656433; cv=pass; d=zohomail.com; s=zohoarc; b=darFZ/iqp7b/hD9AO4UfsD7WuOpx7hS/lY9G3Rrrp/Q+iYvDe3hhdsUnGjmhhQoocfj6rzggch21/2HUcNhklSRCh1aarHUUV9zY792q7rcHg6XP3mdloTaqdSUeYS+S1iTr2qjy9UPwnxQVE1s7jWsmjA1Aipqc4tgbe12/JNw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780656433; 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=mfHcmFIqfwxoTCMOKA7Gs6NZSYhNpaHk/0AML+vEE4o=; b=a2gOd+pSpWE81S8mMa0Znm/J//saSZTvVNYBFfSrHL2MfUBWWIzkuAb1Weq5PzEUESPMJ6O5qjCYaiAApYZ7ecOdO6AQKQLsZ6YVf5M562R28LSfQhfJV2GNzhfSSSYH0XeT2umF+n/WVl3W5YozwNFLRMY3sVpUgubF2lUVCO4= 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 1780656433748389.16488922964834; Fri, 5 Jun 2026 03:47:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVS4j-00029w-Nj; Fri, 05 Jun 2026 06:46:53 -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 1wVS4h-00029o-Mz for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:51 -0400 Received: from mail-southcentralusazlp170120001.outbound.protection.outlook.com ([2a01:111:f403:c10d::1] helo=SN4PR2101CU001.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 1wVS4f-0004Ui-Pn for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:51 -0400 Received: from MW4PR03CA0349.namprd03.prod.outlook.com (2603:10b6:303:dc::24) by PH7PR12MB7234.namprd12.prod.outlook.com (2603:10b6:510:205::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.9; Fri, 5 Jun 2026 10:46:38 +0000 Received: from SJ1PEPF000023CF.namprd02.prod.outlook.com (2603:10b6:303:dc:cafe::59) by MW4PR03CA0349.outlook.office365.com (2603:10b6:303:dc::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.9 via Frontend Transport; Fri, 5 Jun 2026 10:46:37 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF000023CF.mail.protection.outlook.com (10.167.244.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Fri, 5 Jun 2026 10:46:37 +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; Fri, 5 Jun 2026 05:46:34 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yl1c+F52egEadQksIE7uPCY3LI9VP96/EjyLgCvwPA+zs81ol5G5fYIVf014Z3kky7ECXRUmIdWMZeEOl2K/7fks/cLBor+tsqwcfZR73kqEoPZ8zCP9yKLEmBCIqBlpBlp/J53OF8tiQr0rq7K54SawGL/rcogXPM5iZWryjHMCtqkoRP3Ui2ubdNJ73P8PgNWEsmCUz0GPKG3kBPkn9owpgzRcpWKypMxgKMhbFiO7uAs+cpB/D3Uba9XcG332odpMcbrbicA4XnaCawUciuucTlNYv18EYCKAl4SZtmpO3eY0JTsL8x5IR6nOdtu2zGiYf5mqvR8/7PkSQYGi/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=mfHcmFIqfwxoTCMOKA7Gs6NZSYhNpaHk/0AML+vEE4o=; b=fWYkYIfZF9e/eYFFA2NkgbEJ3w5x3gB0tLh6HT2GNzgGI7ucZlSUZssIhraidp4vKMJNAixt48KGnmqYdr64McuhSGDZv9XI0RAZj23v78eIPQyl1SyvjV7ef1TRcEDZ0o2YMrks7wypQCjwF5nnetUNKq5/WBbMQ2kpusAlEePzwL4eKJhusvSILP3l0dR68MFljD09Q/AwI6QUmmOXyha3EBZlbBDi9laoDdmDfiKCAbtq4eMmLN8eUnziMZnySr1IW6SCkQfRCk55A63xC0OTv32ARQdHV9+nvCOcipMWmr+nx7lzBmL3IepZM3ks6he2rtAyFVjaCNa5Hb8rlA== 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=mfHcmFIqfwxoTCMOKA7Gs6NZSYhNpaHk/0AML+vEE4o=; b=1XzUOPmQJaSzlUqO7htZgf8NM4NV79RD1A2oiIusOpL+3WF7TXUy+UxnkrCxHa20HL3VH7RgaO1nfONKjf9Bqb0XAdPhxBfOmaUZ3SVqpDWS1MhcMoTVd7zB5YkpUApIItUVA5/LBOXVU2NOtcun5Eq9yOHMsV397GIQscs/Zkc= 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 v10 3/4] hw/i386: hook sp-mem into the pc machine plug path Date: Fri, 5 Jun 2026 18:46:08 +0800 Message-ID: <20260605104609.1739911-4-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605104609.1739911-1-FangSheng.Huang@amd.com> References: <20260605104609.1739911-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: SJ1PEPF000023CF:EE_|PH7PR12MB7234:EE_ X-MS-Office365-Filtering-Correlation-Id: b0257c40-a69e-4190-f3be-08dec2efb7e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|82310400026|1800799024|376014|11063799006|56012099006|22082099003|18002099003|43062017; X-Microsoft-Antispam-Message-Info: B7ZmeA+RjCEQ6/pjBNzkzB3ydWyVGYzD2NMxX5vLM8V/YGC9iy9v9NLmTRQULcs+Cz8Or2ZJNtKvzWXoVJW4ZMKeGZjbheNiBdN1WSzQucEmEAO61Ecml3SefXlYiZo88ZLf7QvN2HIrrF4JFUc9f+nDrbD3CrHYiAFIUEkC4xkWfeWGgi+TJGZjMynTi/FQAcgJmq/xuIXHEgiG7q7pgbAwiWk9YZlPowXBFFT+CKsoyLeb8f5M6XSEtZeLlS1LHkWFI++o7giCpZSD4h4cN0p7MlOmWGRiDxriGa/kZbSIW5pE6gXXL7Y1uVAkfAJG+j3YXQoR0kK2xtX6ZJcdsExLsqFmgCPEBs1xHsknIZxdGkGqD16Sug7pVINApua9grKJRIxlKaPyus3rq1+/Sm/f3Vse5AhmPRXC/fYrTzO80X8/HsQ/PTOYAifnBit9gv+rG2yl0TbemEfFbUvOqNz+tkemFYZsTEGAkjhu+tuWNpPtQubkhr3BLiLpCNtDC+tnTXC1yFPMl+37k7DrSYpkD+8qe1vkePhdk7JO1zzkjN09W65YhDUWIsSIFTR4HcgoMChR1guMRuAbR0RQ537hs71/iEupDoUB/XDGY5NYJFEYEghKcAHokkyxmga1XmwIcDh98mPnJYJnpXdYVEGEzHcicXx+x7NFFClipzdOMUrmiKIHr9jkYKUPMGc5A+oameRybCFVP20k5a/Z+URaKmXqvf0B7pBr8dDzAPYBLYicaxQX4697crM6tVUu0UalQnykzh8biilQzntr6SjayrPAsjyfOHA2gy+DQgw= 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)(82310400026)(1800799024)(376014)(11063799006)(56012099006)(22082099003)(18002099003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yEzDqU7pJbWKP69HLripM5ONKpIaykqSByQJ8Gc6w3SdJDa6alPA4xvttg0VpQSI17D0caPsdRSQwz41kNPQufRJy8wvKyJQRESd3joAh2owtQGLbIGpD5XxISKEOGp3DN7GHbrlNpWACRQ2E8tcGqkimVMFaeVPGGzCT9vhugdQkdmhsnQYffoEMOqchotHfWQizQIVn+SUXd7KZfTnkt7mFcP4u1ZXxZ2D4URcoe9e6Ni+bUJi4frBXeqqH6XPSPw5bXsf3xdsBS2GOxBwR5lpRYk+gtyAudJeKvDQ0rx68RoOnXtArO5T2kfUsk6ygHe9ZEfNelgLpsUMKlSkc+EOD1G88eXlvhTGpw2F+qPQ22NTKzkMuWrj1pj2Yn1GH4N9a1volRZzNgfPejeaJ31KEbexihLhmAEkgeAyv6DjJuzEAzcybbxRFOQZellW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 10:46:37.0126 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b0257c40-a69e-4190-f3be-08dec2efb7e4 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: SJ1PEPF000023CF.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7234 Received-SPF: permerror client-ip=2a01:111:f403:c10d::1; envelope-from=FangSheng.Huang@amd.com; helo=SN4PR2101CU001.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_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: 1780656435433158500 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 | 42 ++++++++++++++++++++++++++++++++++++ hw/i386/Kconfig | 2 ++ 3 files changed, 50 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 2ecad3c503..b538f49f23 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,49 @@ 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 (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; + } + 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; + + host_memory_backend_set_mapped(spm->hostmem, true); + 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 +1363,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 +1409,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 Jun 7 22:18:59 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=1780656452; cv=pass; d=zohomail.com; s=zohoarc; b=PzkcBhxn0g9fBOzazkWc8UpFKn4BBpAUMMKwo1MI1AyDvH0VlcznhGPm2nZ3CCY3wTN6uSL6XBKOwHdD1nQfgkRvBUDRbpucbdzKY3xy9o9jRPMVXdpl7av7Ie9j2IJXhrhrljGRkT0uT1BTJjfZ3xa4LMaIpDzSLMvUkSC1XSY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780656452; 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=8JjRVLPg18/m3oc1Kyfyb2cyPkMUMa+/MISjDnjAY5Y=; b=S8aO5JZtPPpfHQ8IcM7f4Lsz7f/7Zpz8/1qn/bIFm/qNfaY9o0svrDKIF1ySSa/gdlcALxmxsrlYXb66zoOgs26dkQDohFIpjFNmq1yJdTqmVlQ7q6Z5+WfU6pgE5ofSwMqM8GPY2I4uPmyfj7ueIRQkywJte4v2kE0fbTjTcgE= 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 178065645220952.728258193450415; Fri, 5 Jun 2026 03:47:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVS4g-00029i-4z; Fri, 05 Jun 2026 06:46:50 -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 1wVS4d-00028q-5Z for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:47 -0400 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.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 1wVS4b-0004UJ-DR for qemu-devel@nongnu.org; Fri, 05 Jun 2026 06:46:46 -0400 Received: from MW4PR03CA0358.namprd03.prod.outlook.com (2603:10b6:303:dc::33) by PH0PR12MB999113.namprd12.prod.outlook.com (2603:10b6:510:38f::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.8; Fri, 5 Jun 2026 10:46:39 +0000 Received: from SJ1PEPF000023CF.namprd02.prod.outlook.com (2603:10b6:303:dc:cafe::71) by MW4PR03CA0358.outlook.office365.com (2603:10b6:303:dc::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.8 via Frontend Transport; Fri, 5 Jun 2026 10:46:39 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by SJ1PEPF000023CF.mail.protection.outlook.com (10.167.244.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Fri, 5 Jun 2026 10:46:39 +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; Fri, 5 Jun 2026 05:46:36 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TyQnMufXLrrTxZ1JwZo4oq4sDgOLUEkoqxt7jqw3aaRje9SfgYjQ/BNKeZxBGPJMpBhfSTntqoMDZITialBhYPv1idaHT2K6Ngjkc7Fj3qJ0kG36BPazM1ZURv8U5blfM5jY8lRkrgUAIk2QiLKpfpw8jpe6HcMbpnyqGknz1xC+hF+mE2McSRBWxmcvSuUWjQHB/d43wLQk3e2yod+m+X2RXVwIDzpnTbwWuKaV4ggNR9n5z7FmUjR6/9h5LAtQiikRshB3SeEugXO58zM0OW/skdWXUWAg6pJe57RGeCkk9t02CfGbrGaTk8noGFiifBCUvfAsxTzuVcuSSJtMDQ== 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=8JjRVLPg18/m3oc1Kyfyb2cyPkMUMa+/MISjDnjAY5Y=; b=j9tnme5FBwOMc4RFfBh23lNDOKPP8T+B6s2xefWjKZ8/nYTQW8Vq15zwwTicB3TqRagwVeFoG8vtyvzQz2TkRbSN40fU1rw87L+51OUl7yX4D57yx9NF3378R439jOiWQS8Ktyu5lGx1dBKN5xVVIGTyWXwFtPqODNRBdZL+wZymuF3AXSRCJudKoX3+rqkVyY/h/vdaQdiSLfzsBCTnFE/8u9JDOEOEt2pwDTtSNQhgmddjOp0KB3my8fhD/Uc5IBTSX/xbMyfveSfVUuXzFJ3E1KOH7LDgC65LggXKGkIqmRpiUV8M9fjSCt9gFvoOQGUInoiDmkAnb6BQIeH7QA== 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=8JjRVLPg18/m3oc1Kyfyb2cyPkMUMa+/MISjDnjAY5Y=; b=CDadHbD+KGE0lYDdjzZDD7QMbmqxeRB3FK/+zKBZY4D+TqmtEICDFkHtdvbFxry++Kc5oJHbTFT1R6LIhXQt/8qeKq/nJnk5mzMTQ2XyRS6I/HZI7rnbVFVRcxG7f2vXopGpz9cDRpQqrzYrhZOpdYEuiWE+rskkuSwmGcp6zhY= 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 v10 4/4] MAINTAINERS: cover sp-mem under Memory devices, add R: tag Date: Fri, 5 Jun 2026 18:46:09 +0800 Message-ID: <20260605104609.1739911-5-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260605104609.1739911-1-FangSheng.Huang@amd.com> References: <20260605104609.1739911-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: SJ1PEPF000023CF:EE_|PH0PR12MB999113:EE_ X-MS-Office365-Filtering-Correlation-Id: 9dca3a12-164f-4df0-34d3-08dec2efb967 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|82310400026|1800799024|376014|11063799006|56012099006|18002099003|22082099003|43062017; X-Microsoft-Antispam-Message-Info: LCiAR5hH33Ku/r+aSQ7Pa4CNnKHWCpaOpCAgVhp8dCJvuylz5FBTSMovoX6wKIaZO8sBb3sXPGybQClQdWSVtdsRRMToJJyDbCuHovbofViNgx2E8RLObXwZVdez+ny2mAqz5ES+8Ufc+YWpVyVlMjN1hxBBOFDahzNxFCidHk5XYWF+txdpGJb7/Caxw2t6rryg/euNUl/j2nNbDeUVJVRYjEeoMimx+gYE0K2wbGdSeHl5WpmBwzdphmlI5+xGO84CN8EemL+opPQ/okTv1wuTCEpzD8TPy3/5GRnTqSHN5DOTr1jHA8hWsFscQwY0LSS6apr9USEne4nQEkUIEOAtprEufkUzczKRuomM7RSZDmypXKq+Y7wDL5KWky4xtCe/IEolviGIl3BxWK3eYhRYI2O5obCGvW7Fq+ial7EgB3dcZNSm0oK3hSWy9D5oiJfF40q3wEfYWDsub/X/Jswm//uJ39m2BepR+ikw/9qnwvZZF3cQwnzIGN+AkuvlS05oTNdmyDuyqJZKadh2kMQ19IiIUMnj/3+BPjT6xKrxA86Q8YBjGDhkIqIk4/UDWGA5mwsATYzlCQhg9YJ+60FNDZX7R5SPr/HNja9hBJO635pHEBnLuhOO7Q7nkeNX22aT4hiVMVBKVi0mDCwuNY8jQ7qJrGmW2RuMhcoPkgOaAKxc4QpykgMRyEyX0HJ5cJokNqkQqRZa6cI0ASly8V0//B97BJ5+31qkZkA8AkOg8mvwL+wcUsC298/vigdRYukbwBhRP032i8auyMfK/njpJA+zn3qdofb9b/pC3jw= 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)(82310400026)(1800799024)(376014)(11063799006)(56012099006)(18002099003)(22082099003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Ey18PX5skf2VZHO6H+zNM4AFJvrlNy+EXT4XSgtEO2ho4qb3Gk4AoXem310vwtyT6/n4L9Qxl0A5ksNKrHp+LJYycQF3BITORc5FE19AQbteUzLw1e0pTqkaSEAOlUPJo9bUb00zTmpCGuQMFJ4Jm0p506DQdhIYI16iD/kGknRb3EmlKnuAoAeB3Jqr1doXi2ZKi6wfmhCUPADFsPM0mGhByBVrcykAhdvSm2G7J+Om00246Sy23UtjDjI4Oooy1tb812KSGTQ39fgxmwPrRPvM/V6eX0FYXhAyNasKflc2SdGr9rIO3tEydhQMW3JPUhV6btyZclJC2Ju7YgOOPys/KhmLd3zwpj9uHpFS5SKNSa7y7SxmOaUTUxbsn8vQKNrWKQzs63eXMGokbCeh8TQ5wsjeghzuzQWtsq1TutD3yS6ZZx7LIiTBZY4w9oLo X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 10:46:39.6073 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9dca3a12-164f-4df0-34d3-08dec2efb967 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: SJ1PEPF000023CF.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB999113 Received-SPF: permerror client-ip=2a01:111:f403:c005::5; envelope-from=FangSheng.Huang@amd.com; helo=CO1PR03CU002.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_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: 1780656453412158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: FangSheng Huang --- MAINTAINERS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 7752917d8c..db34f6cf17 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