From nobody Wed Dec 17 19:18:26 2025 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 DCC17C83F3E for ; Mon, 4 Sep 2023 11:42:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352833AbjIDLm4 (ORCPT ); Mon, 4 Sep 2023 07:42:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36540 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244648AbjIDLmx (ORCPT ); Mon, 4 Sep 2023 07:42:53 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2128.outbound.protection.outlook.com [40.107.93.128]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45C58CC7 for ; Mon, 4 Sep 2023 04:42:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CP3eWLZ0swM1YzZwW4iir+cWtG2/rLZA/TB0tQrqJnbSGtYkBlrXKQZ89Dc0w/ktKuNGFmPQCcMH7d7DpYrROSqUClFmIXJVxBuot7zLeQtnYT8NaTuBmEHKjMHHRsOcDKB9k1s5G0d4A4JZmIbinoelAOVYYJwavxmIhZ9LVR+c8EEdtMRU4cEsYi99V+JnhxPEY8bq5B8ON/39Gy/nr39VXpV7uIcvGw3YSfL9uztOhlfKpVd7EOQ1uZBTuVOaLZE8FXK1aWVNx1H1ud19oTIURfcISS/f9OA60HNk3LctvjJ+OhZ+p/VO/tPhvxaMaZ3iXQKF4zYzoZdvleXBnw== 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=cOZw2EURdLDxgbCFLA4cIfp5eTLsDkKifig5lfBXwNI=; b=UhUH6oIRwC+qPezgYpj2lmRnCDRMwhu0UEvFQ31ODjt28JiSJ49DsE0h78SMyFexMSoe+S0ZfOm1mI452kYYDzTgL/0iNNaB6lFon/+F6qenbLA+YKZPqn1z2oC6btSa3Nf6DU6ikEwT6PxozS4xmvZzXIuHlfeKMtV3gyRh55HD5ZMyho4Trv0CftHyS67cGoiEzsMVJt+zYv2pNZ1X7oITwnpWcxNkS4qfT1NcQL19r8NcPrY4ABJnWN7WdSvsRaIGVE24CzU8sPnqMec01Gf64kq01zuN4KAypAbJ+6kh3k5lH+cZtRUhEz5KsRwdOMoA8jwWL7Bh1FLA+nSK2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cOZw2EURdLDxgbCFLA4cIfp5eTLsDkKifig5lfBXwNI=; b=NnHbTFD0yHDfOkqEnZsFzY/ETzajCjUoe/DYEFyoapGQAdGt6ZE+kG+xJfwX/cB/MftchnsKj7tTq0W9nOZi6EixTnjUhTdmt+kSpwGbrc19jRMKlvhID6FflE2pFqrpaXN0RSddaho6/XLFnHQeLwPeJHb8zDVnT3z7ks/EizA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SJ2PR01MB8101.prod.exchangelabs.com (2603:10b6:a03:4f6::10) by SJ2PR01MB8008.prod.exchangelabs.com (2603:10b6:a03:4cb::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.30; Mon, 4 Sep 2023 11:42:44 +0000 Received: from SJ2PR01MB8101.prod.exchangelabs.com ([fe80::460c:bded:60ff:3254]) by SJ2PR01MB8101.prod.exchangelabs.com ([fe80::460c:bded:60ff:3254%7]) with mapi id 15.20.6745.030; Mon, 4 Sep 2023 11:42:44 +0000 From: Ganapatrao Kulkarni To: linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, maz@kernel.org Cc: Christoffer.Dall@arm.com, eauger@redhat.com, miguel.luis@oracle.com, darren@os.amperecomputing.com, scott@os.amperecomputing.com, gankulkarni@os.amperecomputing.com Subject: [PATCH v2 1/2] KVM: arm64: timers: Move helper has_cntpoff to a header file Date: Mon, 4 Sep 2023 04:42:17 -0700 Message-Id: <20230904114218.590304-2-gankulkarni@os.amperecomputing.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230904114218.590304-1-gankulkarni@os.amperecomputing.com> References: <20230904114218.590304-1-gankulkarni@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH2PR16CA0024.namprd16.prod.outlook.com (2603:10b6:610:50::34) To SJ2PR01MB8101.prod.exchangelabs.com (2603:10b6:a03:4f6::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ2PR01MB8101:EE_|SJ2PR01MB8008:EE_ X-MS-Office365-Filtering-Correlation-Id: a27c115c-908c-47cc-012f-08dbad3c0d89 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ttxdubhvqoP9NLwt4Z0t9hzhbIkdhQzGgC3OsdMujJ/S2St1MxCXt0N99ljjDC5KDS82KcdMwfRF4YJT4volmICXDqD8bauPsfBn4ZC/rjLf/8tawgm6yUv6/MfucjJlzUqBiqg3I62EFghMfGJR5zhD245WeyyY4bIDrv+GbqmNvwvqWEIECaZkaV1/QbHT0iKdlGLdKQK7YwY3GYnwJQQwEo5TTAeKTSl3OBAuJyYtNTvP1aTGMg/3padwwrfB8u9bHmi1ar1wZgQl6YCQIjIxA9Mz+NWfUW2I+qjxA+Y0yjOOpnZdhO8JMY92qq7emEe7Go3DjzQVuNpQdKpod5R360Wq02OIYhS2rBah+41+ZPrAe45Ujjzb4h49PUJFuY9y4JXZcjHtKNkJ/AMLOl+MOJhdcNX5eidhxI3/nLCk5b/GbzSWK75FuEaYjHJ3twppFLH7/lYCRZfHJRqdOGWJacEsZEXxtT/6HiKpNbnhttwtin2BL6iulSjY+mtpkTafVdE2LT22bUR9CeH0Qs9zMFGcRZbZHbBbkl/zQlG99zSkbAc71Pi2dna0gLqiTWwLs/zj+JPYVpXxYnasX0BPNyaCNAA7C6lwbGYtEnrYQCyLiPoxRBsd29uUWkGO X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR01MB8101.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(366004)(346002)(136003)(39850400004)(396003)(451199024)(186009)(1800799009)(38100700002)(38350700002)(41300700001)(5660300002)(86362001)(83380400001)(66476007)(66556008)(66946007)(26005)(1076003)(107886003)(2616005)(478600001)(6666004)(8676002)(4326008)(316002)(8936002)(6512007)(52116002)(6486002)(2906002)(6506007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RXhN7n3wVIDFlOhlav8qxqDXuNvft7HP0eYHr5iULnhnq8/T5DTBRcWkVoBV?= =?us-ascii?Q?zvWSuhFl6JJ24dAu8u/BFskQjso2B6lwcqaqESOo838DBxxCCfW40WQN/AeN?= =?us-ascii?Q?QJOk04/3g7IXbXjHccMZGb6N5cL8Yvdk0htggsFwr/vWXtjDiO8aM8S0fcEj?= =?us-ascii?Q?JFHJPgWJre7VK1ClQJos2BrCD8VrmA5KF66hdH14vfbxNhm+DECbisAJuh32?= =?us-ascii?Q?ksepsSJOWAiFEjBxcaPNJNT60WBpg22Zptyswhc+2vuisEursm+v2p3FB6Q0?= =?us-ascii?Q?8YGQTG1hfmF5ndBX/4bMmq7Q28rMjb3eKwACS+mJ5iUrDNpReR2TWCsJGy87?= =?us-ascii?Q?zCDy9tBaOQ4/iqvmE2PN8p+3Z/MUD/J6nHE+A4alSZHvX4izuJzcfjo/QO2S?= =?us-ascii?Q?RrMG6RoXs7wYHkoN94rszjKsq4RNQnLARHedJjxMx+7UpY/tHV/ILak+8L+y?= =?us-ascii?Q?yF8dnKGfLG4peGadMRcB62RiCZ+6aPI04raZ76jxYY0ROdxZ+/4kM9I24brH?= =?us-ascii?Q?h2Wo0YfHFIZNtuIA0aW9SVaxUkIjt4ndcSkVk4837KQfONLXn6dj4fev6UH1?= =?us-ascii?Q?QxHEPF8GGe5ss2+QB4lt6V6Jtu7JIqP1KvuYheNHTC9S3QkNmXo5HXgUU9gD?= =?us-ascii?Q?xnOI2X/+aKTMr5hvstVJaL+r+D8sizkah8s+tal7nO2PBNm/xbrg/IWe6+J1?= =?us-ascii?Q?VN+FJsK2GxOkwwM0NSMU3rc0MXIjJNVQyiN7QwuBruvnrRbQNWAqKT7lkidB?= =?us-ascii?Q?JqxHIJg1ewbZLOYY6D3TYyMUztV8x8dRlfVZYmwfP0Ec1nL0OQTtbEzzUqu9?= =?us-ascii?Q?T/1UBDZ+RnSGNM9SxrIECpLTZ1/thsfZx9pQt6rALCa72gFQb8Yw7nsWwUoc?= =?us-ascii?Q?2YOZ0os5P9q4T3k/voOEdZ8u6JB+yPNh0RjpbwbIrl9uASl6wgtJPjnqTKES?= =?us-ascii?Q?JXVhRdhsxzj8A9JO3FWAk/xM2EYGkzSF70TQ4u8bNfSEBzRNGP9bYsOM74Zl?= =?us-ascii?Q?MWBpmAlh/6UUVOa42L32Rr0aTCzJPkLCcCvbFxBt/f0UFiIxCcUFsT2t/VVj?= =?us-ascii?Q?K1IvwbOqN8dXvbiA/DENmTo+xWEU7mqeXJW4tP9yOT3rM9cOGxgbhaGIMpVF?= =?us-ascii?Q?lFkZapJP97RhzGvEZZjoTVJuG5n7xAT0BxgqSo1jSZJ6vsSH7edxnrRH4xay?= =?us-ascii?Q?9llTwuwijD4rOC0xVQy2dafZ0MdWcxuVCxjzldHoA6TqCAqftxmm/O8qBfeb?= =?us-ascii?Q?iZakLtV8liYQtlQANsCywukzopYcHpQkdklejDuIC3T7BFdt/Uym9ytYYPT+?= =?us-ascii?Q?iLu7EK7LGA7FL3ibWZE5CHmM6O0XODNmMvDmInscFHMuSroAbrhGvmyb7uM9?= =?us-ascii?Q?4DjhYjQrD8kOFm8RPjrhNJlA1WBQP0dNyk8YQxNjf5vFTZAOCjc18C4+AJhX?= =?us-ascii?Q?ekhKKGLRfGbjSfFwWnWhhfE75QTB21HMfUQs8kCHubCYW2xFOC2qPW5/wRjK?= =?us-ascii?Q?Z1NQMHv7VxeprwQ84l5L8ZOZXMGzM7fwRSTmyU/wRdrQkQq9GcIXhlGe/JIl?= =?us-ascii?Q?EWn1CiGrnfnlkHzCxCMTX9Yy3Rb3I3HRKsY71jr/dzkDuQO8MTZfwop3aEkp?= =?us-ascii?Q?s5UC12cc2/gNUB78AJIu5U4=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: a27c115c-908c-47cc-012f-08dbad3c0d89 X-MS-Exchange-CrossTenant-AuthSource: SJ2PR01MB8101.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2023 11:42:44.2048 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SsWXhrIj6mr1oU7fUWC0cdIxMsAjuGyeYrDi3nNC3a6tg0jg2xi535/GXhEggQF6b2jKnBSrvQ5eY4HW+MoBLEFH1yCIoj2dl7MNR8S6XzN65aNkOF8v234O2HaVVvRd X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR01MB8008 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move helper function has_cntpoff() to header file as an inline function to make it available to other functions as well. Signed-off-by: Ganapatrao Kulkarni --- arch/arm64/include/asm/virt.h | 5 +++++ arch/arm64/kvm/arch_timer.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm64/include/asm/virt.h b/arch/arm64/include/asm/virt.h index 4eb601e7de50..f22cc733efb1 100644 --- a/arch/arm64/include/asm/virt.h +++ b/arch/arm64/include/asm/virt.h @@ -132,6 +132,11 @@ static __always_inline bool has_vhe(void) return cpus_have_final_cap(ARM64_HAS_VIRT_HOST_EXTN); } =20 +static __always_inline bool has_cntpoff(void) +{ + return (has_vhe() && cpus_have_final_cap(ARM64_HAS_ECV_CNTPOFF)); +} + static __always_inline bool is_protected_kvm_enabled(void) { if (is_vhe_hyp_code()) diff --git a/arch/arm64/kvm/arch_timer.c b/arch/arm64/kvm/arch_timer.c index 75bddab3224f..98b0e8ac02ae 100644 --- a/arch/arm64/kvm/arch_timer.c +++ b/arch/arm64/kvm/arch_timer.c @@ -55,11 +55,6 @@ static struct irq_ops arch_timer_irq_ops =3D { .get_input_level =3D kvm_arch_timer_get_input_level, }; =20 -static bool has_cntpoff(void) -{ - return (has_vhe() && cpus_have_final_cap(ARM64_HAS_ECV_CNTPOFF)); -} - static int nr_timers(struct kvm_vcpu *vcpu) { if (!vcpu_has_nv(vcpu)) --=20 2.41.0 From nobody Wed Dec 17 19:18:26 2025 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 04CD4C71153 for ; Mon, 4 Sep 2023 11:42:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352839AbjIDLm5 (ORCPT ); Mon, 4 Sep 2023 07:42:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36560 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237599AbjIDLmx (ORCPT ); Mon, 4 Sep 2023 07:42:53 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2128.outbound.protection.outlook.com [40.107.93.128]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 179B7CC8 for ; Mon, 4 Sep 2023 04:42:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aR1ZavAf2oxQEWViV72exOTg2p43i8Y/IQVuEvl1I3wIMMfY1rdQWyol0NVlgcGIsvfdyVEj9p6Zq3jkMHQspgNmWhLBmf37CjCy+fBlz4r1zBygMHYP2yP78/xN9lgZZl0HOIC/Vu/Ks2JA1KMLBseRtuSGtS5sCj6nbVvAhX/2hNFfYQMF048Tea0FKMRIyky8DWc2wfJ6WOthxndSMYUtCa8Mh9nQVjhsl2vbPRFQxKbavTPjgoNGYzjNUj984g9xOqaoNzwLiOiyGEqjanF/tW/ZB0r8xudoUA1rDxTGyLuOUDPibCRJRNBkEkMXda17Ef/EMquubKMtby4mvQ== 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=TuVkEj/RjUkPkRSZVttniWId5jS6FZ8yjquHoiuQ2Ew=; b=nkF5PZjitZt3Jh3c44qVkn9gOSEDz+LVHmwQu0jBlaLNw/KwyIB93dCf8ThMnCMfiJoqc5FTXBmUe0/srLvfCysWhJYtsjkNsdcwxaUJw8YOK7yQkCepC08tREiVyNb0zpkUL/630nzEzbrsDIJVTtMDeQ+xcq5tVqz+/UWfwwsMHt+WxhBnXd7TGaOAC2xkzoYiOBjyMOk7xl4WuLmTtuZc6Gqj1zqYcpK8Tc7ACo6BV1sLT/oMoQU9Elc1Joza/1rG3TPGH30vtskIg/+/iu+kSDLM9NsskhCpJVLtCQns8UEb6MAps3OhMw/BxSb66YdI2mc6uU2EYOkNWr2qLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TuVkEj/RjUkPkRSZVttniWId5jS6FZ8yjquHoiuQ2Ew=; b=BN0LL36bKTCK2MOVSfCNG+7etFdiEjf3yKZFtmR9+hW7Hr4myLukEdg8UyHQ0PgDt11YOo06vBW0vobaliJ2gs0DSVncPqf+yxqyNOkDp2kMpmh+V3mjvn4ojUGQ/UTeM9RU9JCDJO61hB34+GuANEH+b6RmRLd/hDtxJ7AWNwo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from SJ2PR01MB8101.prod.exchangelabs.com (2603:10b6:a03:4f6::10) by SJ2PR01MB8008.prod.exchangelabs.com (2603:10b6:a03:4cb::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.30; Mon, 4 Sep 2023 11:42:45 +0000 Received: from SJ2PR01MB8101.prod.exchangelabs.com ([fe80::460c:bded:60ff:3254]) by SJ2PR01MB8101.prod.exchangelabs.com ([fe80::460c:bded:60ff:3254%7]) with mapi id 15.20.6745.030; Mon, 4 Sep 2023 11:42:45 +0000 From: Ganapatrao Kulkarni To: linux-kernel@vger.kernel.org, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, maz@kernel.org Cc: Christoffer.Dall@arm.com, eauger@redhat.com, miguel.luis@oracle.com, darren@os.amperecomputing.com, scott@os.amperecomputing.com, gankulkarni@os.amperecomputing.com Subject: [PATCH v2 2/2] KVM: arm64: timers: Save restore CVAL of a ptimer across guest entry and exits Date: Mon, 4 Sep 2023 04:42:18 -0700 Message-Id: <20230904114218.590304-3-gankulkarni@os.amperecomputing.com> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230904114218.590304-1-gankulkarni@os.amperecomputing.com> References: <20230904114218.590304-1-gankulkarni@os.amperecomputing.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: CH2PR16CA0024.namprd16.prod.outlook.com (2603:10b6:610:50::34) To SJ2PR01MB8101.prod.exchangelabs.com (2603:10b6:a03:4f6::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ2PR01MB8101:EE_|SJ2PR01MB8008:EE_ X-MS-Office365-Filtering-Correlation-Id: 89ca01ec-441b-498d-7346-08dbad3c0e8a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: G5PibvsSU9G236iZXNkNDICd8CNt312TSnI6dr2YYRmEO6cfMeMLmAcXTrDzn/YBTSp7xReRSaronu2fTJbAAIMgktqW64ZliZ+zxdRCziqflZmbyipg82aXatk6doffx+j4FgtZo6TRpPQEOU5Iq+I8u8fst3nExRnoaWgDAB30ffXq45ctmoytEqzVKLuYJqN7MAHAbN+JEqHgpX3EjBwOo3slq826dIU5e5Bkmh9ApYbMBXvc/RYixMRTqGYBQ/q/189B1VDg8oDNIjCFtiF4HmCSzHGdGVCQdWzYpmrhoRd4YcivONJJBxMKbEqC91DQD5O/Rx52eo7vRDRCx9s3cNQgzkhyTiT5ms51K2bC6022Q9olLqapXmCLToVcC5QGsL1tlLunx7cTKPhYus5F1DXV0mJua3d65PclK6rmcD+1FHqM3Ar7i8qvVHWPqK6lki2izwVHA/ZsZU5VqMsyKqBbhaCmmAKjxNosRCjvgMBF4ARShxo9JIV0Y+vYMbai9ONZ5aOA8wINnmv/XAHNnq9OPVnq5YWUtOjXdHz04HOnTYIiyF5tDCEPrJMbNGGgwij4Vp6DGXaC3nMaxXuV0EQzzMg7kl3krucf/fz9SGx8eUToTYeWQ5ck9PNr X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR01MB8101.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(366004)(346002)(136003)(39850400004)(396003)(451199024)(186009)(1800799009)(38100700002)(38350700002)(41300700001)(5660300002)(86362001)(83380400001)(66476007)(66556008)(66946007)(26005)(1076003)(107886003)(2616005)(478600001)(6666004)(8676002)(4326008)(316002)(8936002)(6512007)(52116002)(6486002)(2906002)(6506007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?j+WZyY5WJ8UU0aH9gXN8h29DHzzGgj4kXGdgALmsHenswCtkqDdD3hBumHyP?= =?us-ascii?Q?dve1sn34yOMAAGCMPKKLQ7FOhzbdjoj7wFhsajpXo8K9mY8GlxgkICCr07E5?= =?us-ascii?Q?qJgr7ov4XnEvEAYeDh79SqTQRB0eyFn964O0aa/5IeHg/zstsgn6eAeImw7A?= =?us-ascii?Q?qQYjI/0YChC7EZKWYyrnk0lD0M+CFddcD7HyucCvuEVrTsFXcmCkTshEO4i7?= =?us-ascii?Q?nmYxENv7vPheLNGnIqpEJH9K9Lrrj2tRkbulbk+5OqTEb7kgJ+Zw3guCWGei?= =?us-ascii?Q?5K5Z9fiq4a/R3YMd2uI27/SrsCY2Iqjk0FRnD98oDIi/A94FvdmzC3kfMOUv?= =?us-ascii?Q?/2B3t5XKQCrj1B6oT4Dc0V+7VRVjZyXmA9CyVuf3c1l4b6um3BupARAzpwVl?= =?us-ascii?Q?91FUj5tIYBOYEtLoc/uySrcrOXTMQo3Dr98oz9GbQESscpNdUjzlxKkSh+F5?= =?us-ascii?Q?H66IMLY7nmJAqgmrqUFjC8W+ZOUorA5EPROJSn7aT9NuZw77yMk4EOhBLYkg?= =?us-ascii?Q?tY21Soueb2JzInS6eORXeFTeVQl2Q+w357K14bbMNxSxu7u6HixL24+XTbJM?= =?us-ascii?Q?vVzmdxop0FJJhK5fn0tsI7bkOfhqMjY8Ph/maGHRmlHgCXh+nTG7rTqT8Ldk?= =?us-ascii?Q?8TjZoKF0XB4gMNgwU/QCTC9xZ9YB4vK1flmJ5c3VKAlZJFybywqqBz8vbjas?= =?us-ascii?Q?mRExFZMZ1uRVICaq/fWwoT9XMbpOOYyBCOKSZCJCCM7Rux3el7AJBixE1CW1?= =?us-ascii?Q?JQZvKDP52cePzpiH+pUXcBXNu3wFSggx94mtgxJtdF0mE8bWz9d1aRqMKf0z?= =?us-ascii?Q?v6TRcBtFqjVzqN/oQPasX/siJQEoeVoBqcgTxcEN1bpY6el7Dh7AN/uCPh30?= =?us-ascii?Q?KIctzLJRdaxouGf1dQv2ykq7w5YM7SJhFxtFoWoR6obre4RFkLG8OVeh1F29?= =?us-ascii?Q?IQD4LxoNFDBSF/WPnEuI4mHMVwC76Ne66pMOnnwGViGskuWaO3mCRbZXXO7o?= =?us-ascii?Q?YielkQpgs7NTikFnWi7WbdFeKPE7PWzML9Zqcgxh6Iq/lQcdByATJkXpKesA?= =?us-ascii?Q?4awYSuWq72AjfhD898eALVxN5sNA7o0Ip804M6qUraGx0wJlrNRBHzWjlfvY?= =?us-ascii?Q?ckDK3V66dIF6iXwFzICjQjUhNrfh2SQrgFDKrJOURZp+twm2bTQhDoNp34X8?= =?us-ascii?Q?DgK7ZYnoZcmFz4CRQ0K8Hr9XNEaJrhETtBbZ7oCVPcRl5jWpYUGcPIOb9zV7?= =?us-ascii?Q?hK7rWFd7x+wgXA84MNy5NGiajDQX1TXfzdsL4gEBWfuLe2RyA52t2OLT7jmE?= =?us-ascii?Q?byAs+0dEnjZOtdzzQCqkAD5ZVn8pX+nd86Y955BBexeHdPUgyLs+F/3OMLKB?= =?us-ascii?Q?WGK2h9nHFPkbDMqHG1wLtzCrpkslG0XDpfbjqQkcAMKTd2TX6GKEeZbGOSt9?= =?us-ascii?Q?O+hognhVkIFf7/Zg6t+qvLHnyL2s3EqIEIrDmitjqrO+OU6ESjGQSQyWMIn2?= =?us-ascii?Q?D5t4/PzPExMLiBAAxwA1/jACkQlFrBfeMpIukz1k1l3zpdGJbdmbokjgo/WF?= =?us-ascii?Q?2ZFCAFNZVwY6FAZVS7ARgcToX85SrV7OQM5m7x5zLDY9ygAqeKythAn8m1uy?= =?us-ascii?Q?Upgz0mvcqpbWB+A/Y5jaoLs=3D?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89ca01ec-441b-498d-7346-08dbad3c0e8a X-MS-Exchange-CrossTenant-AuthSource: SJ2PR01MB8101.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2023 11:42:45.8548 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /Pmhp/k8R2WV4hh5Q6YUSe5h7KFi8nFLnoqCu5cOZEdPexVmwDi5LfJnp6GJ8ME69C3xOwEwamn3R+bXNhroSOoOsxIrnWrpTb+DX0UMEx3z2xYypKfoHLyj2TrRdPYL X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR01MB8008 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" As per FEAT_ECV, when HCR_EL2.{E2H, TGE} =3D=3D {1, 1}, Enhanced Counter Virtualization functionality is disabled and CNTPOFF_EL2 value is treated as zero. On VHE host, E2H and TGE are set, hence it is required to save Guest's CVAL to memory and increment it by CNTPOFF_EL2 at guest exit to avoid false physical timer interrupts and also restore back the CVAL with saved value before the guest entry. Signed-off-by: Ganapatrao Kulkarni Reported-by: Ganapatrao Kulkarni Tested-by: Ganapatrao Kulkarni --- arch/arm64/kvm/arch_timer.c | 60 ++++++++++++++++++++++++++++++--- arch/arm64/kvm/hyp/vhe/switch.c | 13 +++++++ include/kvm/arm_arch_timer.h | 1 + 3 files changed, 69 insertions(+), 5 deletions(-) diff --git a/arch/arm64/kvm/arch_timer.c b/arch/arm64/kvm/arch_timer.c index 98b0e8ac02ae..9fe3fa6ed98a 100644 --- a/arch/arm64/kvm/arch_timer.c +++ b/arch/arm64/kvm/arch_timer.c @@ -514,6 +514,59 @@ static void set_cntpoff(u64 cntpoff) write_sysreg_s(cntpoff, SYS_CNTPOFF_EL2); } =20 +static void ptimer_cval_save(struct arch_timer_context *ctx, u64 offset) +{ + unsigned long flags; + u64 cval; + + local_irq_save(flags); + cval =3D read_sysreg_el0(SYS_CNTP_CVAL); + timer_set_cval(ctx, cval); + cval +=3D offset; + write_sysreg_el0(cval, SYS_CNTP_CVAL); + isb(); + local_irq_restore(flags); +} + +static void ptimer_cval_restore(struct arch_timer_context *ctx, u64 offset) +{ + unsigned long flags; + u64 cval; + + local_irq_save(flags); + cval =3D timer_get_cval(ctx); + write_sysreg_el0(cval, SYS_CNTP_CVAL); + isb(); + local_irq_restore(flags); +} + +void kvm_ptimer_cval_save_restore(struct kvm_vcpu *vcpu, bool save) +{ + struct timer_map map; + struct arch_timer_cpu *timer; + struct arch_timer_context *ctxp; + u64 offset; + + get_timer_map(vcpu, &map); + ctxp =3D map.direct_ptimer; + + if (unlikely(ctxp =3D=3D NULL)) + return; + + offset =3D timer_get_offset(ctxp); + if (!offset) + return; + + timer =3D vcpu_timer(ctxp->vcpu); + if (!timer->enabled || !ctxp->loaded) + return; + + if (save) + ptimer_cval_save(ctxp, offset); + else + ptimer_cval_restore(ctxp, offset); +} + static void timer_save_state(struct arch_timer_context *ctx) { struct arch_timer_cpu *timer =3D vcpu_timer(ctx->vcpu); @@ -562,9 +615,7 @@ static void timer_save_state(struct arch_timer_context = *ctx) timer_set_ctl(ctx, read_sysreg_el0(SYS_CNTP_CTL)); cval =3D read_sysreg_el0(SYS_CNTP_CVAL); =20 - if (!has_cntpoff()) - cval -=3D timer_get_offset(ctx); - + cval -=3D timer_get_offset(ctx); timer_set_cval(ctx, cval); =20 /* Disable the timer */ @@ -650,8 +701,7 @@ static void timer_restore_state(struct arch_timer_conte= xt *ctx) cval =3D timer_get_cval(ctx); offset =3D timer_get_offset(ctx); set_cntpoff(offset); - if (!has_cntpoff()) - cval +=3D offset; + cval +=3D offset; write_sysreg_el0(cval, SYS_CNTP_CVAL); isb(); write_sysreg_el0(timer_get_ctl(ctx), SYS_CNTP_CTL); diff --git a/arch/arm64/kvm/hyp/vhe/switch.c b/arch/arm64/kvm/hyp/vhe/switc= h.c index 561cb53e19ce..097fcaf7b208 100644 --- a/arch/arm64/kvm/hyp/vhe/switch.c +++ b/arch/arm64/kvm/hyp/vhe/switch.c @@ -100,6 +100,10 @@ static void __activate_traps(struct kvm_vcpu *vcpu) hcr |=3D vhcr_el2; } =20 + /* Restore CVAL */ + if (has_cntpoff()) + kvm_ptimer_cval_save_restore(vcpu, false); + ___activate_traps(vcpu, hcr); =20 val =3D read_sysreg(cpacr_el1); @@ -141,6 +145,15 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu) =20 ___deactivate_traps(vcpu); =20 + /* + * For VHE Host, HCR_EL2.{E2H, TGE} is {1, 1}, FEAT_ECV + * is disabled and CNTPOFF_EL2 value is treated as zero. + * Hence, need to save guest written CVAL in memory and + * increment PTIMER's CVAL by CNTPOFF to avoid false interrupt. + */ + if (has_cntpoff()) + kvm_ptimer_cval_save_restore(vcpu, true); + write_sysreg(HCR_HOST_VHE_FLAGS, hcr_el2); =20 /* diff --git a/include/kvm/arm_arch_timer.h b/include/kvm/arm_arch_timer.h index ea77a569a907..ce3f4d9e7dd4 100644 --- a/include/kvm/arm_arch_timer.h +++ b/include/kvm/arm_arch_timer.h @@ -117,6 +117,7 @@ void kvm_timer_vcpu_load(struct kvm_vcpu *vcpu); void kvm_timer_vcpu_put(struct kvm_vcpu *vcpu); =20 void kvm_timer_init_vhe(void); +void kvm_ptimer_cval_save_restore(struct kvm_vcpu *vcpu, bool save); =20 #define vcpu_timer(v) (&(v)->arch.timer_cpu) #define vcpu_get_timer(v,t) (&vcpu_timer(v)->timers[(t)]) --=20 2.41.0