[PATCH 2/3] x86/sev: Create /sys/devices/system/cpu/sev/ for all SEV guests
Jörg Rödel <[email protected]> Mon, 3 Aug 2026 14:58:26 +0200
| Newsgroups | dev.linux.lists.linux-coco,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Joerg Roedel <[email protected]> The SYSFS directory for SEV is only created for SEV-SNP guests right now. Change it to create it for SEV and SEV-ES guests as well so attributes available on all versions of SEV have a place. Signed-off-by: Joerg Roedel <[email protected]> --- .../ABI/testing/sysfs-devices-system-cpu | 5 ++-- arch/x86/coco/sev/core.c | 29 ++++++++++++------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu index 82d10d556cc8..63586e299aa8 100644 --- a/Documentation/ABI/testing/sysfs-devices-system-cpu +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu @@ -694,10 +694,11 @@ Date: May 2024 Contact: Linux kernel mailing list <[email protected]> Description: Secure Encrypted Virtualization (SEV) information - This directory is only present when running as an SEV-SNP guest. + This directory is only present when running as an SEV guest. vmpl: Reports the Virtual Machine Privilege Level (VMPL) at which - the SEV-SNP guest is running. + the SEV-SNP guest is running. This file is only present + when running as an SEV-SNP guest. What: /sys/devices/system/cpu/svm diff --git a/arch/x86/coco/sev/core.c b/arch/x86/coco/sev/core.c index ecd77d3217f3..5770b99feb9b 100644 --- a/arch/x86/coco/sev/core.c +++ b/arch/x86/coco/sev/core.c @@ -1433,14 +1433,7 @@ static ssize_t vmpl_show(struct kobject *kobj, static struct kobj_attribute vmpl_attr = __ATTR_RO(vmpl); -static struct attribute *vmpl_attrs[] = { - &vmpl_attr.attr, - NULL -}; - -static struct attribute_group sev_attr_group = { - .attrs = vmpl_attrs, -}; +static struct attribute_group sev_attr_group = {}; static int __init sev_sysfs_init(void) { @@ -1448,7 +1441,7 @@ static int __init sev_sysfs_init(void) struct device *dev_root; int ret; - if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + if (!cc_platform_has(CC_ATTR_GUEST_SEV)) return -ENODEV; dev_root = bus_get_dev_root(&cpu_subsys); @@ -1463,9 +1456,25 @@ static int __init sev_sysfs_init(void) ret = sysfs_create_group(sev_kobj, &sev_attr_group); if (ret) - kobject_put(sev_kobj); + goto drop_kobj; + + /* Add SEV-SNP specific attributes */ + if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) { + /* VMPL */ + ret = sysfs_add_file_to_group(sev_kobj, &vmpl_attr.attr, NULL); + if (ret) + goto drop_sysfs; + } + + return 0; + +drop_sysfs: + sysfs_remove_group(sev_kobj, &sev_attr_group); +drop_kobj: + kobject_put(sev_kobj); return ret; + } arch_initcall(sev_sysfs_init); #endif // CONFIG_SYSFS -- 2.53.0