From patchwork Mon Feb 21 02:19:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12752976 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 E3D21C433F5 for ; Mon, 21 Feb 2022 02:22:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343552AbiBUCXL (ORCPT ); Sun, 20 Feb 2022 21:23:11 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343540AbiBUCXK (ORCPT ); Sun, 20 Feb 2022 21:23:10 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2065.outbound.protection.outlook.com [40.107.244.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3264A3B2A3; Sun, 20 Feb 2022 18:22:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BCJu/it5Iqq6yK0STUpPgDbG/nf9R64R/z+I+u6dMw/ktA65Hs9yz8lZuJbwnT4pg7cDaumBXBDoo7VyPqM57dOGVq2ssJg8nvfBEnW8J3fiNxm0qzgKKCOu0vVSGF9gCdyOaEQqyhm4YJVeGSSVqgNo2pFM22hv7EKmCollDumj/+BARZJrHizIotvvitrhA+xP2kqLjkeyMv5RMONgNHD1gDry7CqStmBg3JVHS70nxNs01cn2Lu3ik+/wjwkNzBca8r0DrnAR5v3xV2rrEJZQ5oIgOyHNSc2qNvYnziwA6GMyTZX1+bSnP4HrWDMHw1WZ6aKyVVihQ/QXrnS4zA== 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=Bq6zmpAy6RU8n0nWYv2LMX7I87iOD25wY5cDesK2DaY=; b=iBGFNZBZBhrSwP2cZ/jrxKrPFDeIZ/vCaEKHdPq9hcrY4OP6jWm+BS2LWFTFF98/m047pgwXVeMxjCDefMC/e7C5Zzn4jHiLlF6TsZANokLezqy+lwCFajT3mJZxfEevf6PdNPJUj6kPi86MgUav+/XOLNYUzA1+H5ZAzS14G1CVmqrCNOjd/dPoULWo9+60o3ZTM9i/HRZpviCoRmc37HvFn7RtJyivPbiUFTQspEzsOzdQtryR40WL/IAqmFWID6ypinntvZnZCaV03sDzbvfvIQ8G461+OXCUY/weqVgO5F90JH/hmpLdSbOhRyJn1+43sipyf04ZfstjxfTqBg== 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=Bq6zmpAy6RU8n0nWYv2LMX7I87iOD25wY5cDesK2DaY=; b=vn/3r6bgOZu7JtqpguVabOodPMnItTjthWbbK+BrUj3ZqCQGNi2mAAwJ04SwCEdi5skmHeAW1uRvSy4J8B2FYP3IA3dek+FHvbLWKcLMmvLq69xyrg5vTJXu8bjHw+irzR4oQBa72IDRjolF1zSH+vBwXhwKPscr9DvEspUvKSQ= Received: from MWHPR1401CA0010.namprd14.prod.outlook.com (2603:10b6:301:4b::20) by DM5PR1201MB0092.namprd12.prod.outlook.com (2603:10b6:4:54::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.24; Mon, 21 Feb 2022 02:22:45 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::b) by MWHPR1401CA0010.outlook.office365.com (2603:10b6:301:4b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14 via Frontend Transport; Mon, 21 Feb 2022 02:22: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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:42 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 01/13] KVM: SVM: Add warning when encounter invalid APIC ID Date: Sun, 20 Feb 2022 20:19:10 -0600 Message-ID: <20220221021922.733373-2-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: c453ca4d-aff2-452b-2fc5-08d9f4e10bb0 X-MS-TrafficTypeDiagnostic: DM5PR1201MB0092: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: GuL3cLc81Z/1FvdEFSpAHATZyigdBNFWEGq9p4FBD30uZRhntyqHLs2wb+n0z1og6goGXEvNJ/P36OtZ6Y7tGfSXB6edI8m0g/KmcvMjEtlTWrrn/Hg5ZtwUUWiusg++Sgd6tejozEcQBQVu2TJSJVEyJH1wATUoOPV2kaJlVVSqTOwpGRhPNpTeLk1o5SyqdyJW5CaW/M3xutTyLkLnoqB+AbbL2YhIrlTXBjG9ta81pI/+bERpwf4BrwgPul9AAgPNL3iLPaiN/e4lyC8O+tqLO7lxNF+95sEYeATVMStltCBTOmbE2p1/GY+OkEALEE0XAk3gUwHJ0QcyrIBHUDBoAm8fB59QYUfXacp7cmR8CrIloCQd3SCJbBOgH2g4fIpcHCne1B6s6YUKA3qc4GjagGcU8ypHqzs7cXn2yG78N8HLAmjfyQhofzeglXSZ7PwxWLeQXoQUJY73TSZN8o4Wg3WIfYIrW0IdnWYguSbBwFCppCiFgSsDqIF5mTH3W4HDbjmUKYHoV7iT2i14+S823iM2PKe/BJzQsR/jFqssJf2Ld7mhq+tkybhnthz3ecxSSK9NtWJfww5HEyXQwzkHTEdRA38aBAPcwfo7iJ3bgGA87eccz11JOjgwEYTWtyE7ZcGiY41ELk5AVX2QTq7QxuCSY0ajZCTXHEB59Ilb8Kmj8nUtfM8Pt0i0z5PDbYy11qKV3qbT/uL99zBJ9g== 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)(4326008)(426003)(336012)(47076005)(40460700003)(83380400001)(4744005)(44832011)(36756003)(5660300002)(2906002)(8936002)(54906003)(110136005)(8676002)(7696005)(16526019)(186003)(26005)(70206006)(70586007)(2616005)(1076003)(81166007)(356005)(316002)(508600001)(6666004)(86362001)(36860700001)(82310400004)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:44.8675 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c453ca4d-aff2-452b-2fc5-08d9f4e10bb0 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0092 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Current logic checks if avic_get_physical_id_entry() fails to get the entry, and return error. This could silently cause AVIC to fail to operate. Therefore, add WARN_ON to help report this error. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/avic.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index f07956f15d3b..472445aaaf42 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -447,8 +447,10 @@ static int avic_handle_apic_id_update(struct kvm_vcpu *vcpu) old = avic_get_physical_id_entry(vcpu, vcpu->vcpu_id); new = avic_get_physical_id_entry(vcpu, id); - if (!new || !old) + if (!new || !old) { + WARN_ON(1); return 1; + } /* We need to move physical_id_entry to new offset */ *new = *old; From patchwork Mon Feb 21 02:19:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12752977 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 7C822C433EF for ; Mon, 21 Feb 2022 02:22:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343560AbiBUCXM (ORCPT ); Sun, 20 Feb 2022 21:23:12 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343547AbiBUCXK (ORCPT ); Sun, 20 Feb 2022 21:23:10 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2088.outbound.protection.outlook.com [40.107.236.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 973863C703; Sun, 20 Feb 2022 18:22:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=knpvPD6hjHAw1W1Owa95/MdLfcfp7K0ReWVSYZBwVWqVncxHOec8gVXvNTR0rlfh6oJJMYw/dtkxC9nBO+TVHpkCRkYTqj6p3ogFGF6nWb4ICygTLreUvnNrI6wMBvMuAVvpHqf3ppBXVaBgDvuTvbUX6UlGWgtSw/1+YD8J7sAYA9+ZseD+tGC6TQNMw0ZoRiQOZVT+S7ZmX9HaTCuJ88/BmPWIOyGSbWv4WcKYjMBg6q3d4f1yIrvEMCVVEqtU1N4lpEn2jhrZybvrGeK4B3fv6WTjeEhaImTvlxZ9+IMy4oOZQvglmGQfDfV7bBvgVOxL2cpT0bmVFiuGMCFdWA== 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=3Vm3YWJSr9XgNlXi/0r156Izh3foBBIHrBhr9oeHIZU=; b=RGRNLy7Duv07So57tGqjQFSmkO3qW74It/09qfG9HHbTx/GcH3V6zMTq+lj8WdwNwGLYJJbMEiRK6MYchNzdtnsjMcd3k6DcwNf9/0LA+M9x25CxdGaM9CzsjkrZnvSIUfFWFR77POscuZR8WwU9ugQT3rzxrtlggQaMKQVpGxULYyK0LMCGDGrtMhWm8J+2VRFY2KPPT7czMMD/t+A+tFl70UmIE5x9LOWKG8QU/EtcaNSYrylQyjWuW98sAVPbQImi2fUECUu86nDtCRo9+YMuzVPPB3FtAaqUvS1jccXDlO+zJqPoKDESxW0sgAOOyAzPEc7SOR5QAa4VMHHXWA== 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=3Vm3YWJSr9XgNlXi/0r156Izh3foBBIHrBhr9oeHIZU=; b=gDs3ZlvzrILXz1YvNJmgIt/MsachA/VWHjk1VMlz7cfJ2l/V9A/a7jntntXDYkXKUQIniPZ8dMLcaREV7pmWZbTohBAH4hf6A2o2Tht2etRnRPPa6vLBbQp7jYzEaVlVqkQrA2wexPeH+wL6nex26y0mvTKL8YZhw9gZ4whabGE= Received: from MWHPR1401CA0008.namprd14.prod.outlook.com (2603:10b6:301:4b::18) by BL0PR12MB4994.namprd12.prod.outlook.com (2603:10b6:208:1ca::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14; Mon, 21 Feb 2022 02:22:46 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::1c) by MWHPR1401CA0008.outlook.office365.com (2603:10b6:301:4b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.20 via Frontend Transport; Mon, 21 Feb 2022 02:22: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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:43 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 02/13] x86/cpufeatures: Introduce x2AVIC CPUID bit Date: Sun, 20 Feb 2022 20:19:11 -0600 Message-ID: <20220221021922.733373-3-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 32ab0b4d-5cda-4d35-755f-08d9f4e10c3a X-MS-TrafficTypeDiagnostic: BL0PR12MB4994: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: 3oDA/84ehfMFSPGbT2Bd/151bF/Btv0jbMSHroYrQzcEHYn7yovlVrhZKPEz1NBcEaxBvTkdaajlAhHhHduPqeSnUQZ2J6pxpvTJPC6nevnCfQELOWF61H4nRrNNnxFhDmQFgCdjrwmjAhHsj1OZXjCcyBKjNDZNYJi6twVabbTxphuKhXVNufMo3EF1D+Ygxl190mR+XDKrSOUakGlrig8eMjk3naTMKY/2xTAyxtkUA3z4tc7oiLlf+9IadITtR3sVCG7GXFKS62BaDjOx7amqXbB/M1SA838giaoem51vHMoC7HP+Op7idRj5JG2lqPqQzzv6cdtml7SoZ3mY9lTxzkBhdRZ3lwj/b5S3VJHby5MSOd71PMkbgElqUJGEMrQlhq9Z9V9+q/pfsgCI1EAliDmdk87l2ajmWPJLfQn31lyayheLf3mmNzRr4ysj+LZKCKJhGxE/9zWIv3G+RRlKRhUNchKcoAN+uTJ+4P2yfnJ0Mp/3cYXoeIxlGQia57LC0RraH3G0kvSpoc9BtVlE3kKTEVLatClXbI5M76scNZPA/wzf3LRSE129rEuN7P1EOFOVp6GtqYzBk0uTFunZa8gTJgaDqFoD/H+tJ57lXjAP76Ox/2TMk3cuInwzFkRD6vpkGNTXdJLoM9EEHTbBvoSnXVD5O/KwZjP+kTWou69aQZg8jAP3jwuNkSWulo7XT2Xymee9euubzWRPIQ== 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)(46966006)(36840700001)(47076005)(110136005)(426003)(54906003)(40460700003)(70586007)(6666004)(336012)(8676002)(508600001)(36756003)(4326008)(70206006)(7696005)(2616005)(8936002)(2906002)(5660300002)(81166007)(4744005)(1076003)(44832011)(316002)(82310400004)(36860700001)(186003)(26005)(356005)(16526019)(86362001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:45.7737 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 32ab0b4d-5cda-4d35-755f-08d9f4e10c3a 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4994 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]. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- 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 Mon Feb 21 02:19:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12752981 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 3F2ECC433EF for ; Mon, 21 Feb 2022 02:23:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343616AbiBUCXd (ORCPT ); Sun, 20 Feb 2022 21:23:33 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343565AbiBUCXO (ORCPT ); Sun, 20 Feb 2022 21:23:14 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2047.outbound.protection.outlook.com [40.107.244.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1709F3C705; Sun, 20 Feb 2022 18:22:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RMtXC2CNlDkx6FUpqXvftRbkpGuwhsvtCFdvobmaiHYZfS5vnsmksyiaYC1US5CwdCsiE/LlRLJKftoEQSPlLkrJ8D6hCATFBEUFP9aJb/YZA4fOLF/kLIe8JQZnkJ3TX6qjtud9V4CavORGJFavD8lKIfTZzKIh+dx1IE+I72NNDt70WHR9LPgQ2tQEQgkrCPMuZWobikSshB2/VjfWQUnAvy7pidxtWZCSF5mBMY6423x2HdnFQ1NQenAFwFr+EsrnF28Ter7jNVb06JHZ0qng48TCehsJD7BwCFv5lNq0Us9vYhXkWU5SC/94SFxG1AL86z+bN5EevCZsesnuGQ== 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=4Sq/4jIOUy5lKmhyM9zojQmjLpPlN4IGvmWEXzP+1HA=; b=nmRamYTsd20luQqXesUDq81i2XgobkOPtub8XdMIScFRODb5zSUlYmaEYlJHBrrsEUPvFqmDnnyX3IKp6LTHakMiQjRMZ5tK+uM+BEzb7kdFR3MiwSAB0Zvks70nEsFLd5a6xS3M50fIpNCdAtBjtcpQfE+jS4XfqxucHQe2EL82x5blS2LYrqDRf1CZSRM/gOzXfOJkl8LuOIeUURvsCDa+1DIMK515yi0tTcs9O/VjElUbURsSmUBia4dAxMl0axR0sgJQqpJnJT478YC6XTyhT8vEi9pVtVkkfM5k3RxngW6+fsb8aYgfQrKl4PIJoy8i8StQPb2dyVahmpD4hw== 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=4Sq/4jIOUy5lKmhyM9zojQmjLpPlN4IGvmWEXzP+1HA=; b=pIHffUBwuUfyYJSYfyqd4Ci8aPETfkc8/TuWo6kEbXRpYJL3P3wYKO5jFabC62WxWAIFKSFgolC+EoaXftTNLLlSIqRJZFgoela7hRSMZi4o4XtxZokjS16sHXrGIZ8B0sc9pIScv48dDCoMdikymLLAmgig7E8JF2+6tTZya+8= Received: from MWHPR1401CA0003.namprd14.prod.outlook.com (2603:10b6:301:4b::13) by DM6PR12MB2780.namprd12.prod.outlook.com (2603:10b6:5:4e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.24; Mon, 21 Feb 2022 02:22:47 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::40) by MWHPR1401CA0003.outlook.office365.com (2603:10b6:301:4b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:43 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 03/13] KVM: SVM: Detect X2APIC virtualization (x2AVIC) support Date: Sun, 20 Feb 2022 20:19:12 -0600 Message-ID: <20220221021922.733373-4-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 751aa630-8e24-473f-4206-08d9f4e10ced X-MS-TrafficTypeDiagnostic: DM6PR12MB2780: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: rqOPv4m1aTI3fgP8YDJeVYgyQUVf8SuWfQnzA/Wns9ZrGp4XQigJnpEJ/1MB7OaVDlEAaCSsL9enIUfpcqqR1USUug5BZ1Ek8rCGWsfXF5E2pSUjelyFXGkDsioOvcuA6gmJ60MKVL0z0lSMDPqgUZeASvR/VHTIL8mgwJrw+/SPR+MvW4Em7OgTqe4rssaC2StYstcya2AlSCT/hHjGmmH2dytxw0OfYOL3E9qPjCADsiplUeYpXQOf82Bkd3/whxKsmxTT/ZQm6wlVd3XL2+n6MKQBcrKYIuMkNFSX0eUdTyXirfgBmoeLhJOZXaKi+lDtgkS1NeOX2CZ555OFCmhVCuT6Zlom/Qp9SHXENNTd4/Gr4zvLBokx8Ad1ByU/5ompO1zXylhNXc2mdvpvW5jdfQZjovMUcpzXF/YHLKVZZQMpvWdVjso6PrEdmCeUL0LOuNqeKtcvcg+tbRALrAERnAFhSuiqCLbZ/qOKlIE5F/SCIPrxp93qu/Fe1D/efp93v/Z5RkKwd49vRhobrtXVed/VZk412itSFX0en7ooTcqyh+UZHh4dnjq/MxuVh/AAcdiR10Hz0YnuVKgd2KnKrfdN2gOMTMUg0PVb/qlfptREvn38+PktDkkEB1f0ccI4Nh84qL92NpGhWZRJyrP/S+CITJzZ0wqy3jl2zHQNgzcfos+32clQBaYc74RK/Jo/lOX9IcF4VoIJosjPOynTG0y5k+xJIvKLD8x95uFpk3HvOgMjILUMnY0kcplk 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)(83380400001)(426003)(336012)(47076005)(86362001)(36860700001)(82310400004)(7696005)(6666004)(16526019)(508600001)(2616005)(186003)(26005)(1076003)(81166007)(356005)(70586007)(70206006)(4326008)(8676002)(36756003)(5660300002)(40460700003)(316002)(44832011)(54906003)(8936002)(2906002)(110136005)(36900700001)(309714004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:46.9455 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 751aa630-8e24-473f-4206-08d9f4e10ced 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2780 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. Also introduce a helper function to get the AVIC operating mode based on the VMCB configuration. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/svm.h | 3 +++ arch/x86/kvm/svm/avic.c | 44 ++++++++++++++++++++++++++++++++++++++ arch/x86/kvm/svm/svm.c | 8 ++----- arch/x86/kvm/svm/svm.h | 1 + 4 files changed, 50 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 472445aaaf42..abde08ca23ab 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -40,6 +40,15 @@ #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) +#define IS_AVIC_MODE_X1(x) (avic_get_vcpu_apic_mode(x) == AVIC_MODE_X1) +#define IS_AVIC_MODE_X2(x) (avic_get_vcpu_apic_mode(x) == AVIC_MODE_X2) + +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 +59,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. @@ -59,6 +69,15 @@ struct amd_svm_iommu_ir { void *data; /* Storing pointer to struct amd_ir_data */ }; +static inline enum avic_modes avic_get_vcpu_apic_mode(struct vcpu_svm *svm) +{ + if (svm->vmcb->control.int_ctl & X2APIC_MODE_MASK) + return AVIC_MODE_X2; + else if (svm->vmcb->control.int_ctl & AVIC_ENABLE_MASK) + return AVIC_MODE_X1; + else + return AVIC_MODE_NONE; +} /* Note: * This function is called from IOMMU driver to notify @@ -1016,3 +1035,28 @@ 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"); + } + + 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 Mon Feb 21 02:19:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12752978 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 B7EABC433EF for ; Mon, 21 Feb 2022 02:22:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343581AbiBUCXS (ORCPT ); Sun, 20 Feb 2022 21:23:18 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343561AbiBUCXN (ORCPT ); Sun, 20 Feb 2022 21:23:13 -0500 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2073.outbound.protection.outlook.com [40.107.92.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 405CB3C703; Sun, 20 Feb 2022 18:22:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WcnBvW5TOzIfTYZ+5Gsbvx8DR2Ce68SztttC86CUgy6G/H4umRiR3PwBUZhUkxzpDiRkyjfzCCD69msY4FPBp6l+C2PFaRrB9Px9r9mPl1Nu6622KEWpLPvUWd6+V8N67YZ4CcEW1hhIrJizFJ2zY8X2lhOkLHy5bD5DsdDu4O015fTT9bvE2dSmJ4SKI8v5kAByl99jZu1EbCLFJCD3SuON8XaxkCtt2KTtQ6z7iXjIsRY7aMgOrpfQP0uQP8ju7VAk4LQlULtxuuVkHifXZVYBEn7sDhe7zOvMyX/uwqLl/851MJbD+pftxypOKujlZaxBwmUIW1vZIj1YApruXQ== 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=AOq6CV93GWY9eeKh8+zFPyDm4o7+7giUHyWGFi6luwI=; b=VFyzSCCVvP/3+Xc+rK8sGjgfFqBV5TLkqGKEKtw5AMmpzf36fENzQ263gVuLi9soDEHSStTqeXcchR48qFxr3A2sbte2N7aXBBEh61mTtzM6qt8fzS/gC1Tmh6paXrrNZFYxesuTvaU8HbVRKhE72SzUAiW2ymj8tA0Fa2vyNACgVouP9IlOpFt4bb34X0vVhsjI/myvs6khfTU4FSN5adhkpH/AomzWDOiZt8yc68JMcGiKKPRYWqJOknCIE9S7UKWCsXT4KvZTnYyVxB82CqGyIrQSHQrAIdpRQS++yq/OY38Tg1suherMYzQ3nNjQBvi/V7eewiDib/rFRSoldw== 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=AOq6CV93GWY9eeKh8+zFPyDm4o7+7giUHyWGFi6luwI=; b=eLzjbf0HVECK+Z6hKv516H0ZSMsBgLp0cMXN6mlT9A2uEzvrHp+mUIS5OPoT4homKFTpBm03GmjpKCvQgNXRbtY9DKHfEtcZSSavustjMofTGdbXzeIZF1FB7vfhulmSAS+QQilq0r94PB7uCxvUx3+41aOJrd0qk6TIiI5Yru0= Received: from MWHPR1401CA0008.namprd14.prod.outlook.com (2603:10b6:301:4b::18) by BN6PR12MB1123.namprd12.prod.outlook.com (2603:10b6:404:1b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Mon, 21 Feb 2022 02:22:48 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::60) by MWHPR1401CA0008.outlook.office365.com (2603:10b6:301:4b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.20 via Frontend Transport; Mon, 21 Feb 2022 02:22: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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:44 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 04/13] KVM: SVM: Only call vcpu_(un)blocking when AVIC is enabled. Date: Sun, 20 Feb 2022 20:19:13 -0600 Message-ID: <20220221021922.733373-5-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 9fbf5c96-3da4-4ece-ebf8-08d9f4e10d5a X-MS-TrafficTypeDiagnostic: BN6PR12MB1123: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: 4bC2BxuaAiGicYjE4mEJZfNnLNFU0lhQaNQP6xFu2wQNs+ON0ZCNyh1SPI91hJ+A2JKz6haW+A5ZiY1Kmz6iO8c5av3GJBhqF/zc0qJ26joZ4rZBPNKmpf9i8eKovXmnFL3MCsfD8hGEDP7HD+VHosJbg2L0mq1o2IgjbssFafQUKEJ2ielRg1miseGkK23EYSVxHkwjvWNPyo7/6Vez5R9NFriZBuL3J61Xl68M3dIHZlz7GVb4IXSrmgbyOiXO1WA+YlBr1oDWYeAmIl9E/jQNWNX7nw53N1LoqzBnge6FFmaoktslahsoe8pd1LlBKGKC7kNlWawEki43xdRWUjUNiP3kgdEPME9cDa59CuGKAr5T6T+wJ+ZxXbDakQ/atP85WgogmYA+++svzQeORm0K2GZ3C/H0F935LXc/98fTnD9P+r8jo2/5WfRcYXJBbtyi5Gtvw+hUSjgkHkS6oM17fqMG47CgyT0CqsKMaTPjCk7LV/GPIIsDYySzEPUq88KsOzpVkpwFADja8CRoPp8E8jOpU4/A+PsosCC2o7OQgBG2fP5IjrbC4zN9qfBVSqSs66Ar9OGttx9Yxxxu3qHUHi//JxscnB5b6nZW+fWGQersygzfGf6M0OhdN+Xg4EDqllIM4FAvJeE9yi4LZiSMOuXibpc4rijaPgOwKiigK1keBjJaHdFlTAcc6locv2I+3eeUHMN1xODhylrO7H1nv8zrmfKGQuVCwCM8oiSwfG20DAYVCig42jzh9/sl 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)(508600001)(356005)(1076003)(54906003)(110136005)(40460700003)(83380400001)(2906002)(82310400004)(8936002)(86362001)(316002)(5660300002)(44832011)(2616005)(81166007)(36756003)(70586007)(336012)(426003)(70206006)(8676002)(186003)(16526019)(7696005)(36860700001)(4326008)(26005)(6666004)(47076005)(36900700001)(309714004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:47.6642 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9fbf5c96-3da4-4ece-ebf8-08d9f4e10d5a 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1123 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org The kvm_x86_ops.vcpu_(un)blocking are needed by AVIC only. Therefore, set the ops only when AVIC is enabled. Suggested-by: Sean Christopherson Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/avic.c | 12 ++++++++++-- arch/x86/kvm/svm/svm.c | 7 ------- arch/x86/kvm/svm/svm.h | 2 -- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index abde08ca23ab..0040824e4376 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -996,7 +996,7 @@ void avic_vcpu_put(struct kvm_vcpu *vcpu) WRITE_ONCE(*(svm->avic_physical_id_cache), entry); } -void avic_vcpu_blocking(struct kvm_vcpu *vcpu) +static void avic_vcpu_blocking(struct kvm_vcpu *vcpu) { if (!kvm_vcpu_apicv_active(vcpu)) return; @@ -1021,7 +1021,7 @@ void avic_vcpu_blocking(struct kvm_vcpu *vcpu) preempt_enable(); } -void avic_vcpu_unblocking(struct kvm_vcpu *vcpu) +static void avic_vcpu_unblocking(struct kvm_vcpu *vcpu) { int cpu; @@ -1057,6 +1057,14 @@ bool avic_hardware_setup(struct kvm_x86_ops *x86_ops) pr_info("x2AVIC enabled\n"); } + if (avic_mode) { + x86_ops->vcpu_blocking = avic_vcpu_blocking; + x86_ops->vcpu_unblocking = avic_vcpu_unblocking; + } else { + x86_ops->vcpu_blocking = NULL; + x86_ops->vcpu_unblocking = NULL; + } + 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 3048f4b758d6..3687026f2859 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4531,8 +4531,6 @@ static struct kvm_x86_ops svm_x86_ops __initdata = { .prepare_guest_switch = svm_prepare_guest_switch, .vcpu_load = svm_vcpu_load, .vcpu_put = svm_vcpu_put, - .vcpu_blocking = avic_vcpu_blocking, - .vcpu_unblocking = avic_vcpu_unblocking, .update_exception_bitmap = svm_update_exception_bitmap, .get_msr_feature = svm_get_msr_feature, @@ -4819,11 +4817,6 @@ static __init int svm_hardware_setup(void) enable_apicv = avic = avic && avic_hardware_setup(&svm_x86_ops); - if (!enable_apicv) { - svm_x86_ops.vcpu_blocking = NULL; - svm_x86_ops.vcpu_unblocking = NULL; - } - if (vls) { if (!npt_enabled || !boot_cpu_has(X86_FEATURE_V_VMSAVE_VMLOAD) || diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index b53c83a44ec2..1a0bf6b853df 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -578,8 +578,6 @@ void svm_hwapic_isr_update(struct kvm_vcpu *vcpu, int max_isr); bool svm_dy_apicv_has_pending_interrupt(struct kvm_vcpu *vcpu); int svm_update_pi_irte(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq, bool set); -void avic_vcpu_blocking(struct kvm_vcpu *vcpu); -void avic_vcpu_unblocking(struct kvm_vcpu *vcpu); void avic_ring_doorbell(struct kvm_vcpu *vcpu); /* sev.c */ From patchwork Mon Feb 21 02:19:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12752979 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 4867BC433FE for ; Mon, 21 Feb 2022 02:23:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343587AbiBUCXU (ORCPT ); Sun, 20 Feb 2022 21:23:20 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45772 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343564AbiBUCXN (ORCPT ); Sun, 20 Feb 2022 21:23:13 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2070.outbound.protection.outlook.com [40.107.223.70]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 787EF3C704; Sun, 20 Feb 2022 18:22:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qa/SpH0bgnwByqhFccUVZutSpqLSW3YQg0Q5zuwq+3hX1Cr3RacWudi1neSx8v6jMYskEME43xVJp6H04Cb+xgQyEDWig661jIwdmyXndjidxzuVSJa8Rr5qfLKHurUD7Idat409awsMBIikO1ppDJZ2bRHKXolgFefRs8/wnQZxTDJsgcSNxmW74npnx2cCocNReMk+1z5ygiTn7HncgV9utC9xaLm9npsdTI5nCOvWu3NF0NfdO2AySRKicM/jdhWGSHWqXMvIOfAhu6CGU4JYPvmjEt4Zdyy5J6auT6tgxbEXXCwqcoepY9YNMRrVjeceU2wt5TGV7PNpUEnkTQ== 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=SDZZgxbnepXVTbFkhvGIX7DV+z0V9L8wa8YVFoQDpXs=; b=bMUHvf8IEa/EEuHi9taePfmXUINLtrNvOCadq6oWQUw/+BZe1KvbtcO1gFv94iLbLOzZYPTj5m4UbX6RdqunIpCx6ecu9X+kTTfBhk6c3Solxsn9JBehjpUrf4g4YChfkMkgWsIJ8ZhUGbj/2fM40qh7Pnbc30WAjVvfLs1XFeeHHzufR6GIndGiZkngqPRzr0oWawJZokXCSAPozmVyMwmLUFnjI9SXvmS7SUDuz65rPgRk/+/zDQJYLhuwEdUlc3M8Qpg/wut+zBnPo19v3ex/vtfZU9YdORplfx7VuVGuuMl9FJcOULcWY7s/XKrT2PqLwAXMzBlIaY1BeEqc8A== 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=SDZZgxbnepXVTbFkhvGIX7DV+z0V9L8wa8YVFoQDpXs=; b=t/wxlHKIE9T+uBTqOGg3Tg1mWU14XB5KNoz/LA7j610gpwanXC6vHs2Qr9QQIYsnTtfHmvtkApnJEtAUAc/a6XKSvFOoVT8hrbbDQVhES0daLJTvwGW0xc7Q1G1EkOcRukK5wWicPzG7V6ZPf5MsLG+02fmJrgDH6P+ybn7OC9M= Received: from MWHPR1401CA0021.namprd14.prod.outlook.com (2603:10b6:301:4b::31) by SA0PR12MB4559.namprd12.prod.outlook.com (2603:10b6:806:9e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Mon, 21 Feb 2022 02:22:49 +0000 Received: from CO1NAM11FT037.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::15) by MWHPR1401CA0021.outlook.office365.com (2603:10b6:301:4b::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.24 via Frontend Transport; Mon, 21 Feb 2022 02:22:49 +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 CO1NAM11FT037.mail.protection.outlook.com (10.13.174.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22:49 +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; Sun, 20 Feb 2022 20:22:45 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 05/13] KVM: SVM: Update max number of vCPUs supported for x2AVIC mode Date: Sun, 20 Feb 2022 20:19:14 -0600 Message-ID: <20220221021922.733373-6-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 18e70e5c-7e79-4d56-b3ef-08d9f4e10e66 X-MS-TrafficTypeDiagnostic: SA0PR12MB4559: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: 09eGPDF/d0/D2vH+H2ZSS5zTzOBIsXl4r3zjMYvxCj3xJoO0wJ2ZR5C+1nUe2fj/Bws4NiYVYemM8ng1OUK9/R/GmcDXondsHkyc8nhhKp4cPYXQ1zjOEyRkuBkpJ0GE6FWB4SzTeRnc7rzXVklxzG9fa+WJOiaYTgaeBZ3UG7jazy8T3YAElcosBKwTbx/q1J8w02dOPgXNG8JlduqC4Y7mYGDKYhAOVJw+vcAOUW7tZHVT+gMmDjhnepXrq8Y7Csy1HZVOygBpz6Vo3WZjPoic2oJIeUbR424iP46HAfOqb8tzkZNz/X388uMTWmj0L+rtQ7LG+JnTOChp0hhjHI1+6+oTbZSId3+ITWZUMSxmnLPZ5sJtSfSC7d5i14H2K6dtOqBgoaRKHC5RnO1XQZX6QXwAIYDBamh8z3lQa5xaL4nAeeJbap4GRqBd0NeMZBvemAn4YLNxY8Wds8l/a9oT/u8OC3+g0PEhwC8aiIqxdF+4uQNZ5SKenzyXlsRJ5LtpVTncbPkkXCk1rIasLRXUBThe0GWByv53cDKcXYhMqQyOJVntO18DU+c8B1ZCkcz/tq5ZXRBsiIPKDZln1Cm+zh4YfVHiaZxRz68MtG9tu1rEnOHoBKTOqdzOKN+tQjL3pEQqaWa1wdjIYRq5VzDErrJwfpGdF/aueUoPsCv4CjDfGukjxECrDrJuVy9PfSzQqaPdX2RvawhSf30Jig== 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)(16526019)(186003)(26005)(7696005)(2616005)(1076003)(70206006)(70586007)(8676002)(54906003)(110136005)(86362001)(6666004)(316002)(508600001)(82310400004)(36860700001)(81166007)(356005)(40460700003)(83380400001)(426003)(336012)(4326008)(47076005)(5660300002)(8936002)(2906002)(15650500001)(36756003)(44832011)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:49.4035 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 18e70e5c-7e79-4d56-b3ef-08d9f4e10e66 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: CO1NAM11FT037.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4559 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 --- 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 0040824e4376..1999076966fd 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -195,7 +195,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)) @@ -210,7 +210,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); @@ -257,7 +258,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 Mon Feb 21 02:19: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: 12752986 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 7F7E1C433F5 for ; Mon, 21 Feb 2022 02:23:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343625AbiBUCXl (ORCPT ); Sun, 20 Feb 2022 21:23:41 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:46022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343573AbiBUCXR (ORCPT ); Sun, 20 Feb 2022 21:23:17 -0500 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2073.outbound.protection.outlook.com [40.107.237.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 710733C713; Sun, 20 Feb 2022 18:22:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F+qNs+2BmnUhhDxVTjAg9kzUShsXlOSVENGV9rGzGxw8BzXgO5RchndAdLzjQ9w4YSAU48f5stsTX2IX0v5oNFc6pmHcEMFDh2QKOhW8C73rOfc3a0/fT/NXw09Z+Zw8AC0Xj1WoH/E009RV/Tnhl/2WFvg28EXnuT3QLk4Dl7P+frjVEk1nwHAiZVHpZsiFiQAXOZV19fVGXZZjnCU4ZtKj3NrTH6DmevZGj5z2A2p28YHrZZJzWtZWukV2SLr3IjOTiEf9p9e4nIZ/SKt2zVX/PEnWgJLUOk7FkwnDiMAYWRilBASZzi/3/TLpcOfwucIWyacEtEvKWPvpfu+byw== 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=ipZmHZnMDLkBUxZtdK4Ql2niACe3/mVEzg27v4CvFmc=; b=NH/sVitHJ6dX0dzbYwQ2wA75qhN+Me8/siE2VY517ieJ+Cm0Wyg57ETX8DL7JQwTwyeJFG9xKGFsGRuYj3VILlX+Vhnlj6dEdg7Ji3OnhBOHwu8G56vV2rDU77VdeyfXaHafmjCS361CmAyW8Qma/yzf/xs8Whj3nPykzFYO83b7OzkqGxaAOCI7JU2nwEYy2N+Bc8KdZp5Zu+Qg9b0w1u4zjGt5Kkgy1Q354NOc6fMpQwxY5tvcG5ZhK0ty8ia5iO+YQilh6BKyoRSviLfH3Vc8lbrdMI/N1jmZMudXlUeuMJ5ld6v6oetOFqKkGkv3w/4WD1NGHYjS8row3aCGMA== 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=ipZmHZnMDLkBUxZtdK4Ql2niACe3/mVEzg27v4CvFmc=; b=Oj1/0gVUyLmH+xv1I1HRJgeeqFDu4wJ0OF7E1GEeHlej4rXEPs8zX4ZEoNIyhLgsv06hXgGieqDk2GhE5H0nktYBprgctcV9v+9lkaU7LoQgRruyqKGjJAKk62JkjOwT8KEj2e3tQ90lvtLxtSJU9ESe1zfD4s5ozD6rvk+5Lkk= Received: from MWHPR1401CA0004.namprd14.prod.outlook.com (2603:10b6:301:4b::14) by DM5PR12MB1418.namprd12.prod.outlook.com (2603:10b6:3:7a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.24; Mon, 21 Feb 2022 02:22:49 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::5f) by MWHPR1401CA0004.outlook.office365.com (2603:10b6:301:4b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14 via Frontend Transport; Mon, 21 Feb 2022 02:22:49 +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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:45 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 06/13] KVM: SVM: Add logic to determine x2APIC mode Date: Sun, 20 Feb 2022 20:19:15 -0600 Message-ID: <20220221021922.733373-7-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: dc7161d1-131f-4f8b-b8a3-08d9f4e10e0d X-MS-TrafficTypeDiagnostic: DM5PR12MB1418: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: 4Szmk6DHAT9himBCYJ6uc0PV/Wem5HCzrCIq57J3iX7FS770yiFNrJRmKAHb/BstamKLR1/oC/UIzjO5DylO7HkgZwxuXGEqI8VeAXkTe3IcvcUep+EXeoDCs49KVXF7hr2B7ifXYWsiM7Np5CkUC0+UDZXx5fxSL1MGqAkKFFeMiCsckJTpjM2ViAm95MDzjNG0oVWk4QFgnWpcw0nGR4GfEAfmXfm06w1kGdG2HyXp6a1deKvXkFw6mf01fFBpR6mf9mEe7aQesMhCuOBw7uUAXG2umoDS6hNRYCH6jD3yV4/ONeaNAy+sRE1ySqmsSH+TpmLltU4bNUyqs+mW71V2KOCCQh2y0lXVd5uweFCYSORHsWDyINnffDsOpheJnAA95ZrK3GYRnhUoMqUmZXnhANwoe/1kezKxo6Jjydba6z3mNZAqn/Z46kZfkytEHk264EPy/cAe1453S2zNaYMpRjoGg02QaWWkxG9xJEIM3cvQagih3vqtkymaur7nDebrQswqb4g3NyguuDoeXoXaOfARxXq1ggxL70hd6RbGtL4teIVhwnVhWvOJJcTR+C5+DYojFdWIXdfvwTfVLt1JJYt+/fWwiiFEfW6qn9RbYZZWcYLR7NNBdZYborUYBBU+cslQ1xwFlIbDMtMpX+kEETU3x9VgXZRfa+Z0ZeLGEBwIz/JqFDN4sxbu29T0o0Sbd2tb9TfGY2sa5sREGw== 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)(7696005)(8936002)(6666004)(44832011)(2616005)(5660300002)(4326008)(316002)(54906003)(110136005)(86362001)(8676002)(70206006)(70586007)(508600001)(82310400004)(26005)(186003)(36756003)(47076005)(36860700001)(336012)(426003)(83380400001)(356005)(40460700003)(1076003)(81166007)(16526019)(2906002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:48.8516 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dc7161d1-131f-4f8b-b8a3-08d9f4e10e0d 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1418 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Introduce avic_update_vapic_bar(), which checks the x2APIC enable bit of the APIC Base register and update the new struct vcpu_svm.x2apic_enabled to keep track of current APIC mode of each vCPU, Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/avic.c | 13 +++++++++++++ arch/x86/kvm/svm/svm.c | 4 ++++ arch/x86/kvm/svm/svm.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 1999076966fd..60f30e48d816 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -609,6 +609,19 @@ void avic_post_state_restore(struct kvm_vcpu *vcpu) avic_handle_ldr_update(vcpu); } +void avic_update_vapic_bar(struct vcpu_svm *svm, u64 data) +{ + svm->vmcb->control.avic_vapic_bar = data & VMCB_AVIC_APIC_BAR_MASK; + + /* Set x2APIC mode bit if guest enable x2apic mode. */ + svm->x2apic_enabled = (avic_mode == AVIC_MODE_X2 && + kvm_apic_mode(data) == LAPIC_MODE_X2APIC); + pr_debug("vcpu_id:%d switch to %s\n", svm->vcpu.vcpu_id, + svm->x2apic_enabled ? "x2APIC" : "xAPIC"); + vmcb_mark_dirty(svm->vmcb, VMCB_AVIC); + kvm_vcpu_update_apicv(&svm->vcpu); +} + void svm_set_virtual_apic_mode(struct kvm_vcpu *vcpu) { return; diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 3687026f2859..4e6dc1feeac7 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -2867,6 +2867,10 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) svm->msr_decfg = data; break; } + case MSR_IA32_APICBASE: + if (kvm_vcpu_apicv_active(vcpu)) + avic_update_vapic_bar(to_svm(vcpu), data); + fallthrough; default: return kvm_set_msr_common(vcpu, msr); } diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 1a0bf6b853df..bfbebb933da2 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -225,6 +225,7 @@ struct vcpu_svm { u32 dfr_reg; struct page *avic_backing_page; u64 *avic_physical_id_cache; + bool x2apic_enabled; /* * Per-vcpu list of struct amd_svm_iommu_ir: @@ -566,6 +567,7 @@ void avic_init_vmcb(struct vcpu_svm *svm); int avic_incomplete_ipi_interception(struct kvm_vcpu *vcpu); int avic_unaccelerated_access_interception(struct kvm_vcpu *vcpu); int avic_init_vcpu(struct vcpu_svm *svm); +void avic_update_vapic_bar(struct vcpu_svm *svm, u64 data); 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); From patchwork Mon Feb 21 02:19: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: 12752984 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 20092C433EF for ; Mon, 21 Feb 2022 02:23:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244553AbiBUCXi (ORCPT ); Sun, 20 Feb 2022 21:23:38 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343571AbiBUCXR (ORCPT ); Sun, 20 Feb 2022 21:23:17 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2059.outbound.protection.outlook.com [40.107.220.59]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF73B3C710; Sun, 20 Feb 2022 18:22:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BNpZ7fAtWM1+1geQJTUiUYdT7r+Jwj0BNVceSdV8zgzIdFlBCV1FODU4XdiR+VKqni4v7fvLSrjGpolwcRaN43C1dVVyMqc/zoZ+lZsWOt2L9pNykSKS/03hSxhdBPxf8bT+gLXewXZOdN1qet0OkIRUGRlC746HM/3GlkvUTp2ekVxJ3u1W7r63BuRTJTpbDnhVh9uOKd/ty5zcxoBRRkt9cEYUeoBa8d/p4XvzxLltA0EsnvDSoiWtF7rrmJixGFzehUb478iup4Msyym3sK0P+M5YT/+KBJwDCIsKqNXYWlQUH+aoYId+Ga7EpLrzJIbAwxB3okrAh8ZI82Hk/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=+nxbfSwEDCXyoJQh7SpRg1pGu0L+AUHU8E7uK67WhCc=; b=DC2dDVfNcRvuBv1VFsh+m0/jd8WWYsZrje/yoM+q9GVNBLvcfPtyJm905+1Ua/8QOnLbdMfUIs8LXigO3ZKB0Z0RWjITyRAiLIZX3zcnwT74mSzRccVjWtAbIwUtyKSy8zqQpbP8PcAyb/1ANl4VdLg4nv/2+sOWIItsGUtEHbCP6gZprrB8d4emREqW04g35bKzds8n0H6v5jEpq2n70yuS5lg+l3Wb1Vh2VbwOLb8v6O4AL4mysKT6MQ451cubE67Tp5N29GCBLz/Mqd5FKHvfkPk6C6G/khwzTFZ0aFPeU6vUf4qf7x5VUQczZkh/jReEMF5hNDcr7ijPi9lwrg== 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=+nxbfSwEDCXyoJQh7SpRg1pGu0L+AUHU8E7uK67WhCc=; b=axmFIJPjxMk9dID383wBS9Ignn/Gqwlw2D39blqnJHXc9ALZxcJww7Y2a4LorfD5Xph+SKk7SsTEJLBDr5pA3DjQC216aoK3iwhBDYf+Ko92gRJg3uLl65MuFYU7zI/f8cMvtCW1f6fDNpoR5TuRy3U4nI5qRKYUjYMnyNrR63g= Received: from MWHPR1401CA0010.namprd14.prod.outlook.com (2603:10b6:301:4b::20) by DM5PR12MB1529.namprd12.prod.outlook.com (2603:10b6:4:3::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.15; Mon, 21 Feb 2022 02:22:50 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::20) by MWHPR1401CA0010.outlook.office365.com (2603:10b6:301:4b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14 via Frontend Transport; Mon, 21 Feb 2022 02:22:49 +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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22:49 +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; Sun, 20 Feb 2022 20:22:46 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 07/13] KVM: SVM: Update avic_kick_target_vcpus to support 32-bit APIC ID Date: Sun, 20 Feb 2022 20:19:16 -0600 Message-ID: <20220221021922.733373-8-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 9e055e3b-7c8d-406f-0044-08d9f4e10e79 X-MS-TrafficTypeDiagnostic: DM5PR12MB1529: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: 5eK9WwNVxbAf438oXraY5nUNSXVllTY+W3Zb3STYRlfYAfZcHuypbsHd2tvjfcZQogwj31M46sJTx1nl2TQuzg1xXixujBvK5xcuzFEhVmu1n7G4rFfONZaHpcse5oC6Mgqs0EV+UKDe49tZuhf7whQKmbTP66RTWGst4fyFDtKpE0SHPfaLXBny1wi0hq96w0dBOi/ElXiZR+Z1m9FDw5XUSeUGr7objtC11t7DupqMqY4HdlN4ysUvZHkQGt1S1Abn12NA0xd9iwA097ALZYnayMQdnyYKQJyoKjjiFLlWvdoo3f1HWR2qtz08cJ9sCmaMnZghLO+jAhBrA2j7AJvMZtHKes946JKMXZSveReiEvtnBVsOk/JL+Xv75zxtgWHCaWp4Ya5ciHjX4sMBB6FZ2Th/MLQU3Q0ndIQ6V4/JOZ/4jZyKscBq2yS659cVlqYYBfd68MWvuFgEoEhRYnNQaAXLW34aU7Wr0wqFYlKEJImc30oLpZObv+sHCoOBNvI8AdgUyeBn5JQQ3ZDVIjD8vF8ZHIIRQThtX79Wxr1y0+aalG0lc2DHQGQkf1gcdoYVLSOD/gbHcDIvtgSljT0DgFwjaduw4imlhyk/8kcaV4E0CCm7PpPE4j0vIDJvfeaP9cVF0MjOSD24xOJnoEu3dL4LtJlxTUnYH8cc1VE947fJpBfHx3X9Puglrhhc7NzmhNJaRn8TZIyxQZcV3A== 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)(36860700001)(81166007)(36756003)(110136005)(86362001)(26005)(15650500001)(47076005)(44832011)(16526019)(40460700003)(316002)(356005)(54906003)(508600001)(83380400001)(1076003)(2906002)(2616005)(70206006)(70586007)(8676002)(4326008)(82310400004)(6666004)(8936002)(186003)(5660300002)(7696005)(336012)(426003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:49.5390 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9e055e3b-7c8d-406f-0044-08d9f4e10e79 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1529 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 --- arch/x86/kvm/svm/avic.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 60f30e48d816..215d8a7dbc1d 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -307,10 +307,16 @@ void avic_ring_doorbell(struct kvm_vcpu *vcpu) } static void avic_kick_target_vcpus(struct kvm *kvm, struct kvm_lapic *source, - u32 icrl, u32 icrh) + u32 icrl, u32 icrh, bool x2apic_enabled) { struct kvm_vcpu *vcpu; unsigned long i; + u32 dest; + + if (x2apic_enabled) + dest = icrh; + else + dest = GET_APIC_DEST_FIELD(icrh); /* * Wake any target vCPUs that are blocking, i.e. waiting for a wake @@ -320,8 +326,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), - icrl & APIC_DEST_MASK)) { + dest, icrl & APIC_DEST_MASK)) { vcpu->arch.apic->irr_pending = true; svm_complete_interrupt_delivery(vcpu, icrl & APIC_MODE_MASK, @@ -364,7 +369,7 @@ int avic_incomplete_ipi_interception(struct kvm_vcpu *vcpu) * set the appropriate IRR bits on the valid target * vcpus. So, we just need to kick the appropriate vcpu. */ - avic_kick_target_vcpus(vcpu->kvm, apic, icrl, icrh); + avic_kick_target_vcpus(vcpu->kvm, apic, icrl, icrh, svm->x2apic_enabled); break; case AVIC_IPI_FAILURE_INVALID_TARGET: break; From patchwork Mon Feb 21 02:19:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12752982 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 A3D2DC433F5 for ; Mon, 21 Feb 2022 02:23:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245563AbiBUCXe (ORCPT ); Sun, 20 Feb 2022 21:23:34 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343566AbiBUCXO (ORCPT ); Sun, 20 Feb 2022 21:23:14 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2083.outbound.protection.outlook.com [40.107.220.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9111D3C707; Sun, 20 Feb 2022 18:22:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DRtMAIRnXEWrRnXcItbV6rj5T/Z6WoY8t8lzevmiEud/SslhKEmChjWZR7H9OPM8XZTfgkZ0wzJHgQkG0u3lrXr0UHKDR2ENCXWP/MkgBPawqVJZx0BkELAEbV+OT3IFu2HuqcaJ8PcxXec0mI+J502L4pO6yiY7qhJqcNvErFb/G/jUa3P3ZtboLdcAMSHkdn6wCEA9QLAbp5j30hssq+ibswiDZ5BbrrxLbM1jzfbREglZpvvfy+/B5JagsqsmAMO9iPaj5uG6ciOq+ih+i8Ze6om4jDhtwRev7XxEj+L0PFiIqDWDNRk3b0HVT3mKfN0DiAiTBgddhDLJoNdNdg== 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=SWXXMkQEQ8tqazigpao9VWa844NVwWLMBVAnrywxG8M=; b=AREsvDrxOwwZ8pFVah9U3nhGb6pIs9srXiyXTcO/MZts9KX3hODgHz1GYCdUA4p9rrJDYNNmp5SZFcL1jyV/PF2Yxdwc3tIa4SawGEazEjLrXsisJ+dugmWtDEgKPWl3t6llhstZVnezVMITCe96CD3h4hYbLfL4pMDID56neyiXparDHvlk3T7haeQUu2XIt9hGL+WjSLI9YY8rQ9Glw42AVLVi1wVWMSSO8qcLTGgXZ1Hel3XDVlzyzTEij2MpkHOkMGk2QRpOlXa2IvJ0GoH7flYMhzYYTwpQVt/wfWb2pSr9ejBPH52zXalLuyRSJJ0svxURajujuFNxw5kyHQ== 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=SWXXMkQEQ8tqazigpao9VWa844NVwWLMBVAnrywxG8M=; b=0cAJuIpKSnfZGwlahAl2K6nyCo+nJAwRSOkFsmZ2rdYUoYaOL6/UMnDB23QNciFJZvYQHuMRf9hTRBXrlbiSbeaWMx7cRjqktrmA0I7ynyUnIoIrlIK81sh9/3bVQCL8X4sfBFrX4g8slK7fupbNn2dTCbM+z1TD9QWQ5fyijYM= Received: from MWHPR1401CA0003.namprd14.prod.outlook.com (2603:10b6:301:4b::13) by BY5PR12MB4115.namprd12.prod.outlook.com (2603:10b6:a03:20f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14; Mon, 21 Feb 2022 02:22:50 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::ba) by MWHPR1401CA0003.outlook.office365.com (2603:10b6:301:4b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:46 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 08/13] KVM: SVM: Do not update logical APIC ID table when in x2APIC mode Date: Sun, 20 Feb 2022 20:19:17 -0600 Message-ID: <20220221021922.733373-9-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 6098490b-1f0a-42a9-8136-08d9f4e10efe X-MS-TrafficTypeDiagnostic: BY5PR12MB4115: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: ySsIRvd9gPMbtsupU7/hWEmkMNk9Qi7/b0F8xRUGYwsts9dwZFrTxQQfhrJi8YV+2eXluxDGBQSzgLboWsWJOcKtR8g2ycNViobgKP7kK0jxx/FmiPSpOuJQZuWBKo7TL0Nlk0jHNqplJ/8xMByIjBOHWjzsW0tjVXDub18iZIi3i1Vmz7gsfQOZlYJEB04SuMMw0RpYsb+ggnIGLHR22BVco+VOS/PyCkjd1jnNC2eOqWb1QLNUGoSenZ0ZGB59kwc/0ukbxFqYfuricNxmSE1qcAg1vQXh9VL+AnGm3D+BV44vKI7i3kwI963ePIxca6rZ69BzA1BInH7JJSVulEbGFxpgogvEhVS/ShQhLlpn1vz2snablSw6vxZ2VAzvrXmX2mcBrUVn90rXfPBNvpuuXrDYozsvpGifoRlXENaleHdAJmKGkBKcE4buw9XWeGEnB8aGVDpBZCf38jG2OIFb2QTSM/k/EkijNIg4pWVSl3R/+WcDOnenePuM9nlqxKxOL1vM8rWQImCLO2RsuS1dZLXnt6S3HLx7OF00qTwwz9KorLI6liOzEjV4dsemXVIMmnz4PTb7pLq05FHcm7gQmLwjOzrbb1W5HvSbPbW8d1wY8rdsTrrpx2Kzo+upzQW4ToL+8kiV3ntE2QZ+wPDYawvRFPJVb70z1+lrx6O2rvhrEPZFSC7X0TFHshYjATr033jWFWJQSKn7toAQ0w== 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)(36756003)(1076003)(426003)(336012)(83380400001)(16526019)(26005)(186003)(82310400004)(81166007)(2906002)(47076005)(40460700003)(44832011)(356005)(5660300002)(36860700001)(8936002)(316002)(2616005)(6666004)(7696005)(70586007)(70206006)(4326008)(8676002)(110136005)(86362001)(508600001)(54906003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:50.4140 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6098490b-1f0a-42a9-8136-08d9f4e10efe 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4115 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. Therefore, add logic to check x2APIC mode before updating logical APIC ID table. Signed-off-by: Suravee Suthikulpanit --- 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 215d8a7dbc1d..55b3b703b93b 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -417,6 +417,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) @@ -435,8 +439,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 Mon Feb 21 02:19: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: 12752983 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 E8DB4C433FE for ; Mon, 21 Feb 2022 02:23:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343620AbiBUCXg (ORCPT ); Sun, 20 Feb 2022 21:23:36 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:45992 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343547AbiBUCXR (ORCPT ); Sun, 20 Feb 2022 21:23:17 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2053.outbound.protection.outlook.com [40.107.223.53]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D97A3C70E; Sun, 20 Feb 2022 18:22:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LRL7X14EO5GFK1kxAbG46wZ1AiVBOJ5gMFFFoHeGTRFcjKyq+zbreD1Ewhe99Jbmc2SQWBwulwv2xTQgB98UXAXjLMbN9c7cbQTCvRxM3GwE9czuJch9UwI4cjrDbGul1VQ+3rEiArScMJVkh607oNsgLIfAcYKVdpc4tQ0ICSFCiOHmiQl3rATblrlbzEuLLyB5zequuc/XNmjQyFfM1BFNqXLt/SPOkbVfaSOQWQ08BSpXPIDFEF2y2HYm+bYZiNhYOiQ++3RzkgDwzczNKS33IQ2m/5c/VMUuRhD4cJl43zBD+VAEwdXtQl8BcNEdMBCJZAyNlDagfowA71LHxg== 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=6nUX5qKKqagVqGgnhfEpak/lYc53K8M4KRiWPlQ5GRA=; b=Kbiuj277uVArul9skXclhs0QrqHf+d28LtvZilITAmPpwFpzI82wMqSbdiLUe2Sifokb0L88UAPZFKI2/47W88Ra2TapipS8ySn8gQ2r2tUrL8VVk9GSirfksv/yHhoIAEQXFJjD88e1/tT+idEi5PlVRafY2zKRVMljGfdsG4MZzpIIJl2eIzd9F5YSbEnzt+tdJanNg0+sBr8y3Td4GbqRKplz57J5+svGz9CVGth4dCjvhBP2cbmC9AEC9gbXl7KYvpCJ2eiDTSqn9iDgUld065UvdLBM1kBXuQycojCb2GBlFY/5W2L2bVc2e1i8mZu1nWXlgvnAgMZWKCvUbg== 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=6nUX5qKKqagVqGgnhfEpak/lYc53K8M4KRiWPlQ5GRA=; b=KxCdKvnT+0aM+UM3y4+og1FJgtUzE+gnUnPag/zp4anPxLMCjQq2sIMtcjWUc6uWti5NkjANPcGllZvL6jWXkHucTC6vGWVuz8b881WEzLiBLNbIAxGMM0hmXwLGaEWONjIe5p17n3NGMWIynU5MOSOdzVpy5q63rvj77XgHPIM= Received: from MWHPR1401CA0004.namprd14.prod.outlook.com (2603:10b6:301:4b::14) by BN9PR12MB5099.namprd12.prod.outlook.com (2603:10b6:408:118::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Mon, 21 Feb 2022 02:22:52 +0000 Received: from CO1NAM11FT037.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::9f) by MWHPR1401CA0004.outlook.office365.com (2603:10b6:301:4b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14 via Frontend Transport; Mon, 21 Feb 2022 02:22: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 CO1NAM11FT037.mail.protection.outlook.com (10.13.174.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:47 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 09/13] KVM: SVM: Introduce helper function avic_get_apic_id Date: Sun, 20 Feb 2022 20:19:18 -0600 Message-ID: <20220221021922.733373-10-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: ddf6afed-6185-4b9c-ba74-08d9f4e10f7d X-MS-TrafficTypeDiagnostic: BN9PR12MB5099: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: ZEYleusNSWMQTBGDl0/CvyEkKE9wn5pgsxvcrQ8kHANaNePluSVlw+tdSiW0PKqG0FGQh0n5cy7Kx0ccvRXH8JMjxEhDSQdia37pr0qYWTTFUB6CTxwATt+ZeuO0YSYHlPBKt+XvPK5ZjlkYPLxz+mQoVQ6rFYu3BC3naBHzpJToMQlR9CIJ2DJqmKqutSdohQqqAGrfz8aJA42g6KVzTfOHmw6JZt2vxyRg296tOkFT2GzQjMCOMUhDeA3+5OIdp6Jrchzo1Z9wqUFHpdTdD47OoXpl9lVxdBE/SxJjl59F3tGDD473kkpc0X/zdBn9r3ohd6ATVi417MGGEAKBqg+jA1oeYWQEDP+lLcM9m2tkrSmMAzxX6s1AaOyC9v8dm5/d17pgS4rzcQEf6zJr5iAKg/V2BYpXpe4RckXqDqxWZuzGc0VQRm0xatxZBmXVotvYqjkHH+s0l2um/dczWqUexsWAr/QCYjuy5UyLAEPI+T9brtmYm72kQA20b0PSGlLgxadooJK/t1m3zQF20RkTGCd/HGfDszBQBSGyg8g+54eNVagYnhT+PbPF0viPrh/qSjedZaJfn59WApXCZzaLeBnBPBjVwA+iaq2nYP+/NzuFKECeZzqkKHwNlq/rxs5J+h/6xrdDcmrtELPURYFhkjMeJ3+SISAR4PunVZLHmy/dbef/mmZnp0kLcpi0Wn6gDxmOBfiPeEsZvudd4w== 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)(356005)(40460700003)(86362001)(8936002)(2906002)(44832011)(316002)(54906003)(508600001)(81166007)(110136005)(36756003)(6666004)(336012)(426003)(70206006)(70586007)(47076005)(1076003)(4326008)(5660300002)(8676002)(82310400004)(36860700001)(2616005)(186003)(26005)(16526019)(7696005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:51.2471 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ddf6afed-6185-4b9c-ba74-08d9f4e10f7d 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: CO1NAM11FT037.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5099 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. In case of invalid APIC ID based on the current mode, the function returns X2APIC_BROADCAST. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/avic.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 55b3b703b93b..3543b7a4514a 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -450,16 +450,35 @@ static void avic_invalidate_logical_id_entry(struct kvm_vcpu *vcpu) clear_bit(AVIC_LOGICAL_ID_ENTRY_VALID_BIT, (unsigned long *)entry); } +static inline u32 avic_get_apic_id(struct kvm_vcpu *vcpu) +{ + u32 apic_id = kvm_lapic_get_reg(vcpu->arch.apic, APIC_ID); + + if (!apic_x2apic_mode(vcpu->arch.apic)) { + /* + * In case of xAPIC, we do not support + * APIC ID larger than 254. + */ + if (vcpu->vcpu_id >= APIC_BROADCAST) + return X2APIC_BROADCAST; + return apic_id >> 24; + } else + return apic_id; +} + static int avic_handle_ldr_update(struct kvm_vcpu *vcpu) { int ret = 0; 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 = avic_get_apic_id(vcpu); if (ldr == svm->ldr_reg) return 0; + if (id == X2APIC_BROADCAST) + return -EINVAL; + avic_invalidate_logical_id_entry(vcpu); if (ldr) @@ -475,7 +494,10 @@ 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 = avic_get_apic_id(vcpu); + + if (id == X2APIC_BROADCAST) + return 1; if (vcpu->vcpu_id == id) return 0; @@ -497,7 +519,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 Mon Feb 21 02:19: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: 12752985 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 7B414C4332F for ; Mon, 21 Feb 2022 02:23:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245545AbiBUCXj (ORCPT ); Sun, 20 Feb 2022 21:23:39 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:46020 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343572AbiBUCXR (ORCPT ); Sun, 20 Feb 2022 21:23:17 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2058.outbound.protection.outlook.com [40.107.244.58]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B5603C712; Sun, 20 Feb 2022 18:22:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A2MH/FbAlWB/ubkff6C3OPaM+SJnvjrXUQK/jJoJgb8Sg0QrBXLrGdwUOOLFpz26eZ5FS6cd6j8Hzf4em5+ga5Fe8y8zg7Oc7IfD34n4RX3+zhSYxyvoil0Mtc1S+2JOOuNrhzQHTvkyxLsDkJ/fgyjGVqs9VstFSthViE8bunCFEsG3ZptcTNc2jUAJT0upZgISKY2FAEw8nz+Jjd0y/O7DDgCbBBr9T3U1TwckerlUyK+ajdH00oH1uAP/DuFTGtugKv+HjHZoQ6GOzEbXESg94zJZF63cRfBt2O42FcudZ6i/AqAlheoEBFaydxGoA1sdVQ8zS383keCjUWvphQ== 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=dU4z0k3HK7n3HU9iFxEbzj6pL6niYs2Wsujfl8vd27w=; b=Z1/wnzf5aRmTfRQT9wABovD9sh1EWU/OuI1CxHqnRdZLxjJpr+dgBVOavz/g4enxJaYl2xIS8luUTo5EtT5QvkrADHKsnKdk2BY2cghMfJbVF+bFgsDipHrILZIUtZcuH8ecMOEUCJ/kD+mJLpv1V0cliQzEHswkAxwNG+C4nCtDK2ak6EfPkHTUCk4uN+whOnBg6CYbaTh/QVjiubJ612FqXNVJCkPQBj9IiqBUwX+7G0ZLxGnbGVxzUqY7Cn9riqR/RLCDg8L4RklyFMvl5eRi0n2yZsXCQcR7o4iSAM+oqLfbyiqvGHO+HzJ9p/uwPJR2Lb5AChb95AWOHYG66A== 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=dU4z0k3HK7n3HU9iFxEbzj6pL6niYs2Wsujfl8vd27w=; b=o5WKZEej4gaPxazr27QzbkYIKFdugdgl1qmtA0yP5WIINCoe1IvsEhLMt4LAV3vpB9akQsDGSWKj5ehkTPso5HpAJT/EGlV0Ltzxd6vL9rfLSb/Wg5D4KKe6G6QhtEQDscutcys5QKnfQl8hTkyuyWPDSztd7PrY+RASXcMWL7U= Received: from MWHPR1401CA0002.namprd14.prod.outlook.com (2603:10b6:301:4b::12) by CH0PR12MB5219.namprd12.prod.outlook.com (2603:10b6:610:d2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Mon, 21 Feb 2022 02:22:53 +0000 Received: from CO1NAM11FT037.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::8) by MWHPR1401CA0002.outlook.office365.com (2603:10b6:301:4b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14 via Frontend Transport; Mon, 21 Feb 2022 02:22: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 CO1NAM11FT037.mail.protection.outlook.com (10.13.174.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22: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; Sun, 20 Feb 2022 20:22:48 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 10/13] KVM: SVM: Adding support for configuring x2APIC MSRs interception Date: Sun, 20 Feb 2022 20:19:19 -0600 Message-ID: <20220221021922.733373-11-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 910c40a2-a075-4fb1-113a-08d9f4e1103a X-MS-TrafficTypeDiagnostic: CH0PR12MB5219: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: VE3A/esDaH64zGeulunjegWa1IU7V+ONygt9WYTUX87BQ/NsfrEq0PQ+oq3p4buh/rxUVzvjw+ylKpUMW1L0SlkSgJFD+20J8U4zmOL8d2mua+eVVA5rWMLv4pAU3xtXPTyCHjoQQs2n64eO4lCS6wHA8OKmkMV65euV8rD9eIsVQJTBkcsjkr7SzdQAQq8jLFB3fXsw/OMjaCW51moTK50C7yjdX4Fbsj0xCgbgl/vLxz9LE3xd6IoHjG0E/sGH477+llIsu0NZY1b067xTlypown8vOwbdQZ+z2NL0NQlhf84BwJxKLJp8sn7M4Ypegmpn7wAZm55CJICbADv7jMzNwb7zVGQZe+553j71raei04Y38WQstKBr1Qhy6UEV8YUvw9uviRaWKsbeFtygBZ22RVB2+kFDzGW2xskHuhWJmnzO3IIxraOPPpPwHCoJdC3rndKTsE8RL/jejlX8wycsgCveSDL7/xbgQiGUN/fTRPRClqdVtAzbIJrDDIc/ATsNo593jfetL866zFhzaWXCZ52gbJDrJNsU+S49sOiDWT55q85I1iXtp4LsyWCXgqW8JL515BhLWaS6UntXFzCBxk6cOvcdtUbZlF6A1Yw6EZqwM+tNRHbEXXN4qceE/yTzflsiE2apLB+wy0GOfWF0hmflVkhPa6YCSA4GSuVO1FRCnjjy/bqiexosyX2XPcilA/57Y6y4B4x59bytSA== 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)(110136005)(54906003)(1076003)(8936002)(26005)(186003)(16526019)(5660300002)(70586007)(70206006)(83380400001)(4326008)(8676002)(81166007)(356005)(82310400004)(316002)(44832011)(86362001)(336012)(426003)(508600001)(40460700003)(7696005)(36756003)(6666004)(2906002)(36860700001)(2616005)(47076005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:52.4664 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 910c40a2-a075-4fb1-113a-08d9f4e1103a 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: CO1NAM11FT037.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5219 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 4e6dc1feeac7..afca26aa1f40 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; @@ -4752,6 +4784,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 bfbebb933da2..41514df5107e 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; @@ -242,6 +244,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 Mon Feb 21 02:19:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 12752989 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 18CC7C433F5 for ; Mon, 21 Feb 2022 02:23:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343650AbiBUCXr (ORCPT ); Sun, 20 Feb 2022 21:23:47 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:46070 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343580AbiBUCXS (ORCPT ); Sun, 20 Feb 2022 21:23:18 -0500 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2085.outbound.protection.outlook.com [40.107.94.85]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 508223C703; Sun, 20 Feb 2022 18:22:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zvao851NemKXDPJdV5xiT7azcgTtx83gKkWuxNd8OBuAcpSxQAGo44/PijlmR2XvIRVF2SrnyYO6SLRiv0SKx3jdMl6O+eDkeiEG6Eqxo2nJwRspA5K9ojCvzutCp7GiGYSfymWHU9iKtPFKhz/cKHxxzZhmsJ+FLTlgNuLKXi+xCtKjbNMMCz+JORvpGJz+0HROXps7t3sfJw3cAiNiugDMyygQt2kLuoTQbzjLWdJt9Q38zrlTBVEw6ld/7wiN1tzbkkuaHFuSp6F2QpY1QjpBLWcIzY26SqDUi9DfCuEqLaOqcX5eloVe99oWHsh3Q498H+kKmVhy0Rrd/6jzPA== 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=sWqxW5Bk27JG5B8Y/OttJ646HKJr0VU3kxleSYyOppM=; b=jIuiYn+w34PBdqOsyqsV/v8UUprxna+LW48MqSGbjFSOpRLMjZuUptw6ddmNVYprPiKUYrbbiTPf/PR7q3fE2XCywbY8srAjpg1L3XI6yIcuMMyoffcwSGT+OrXOjCbJbOTNXRqYXoaHWQ9XW/prr1ds+NHJYZMVy8pOie3Z1NeRxMInkSDE2poi+gc+MnONkuxG3CPysbvVKndTrOcVeS6R8nt6/sq/QHV+hOFGLku4LWaIpqN6G4tZGXWq2CkcxPM0XxQ21WNYxpSC1916XWWIZBTsKvMZfH9TCg0F6ARmcE7TnJonVu2v50qNmmN/zbnemVSy5oVmmr/7BJfm6w== 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=sWqxW5Bk27JG5B8Y/OttJ646HKJr0VU3kxleSYyOppM=; b=OMbQmNWEh4JLWezqSZti9UdTr5yR1pchlpXLUwV/slc8wHyI5H2XaHohySpm0lqcJXWVE/TSWu7SGNdVzuBK7nZXuZvGEMA6HyB+VmnM4nBdbY3nA2eoOjUgyG8Z4wcVf4mWy+7K6BQmHFLW+F7dhG2V9kU9VFde2jMlYSlVF7E= Received: from MWHPR1401CA0024.namprd14.prod.outlook.com (2603:10b6:301:4b::34) by SA1PR12MB5615.namprd12.prod.outlook.com (2603:10b6:806:229::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14; Mon, 21 Feb 2022 02:22:53 +0000 Received: from CO1NAM11FT037.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::60) by MWHPR1401CA0024.outlook.office365.com (2603:10b6:301:4b::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.24 via Frontend Transport; Mon, 21 Feb 2022 02:22:53 +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 CO1NAM11FT037.mail.protection.outlook.com (10.13.174.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22:53 +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; Sun, 20 Feb 2022 20:22:48 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 11/13] KVM: SVM: Add logic to switch between APIC and x2APIC virtualization mode Date: Sun, 20 Feb 2022 20:19:20 -0600 Message-ID: <20220221021922.733373-12-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 488689bf-d1d8-44a4-7e70-08d9f4e110cb X-MS-TrafficTypeDiagnostic: SA1PR12MB5615: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: zIeQAIqANV76Tv7oOCTy7PtzxzfvhKCwT5zAI5WXUBKLOtmOetto8AJew5f/h1bU3csu0ZiMFYLk1M19PcRv0HHPWnw0zzKBfIlwzHKKNoXVBc+iekPeT/peIDUx2iK5bt/j39krnzC9tkdC9bBp+KyrpvtblYbpR5ScDqOWi2FcmWoOP6ajqlXX/GeZ3wXmeuI+crh/eJ2MLeTxaIYl44hjjm2HLUhccvBP5a+gDM0GikKeiv9NjvCQli2Ag2JffePC/E/RrQOKS8i/91cz/NEc0ICorz8E88nsuaBB2zyy1Sk/B1NIAkyS4+b8QJ8K1as7zF+WDytHx+W0yQvXePG8TasQ5GJYYa8eye8pN3R/Ze+YqqEuqzIaflfwD+9Jxu9uCso3CmiK1P2Bjqx9y158O23ZCkR8S7z2zSXYDuAJGPyNcib41n1y6+62h7fD0HB4UVbca8FNmAUidx0WPhj0/Hd8Q584PlA34vywdjg4LP/Gsocu7n+EJeokHONVxN+Af3wLfCxRiGhFewwouk6VG/EDw+AFu34uikdIwDnVgdDyoJVlMQwI9Kzw+FCJf9c/XsFfcqVWj0hWW6W0L2sGs4NyXk0vSfNnzCsc9+c+JkLOMcayIt0zlsaaTOiGdRmGdZRliVy2c7LATB7HHa4oYCWcbPDznHcOc1Dt9L8x6s0X2GsMUKL33qEdyLj+mJRtHFWDgolo2hyRRjzBGA== 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)(4326008)(186003)(8676002)(70586007)(70206006)(82310400004)(1076003)(26005)(16526019)(508600001)(2616005)(81166007)(316002)(356005)(86362001)(54906003)(110136005)(6666004)(40460700003)(83380400001)(2906002)(7696005)(8936002)(47076005)(36860700001)(36756003)(5660300002)(426003)(336012)(44832011)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:53.4351 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 488689bf-d1d8-44a4-7e70-08d9f4e110cb 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: CO1NAM11FT037.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB5615 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org When an AVIC-enabled guest switch from APIC to x2APIC mode during runtime, the SVM driver needs to 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. This is currently handled in the svm_refresh_apicv_exec_ctrl(). Note that guest kerenel does not need to disable APIC before swtiching to x2APIC. Therefore the WARN_ON in vcpu_load() to check if the vCPU is currently running is no longer appropriate. Signed-off-by: Suravee Suthikulpanit Reported-by: kernel test robot --- arch/x86/kvm/svm/avic.c | 61 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 3543b7a4514a..3306b74f1d8b 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -79,6 +79,50 @@ static inline enum avic_modes avic_get_vcpu_apic_mode(struct vcpu_svm *svm) return AVIC_MODE_NONE; } +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); +} + +void avic_activate_vmcb(struct vcpu_svm *svm) +{ + struct vmcb *vmcb = svm->vmcb01.ptr; + + vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + + if (svm->x2apic_enabled) { + vmcb->control.int_ctl |= X2APIC_MODE_MASK; + vmcb->control.avic_physical_id &= ~X2AVIC_MAX_PHYSICAL_ID; + 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; + vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID; + /* Enabling MSR intercept for x2APIC registers */ + avic_set_x2apic_msr_interception(svm, true); + } +} + +void avic_deactivate_vmcb(struct vcpu_svm *svm) +{ + struct vmcb *vmcb = svm->vmcb01.ptr; + + vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK | X2APIC_MODE_MASK); + + if (svm->x2apic_enabled) + vmcb->control.avic_physical_id &= ~X2AVIC_MAX_PHYSICAL_ID; + else + vmcb->control.avic_physical_id &= ~AVIC_MAX_PHYSICAL_ID; + + /* Enabling MSR intercept for x2APIC registers */ + avic_set_x2apic_msr_interception(svm, true); +} + /* Note: * This function is called from IOMMU driver to notify * SVM to schedule in a particular vCPU of a particular VM. @@ -195,13 +239,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, @@ -657,6 +700,13 @@ void avic_update_vapic_bar(struct vcpu_svm *svm, u64 data) svm->x2apic_enabled ? "x2APIC" : "xAPIC"); vmcb_mark_dirty(svm->vmcb, VMCB_AVIC); 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_set_virtual_apic_mode(struct kvm_vcpu *vcpu) @@ -722,9 +772,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); @@ -1019,7 +1069,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 Mon Feb 21 02:19: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: 12752987 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 242C7C433EF for ; Mon, 21 Feb 2022 02:23:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343547AbiBUCXm (ORCPT ); Sun, 20 Feb 2022 21:23:42 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:46050 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343577AbiBUCXS (ORCPT ); Sun, 20 Feb 2022 21:23:18 -0500 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam08on2075.outbound.protection.outlook.com [40.107.102.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90C0F3C714; Sun, 20 Feb 2022 18:22:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LiyOXAihlW8D2vBsuRiKOB9ExagBufxcQVHBzDEA0szWcV9sgnJUQh5Ya/XLshHeQB/YfAlatkHXrd3TRJlUBB2e9Mdg00F5mCoVZ2EB05m58dsnyKYll7BK6kAELnfgfcT1kKdaEx3UH55CctXXiLkfhXNb2wrcEmMKn4aFoXtt34cTfKTcQIB+cx4Bct3NVys01XTfQiZGa20tfSQyBiacMVm/r0LPC7RTWlVwvceDefzPRE86wNiq9cXBslJBETXNZx6VpyP2jyXTWfEpaj+JgV7TN3xEBY8vp4ingM378/r/HQqjxyjjR1EEONomGFSLCQI/0+4MoA9B7aOD6A== 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=HvIp0p4pZlBVKI2PFQUjtOkxcwpA/DW+EYwkCT75Fto=; b=aoe0VakwPGgLCXW4Ul3zX1mMYFzirafKnKHZl3INHRsr/BcdV/h0vAfgfMQKvDhOiaDY0oO4xsOGvKTuFpTYZGAi4KvtRJXx37tLSwtJ6tP++c2vQ7zWA/1jegsjrp7CvXi+kzXIUCRrhJc+y75+1tl+1TEPcb7PHpbaPOgb2K+Mdk3vCjXkXbUAxbBSxJCRkKjdpepMKXa3ZeJBK6m0rd020a+yN7NVqie7suvpYs5pJQyNzv2VXp+EAu/kSbqp8R5iNH1tdLbfNab8YYTI1PPIxH9uQ+nfPlLOPAYD4uWDo4qjrFbCJoB4miQtTnG8nBkT6jYbrqzDDwmZ3qv/EQ== 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=HvIp0p4pZlBVKI2PFQUjtOkxcwpA/DW+EYwkCT75Fto=; b=dkkuHRc+NW/+5z1DoqkRvdb5qCVJuHSsqa0YAKRgPYs9mpvi/8Ho1L2NDl3LtTr3F3VG2Uq5ObJy1FeKbZTveNSZe2HHmCbA0MSUbnaXt9BV+KXmJjOV6ZGzS00poNZcfm0N4dKShdCg5gFLVanVbliGDCoaZVbFzADKIUEcS5s= Received: from MWHPR1401CA0002.namprd14.prod.outlook.com (2603:10b6:301:4b::12) by CO6PR12MB5395.namprd12.prod.outlook.com (2603:10b6:303:13a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.16; Mon, 21 Feb 2022 02:22:53 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::6) by MWHPR1401CA0002.outlook.office365.com (2603:10b6:301:4b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14 via Frontend Transport; Mon, 21 Feb 2022 02:22:53 +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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22:53 +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; Sun, 20 Feb 2022 20:22:49 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 12/13] KVM: SVM: Remove APICv inhibit reasone due to x2APIC Date: Sun, 20 Feb 2022 20:19:21 -0600 Message-ID: <20220221021922.733373-13-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: 80429246-04a9-4098-6039-08d9f4e110ee X-MS-TrafficTypeDiagnostic: CO6PR12MB5395: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: IqKOpfGPJQobwNMmn+38xgqlmu43rH6I64O5+OnpR6lOyEsvxkxR01Rzy7E18zf1AXHkt8D3+G+nhH19JfrMv2SwSP/x/SghiQueJMVB+hWkOAZMkzbV0+d+MLgHKc483VowfyycKwtU3DVtoSqfO8N6tSDCGOrIHGJqP0dNs5cNkstdYo2bE8AZ1K4XsXvmYoixYydj9RcVmfu2e0Lz2bdTA35GbgQQ//+xYSzsf9x9RvPhJ7uI07Y22LGCNyBRs5V9LA0L7d+vBxOWCDiGTFcmp/msvIYVxQ6uRKSEHOaSC6Ow65JJGur6wYLCbZxhiczBvkclCwO3QlAPsZvjcQJ5w6h05ESGz5uSPF3xneSi/9IFVDJKpOnHneZGLgJPZB6v/OspDSjzHN/a1OrGIAMYBUSYg/1YNE4RNDzcbXktXEggV8ZPjUkxxECY8HE0+8l425/yQNXs9sxmYE8cMGVWfmeL4NEzrOIRISMLisTaTXm2q+B82uv20Q3wXpVuTE0FdwLF5TSH/awtns+v71XAUKsFZO/sa6/yHLHkVLS+oqYYAE2d14f79f2c8oxT6f1widuuUGDf3aveuMS27sUBgWlvmZym/0ArvTrQBVrv4xRGHumsgQrt32YXQEassvzt/vjjbhuJAXvArTSFS/FKRxz42GIdALG1O2QGClYqJLrICyE4Wv25q86qzwK6El3PlzgWOg2hkqcQPRa3qg== 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)(5660300002)(1076003)(2616005)(8936002)(316002)(54906003)(508600001)(82310400004)(86362001)(110136005)(8676002)(6666004)(7696005)(4326008)(336012)(83380400001)(70586007)(36756003)(40460700003)(47076005)(36860700001)(16526019)(81166007)(2906002)(26005)(44832011)(356005)(426003)(186003)(70206006)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:53.6637 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 80429246-04a9-4098-6039-08d9f4e110ee 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR12MB5395 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Currently, AVIC is inactive when booting a VM w/ x2APIC support. With x2AVIC support, the APICV_INHIBIT_REASON_X2APIC can be removed. Signed-off-by: Suravee Suthikulpanit Reviewed-by: Maxim Levitsky --- 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 3306b74f1d8b..874c89f8fd47 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" @@ -176,6 +177,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 afca26aa1f40..b7bc6cd74aba 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -3992,23 +3992,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 41514df5107e..aea80abe9186 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -578,6 +578,7 @@ void avic_update_vapic_bar(struct vcpu_svm *svm, u64 data); 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); From patchwork Mon Feb 21 02:19: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: 12752988 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 716EDC433FE for ; Mon, 21 Feb 2022 02:23:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343644AbiBUCXq (ORCPT ); Sun, 20 Feb 2022 21:23:46 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:46828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236185AbiBUCXb (ORCPT ); Sun, 20 Feb 2022 21:23:31 -0500 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1anam02on2055.outbound.protection.outlook.com [40.107.96.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F1F33B2A3; Sun, 20 Feb 2022 18:22:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eJmSxVGCdrlqxImDpDuEQBKSisGegkL/OMJU72c9t0F6PJRNh1TpJ8WJ+2hAbTq5LvIlE1wbJIALIrSyaOuh33Rukg1z4AjP4GrlgWDSWzTqHKx1l/7D0CHUSe4laN5Bk1VfJGwpoYqDzr2mJkTxnLlZP+b+2SRyvvHiwPK3oxYiMcD54iY6mCN1p2JIpAwvdsckes/CoEasFZhTEC3OvDVJsVPxIgg8ismTQF1XoHRppftMHQAiUFMd3IvExNSG/7kgPT4P489Tps9S9S8U12uTBaz/b8riLbk/yqiRONTgR0IpDnNjFvZyE4BmwZdyvr+Ozznoz1dhti2a7uEvpQ== 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=k5+AchF8R/9EBNGr4pc3ejqWM4Y7xsN6CWXA0xqDppE=; b=ejhb9lCuyagsrSyMAE3FSF4D0gxzbWL92jEy8uuIQjEa79ILt2gGW0SvvKziZqicPgZ7NvCO8YytJdNCjuWKrND0DWSxaugwLJRkNtjbvoH4HcZ9sN6l+0S4uPgH+YwILy0F8ufhAzqfXcfucUoMizme5zFB0nsgFijJtVpK1d4kqULgR/rZWw9E6aQZc+R9FpqHJfD1q5ZkdSc0YRPMSSHwzxO3jlnlrR9PFos+bti55Oo0ya/N1BEdgcNhEIAnTeThyJkRb00cYHS9MbIV1EKjhbWrPIWQ3qmsjfJPMpDwqoAH4mfzxa8BoridDxqhLR3hhmIxBcioPv4z1XP3yA== 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=k5+AchF8R/9EBNGr4pc3ejqWM4Y7xsN6CWXA0xqDppE=; b=klGNEEYRcBGONMjzgADbUpgGvH0jC7Mqz2PR3wElY6sRnr/qGvuyxead98Op22ASPQf9YdlIkvSdK+V3t0LfNMNlztZQZCxTF6XJftdGbMlqPFaJ715Y4Ivpm2DT2EI72UgFkgUtkwIblddDc9SHGRYENBkvId4SBx8JYUetYUU= Received: from MWHPR1401CA0008.namprd14.prod.outlook.com (2603:10b6:301:4b::18) by MN0PR12MB5812.namprd12.prod.outlook.com (2603:10b6:208:378::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.27; Mon, 21 Feb 2022 02:22:54 +0000 Received: from CO1NAM11FT027.eop-nam11.prod.protection.outlook.com (2603:10b6:301:4b:cafe::1c) by MWHPR1401CA0008.outlook.office365.com (2603:10b6:301:4b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.20 via Frontend Transport; Mon, 21 Feb 2022 02:22:54 +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 CO1NAM11FT027.mail.protection.outlook.com (10.13.174.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.4995.15 via Frontend Transport; Mon, 21 Feb 2022 02:22:54 +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; Sun, 20 Feb 2022 20:22:50 -0600 From: Suravee Suthikulpanit To: , CC: , , , , , , "Suravee Suthikulpanit" Subject: [RFC PATCH 13/13] KVM: SVM: Use fastpath x2apic IPI emulation when #vmexit with x2AVIC Date: Sun, 20 Feb 2022 20:19:22 -0600 Message-ID: <20220221021922.733373-14-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220221021922.733373-1-suravee.suthikulpanit@amd.com> References: <20220221021922.733373-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: c5c67978-c007-4d0f-e53f-08d9f4e11135 X-MS-TrafficTypeDiagnostic: MN0PR12MB5812: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: 1kc2Qd3LeQjZD8fucGmh3NDcld8AP7lvTeUWSRTsUfvQXS2hLKUgIkewR7NH8WwwKEdKljlwL/L6lZKAw1sMAfIOKPKLCpcahn2snI0DkZEcMFQN9164rEbUIP4dBaL93m9E7Ycd0OzFc8sjRUwVLM7jyXFdt4QMbjLlsCLLVwtKZ9xbvWXCJvGP/RZqstWlDOGcZB+FxGJ44ugWG1Ys8X4HG+f52JUJi4Jf5OKS5n386E+PpHD3LviaunlEKehA4838WTgp9194wGmMpiK6zgOsBaEgK6VoHTu80GnQISDqZcBDBSICfmTSGI9VblfITUU12wuwgoXmZnRu8PpXuIRmY04ij98HgdA4goDJkNSIgHEuuPchvG2FnJvn44NBMRpI5/nUw1V619Mu/b4mMmmMiXYLpSqvQvxnJPfCFmYOCbJjqgxUniBvjyzglEmQSQULQPtr1KfrDQ50eQyaRKIw7/Izm2AWRlq+9/Krlj8aRPFt2BevE34w2JBbyZlDHqc423HhbZuzlxwHcs0KSTszsWNM5HAhLLKQAtT+U8Wmaxx73Up4s6bqj/kO6Q7UAWE+VKfMDwZMX8RzwfqlpVMMEoTqtaUDGoEta0AV1zTtJbf56+63d5b9iX1t+QLawgfzv0skHLpO37gAeQgVj7GbTsbM/a3LxvjoUm8ISJ3+3VzL4Omt3y/VHBWrRdT/ayux9CsBWUyp5TT8D08ZGg== 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)(83380400001)(2906002)(6666004)(54906003)(110136005)(7696005)(40460700003)(44832011)(426003)(336012)(47076005)(8936002)(5660300002)(36756003)(36860700001)(26005)(186003)(16526019)(508600001)(2616005)(82310400004)(70206006)(70586007)(4326008)(8676002)(1076003)(356005)(86362001)(316002)(81166007)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2022 02:22:54.1324 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c5c67978-c007-4d0f-e53f-08d9f4e11135 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: CO1NAM11FT027.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5812 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org When sends IPI to a halting vCPU, the hardware generates avic_incomplete_ipi #vmexit with the AVIC_IPI_FAILURE_TARGET_NOT_RUNNING reason. For x2AVIC, enable fastpath emulation. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm/avic.c | 2 ++ arch/x86/kvm/x86.c | 3 ++- arch/x86/kvm/x86.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 874c89f8fd47..758a79ee7f99 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -428,6 +428,8 @@ int avic_incomplete_ipi_interception(struct kvm_vcpu *vcpu) kvm_lapic_reg_write(apic, APIC_ICR, icrl); break; case AVIC_IPI_FAILURE_TARGET_NOT_RUNNING: + handle_fastpath_set_x2apic_icr_irqoff(vcpu, svm->vmcb->control.exit_info_1); + /* * At this point, we expect that the AVIC HW has already * set the appropriate IRR bits on the valid target diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 641044db415d..c293027c7c10 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2008,7 +2008,7 @@ static inline bool kvm_vcpu_exit_request(struct kvm_vcpu *vcpu) * from guest to host, e.g. reacquiring KVM's SRCU lock. In contrast to the * other cases which must be called after interrupts are enabled on the host. */ -static int handle_fastpath_set_x2apic_icr_irqoff(struct kvm_vcpu *vcpu, u64 data) +int handle_fastpath_set_x2apic_icr_irqoff(struct kvm_vcpu *vcpu, u64 data) { if (!lapic_in_kernel(vcpu) || !apic_x2apic_mode(vcpu->arch.apic)) return 1; @@ -2028,6 +2028,7 @@ static int handle_fastpath_set_x2apic_icr_irqoff(struct kvm_vcpu *vcpu, u64 data return 1; } +EXPORT_SYMBOL_GPL(handle_fastpath_set_x2apic_icr_irqoff); static int handle_fastpath_set_tscdeadline(struct kvm_vcpu *vcpu, u64 data) { diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h index 767ec7f99516..035d20f83ca6 100644 --- a/arch/x86/kvm/x86.h +++ b/arch/x86/kvm/x86.h @@ -286,6 +286,7 @@ int x86_decode_emulated_instruction(struct kvm_vcpu *vcpu, int emulation_type, int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa, int emulation_type, void *insn, int insn_len); fastpath_t handle_fastpath_set_msr_irqoff(struct kvm_vcpu *vcpu); +int handle_fastpath_set_x2apic_icr_irqoff(struct kvm_vcpu *vcpu, u64 data); extern u64 host_xcr0; extern u64 supported_xcr0;