From patchwork Fri Oct 7 10:32:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mykyta Poturai X-Patchwork-Id: 13000969 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 382FAC41535 for ; Fri, 7 Oct 2022 10:33:18 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.417687.662444 (Exim 4.92) (envelope-from ) id 1ogkfD-0006PD-Ks; Fri, 07 Oct 2022 10:33:07 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 417687.662444; Fri, 07 Oct 2022 10:33:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ogkfD-0006LS-9C; Fri, 07 Oct 2022 10:33:07 +0000 Received: by outflank-mailman (input) for mailman id 417687; Fri, 07 Oct 2022 10:33:03 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ogkf8-0004PE-BG for xen-devel@lists.xenproject.org; Fri, 07 Oct 2022 10:33:02 +0000 Received: from mx0b-0039f301.pphosted.com (mx0b-0039f301.pphosted.com [148.163.137.242]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 68b94913-462b-11ed-9377-c1cf23e5d27e; Fri, 07 Oct 2022 12:32:58 +0200 (CEST) Received: from pps.filterd (m0174680.ppops.net [127.0.0.1]) by mx0b-0039f301.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2977q6QW027397; Fri, 7 Oct 2022 10:32:55 GMT Received: from eur01-db5-obe.outbound.protection.outlook.com (mail-db5eur01lp2055.outbound.protection.outlook.com [104.47.2.55]) by mx0b-0039f301.pphosted.com (PPS) with ESMTPS id 3k208bupyb-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Oct 2022 10:32:55 +0000 Received: from VI1PR03MB3758.eurprd03.prod.outlook.com (2603:10a6:803:33::29) by DBBPR03MB6716.eurprd03.prod.outlook.com (2603:10a6:10:207::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.38; Fri, 7 Oct 2022 10:32:51 +0000 Received: from VI1PR03MB3758.eurprd03.prod.outlook.com ([fe80::77e8:5cf6:210:7273]) by VI1PR03MB3758.eurprd03.prod.outlook.com ([fe80::77e8:5cf6:210:7273%5]) with mapi id 15.20.5676.038; Fri, 7 Oct 2022 10:32:50 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 68b94913-462b-11ed-9377-c1cf23e5d27e ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NBzf5NC2lZI92DtwkCsZInhkjWY45tjbIfqEZ6I4vquP8pcO3rXf9cNS6YahHLjVWECTeO2n0Gg4tY8fQqoEa6M+Z0LmVJgizIBz+H3TYKwVzsNt6/BtFGXWR36DXdyM4FM2X4/NyGa9B7R30MCvQE+ImO8PrMHmPAuhxkU9mzigg7Olq+CAWq/D9Ogywo2rFrvKzDTT+rw7f+5K/wWmhpeaWn4MM40pbXHFR16wCDl9JTzeSkE2EJSWB/gqIPj3oL7/F8BZSGwOBzAub8nYKUpSshM5qzTdhqf7CLWbgnnRy5mYsGnIZzXAL7vp6z0Vha1PCAewulIjw3CMJuOPMg== 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=qxsl5gDF3/jSVy2BBSafg6Ww5MOd3+YkfDQ+9kQ0VuY=; b=XCNTFwrOA20JWVCexD6aEQgubr4JQ6Vq1N7SM9W9wR/LUNQmuX/pucmr9bFx9lgWjypoMHTVmm5uSBMLNAAdNtVnBgSTZW/iQHmiYf/6g3CbBeydNZzOVqbDSV6SDfzuQA7Mc1CZuFg6tcgc1AsmsvB6mOgdhFDqhNp1YXR5BrWvUtGbTfz0hQO5QN4GGZT2xDQh6ukZYJyoZq/IElFIAQUw/XQsnrcf1qHDnjK7km0rtQv4IwpYdz8aksShAN9GNHxwtTcWQUtkpcmXxRXgEPb9lsKuQBN6YXyav4eL2UPJGyC2+wPpJgjBHZatGrRxyOA0FouvkBZoUz9tn8A3DA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qxsl5gDF3/jSVy2BBSafg6Ww5MOd3+YkfDQ+9kQ0VuY=; b=D9GLVeBc5XEnG63BowEqyApqmjh1JZZG5d2xaGnL6IXwzp9p9zYO6SqnTQB4v/R2AInwz8ejjtt2nPkkg5P3C4APkphAGNXrGwRIbK7uTbS8ydvBGA36wXVhPoBjk8qVz7pb8Jtjf8Un5+mqpoBulmAwby9SX0i9e+KzTalZSOzFwtuYryd6v8pS3Yy2uY/b7PB8p1o2ZY2FljSRJvyz5+QSz5SVdFfn0upTU27IityhzypeahAIzLlNNUSkTwigw5eSjCfsk84Ez4NQNhdteAXaUFth1k+UhAc2Oc/w9NP9ZtxHNicW0fItvJt6uR3wtYcLIpAKBpWBccfJTDZs2Q== From: Mykyta Poturai To: "xen-devel@lists.xenproject.org" CC: Mirela Simonovic , Stefano Stabellini , Julien Grall , Volodymyr Babchuk , Bertrand Marquis , Saeed Nowshadi Subject: [PATCH 11/19] xen/arm: Suspend/resume timer interrupt generation Thread-Topic: [PATCH 11/19] xen/arm: Suspend/resume timer interrupt generation Thread-Index: AQHY2jgl07ov6FowcUeH35VPDOse0g== Date: Fri, 7 Oct 2022 10:32:49 +0000 Message-ID: <63e5551cc906d8603abfbe9596403fdd8107c849.1665137247.git.mykyta_poturai@epam.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: VI1PR03MB3758:EE_|DBBPR03MB6716:EE_ x-ms-office365-filtering-correlation-id: fa5c25a4-6eb7-43d2-1a0f-08daa84f48d2 x-ld-processed: b41b72d0-4e9f-4c26-8a69-f949f367c91d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TFHN2zXtb+m98VGXMPTOah0qGzVgy9eFQpqujFSYIqMC/UC/zzk+KlUMp2vlPnspvhSARlYUgvb6DIHILGhA1K/WITnAbhGZimJbHH5eBoMdAey6i3Z0s3WPPGrFDqgtswyEVDRHS1t1KDHGf4jIJ6cWzU48onzRPYx8WuhS5xAz4TcW3Pxxme+rfZ8mnGHaEbCi2yVfC9BLW7GTxadzL0rTc62SBkR8lwo+FblCOfHIogEfWUuFALykgQOIu1rx0eO4kzcxYoPrrobVIKk/ScW6L8npm5k07JWjxDV4uLTW2c5uwGUEhUyVQMmtx1aNGxMfBCM42z1ylPBKbUAwyrsC/ALl4cdVpFRqYAeZ2ZaU/JISrZcsBq2Z6R73W2c1E/pzz9JqGGYBhOFhtWtmpqleF3s7L98gA8K2ASdiR3+aBZTstWfl8Ip86gqBCBoG1SZmURsOUp/gzYAvwTyEmyD//9gahUnFdNsmG5qnkiJaHHmJu4ct3V3Gg3w+qz/tvBPZLSmJznSVtbCznO04Juz6ckgq/gp3d+8ukQ65V3f97lX/Q4vnNVZjqPiJ8tUN9kHGXPW3i3whoxYLdyUrZ3SHdjzAcwOzfOPco+UBiumfSFm1tlH8+BTbUTy/Wk5gz6qNqj0MqvldQDSV4+lbbSuCAuA4OcVFyq1s5r88rwzL7uiV3Zq7aeqzJ8GZFnpvCCgtyDvtJME50MkEmmUj6HFrQSDTvpDtYv/EaDZ+vsKFbF588OY5+yForIdWLq/MFpZytyxM+DiYqhQyMVsXIQvsATBxR0p6bvRmxjF1Ub0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR03MB3758.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(136003)(396003)(366004)(376002)(346002)(451199015)(2616005)(186003)(83380400001)(38100700002)(38070700005)(122000001)(41300700001)(15650500001)(2906002)(5660300002)(8936002)(55236004)(6486002)(26005)(71200400001)(6506007)(316002)(478600001)(8676002)(54906003)(76116006)(91956017)(4326008)(64756008)(66446008)(66476007)(66946007)(66556008)(6916009)(6512007)(36756003)(86362001)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?qxLuF9n+m4HFbcJI/uMHaqp?= =?iso-8859-1?q?0eBHnJ/pXL/riOKhmaJx0xiD6jciIY/sSXf1H+YmleQiiLDUGbOEg+e93Iw5?= =?iso-8859-1?q?lrJOKHbYDpI+wE9rnnZIyYzsIus/aDO6KzkWl2C0M4KUwkT7uCzMaVU3prmA?= =?iso-8859-1?q?wUgQ+FfeMR1sYTag6rHl9ihQIh+LuufyS/nZHtWI6vXtWiUcB0Pro+aj9Jzt?= =?iso-8859-1?q?wBhMjDFPjWdu0OZngZPO/j7DqWLDln5JUFKGjI1DDtwfPnkKyesHVgzVG0A2?= =?iso-8859-1?q?GTnD3gQ7Yv3igjrZioywwmmCGYjbCnHJ1MM14wuInin+I6rBkmXZ/qdnJjCp?= =?iso-8859-1?q?ZArNunU0DTpNc+rhgsjEVJFeaj1XD+GBMzGIMTEVIXGZ5nEA5uM2REs0lqjj?= =?iso-8859-1?q?ohEp4T4z81BLX1YuQ3AKv+1yLsGNydxT+ac6bVZX1p3372szPZduUVHWw6RI?= =?iso-8859-1?q?rvKks/Ay4KR9q9FzHigrC7x6eNKdU4SQ5fpNSHer1D42xLayqaWi+yB/KIqP?= =?iso-8859-1?q?/jKRKVovo8w9fZEB1070DoWtijNc8nBzjyI2tRiR9gmcKL0dzfExGweM+lTk?= =?iso-8859-1?q?UrXFdBShvgi/8aIJD1Sy8AbIW4OFudc0yWvDsp/Mvm/QKp74AgHL0fXXgySu?= =?iso-8859-1?q?S5P4euTV0GRcwVfWKCG+ATl2ErYrbmD8LVebDdIHlMlh3GY+poBHE/d9UcbE?= =?iso-8859-1?q?GFBrL91KXwXMcxs7w7/FC+dPP/Ew3rn9NngL4JWSYvtvo8xlKEJ37gSt/VZQ?= =?iso-8859-1?q?MxAw9t7oQ4aF1qF7dfiiaDrfhiURQ3K0rVrTBI0/gpuKq8t2kZc76XQfqaZM?= =?iso-8859-1?q?4dni/ufrDpheyhfRNfHYA7U4TfetIzor+CahhUnF+RmkYuq487mAL8/wiO9B?= =?iso-8859-1?q?X79E1nqT8LQtVa7J1QZkzFFlaPcFP4pTVnu34anZtuAjsSEFmuL/NZzx1kHO?= =?iso-8859-1?q?mjdRH8f9cOX0+t6zIfFhgMuuGUfonzoev/0Tm4twqsPR9pix2lsYcnrmxJm2?= =?iso-8859-1?q?1kg5JFLQSfXxJp4oIp9ei1fNc7tjRgtNxkjCFyTwNafFZzPAKqZ2UxgzI1cO?= =?iso-8859-1?q?Rnpg+jHjwoGOa6Q40QGOYgQ2YYxOOX+RWbXZ9ch8ij607oyGT5XLhzfzoB9d?= =?iso-8859-1?q?trZUQVLZZrrisrRVPWx0aoDJydDmRmBv0pic+zmJnnRV8fALcHu3wm2vy9ao?= =?iso-8859-1?q?AqLi6OIJJcd3Ib1Sna4dXs1Cf1wu494sK8d1wwynSlO8HYEmCujrDOSYkRvC?= =?iso-8859-1?q?GFOwu0GOnbNxc2mntdpj3/BVQ+5fmQmbx1WyiuFci65F759IW7yGfl95GAZY?= =?iso-8859-1?q?fMedAXPf0Z3QlaOEiGFLrVv28KMTp1cA8QcsJzRUfkFpXXvfyrKBEeJBDo0b?= =?iso-8859-1?q?w9yUNe0pJ5ud9GGZSGWsqAwnwhppq0xbXBgUoD9bcAEh5xtqOFtNZQpsxhsO?= =?iso-8859-1?q?LSNnyv7RNoWzEchLgk2QDq3TeZxDG9PdX49MWKuCHIlXov+V6ukmWgW87hSc?= =?iso-8859-1?q?QIy879ocPybb0IjQl5UosfsM5ftJQwaAGe6xlzMIA1T7h8lMb7ODUaDbepHd?= =?iso-8859-1?q?nRY3WrWsysnex5exRWDcmlSJs8YFnLxuLLYUvFKJFD+MnMz0A+6ZBik49tND?= =?iso-8859-1?q?9zwnP45khTylIH/zkN0CE/h+EOap8akWhNS4PkQ=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR03MB3758.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa5c25a4-6eb7-43d2-1a0f-08daa84f48d2 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Oct 2022 10:32:49.4271 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zRO6Yn0Hru/urtffcRlZ32XXg93ORHvjXQSt0/91oJX0P2WAQZBNmV8QdUG1E10ckfaHV+foWxTh6NW4uS0HCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB6716 X-Proofpoint-GUID: ZPKhhP-P3GGVXecWUq-MSu4TrjNRB4zE X-Proofpoint-ORIG-GUID: ZPKhhP-P3GGVXecWUq-MSu4TrjNRB4zE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-06_05,2022-10-07_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 spamscore=0 malwarescore=0 priorityscore=1501 mlxlogscore=893 adultscore=0 bulkscore=0 suspectscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210070064 From: Mirela Simonovic Timer interrupts have to be disabled while the system is in suspend. Otherwise, a timer interrupt would fire and wake-up the system. Suspending the timer interrupts consists of disabling physical EL1 and EL2 timers. The resume consists only of raising timer softirq, which will trigger the generic timer code to reprogram the EL2 timer as needed. Enabling of EL1 physical timer will be triggered by an entity which uses it. Signed-off-by: Mirela Simonovic Signed-off-by: Saeed Nowshadi --- xen/arch/arm/suspend.c | 4 ++++ xen/arch/arm/time.c | 22 ++++++++++++++++++++++ xen/include/asm-arm/time.h | 3 +++ 3 files changed, 29 insertions(+) diff --git a/xen/arch/arm/suspend.c b/xen/arch/arm/suspend.c index b94a6df86d..05c43ce502 100644 --- a/xen/arch/arm/suspend.c +++ b/xen/arch/arm/suspend.c @@ -151,6 +151,8 @@ static long system_suspend(void *data) goto resume_nonboot_cpus; } + time_suspend(); + local_irq_save(flags); status = gic_suspend(); if ( status ) @@ -166,6 +168,8 @@ static long system_suspend(void *data) resume_irqs: local_irq_restore(flags); + time_resume(); + resume_nonboot_cpus: rcu_barrier(); enable_nonboot_cpus(); diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c index dec53b5f7d..ca54bcfe68 100644 --- a/xen/arch/arm/time.c +++ b/xen/arch/arm/time.c @@ -363,6 +363,28 @@ void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds) /* XXX update guest visible wallclock time */ } +void time_suspend(void) +{ + /* Disable physical EL1 timer */ + WRITE_SYSREG(0, CNTP_CTL_EL0); + + /* Disable hypervisor's timer */ + WRITE_SYSREG(0, CNTHP_CTL_EL2); + isb(); +} + +void time_resume(void) +{ + /* + * Raising timer softirq will trigger generic timer code to reprogram_timer + * with the correct timeout value (which is not known here). There is no + * need to do anything else in order to recover the time keeping from power + * down, because the system counter is not affected by the power down (it + * resides out of the ARM's cluster in an always-on part of the SoC). + */ + raise_softirq(TIMER_SOFTIRQ); +} + static int cpu_time_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) diff --git a/xen/include/asm-arm/time.h b/xen/include/asm-arm/time.h index 4b401c1110..ded93b490a 100644 --- a/xen/include/asm-arm/time.h +++ b/xen/include/asm-arm/time.h @@ -107,6 +107,9 @@ void preinit_xen_time(void); void force_update_vcpu_system_time(struct vcpu *v); +void time_suspend(void); +void time_resume(void); + #endif /* __ARM_TIME_H__ */ /* * Local variables: