From patchwork Thu Feb 20 09:53:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chen, Jiqian" X-Patchwork-Id: 13983600 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E9A85C021B3 for ; Thu, 20 Feb 2025 09:54:52 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.893726.1302587 (Exim 4.92) (envelope-from ) id 1tl3GL-0005fr-74; Thu, 20 Feb 2025 09:54:33 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 893726.1302587; Thu, 20 Feb 2025 09:54:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tl3GL-0005fk-4T; Thu, 20 Feb 2025 09:54:33 +0000 Received: by outflank-mailman (input) for mailman id 893726; Thu, 20 Feb 2025 09:54:31 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tl3GJ-0005fY-FE for xen-devel@lists.xenproject.org; Thu, 20 Feb 2025 09:54:31 +0000 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on20622.outbound.protection.outlook.com [2a01:111:f403:2407::622]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id ad3e8c42-ef70-11ef-9aa8-95dc52dad729; Thu, 20 Feb 2025 10:54:29 +0100 (CET) Received: from DM5PR07CA0108.namprd07.prod.outlook.com (2603:10b6:4:ae::37) by SJ2PR12MB8977.namprd12.prod.outlook.com (2603:10b6:a03:539::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.19; Thu, 20 Feb 2025 09:54:23 +0000 Received: from DS1PEPF00017091.namprd03.prod.outlook.com (2603:10b6:4:ae:cafe::d1) by DM5PR07CA0108.outlook.office365.com (2603:10b6:4:ae::37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8466.15 via Frontend Transport; Thu, 20 Feb 2025 09:54:22 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF00017091.mail.protection.outlook.com (10.167.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8466.11 via Frontend Transport; Thu, 20 Feb 2025 09:54:22 +0000 Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 20 Feb 2025 03:54:19 -0600 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ad3e8c42-ef70-11ef-9aa8-95dc52dad729 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IDqMY78f7/YpH8rG1+o5yzcMkO3g4kSWtfWOV+iA/MuvOYRSGlUpqyEi4qtm3vyD9NCCOChV1+WQxPRYR6YcgfjdWwyzYK6H2GD3FNHFs5lZdNGsrbzDOj/fKOB8nb7yVMHrpvNZGTbL8qEMly8+/WRnAYsMj4ed5oKGLJyMI1+YPzrP9MZbjabgzxHiU7VNsVpnmTEFl98KJXUJ46pKZ2j2aZgFebetiDNbp7gOHF17d0SdLJXA1J3s6PhFuQtS6leJpQd2cc2WVc/+nMuFO0kT0mP2T+P7LqRI3frFCoRw/LV1wpnDYj5BJ11HgfjilzUq3M/2JFjAZ6ZkYsQsKg== 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=jguRpQumSYfrCTS3CNMWJUYQXN7iVHAgzHE7mZNL2Eo=; b=rbFjmJ3O0mdgTSgZUdnbHzjlGY0Gg14N/Vs4v+ppNM14IZ0Qi3ENiAKgH8EiqC1P7Ld++mONwEfNT0g4oPFNecZdEnWmmIyVGULblbnDSHm0c8GL+yNFtGOzCgtblqo1eiygKC/1AUN6iB9mW0zp/bsU7kTfVOFA0Z9AD/KZ543E2d2RCY+qV6n8xCc99QhSVjWZ86v7ffusMVVa2qoEH52LbYSJsRLGVQPHZf3rqHIMJS3nY5UaB3KAg5xu0pJ8fA2ifZ8Wzp7D1iOcnFrBs8STPkpfVjwQ6SMDOOlRrPKTSqXKw1Zy8U7gSz7DJXI2mWSdwJ5/R8VNX/a1LYkBZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=jguRpQumSYfrCTS3CNMWJUYQXN7iVHAgzHE7mZNL2Eo=; b=C728JsQlx7iSnI078/4lWp6LhvgdiQa/5WXWkLHQoaK5yO+p7s145SsVY3NoJexiYiloAZ2fhHUxtDvyJ852K+4wAuMEq1TaJRuHeIPmL4/E4+vr5z1NkBJTgd6rTrDIZKD8BaiJjQndh7+fyFfyRsk4BNlUgkk4IZ+HvyOpTx4= 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=SATLEXMB04.amd.com; pr=C From: Jiqian Chen To: CC: Jan Beulich , Andrew Cooper , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , Stefano Stabellini , "Sergiy Kibrik" , Huang Rui , Jiqian Chen Subject: [PATCH v2 1/2] x86/hvm: make stdvga support optional Date: Thu, 20 Feb 2025 17:53:48 +0800 Message-ID: <20250220095349.1823593-1-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017091:EE_|SJ2PR12MB8977:EE_ X-MS-Office365-Filtering-Correlation-Id: 69852a51-fb9c-44e2-8b02-08dd51948d53 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: aLBW+Hqk4Vkgz7LZ7bVLMBzTCnnluqCJOi13OMZl2vaCf5ZdAwzICm+RrKFUQSSU5xDeEwMQO24X1JvIRPlNRORBRazUpdPziPzI40OGaH68qONs9OoBo6FbaAKcd2ceCF7408yHWrhpD+M8pkGRy2vnMLtxhEGvugbz+3b7knwsqhIwjFwPyozj2sKjzwFbr95M/D2EVqUT1L8qINYxaRS4QHixg+KGjCoXpYtoqpudCo5nNLkCOeUFxzlXpRvGr6VTIkFT5AvVQM6pZpE7gVGrjKpkdUwb0GjYQKwmg6iL/g7KhaMJTVR0H5AfayV7FQzmnFdtDPbkOR57hyowZ87uo1NGICuKsGrGghx2ThUcx5dngscna1NeC87BqRIn+PlDl+/Z05ciDkVkyFez60bwRZ6q+ug7rYnhMEkm8xtgRQAqcT0nrGLc5mcyTGnfIbLosVtDYfImQBvV2Eozmk/6uHBd27CxyZdwqW+tQkZsas8iFUa4qa1i1jjdlgYKfGADuRT5xr1MZL3vmB6xsyI33pxN9RyoyLT4lp/1YNgnCj8SI0cNQ2Bts7u8+ROszghowIDTmA7VuvxY+XNFLbePjPzzOaOG9yyVCysrABPaae6fHfGeS2SCW2HbBjDfp9UfCSCIKlAeFC2Y3ioNclWym8qD8sPSAOizJcwLVFPDrYP6PkU0IWMYrnVW65sY19gNk7o+nw+ntlVJuEDdt+FfDuUayHsUsBGobe25edKC6hf70jsMCQD9zbKjUy0syX1UicpMtJBgvZgozdQ7IjpRkt9oPARvkYYXXfo1gHl9WGk/oSpkJXDyYcFR4yJpvmvLTUcdAh9dHjJlGB9AZPPyfTUmFjMA6inGpk1au9cLAYaLx/u8+lShrgC/PD+hNeDUQkzMejYS/iT9/bCTS6xfxxD6vAT5qU++nv8Iv+17QjZOltoYPRJHmVh68mqFyHXwYVDDuuK9mCe2aYEb26iytPHfAVxlQM7qhuJDu/vTt0GoVHW+YJwn6v1vEdxCS7DTZvsqDw5Nr57mHRAMspHPkO9xNdX70Sr++TTlDRzVj8j5Lf751lBKyrIJWPh+YkbQJp513iyLmohCXdgANtlb+cNSgDTjbU7N9sCqe5KZYdIS9K4YUjaNU4URY7cQHs6vjv96Zo+i88FO01TlMDlu5lZL0vlNuhMMVlRoJOnlZStR06z6glYuUrWOqbcQcnrygN1f/Vh8dgftM8lCTEpOyY9+IHYUNqF6kDdgX4adOsww8KW+c2/mQOc1VDRhiWyj9p6SDSfvPTubRcBL3cWMhGpVUTSzAYGG8cti6MI/pgshlZb16LDIcKZONcKabA2uVvVCeWzkTR0lQa6xdyG9aLlrlAMo3B/IENzr3c/gOTySvMC4iJqRcEHv+RH4Ub/tdfk1X2t2Kxu77F5H4Ugg5SYXsORDuenY/RIqgCo= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(36860700013)(1800799024)(13003099007);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Feb 2025 09:54:22.3613 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 69852a51-fb9c-44e2-8b02-08dd51948d53 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017091.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8977 From: Sergiy Kibrik Introduce config option X86_STDVGA so that stdvga driver can be disabled on systems that don't need it. What's more, in function emulation_flags_ok, to check if toolstack pass any emulation flag that disabled in building time. Signed-off-by: Sergiy Kibrik Signed-off-by: Jiqian Chen --- Hi all, this is a rework for https://lore.kernel.org/xen-devel/20240912085709.858052-1-Sergiy_Kibrik@epam.com/T/#u. v1->v2 changes: * For emulation flags, added a new file "arch/x86/hvm/Kconfig.emu" to be a separate seletion, and moved definition of "config X86_STDVGA" into it. * Added a new macro "#define DISABLED_EMU_MASK (!IS_ENABLED(CONFIG_X86_STDVGA) ? X86_EMU_VGA : 0)", and checked it in function emulation_flags_ok. * Adjusted macro "has_vvga". Best regards, Jiqian Chen. --- xen/arch/x86/Kconfig | 2 ++ xen/arch/x86/domain.c | 2 ++ xen/arch/x86/hvm/Kconfig.emu | 14 ++++++++++++++ xen/arch/x86/hvm/Makefile | 2 +- xen/arch/x86/include/asm/domain.h | 6 +++++- xen/arch/x86/include/asm/hvm/io.h | 4 ++++ 6 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 xen/arch/x86/hvm/Kconfig.emu diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig index 9cdd04721afa..e4fedf7e54d8 100644 --- a/xen/arch/x86/Kconfig +++ b/xen/arch/x86/Kconfig @@ -123,6 +123,8 @@ config HVM If unsure, say Y. +source "arch/x86/hvm/Kconfig.emu" + config AMD_SVM bool "AMD-V" if EXPERT depends on HVM diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 78a13e6812c9..289c91459470 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -758,6 +758,8 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags) (X86_EMU_ALL & ~(X86_EMU_VPCI | X86_EMU_USE_PIRQ)) && emflags != X86_EMU_LAPIC ) return false; + if ( emflags & DISABLED_EMU_MASK ) + return false; } else if ( emflags != 0 && emflags != X86_EMU_PIT ) { diff --git a/xen/arch/x86/hvm/Kconfig.emu b/xen/arch/x86/hvm/Kconfig.emu new file mode 100644 index 000000000000..aa60b6227036 --- /dev/null +++ b/xen/arch/x86/hvm/Kconfig.emu @@ -0,0 +1,14 @@ +menu "Emulated device support" + visible if EXPERT + +config X86_STDVGA + bool "Standard VGA card emulation support" if EXPERT + default y + depends on HVM + help + Build stdvga driver that emulates standard VGA card with VESA BIOS + Extensions for HVM guests. + + If unsure, say Y. + +endmenu diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile index 4c1fa5c6c2bf..4d1f8e00eb68 100644 --- a/xen/arch/x86/hvm/Makefile +++ b/xen/arch/x86/hvm/Makefile @@ -22,7 +22,7 @@ obj-y += pmtimer.o obj-y += quirks.o obj-y += rtc.o obj-y += save.o -obj-y += stdvga.o +obj-$(CONFIG_X86_STDVGA) += stdvga.o obj-y += vioapic.o obj-y += vlapic.o obj-y += vm_event.o diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h index b79d6badd71c..68be23bf3bf4 100644 --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -494,13 +494,17 @@ struct arch_domain X86_EMU_PIT | X86_EMU_USE_PIRQ | \ X86_EMU_VPCI) +#define DISABLED_EMU_MASK \ + (!IS_ENABLED(CONFIG_X86_STDVGA) ? X86_EMU_VGA : 0) + #define has_vlapic(d) (!!((d)->arch.emulation_flags & X86_EMU_LAPIC)) #define has_vhpet(d) (!!((d)->arch.emulation_flags & X86_EMU_HPET)) #define has_vpm(d) (!!((d)->arch.emulation_flags & X86_EMU_PM)) #define has_vrtc(d) (!!((d)->arch.emulation_flags & X86_EMU_RTC)) #define has_vioapic(d) (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC)) #define has_vpic(d) (!!((d)->arch.emulation_flags & X86_EMU_PIC)) -#define has_vvga(d) (!!((d)->arch.emulation_flags & X86_EMU_VGA)) +#define has_vvga(d) (IS_ENABLED(CONFIG_X86_STDVGA) && \ + !!((d)->arch.emulation_flags & X86_EMU_VGA)) #define has_viommu(d) (!!((d)->arch.emulation_flags & X86_EMU_IOMMU)) #define has_vpit(d) (!!((d)->arch.emulation_flags & X86_EMU_PIT)) #define has_pirq(d) (!!((d)->arch.emulation_flags & X86_EMU_USE_PIRQ)) diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h index f2b8431facb0..32a2490fbcb2 100644 --- a/xen/arch/x86/include/asm/hvm/io.h +++ b/xen/arch/x86/include/asm/hvm/io.h @@ -108,7 +108,11 @@ struct vpci_arch_msix_entry { int pirq; }; +#ifdef CONFIG_X86_STDVGA void stdvga_init(struct domain *d); +#else +static inline void stdvga_init(struct domain *d) {} +#endif extern void hvm_dpci_msi_eoi(struct domain *d, int vector); From patchwork Thu Feb 20 09:53:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chen, Jiqian" X-Patchwork-Id: 13983599 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id ECD82C021B1 for ; Thu, 20 Feb 2025 09:54:50 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.893727.1302593 (Exim 4.92) (envelope-from ) id 1tl3GL-0005j1-GS; Thu, 20 Feb 2025 09:54:33 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 893727.1302593; Thu, 20 Feb 2025 09:54:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tl3GL-0005ih-Bp; Thu, 20 Feb 2025 09:54:33 +0000 Received: by outflank-mailman (input) for mailman id 893727; Thu, 20 Feb 2025 09:54:32 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1tl3GK-0005fe-5N for xen-devel@lists.xenproject.org; Thu, 20 Feb 2025 09:54:32 +0000 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on20631.outbound.protection.outlook.com [2a01:111:f403:2412::631]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id ac709805-ef70-11ef-9896-31a8f345e629; Thu, 20 Feb 2025 10:54:29 +0100 (CET) Received: from DM6PR06CA0100.namprd06.prod.outlook.com (2603:10b6:5:336::33) by MW6PR12MB8661.namprd12.prod.outlook.com (2603:10b6:303:23f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.14; Thu, 20 Feb 2025 09:54:25 +0000 Received: from DS1PEPF00017095.namprd03.prod.outlook.com (2603:10b6:5:336:cafe::83) by DM6PR06CA0100.outlook.office365.com (2603:10b6:5:336::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8466.16 via Frontend Transport; Thu, 20 Feb 2025 09:54:25 +0000 Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF00017095.mail.protection.outlook.com (10.167.17.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8466.11 via Frontend Transport; Thu, 20 Feb 2025 09:54:24 +0000 Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 20 Feb 2025 03:54:22 -0600 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ac709805-ef70-11ef-9896-31a8f345e629 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DLMGubdQd2fVc5cxjzCqQLzNZOsTJVBXJV4Xuz/YpSsfTaUGnOIOWCLWFy4Kf6WZQn3hlQcMOMpQgWyklJr3ihvkDx+y9ANuXpUU598hHdpZVVV+AOpn/5Mb9DnzF6/RVR755L7ZK0nQPg+z5L5Vec8NH/eoVwbCmpSfUKkJRiMa3qDVo0FLn9LlQHeIJZvNi+XP5WQVtOZh+Vy8vKuzkWikgdUB2ooYujvzX/fE0CaZRl0yBxpY/Khs+bKlTa/jE9DkWrmvYK2nbonBk5szrEBl2o3L0v/b1GYBg9K1XHXj1ZLsJ1P7S7YZozjS73wSp/TwrEcJKvbPHztAqSM3Mw== 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=GcfuVCgNryrXIg+YCgKLUIVzNSvHkNXFUZoJ8wJkULI=; b=oaMvGAtltqLF9iRYOg3T+CdINz7O2afCZKAH/5nJ/wZSEHRi2NG9/YpxG6XwkEKGvCqX3C3xV375oHJqYVvzMpKXNpXcK1+iQoMiWK+favFjc5D7YUe+4hsRWENSDMXb07tZUMzYlaKsSkCLcNP/35cIOPAmUYn3WrEWrNPNEFCXaZ8z/1KEEq833Ya4HZ4X3mb0rQhVYHevnHMeOMpPxp2Lx9UnNrdWcsnYwZZlhKgEtWAIVTtXBoABTF45ULLmfjyeDtUf2v2G+qtrCJ+lo/yV6q56+pioRcGRGthS96qzwLkVXUqew8yB7hZAHEedk+5WPBv5wO81CyetUn6RWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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=GcfuVCgNryrXIg+YCgKLUIVzNSvHkNXFUZoJ8wJkULI=; b=nXS/MOr5fhthnzqUXgAM2yMpCGgI1bPq3mPVf8e4yASoyY1Ok9XDVGn8OpBOJVNuheUBLwY7us8tV8rM9ojXjXvyCHS+tDW21wm4q0fLI9PHdTWnBZRqnJlbiqBBTmVkM0WGPL/R1RItpumnSiyCqrTw7SxkgqhVQQdKY4MgvDI= 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=SATLEXMB04.amd.com; pr=C From: Jiqian Chen To: CC: Jan Beulich , Andrew Cooper , =?utf-8?q?Roger_Pau_Monn=C3=A9?= , Stefano Stabellini , "Sergiy Kibrik" , Huang Rui , Jiqian Chen Subject: [PATCH v2 2/2] x86/hvm: make ACPI PM timer support optional Date: Thu, 20 Feb 2025 17:53:49 +0800 Message-ID: <20250220095349.1823593-2-Jiqian.Chen@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250220095349.1823593-1-Jiqian.Chen@amd.com> References: <20250220095349.1823593-1-Jiqian.Chen@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017095:EE_|MW6PR12MB8661:EE_ X-MS-Office365-Filtering-Correlation-Id: 61b631ae-2e6b-42cb-8948-08dd51948eae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: W7XmyeN9jG+mIURE7VCoDopiqLZn9gOG7WBX1yI/rZTuq7+PPCmy2Dm8OI37/XtLiKF2EDIshjYuG4J9xZCVW/skxmFwp0Eey1LVj5J7N3q/DBIPIwcw9QsRTIfQxrn4MT89JubE5FaNeLppYpT9Z5A3kB8U1pJJakh9rHF7KKLtY3ewTEmCjO9sv0c6Rs7adbK24616ELPNeI+2T04zx5Al23PwBUBCoV/goDUyMywJHrJErypO4da/hrJwLMeKzTrpeNng1eVaLXnhnOmF1eaolM9ja0yg8Y7j6MaplJUIIZBaulAWqMZ3JBFyIaXZKWXN4yuz5jFNo8C09A7k5YzEMBIpv7ZoUAC02Q7dPzw6KNENtJddUaA0AWyFDSXj1dUfPHSK63rnk6tyfn/aDUSLYwWZVOPJOGKW9k+txBtH/Uto/Z877d8k5IZ+z2Aamxj8U0LQEnEVeOx0nzjTUwJCnTBEGJOCkSV+4XwMOt4hvGvZPJut3zq+F1vAAsQbnCJZ4aaKM77OyH4FGBtWJs+WJk6mBeuy4GBIGedy1oQHoQXrPMOZnXBgS0mciYobC0w69dgKpIQQj1Qq6W88D3KHM6esYPQzymHGg13C7atAIRbkNIATTe/XW3p3SaahyPn0JIVp7aYBKz1/y3mWUQhq6u9hM1UdaGVkArfAstfU9RGjG2tnRu8ZFRchJBB0uXjInOeQ5MQOzy1S3QJz0Jc0rQXwS0uGJaYuFD8pcGLnPIyfC5Ai7+WTPF+4WZ5pDS5ocFnFoMJFL+Poh4POMDjGUGajFDi3Lmecilmx4wYjf1zk85rplj4CCw+rNOhR3ASLDvqso8scKAs+9kSUMUNXHloDqiR+Mu6H8WBQZNs+EmpXYC25DiQQs3rpd8wKMADmeWSOUMLCdKTn37K/1C54NCmIQhncZy2LJ4+AOm+jAqawMJW1gYfuUfe6t/lTo6miy4FzTaYfPjOMFBQM3PE8v0Ha4Qht9kGu2X+RPImUaGb7Xa7JaOvR8qWSXhJBSk8Udx8AVGT09EIhI9Jbu15gRPoStNXngCvfSZVxwbYbRJlHkeZA0tuxQfo/HDYGbs8yLKUoID3pxM28kzxhMS+ASixAFi2Xk/qRnPOTrQrbbzc+S4kTxFZ2L1gotQ/IbThYNhxlmALk3TWi1qWpIocDzfkd3+caz0RN9PF88pTmKhv4wzDWp+cTBIy4pKtvLAA4/TtZVF92fVha6qpVNxaHS5jVaJn6HYFEK/rDmW3Ch81B0Tc8Qr6FZcX4fUwUXv5aMgZCME16BsY2e0YUqWe8lw+kcCosrJqjYF4/syjGpNfuFAlurEuEnTEm1C/Ui1AQX1ZPZsS3gyQh4pV7DhDh7MkdQzOTdvzcmaAaUfc0wP1gtyWH8dOAZvLj17Si+OdUXo9gKaUkn5/qfAYVuBtUFfrH0AQw3KNWUGL6lhw= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Feb 2025 09:54:24.6509 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 61b631ae-2e6b-42cb-8948-08dd51948eae 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=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017095.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8661 From: Sergiy Kibrik Introduce config option X86_PMTIMER so that pmtimer driver can be disabled on systems that don't need it. Signed-off-by: Sergiy Kibrik Signed-off-by: Jiqian Chen --- Hi all, this is a rework for https://lore.kernel.org/xen-devel/20240916063757.990070-1-Sergiy_Kibrik@epam.com/T/#u. v1->v2 changes: * Moved definition of "config X86_PMTIMER" into Kconfig.emu. * Adjusted macro "has_vpm". Best regards, Jiqian Chen. --- xen/arch/x86/hvm/Kconfig.emu | 9 +++++++++ xen/arch/x86/hvm/Makefile | 2 +- xen/arch/x86/include/asm/acpi.h | 5 +++++ xen/arch/x86/include/asm/domain.h | 6 ++++-- xen/arch/x86/include/asm/hvm/vpt.h | 10 ++++++++++ 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/hvm/Kconfig.emu b/xen/arch/x86/hvm/Kconfig.emu index aa60b6227036..e2d0f5db1d15 100644 --- a/xen/arch/x86/hvm/Kconfig.emu +++ b/xen/arch/x86/hvm/Kconfig.emu @@ -11,4 +11,13 @@ config X86_STDVGA If unsure, say Y. +config X86_PMTIMER + bool "ACPI PM timer emulation support" if EXPERT + default y + depends on HVM + help + Build pmtimer driver that emulates ACPI PM timer for HVM guests. + + If unsure, say Y. + endmenu diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile index 4d1f8e00eb68..b7741b0f607e 100644 --- a/xen/arch/x86/hvm/Makefile +++ b/xen/arch/x86/hvm/Makefile @@ -18,7 +18,7 @@ obj-y += irq.o obj-y += monitor.o obj-y += mtrr.o obj-y += nestedhvm.o -obj-y += pmtimer.o +obj-$(CONFIG_X86_PMTIMER) += pmtimer.o obj-y += quirks.o obj-y += rtc.o obj-y += save.o diff --git a/xen/arch/x86/include/asm/acpi.h b/xen/arch/x86/include/asm/acpi.h index 217819dd619c..8d92014ae93a 100644 --- a/xen/arch/x86/include/asm/acpi.h +++ b/xen/arch/x86/include/asm/acpi.h @@ -150,8 +150,13 @@ void acpi_mmcfg_init(void); /* Incremented whenever we transition through S3. Value is 1 during boot. */ extern uint32_t system_reset_counter; +#ifdef CONFIG_X86_PMTIMER void hvm_acpi_power_button(struct domain *d); void hvm_acpi_sleep_button(struct domain *d); +#else +static inline void hvm_acpi_power_button(struct domain *d) {} +static inline void hvm_acpi_sleep_button(struct domain *d) {} +#endif /* suspend/resume */ void save_rest_processor_state(void); diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h index 68be23bf3bf4..1f3c02e3088f 100644 --- a/xen/arch/x86/include/asm/domain.h +++ b/xen/arch/x86/include/asm/domain.h @@ -495,11 +495,13 @@ struct arch_domain X86_EMU_VPCI) #define DISABLED_EMU_MASK \ - (!IS_ENABLED(CONFIG_X86_STDVGA) ? X86_EMU_VGA : 0) + ((!IS_ENABLED(CONFIG_X86_STDVGA) ? X86_EMU_VGA : 0) | \ + (!IS_ENABLED(CONFIG_X86_PMTIMER) ? X86_EMU_PM : 0)) #define has_vlapic(d) (!!((d)->arch.emulation_flags & X86_EMU_LAPIC)) #define has_vhpet(d) (!!((d)->arch.emulation_flags & X86_EMU_HPET)) -#define has_vpm(d) (!!((d)->arch.emulation_flags & X86_EMU_PM)) +#define has_vpm(d) (IS_ENABLED(CONFIG_X86_PMTIMER) && \ + !!((d)->arch.emulation_flags & X86_EMU_PM)) #define has_vrtc(d) (!!((d)->arch.emulation_flags & X86_EMU_RTC)) #define has_vioapic(d) (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC)) #define has_vpic(d) (!!((d)->arch.emulation_flags & X86_EMU_PIC)) diff --git a/xen/arch/x86/include/asm/hvm/vpt.h b/xen/arch/x86/include/asm/hvm/vpt.h index 0b92b286252d..333b346068de 100644 --- a/xen/arch/x86/include/asm/hvm/vpt.h +++ b/xen/arch/x86/include/asm/hvm/vpt.h @@ -187,10 +187,20 @@ void rtc_deinit(struct domain *d); void rtc_reset(struct domain *d); void rtc_update_clock(struct domain *d); +#ifdef CONFIG_X86_PMTIMER void pmtimer_init(struct vcpu *v); void pmtimer_deinit(struct domain *d); void pmtimer_reset(struct domain *d); int pmtimer_change_ioport(struct domain *d, uint64_t version); +#else +static inline void pmtimer_init(struct vcpu *v) {} +static inline void pmtimer_deinit(struct domain *d) {} +static inline void pmtimer_reset(struct domain *d) {} +static inline int pmtimer_change_ioport(struct domain *d, uint64_t version) +{ + return -ENODEV; +} +#endif void hpet_init(struct domain *d); void hpet_deinit(struct domain *d);