From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11010051.outbound.protection.outlook.com [52.101.193.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 761D136897F for ; Thu, 30 Jul 2026 01:50:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.193.51 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785376251; cv=fail; b=f8K4+hLoL9hNLWrq6g9kqF5n7TtexYCJRMGsHPQCbWjLyT6eHESOVBVhtwGSPH8/YQEyPUZR4paUJ36IavBhOpbRF8WP6tUzO42OBpPkph1sypi7Jv7S/EHyMBOaj4FG4s1c8s48NA436tZP3v5xUnlbsHK6HOhC26cTlECYXSE= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785376251; c=relaxed/simple; bh=58TpjCcnfiO1fyP+7xy2zbCME4Yf+IYTY8OeqSAf+Kk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=irklMQtIrblJ1GB3QEVNUZjlGQJHkwAUwZrMozzDk3qyGFGnuxg0np1aekzWRB1GP1dXYZ5Efev43imZ0N+pW1eGuhji0zonZkWcWi59Xo+r0dryUVov3OAPtcHi0VwBhaJBIv0VcAMwq7ER3Oww47Z69yzgF79m9tdbD9+XS6E= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=pRqznMW0; arc=fail smtp.client-ip=52.101.193.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="pRqznMW0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gRaLeM3ZLmUAMhVk+i5KKP1pNmbn1bM6TFLoxur+kyDCsPvHtvzyUUbhiYNWHcqPRpQlGCYJCVdb7athYFxztT35aOtj6cOEZwyNZ450p4aEO/Tx6Ur+Hf6Py6gf8zgrsr1fpN+czybAWOJx56z/QGO3u9kazGz3e+5+a5kOxZzDwQxlh+t0rNcdq8zYkCauhg9KbcGZyevIHsdjI0cvEb/z/Qz24POCnn6fQxe34LmznkcFHYChZq6AUg/nqa6Gt9AgzLRjL+XZSXKm/syLPeVRHdVHZE4FKGkVhhxflpjjJT4JzXdDYXVAYFmPQzPX5rCZgxoZnISMCa/Of9t/eg== 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=rAiaJRbQmeFmwYAMuPIayHhDlTvfGAfMnrtQz6gE0wQ=; b=S3C1OPRYPq0FCSwkGnLjIvQs/aCu1xkXlrH7U3rb1uE9K1Jwa9AFfpyCTWlFrl84RZ6a9ccQIARJDDeRh6HrE2YHZZiaUUXHmNgEClMhbz2tWJ2oQWyiJQImhfJe8pIbbXbeXBBcRiM36x0tBnaH43XNyBRWDpkPH+53Xg7nkRAee4RuaTVUqL7u7s1AkJNqmw11qc66dn7DGwRXzUBTVMWOAMkoI1CEoCK7iUAjZ4IiWU1/M7BGD5jFFt5m6eYVRkBqQWZLtRb0jxnuWg3w6pmP+CEMhFC61WtqO2zBolSspnvUXYYuhGMv37grvjmu7EQV6FWhjeCknmzrQeOdNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.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=rAiaJRbQmeFmwYAMuPIayHhDlTvfGAfMnrtQz6gE0wQ=; b=pRqznMW0i3we7aIy1WHh0ZUw4qji4YZF54dcRh209viqGH/Saxvfbt1QVUA5S/hcFmGDXCjtCkiSBKvtgKANzfn1MxAAF/dwc7XdoCgMBE9Aqyk4vBqA/Uv5emJpifuO90PseyqGrSSqwDh37Zsyn0rWdbjBDbyeCpApMque/p4= Received: from CH5P223CA0011.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:1f3::20) by CY1PR12MB9603.namprd12.prod.outlook.com (2603:10b6:930:108::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.13; Thu, 30 Jul 2026 01:49:51 +0000 Received: from CH2PEPF00000140.namprd02.prod.outlook.com (2603:10b6:610:1f3:cafe::63) by CH5P223CA0011.outlook.office365.com (2603:10b6:610:1f3::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.270.14 via Frontend Transport; Thu, 30 Jul 2026 01:49:51 +0000 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 (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 Received: from satlexmb07.amd.com (165.204.84.17) by CH2PEPF00000140.mail.protection.outlook.com (10.167.244.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.8 via Frontend Transport; Thu, 30 Jul 2026 01:49:50 +0000 Received: from purico-9dcchost.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; Wed, 29 Jul 2026 20:49:50 -0500 From: Melody Wang To: CC: LKML , Tom Lendacky , Melody Wang Subject: [PATCH 3/7] x86/sev: Allow the guest to configure interrupt vectors for the hypervisor Date: Thu, 30 Jul 2026 01:48:43 +0000 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain 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: CH2PEPF00000140:EE_|CY1PR12MB9603:EE_ X-MS-Office365-Filtering-Correlation-Id: 2be2d13b-26b4-45e5-8dde-08deeddcd835 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|82310400026|1800799024|36860700016|18002099003|22082099003|11063799006|10067099003|56012099006|3023799007; X-Microsoft-Antispam-Message-Info: uRyZK03yB9n8Q6gEfTPx/ENYbkihJKj8BARgF3WbbLI7iBrLS3XYJZllEP/l9dEsApar5YLXjmcDEWJAqi9lP4QQDRNVZjWxAMzbtFklRl9fcKpb+isSNWTmq6/9EJDuhKKG+/+9o2jiSHW/Eu/rp79RgmJeVEBsHC9Ac9C/L0aD5VmrcoW4N/7FpTzLeCVMvG1/35ksGtkCn4Yl0szKmv5GU4zFmYWYFeaBcLkI6QNeiESRHLlwDapyMVdTl2D9fQ9DaMN8nfM/s5v5YShYqegjIVg19F5YsenwbnisNw1EczPXPYsTLRnILE1PygpLb179WeAqAUI0IpF2vGL9dZpScdkwYWfW4ToaJJ0YsZzN9NpXwjyLsqDrGZd6TYrWirOysaJ7GhU6cFOiPWzvUKn1b8xUyFu/o/CVgVx1lVTUko10VmuhAiplt7HYhCCaAhr31NCjqyQa7FVcCrLRAZJqFn59RpoMkNML9GX89gO5/nZKdHSzxgFPjoLF/iziodrxy4RuGM4uEsoV/32vgXRNbh4qb1+E1YRh5J+inkbFNYLfWbL9jhyDIS4DGW5djZVqYBhjX3z6CrkybI7TcH7ioDWnuq3kE6to/RAw8uC7Xi54UtD8jJy+JMDXei9bfWludBkD33GUViFVsCQIeOUZ6XMfbe71KVyB+T/W8QUPWNBWhp+p+rffoGYs8i0odzNHJXGYssihSK1kPhocSg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(23010399003)(82310400026)(1800799024)(36860700016)(18002099003)(22082099003)(11063799006)(10067099003)(56012099006)(3023799007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aP3NrBGmvcfEFywiM6PoGqYwbxS3qtvp1wujIOHYykwfIKOgxpw8Q6gwcOge5EGK7Xo1dOV4fL6VdXVXt6WgkZCljZCb6a6vhPy2XGKboHpt1x+2u+ayRyIlo7OhQJC8y8Pkpie4FRcsBnJZ3X76HewUKNJt9fPqpPVYnbVfl2BqS1uu4kPLoXwKq6eTJCbCDc2ab8lXHUO5sZM6QaG7HG+uuhnQiXR2jdameofHtLV66MwfARhdQ07QxdzwVVoEJVCbX2qqL0h+z/dBajZMJVHQJMwz7KBfgFkib46k/BwWof1oBz5jynVNdyrzoQV97WCE3sfadwRm8SgPA8QkMUocMsN9xCsFZkJJ0AO8rknSqeERrAroo+NQ8n6of+zmw3RddZhCM943EB56vKlV/5XTJ6A8aX0iusP3vqvrUAfoAAYpBDdfyeT+WQfctwSR X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jul 2026 01:49:50.8632 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2be2d13b-26b4-45e5-8dde-08deeddcd835 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: CH2PEPF00000140.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB9603 The SVSM APIC protocol supports 5 API calls. SVSM_APIC_CONFIGURE_VECTOR (shortened to SVSM_APIC_CONFIG_VECTOR for brevity), call 4, provides for the guest to configure an interrupt vector which the guest allows and the hypervisor can use to signal interrupts for it. Implement this call, and make the default interrupt setting permissive when detecting an SVSM. Signed-off-by: Melody Wang --- arch/x86/boot/startup/sev-startup.c | 15 +++++++++++++++ arch/x86/boot/startup/sme.c | 3 +++ arch/x86/include/asm/sev.h | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/arch/x86/boot/startup/sev-startup.c b/arch/x86/boot/startup/sev-startup.c index 789e99d38d17..8dea0548e004 100644 --- a/arch/x86/boot/startup/sev-startup.c +++ b/arch/x86/boot/startup/sev-startup.c @@ -191,6 +191,21 @@ static void __init svsm_setup(struct cc_blob_sev_info *cc_info) boot_svsm_caa_pa = pa; } +/* Configure the APIC IRQ vectors with Alternate Injection */ +void __init svsm_config_vectors(void) +{ + struct svsm_call call = {}; + + if (sev_status & MSR_AMD64_SNP_ALTERNATE_INJ) { + call.caa = rip_rel_ptr(&boot_svsm_ca_page); + call.rax = SVSM_APIC_CALL(SVSM_APIC_CONFIG_VECTOR); + call.rcx = SVSM_IRQ_ENABLE_ALL << 8; + + if (svsm_call_msr_protocol(&call)) + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED); + } +} + bool __init snp_init(struct boot_params *bp) { struct cc_blob_sev_info *cc_info; diff --git a/arch/x86/boot/startup/sme.c b/arch/x86/boot/startup/sme.c index c07a2c381ed1..664e7a549b34 100644 --- a/arch/x86/boot/startup/sme.c +++ b/arch/x86/boot/startup/sme.c @@ -566,6 +566,9 @@ void __init sme_enable(struct boot_params *bp) physical_mask &= ~me_mask; cc_vendor = CC_VENDOR_AMD; cc_set_mask(me_mask); + + if (snp_vmpl) + svsm_config_vectors(); } #ifdef CONFIG_MITIGATION_PAGE_TABLE_ISOLATION diff --git a/arch/x86/include/asm/sev.h b/arch/x86/include/asm/sev.h index f958f78e1db8..f8a5b5cf939a 100644 --- a/arch/x86/include/asm/sev.h +++ b/arch/x86/include/asm/sev.h @@ -34,6 +34,13 @@ enum es_result { ES_RETRY, /* Retry instruction emulation */ }; +enum svsm_vec_enable { + SVSM_IRQ_DISABLE_SINGLE, + SVSM_IRQ_ENABLE_SINGLE, + SVSM_IRQ_DISABLE_ALL, + SVSM_IRQ_ENABLE_ALL, +}; + struct es_fault_info { unsigned long vector; unsigned long error_code; @@ -518,6 +525,7 @@ void snp_set_memory_shared(unsigned long vaddr, unsigned long npages); void snp_set_memory_private(unsigned long vaddr, unsigned long npages); void snp_set_wakeup_secondary_cpu(void); bool snp_init(struct boot_params *bp); +void svsm_config_vectors(void); void snp_dmi_setup(void); int snp_issue_svsm_attest_req(u64 call_id, struct svsm_call *call, struct svsm_attest_call *input); void snp_accept_memory(phys_addr_t start, phys_addr_t end); @@ -626,6 +634,7 @@ static inline void snp_set_memory_shared(unsigned long vaddr, unsigned long npag static inline void snp_set_memory_private(unsigned long vaddr, unsigned long npages) { } static inline void snp_set_wakeup_secondary_cpu(void) { } static inline bool snp_init(struct boot_params *bp) { return false; } +static inline void svsm_config_vectors(void) { } static inline void snp_dmi_setup(void) { } static inline int snp_issue_svsm_attest_req(u64 call_id, struct svsm_call *call, struct svsm_attest_call *input) { -- 2.43.0