From nobody Mon Jun 8 04:25:58 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=1780389991; cv=pass; d=zohomail.com; s=zohoarc; b=Qiu7e2nkgaLUn6f6kJAwIXTNLWuptMnOTXzaJUhBS7Nsg7P7S5SvwALerxzrPBT6i3SaCM1BNgJYD9SG1ouAvqgXl26csIys4SREsKVaD4Mmu+OyfpwTCVfnAvVABXVc2lUTMgjKoftvGckG0Hy300Vk0TseDWYsP/Ky1BxYKC0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780389991; 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=I7UFl+n3oowdFksQjukEAOhfhPQuxPIskcoyPV6YVLY=; b=MyZ9PiIoXs0IL903WrOaQcJ1Y5iWoU8iuaRu+4kSkJqouo4lsYfH9mK7COfBHG2pF0G0clIHT4Su6VivxBZPXYejI6maA6V0/tFzi0w6ru1p1yBHHqwASRltcyu1//fQIGWHL03G0YvXePl5me5AF6XwTcgHIXVkxnw5JC5B8y8= 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 1780389991176104.96701057910968; Tue, 2 Jun 2026 01:46:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUKlF-00038Y-3Q; Tue, 02 Jun 2026 04:46:09 -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 1wUKlC-000374-Pe for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:07 -0400 Received: from mail-westus3azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c107::3] helo=PH0PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUKl8-0004Ou-AX for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:06 -0400 Received: from DS7PR03CA0071.namprd03.prod.outlook.com (2603:10b6:5:3bb::16) by DM4PR12MB6157.namprd12.prod.outlook.com (2603:10b6:8:ac::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Tue, 2 Jun 2026 08:45:51 +0000 Received: from DM2PEPF00003FC7.namprd04.prod.outlook.com (2603:10b6:5:3bb:cafe::56) by DS7PR03CA0071.outlook.office365.com (2603:10b6:5:3bb::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.16 via Frontend Transport; Tue, 2 Jun 2026 08:45:51 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DM2PEPF00003FC7.mail.protection.outlook.com (10.167.23.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Tue, 2 Jun 2026 08:45:50 +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; Tue, 2 Jun 2026 03:45:48 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HL3b8K5tC9PMphC8KULAwrMAt47g3CYZPudq1cCEWhB0pcI+R03b26/DNZSXGENEkBI5LtbMRXRJ4NsZXs6e+suVf6ejhmD8cCSjSs0suxlS1es+A4haPz7zRldDoZDbSNfl24AMCun8hLmFHzPWxnR79Vk5zLOEKEOtd5BbW2L9yyW8ie9J6jFaO2tBtitN3wQ61JYj/TY6ftUj+SeOYEe0sHuUoFnam6WkgsHozfF0fuuCEi4X11gJEsIjP2gBHABjzdxvyY5nExVA3oecnFmpvosf7Yh4bjK27v6ywkoOoy1JDNHA6RU9/z7ykmapgdIBj5zZ3aJ34sAt+17njw== 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=I7UFl+n3oowdFksQjukEAOhfhPQuxPIskcoyPV6YVLY=; b=XmHCtUlXkgoy0XbFYiiU2eNBt1dxgnMZjsR2M8kiOhuPmVT38DgxmohktoPGoR2PtFzXL0WpT20n3wLX/h0ewPuxNB+YmF3cnSlfXe1QZpvctajJfH4Gti8wFKw8Qilg80q0c9IvNreLiHrtwa9NjMzhujtbgrcquDpmlKVMnCp7dQmLdjBtetbXeuiKHH+W8hKDKtXPumrgAnZTeON4aP+aEuLDqF/yaMMXUfdeLdq9dkGLkq04xk1u+e+2t03GoQzfkGtJKBtFJQwD4jHXehtNMfxaMW3dDtK8rFN+WBLl+gnEy/yF1HRnjZh9bhdnf81lIU/UirYsaV917r2hVw== 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=I7UFl+n3oowdFksQjukEAOhfhPQuxPIskcoyPV6YVLY=; b=qWqpLKdu/Jh7+R6Nlc8WiosG8L2Bxa5PvLq4ca9xtAQLDOVA1fZTmxackxIbECV5Gv+cxkubMLeCn4G4p2RreresaR6znYqy4P9dRCYmx5CT7Wp2F9rLNAd5c7Nx496rTXIyHbG6YxwDAKp4Ko3QJn7dmt06UEO2mQosKDG5sX0= 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 v9 1/4] hw/mem: add spm-memory device for Specific Purpose Memory Date: Tue, 2 Jun 2026 16:44:44 +0800 Message-ID: <20260602084447.1100554-2-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260602084447.1100554-1-FangSheng.Huang@amd.com> References: <20260602084447.1100554-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM2PEPF00003FC7:EE_|DM4PR12MB6157:EE_ X-MS-Office365-Filtering-Correlation-Id: 74c908c2-fcb3-443d-e028-08dec08359a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700016|1800799024|376014|6133799003|22082099003|18002099003|56012099006|11063799006|43062017; X-Microsoft-Antispam-Message-Info: CKo2lfzclgfiBSAkFgrvRlRX97GDZpeCjNjl6PBlx5IY7RcewWaiWoFjUY1jxrGDZW9/3XavtgSBmj/lqiiGmyEM6BW79ARmNMz+GmBzL/NTTDiPxKOEzhPY3hc2kElaX5pJGSbAEgADPK7/eBxiieDebpgPIOOzFD48rqOjZOyFkDj9O+PFqFPxK9WD2IJAQ8m8/0+Aw/BJdG5OOGnU41YxBTXbsIy0LeUImpMn31Y5fcxNGGAOT3Sz62jAUUBIhQBIdN+J1MJphKf8q/En5dU+rOv6zCkPiqrjZSn/VyTyD8PZtUj6pKmeS/QUD1+XkvzGFa+qRhQmIwjukyjsSSVFAn4nD1PsSMoU69n2G3biLUM4gdFwJ9O9ZZMYKUdUIfvUFi+d+Qv33X2ijVOknXaK0yeHaJct3YRl2ZGtS9+ejS2YJ5kQSUpk7JYHxX+2aL5HLaGPkWfAzmvbvGHJ5HKlI7oMsWgwM7w1vguRs1Ph3ffkpVx4HlHd8jBIJIBgCQu6GCym0+5OQubn0WIY0lHaZ6Cwmc8n2O7cWVTsS5aliElCEO9m4QDDSg/dmGCQVwdmPVkw587VodbdGhWkYOQg+0xTb+iLbtjCGvjzCsu62eI3etTicv0YyK8GQCYC/8nTKeC/CrMk3VfbNWRXQ5QSNHHBgYHsiexFIJo+cTHMwmluyitTGhZcSdGsQPsCVvtJtQrKfeC9I7qXOJiv+y9wBp1D2NmuAMSS3RiWYwdL9bzAsozzE7JqtR3HqtaeP0arK6pOoyV5xZvBoanwxn/5b0D7pAwRsKvD2Bdqozk= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(36860700016)(1800799024)(376014)(6133799003)(22082099003)(18002099003)(56012099006)(11063799006)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: S5KHfNojvi1UxSRBtq+ww9e9zafnUNByRl1XspUAsTpNPFaQ6DMlhTOK8tjyEiPy3na3ImCriP8lHSop6dMz12nTv8bJzUIJ2S+rOHNUgaIGLGzOEqyjD65RLfwvYkY/PmgaDjKfexrjb/JaOwe9vXgLAIqKZm3sRnRcRxUqYji3vJdztcYHMSYM0c30ebcxeK/Eak3S4yh/+9QIhKNCc2M0WrSUnex3enZt8UlWKIUUqHisZ3jIyjUmMrrnG4qQ8RJC9l7eqZMDYjc2ycSzHVh/IdmTWTs38KSCj3VBr4lj+YspYkuShZS/7c5KSH7ECBRV0j20XfHJZgsJ+gpQFMlRVNG3Xht6L1g1rV4bXxymevVm5FTVg0mV+qa/aNqr/nBgl9AMH8WIP+k4Z3LwzmgvqnRry9lGuRemGYwuNXU3EiAv/RiyPR3OVHdrDGez X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2026 08:45:50.9798 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 74c908c2-fcb3-443d-e028-08dec08359a2 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: DM2PEPF00003FC7.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6157 Received-SPF: permerror client-ip=2a01:111:f403:c107::3; envelope-from=FangSheng.Huang@amd.com; helo=PH0PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1780389992982154100 Content-Type: text/plain; charset="utf-8" Introduce a TYPE_MEMORY_DEVICE subclass `spm-memory` 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 spm-memory,id=3Ddev0,memdev=3Dspm0,node=3D$N[,addr=3D$GPA] The device is boot-time only (no hotplug). Signed-off-by: FangSheng Huang --- hw/i386/Kconfig | 2 + hw/mem/Kconfig | 4 ++ hw/mem/meson.build | 1 + hw/mem/spm-memory.c | 133 ++++++++++++++++++++++++++++++++++++ include/hw/mem/spm-memory.h | 42 ++++++++++++ qapi/machine.json | 43 +++++++++++- 6 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 hw/mem/spm-memory.c create mode 100644 include/hw/mem/spm-memory.h diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index 12473acaa7..e31a25b634 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -84,6 +84,7 @@ config I440FX select PCI_I440FX select PIIX select DIMM + select SPM_MEMORY select SMBIOS select SMBIOS_LEGACY select FW_CFG_DMA @@ -113,6 +114,7 @@ config Q35 select LPC_ICH9 select AHCI_ICH9 select DIMM + select SPM_MEMORY select SMBIOS select FW_CFG_DMA =20 diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig index 73c5ae8ad9..4145870881 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 SPM_MEMORY + bool + select MEM_DEVICE diff --git a/hw/mem/meson.build b/hw/mem/meson.build index 8c2beeb7d4..2c28104282 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_SPM_MEMORY', if_true: files('spm-memory.c')) stub_ss.add(files('cxl_type3_stubs.c')) =20 stub_ss.add(files('memory-device-stubs.c')) diff --git a/hw/mem/spm-memory.c b/hw/mem/spm-memory.c new file mode 100644 index 0000000000..e3942c6a3a --- /dev/null +++ b/hw/mem/spm-memory.c @@ -0,0 +1,133 @@ +/* + * 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/spm-memory.h" +#include "hw/mem/memory-device.h" +#include "migration/vmstate.h" +#include "system/hostmem.h" + +#define SPM_MEMORY_MEMDEV_PROP "memdev" +#define SPM_MEMORY_NODE_PROP "node" +#define SPM_MEMORY_ADDR_PROP "addr" + +static const Property spm_memory_properties[] =3D { + DEFINE_PROP_LINK(SPM_MEMORY_MEMDEV_PROP, SpmMemoryDevice, hostmem, + TYPE_MEMORY_BACKEND, HostMemoryBackend *), + DEFINE_PROP_UINT32(SPM_MEMORY_NODE_PROP, SpmMemoryDevice, node, 0), + DEFINE_PROP_UINT64(SPM_MEMORY_ADDR_PROP, SpmMemoryDevice, addr, 0), +}; + +static uint64_t spm_memory_md_get_addr(const MemoryDeviceState *md) +{ + return SPM_MEMORY(md)->addr; +} + +static void spm_memory_md_set_addr(MemoryDeviceState *md, uint64_t addr, + Error **errp) +{ + SPM_MEMORY(md)->addr =3D addr; +} + +static MemoryRegion *spm_memory_md_get_memory_region(MemoryDeviceState *md, + Error **errp) +{ + SpmMemoryDevice *spm =3D SPM_MEMORY(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 spm_memory_md_get_plugged_size(const MemoryDeviceState *md, + Error **errp) +{ + SpmMemoryDevice *spm =3D SPM_MEMORY(md); + return spm->hostmem ? + memory_region_size(host_memory_backend_get_memory(spm->hostmem)) := 0; +} + +static void spm_memory_md_fill_device_info(const MemoryDeviceState *md, + MemoryDeviceInfo *info) +{ + SpmMemoryDeviceInfo *di =3D g_new0(SpmMemoryDeviceInfo, 1); + SpmMemoryDevice *spm =3D SPM_MEMORY(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.spm_memory.data =3D di; + info->type =3D MEMORY_DEVICE_INFO_KIND_SPM_MEMORY; +} + +static void spm_memory_realize(DeviceState *dev, Error **errp) +{ + SpmMemoryDevice *spm =3D SPM_MEMORY(dev); + + if (!spm->hostmem) { + error_setg(errp, "'%s' property is required", SPM_MEMORY_MEMDEV_PR= OP); + return; + } +} + +static const VMStateDescription vmstate_spm_memory =3D { + .name =3D TYPE_SPM_MEMORY, + .unmigratable =3D 1, +}; + +static void spm_memory_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 spm_memory_realize; + dc->vmsd =3D &vmstate_spm_memory; + device_class_set_props(dc, spm_memory_properties); + + mdc->get_addr =3D spm_memory_md_get_addr; + mdc->set_addr =3D spm_memory_md_set_addr; + mdc->get_memory_region =3D spm_memory_md_get_memory_region; + mdc->get_plugged_size =3D spm_memory_md_get_plugged_size; + mdc->fill_device_info =3D spm_memory_md_fill_device_info; +} + +static const TypeInfo spm_memory_info =3D { + .name =3D TYPE_SPM_MEMORY, + .parent =3D TYPE_DEVICE, + .class_size =3D sizeof(SpmMemoryDeviceClass), + .class_init =3D spm_memory_class_init, + .instance_size =3D sizeof(SpmMemoryDevice), + .interfaces =3D (InterfaceInfo[]) { + { TYPE_MEMORY_DEVICE }, + { } + }, +}; + +static void spm_memory_register_types(void) +{ + type_register_static(&spm_memory_info); +} + +type_init(spm_memory_register_types) diff --git a/include/hw/mem/spm-memory.h b/include/hw/mem/spm-memory.h new file mode 100644 index 0000000000..b56aa3cd12 --- /dev/null +++ b/include/hw/mem/spm-memory.h @@ -0,0 +1,42 @@ +/* + * 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_SPM_MEMORY_H +#define QEMU_SPM_MEMORY_H + +#include "hw/mem/memory-device.h" +#include "hw/core/qdev.h" +#include "qom/object.h" +#include "system/hostmem.h" + +#define TYPE_SPM_MEMORY "spm-memory" + +OBJECT_DECLARE_TYPE(SpmMemoryDevice, SpmMemoryDeviceClass, SPM_MEMORY) + +struct SpmMemoryDevice { + /*< private >*/ + DeviceState parent_obj; + + /*< public >*/ + HostMemoryBackend *hostmem; /* memdev=3D backend */ + uint32_t node; /* NUMA proximity domain (node=3D) */ + uint64_t addr; /* GPA (from addr=3D or framework-assig= ned) */ +}; + +struct SpmMemoryDeviceClass { + /*< private >*/ + DeviceClass parent_class; +}; + +#endif /* QEMU_SPM_MEMORY_H */ diff --git a/qapi/machine.json b/qapi/machine.json index 685e4e29b8..51b06d7cba 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -1413,6 +1413,32 @@ } } =20 +## +# @SpmMemoryDeviceInfo: +# +# spm-memory 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': 'SpmMemoryDeviceInfo', + 'data': { '*id': 'str', + 'memaddr': 'size', + 'size': 'size', + 'node': 'int', + 'memdev': 'str' + } +} + ## # @MemoryDeviceInfoKind: # @@ -1426,11 +1452,13 @@ # # @hv-balloon: since 8.2. # +# @spm-memory: since 11.1. +# # Since: 2.1 ## { 'enum': 'MemoryDeviceInfoKind', 'data': [ 'dimm', 'nvdimm', 'virtio-pmem', 'virtio-mem', 'sgx-epc', - 'hv-balloon' ] } + 'hv-balloon', 'spm-memory' ] } =20 ## # @PCDIMMDeviceInfoWrapper: @@ -1482,6 +1510,16 @@ { 'struct': 'HvBalloonDeviceInfoWrapper', 'data': { 'data': 'HvBalloonDeviceInfo' } } =20 +## +# @SpmMemoryDeviceInfoWrapper: +# +# @data: spm-memory device state information +# +# Since: 11.1 +## +{ 'struct': 'SpmMemoryDeviceInfoWrapper', + 'data': { 'data': 'SpmMemoryDeviceInfo' } } + ## # @MemoryDeviceInfo: # @@ -1499,7 +1537,8 @@ 'virtio-pmem': 'VirtioPMEMDeviceInfoWrapper', 'virtio-mem': 'VirtioMEMDeviceInfoWrapper', 'sgx-epc': 'SgxEPCDeviceInfoWrapper', - 'hv-balloon': 'HvBalloonDeviceInfoWrapper' + 'hv-balloon': 'HvBalloonDeviceInfoWrapper', + 'spm-memory': 'SpmMemoryDeviceInfoWrapper' } } =20 --=20 2.34.1 From nobody Mon Jun 8 04:25:58 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=1780389994; cv=pass; d=zohomail.com; s=zohoarc; b=kDrg/XLYT2FyIn9ZK3uLoGMXvcDBbFxCXw4ko7n0T8J61kvgnO2MmrEmaZkViTVwoB6Zq166YxRc3L1spV1LHHKkqZIUBEOU2/bYTUPAfYWZdGrmG221f97zfu6qpPNlWjt48aVy+bkH1SESARS7ybt+lnQ3limaDUECTeCaqQA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780389994; 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=NiHfKO1EzROq2cGVjN/AEvULKHJcjaKm4u9uTgX2dHE=; b=bbm5nxBgDC/BUFDiJ7d+9GYkBf1hKadKXNqeI16GnjzoMYIoOL4YReYD0aTuxXeFXmlmisVhL4qgs5gL/TnODBJddtOpNryap4hF22HbLo8C42WT3jaJGiAzxhKCBvkkDT+S4rtx9oaZ41CWKRLLW5RdrojYwBw965bqom4gX6o= 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 1780389994483360.66118474599955; Tue, 2 Jun 2026 01:46:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUKlF-00038l-II; Tue, 02 Jun 2026 04:46:09 -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 1wUKlD-00037Z-Mm for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:07 -0400 Received: from mail-westus3azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c107::3] helo=PH0PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUKl8-0004P4-LJ for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:06 -0400 Received: from DS7PR05CA0052.namprd05.prod.outlook.com (2603:10b6:8:2f::30) by IA1PR12MB6044.namprd12.prod.outlook.com (2603:10b6:208:3d4::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Tue, 2 Jun 2026 08:45:53 +0000 Received: from DM2PEPF00003FC3.namprd04.prod.outlook.com (2603:10b6:8:2f:cafe::41) by DS7PR05CA0052.outlook.office365.com (2603:10b6:8:2f::30) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Tue, 2 Jun 2026 08:45:53 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DM2PEPF00003FC3.mail.protection.outlook.com (10.167.23.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Tue, 2 Jun 2026 08:45:53 +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; Tue, 2 Jun 2026 03:45:50 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NPIpHoZGTRa20xyccPAX+UejdYB11HFsl87k17RLDOUD5crgGO56zjKDqkB2TgAnZsQmtV+rNjGyXnc4oUixrKV8nBhuTzIUGhf6Jd9uZCStYXL0uDf/DXJVIMumRyiypqk/aar+or5eD30zY/TDB3wzFP1EgmDB2lxIDmWp1ZHWn2ltdbZWfK0pbLlBl6BkhmcZb27Ft6zgub634CHbspOn94HWIIcegYykT3tVSZmu1XgHfz8hHud1xMbeWz4NboKlXDvNLa/S+oKFlQoSTIkNhAMZZDBYrhTLxU8g4EMuMsWlrKuz5jby8U64hEEZIN87ItgQYMoe2LDTGluTUg== 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=NiHfKO1EzROq2cGVjN/AEvULKHJcjaKm4u9uTgX2dHE=; b=k7ezij6NEu5JIsmLclTQ0Fy4wnt3CzI5+CIY4j/HDj2JuHApqlYm8mFhbBkEWPJgxAHZq+bXn72kHojbG3Bemt/2N3YL5gai9ntJAMTRcCTApFnbK7RiXi9rHrVwUK8uFCdY16+bliEkWs7y8CCTXjhlviiySh1NUCndloMnKhwF1JtMkMa9SsENL37q4BuLY305t8b7dLDyS4Qgvu9uddKygvGhCS8YJMrClG9Y4JmzFTObZ6lfag2UtN5Rsb0s5tIykALw1RxqYKY417KUONqoJ+4TmI5h3R7gHx0rs+d83OHvgMTEElrH57ys+UFnGb53tUXLtKDjkUM+r6EZCQ== 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=NiHfKO1EzROq2cGVjN/AEvULKHJcjaKm4u9uTgX2dHE=; b=nhoOc1k1XbWspraeXLHE/lrtKFq5FlpImIQhbozTJ9cMTIPxfjz9ivsr5c5jalzbplwORIBbs772NdrYgrt7+YGkykdV8fC4ir3mjZurUNdRhnL+nkIzuL1IOy6LZfY+9z/Jjh+y7t3lIr5gBIz3y0iDrbrQUcAP7Ibz/WcQZo8= 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 v9 2/4] i386/acpi-build: partition device_memory SRAT umbrella for SPM Date: Tue, 2 Jun 2026 16:44:45 +0800 Message-ID: <20260602084447.1100554-3-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260602084447.1100554-1-FangSheng.Huang@amd.com> References: <20260602084447.1100554-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM2PEPF00003FC3:EE_|IA1PR12MB6044:EE_ X-MS-Office365-Filtering-Correlation-Id: f7cd31f5-b0f9-4b0f-c2a4-08dec0835ae6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700016|82310400026|1800799024|6133799003|11063799006|3023799007|18002099003|56012099006|22082099003|43062017; X-Microsoft-Antispam-Message-Info: EecWunHazcWQCHSfxJJXfX4eBlBct8r7nkhxQeYbgP4hsaZXb+QorXMRiXk1W0aJbIUfe+9IWLxH+kxlqV2wMpvLhyqMTQu8cCi0cAkF4sHToYWBbeKr5xmyltcuGD/Srq6HW6Es551/I9cwK+CWXceGNELehMakZ8SJgtRFN3nzVOhg8Sf8/geVQdus4pyw91q3PY6j3QXE+xEZfI1NoNW62XU4e16x0uKrl45jNL/hvJdbrsxRH+IT8imMUywe2QGRiylnZduCxZkg68fmypIQy6TatHFFXQAI4chuaelnlQW7H1/An+mixAQMxSpoGlt69XG1Nbl83F7qrGU5txUR5PmPMrQFsTQzMJsrmWBKdPp8a3RMRcWueLhJu1yOVNFx7IFkDc1ABLNWnlF/dySeVqyakwrkWHjqaBaEDe51op4b7gEkDVGCTgOdCndtyESbjBSqFmk7QRqWvMPKw08HgKXGFztaA2R0g4G9zi3oJQiWqwMMd1NwWeuQpKhD0dxBoii2FIP73GTUmFr3NYbZk0PHp2r5RNNH94ehrsLt/HvtnXnPWtSzXvFjB9uZy6T6Tv5+sWGk2aHaHIhsHt6qLQH94BzEJIa7ywYWse1aH3Jhs/l9lCBM33bea6pce+Oo7I6qp/Xms8K00nMxG3WjfjzcxDwwsnUP4BePORc+V25X0Kxqv1XY/eDUUcuo+IJTZvzRGUhtinMf8nsWw/gKKgPm4l/bwax3lcxe/zEvbvpcRnpY/D7+H1mUESNHfRTFLxBY6fC1npwlXoT4sur3jZlxi391C0z3LPMixIc= 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)(36860700016)(82310400026)(1800799024)(6133799003)(11063799006)(3023799007)(18002099003)(56012099006)(22082099003)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: o1JvQ3+edxyyBhMCIOZLwntKOFLwq6wH9HbpWl0FQ06y5ZJT1tCewZbgNqVyMah/T1xyvGD+jFgfip1qGhvWi3IpfB8f+OWGWPqD9hR0ttbEFlvLMmyoZtf1VsZKWVQq1ISqSYF5/R2g0nfHAv6U/8UfoQp0dDsfBORrVmMuRSj3mySJGFTYOakXzXKYpf4zV1G9zXnH0c6cADkKoPnPmxR+w/9dcENKfqTD5S5In82rlEqwWcp3sikN/Ca7jhWmt0Wr+LEPzopX3VQYsduUkQYRDUnAYObuHGO2MQhpj8Tsd+M2L/rArvjec3NGiRf9UTtAkblsuqmKw5TqIl/ydScXUYF4aewyMytkHZlMk23MGB3HBeL1Spd4A4THR2suUNn9k8XdeNdi9g9uYko5LRTqF4m3yZEbV0LuWf98A2gvUbPpvHYxmAHjnRyDOwFH X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2026 08:45:53.0746 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f7cd31f5-b0f9-4b0f-c2a4-08dec0835ae6 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: DM2PEPF00003FC3.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6044 Received-SPF: permerror client-ip=2a01:111:f403:c107::3; envelope-from=FangSheng.Huang@amd.com; helo=PH0PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1780389996360158500 Content-Type: text/plain; charset="utf-8" Restructure the device_memory SRAT umbrella entry into a per-kind partition: each TYPE_SPM_MEMORY device gets an ENABLED entry at its own proximity_domain; the remaining sub-ranges get HOTPLUGGABLE | ENABLED placeholders at the highest PXM, preserving the upstream convention required by Windows hotplug and Linux SWIOTLB. 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..17de9768a1 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/spm-memory.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; +} SpmRange; + +static int collect_spm_ranges_cb(Object *obj, void *opaque) +{ + GArray *ranges =3D opaque; + SpmMemoryDevice *spm; + MemoryDeviceClass *mdc; + SpmRange r; + + if (!object_dynamic_cast(obj, TYPE_SPM_MEMORY)) { + return 0; + } + spm =3D SPM_MEMORY(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 spm_range_compare(gconstpointer a, gconstpointer b) +{ + const SpmRange *range_a =3D a; + const SpmRange *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_SPM_MEMORY device, emit an ENABLED entry at the + * device's own proximity_domain. All remaining sub-ranges (gaps between + * SPM devices, leading and trailing padding, ranges occupied by non-SPM + * 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(SpmRange)= ); + 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_spm_ranges_cb, ranges); + g_array_sort(ranges, spm_range_compare); + + for (i =3D 0; i < ranges->len; i++) { + SpmRange *r =3D &g_array_index(ranges, SpmRange, 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 Mon Jun 8 04:25:58 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=1780390021; cv=pass; d=zohomail.com; s=zohoarc; b=H2iebYJOHNpwbif68NwBuI86OSlaqmxPyqSP5FsU9ER9cPegnXGQdrax45OPYlWhSaIIlJfyNwmDUHq7k7yIB0zpy6AE9v+B3DWq6aGjUd+U96mEKPyXWOxncS4Rz9liOxqcEGqE1gjIJIiBUVtaydNJh/0eOTiOHriPyVLnriw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780390021; 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=g2lc5FhLKbu/2VxPAZyW9yLxXpW9Yfxv4ezY11W468g=; b=Smo5mxdEU2UXCC9PkFQBMzeXUWtNXtK6yCLFiIBJt3njaI58mFQUW9seui2quB4dKrQX7mV/cWX1l2tnzxK4IzLfECfY+OLuDJpxwbIBwEqfw9QttxK5Z1rbLFmbN/UcNl8uVakfnoEFimLTDLrv81VLsbaZcEF8U8/bYqByaC8= 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 1780390021108448.69587334390746; Tue, 2 Jun 2026 01:47:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUKlI-00039N-64; Tue, 02 Jun 2026 04:46:12 -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 1wUKlD-00037a-Mw for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:07 -0400 Received: from mail-southcentralusazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c10d::3] helo=SN4PR0501CU005.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 1wUKlA-0004PP-Ox for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:07 -0400 Received: from DS7PR05CA0055.namprd05.prod.outlook.com (2603:10b6:8:2f::15) by CH0PR12MB8506.namprd12.prod.outlook.com (2603:10b6:610:18a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Tue, 2 Jun 2026 08:45:55 +0000 Received: from DM2PEPF00003FC3.namprd04.prod.outlook.com (2603:10b6:8:2f:cafe::b) by DS7PR05CA0055.outlook.office365.com (2603:10b6:8:2f::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Tue, 2 Jun 2026 08:45:55 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DM2PEPF00003FC3.mail.protection.outlook.com (10.167.23.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Tue, 2 Jun 2026 08:45:55 +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; Tue, 2 Jun 2026 03:45:52 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xpgi5uzwsygKAz7un1s+HSdDXCL0DvmngLjTExZLx7N5xgEC8MlIZhBvpNp+e4XcTw69KI8kFdZaqgj0ZgQ1/b0086Zx0wOolIgKleIC79DmGzZsqkieyu4BLh/PRz6+PIktCgE03O0HzYy/Y0jXEKjRAJPQWGEcqfe67AP+9VEBXhey9lmJFZrzOAPSYXkhB3c8dKLBFK9SwfG+JSoPkIFpv7+0hyT6hGjnaX0uEYXA5PNjrcay7R3XVCQlTGLH/h8eo8IZWHc2o479q04vrP9pEmdHUFi6W19KYHsD0To04g01XMk/gjI72TPUYkaNh5rhPOlds79/X2OetKc13w== 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=g2lc5FhLKbu/2VxPAZyW9yLxXpW9Yfxv4ezY11W468g=; b=UHzt3/h3uwY4agLgvx7SeqbtAGqH4qgIu3ur2uV2gLjKv8M2+rKWtEUF8US9Dbz8CuQ6ulFeZUYcqSPoqoSjyCVRohdwUtL+6X50/Bq+ZYffF6Yy8RQp299EJo+E7JmE3HKAy6nTNv8IFsj2sM9zo+ilPeI7OI5R6VGJ8L+jrWmPv/Bgp4ndfE4LMB4CVXr6g2A/X7scVAHZM/0IQGscZm4HSKopovcavcNfmK921C2pdkaE1qudu3BwoRjQvJ/lw81mWRZULT70ieg2G4B2JD4SYfpFmKTUzuCBXjQGWdgaenhPABPJy45GepQnqjdl45RFJhNRxdV7/KinTznfrA== 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=g2lc5FhLKbu/2VxPAZyW9yLxXpW9Yfxv4ezY11W468g=; b=fp9gD/vzV4XM3a4topaofVT7q9er4hsR0wxdF5x3CEvq0d2utEmm1CTu1GqQ2X9dTxMwXw2kU7/Ew+zvFA2vAA3xCyfuh2oo6dz9DJ7t+dIGTnGku+TmSJzQYNwdFnyccZ2FeMFhjQ9pWAeLfYkBUeP26xYIdzCbDmr0z2sFifk= 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 v9 3/4] hw/i386: integrate spm-memory into the pc machine plug path Date: Tue, 2 Jun 2026 16:44:46 +0800 Message-ID: <20260602084447.1100554-4-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260602084447.1100554-1-FangSheng.Huang@amd.com> References: <20260602084447.1100554-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM2PEPF00003FC3:EE_|CH0PR12MB8506:EE_ X-MS-Office365-Filtering-Correlation-Id: 8eafd943-92e0-433d-1af0-08dec0835c37 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|36860700016|82310400026|18002099003|22082099003|11063799006|56012099006|43062017; X-Microsoft-Antispam-Message-Info: Nz5lllfTVkKHqITcrmsN0SXXK4JxlTvMQZHavCXaMmuEZsbDMAkoD1yS7z4aAXVlJGhvGSr5wowNQu+TrYmB/hb3SMbgN9URaSZ8pXnUy9tcpS3hs9LMPo+KlZIWoBOFAFBblCvnmiEQ8P7ULGfOsOxC9kxP2+O7Mn90ccAcluAR6DY4gY5BnSKIJylEsVGXizVMD2B1FanrQ4dd9Jem3HLywXrf0IySlIGdONyJ1INafsK0Gj/5IejsG5MHJ6V1VTB/lMr5THDym81SX8MXDvCTJn6bgINWT/Vu7kZCXFzv/N9DAQ0SezZXncyapR2h88fomaDTNR/AS8KuhmyD6mkO+C1l9fdfhtZo4BkOWosUsOLFe/HLyw68zIZKpSqUyOHJl+BRxJ9iV9iWiayDXsjyL1kXNONb/Gky4S0bFUFyPjsf5Q9udkioZxQ+sLmHJBTLkY9KgBBe/b26F9RxpPJYUvPXs7wT2NMNytCx2Z2l6gd2elxIfPzO6P4XhrA6jSHRsphIJlKHWjh519s8mIFuxuLmj7iPy/tzikymLJ/uL5vX49Ex5amUMMtPoJpyGmIeKFwNEjDx0xgxrnPFM4R5kdybL8EE1yWGcl94R8Lkgg/WTCLUIeGjefSMjH9wlpUS0mt6iskcg1HVc3P49Ru0f3pm8iYpFxAFG5BkogQUNg6fdRiTP+QaL9L9LT+DubmYGP+B/x+Vkx7SO1dkKinfHDITjJEfJMrCo4VAmFtajcsP14YdpBrtbr5TMJYKa0A3Kdi4DzQE6qpnpfeAhw== 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)(1800799024)(376014)(36860700016)(82310400026)(18002099003)(22082099003)(11063799006)(56012099006)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NGeISX7WhQT9sHvTDtapH/vbH2Hsu2u7oMQvD0yn+vUg3wwGAxU6TH3c3Bjlv3SBMKJSVmMcIMz4aF3GUEyOT4wHLj0R95/TGY2iueEpG1v2C5BrT6dLU1P5hnhLdFK4tp6o6vzP3xNSFdnkT5uR5Z3Eh8VZHwSs582VHcpdUV2TiX+nYfhKcUn4KwAkgLwatxwOAF0Aej75QQvG1uY7zzx1/JLImS6yWVTjwrWPefqc0X6MoOsYTmBp1MtFFjghyVotEkWe7b23/KbYBFehae4aDEdFZZ8pp0S6zEOO6CMAXyuIFGKNYeYA93gnOyXA/amU3x/pgh3LDdkSb06qPbhXTn+I840v1fYLOvi/nX8DW8P5j86TzIM8Td/nPhk9O3DT+YAOZxXzdMZH6VX/gQ0PxnoAPsxf6k7cFg+Ca+H+vdioGL++/mCV/XAk/g7O X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2026 08:45:55.2804 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8eafd943-92e0-433d-1af0-08dec0835c37 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: DM2PEPF00003FC3.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB8506 Received-SPF: permerror client-ip=2a01:111:f403:c10d::3; envelope-from=FangSheng.Huang@amd.com; helo=SN4PR0501CU005.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: 1780390023426154100 Content-Type: text/plain; charset="utf-8" Add the pc machine hookup for TYPE_SPM_MEMORY so each spm-memory 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 | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 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..66d8a684c2 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/spm-memory.h" #include "e820_memory_layout.h" #include "trace.h" #include "sev.h" @@ -1283,11 +1284,42 @@ static void pc_hv_balloon_plug(HotplugHandler *hotp= lug_dev, memory_device_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev)); } =20 +static void pc_spm_memory_pre_plug(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + SpmMemoryDevice *spm =3D SPM_MEMORY(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; + } + memory_device_pre_plug(MEMORY_DEVICE(dev), MACHINE(hotplug_dev), + errp); +} + +static void pc_spm_memory_plug(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + SpmMemoryDevice *spm =3D SPM_MEMORY(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_SPM_MEMORY)) { + pc_spm_memory_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 +1356,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_SPM_MEMORY)) { + pc_spm_memory_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 +1402,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_SPM_MEMORY) || 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) || --=20 2.34.1 From nobody Mon Jun 8 04:25:58 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=1780389991; cv=pass; d=zohomail.com; s=zohoarc; b=BpC9pOZzKoVPapFEhXBPpWQL5qGX3uWyxNxjA6/mBhqXtxzSMwIArZUM3++9SlKaZoNuMwcYDI28gKo/PrKTm/RRw2kuKEYQCye7ewJVrVZFDxCn2fO/RcxENv6pIfDLl4yZtLQ80pd3FSNx1oY0CUoEVlRuKMoVvheHwaePbN0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780389991; 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=XYb+NBu0FX5gAhnxINL4VLT6LlAFJgLBG6KtQAM0MAI=; b=H7D59PUKCdkFBXo2LZH8XA+2Pq7VJ5Vk3SmJWvbXjr4dk2CtqzVQcwEoDBJvYFxhYTcW359L3SsC4Ud0sSK1MFhnDSoCdtUEC+5A/0g4jGpX4bAuIgHIyyfN+/tjQqesr7g1pgAtpfNMJ0Vbfr66/38ht633A9cU9lf7f925z7o= 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 1780389991620727.2079860281221; Tue, 2 Jun 2026 01:46:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUKlG-000394-Iy; Tue, 02 Jun 2026 04:46:10 -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 1wUKlC-000373-Lg for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:07 -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 1wUKl8-0004PD-IU for qemu-devel@nongnu.org; Tue, 02 Jun 2026 04:46:05 -0400 Received: from DS7PR03CA0066.namprd03.prod.outlook.com (2603:10b6:5:3bb::11) by CH1PR12MB9719.namprd12.prod.outlook.com (2603:10b6:610:2b2::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Tue, 2 Jun 2026 08:45:57 +0000 Received: from DM2PEPF00003FC9.namprd04.prod.outlook.com (2603:10b6:5:3bb:cafe::af) by DS7PR03CA0066.outlook.office365.com (2603:10b6:5:3bb::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.16 via Frontend Transport; Tue, 2 Jun 2026 08:45:57 +0000 Received: from satlexmb07.amd.com (165.204.84.17) by DM2PEPF00003FC9.mail.protection.outlook.com (10.167.23.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Tue, 2 Jun 2026 08:45:57 +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; Tue, 2 Jun 2026 03:45:55 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kHhvjzDJoA0Ow8ThLp56nCYd9OxRcYAPZmFQyycjFQs5mZBFcV55e94+KURk8rBGPfPXcPDwyx6/+yLHpcy2XHvgrmu0bpsh/aW5cfrxjjgPe08mG6+36MXa9B9wCIMBNFN0esVP1gso7HFCQXZSXl1D8j0Ni6kCZ+wTbs3ym5lJC/dHoImmWihQduidvovPFvXzaEUGv592qwdcfvRmXTAh+LyRLqwBzqwt1U/b5oW5YQUtVihsD3S5W0oVhpd6aYPqUVlKDD+62C7am0Pj4BdZsDxm7cNAlqp+gAQXbIDgtnSjaktFi67d2Xbo25zEuauU0PezMoE5XjfhddPPUA== 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=XYb+NBu0FX5gAhnxINL4VLT6LlAFJgLBG6KtQAM0MAI=; b=SVLkPuc/23nd0GeaXbjr7kf4mxGBHDYYbzoQa93IhYAEYRlpTeduUbLEPo8JN7QN++XLkvGuslXJEYfsWQ0dNm4I/D5t6u9/6njWuePvPJoILg7cUFiqhICedqJtPy5xyFBT9a4uebGfvJ/8kFy4umZJ/jNR+RbKMQWs/njGcPAvnyEhd1KXxi2eMBzJR7cAQPwEaqdGev78Rb2xj/yMXxEcelIAoxZ0jNcLp72z/khejjtqo9dB7PXkWxjEldyO8SoXpxdXMKkTjymQzZj16Z6aN1+G8dLF6Aru9YIVmKTjxPogW8xgitaYtl3rNx40SyivHVDy9qUXom/vDq/JLg== 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=XYb+NBu0FX5gAhnxINL4VLT6LlAFJgLBG6KtQAM0MAI=; b=xhsa7B6BvBABloE+JbExXg55Tl0OJ9grlH+VXaCLiVqtUvvCarUmg6QQOBlLELj76SrZIJWSLarCC2hCKTw326f6PN2+cld6Xr9q1pwhAtF9bKrGN/oF1ZbjtEmhqRvyETjZA60Ab9L6/tZEW327jCyplO4a2tMwgMOCzYMIkR4= 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 v9 4/4] MAINTAINERS: cover spm-memory under Memory devices Date: Tue, 2 Jun 2026 16:44:47 +0800 Message-ID: <20260602084447.1100554-5-FangSheng.Huang@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260602084447.1100554-1-FangSheng.Huang@amd.com> References: <20260602084447.1100554-1-FangSheng.Huang@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: satlexmb07.amd.com (10.181.42.216) To satlexmb07.amd.com (10.181.42.216) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM2PEPF00003FC9:EE_|CH1PR12MB9719:EE_ X-MS-Office365-Filtering-Correlation-Id: c01f37ae-af8a-40fe-fb30-08dec0835d72 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|376014|36860700016|22082099003|18002099003|56012099006|11063799006|43062017; X-Microsoft-Antispam-Message-Info: K/jRQ2q5tCpruE7tdQ1qVEZchxJMGI+t5gmmB/2LYgDQv045PbkTNL4LD0XiWGJ7W0+M76zeU3MXTjabtNpTbJWLfMUXWoNpERVcoIM9Di5pnD5GiOdaMsZUduEnhMnkmw4Io+yA0keR6z6YCjbvRKJkx58emwEU3gEH47RCDTuhyvWoyxaOsIHjjJ2xMcs/5+yW3wvKsoGzpvg32HXeHP1bgIrY/zgFBd1mLIEuOc4Sp+YG0zVLTmA9+0HiGauMYB3vo+wvvV7Q+oj9hp0/xYVELp99w/jWGqh5jnY51qgMvSens/B5Krc3iFFDl3oC0P7Ly2LgqSswlqLIcyaKMqf+vvgf+8ACC92KEsGxxcllWEYdKP0TUb2Loq3MDB+BVSbHjh7aZWIOPiZaZ66/QUm2rLjQNwdWG1lxeUANTX0kW+h7aAmBhsidlbxGpORpZHOwVzOLe1x5oDmx4PqIO4U1BNKfskqQnGm1EEVPTsHUfmVd0IxZCuywNTcBRFuKkCUR+C9I4wsON+TtYCZwQfGI3FmYEoPNdBMaDA8ELkmD2bJf3149tlwy/9vQDVLBCrtcSto2teCeuoAkynRxNay6BOqyzCoD3yNUahkgNWEhmcjX6HVdKHIlXmkRnNCojIoBxDtvs0aGf2HIbtNVlXq+tU+/I69+/8u7I+oT22UJfmeR6odNkQUiBHOmI4GPUkt1Jh+rrerWdUC6OSsQnsKLKspKjG8LWVimOy13VjR1drrE9JSph2w56BtGz/PTOsqq3xTqqukaIKw10y75dLpOqBqTHbhyVBrGJjPqR14= 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)(1800799024)(82310400026)(376014)(36860700016)(22082099003)(18002099003)(56012099006)(11063799006)(43062017); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UMBDSmjjIxNVk05z8S6Tn8eruGBFdldLeBkYWCucX0CbqLIrvU6igWeKf5jPKrX/hq3GNL5i2KwbAIfVN6axB7ZJkC+G1TBbi1XJr6uQ8UEOMABmsR5F+9Hfdg2mkq+1gzslqpYtF7ylb6ekbCniaior0+SD5i4JsRebjZ/6senkZ5E7xPSVYVBorc/7jlWKtuHEHEZmoNByYhKOj6qQgm81pwNmpFWXX/lorCQN6Z7JN4zNfsVDhT14ypZxrVPvdnbfafAcAO6JDMBx8KRSPX/ZhZ++jiQAvlc0dUGLuEOOfNXwR7dbpqgOzBAv24zTeSoZi44TL8KgF8dkA+A8GJiXXM/l/a5OJareo5dbQsML7MGQfCiLey+UKwpULDsRm9zhG4Uf8rV/h/avbRjlgj8W16/ULI5mB547IH+SvlAYqUdIVQJsaCek7BKS+kev X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2026 08:45:57.3650 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c01f37ae-af8a-40fe-fb30-08dec0835d72 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: DM2PEPF00003FC9.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PR12MB9719 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: 1780389994095158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: FangSheng Huang --- MAINTAINERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 7752917d8c..876744b29b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3365,9 +3365,11 @@ S: Supported F: hw/mem/memory-device*.c F: hw/mem/nvdimm.c F: hw/mem/pc-dimm.c +F: hw/mem/spm-memory.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/spm-memory.h F: docs/nvdimm.txt =20 SPICE --=20 2.34.1