From patchwork Tue Mar 8 16:39:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774016 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 91423C4332F for ; Tue, 8 Mar 2022 16:39:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348439AbiCHQkp (ORCPT ); Tue, 8 Mar 2022 11:40:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234843AbiCHQkn (ORCPT ); Tue, 8 Mar 2022 11:40:43 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2073.outbound.protection.outlook.com [40.107.236.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70B765132E; Tue, 8 Mar 2022 08:39:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mh1eJ/wSwG3MLz6JsTt6n4xhlp+jxWdfBMMgH+Xr6/gXw5XYhgtWN/+91k/+JCuxkUjubcgqs9bwMu+7pfdVNEc3/rRPse/JyB5p7I4xrXdT1Wa6uVxmie/KDR2/We7G+XqkAFGlZek+KkkxOd6bDtdpOmN6KSd9RtLYPYgp2UVh7cIO6F2tC9ufyO9Na1lgy+V6RcODcicTlYNEOdd6xjzQtOIaoSZeIjhnDOydZekOwI5mmIWJ2gWv65VV2o2xJ5rHMs/s9Cm3mTKC96n6SXeD7z2onbJIUGfflLdHnWx2fwSLEFExlOPoGllJxK3WzVVFE6bn4Eh6iCDjeqeqUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=0AXjzDuHAe47koGh93akBEs2wdiSPWJgoaKBjnwP8QQ=; b=J7pPJRviRYQgcyrA2UqFa/cwH71lsdnUSjH4btD0DQwhvZbDoSzMe6WqOrxCCjlxdB8xU8I2pB0YmvUzNrkQaJ5GwlrnwmsJmHlG8sXvy7GixzKnMG3YmtAK5UzG3CRyhTA4N6ejjiXy53vOSL5DYfRdT1T7KDOjMHWOEqopg8ZCrVXP14sSuflzWIom1UyLNmRO9Oq2bKAsTMBEh5IB6acz+49aUuOVj5F3WkYMsgVvjjmNfZLe0VUMwDTnWS13sYxSG3ah8/aVUyQz6KdhuYm7p4nMgshpdIJFIW3avCqZ93bCQsfXM5LiE3ckjyw40Up5F7l5FUu2HtDaxqqcjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=0AXjzDuHAe47koGh93akBEs2wdiSPWJgoaKBjnwP8QQ=; b=iCIfbVoAXe/C6bVA1xxdNvc/x9pijZ10ii3n77QrNNybWIX/RHQ1RbOhEKgeR+VIAOVYZOJ65+z7PmsKZKasHL7M/msbTj5JQ4QF+kcS0RrEOjoPAiNL53BdMytsPpxQxiRlhpe2RizuexEtgY1kNz9GtZCUHeQNppG9fS+OQ5Q= Received: from BN9PR03CA0305.namprd03.prod.outlook.com (2603:10b6:408:112::10) by BYAPR12MB2742.namprd12.prod.outlook.com (2603:10b6:a03:6a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.17; Tue, 8 Mar 2022 16:39:44 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::dc) by BN9PR03CA0305.outlook.office365.com (2603:10b6:408:112::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:44 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:43 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:41 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 01/12] x86/cpufeatures: Introduce x2AVIC CPUID bit Date: Tue, 8 Mar 2022 10:39:15 -0600 Message-ID: <20220308163926.563994-2-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8141c20d-ef1f-4d72-7155-08da01223fc2 X-MS-TrafficTypeDiagnostic: BYAPR12MB2742:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: J8cAnqpjiZlwssSfItGE8YB24dNsOkm+Enkrixei4nJgZ6yxu8dvmuaqcE3/TOYjlL3Uyo6tjWo5GUMwB6rHspKq89zrDNXSHVohWO5WyMdbN+/jVVkcnYktbG65ghat3R9KtWrfzoWiuBZP/KKlVMv2CPVukbI6JH4ckGoOZLfB4QNeXwA41l8NtVy0ixpscexdKGAOlFsSnqdTY38l8dm67i/p4r9DEmHuqJICbklG9Q3tJ+iTvy+1SMaS9kgefwQgRW7CFui7ww4dW3Igv2Sbq9HYr/PM/m1PPCjNxpIyzHYxw6etkJZjcQ1JojfZpsUtt/l2+CsRcSumokP5ASFHiroVk4zruN3G8mXSuQqSavpH08p9802PmOTbAKyzfxOdxg8YfuOX0HID7WUwQF5xpg2leXtd18E+z2iI3DSOQpUpI3vzLZcoy4W67zh3Nz3bAGzbDSX/2+CO9YqA8KuvTpdPfpz5ytY5zBoxZa2aqOPK0M+atozN4DPhd0+qk0z+0kbdTlO2K6cC1op+wMAirD8ji0i/qONVNiLJWIGir/1j/BUCCHErGKdhd+1+twFVKiSdD7bLv8MTnIHSCNt58vhmQYBY6hqpgqUgNJ0OxWsCQBEacGcUjePbpLdLY+PKkWSF0ZvA/TdKiMoSzMCuh+9J5DEaWhtvZCKRarOEGhXTDol3mP3KM+qaOoiT8T4mLJyo4zLFqPIrVdb/fw== 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:(13230001)(4636009)(36840700001)(40470700004)(46966006)(4326008)(44832011)(81166007)(8676002)(70206006)(70586007)(5660300002)(2906002)(356005)(36756003)(8936002)(82310400004)(54906003)(36860700001)(110136005)(316002)(4744005)(186003)(40460700003)(508600001)(86362001)(47076005)(6666004)(7696005)(16526019)(2616005)(426003)(1076003)(26005)(336012)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:43.5632 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8141c20d-ef1f-4d72-7155-08da01223fc2 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB2742 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Introduce a new feature bit for virtualized x2APIC (x2AVIC) in CPUID_Fn8000000A_EDX [SVM Revision and Feature Identification]. Reviewed-by: Maxim Levitsky Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/cpufeatures.h | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index 6db4e2932b3d..8c91a313668e 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -345,6 +345,7 @@ #define X86_FEATURE_AVIC (15*32+13) /* Virtual Interrupt Controller */ #define X86_FEATURE_V_VMSAVE_VMLOAD (15*32+15) /* Virtual VMSAVE VMLOAD */ #define X86_FEATURE_VGIF (15*32+16) /* Virtual GIF */ +#define X86_FEATURE_X2AVIC (15*32+18) /* Virtual x2apic */ #define X86_FEATURE_V_SPEC_CTRL (15*32+20) /* Virtual SPEC_CTRL */ #define X86_FEATURE_SVME_ADDR_CHK (15*32+28) /* "" SVME addr check */ From patchwork Tue Mar 8 16:39:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774017 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4EB4C433FE for ; Tue, 8 Mar 2022 16:39:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348446AbiCHQkq (ORCPT ); Tue, 8 Mar 2022 11:40:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344047AbiCHQkn (ORCPT ); Tue, 8 Mar 2022 11:40:43 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2046.outbound.protection.outlook.com [40.107.220.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2EB34BFDD; Tue, 8 Mar 2022 08:39:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cNag6ouQLIzzViOQpYxgVO7ZwyXe/iATE6HDs44HTZ6tpu+bexcdTrtIE37hV6j4ONpbBFHJROg7sWfLHS+R+ONb14z6kOILf57WQiuC9IzCt/JBmBcD/gGMnzQfWOqx31cMJuXGr1W2PbKKMGyLs9qWByAKxSqnKZJ/pIO24Arb+/ZHT8Um4cio0itQB63dL6hgH/JgHdEOmtTnzO9qY0ZSifIiU0HYyNC45HOtEUt3bIf1bGu81PCGMOi9ntIwNkA/xjMPBdWW7CEUrOrQ5eHe4P5wc26WZl+LQSL4zSQF4NcFkQbCFYbAYxHU5YnwJHL1w1NbJNUcW3Sk6qLZ/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=Q938zMI2WAdKA3AG3H8hnrl2Pl78D4NodZMJTEpthGM=; b=YlY9LFL/CoLokawSbvhSazR3eWvxCa47vDJsjn8fFLslcSk38lSgqNtgLo9mxUtdzNE3ZTeA7eDnHvlkPQRYzNkP+6f5sH3UHKkNfzya+uC3zeiCX9j0xBPpvZ5Q4IkTgLtcrBtZNJK/QfUAVtLzV5pjrNSodCykLtB/hd7Dj0ColDQeyDG7CjoFB9fkJ7XYIHYXcOYpry+fZIAWN0+posD/YOibSg7e18wYnuLrm6+gu1hB/H3H4sMs4IY2Noz64O7pkYagpg5bAMd/aCKqWImpQ4SuclmPQxwt2oVVbkypKXShM7FL+K5Z0JORSdDUT/y6sYUroR6cXYuu0SUNkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=Q938zMI2WAdKA3AG3H8hnrl2Pl78D4NodZMJTEpthGM=; b=HYCMjL6NKA2Wk2Fbu2VSs/U7MwPZfDlv5JbehUVFPytUqv7GIS+PtiVM2845EHzcOrfmc/kDfqJ2PSRYT4AbgAH5U1MfRNkdXMaL/iIk8wk2Z33ysS3eiPLI3ZFRcEWDkQxPHpf2RGiYHMn+eCjdbkqC5hKtBVhMzhNim1M20Uk= Received: from BN9PR03CA0313.namprd03.prod.outlook.com (2603:10b6:408:112::18) by DM5PR12MB1369.namprd12.prod.outlook.com (2603:10b6:3:6f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.17; Tue, 8 Mar 2022 16:39:45 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::26) by BN9PR03CA0313.outlook.office365.com (2603:10b6:408:112::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:45 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:44 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:42 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 02/12] KVM: x86: lapic: Rename [GET/SET]_APIC_DEST_FIELD to [GET/SET]_XAPIC_DEST_FIELD Date: Tue, 8 Mar 2022 10:39:16 -0600 Message-ID: <20220308163926.563994-3-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 08d88677-c343-4201-c98d-08da0122405f X-MS-TrafficTypeDiagnostic: DM5PR12MB1369:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vPZ7NKTdbBZ9JoPe232o10Twhb4wBsNEOvGVHRVCw+qD+uMapRsVjhd6bEyEgLwtvyKo5XXidDzv0rnmLT/dPPbWtksnDC0lCb9aeaXTgpw/632M3x1tbEx3iXc/wkoIoR9lOf2X4cZ1HPPWdPJeunRjz4jRg+X/IYB34lnVRT/MJ+LU96kZoAyTp6o6/131HfkECypg9rSq1h7vPzQP+xLfO2NCjNi5XZL2J2A/Ph8xZJGWZlVq2CfKWbCc61iS+oqKwAcP/Aje/v8zjnfV+YQZusDUtaI4hBH4qZs317ALq3abQx18FRMztwyCcm2PsOGl+gxfZbD8u1un4dTmCWYtFCMH3Z0J5viFFUdxzeWGf2GCNZ6RAx016m7DiaTmvgVbx00zT2ByH+lixJ5Eic5yS1YIqj9RP98/NlAtQnJac7Zh5HW2sz83rZMcirdUKRNAqwdFcMLh80e26mRSuYuwga9I4FfAsUkGNCo90p0NKYZ0e/SFb9U5C1IZIjQn4iydp25btdgKDIpjYqxEdxaB3ab5L0GkbTTJT0/8kUhSEj1oX8HFZajoh2IFX1SDPdJP2rmVt3fB6q4gep/ATIgvnLyq5Ht6gZ0i/KUcPtRbEp0y1kZlwAlssCTEzAb78b6llC1zQ6xFspbBtvd3l2vnUZrdIpPJqV1C2VvSaT+UMMUUkubznNYLs4hqbF+TsmgKPASqW0h6xHCAmcGCfQ== 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:(13230001)(4636009)(36840700001)(46966006)(40470700004)(36860700001)(70586007)(70206006)(47076005)(8676002)(4326008)(36756003)(26005)(336012)(426003)(1076003)(54906003)(186003)(2616005)(316002)(83380400001)(6666004)(7696005)(5660300002)(40460700003)(44832011)(110136005)(8936002)(508600001)(16526019)(81166007)(356005)(2906002)(86362001)(82310400004)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:44.6256 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 08d88677-c343-4201-c98d-08da0122405f 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1369 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org To signify that the macros only support 8-bit xAPIC destination ID. Suggested-by: Maxim Levitsky Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- arch/x86/hyperv/hv_apic.c | 2 +- arch/x86/include/asm/apicdef.h | 4 ++-- arch/x86/kernel/apic/apic.c | 2 +- arch/x86/kernel/apic/ipi.c | 2 +- arch/x86/kvm/lapic.c | 2 +- arch/x86/kvm/svm/avic.c | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/x86/hyperv/hv_apic.c b/arch/x86/hyperv/hv_apic.c index db2d92fb44da..fb8b2c088681 100644 --- a/arch/x86/hyperv/hv_apic.c +++ b/arch/x86/hyperv/hv_apic.c @@ -46,7 +46,7 @@ static void hv_apic_icr_write(u32 low, u32 id) { u64 reg_val; - reg_val = SET_APIC_DEST_FIELD(id); + reg_val = SET_XAPIC_DEST_FIELD(id); reg_val = reg_val << 32; reg_val |= low; diff --git a/arch/x86/include/asm/apicdef.h b/arch/x86/include/asm/apicdef.h index 5716f22f81ac..863c2cad5872 100644 --- a/arch/x86/include/asm/apicdef.h +++ b/arch/x86/include/asm/apicdef.h @@ -89,8 +89,8 @@ #define APIC_DM_EXTINT 0x00700 #define APIC_VECTOR_MASK 0x000FF #define APIC_ICR2 0x310 -#define GET_APIC_DEST_FIELD(x) (((x) >> 24) & 0xFF) -#define SET_APIC_DEST_FIELD(x) ((x) << 24) +#define GET_XAPIC_DEST_FIELD(x) (((x) >> 24) & 0xFF) +#define SET_XAPIC_DEST_FIELD(x) ((x) << 24) #define APIC_LVTT 0x320 #define APIC_LVTTHMR 0x330 #define APIC_LVTPC 0x340 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index b70344bf6600..e6b754e43ed7 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -275,7 +275,7 @@ void native_apic_icr_write(u32 low, u32 id) unsigned long flags; local_irq_save(flags); - apic_write(APIC_ICR2, SET_APIC_DEST_FIELD(id)); + apic_write(APIC_ICR2, SET_XAPIC_DEST_FIELD(id)); apic_write(APIC_ICR, low); local_irq_restore(flags); } diff --git a/arch/x86/kernel/apic/ipi.c b/arch/x86/kernel/apic/ipi.c index d1fb874fbe64..2a6509e8c840 100644 --- a/arch/x86/kernel/apic/ipi.c +++ b/arch/x86/kernel/apic/ipi.c @@ -99,7 +99,7 @@ void native_send_call_func_ipi(const struct cpumask *mask) static inline int __prepare_ICR2(unsigned int mask) { - return SET_APIC_DEST_FIELD(mask); + return SET_XAPIC_DEST_FIELD(mask); } static inline void __xapic_wait_icr_idle(void) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 9322e6340a74..03d1b6325eb8 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1286,7 +1286,7 @@ void kvm_apic_send_ipi(struct kvm_lapic *apic, u32 icr_low, u32 icr_high) if (apic_x2apic_mode(apic)) irq.dest_id = icr_high; else - irq.dest_id = GET_APIC_DEST_FIELD(icr_high); + irq.dest_id = GET_XAPIC_DEST_FIELD(icr_high); trace_kvm_apic_ipi(icr_low, irq.dest_id); diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index f07956f15d3b..60cd346acd1c 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -299,7 +299,7 @@ static void avic_kick_target_vcpus(struct kvm *kvm, struct kvm_lapic *source, */ kvm_for_each_vcpu(i, vcpu, kvm) { if (kvm_apic_match_dest(vcpu, source, icrl & APIC_SHORT_MASK, - GET_APIC_DEST_FIELD(icrh), + GET_XAPIC_DEST_FIELD(icrh), icrl & APIC_DEST_MASK)) { vcpu->arch.apic->irr_pending = true; svm_complete_interrupt_delivery(vcpu, From patchwork Tue Mar 8 16:39:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774018 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9ADBBC433EF for ; Tue, 8 Mar 2022 16:39:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348453AbiCHQks (ORCPT ); Tue, 8 Mar 2022 11:40:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348435AbiCHQko (ORCPT ); Tue, 8 Mar 2022 11:40:44 -0500 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2086.outbound.protection.outlook.com [40.107.92.86]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2809D4BFDD; Tue, 8 Mar 2022 08:39:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mrWYb4LaWW/iM7iGV96nYTePj6Vh5u02N0XcIe3QUdrALxACq7+4lQvdLRMKE3x8Y8KKRvEH0qoWcFVhPv/15gySACcK5faAp3RPPoJAQyBTiuQN6/7f9pMfEJ1LFzAKNff60HLZ69m4z9/RFe3yUGFDAOPuVdrUpXXjckPZTX8mzH4hj+dV73EBfuhTL1MKinVZQGMnQZ9nkNBwEiYwKcjPDV/GjpN5NQNInh7zlM+tOYvXsEi10e1cb75ZKU8+ID14H72ijWF5H80tp7WsFXm10VB0UGk8O2wO/nK0q66Iqjrw5qCm+OMXVK3z44dufBCK9kbuhXLR9aPJV8Rv5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=Vmu42+8Bz+fLtHQ6E0t8A6luRIMdpYlYPVaJj9vEAr0=; b=FlayAwEzs9q+11th6JR7TfvLmJ5aATwyvcGn/wOXTRWX4Qz//mc/BryDbFX+OV90SoStkqgnBVCvFO5fgrDEWtdOijMHEUNTDs3BEdLLfoU6kFWPYmi7k2mJI15ETLY8OPN2nxO1uIi/XJaWczq7mKFbCzbUhlibOTfFC5mxhWMoL8WfD67f4ALRrDLR4PNABkd2DeKPuoRn1IG3drxLefBhYFVVK6MU8xCj1N7XlTD254zKHtTyvSMZ2NAT67EYWrQpBhX3Y5OKKNA1vvovrC+b35YfLhAQu0DW72ThPZPdFA5r+f9nc4ExL03mWwcIsOnbZCeDKh8wFobqXLwi8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=Vmu42+8Bz+fLtHQ6E0t8A6luRIMdpYlYPVaJj9vEAr0=; b=Y0jjvaCxL5+02DC6o0nrCCTaegqb+0p0j4DpFi7skPxnPkyU9ZsHb51PjOKC61o2xq4eQ0D92NTcTBhtDvok14ZvyVmd2vxZ8zKZD+jDrxhJPiEY/H9eoId3duLcKldXHyhBZpi2nKQXCCMmZSVE2krW0rwnZdmpCBkAmCrewIM= Received: from BN9PR03CA0318.namprd03.prod.outlook.com (2603:10b6:408:112::23) by CY4PR12MB1160.namprd12.prod.outlook.com (2603:10b6:903:38::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.17; Tue, 8 Mar 2022 16:39:45 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::47) by BN9PR03CA0318.outlook.office365.com (2603:10b6:408:112::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:45 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:45 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:42 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 03/12] KVM: SVM: Detect X2APIC virtualization (x2AVIC) support Date: Tue, 8 Mar 2022 10:39:17 -0600 Message-ID: <20220308163926.563994-4-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 65184c10-6af8-4940-c186-08da012240db X-MS-TrafficTypeDiagnostic: CY4PR12MB1160:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hsdzlS2sPg82drJGMnpL6H+G/+6CxqvVexSVk72uWUUQDY6coON8e8JVzLJKZxb8Ofd5ZPd9kkHaI+sIKB1VdLcy6WvJENI+dhT6T5bFxcyVJt8wHxCNHfUdYc1clgRWbeB2itaJc6BeyoiVKFWvA/7OdC0QEYvKSdu4ueBP1xhZ5mgaaUuTYzR9Rqg7wEZ/z6V+rRnJCt8SqxIFRWGEgbjSlncs0ABSVj+CRkB7GmqE7Lntvcyl8QEeoPBEwKgn01TIutrUciJg8rfKQq4PZqcMEceQ4NEayWmy6YrRIPjJiPOhSI2SUxSIfxZ8yCFZNpyK4tiqmVIfS5zp4rQ+9PoFC/Q/3Hc727xdMfZ6+shJhUKLU01PxQs9hhNorWhErNnhyYvvuBWoNA5jY17NSz6Z9IdsraVaGKCrHN9nwmHgi0K3eVE/UJvtOaBAdLQZ2sfiW7zBfCJ4rK/7Ril6VkTpB5UcQh8HNfUL4JvFfWoPIFaKV+z0MjGnbtPQb6kqnAkGlhK0Cbu1l21YjULAe1ZMoFRXuzQk1hd+Z3wqR8akjkDBXaPrYDzk1NDjSZhdll0E3hfpkHaTmefrYE8KXF9FH53GCMIubKRe2lXzOMKVaeEzeXYiPzQCFXVthezE463ftnfUICqAh8rYLAaPb0i572peJbIfruEMC27/ZcN6TbZ8idvqVCszszAA2KbwP6vmO0tf1d/JY7ZRgS3d102NVmD9k2gpQamCEQTcEkO8mrjVdAYNiN865q1tyjrK 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:(13230001)(4636009)(46966006)(36840700001)(40470700004)(86362001)(2906002)(508600001)(40460700003)(2616005)(1076003)(16526019)(426003)(6666004)(7696005)(47076005)(83380400001)(336012)(26005)(4326008)(5660300002)(186003)(44832011)(81166007)(70586007)(8676002)(70206006)(54906003)(110136005)(36860700001)(356005)(316002)(8936002)(82310400004)(36756003)(36900700001)(309714004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:45.4381 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 65184c10-6af8-4940-c186-08da012240db 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1160 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add CPUID check for the x2APIC virtualization (x2AVIC) feature. If available, the SVM driver can support both AVIC and x2AVIC modes when load the kvm_amd driver with avic=1. The operating mode will be determined at runtime depending on the guest APIC mode. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- arch/x86/include/asm/svm.h | 3 +++ arch/x86/kvm/svm/avic.c | 34 ++++++++++++++++++++++++++++++++++ arch/x86/kvm/svm/svm.c | 8 ++------ arch/x86/kvm/svm/svm.h | 1 + 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index 7eb2df5417fb..7a7a2297165b 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -195,6 +195,9 @@ struct __attribute__ ((__packed__)) vmcb_control_area { #define AVIC_ENABLE_SHIFT 31 #define AVIC_ENABLE_MASK (1 << AVIC_ENABLE_SHIFT) +#define X2APIC_MODE_SHIFT 30 +#define X2APIC_MODE_MASK (1 << X2APIC_MODE_SHIFT) + #define LBR_CTL_ENABLE_MASK BIT_ULL(0) #define VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK BIT_ULL(1) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 60cd346acd1c..49b185f0d42e 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -40,6 +40,12 @@ #define AVIC_GATAG_TO_VMID(x) ((x >> AVIC_VCPU_ID_BITS) & AVIC_VM_ID_MASK) #define AVIC_GATAG_TO_VCPUID(x) (x & AVIC_VCPU_ID_MASK) +enum avic_modes { + AVIC_MODE_NONE = 0, + AVIC_MODE_X1, + AVIC_MODE_X2, +}; + /* Note: * This hash table is used to map VM_ID to a struct kvm_svm, * when handling AMD IOMMU GALOG notification to schedule in @@ -50,6 +56,7 @@ static DEFINE_HASHTABLE(svm_vm_data_hash, SVM_VM_DATA_HASH_BITS); static u32 next_vm_id = 0; static bool next_vm_id_wrapped = 0; static DEFINE_SPINLOCK(svm_vm_data_hash_lock); +static enum avic_modes avic_mode; /* * This is a wrapper of struct amd_iommu_ir_data. @@ -1014,3 +1021,30 @@ void avic_vcpu_unblocking(struct kvm_vcpu *vcpu) put_cpu(); } + +/* + * Note: + * - The module param avic enable both xAPIC and x2APIC mode. + * - Hypervisor can support both xAVIC and x2AVIC in the same guest. + * - The mode can be switched at run-time. + */ +bool avic_hardware_setup(struct kvm_x86_ops *x86_ops) +{ + if (!npt_enabled) + return false; + + if (boot_cpu_has(X86_FEATURE_AVIC)) { + avic_mode = AVIC_MODE_X1; + pr_info("AVIC enabled\n"); + } + + if (boot_cpu_has(X86_FEATURE_X2AVIC)) { + avic_mode = AVIC_MODE_X2; + pr_info("x2AVIC enabled\n"); + } + + if (avic_mode != AVIC_MODE_NONE) + amd_iommu_register_ga_log_notifier(&avic_ga_log_notifier); + + return !!avic_mode; +} diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 821edf664e7a..3048f4b758d6 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4817,13 +4817,9 @@ static __init int svm_hardware_setup(void) nrips = false; } - enable_apicv = avic = avic && npt_enabled && boot_cpu_has(X86_FEATURE_AVIC); + enable_apicv = avic = avic && avic_hardware_setup(&svm_x86_ops); - if (enable_apicv) { - pr_info("AVIC enabled\n"); - - amd_iommu_register_ga_log_notifier(&avic_ga_log_notifier); - } else { + if (!enable_apicv) { svm_x86_ops.vcpu_blocking = NULL; svm_x86_ops.vcpu_unblocking = NULL; } diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index fa98d6844728..b53c83a44ec2 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -558,6 +558,7 @@ extern struct kvm_x86_nested_ops svm_nested_ops; /* avic.c */ +bool avic_hardware_setup(struct kvm_x86_ops *ops); int avic_ga_log_notifier(u32 ga_tag); void avic_vm_destroy(struct kvm *kvm); int avic_vm_init(struct kvm *kvm); From patchwork Tue Mar 8 16:39:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774019 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3166FC433FE for ; Tue, 8 Mar 2022 16:39:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348464AbiCHQkt (ORCPT ); Tue, 8 Mar 2022 11:40:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348441AbiCHQkq (ORCPT ); Tue, 8 Mar 2022 11:40:46 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2058.outbound.protection.outlook.com [40.107.243.58]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E61BE5133C; Tue, 8 Mar 2022 08:39:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YBfeQOmgHoRkhBkA5+olTcrvp/QcGNmocbD3JaZhHo6FvNl4Rk2rhUnjv7jdAZzIuyeTvf1D54nWJGecpSx2VBFuFnxBsLzrZajejDR6Fdo8M9xjNUfDr5qPYNrKRpuv06LHbNzcrVX/v6sRM/Uo+XYsEtA+YvE890yFExwd7u6zMWAFEyCqCFrSTK5fVoHxATzMlDedFUeuNkHahG52nsn1NHjqb5PcE3G6ah2adkKXGMb2Iwzxjo75XKjLqaJhtWiNpVSJz8ZNnmRkkjZ7C74NY1RNhUFp9ZNMJL4GcFDgmm5Wu0HwzFnKazCZvBXP13r/yDACidZmcY1nJncwhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=V66ErFfKv6TfmDG18FO+4aFbngL402LiIcl2grdwZ5Y=; b=CHnpfORuyMcdEmuA33i/sSz/WbHaC1/8ge2y6t5SBIJov6adwj2M4IYZQpNu/h2gfyxCooxGcNwnWvkMECGPxfGP9l3TG0/gYffhHjHoWUGSwS4LrIBk0cj2jZMnraTBbMkfruAEl1hnSYE01VaEd82WOpifaH+sMCc90Qvg0bYUpyFq+FOQPWsUX8hShTkAAcWP2FbQ4Weuy/EfrxyTKRuCiCYJgjaZ4rzdm3N8mQkpX77ngXpnINM7rw2miDOoNy4LePED2o5r6rM0SCJkFFruEFxT/EVZFv8p+PBEhFSqlr6q7f4jnu4olK1LZjuI8PEQ7Z4Px6ytdc2gDNSOUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=V66ErFfKv6TfmDG18FO+4aFbngL402LiIcl2grdwZ5Y=; b=psTSZuWh1MsdOPby/Zv4l1+4xBOU1BPHiagoAivZczivW8PDSBhHjVeFJQDBXBoKwjXo71ioEfIpwVOB6JRUT9jIsdvhbE21NGJGkA3qmljceV4YFRsWeY0s6m2hEpZpyMdxAsXGsJ831Ardk5u+Y9J4Z7d1bzqmtkqs6HLg7oY= Received: from BN9PR03CA0302.namprd03.prod.outlook.com (2603:10b6:408:112::7) by MN2PR12MB3838.namprd12.prod.outlook.com (2603:10b6:208:16c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Tue, 8 Mar 2022 16:39:46 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::d5) by BN9PR03CA0302.outlook.office365.com (2603:10b6:408:112::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:46 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:46 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:43 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 04/12] KVM: SVM: Update max number of vCPUs supported for x2AVIC mode Date: Tue, 8 Mar 2022 10:39:18 -0600 Message-ID: <20220308163926.563994-5-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2fa30fcc-abf6-4d22-0752-08da01224166 X-MS-TrafficTypeDiagnostic: MN2PR12MB3838:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X5GKNs+mHWa75lUqcYlZzFRyuT1/G4fzZ09lhJuZoAFNfRwf7jFIfu3HIcvAGPq7ygOOpVzWXTNml31YWX1UHGKC1TXuVgPpCmGsLGsUewFlH4pp9gT7S89+iLsv7zf75ADErTIU0OIhpJIQsXIHOv5fYlEXcCj98Vk9QerMmwrWTyNexuBRL8nZe++MdR6UVNsby2uiNIUEXMbgFim3T/5fbkaABdU97vLsgOTEPJb2HS0/Ut2Hq5WGElHzbRu9rODyJI/6nZNGFqL4iMLSHWPkzge95dnxcIAA7zO32bmRq113TeiszJfVJ9H0zqeYXbvKZvJ22qUfMxy3hM5MyY4r6cejfpEiuboGPE1Y8H4+zoItYylPzSJts16L3jHJgftvTVR1KJ//yHJddaElwwxED4Gb4UAUd99bSR/XAjwp+ZSpv04PTeJ6OcMdAazQk8UEeSQzimzHKSFvdfTlW2QqZc1xU5Sy9GvZj9fUFioomns+uH+J89TkQEVsosKrGReUN5ToxLf1FaInbKapx73RlK4hV6yoFBV7BsKc+vfiTpT5rdrR+asEzqzXvfXiW9afHY1Wpfl/i5vsGSqNyUrF49da3Bk71Ugzpil0kM5sWEPj88yTtwSafVTaR/wZ5vYyLURNSxmRbyyBZvNXS7hCG7noC6ZUN1rSzT76/HtCFfpC3OawEmQUctuvqs9q4lvbprqN3K1a3CM246kU6A== 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:(13230001)(4636009)(46966006)(40470700004)(36840700001)(36860700001)(356005)(110136005)(70586007)(81166007)(2616005)(47076005)(36756003)(54906003)(426003)(336012)(70206006)(83380400001)(316002)(6666004)(508600001)(86362001)(5660300002)(7696005)(44832011)(8936002)(15650500001)(186003)(26005)(16526019)(1076003)(2906002)(82310400004)(40460700003)(4326008)(8676002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:46.3442 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2fa30fcc-abf6-4d22-0752-08da01224166 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3838 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org xAVIC and x2AVIC modes can support diffferent number of vcpus. Update existing logics to support each mode accordingly. Also, modify the maximum physical APIC ID for AVIC to 255 to reflect the actual value supported by the architecture. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- arch/x86/include/asm/svm.h | 12 +++++++++--- arch/x86/kvm/svm/avic.c | 8 +++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index 7a7a2297165b..681a348a9365 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -250,10 +250,16 @@ enum avic_ipi_failure_cause { /* - * 0xff is broadcast, so the max index allowed for physical APIC ID - * table is 0xfe. APIC IDs above 0xff are reserved. + * For AVIC, the max index allowed for physical APIC ID + * table is 0xff (255). */ -#define AVIC_MAX_PHYSICAL_ID_COUNT 0xff +#define AVIC_MAX_PHYSICAL_ID 0XFFULL + +/* + * For x2AVIC, the max index allowed for physical APIC ID + * table is 0x1ff (511). + */ +#define X2AVIC_MAX_PHYSICAL_ID 0x1FFUL #define AVIC_HPA_MASK ~((0xFFFULL << 52) | 0xFFF) #define VMCB_AVIC_APIC_BAR_MASK 0xFFFFFFFFFF000ULL diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 49b185f0d42e..f128b0189d4a 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -183,7 +183,7 @@ void avic_init_vmcb(struct vcpu_svm *svm) vmcb->control.avic_backing_page = bpa & AVIC_HPA_MASK; vmcb->control.avic_logical_id = lpa & AVIC_HPA_MASK; vmcb->control.avic_physical_id = ppa & AVIC_HPA_MASK; - vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID_COUNT; + vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID; vmcb->control.avic_vapic_bar = APIC_DEFAULT_PHYS_BASE & VMCB_AVIC_APIC_BAR_MASK; if (kvm_apicv_activated(svm->vcpu.kvm)) @@ -198,7 +198,8 @@ static u64 *avic_get_physical_id_entry(struct kvm_vcpu *vcpu, u64 *avic_physical_id_table; struct kvm_svm *kvm_svm = to_kvm_svm(vcpu->kvm); - if (index >= AVIC_MAX_PHYSICAL_ID_COUNT) + if ((avic_mode == AVIC_MODE_X1 && index > AVIC_MAX_PHYSICAL_ID) || + (avic_mode == AVIC_MODE_X2 && index > X2AVIC_MAX_PHYSICAL_ID)) return NULL; avic_physical_id_table = page_address(kvm_svm->avic_physical_id_table_page); @@ -245,7 +246,8 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu) int id = vcpu->vcpu_id; struct vcpu_svm *svm = to_svm(vcpu); - if (id >= AVIC_MAX_PHYSICAL_ID_COUNT) + if ((avic_mode == AVIC_MODE_X1 && id > AVIC_MAX_PHYSICAL_ID) || + (avic_mode == AVIC_MODE_X2 && id > X2AVIC_MAX_PHYSICAL_ID)) return -EINVAL; if (!vcpu->arch.apic->regs) From patchwork Tue Mar 8 16:39:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774020 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D72BDC433EF for ; Tue, 8 Mar 2022 16:39:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348457AbiCHQkx (ORCPT ); Tue, 8 Mar 2022 11:40:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348444AbiCHQkq (ORCPT ); Tue, 8 Mar 2022 11:40:46 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2073.outbound.protection.outlook.com [40.107.243.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F41624BFDD; Tue, 8 Mar 2022 08:39:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R2MyiIv0yVEseJUSQTAooOnNnLQpQg+hmwlKJYDZMZRhUFKjv4m9VDFUeUBrQV/cYK1kmPy085iHgky7CVhgzBprfIJ4W+FB3XKP+BnFHc+1oSEtb8K7baUxVBEhptoAd9iZCRuvn3AB2W6EoITK8M691fU6C54Ll/X2EwU8udijtJUmHanB5ZJPuT0HRuULr/QjGF2X7Tdn7vYkT8QrJBZ/oqUXHhUCgxNEW86W6sAHeYARCzj6D1fCl6Gohqfhi2bAsJOxCQONv9eCgxHM4r5Oj6y84jd28GNahaa3ClYolipsV4SRn3XOb5fxWdxspAfwE3vzVGIMwtDZ1iOuDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=EF3F/eXn99wcO2nft34mQ1TEmvoRUoFSqYcVgPIVGlA=; b=JMROCVobUdqE2mdJ9QP8YyXqEySZkamSAd/OakzTJJCyt8diB6FXH4YhBRzInVKFluuBIjieM9PF3Q291sqOv2YyclfZPiQXzwatKTnU/Wq0v3z0IOMGj19hBWQe8LX+lkJdvf+PUOqbQ9fn28SC0BzhF2P8CDFXfeCXxDGN4MhrTuXg+nJS5JSizRR8bY6hZUtiXzK95a8lDut6KXsQL3J/GiGVg6lXV1otc+YE3coJ9haqLIr3g7JYVQ3kVW/yixxqwH/KNiwKM9zUNCEtICk0+P/JBmeuZl0zqPy3JSk8OY0XhiFk9OORt3afclBW2Ix57BkFe7SocusP9LTJFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=EF3F/eXn99wcO2nft34mQ1TEmvoRUoFSqYcVgPIVGlA=; b=Ha2AHNxLPOR+4FALp5sN1Jjg7dY7wFMGurUzo8F18HtVcPkHuurVCHifAtzIE39jbr36aJuB2NMz88wx220DqtGORbRtPZO9J5DWFL3HXvLee6e9fAJr6IFijr5tD+8UuxPvCpZyruokCre1ig5pw2jbs5daLYGGaMzGqg4vwuY= Received: from BN9PR03CA0310.namprd03.prod.outlook.com (2603:10b6:408:112::15) by BY5PR12MB4836.namprd12.prod.outlook.com (2603:10b6:a03:1fc::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Tue, 8 Mar 2022 16:39:48 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::e8) by BN9PR03CA0310.outlook.office365.com (2603:10b6:408:112::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:47 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:47 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:44 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 05/12] KVM: SVM: Update avic_kick_target_vcpus to support 32-bit APIC ID Date: Tue, 8 Mar 2022 10:39:19 -0600 Message-ID: <20220308163926.563994-6-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dcb41e45-b34a-4f0c-3aab-08da012241dd X-MS-TrafficTypeDiagnostic: BY5PR12MB4836:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gsfz2KkHqMHnAQ7L0Nn/12h95Yi1k8fajrnTL7PBsE0h5oC5SRCsgRyegj4Rif3wyvJ1yvoaSulZLKkYEaSoqUfNqiRvM+BHz4hFO8BZtu9kq5vN0qYgu+znnxubzLLQDzZOl5NqPxaSBGPMdKdISWmkTWucvjsyr1/1hyDWVJiLNi4ZsKenlolThuYh7qBSp2eZgqcvoIWmNwVlZD8uK10pql3w3jw/VW8pW3oWtKiPjjSjH2+DliUAqEGbRVBR6/vtC/1/gNy1QOB6lwfpVb/C5ivmxejW4QOOCdlp8kjY2FXoX3BkK+bFebXvumsq8OGKZCpnb9urMLKyN/SzmvH3KCvaI8ik5DJM59wNsUJqYwF8ktdzYfm7OI7oA/GHOw+dItxAFDkJHC1/1cnGQEzaVQXTIUmDTpeBsazPKAV6f7kLK9ypwIrkHabp8d5PAgfGAwwezJZlzoB5j8SD3UpadeyyqUGImSdE3VjmeTe0KUNmumwpkDnaBuP1L317RGSjJchLvxAcR21UeSMmxwCVGCnMf6qe0s+DfkljEBPeQuBCiGWDYeZtkTO+haGYQRIvlOjgkBXtWSbUQiYLRwtQzQd6jK8WLhLKQ4MPpFAfwDlWyFzOfea9Dab2PTXAkiyzmz6OBmj5PP51pAzXwlsTszAs966W+WgV3BPGHi4Ct46PgZqQYir0/EU8jSSfe+qE5iE1ddEx7VeL9eRMbA== 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:(13230001)(4636009)(46966006)(36840700001)(40470700004)(82310400004)(316002)(4326008)(110136005)(54906003)(336012)(8676002)(70206006)(40460700003)(70586007)(86362001)(44832011)(426003)(8936002)(356005)(81166007)(2906002)(5660300002)(15650500001)(2616005)(26005)(186003)(16526019)(1076003)(7696005)(6666004)(508600001)(36860700001)(83380400001)(47076005)(36756003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:47.1254 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dcb41e45-b34a-4f0c-3aab-08da012241dd 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4836 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org In x2APIC mode, ICRH contains 32-bit destination APIC ID. So, update the avic_kick_target_vcpus() accordingly. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- arch/x86/kvm/svm/avic.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index f128b0189d4a..5329b93dc4cd 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -307,9 +307,15 @@ static void avic_kick_target_vcpus(struct kvm *kvm, struct kvm_lapic *source, * since entered the guest will have processed pending IRQs at VMRUN. */ kvm_for_each_vcpu(i, vcpu, kvm) { + u32 dest; + + if (apic_x2apic_mode(vcpu->arch.apic)) + dest = icrh; + else + dest = GET_XAPIC_DEST_FIELD(icrh); + if (kvm_apic_match_dest(vcpu, source, icrl & APIC_SHORT_MASK, - GET_XAPIC_DEST_FIELD(icrh), - icrl & APIC_DEST_MASK)) { + dest, icrl & APIC_DEST_MASK)) { vcpu->arch.apic->irr_pending = true; svm_complete_interrupt_delivery(vcpu, icrl & APIC_MODE_MASK, From patchwork Tue Mar 8 16:39:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774021 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E4025C4332F for ; Tue, 8 Mar 2022 16:40:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348502AbiCHQkz (ORCPT ); Tue, 8 Mar 2022 11:40:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38312 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348469AbiCHQkw (ORCPT ); Tue, 8 Mar 2022 11:40:52 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2055.outbound.protection.outlook.com [40.107.236.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C765B517D7; Tue, 8 Mar 2022 08:39:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yef1yiYcj495023eMqaho8d2sOdfL4PsbN2nK4SrJT08GMjdhjKAY4P2wIUNVu8AIuQOVKZq9IZ9r1NDC8QOsvDjDZc2fGsRHy3Q+FqVlDDMe+8eQXNw11i4gnUPMtGhpsLERmBwUN/Q+gveFRm8Wbomvv3dvBtONmikoRUggX/17K1C8b9rkYmKIKVRCxUvkBH/pdhhKrLVPF1ezpepstY1IFiqvn34QwhOLkGzQgAnZIuMZ/DKixY18dK63n1LSytlhSWP6se6YCghIt3DIqhONixI7OV/DjQPgPOKXS6VJc9jo0YRbZy52aKQCTv9R/SuoY0Rrvld+Z5aFLZDKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=4HIz0qYgdLhzqha9SJoWKM3UBVlaBGI3PcSEWagWFWY=; b=hs2iF59IDCRLN3b8+37c9Uh/q+Mg6zVO/2ZWbyv85bIMX/dGJupxm7Ouk3B6+iPhpew2T+qSK4hQ+FQ8Ym6Kvo0WDBu25zVMLbGHqvOjOI/L+gxGtJMIq5ceurhhh3BYVWcHL7AvNQtaakXV36iZy2VC3o+TjeAR4qVQlitJLTFsnzBsHOiDrlsPpxwdHatbZjh+8mfOptArTv0ToeTlO6+x7gvyTWuLhOv2nqItH1/DkAn0QxTZbr5g/kvQrzR42ICzan43ru9ZG9iFEE5S6edUldj3yqQNWcMWBoTvF7KE758Ci+MHybtMo6ZQXnWC8p2jtcJF4lKISzc6p8kl1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=4HIz0qYgdLhzqha9SJoWKM3UBVlaBGI3PcSEWagWFWY=; b=q0KmgC2xoXYUnQkg116hbNgICHFcio5hs0EYHUnOq78iXyYFSTwUbRnu7JBYKWd51/zcoJdVx1he8ZvmvyHA13gpA3kavl/K35zzLYioFbLUIZ5CVsDzuAgyo0i4MjrEwTPErotkwm3R5mj/muVYAkMPo3zc38N5XGK5cJ0ImUI= Received: from BN9PR03CA0321.namprd03.prod.outlook.com (2603:10b6:408:112::26) by BYAPR12MB3046.namprd12.prod.outlook.com (2603:10b6:a03:aa::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.19; Tue, 8 Mar 2022 16:39:49 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::d7) by BN9PR03CA0321.outlook.office365.com (2603:10b6:408:112::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:48 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:48 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:45 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 06/12] KVM: SVM: Do not update logical APIC ID table when in x2APIC mode Date: Tue, 8 Mar 2022 10:39:20 -0600 Message-ID: <20220308163926.563994-7-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8768b5e5-ad56-4b99-05b6-08da012242af X-MS-TrafficTypeDiagnostic: BYAPR12MB3046:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yY24P5nvbGFR1jnz7KfuzrkCOIszo4zlHWuL7bzobd7SBlAJ2haIJMDKr6oRuhThWfMMFbU7Oy5ZhU0Y90g64UOcmHB8wkdjIiJWBE1z9NaQIMlqdU9doDLt9bj3SVF2o2gSwRiDVdlb7OHlCK/h2h8Va3Dqwy4S//CvAdZsufisxl3R9XoTzfSn1/NJaMTZBsEW/BCy4yiLVsFfbCe4p5Xv2z8rB6QpuTC/6lGaecdd2J7+vI8Hbg2jUkIkYrvFUZJv5DBpEQv7Qfeolgjy/WJUj7LpAYgJ3c6Ga+Rjw4udAc4IS8HlreULyXg38WlqfiicobgTseWGKj2Lwjv4dru4+/hHP7aXMjvGKFpdYcWCd3vTJ3Cl9ffkXSiMfvLm1DQ5PWeOScKI34uIyto6fqtisTYaFAyzYeA3w/FRpiLkYhi+wSMxMEoMvh2I1A+lLjXvNciF6VP9+8drGN76PUiTsFVSYyB/Dje9D/9Ge5G7EiBApTPG6D7qX/EyNzUEjVmCtHaa3oCFZY2CGR2PSd9zr/rNtmSojletBsby0XzJt9RbzcwouEEianJcjS3xTPqxZ1OqAy3aw0ysCOXwPREEha3e5ImPWzgvVUbQeeStpcUTnK1ZyG7FvR3voFdc3Bk92wgKaCfhyFgNYzRNJ8E3Yt1ymeCpGqOmHBgBaTqy5eh+Fu6NTLpWjFIlMLDVDXsFl7qBo8rAPJDCziaQjA== 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:(13230001)(4636009)(36840700001)(40470700004)(46966006)(16526019)(44832011)(86362001)(40460700003)(8936002)(2906002)(82310400004)(4326008)(36756003)(47076005)(8676002)(70206006)(70586007)(36860700001)(5660300002)(356005)(81166007)(110136005)(83380400001)(54906003)(316002)(7696005)(426003)(336012)(6666004)(26005)(186003)(508600001)(1076003)(2616005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:48.4847 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8768b5e5-ad56-4b99-05b6-08da012242af 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3046 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org In X2APIC mode the Logical Destination Register is read-only, which provides a fixed mapping between the logical and physical APIC IDs. Therefore, there is no Logical APIC ID table in X2AVIC and the processor uses the X2APIC ID in the backing page to create a vCPU’s logical ID. Also, when x2AVIC is activated, a guest write to the x2APIC LDR register would result in #GP injection into the guest by the hardware. Therefore, add logic to check x2APIC mode before updating logical APIC ID table. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- arch/x86/kvm/svm/avic.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 5329b93dc4cd..4d7a8743196e 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -406,6 +406,10 @@ static int avic_ldr_write(struct kvm_vcpu *vcpu, u8 g_physical_id, u32 ldr) bool flat; u32 *entry, new_entry; + /* Note: x2AVIC does not use logical APIC ID table */ + if (apic_x2apic_mode(vcpu->arch.apic)) + return 0; + flat = kvm_lapic_get_reg(vcpu->arch.apic, APIC_DFR) == APIC_DFR_FLAT; entry = avic_get_logical_id_entry(vcpu, ldr, flat); if (!entry) @@ -424,8 +428,13 @@ static void avic_invalidate_logical_id_entry(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); bool flat = svm->dfr_reg == APIC_DFR_FLAT; - u32 *entry = avic_get_logical_id_entry(vcpu, svm->ldr_reg, flat); + u32 *entry; + + /* Note: x2AVIC does not use logical APIC ID table */ + if (apic_x2apic_mode(vcpu->arch.apic)) + return; + entry = avic_get_logical_id_entry(vcpu, svm->ldr_reg, flat); if (entry) clear_bit(AVIC_LOGICAL_ID_ENTRY_VALID_BIT, (unsigned long *)entry); } From patchwork Tue Mar 8 16:39:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774022 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A93D8C433F5 for ; Tue, 8 Mar 2022 16:40:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348509AbiCHQk4 (ORCPT ); Tue, 8 Mar 2022 11:40:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348478AbiCHQkx (ORCPT ); Tue, 8 Mar 2022 11:40:53 -0500 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam08on2071.outbound.protection.outlook.com [40.107.100.71]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 644FD517DF; Tue, 8 Mar 2022 08:39:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bsuyz3FzqS8VKWGhJGIxyj2Zxr8rpsvrPePmxeJ+HUlyjVkS3sim2NvdmuQ/FoRyaYEx3OiKiMOGkA9GE4NO1/mpRTSCQUnNLL9WkiUFDDLTt+9UcQINsAtlBzVzvEeHWuJEU67qk+WZUfI35Skst7PDKcdGtQmnbV1slbsHjTlR21i17fFkeFpNa6u8jQf+rhJnsYehR6jcnqgtJsQCqfDlpVac6UMOOgyT9GdIiauXXK2riZjgVqyl/ZQN5leJ/IKtCGMiy58k/bEFTODSSXZj819uxgBxH5LXCd3k1Nu9KKoXbDdP7HGIvhCmysvWKAdnknenxzT12jMQHO54zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=ehRyC3GVKVAZRTKpx5jlzsRnBHEmgBQJSfDVkl0CmH4=; b=WoNs7byysm4UHpvL0YX+J42K9cZEzLwMarEkUyFOJT+TfPgqpVrABuW/X9RuofwJutqiVc61jg1ygl2NcVUmHznuEVzfr11DJF5ygvonogp4SPJWtUN3uP1H9TDD37k62YXNZfmUy81AGvt+qR/3IszwscuVdE+0kzwadggfsQzaablmHGXR1Q4eEebStP6L6lwFkVNRFBZlNHfG8nk7j8sYfeYkVFhVhtoj3JHRqCx8zpFA5wZZhqDin0JXbpNPTpWaoX9lL84x7EfodoK56bLGLbCCgIAc8pT56Q/vNVRowYfscMNlxxCsOIQDqC/7CqBSzsT14wslwlZW4QsoqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=ehRyC3GVKVAZRTKpx5jlzsRnBHEmgBQJSfDVkl0CmH4=; b=Opb45G7dybR8QLnDWleJmo6qGtQW3674Zzd0UL0w/CJeCasTkcNZVB7L/rzUNfScTE0BeI5GPlT/GcrtmJb2SD3NGWJYd+wr/BbA/zRYq00UlNVDQUOD/Zwmn6VgnxJNS7seOp0mI/LpFCVSwaqLVrch0uxLaYMfK7+Wy58yXTk= Received: from BN9PR03CA0321.namprd03.prod.outlook.com (2603:10b6:408:112::26) by MW5PR12MB5681.namprd12.prod.outlook.com (2603:10b6:303:19e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.21; Tue, 8 Mar 2022 16:39:50 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::e3) by BN9PR03CA0321.outlook.office365.com (2603:10b6:408:112::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:50 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:50 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:45 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 07/12] KVM: SVM: Introduce helper function kvm_get_apic_id Date: Tue, 8 Mar 2022 10:39:21 -0600 Message-ID: <20220308163926.563994-8-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b510b5d4-69a6-4bb2-437c-08da012243b5 X-MS-TrafficTypeDiagnostic: MW5PR12MB5681:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Xr5bX8wYDfF4pxbSByTj1IzFGnpW9Gm8nHLpkeB1mnpshaEEcOW9yNPSH5JgiZ1W84aKM5PxIvEXFJe3/mfpSPxDMNC2sE+0uKHu1EymBu3J6ijg6UFvAFi+k69EViwrTTRZ6xqZrKgdiTJLmWlvF9hTa6jeg8rjfpg+0+Nx08PJWQLkGy1+YCidDuQqdV3P0meVM1WH+vLJPKaS5AOSYyIVXrKqkHbtK19g1hNkWacK1AIjaeLIs1ZNkM1DdA2p66SaRa4w445rYnD29oiII0BH47TSF6UkBxXVAOhwuMxzc9OGWzMe+KIPChyfFrUsIbX25zQZw8twocF1xbJgpMvtiShjIvYm0f02Sbx6NjC81NyF8FGEUv7ozRfP4AGz088Iec1P7PNBfPNkbAOupge4FyFWIKQ8gUHp8ws2S4822LSs8XXHtQFMYHqzBaxss/1ZvMlMXtNNcWOLmJyyFM0kQu5t/Q+fJbBG94Ce9eO2MSXB77wHGlzVIViS3Yp0lgWM4Reo6QszHuQJydcEqbOpE/uQw54krfDl9gN0mBjYVrPWlL/pjvE+75X6fFofFY+pCajvz5TwLnpWTnnhX6ZeYsNUWOoNP1WL4ZSMAMKEPQs36GAWDso39DZo8tKyu2xy8rKinUprkjzAewq4eSMTqAkz6d6EjVsIdrZhFRpPnglXCdxkOGf2YNMsdIGGjpW9cMetrfTxXJGFlVhVaA== 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:(13230001)(4636009)(46966006)(36840700001)(40470700004)(7696005)(70586007)(36860700001)(4326008)(82310400004)(8676002)(70206006)(2906002)(16526019)(26005)(86362001)(83380400001)(81166007)(336012)(356005)(8936002)(426003)(186003)(5660300002)(1076003)(44832011)(40460700003)(47076005)(316002)(2616005)(54906003)(110136005)(6666004)(36756003)(508600001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:50.1565 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b510b5d4-69a6-4bb2-437c-08da012243b5 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR12MB5681 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org This function returns the currently programmed guest physical APIC ID of a vCPU in both xAPIC and x2APIC modes. Suggested-by: Maxim Levitsky Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/lapic.c | 23 +++++++++++++++++++++++ arch/x86/kvm/lapic.h | 5 +---- arch/x86/kvm/svm/avic.c | 21 +++++++++++++++++---- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 03d1b6325eb8..73a1e650a294 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -106,11 +106,34 @@ static inline int apic_enabled(struct kvm_lapic *apic) (LVT_MASK | APIC_MODE_MASK | APIC_INPUT_POLARITY | \ APIC_LVT_REMOTE_IRR | APIC_LVT_LEVEL_TRIGGER) +static inline u8 kvm_xapic_id(struct kvm_lapic *apic) +{ + return kvm_lapic_get_reg(apic, APIC_ID) >> 24; +} + static inline u32 kvm_x2apic_id(struct kvm_lapic *apic) { return apic->vcpu->vcpu_id; } +int kvm_get_apic_id(struct kvm_vcpu *vcpu, u32 *id) +{ + if (!id) + return -EINVAL; + + if (!apic_x2apic_mode(vcpu->arch.apic)) { + /* For xAPIC, APIC ID cannot be larger than 254. */ + if (vcpu->vcpu_id >= APIC_BROADCAST) + return -EINVAL; + + *id = kvm_xapic_id(vcpu->arch.apic); + } else { + *id = kvm_x2apic_id(vcpu->arch.apic); + } + return 0; +} +EXPORT_SYMBOL_GPL(kvm_get_apic_id); + static bool kvm_can_post_timer_interrupt(struct kvm_vcpu *vcpu) { return pi_inject_timer && kvm_vcpu_apicv_active(vcpu); diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h index 2b44e533fc8d..2b9463da1528 100644 --- a/arch/x86/kvm/lapic.h +++ b/arch/x86/kvm/lapic.h @@ -254,9 +254,6 @@ static inline enum lapic_mode kvm_apic_mode(u64 apic_base) return apic_base & (MSR_IA32_APICBASE_ENABLE | X2APIC_ENABLE); } -static inline u8 kvm_xapic_id(struct kvm_lapic *apic) -{ - return kvm_lapic_get_reg(apic, APIC_ID) >> 24; -} +int kvm_get_apic_id(struct kvm_vcpu *vcpu, u32 *id); #endif diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 4d7a8743196e..7e5a39a8e698 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -441,14 +441,21 @@ static void avic_invalidate_logical_id_entry(struct kvm_vcpu *vcpu) static int avic_handle_ldr_update(struct kvm_vcpu *vcpu) { - int ret = 0; + int ret; struct vcpu_svm *svm = to_svm(vcpu); u32 ldr = kvm_lapic_get_reg(vcpu->arch.apic, APIC_LDR); - u32 id = kvm_xapic_id(vcpu->arch.apic); + u32 id; + + ret = kvm_get_apic_id(vcpu, &id); + if (ret) + return ret; if (ldr == svm->ldr_reg) return 0; + if (id == X2APIC_BROADCAST) + return -EINVAL; + avic_invalidate_logical_id_entry(vcpu); if (ldr) @@ -464,7 +471,12 @@ static int avic_handle_apic_id_update(struct kvm_vcpu *vcpu) { u64 *old, *new; struct vcpu_svm *svm = to_svm(vcpu); - u32 id = kvm_xapic_id(vcpu->arch.apic); + u32 id; + int ret; + + ret = kvm_get_apic_id(vcpu, &id); + if (ret) + return 1; if (vcpu->vcpu_id == id) return 0; @@ -484,7 +496,8 @@ static int avic_handle_apic_id_update(struct kvm_vcpu *vcpu) * APIC ID table entry if already setup the LDR. */ if (svm->ldr_reg) - avic_handle_ldr_update(vcpu); + if (avic_handle_ldr_update(vcpu)) + return 1; return 0; } From patchwork Tue Mar 8 16:39:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774023 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2334DC433FE for ; Tue, 8 Mar 2022 16:40:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347586AbiCHQk7 (ORCPT ); Tue, 8 Mar 2022 11:40:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348482AbiCHQkx (ORCPT ); Tue, 8 Mar 2022 11:40:53 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2077.outbound.protection.outlook.com [40.107.243.77]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C2265133E; Tue, 8 Mar 2022 08:39:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hcqVYj71CZYWCY59XE+35WNQsph7o+x1+az/S7EMeCZoPYE7g7NtwHOI8wz39qSndnSVD7ymI/jLTyCLvqtXCFMsCLBN96PITAUvYdxnUKBfWgU9adZPMrUHqKWX9KL9BmvrDusEXPnTtbOBXDiYgGdpdZYPlAh+RhiSgEM/cTWDU+WAkZOgFb6PLLCNiuwCo49711P1cpeLUMkvUh707xUnmTItxF9Lk7E/6O36b8wZamTuQ+O6hD5vwjFAcIExebx8rxcPqiMUkh512n/hI0b+6qu00+skbUukO2UmXOEQLyRe4PPlAz8zCrX92jlwl8uG8onYoOWSREp6ZDm4zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=4UnRT10K4/m2wKs/lYEl5wl8ZQ6X3t9KgM0ydPfTSg8=; b=JjJgor1R9GPIMzRfQJ19LGIh5Oj38Avl51TJGmAjjigBe8ZLygNN0STzNBbpExhrG0gXvSnw+/VMjdIV5oE4hDoB4crIaLPkdkAP2QlabV8H4sxJLqdngleZTIBk2rvLiEIuUULDEDLRs8EIWY21iXVFl4m68ftk1zFvxKUWFa6E8lKswFoExNGVYw046yqrlnX3fUTpMIwKL3kQz/V8YtlgnkKVj9/EcnO6q4nkNepFiRr1EIR48mzUE+HAtYCCiwW/RcSNiAY8+uvB5/7KdKDRP5VMqMlYExeqzdpf0+KlwNLhtBZbIJjkVhb8a/AGto4w8pJhsi5OjEbNNM230w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=4UnRT10K4/m2wKs/lYEl5wl8ZQ6X3t9KgM0ydPfTSg8=; b=DSZ8LD0YP10Mf1WoK0ThuE/NjnR/Jacg012Lt8kjjEbC8NThRbBm5Ou6tSbrCGKbF+chh/5ElsX4ic0OIJGaNTnRkoUNTK4gz+XBnbTtJWY/Wn2VRGtH/CN3batub3g3KR9vUl63pmWxB8UY1UD8tcuxmmXApZ/R/rHc4OxDw8Q= Received: from BN9PR03CA0858.namprd03.prod.outlook.com (2603:10b6:408:13d::23) by BN6PR12MB1682.namprd12.prod.outlook.com (2603:10b6:405:4::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Tue, 8 Mar 2022 16:39:51 +0000 Received: from BN8NAM11FT060.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13d:cafe::4d) by BN9PR03CA0858.outlook.office365.com (2603:10b6:408:13d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.13 via Frontend Transport; Tue, 8 Mar 2022 16:39: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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT060.mail.protection.outlook.com (10.13.177.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:50 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:46 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 08/12] KVM: SVM: Adding support for configuring x2APIC MSRs interception Date: Tue, 8 Mar 2022 10:39:22 -0600 Message-ID: <20220308163926.563994-9-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cfe410ba-aaea-4363-4af1-08da012243fd X-MS-TrafficTypeDiagnostic: BN6PR12MB1682:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: svyK5FsRt21vUvk13M7y08A8E6TC7LaBV2ZvKTEieZCDU2u1b8fx0BkMJatTdvmRSUEZfdrEgFpsG85MMqXRjSItN0oe4vuMDtqyqzld6d7wrXhm1oOdZIb1tWXYm3hP0t9TWjYPSgeMHJOefLflbTgBtelufB51TNHC5SthwQoW3PbXld9e4a4PdJvYDcWPDqEwJc300n+hmwlybeI2EAz1Wuy+6skFNKf1b28jmxGgmoKxemhiTBPOWmu78gN7TALG+9Cx5RjpNMm4xKRE+s003qLhiE9uVSLGOYIZZCQdJaq/8U0xlLWjELt6l8PF97Xv88gKd59UizxaG6spODaC1l2ZQcIVrFOFtyn62hOK6PY9OVNR8kNYs7T+9Dobm64zoq3VEOcpJG3xz/g4l17nnzpavElydhUpuNWM91O1eLWLLa6HwXk9Q324ONoLyLqXL5uiW0GFL+4qwdolPL2A2a18jonKhSwb3VBETBZjwsrOBdTViI/z7Iu4DGKmKFx6qqKxzrrYntLCdENmpmGh86wBSdTqoa2Nz5FLpLFqA2lfM6RHDJCXYIzJJBRBFxUYhHNtqskMir+XoCUuASngab0ERgt0I8XXcu4nfcNbSD1cDSSnMlVnu5UKYbgvbglV+pUmVRIPdtFTmnwvsIs0ytRzSx8ThLM9isWvHcobPI8JddNnbbr7ugDAz4vRE5dqNynNwgWKvNVr5lEvVg== 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:(13230001)(4636009)(46966006)(36840700001)(40470700004)(82310400004)(70206006)(8936002)(70586007)(4326008)(86362001)(5660300002)(44832011)(1076003)(2616005)(336012)(426003)(26005)(186003)(8676002)(36756003)(47076005)(83380400001)(2906002)(40460700003)(16526019)(7696005)(6666004)(36860700001)(356005)(81166007)(110136005)(54906003)(316002)(508600001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:50.6754 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cfe410ba-aaea-4363-4af1-08da012243fd 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: BN8NAM11FT060.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1682 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org When enabling x2APIC virtualization (x2AVIC), the interception of x2APIC MSRs must be disabled to let the hardware virtualize guest MSR accesses. Current implementation keeps track of MSR interception state for generic MSRs in the svm_direct_access_msrs array. For x2APIC MSRs, introduce direct_access_x2apic_msrs array. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/svm.c | 67 +++++++++++++++++++++++++++++++----------- arch/x86/kvm/svm/svm.h | 7 +++++ 2 files changed, 57 insertions(+), 17 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 3048f4b758d6..ce3c68a785cf 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -89,7 +89,7 @@ static uint64_t osvw_len = 4, osvw_status; static DEFINE_PER_CPU(u64, current_tsc_ratio); #define TSC_RATIO_DEFAULT 0x0100000000ULL -static const struct svm_direct_access_msrs { +static struct svm_direct_access_msrs { u32 index; /* Index of the MSR */ bool always; /* True if intercept is initially cleared */ } direct_access_msrs[MAX_DIRECT_ACCESS_MSRS] = { @@ -117,6 +117,9 @@ static const struct svm_direct_access_msrs { { .index = MSR_INVALID, .always = false }, }; +static struct svm_direct_access_msrs +direct_access_x2apic_msrs[NUM_DIRECT_ACCESS_X2APIC_MSRS + 1]; + /* * These 2 parameters are used to config the controls for Pause-Loop Exiting: * pause_filter_count: On processors that support Pause filtering(indicated @@ -609,41 +612,42 @@ static int svm_cpu_init(int cpu) } -static int direct_access_msr_slot(u32 msr) +static int direct_access_msr_slot(u32 msr, struct svm_direct_access_msrs *msrs) { u32 i; - for (i = 0; direct_access_msrs[i].index != MSR_INVALID; i++) - if (direct_access_msrs[i].index == msr) + for (i = 0; msrs[i].index != MSR_INVALID; i++) + if (msrs[i].index == msr) return i; return -ENOENT; } -static void set_shadow_msr_intercept(struct kvm_vcpu *vcpu, u32 msr, int read, - int write) +static void set_shadow_msr_intercept(struct kvm_vcpu *vcpu, + struct svm_direct_access_msrs *msrs, u32 msr, + int read, void *read_bits, + int write, void *write_bits) { - struct vcpu_svm *svm = to_svm(vcpu); - int slot = direct_access_msr_slot(msr); + int slot = direct_access_msr_slot(msr, msrs); if (slot == -ENOENT) return; /* Set the shadow bitmaps to the desired intercept states */ if (read) - set_bit(slot, svm->shadow_msr_intercept.read); + set_bit(slot, read_bits); else - clear_bit(slot, svm->shadow_msr_intercept.read); + clear_bit(slot, read_bits); if (write) - set_bit(slot, svm->shadow_msr_intercept.write); + set_bit(slot, write_bits); else - clear_bit(slot, svm->shadow_msr_intercept.write); + clear_bit(slot, write_bits); } -static bool valid_msr_intercept(u32 index) +static bool valid_msr_intercept(u32 index, struct svm_direct_access_msrs *msrs) { - return direct_access_msr_slot(index) != -ENOENT; + return direct_access_msr_slot(index, msrs) != -ENOENT; } static bool msr_write_intercepted(struct kvm_vcpu *vcpu, u32 msr) @@ -674,9 +678,12 @@ static void set_msr_interception_bitmap(struct kvm_vcpu *vcpu, u32 *msrpm, /* * If this warning triggers extend the direct_access_msrs list at the - * beginning of the file + * beginning of the file. The direct_access_x2apic_msrs is only for + * x2apic MSRs. */ - WARN_ON(!valid_msr_intercept(msr)); + WARN_ON(!valid_msr_intercept(msr, direct_access_msrs) && + (boot_cpu_has(X86_FEATURE_X2AVIC) && + !valid_msr_intercept(msr, direct_access_x2apic_msrs))); /* Enforce non allowed MSRs to trap */ if (read && !kvm_msr_allowed(vcpu, msr, KVM_MSR_FILTER_READ)) @@ -704,7 +711,16 @@ static void set_msr_interception_bitmap(struct kvm_vcpu *vcpu, u32 *msrpm, void set_msr_interception(struct kvm_vcpu *vcpu, u32 *msrpm, u32 msr, int read, int write) { - set_shadow_msr_intercept(vcpu, msr, read, write); + struct vcpu_svm *svm = to_svm(vcpu); + + if (msr < 0x800 || msr > 0x8ff) + set_shadow_msr_intercept(vcpu, direct_access_msrs, msr, + read, svm->shadow_msr_intercept.read, + write, svm->shadow_msr_intercept.write); + else + set_shadow_msr_intercept(vcpu, direct_access_x2apic_msrs, msr, + read, svm->shadow_x2apic_msr_intercept.read, + write, svm->shadow_x2apic_msr_intercept.write); set_msr_interception_bitmap(vcpu, msrpm, msr, read, write); } @@ -786,6 +802,22 @@ static void add_msr_offset(u32 offset) BUG(); } +static void init_direct_access_x2apic_msrs(void) +{ + int i; + + /* Initialize x2APIC direct_access_x2apic_msrs entries */ + for (i = 0; i < NUM_DIRECT_ACCESS_X2APIC_MSRS; i++) { + direct_access_x2apic_msrs[i].index = boot_cpu_has(X86_FEATURE_X2AVIC) ? + (0x800 + i) : MSR_INVALID; + direct_access_x2apic_msrs[i].always = false; + } + + /* Initialize last entry */ + direct_access_x2apic_msrs[i].index = MSR_INVALID; + direct_access_x2apic_msrs[i].always = false; +} + static void init_msrpm_offsets(void) { int i; @@ -4750,6 +4782,7 @@ static __init int svm_hardware_setup(void) memset(iopm_va, 0xff, PAGE_SIZE * (1 << order)); iopm_base = page_to_pfn(iopm_pages) << PAGE_SHIFT; + init_direct_access_x2apic_msrs(); init_msrpm_offsets(); supported_xcr0 &= ~(XFEATURE_MASK_BNDREGS | XFEATURE_MASK_BNDCSR); diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index b53c83a44ec2..19ad40b8383b 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -29,6 +29,8 @@ #define MAX_DIRECT_ACCESS_MSRS 20 #define MSRPM_OFFSETS 16 +#define NUM_DIRECT_ACCESS_X2APIC_MSRS 0x100 + extern u32 msrpm_offsets[MSRPM_OFFSETS] __read_mostly; extern bool npt_enabled; extern bool intercept_smi; @@ -241,6 +243,11 @@ struct vcpu_svm { DECLARE_BITMAP(write, MAX_DIRECT_ACCESS_MSRS); } shadow_msr_intercept; + struct { + DECLARE_BITMAP(read, NUM_DIRECT_ACCESS_X2APIC_MSRS); + DECLARE_BITMAP(write, NUM_DIRECT_ACCESS_X2APIC_MSRS); + } shadow_x2apic_msr_intercept; + struct vcpu_sev_es_state sev_es; bool guest_state_loaded; From patchwork Tue Mar 8 16:39:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BB4EEC4332F for ; Tue, 8 Mar 2022 16:40:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348542AbiCHQlI (ORCPT ); Tue, 8 Mar 2022 11:41:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38354 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348477AbiCHQkx (ORCPT ); Tue, 8 Mar 2022 11:40:53 -0500 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2076.outbound.protection.outlook.com [40.107.93.76]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6F89517EB; Tue, 8 Mar 2022 08:39:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ihD5vV4NNxNIsNnOcp1kRxR/cY9kHvcZbn6P2yrCrya0AOWUml2u6gb8R22m06DyfOHLNlA5ZzKJ8dJxRtm2pH3cz+jLGMo1DDCHux0fNqrHd49sHwpraEh88Bi0DUOAsruoazS3l4CV+5RrbS/4ZF7yXnfnaWz7yxbYEQdnpzFfHEl7OclshUhRVGPn9dF/aq7ZeV031WPJ7S3nitvKmphSxPt6zylJDn8WFWhfJrIIWXJ5Sew0OpBsaeTWQY4Nk541sKcSnV/eepZ5TVWOb3crJLAAhUvFAjum2Ae1d073SDVSX3Y3dZEVygh/mQ713jIIN0Ky/Mjos05dpbmv/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=8Jlxww9AZ38FkwptDw07Qq2qcu9/6qYcFIx/ENpXtGc=; b=FTaqMKdtfPo0QF7Wt8mKaqkdTt1DY1tMe8IS+aj4shxNDyNMgBXCZmVRQ2Ey/LAcMtZJ97a1Ubg4m92rs78EoPLVZHEnPUwNG45uVNzj8Ek12nSO2sgJ8YWc/1/dwlU/VwzzvvcuIiXX5VQ+HYdDr6/D4o6geJvuXH2kHgqacMiUWsO0bWHs7kPQ29zAU/6OVEBteJPEZwtVDL7DC8ofedDBXZXqykRJscRoiatIruH30lASfoz80h48eHaEkSIvfV7AhW8ZO1yclRd6e8ucV4RN0QuImuX2v5r5DH3SSrR/TRFBkJt3OMPHWp2U2JGWVknWT+ItzZ+QKZSAPW3ynA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=8Jlxww9AZ38FkwptDw07Qq2qcu9/6qYcFIx/ENpXtGc=; b=SySFDvf4uHHFhaPpr7+ATILPmzehDNcFlqUTRa0VX5q5BU51yDhsFW7KtMbrOJzjaodZMxZI6HuFRYOdtMSxjaaii6a8QbrbCmioXws8KjWNLkkGuMq17OyqNErGP9DJF42HruQKt4EwPZBBqpqEY2qLAGwSWS17b8AAMt/re2U= Received: from BN9PR03CA0327.namprd03.prod.outlook.com (2603:10b6:408:112::32) by BY5PR12MB3730.namprd12.prod.outlook.com (2603:10b6:a03:1ac::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Tue, 8 Mar 2022 16:39:51 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::60) by BN9PR03CA0327.outlook.office365.com (2603:10b6:408:112::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39: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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:51 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:47 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 09/12] KVM: SVM: Refresh AVIC settings when changing APIC mode Date: Tue, 8 Mar 2022 10:39:23 -0600 Message-ID: <20220308163926.563994-10-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fc411b15-97cb-4900-fe09-08da01224454 X-MS-TrafficTypeDiagnostic: BY5PR12MB3730:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FWMYKs3ilbbvFprCUQo/a0r2y+jpi/13USBh7/xAQhVT7BzL90NsbBwNY3NUHsOylU9Br4rp5avSGz1apzON4S45cyBWEU/g21jhbutHCV4UvKcZmXGIhkpU68L26KKwHd4b2iMn4RlzAsg8JAbhDyBf7oYIgr9Ra3QioEPWrqTpPrrhqOqQTipaNZxT1VvDVZkb7tdr327TaUf379HvRd/3JbQIMcFlcO4JaLgSKLPYcVh0QURRy/Igy1cSDcTsARJAkFlm4BOY43IuorRcfly5qUysNm6DLfZRDmfsRh8vkKh4U6gH7cRHuEfYbdQv6gDC12y9rJ0qbE/KCb/v8G9CDIt2CI1Zd05C1DxbbJkpvtQr5HJKn0K1xo70Uvt+ZQxZK3+WmAr6B8dZ438MSMxW8877RzR0vbCjCSbdoxgj+x5bb0fq9EdlIkTNKgjs/jbuYZPKr/QaPHVZs+FIEwZYjGbN95YHG/gG/hR5rqgt1SpsyH/+61BAeIsNuV1L7tSzivg7Rgi9XrnlcGrR93AETvrSozqKyTHoJUIy10/wm3p13F+VXrlKFrd65nLgmqPOyl4z+rz0ROVYelx9P+aX/GH9HY7EHJ1VZoo3//DggnfJGiBOGvjLZp+GpSeXmy6Vr4ExM3OcJsFUPP0ZLRE/ABxBNX5BR7jEMUolbxVIoNO+y+U7DAkWn2B/Uy9JZH4M1gnGkoDsb1DwyGT91A== 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:(13230001)(4636009)(40470700004)(36840700001)(46966006)(70586007)(70206006)(8676002)(8936002)(4326008)(44832011)(5660300002)(2616005)(1076003)(426003)(336012)(26005)(186003)(36756003)(47076005)(2906002)(83380400001)(40460700003)(16526019)(6666004)(7696005)(82310400004)(36860700001)(356005)(81166007)(86362001)(110136005)(54906003)(508600001)(316002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:51.2658 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fc411b15-97cb-4900-fe09-08da01224454 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB3730 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org When APIC mode is updated (e.g. from xAPIC to x2APIC), KVM needs to update AVIC settings accordingly, whic is handled by svm_refresh_apicv_exec_ctrl(). Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/avic.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 7e5a39a8e698..53559b8dfa52 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -625,7 +625,24 @@ void avic_post_state_restore(struct kvm_vcpu *vcpu) void svm_set_virtual_apic_mode(struct kvm_vcpu *vcpu) { - return; + struct vcpu_svm *svm = to_svm(vcpu); + + if (!lapic_in_kernel(vcpu) || (avic_mode == AVIC_MODE_NONE)) + return; + + if (kvm_get_apic_mode(vcpu) == LAPIC_MODE_INVALID) + WARN_ONCE(true, "Invalid local APIC state"); + + svm->vmcb->control.avic_vapic_bar = svm->vcpu.arch.apic_base & + VMCB_AVIC_APIC_BAR_MASK; + kvm_vcpu_update_apicv(&svm->vcpu); + + /* + * The VM could be running w/ AVIC activated switching from APIC + * to x2APIC mode. We need to all refresh to make sure that all + * x2AVIC configuration are being done. + */ + svm_refresh_apicv_exec_ctrl(&svm->vcpu); } void svm_hwapic_irr_update(struct kvm_vcpu *vcpu, int max_irr) From patchwork Tue Mar 8 16:39:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06DF7C433EF for ; Tue, 8 Mar 2022 16:40:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348496AbiCHQlD (ORCPT ); Tue, 8 Mar 2022 11:41:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348480AbiCHQkx (ORCPT ); Tue, 8 Mar 2022 11:40:53 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2084.outbound.protection.outlook.com [40.107.243.84]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BAE0517EF; Tue, 8 Mar 2022 08:39:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g7SYGxiSTcCEe1zWHlU7NoMXkPEyxDaAzOUk3NuiEKosP1REop6MCqrq3KlXhZodcm3acxEo1LisObLkReyQll4D719KC7lyfKS9L/+JPcB+BIoSrHqGb4iYjjTclZQbocuIg5R8crwF6TOtnfKz6Y6jCMCkZOmzW0fF1sX7W+47YTxXYH+jfTZddZ2OwYbcOvYY1F17uO91GF19f8srJ6xKlu+wAY20nAG5CO1nVz//cTTsZHkW01mzNviHLUkzPfp+q4LmrCsSsFFTF2PitSq4kSnNcRcGBEtPvly2aXXChEd+Wk1ApsaGdomAOB0PrZaScqo9qH+VTqjKDBxuwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=GUFgz13zFDjSz5KztnJdjnxed2lXWM/5d+PCCB29jbQ=; b=a46rKTjdq0WK4C1JH2I4ZpCccfsZO0BoLblwmLyrB6WCcquzlNVOxB88y4Xgz/3BgeF7Uz8PEYLWKfIEO+Th346/N/fwbmPO24JTJQ455cS18EN4AgdAiSPa7wJ78303t9YWmXiRoiNegmyag8/n9p9IDZmfKzkF+rhZsPCiM58Xmh8HQz8mUU9oi1hk3REdrCyqJEJkpyWaqW7AKHcHUDch1Zzq+9qa/x10LGCtygBEguljnXUNjQIS/wm/E+PejG5xh4hh8m622AH0DTSqw0zCgXiVOnBGw2TG9nJq/d8y5eQCkaGviBdUIyhEitV1r6rI0y1f6jeFd4uBWU8ZWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=GUFgz13zFDjSz5KztnJdjnxed2lXWM/5d+PCCB29jbQ=; b=ig0LlQ8Fku2w7+HfdKvZFIE7HR/uNhqxhA+4aIfzrDpGmaWXVTzCCZ+xVGKS81LDPbg2GOxUqnvvPgkuImDHAnkAUAz2LOdCIli4EB5mpop7eGgMQze73Hq723d6vtEVuHFhiA8tT/vf52fnuTKEJEOIu1cV4a7FLf0P2TlVdyw= Received: from BN9PR03CA0844.namprd03.prod.outlook.com (2603:10b6:408:13d::9) by MN2PR12MB3232.namprd12.prod.outlook.com (2603:10b6:208:ab::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.15; Tue, 8 Mar 2022 16:39:51 +0000 Received: from BN8NAM11FT060.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13d:cafe::6c) by BN9PR03CA0844.outlook.office365.com (2603:10b6:408:13d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39: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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT060.mail.protection.outlook.com (10.13.177.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:51 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:47 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit , kernel test robot Subject: [RFCv2 PATCH 10/12] KVM: SVM: Introduce helper functions to (de)activate AVIC and x2AVIC Date: Tue, 8 Mar 2022 10:39:24 -0600 Message-ID: <20220308163926.563994-11-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6be2f169-c93f-4a51-cebc-08da01224463 X-MS-TrafficTypeDiagnostic: MN2PR12MB3232:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j15tkrJMEyLPc511kcZVyK5LM2AMmdOWpekLs2rUn4JcUJa2eTE0uNUhZcnopJUbJXwpWzW9jEKIgYwkSRt9dfnZ8RrcFyrt9uVcr39WlKX4I6nKaC5/XpTR+eJDl0myXI9BxPY9/IXurQZAxCW+ODkQtAgchfcFlZ4glFQ1+xxCM7QzWwuGYJUgZ6PLfeuxcaP/DGz3vpwsAc1Dcx92Q/7NB56jDPJo8aOLd5kWdBkB5Jzi9ZqJJQJCen0gG5i9lWZgLRipe8b63yPdiqYLf3bd2byuHaGFTrjwCR+Egd3Mrx5eScalwlSk7/aSq654ns/bc2b1jVqjMFexw+zR1S2mtR1SsROP+kOaPhuhV0YLncH2Z13gZDQJpCGm5ZAqh7HrjtX2++lO6UL8mU88mrbp1pz+JF0DPpHK/FSsffvMSIlyKJu5Y/Kp2NoZfw/hFBa+SdNhsuDaMQqfJSlxq3aN/g8GqDOqfX2sSXYLloRUX8w3iDWzqqi3Mlz8mRIKftSdm8UYs3J/hOILzMdIuYZzlJI8IjzbRrCiOXOr2LCMBZ5a0pWP84oJyULiiXCv2UJNZoZ4AO/YuYYnTfzkKnfLRniEphNSNYmylRX48JsKwL5htQdFElyiFhmtNu5IM1oqUy+j4t8Vl+NxF7DilyjJP/hQmHnD3kP4YQOpBBqsOfj+Xu8cB/W6zs/AyFl9IOtkA1hLgcexKrTI8EoYHQ== 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:(13230001)(4636009)(36840700001)(40470700004)(46966006)(86362001)(26005)(508600001)(6666004)(82310400004)(47076005)(1076003)(186003)(16526019)(36860700001)(426003)(356005)(81166007)(336012)(83380400001)(2616005)(70586007)(7696005)(5660300002)(8936002)(4326008)(70206006)(8676002)(36756003)(44832011)(2906002)(110136005)(54906003)(40460700003)(316002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:51.3472 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6be2f169-c93f-4a51-cebc-08da01224463 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: BN8NAM11FT060.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3232 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Refactor the current logic for (de)activate AVIC into helper functions, and also add logic for (de)activate x2AVIC. The helper function are used when initializing AVIC and switching from AVIC to x2AVIC mode (handled by svm_refresh_spicv_exec_ctrl()). When an AVIC-enabled guest switches from APIC to x2APIC mode during runtime, the SVM driver needs to perform the following steps: 1. Set the x2APIC mode bit for AVIC in VMCB along with the maximum APIC ID support for each mode accodingly. 2. Disable x2APIC MSRs interception in order to allow the hardware to virtualize x2APIC MSRs accesses. Reported-by: kernel test robot Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- arch/x86/include/asm/svm.h | 1 + arch/x86/kvm/svm/avic.c | 48 ++++++++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index 681a348a9365..f5337022104d 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -248,6 +248,7 @@ enum avic_ipi_failure_cause { AVIC_IPI_FAILURE_INVALID_BACKING_PAGE, }; +#define AVIC_PHYSICAL_MAX_INDEX_MASK GENMASK_ULL(9, 0) /* * For AVIC, the max index allowed for physical APIC ID diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 53559b8dfa52..b8d6bf6b6ed5 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -66,6 +66,45 @@ struct amd_svm_iommu_ir { void *data; /* Storing pointer to struct amd_ir_data */ }; +static inline void avic_set_x2apic_msr_interception(struct vcpu_svm *svm, bool disable) +{ + int i; + + for (i = 0x800; i <= 0x8ff; i++) + set_msr_interception(&svm->vcpu, svm->msrpm, i, + !disable, !disable); +} + +static void avic_activate_vmcb(struct vcpu_svm *svm) +{ + struct vmcb *vmcb = svm->vmcb01.ptr; + + vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK | X2APIC_MODE_MASK); + vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK; + + vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + if (apic_x2apic_mode(svm->vcpu.arch.apic)) { + vmcb->control.int_ctl |= X2APIC_MODE_MASK; + vmcb->control.avic_physical_id |= X2AVIC_MAX_PHYSICAL_ID; + /* Disabling MSR intercept for x2APIC registers */ + avic_set_x2apic_msr_interception(svm, false); + } else { + vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID; + /* Enabling MSR intercept for x2APIC registers */ + avic_set_x2apic_msr_interception(svm, true); + } +} + +static void avic_deactivate_vmcb(struct vcpu_svm *svm) +{ + struct vmcb *vmcb = svm->vmcb01.ptr; + + vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK | X2APIC_MODE_MASK); + vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK; + + /* Enabling MSR intercept for x2APIC registers */ + avic_set_x2apic_msr_interception(svm, true); +} /* Note: * This function is called from IOMMU driver to notify @@ -183,13 +222,12 @@ void avic_init_vmcb(struct vcpu_svm *svm) vmcb->control.avic_backing_page = bpa & AVIC_HPA_MASK; vmcb->control.avic_logical_id = lpa & AVIC_HPA_MASK; vmcb->control.avic_physical_id = ppa & AVIC_HPA_MASK; - vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID; vmcb->control.avic_vapic_bar = APIC_DEFAULT_PHYS_BASE & VMCB_AVIC_APIC_BAR_MASK; if (kvm_apicv_activated(svm->vcpu.kvm)) - vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + avic_activate_vmcb(svm); else - vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; + avic_deactivate_vmcb(svm); } static u64 *avic_get_physical_id_entry(struct kvm_vcpu *vcpu, @@ -703,9 +741,9 @@ void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu) * accordingly before re-activating. */ avic_post_state_restore(vcpu); - vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + avic_activate_vmcb(svm); } else { - vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; + avic_deactivate_vmcb(svm); } vmcb_mark_dirty(vmcb, VMCB_AVIC); From patchwork Tue Mar 8 16:39:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774024 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D179DC433FE for ; Tue, 8 Mar 2022 16:40:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348518AbiCHQlC (ORCPT ); Tue, 8 Mar 2022 11:41:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38356 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348479AbiCHQkx (ORCPT ); Tue, 8 Mar 2022 11:40:53 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2074.outbound.protection.outlook.com [40.107.244.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1B087517ED; Tue, 8 Mar 2022 08:39:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JmTfsklWAHTHhhStMHr+7vWN76P9bcPoARb3x+9WzRcb77j/BYVnoDARgFMcGkZwnBc48sHitrqzg1ExsArunSdxT3ypp4XlawAaObUXHTzWixKIpp06d5OeoMLZ09hV6ra4K9N4YSm4Mdijca+ZTvkxrudy/fkl0cb3OGEgLlC6nWvgn/kWFFDBENriJ3PYwEzskOibPQkSn+Ut4UJzu0rdxTWa3q0o9Ny+GxUZMowbGcbfjtbwvpGXpf9BmkVi2bZ9AvYLJyNACjngtsCzs3wjmQf0lTnHkryXw0+S34pUNH79Tdk73GSYGVBoqHqciC433AmND8oSoIg6GL/Y9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=7baV/MSJ9hz4jZx62DxXN+rlD53rHOXeGJvdA+Bv1Gc=; b=hgjX+n/MoMRT/KekQ7DIiglifOsbExgcoC7X6qdIJTO5wkJRG3Lidwv9GaK90TDs5tALqnUm7SI1uX9sYS6E5kgsa5wicWMAhS78LkUCYEHaYppRBZbj0nrDnlse04oDUvNg6J3bV9iuu1ytSou75OhqaDmuaW1Z6fMh2fGHoK19VGApVwojSXjwPTYTOy0k2xT1Wp0u+Vcfmx6OWuYN0s5NhnevyBVBRAtv5+DRj3N1TIBkVgzujwta/UcmBfXupBSmqaAGeuqciDC41ZXpVsqW9hQ84nUHEEDbZIRG8kq6rsdN0rSdyHkezF0m3sIW4g6HHLcELCHkdYSM2GCv1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=7baV/MSJ9hz4jZx62DxXN+rlD53rHOXeGJvdA+Bv1Gc=; b=l7B63YWsdt/Tm/a2E1DSlVeWGUf1Mr20q0H29h79Bm173l4u7Rb+CjUFhaVfqgRP/3AgkFXW8jvT7rVS2RO4zQZrEWpAW2kxrNPLy0tzHlvcX34sUzCB/I7+y/jQTXQYGyWM24YAkMDjHlKlpRFrXJczTMsVGo5A4JTVKDztCjQ= Received: from BN9PR03CA0846.namprd03.prod.outlook.com (2603:10b6:408:13d::11) by CY4PR12MB1477.namprd12.prod.outlook.com (2603:10b6:910:e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.17; Tue, 8 Mar 2022 16:39:52 +0000 Received: from BN8NAM11FT060.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13d:cafe::68) by BN9PR03CA0846.outlook.office365.com (2603:10b6:408:13d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:52 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT060.mail.protection.outlook.com (10.13.177.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:52 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:48 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 11/12] KVM: SVM: Do not throw warning when calling avic_vcpu_load on a running vcpu Date: Tue, 8 Mar 2022 10:39:25 -0600 Message-ID: <20220308163926.563994-12-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0b0695c7-d18f-4c8a-1732-08da012244cf X-MS-TrafficTypeDiagnostic: CY4PR12MB1477:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uc9RofULCHjuGWEBrhGl1wabvlrzpbbogm+GdgtmsCKQUMRSUGLrAnZ3CY0zIRHAkMDblvl/fz8c3cB6TvkRaKX9zgOzdXlkMT5ZwzH1gNVlt1KkF07JouMmMvoHgGzkbKeXCc9oi5Q5FBjmMqU0KcyXydSiASmPDGz7ne5QwMgBDHHUc8b5c7P+YdyMsjyrJnQGpKeul52Ll0552cgdbhgsEvntWmT//LWr+73Sh7KfRgf+d72iqp0ZAMzfRp96ds1dl6pvyE5jIW/TUtWZRo77zaJQuZiE2ghojcuZwZRO7hfdS5v6EeflFbpy9HgUHrTN194g0PE0/MevkFzKu6YeRAShX+Xf+WZXIGWD7EDMlF2PESnLk6D2ZToarI876PyfBMhLif0lHo+MgInNh3NZDPy3Ju3/d/KcQwkqFfLGMmb5I5NFQ6ioBEFt1kWug5hKoQ2FKNnTHxZFyJpwZLeNW5q025mZASO7Y5UnVXx+cdwoly+7+4rONOTiJ6fMu0JQ5w+4mOvNS3Wry1vDQGlQxOajTn2TyrcQW2EyunjF9NmnUWgCfopGeHCFJvrnj2mWiJQ7haX0CPtoAyHCr9Zq4IsmlrM71yeBIRNocDrUbuTJeV0CHbU0kQtu+hlT6Wf/2T8IeSoKhWYdLBP56tlh2s1eKt48Iipnxf6CEy3FFGi05tusmNAgZq5gCtc4QgL8RfInXHPt0U2pVGO0vg== 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:(13230001)(4636009)(36840700001)(46966006)(40470700004)(36860700001)(70586007)(70206006)(47076005)(8676002)(4326008)(36756003)(26005)(336012)(426003)(1076003)(54906003)(186003)(2616005)(316002)(83380400001)(6666004)(7696005)(5660300002)(40460700003)(44832011)(110136005)(8936002)(508600001)(16526019)(81166007)(356005)(2906002)(86362001)(82310400004)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:52.0659 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b0695c7-d18f-4c8a-1732-08da012244cf 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: BN8NAM11FT060.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1477 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Originalliy, this WARN_ON is designed to detect when calling avic_vcpu_load() on an already running vcpu in AVIC mode (i.e. the AVIC is_running bit is set). However, for x2AVIC, the vCPU can switch from xAPIC to x2APIC mode while in running state, in which the avic_vcpu_load() will be called from svm_refresh_apicv_exec_ctrl(). Therefore, remove this warning since it is no longer appropriate. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- arch/x86/kvm/svm/avic.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index b8d6bf6b6ed5..015888aad8fc 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -1038,7 +1038,6 @@ void avic_vcpu_load(struct kvm_vcpu *vcpu, int cpu) return; entry = READ_ONCE(*(svm->avic_physical_id_cache)); - WARN_ON(entry & AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK); entry &= ~AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK; entry |= (h_physical_id & AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK); From patchwork Tue Mar 8 16:39:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12774027 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 461D0C433F5 for ; Tue, 8 Mar 2022 16:40:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348573AbiCHQlG (ORCPT ); Tue, 8 Mar 2022 11:41:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348483AbiCHQkx (ORCPT ); Tue, 8 Mar 2022 11:40:53 -0500 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam08on2087.outbound.protection.outlook.com [40.107.100.87]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 710FC517F5; Tue, 8 Mar 2022 08:39:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ko0QfLQ85RtvKlIezHwKXlUPcKXHbFk4S4C1oB1R4eUgkVJgAF5vYDNsm9jgHBvnfvUXhSSP1Sn7mhlG2ShW5NEVeSu2VcX1wmu5IiuLGDtyZExNSQ+4UVUXsXIqAKZLk6cefQoRGuB2xfHGYkmYU96MLN+Sco05XV4xVfaNwqabTID2F02iMOqO1SHSKy6AQBGKImVFwmekLEkYNk9keNHkfybU5qps8AkCqYJ9wYUttxOvQjyAw0/1jtrTJNrJmcT6bzdHVjbHofoFrJo9RpvflJG/6veOnMocFk/lywdT2BpzEu+jrCalLCjoqarwNGsFx4HEe9ybOT7nNp6usw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=K9jKIQYmPBjF+pD4N/ZWzrzjZvFPiPBlvIA7idNRi70=; b=JT81+r6li/JiBtsYXJAhLLVBtMqiPpAlohrHTABf6U53thK7qRdub66PQZvxhK44if/QJdb4geqvwUyY6ROuzgC0G+cgfzB0MUVZ6zJccAfJwg1sjUR/fa9cAMHnVqvzANgDlTPtifynhj+mZU+yYR1zivc/F5G6FuUxzcbM+jwgAr3fz4DjdzpG4vITUHauyJwDRnQxkhC8pfRB/YT4rLZLoXniKwBWtnQkA5EGnQ+SmGSR//YleD3BceeBbL1AfLkY9tbDOAJMgEGoYILIEcRQdBTj/6O2ot9gS3F5EfaofizAnnDBFICiUpLFkcqlydx6msQukJ2XU9M5QmFoeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.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 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=K9jKIQYmPBjF+pD4N/ZWzrzjZvFPiPBlvIA7idNRi70=; b=UC2cF78uCm0X/J5uzBY1sPXkwsMre/MS8QEsPRi68fHQqXCGGlJb1BHESwJodfEvZmSQN8a+PoOuoA63lPArIqK8PUp2jCdC3Z0lU5ubxHA/qYqu0jMlG5DwnEGniBQJvTWdM6K+H+Y9pyhoxCdey4Tc0Q8p6zOrEtn6nM9MObE= Received: from BN9PR03CA0310.namprd03.prod.outlook.com (2603:10b6:408:112::15) by MN2PR12MB4815.namprd12.prod.outlook.com (2603:10b6:208:1bf::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Tue, 8 Mar 2022 16:39:52 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::92) by BN9PR03CA0310.outlook.office365.com (2603:10b6:408:112::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:52 +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=SATLEXMB04.amd.com; Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5038.14 via Frontend Transport; Tue, 8 Mar 2022 16:39:52 +0000 Received: from sp5-759chost.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.2375.18; Tue, 8 Mar 2022 10:39:49 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 12/12] KVM: SVM: Do not inhibit APICv when x2APIC is present Date: Tue, 8 Mar 2022 10:39:26 -0600 Message-ID: <20220308163926.563994-13-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> References: <20220308163926.563994-1-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7c6bc746-ac8c-47c7-b89e-08da012244f4 X-MS-TrafficTypeDiagnostic: MN2PR12MB4815:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: R84l9IoCLIeDyut792/mF1wZ1Va/JU4Mf/WQczHqAAoNYx0hacnaDmLXSGxwI14Ao80YRUv61gMq1bqTNQIWc8zYr4YHcZir6QELAMogm3B5hYHOQgh0FUIyZrM9l+dDSri+NIFaz2ahVgALT+pYGtSTBFNZcRNhWuBy2wCzEBDdLlyRDmOvdjNooZ7G3RbUlOYxPsy6DoVxhx2b3gxfX+/u5nrlPH6iwzAKF7oxLpIzBa7aBE2Ibicnqumgucrho9+Rs11rMuiIyEeJe1NfPoM2MnKaIc/p08/atONPRFZGmXSvtfRZmrKd3XTHptIykPENUo3mUmy45ALEWa9DeIRxfEZPPUNo1wAIUe3wRYeuKth1ElTgH8vGHNS6WhAxioF+OBf9915FqWVn/xBdzfyKN2xiYw50zQPT/bzrXfw65NlR7Knvul3l5B+w/6WjrdD0kSMZoSxFaIokBKXPENyTl2FlADHYwADRFz+D5uF1Zv451rmSRzVJSL0jXtpZkXwQIrg0a3LLRwHqOS7dd3XD9oHgvY2VBMBNZVCRIKsjesYs+Au43y7pwEfRluD8nSFMH+32XM671OT2uMxL8NAY/f0GdcsjM+EknVdJJr40lLs5iB1apJTDRU1vFaFma8dlLCGn7F7aVGeFOST5HpoTW4unuM02Am/KYtIIpge0IWuzDVGYqiJUHpwQbC7lJQb7ZKHxMJn908ML0p7Fqw== 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:(13230001)(4636009)(40470700004)(36840700001)(46966006)(83380400001)(40460700003)(336012)(47076005)(508600001)(2906002)(426003)(36756003)(6666004)(36860700001)(44832011)(7696005)(82310400004)(5660300002)(26005)(8936002)(186003)(16526019)(81166007)(86362001)(356005)(70206006)(8676002)(4326008)(70586007)(1076003)(2616005)(110136005)(316002)(54906003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2022 16:39:52.3126 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7c6bc746-ac8c-47c7-b89e-08da012244f4 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: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4815 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Currently, AVIC is inhibited when booting a VM w/ x2APIC support. This is because AVIC cannot virtualize x2APIC mode in the VM. With x2AVIC support, the APICV_INHIBIT_REASON_X2APIC is no longer enforced. Reviewed-by: Maxim Levitsky Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/avic.c | 21 +++++++++++++++++++++ arch/x86/kvm/svm/svm.c | 18 ++---------------- arch/x86/kvm/svm/svm.h | 1 + 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 015888aad8fc..e4bf4f68f332 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -21,6 +21,7 @@ #include +#include "cpuid.h" #include "trace.h" #include "lapic.h" #include "x86.h" @@ -159,6 +160,26 @@ void avic_vm_destroy(struct kvm *kvm) spin_unlock_irqrestore(&svm_vm_data_hash_lock, flags); } +void avic_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu, int nested) +{ + /* + * If the X2APIC feature is exposed to the guest, + * disable AVIC unless X2AVIC mode is enabled. + */ + if (avic_mode == AVIC_MODE_X1 && + guest_cpuid_has(vcpu, X86_FEATURE_X2APIC)) + kvm_request_apicv_update(vcpu->kvm, false, + APICV_INHIBIT_REASON_X2APIC); + + /* + * Currently, AVIC does not work with nested virtualization. + * So, we disable AVIC when cpuid for SVM is set in the L1 guest. + */ + if (nested && guest_cpuid_has(vcpu, X86_FEATURE_SVM)) + kvm_request_apicv_update(vcpu->kvm, false, + APICV_INHIBIT_REASON_NESTED); +} + int avic_vm_init(struct kvm *kvm) { unsigned long flags; diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index ce3c68a785cf..01384ccdb56c 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -3988,23 +3988,9 @@ static void svm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu) vcpu->arch.reserved_gpa_bits &= ~(1UL << (best->ebx & 0x3f)); } - if (kvm_vcpu_apicv_active(vcpu)) { - /* - * AVIC does not work with an x2APIC mode guest. If the X2APIC feature - * is exposed to the guest, disable AVIC. - */ - if (guest_cpuid_has(vcpu, X86_FEATURE_X2APIC)) - kvm_request_apicv_update(vcpu->kvm, false, - APICV_INHIBIT_REASON_X2APIC); + if (kvm_vcpu_apicv_active(vcpu)) + avic_vcpu_after_set_cpuid(vcpu, nested); - /* - * Currently, AVIC does not work with nested virtualization. - * So, we disable AVIC when cpuid for SVM is set in the L1 guest. - */ - if (nested && guest_cpuid_has(vcpu, X86_FEATURE_SVM)) - kvm_request_apicv_update(vcpu->kvm, false, - APICV_INHIBIT_REASON_NESTED); - } init_vmcb_after_set_cpuid(vcpu); } diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 19ad40b8383b..30fd9c8da9f2 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -576,6 +576,7 @@ int avic_init_vcpu(struct vcpu_svm *svm); void avic_vcpu_load(struct kvm_vcpu *vcpu, int cpu); void avic_vcpu_put(struct kvm_vcpu *vcpu); void avic_post_state_restore(struct kvm_vcpu *vcpu); +void avic_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu, int nested); void svm_set_virtual_apic_mode(struct kvm_vcpu *vcpu); void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu); bool svm_check_apicv_inhibit_reasons(ulong bit);