From nobody Thu May 16 00:21:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1643296428; cv=pass; d=zohomail.com; s=zohoarc; b=WqNqFUq6Jnllr8f1tm5nlbgnxqy8g5gP0I+wDFJOqIbd43O9g70chrH3+aQyniGQ/sncre6zEotTsvOQXj15Xlz8M/k+C2ayDTeDCvHPIJsuJrJ6w1K9nXTpHKamsaiBEisKAdSFwE09pISrl07MxaJ0pJyO357qNEqpdWMeod8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643296428; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pBd6EFlOt65MszPeXwWMNIdktA8qG33hlxukXA8/vBE=; b=VOW6ZZu93TB6r3eUzR7ZMAfltMaPc0DvDUM6thbaF/v+OkGRjloxnpYVNjYYM2HeuNucpYs9TgHfhyBxWkwSAhTqquvpejWOj6BGJdmURzp5ndnSDt7z7sDX/SdH6l4ZPvUzcL1WCPsIltPws810kZdcZF38Qa5+mBttvrbHsf0= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643296428744407.42472848259297; Thu, 27 Jan 2022 07:13:48 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.261557.452994 (Exim 4.92) (envelope-from ) id 1nD6Sm-0005hZ-KG; Thu, 27 Jan 2022 15:13:28 +0000 Received: by outflank-mailman (output) from mailman id 261557.452994; Thu, 27 Jan 2022 15:13:28 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nD6Sm-0005hS-G1; Thu, 27 Jan 2022 15:13:28 +0000 Received: by outflank-mailman (input) for mailman id 261557; Thu, 27 Jan 2022 15:13:27 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nD6Sk-0005hJ-W7 for xen-devel@lists.xenproject.org; Thu, 27 Jan 2022 15:13:26 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id ac8f9861-7f83-11ec-8eb8-a37418f5ba1a; Thu, 27 Jan 2022 16:13:25 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2059.outbound.protection.outlook.com [104.47.1.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-BfUHM7SqNve5cQ3Vb8572Q-1; Thu, 27 Jan 2022 16:13:24 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by DB8PR04MB6683.eurprd04.prod.outlook.com (2603:10a6:10:3c::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 15:13:22 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::a1a4:21a6:8390:b5d5]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::a1a4:21a6:8390:b5d5%5]) with mapi id 15.20.4930.017; Thu, 27 Jan 2022 15:13:22 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: ac8f9861-7f83-11ec-8eb8-a37418f5ba1a DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1643296405; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pBd6EFlOt65MszPeXwWMNIdktA8qG33hlxukXA8/vBE=; b=KRR3BI6L2c1tx0Q02MLsParR0TIVbOdQrdthbisLFKrzvTiY7aJd/C+8w98V3byDe6M0Ud PPDaE3w/0hgKx04Pzn09P1i+Ohhz54xbhLcxg4NIXN/6s4mLXI+PctmEb8OBZRA/W7H9jc xZwF4BjBP3J0YuPPWyNoIQOwEluZLos= X-MC-Unique: BfUHM7SqNve5cQ3Vb8572Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PK5hqaJymP1J8v9KIJp2fp/U3QGJIxgYQmN4t/T6anHFCx48SB6qhBs32Oz7BiIlgD6Y7ugeI2SZ5vhk8rtl2ShXLo2knU7in6ost+fmaqAcmq+vmdpi2SsMuPXUSks7CaCAVbGOinWTbT9XL18VEO6rCT1XHm+6Cs+tWAwqftSBB5jpAbRmOBBY0YnnZM7guAaeeAp0xkkDEoggTjb5siYSWLdP6xi5g/W917R0Df3Jp5c9V/0Q3ZvqXi1CaaQk9yQZ3nuo3wuYhkjteyrAOe9ChRBJVSCkLTnvAs2K0dF18xrcjK6a74MVScP+ZCy3uYVCidstaiY59aXqR5zB1Q== 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=pBd6EFlOt65MszPeXwWMNIdktA8qG33hlxukXA8/vBE=; b=BAqtBxbgaP/Wfy09QXl3gOfOqjkrj1XvRUkBsOguuc0NYfwBAXGTG9uYtGJkhGhNLFtdvWNquvJqM+p9HSWcauKDv9GpbOCd5uvQ6Jzy+syg5hziFPLhB9WsjKG2K3gBafXB5di2EDp0zqGV/02fLuxkU38lBG2wtHaGKEHDKS2gYFOncEvPTgH1uBe94M7mZtGgX3IdfXhSgpzlVmZlX/6F3h4PhUYKu7Y2ob9TfVRVgRAP6E3AtmpnXMCwhj41xWuwR3CAMTyGY9WPymqQ22wblh0ILAJeUwNZQ/yxJb8mp/M4GPIOSFOfETKS3nU7k1t2wgy2SP0Ru/DkXioY+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <379483c7-fe7d-16ee-454f-8f8dd001dc48@suse.com> Date: Thu, 27 Jan 2022 16:13:21 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: [PATCH v3 1/2] x86/mwait-idle: enable interrupts before C1 on Xeons Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P195CA0020.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:81::33) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 048d5f07-3993-4d26-eb03-08d9e1a78f1f X-MS-TrafficTypeDiagnostic: DB8PR04MB6683:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3631; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zHH/7rqJw9li9YW7NVWdQKajLlaSMfPqL/uU6lBoYk1+uaYTr1PZISrzp6RnWtOSlxh1c4iqH6ZanyQFgOm2+9o40fVWwRf+yCKcHvF957zIBmsC4Loh9bQY9q/58SVNEOsvZ1oVYJKEDKb1qqm6eND/6WdMEDy1GxHrbMykZGzQqxizu8OXcPTy9oXSYyUR4lQnGA1+zA2DiO3PIHwFnyUWpsBGdS4MsRccHYXREyZZn0zZ2hY7zrLOft3GvOaRcZksYk7pAyQnTvJlAG+999Nq3BOeHMo7PDTAOUO7K58U27aid6c4UEZE+arpnXUFdHZ3jiVB3sZDMhDFCYk3XIKH0b989nx6nTNKvM6hGV2m4P/JQZBqJ62StnXcC6ZlqE+Jk4Zu2jR/7oTl0iN6FbiQMqMtKfkRrl0Z3TpT7CiJDLfMg7B9kNlaOSYw2XPs30dOt549e/py/loJWREc1LYVRI+zV86Zea6wNxkmIPuyh7Gp/7OXiOzBg2P5/Fbzh9IfR3vVD8FzGoWgSfCZA16vbYM67qPagqz/C3/KvalzgG3txCKNynTyhq8rB8DZRBL6SjF69VO9jk8erwGvcAx0hvikuaXAoWS2D0L8rBo37+WUOsz13cZATI7hADNCXpi+BcSxV3vn9DCCM9Y7QmYqJkDqVfS0TsQsJCEfrAUXaKJNXsY29+k6yxrz9i/s7aSwoF8JfgslOVaHnHN25QrDOvkhgoU85z8s13y6bPpKSHJpcUimDl73x+mMFFYDWp5OEPRtSSMS7J588grmrQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6512007)(508600001)(2906002)(26005)(86362001)(186003)(2616005)(6486002)(31696002)(83380400001)(66946007)(6916009)(316002)(54906003)(5660300002)(36756003)(4326008)(8676002)(31686004)(38100700002)(6506007)(66476007)(8936002)(66556008)(21314003)(43740500002)(45980500001)(20210929001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bnZoR2JtbWFOT1cwYkZkWE03M2FkNlNFcEFSZlY0bWU0YWh6Ulg1bm9oaHZi?= =?utf-8?B?VlNyellCTlZDeEt6dXVQYzFpTHB2OUptZUc5YUthVndoUFFxaEl4c3J5bjZp?= =?utf-8?B?L2FpMUhEeHAvZ2YyaGNkWEx6ZFlOcFB1M05KaWY0Y3ZQbDlGL0p6dW5RUUFQ?= =?utf-8?B?NnV5ZjdWWEhIZjczTEhSTzMyK3VudEJCVHdTMmN1Vi9SZTlObDVpN2ovdi9Y?= =?utf-8?B?TnFJOXhJRXZleHJ1Wko5SkVvenZON3FlK2lrN3pWZlBRZTBoam1IdHZGTWdF?= =?utf-8?B?eVIzaGhTMitBN1g5MDd1czZBZTBwT1lidzkvSnk4VlJac3dIY0V0MWV5WVAr?= =?utf-8?B?SVVFOUtQZFRpcEk1WUg4UUNKVzlETkEya3NCRTA1L096Sytkc2Jrdzk5QklZ?= =?utf-8?B?UFNhc3dKMUREMzA3WkkwWTJLa3I0K0NuR2lnQnFhallQVkU3QlVRUDkxUnRT?= =?utf-8?B?eWZLVHJ5SU4rTFg4MXU1WVZWcEs4UjZqYU5sbXM0ajlxNzlmUjFnWjVwdk9B?= =?utf-8?B?aFBENWJidHRkR0N5a2tUdHdDQkZyVmYwNXNnMHVlbHI5V1RzM1FGMXA0ZzYy?= =?utf-8?B?R0E2S2c4NURKWmhPeHlxSStuZTQ0SEEzT0h4ZFRCR3ppNjJ1Q1FnZUltSVFB?= =?utf-8?B?M21VRG1Icko1WEJ0U3JhRDJoMWFkMlBBVjRGLzBraXNlNDRVWjFpZVl4N3dM?= =?utf-8?B?dUlhSzZKTzF0V0UybWg4NnU4aXZwUW0xNVB0Ujd5N3U0NGlRT2VydlEzdzRY?= =?utf-8?B?OG5uOVkvSllpZkg5aVY5VjNsS2RPalRNcXRrTnV6dGZZNjVaVUlEWmpDelps?= =?utf-8?B?c3lzWHlzbjJna0VUWDdjMDZydGlpOTNvSE9HNXJoQzNFYXBuUUFyUmFzKzlF?= =?utf-8?B?bUZsNlZNYzE4RkxFN1V4QXpRQWp3R1d0ODRkcnpnamxsQUJXTkRIZzc4OVNG?= =?utf-8?B?ekZpWFRrMG1KN1NrV2VXQ0xkYktJTFJQNHpJYjhvV1N5M21aWWRwQWQ1TDlV?= =?utf-8?B?S055QnFUMTI3SEJuYlNrd1NNMExhdlhDMHRTWjlGbWYzWVhUV2hlNnFiVk5Q?= =?utf-8?B?dk5MMmhsZWZlQXI1WCszcWdIS2pVT2VrZk9QdVVZNzJVY1VLOFdNU0FwbFVM?= =?utf-8?B?MStyTS9sdGdOUDc2MEZnU3FPczFIbmtqUUFvN0pZWFVLZzlyVVYzMldqZGgz?= =?utf-8?B?U1J2TXFCTmhEdlFiT2IycW5JdndJVnUyMzZMTHMxd2FscWlMUmhvQTM1UGls?= =?utf-8?B?SDZqNTl4QXE5MGlSVFNrMmNJSEZOdnMxbldiWVUrSzFGWHl4Q2FjU2szQ0dy?= =?utf-8?B?TXMzenA2WjdYdVZ0aFk4OTNGZTVrSGU0eGlxczdVNXNTQVF3MDlUTjcrZFM4?= =?utf-8?B?Y2hhTmFLemFTaEdzQUlKVG1ZKzgvZnQxVU1DWGllOFJMeERmWHhDZGtCVTRS?= =?utf-8?B?ZzBGd1kxeHlzaXhmYS9hVFFpclZFV1N2aHZRWEJTbUVlK3FTeCtVTU1LMW1Z?= =?utf-8?B?Q0ROdDZPWTZ4VURDREIwTG9EQkxINFVWYkdzaGQwNjRlNnQ0UFB6WWg3Mks3?= =?utf-8?B?Tm5LdCs4Mi9qNWVmeVpYRm9yQUJ4eGVSUU5CTmRNbVB3cThWRm10M2FUSkVY?= =?utf-8?B?ODczVCsvRDFEeXhSOWZzZldiRkFMN2JSM3U0cDZJZHhnTk9reGVObnZGNHNF?= =?utf-8?B?bm1SY1VnVXFHclUycVV4NnVNOWdJRk5OblRoVkVYWVJTZUgra1Q2Z0ZwdnZC?= =?utf-8?B?NEU5cEY5aEF5UElOSENsZFo3SlNxYmRkNUw2b3czcjI3Z0NiS0NtUVFpUUdU?= =?utf-8?B?c2dBL1FFOThrYkU2SkZRQ1ZOVjVnZW9DUHpwcnFjVE1zQjF5U2ZuSnIxdWtB?= =?utf-8?B?cFVDaUE0S2g3YWtlbjlnTG9PWnNyU2kzcDFycS9yeXdJd3lEQVFNOXZMZ3lJ?= =?utf-8?B?ZlgxWTIydXkwZHQ2akVRMlh3Nk1HR0hzMEl1RWhJSVNlSkFHblpFUXZvZVpu?= =?utf-8?B?NnBQWHZVc2tWdUdqcXM0SmtXVmsrS1NFWFA5R1VRdE05ZXFzTTlzblhFWVhU?= =?utf-8?B?eXY5SjhaK2NVVzhIWno2QVcrejI5QUJvd1JwYkx3ZUhrWnBGOXpDeUFtS1pK?= =?utf-8?B?K0d1V0s2V2ROUWNyUXByRkZHSFRENWNLYjI4NDJvc0wrZG5YM3pjNWVtUU9O?= =?utf-8?Q?uWR6rjF7PSOuc7cONukmpIs=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 048d5f07-3993-4d26-eb03-08d9e1a78f1f X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 15:13:22.8219 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: q18XtsG3DTNpb9Wb9JRcMuVRco87c/+MvE/SAB8Hm7nZwKjrAZR80pBCv8tZWnJ61VVMpwui1Msgz3JWW9fhoA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6683 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1643296431933100001 Content-Type: text/plain; charset="utf-8" From: Artem Bityutskiy Enable local interrupts before requesting C1 on the last two generations of Intel Xeon platforms: Sky Lake, Cascade Lake, Cooper Lake, Ice Lake. This decreases average C1 interrupt latency by about 5-10%, as measured with the 'wult' tool. The '->enter()' function of the driver enters C-states with local interrupts disabled by executing the 'monitor' and 'mwait' pair of instructions. If an interrupt happens, the CPU exits the C-state and continues executing instructions after 'mwait'. It does not jump to the interrupt handler, because local interrupts are disabled. The cpuidle subsystem enables interrupts a bit later, after doing some housekeeping. With this patch, we enable local interrupts before requesting C1. In this case, if the CPU wakes up because of an interrupt, it will jump to the interrupt handler right away. The cpuidle housekeeping will be done after the pending interrupt(s) are handled. Enabling interrupts before entering a C-state has measurable impact for faster C-states, like C1. Deeper, but slower C-states like C6 do not really benefit from this sort of change, because their latency is a lot higher comparing to the delay added by cpuidle housekeeping. This change was also tested with cyclictest and dbench. In case of Ice Lake, the average cyclictest latency decreased by 5.1%, and the average 'dbench' throughput increased by about 0.8%. Both tests were run for 4 hours with only C1 enabled (all other idle states, including 'POLL', were disabled). CPU frequency was pinned to HFM, and uncore frequency was pinned to the maximum value. The other platforms had similar single-digit percentage improvements. It is worth noting that this patch affects 'cpuidle' statistics a tiny bit. Before this patch, C1 residency did not include the interrupt handling time, but with this patch, it will include it. This is similar to what happens in case of the 'POLL' state, which also runs with interrupts enabled. Suggested-by: Len Brown Signed-off-by: Artem Bityutskiy [Linux commit: c227233ad64c77e57db738ab0e46439db71822a3] We don't have a pointer into cpuidle_state_table[] readily available. To compensate, propagate the flag into struct acpi_processor_cx. Unlike Linux we want to - disable IRQs again after MWAITing, as subsequently invoked functions assume so, - avoid enabling IRQs if cstate_restore_tsc() is not a no-op, to avoid interfering with, in particular, the time rendezvous. Signed-off-by: Jan Beulich Acked-by: Roger Pau Monn=C3=A9 --- RFC: I'm not entirely certain that we want to take this, i.e. whether we're as much worried about interrupt latency. RFC: I was going back and forth between putting the local_irq_enable() ahead of or after cpu_is_haltable(). --- v3: Propagate flag to struct acpi_processor_cx. Don't set flag when TSC may stop whild in a C-state. v2: New. --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -108,6 +108,11 @@ static const struct cpuidle_state { =20 #define CPUIDLE_FLAG_DISABLED 0x1 /* + * Enable interrupts before entering the C-state. On some platforms and for + * some C-states, this may measurably decrease interrupt latency. + */ +#define CPUIDLE_FLAG_IRQ_ENABLE 0x8000 +/* * Set this flag for states where the HW flushes the TLB for us * and so we don't need cross-calls to keep it consistent. * If this flag is set, SW flushes the TLB, so even if the @@ -539,7 +544,7 @@ static struct cpuidle_state __read_mostl static struct cpuidle_state __read_mostly skx_cstates[] =3D { { .name =3D "C1", - .flags =3D MWAIT2flg(0x00), + .flags =3D MWAIT2flg(0x00) | CPUIDLE_FLAG_IRQ_ENABLE, .exit_latency =3D 2, .target_residency =3D 2, }, @@ -561,7 +566,7 @@ static struct cpuidle_state __read_mostl static const struct cpuidle_state icx_cstates[] =3D { { .name =3D "C1", - .flags =3D MWAIT2flg(0x00), + .flags =3D MWAIT2flg(0x00) | CPUIDLE_FLAG_IRQ_ENABLE, .exit_latency =3D 1, .target_residency =3D 1, }, @@ -842,9 +847,15 @@ static void mwait_idle(void) =20 update_last_cx_stat(power, cx, before); =20 - if (cpu_is_haltable(cpu)) + if (cpu_is_haltable(cpu)) { + if (cx->irq_enable_early) + local_irq_enable(); + mwait_idle_with_hints(cx->address, MWAIT_ECX_INTERRUPT_BREAK); =20 + local_irq_disable(); + } + after =3D alternative_call(cpuidle_get_tick); =20 cstate_restore_tsc(); @@ -1335,6 +1346,11 @@ static int mwait_idle_cpu_init(struct no cx->latency =3D cpuidle_state_table[cstate].exit_latency; cx->target_residency =3D cpuidle_state_table[cstate].target_residency; + if ((cpuidle_state_table[cstate].flags & + CPUIDLE_FLAG_IRQ_ENABLE) && + /* cstate_restore_tsc() needs to be a no-op */ + boot_cpu_has(X86_FEATURE_NONSTOP_TSC)) + cx->irq_enable_early =3D true; =20 dev->count++; } --- a/xen/include/xen/cpuidle.h +++ b/xen/include/xen/cpuidle.h @@ -42,6 +42,7 @@ struct acpi_processor_cx u8 idx; u8 type; /* ACPI_STATE_Cn */ u8 entry_method; /* ACPI_CSTATE_EM_xxx */ + bool irq_enable_early; u32 address; u32 latency; u32 target_residency; From nobody Thu May 16 00:21:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1643296449; cv=pass; d=zohomail.com; s=zohoarc; b=BI7FHgXiy5dJOXUZfxJpeJ23i81Z13v0S07BngX0CNmgT1ZoL2QubJBjgIhpzWjI7TmeQmqjq8MRmqPaMhY/YDVBm76ik+3qUuyTXN03d9PfvIpTUh4x5mI6h9xDqJ6YwlWiiJGHc/6Ud4y5nlsaAnBeCpteDTx2bMuAFv/GvFs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1643296449; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gmEKu/9ca5lmYiJgoL5lXi4Mn2sZqGXi0uK5GeeQpB4=; b=W75CiZB/xBJL/URMf7c7B8SdFFCQ5Bl1YVOUSkgfG0Ueu6nAEQVRaQD26WMME81OFQcVJAjM7snmIcfn4hVj/ZkBZpxwsGrTZA2bHMBLkuoDlYrtRcLBKY6cvEv9fs0sh7wwyodPgjXfbGPRY6DZGMaBpvGdDaZS2aU7OHHEea4= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1643296449621399.93028506456335; Thu, 27 Jan 2022 07:14:09 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.261559.453005 (Exim 4.92) (envelope-from ) id 1nD6TA-0006Bg-Th; Thu, 27 Jan 2022 15:13:52 +0000 Received: by outflank-mailman (output) from mailman id 261559.453005; Thu, 27 Jan 2022 15:13:52 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nD6TA-0006BZ-QG; Thu, 27 Jan 2022 15:13:52 +0000 Received: by outflank-mailman (input) for mailman id 261559; Thu, 27 Jan 2022 15:13:52 +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 1nD6TA-0006BI-62 for xen-devel@lists.xenproject.org; Thu, 27 Jan 2022 15:13:52 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id bbd9c594-7f83-11ec-8f75-fffcc8bd4f1a; Thu, 27 Jan 2022 16:13:51 +0100 (CET) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-am5eur02lp2058.outbound.protection.outlook.com [104.47.4.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-34-mg8HBOwMMyuE2qd1UH2CQg-1; Thu, 27 Jan 2022 16:13:50 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by DB8PR04MB6683.eurprd04.prod.outlook.com (2603:10a6:10:3c::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Thu, 27 Jan 2022 15:13:48 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::a1a4:21a6:8390:b5d5]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::a1a4:21a6:8390:b5d5%5]) with mapi id 15.20.4930.017; Thu, 27 Jan 2022 15:13:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: bbd9c594-7f83-11ec-8f75-fffcc8bd4f1a DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1643296431; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gmEKu/9ca5lmYiJgoL5lXi4Mn2sZqGXi0uK5GeeQpB4=; b=C2oHqi4ZXxrvi8oVER2MvJpNLxYFuhZzmmdnqUU3GuAE5Oq0btFlp3ZSZVzQKLDGVDjyMZ UhqkGVRig6F9CCCxWxnEUW6+y9qycGm192w6KCMvAC0cWyCwVi0j+q+0r/1KHfprmApnSW 5L76Ibbsf/jDr9Z/a9FDj+JJfCcY70w= X-MC-Unique: mg8HBOwMMyuE2qd1UH2CQg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dsNlr4oZpKp8GfZFfN1suIJmAwFxkcE2Cq9YIIs5dZQpKRVs1kocqzfFPojCME+3eOqTT/nm1RjqU+hY4YEckb8PSsFveyIrlhMHEpbcbghyvYNp3JF9FKe6LyAxVPkzn98NdMVysqrJUJ1e5MV+GpH8+fNNMqkkjyDQ1NW3AlFBD7aj1ERxWiqlwYa97Nmam+Fw/CR5A/IutI1CGoBOFgnhyeEW1qEXBh1GRi6vc3qqFzsakv435J0pdkSGVW0zWuIjt8UjxkH3F3LE+USDHol8jOb7ptDD0xA6EeUW9DfYuSKiFH5FS+TNGxL3i1Je08F+lGvOsdjt1t3JQuVK2w== 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=gmEKu/9ca5lmYiJgoL5lXi4Mn2sZqGXi0uK5GeeQpB4=; b=Ydc+5pSntp53rD5K+N2zq86zxPtNt7tilcg4t3L0ovdgkYTHUbQ82jnMb3755wo965CuWPsbmx3ERdPhBy4Gx7jBAhZJ98F8CUs43Xq/t8F+mwJjmxnrB8zqnWKvqwTFPtmQH/b8yP7r/tYKiekhyp+1AoftkGSjft3mN3UmEBIvMRMph/iHgjbHjUPlL4eUau10r0q47+A3GpWONi6zi7eHOmeBs8EviRLhjILclgGDYZyfd6zNaiggkgOfSgg4hoGrhrRBXibfKctYAMmxJTvecRvtSiZVO3nuwBXjArNZTIsXsbqjlI3jT8gg0WR7HkHSmD9Jl15qmrT0mDOTaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <6a9152e5-1a7d-c569-3483-66f022027597@suse.com> Date: Thu, 27 Jan 2022 16:13:47 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: [PATCH v3 2/2] x86/mwait-idle: squash stats update when not actually entering C-state Content-Language: en-US From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM6P195CA0025.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:81::38) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 917a67c5-ee72-4c07-7e0c-08d9e1a79ea8 X-MS-TrafficTypeDiagnostic: DB8PR04MB6683:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DJcZPDBMuG0vJrK1J+pjqi9GyilvI6u1x+H3hCH3FrHO4kqCFKKZ9HilYiXAIDSc0TeKLnLLO/9E7m56oWbasUOv8KyBJLpmjlWktmK/SHBCS/eE8WkiESNlL6CzY7XQzioTG7RlHFzeqtLdg8kDpIC1TwKbfN8dQUBZgwjiOb8DCu990zb49V+PFjJlLLHr4LRCQXnCMrNu9ELAcsPt3Xywbphd9LZ6+6vepo5AawYq52vU4QB5sxpePXvn08f7PX9f7LYN2Whwife4e/iHD5X+5e7IhJtqvq/pX9BTyxFj2i7jn5QLhHeIAgEFtu0ZySQT9WVc75kNTF4gl32ogi2PBlw4GYhbI4OevHpWlPen1IwJTZ7Y/VE26ADbV2ln6pAQRVy0A7Qb5okvfn4+vMctiQKHgUSoQZ5Kc4/ArbblCMuoZHzp+e/l+J0BPvlRf5Q9GZkfTzOvJoGJTbaEUQBVijSbzz+jZc0dpecc+Mw0QbnLLEAG/XoPWccSOmtPR+2n7FIZKW6xymCM2tY4cCeoeE2ONo47b7fQ1C10KWFOmsMyw+8fsupiC82b99FdeEDYxH72iCooeLYIW8bqRO1X3tOHxLrksVa+mE6lKU9e8qnQxpjCMUka48EA7a1C0jrGo26D2NS7wy4XAfOn3zGNpx0mig0HUqCwrLIP13RfKbxUIOSeru35vPtftXRGSeFR7Be5JboXOPJUbr2MdYyZiKBdPabwtzqfujVmcavqNzKHvs9l8AOJOozmlI1T X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6512007)(508600001)(2906002)(26005)(86362001)(186003)(2616005)(6486002)(31696002)(83380400001)(66946007)(6916009)(316002)(54906003)(15650500001)(5660300002)(36756003)(4326008)(8676002)(31686004)(38100700002)(6506007)(66476007)(8936002)(66556008)(43740500002)(45980500001)(20210929001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OVdtQk0yWW10akh5WEpINWlCZ0cxQ2N6djRlZzV4eEFJeHVpNWxFT1JGbGl3?= =?utf-8?B?ZEZRRmlGMy8rSmw5cVh4SHhOT0hzQThQbjFNNlFyVSt4ckozYjRzeW5UZ3Iz?= =?utf-8?B?WUNWTlhTLytlVDNuNzRtdGtiSHVWdzhhbXJHcDBzQ2h2R2hicEJzbHhVdFQ2?= =?utf-8?B?a3FSNGlDUXBheXNsbE50c3VGamR2RUUrWkFFZUdIKzZ2VjRMZHJ3NDhrM08v?= =?utf-8?B?ZkV6VFBuZGk4TklYSjFBU1pBQzF3L1lxVEJ4eDFYOEVpMzdXbjlmT2lHdHFW?= =?utf-8?B?b0Z4NXViM1c0VEJwVHRpcnA1L2FNRXI3UmRORXFmdFU0cFp6NDRYUWFqalNw?= =?utf-8?B?KzJQdlV3cFQ3RHNPWUNNRkNiRFFhTTErc2tIYmNXcWZUTUd4eHByM3JBczdX?= =?utf-8?B?RktHQnI4NGUwaTBFbEs5YnREYlhFR2I5ZFZQZ3ZFVEI3d3ZMUTN3dHJIY21M?= =?utf-8?B?djNLZEUxTGx0NWw5SVZkVFRwOGhISUtrME1uODZFV2cwVlNiWTB0TXdBa0ZI?= =?utf-8?B?ZTQ0UFlXMWlVZ2txTUpVUU8rK2JBNDVESmt3UjhOdWllOTcyWmhNMVk5d01J?= =?utf-8?B?cmwyWUo2SHZWcUlMZnA2L0l0bld4VzczTkNjd3ZTOG5hcjFCcGFvRGFZMWov?= =?utf-8?B?RkgzSFZrWGFreHNZd2t4a0hlZStxMTVqZStzZEZxMXFCVXcrRVRxdE02MnpJ?= =?utf-8?B?ZHg3cHd4bDdJbE1ocTlPNTRSNUthamUwT1JNT0F1MzluS3R0emZPdXJSeFJw?= =?utf-8?B?TjZYL0xZQlpndzZ2YXJoaTlyRDl0ZkdSUEZZd294TjVHZWo1ck1aMlNJSSsv?= =?utf-8?B?YUN0b3dkM3o5YnVRTEx2L0srb1NMditFUjZ0eEpwZlVUZXdQZnRBeDJhTkhQ?= =?utf-8?B?UGNScXhyQWhNWjhkSWZWUExJLzJtOVNUcHlmOEU2VE8reEtCZDlkSUdvd2Ry?= =?utf-8?B?dlZ6dElhUzR0bEx3STJGelJLQ0RoMUFjL0tCYUl2K0pTSG1OYkhJYmhtVXRQ?= =?utf-8?B?eHdmQ1YvMnBFTThMUm1YL1BSMnlWbjdzZkYvazZwVnQyN1lUK1hxYWFxQU9B?= =?utf-8?B?NW5ldXVOUGU3WXlQcGwyd1IwcVFWQW5adS9wSS9XZ2IzZUJhR0hkOU95VXk2?= =?utf-8?B?aitXNUV5UzNvRVN5WFFtZ2s4K3p3VzdaMlBwd3JwRktGMXpwbTdya0pSTTUy?= =?utf-8?B?dUJkNUZDZ3BvL0tlNEFmUkQ1QjdrbXFGRW41TFQ0enVEek5mSCtEM3ppTmxs?= =?utf-8?B?dDNSdER5Rnk1Sk0zYkpjeTYrcmwyTkoyWS95djJ1MWdwWW5VOE9SRkEzNGZ3?= =?utf-8?B?bmp2WW9kYkJYdFdKdVlRTjdacS9Dc2o2aHROME54aGhLbmwrOTFPZDJsVktU?= =?utf-8?B?MDF5WXdSMlM4YmJaY24rYlR2OHpmbmlLZFk1eC9WNkxiUG01c1lncTdYQjNC?= =?utf-8?B?b1QrU2dWQmtkSFdBTWV4TVFKcy96TEM3aFhWeWNSZmkwRTMzeHZTUDlOQUtl?= =?utf-8?B?eVkyMndZQjlJT3krVlVWck9HZC9qODk2bjR6SjF5dXA0dWNWNzBodVE0U2tM?= =?utf-8?B?NkR6Ukl4L1lNelhpZitBVVNRSVlQV1h4NTY5dURaNDUvQUdmdUlwL3JhRUcr?= =?utf-8?B?bTljaGgyVkZuVmVGenJicEFsanJnaERwZmFNemRYbHBpc1VjakJBOUVxZW4r?= =?utf-8?B?VnUyL2ZScngrN1RIUmEwZ2dJblBOc3JZaW94N0U2ZHlCS3FlZEJreldjcWFx?= =?utf-8?B?Mk5uWnB5VUlER085VTg0WGdXN0dQZGJmdno2d0RNWjhuZHl3RktHK0FXTjkx?= =?utf-8?B?ZWtjTzcwZnRweXN1TVZJZXkyMFRPUE53QXFyc2thNEIzaTlCTlozeFZnWklW?= =?utf-8?B?ZjFvc3FRdEFuVjFXRjZIR3dUU2NQY2w1cmQ4MmVDNlJScUp1U0ZJVzJpYWFF?= =?utf-8?B?SXorNEJWMXgwZVVqSTVUMkN6WENJckdKa3E1V29TVVk0QzU1QVRKM1pDTWtF?= =?utf-8?B?RDVrNURoRHkzS1ErRjdmM1ZrUzUwUCtNTVVlNkk1M0k2eTllQjhkYXM2eWxk?= =?utf-8?B?VG5SdlpwQ0dieVFHVlBJRUR0ZWlUL0ROYS9KM3p4djhiZExoQXBSTnJLYkFC?= =?utf-8?B?UFRMTGQ5WFV3dUoyV0NRbE5ZN3YwaEdjOUpheVhrdlpDdmxOVS93Q0tnNjVB?= =?utf-8?Q?ase7J5p0s5KnQ3mL1cCRz5w=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 917a67c5-ee72-4c07-7e0c-08d9e1a79ea8 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2022 15:13:48.8360 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SszrsmfOrgtHE1Q8VPFjGX3ABaL7clHQsdMb9m3tI/DN3uwTY+0mlNufUE20N90N63rdBj19jxZtGyrTw3xvtw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6683 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1643296451636100001 Content-Type: text/plain; charset="utf-8" While we don't want to skip calling update_idle_stats(), arrange for it to not increment the overall time spent in the state we didn't really enter. Signed-off-by: Jan Beulich Acked-by: Roger Pau Monn=C3=A9 --- RFC: If we wanted to also move the tracing, then I think the part ahead of the if() also would need moving. At that point we could as well move update_last_cx_stat(), too, which afaict would allow skipping update_idle_stats() on the "else" path (which therefore would go away). Yet then, with the setting of power->safe_state moved up a little (which imo it should have been anyway) the two cpu_is_haltable() invocations would only have the lapic_timer_off() invocation left in between. This would then seem to call for simply ditching the 2nd one - acpi-idle also doesn't have a 2nd instance. TBD: For the tracing I wonder if that really needs to come ahead of the local_irq_enable(). Maybe trace_exit_reason() needs to, but quite certainly TRACE_6D() doesn't. --- v3: Also move cstate_restore_tsc() invocation and split ones to update_idle_stats(). v2: New. --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -854,17 +854,23 @@ static void mwait_idle(void) mwait_idle_with_hints(cx->address, MWAIT_ECX_INTERRUPT_BREAK); =20 local_irq_disable(); - } =20 - after =3D alternative_call(cpuidle_get_tick); + after =3D alternative_call(cpuidle_get_tick); + + cstate_restore_tsc(); + + /* Now back in C0. */ + update_idle_stats(power, cx, before, after); + } else { + /* Never left C0. */ + after =3D alternative_call(cpuidle_get_tick); + update_idle_stats(power, cx, after, after); + } =20 - cstate_restore_tsc(); trace_exit_reason(irq_traced); TRACE_6D(TRC_PM_IDLE_EXIT, cx->type, after, irq_traced[0], irq_traced[1], irq_traced[2], irq_traced[3]); =20 - /* Now back in C0. */ - update_idle_stats(power, cx, before, after); local_irq_enable(); =20 if (!(lapic_timer_reliable_states & (1 << cx->type))) From nobody Thu May 16 00:21:55 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=2; a=rsa-sha256; t=1645173343; cv=pass; d=zohomail.com; s=zohoarc; b=kctZG3VwudtgNhIeyflQjJmrgtvXLgC70iZLlCcy2AjhrIstKjjAvXmQFFC0d36EBxCDBEfrrzCG2B7XfJCxQv37BeUwl/sbBOg0wvxugZuywJxakqUJQuLeynG9aUHF7VZ7gjI0iOZAkvrSZitEFLCSwstLX3xgzNJidIgJqAc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1645173343; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RRyQl3XXjMIkv3EC1aE9ooEVH9T0PmKRPMUQxTpYUAA=; b=H6FaLIGBuzm5rG/yPmsVgpemwTNj/naSSwGsXP2IGuGDftYDIBHroM/T/pZw+jd8r+AQMq/L8AsZwTDRWYD/PzN6PaK3emKafenonz8/3rczdIv3EL6tU3SEpvYJg6zpKDgz9w7kj7eb+0Uvfu9S47UuVJdUIJtD/Otzr6P1sWs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=pass (i=1 dmarc=pass fromdomain=suse.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1645173343668601.812357322487; Fri, 18 Feb 2022 00:35:43 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.275216.470985 (Exim 4.92) (envelope-from ) id 1nKyjZ-0006cE-Sp; Fri, 18 Feb 2022 08:35:21 +0000 Received: by outflank-mailman (output) from mailman id 275216.470985; Fri, 18 Feb 2022 08:35:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nKyjZ-0006c7-OF; Fri, 18 Feb 2022 08:35:21 +0000 Received: by outflank-mailman (input) for mailman id 275216; Fri, 18 Feb 2022 08:35:21 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1nKyjZ-0006c1-1Q for xen-devel@lists.xenproject.org; Fri, 18 Feb 2022 08:35:21 +0000 Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id b31d1eb3-9095-11ec-8eb8-a37418f5ba1a; Fri, 18 Feb 2022 09:35:17 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2050.outbound.protection.outlook.com [104.47.12.50]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-31-htTExiZbPtevkipbiCnJyw-2; Fri, 18 Feb 2022 09:35:16 +0100 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) by AM6PR04MB5813.eurprd04.prod.outlook.com (2603:10a6:20b:ab::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14; Fri, 18 Feb 2022 08:35:12 +0000 Received: from VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65]) by VI1PR04MB5600.eurprd04.prod.outlook.com ([fe80::d479:b728:345c:bd65%5]) with mapi id 15.20.4995.016; Fri, 18 Feb 2022 08:35:12 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version 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: b31d1eb3-9095-11ec-8eb8-a37418f5ba1a DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1645173076; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RRyQl3XXjMIkv3EC1aE9ooEVH9T0PmKRPMUQxTpYUAA=; b=g8jRxyqEI+Z/65MuUhp1vFtbRykS/0jfcIO2Tbrj6JM+98YYPN3gC45HGiYWZQ/B/sLEPw ApNB4fHXp0xsaYfFc3N79SC+6dUGiEN69tNvRzfVP63cYpAHyqjpUmXhCmJVrU5hMo5xfc yzOXumrF4OuSSvzedHwreAtpCuBraA0= X-MC-Unique: htTExiZbPtevkipbiCnJyw-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PfYXQ8Be+P4mdNmoFO2gEb6w7qUgIsPWjM3spf/rNqqgl4A2rt792eHxSkuc5Y8gEPwBEUxO9XzbqproJDyi+dUOwoMWqPU55KG7ry2w+e9D6UsBW7cInp/lQq3zt25pdG3e4ahxEtwyr8FhVvjTIa2EMaMVB1T2RWvtT97smhTCbg9yg48wmah5mAX+79GKFITrdAhUBrFqRVgXla5gA3CkVW9ci2Gj7nR9n4PynDGEZF04h/CuWLcSdRQ4sT55fbLAutDQuQFB/1eMlXKHoPd86iUeWDVstweGZ0nod7IzZWXi2L6EtnA6CT3a+jUi7x5i0LBiN4ZnIvIwIpLvLA== 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=RRyQl3XXjMIkv3EC1aE9ooEVH9T0PmKRPMUQxTpYUAA=; b=N8nJxz3IcEAzSafOE3q/41uXsB9mn9fzfBIKKQCQMJMWaR4YG59E/Q6ieKvLbVbvWLHSW3ZwzQTxDP1RRH+pfuMEav6gVRowEGCMXcrBRn2m2UFtA2xOnvn7Mix4DE3BDlBYTZWr//SQDiGk7RogD1lipAL5i0TdCmR6rCDnCKV3a0c90cyqs9TBeLUm298Bub8QYZOi3VInIhQ+burB2ep+LqGgKwyr0Bv+JJ1KgJYE9Lw7WGCaJby76QsoANZjEXcsmzsWIB2I7YJZJ8Wj5NFml7Ls8FltWGYPg2TZxCoEMhxPZ192ndVNo0LJ+GTiZe29v0Rqh1z+4a6STEjCcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Message-ID: <2db7bc79-4fe4-abf6-9e5a-83055af9a78a@suse.com> Date: Fri, 18 Feb 2022 09:35:10 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 From: Jan Beulich Subject: [PATCH v4] x86/mwait-idle: re-order state entry/exit code a little To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= References: Content-Language: en-US In-Reply-To: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS8P189CA0026.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:31f::30) To VI1PR04MB5600.eurprd04.prod.outlook.com (2603:10a6:803:e7::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e163a9d8-b02e-47ee-1910-08d9f2b99485 X-MS-TrafficTypeDiagnostic: AM6PR04MB5813:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3lwXCsR/576G0CT/xY2Xuq5Eq8BXlNefjwPfqVuoahKDv4GlipwlACH3ybxf4Wmjrhr1Juu/Dmzxd+bzqpz9dDHWbQCc0RhExGKULeBs4CuYDCbwVzNdJZHJfv3cACwx5eIW/ZX92Na6GXi9rAIUvjMt4/CP5PBpVOKwPdX3RXtSGccUxiLaqDBWnhoZBYdnnKpc2Nj/OIWq8xr4eIb7N/Ww/cN6UM63undbLxOX+BgpD/ckcyUFTS3AnKWsS5EedY4ICV0Eg2Zx2Mn6FIyf7kscnwfxYzfVU1jE/aUmMLjSJ/CBvxzjAsfqeF6Tldhxrb4a+rFdpgjs6N3YUK4xpjIDUCP+AEr+NOuFE57UlvBBPpW0cNKiCy4WgZEvw3FNX2lhze+mqEEGYEvU5fYKhDMXxDual90Rc8g1FfuYQju/wUVV4lKvK6j2zbbdCGJ1EALc8Tn+kaPXfLMYSD7VWkIISmaJnLRfiIIpcMb/5kqttpidPA4X+EkRPFuhC8eQhUXYeIEjqNNhUyT3ru2XHz1GquQr+fjtSb9FUqxyUvv43+OuC8x3Hj4Tkaf1nbm0oX34QpY/LJkmBJ0GOxrPZg1atlAnLJFDGFP8KxK13ehIMWGcr0XjnfGNzBO4Wk2h+O4VVuQTQAEkMRxZ7KWkddh80ja/eE8I1Kce+Zf8xZdAlR+/43tRxXTE3ET0IipYdFjqUCLCUIr/p5EbmHCETW0UrC2pBUU+yEPLuzEcSMZPNJIGUPpNEj16JS/ac0KLqQbrbRTT9fW+0bhisWVFcw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5600.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(4326008)(66476007)(508600001)(2616005)(66556008)(8676002)(2906002)(316002)(31686004)(83380400001)(86362001)(66946007)(54906003)(8936002)(186003)(6916009)(5660300002)(6506007)(26005)(6512007)(31696002)(36756003)(6486002)(38100700002)(169823001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZEIwbjFtMEJpUlRmb0kvNGdFQnpoNDFtRSt2aE9Ub0xpNGRGcFI3TjQvZEJG?= =?utf-8?B?cDdRUE1xRGxYWnZndGVKa2ZyRk93NTVWdVRKUCtKYU42am9od0FhWm8ydHd1?= =?utf-8?B?STE1cE5MTDRWSXRtV1FMU0ZORStPa2ZUUzV1NUUzOEpNNVFjNk1YOFJzSThG?= =?utf-8?B?SDVhZDVOY2NpczJjL1EvK0hubDZvb2RLK1pRTlVNNUhTTzVobkxldDU2T1ZW?= =?utf-8?B?RXVPUTM2WWpicmJWOTRyUlQ0WFZxRHF0NkdiMXpFZmg0V2tzNWJqQ1hTZGgv?= =?utf-8?B?Q0w1SzBuOWlvK1lLbkhaUzM4d2YvaVBDNmZmaTlmTEpSTVlmazNpakxSN1g4?= =?utf-8?B?YVJpZm1aY0lzd3FydXd5TUJLOS9CYkRuemxMakFzdkNjUng2ZUpSaS8yVndw?= =?utf-8?B?QVpIdDluVjV1N0RDTWYvYStqdkx0QzZGK1BBdTN4em1oUHVQb3RFdEpPSHFk?= =?utf-8?B?emg5STVvSmZ5QVdiNHJteHdPeHJUa05WQ2VCUTIvZkNjb2o3bVMxWDI0TDNS?= =?utf-8?B?T3krak16L2VtNjRYK0JVL2Radms3c3ZGcVpzSE5LSDdxY3c1anpVQll0Y1pW?= =?utf-8?B?d2lha1dLVllJV0dnQlMzRk9sM2Z5TWNSOCs4VktaSjAwVTZNNkRrdEgrOTF3?= =?utf-8?B?UGtBUDcxUG5RM1l2RXV0RVBTRWgxUGZuUmxmMmNYZ2Z3OU5SK1Y5WFoyTENZ?= =?utf-8?B?V0dmeGhCUzI0bUptS1lHSjI4U1ZreHQwd1M5ZzcvRVN0RGpVT3E0V2k3bDVN?= =?utf-8?B?VTZKT1hxOEVhMnJuek42dHVIaDJ6WWFMRnA2bVg4ZE9tWkRaZ3QxL2lPcEkz?= =?utf-8?B?aThwS2JLZTNTVWIxbDNySUUvRURIR09oY1ZwNUQ0TEE3TTR5eEc3OC9ORGNr?= =?utf-8?B?UTJuYzA0QVdMa3FxbWsxUDh0Qy83S05aK0NhZG9JWkVDYTZUczhHM2liMkhO?= =?utf-8?B?VmpPM2tWbzJMUmEyV09HWFZreURKaVVsNXh0b0pFYWlPUUF2dDhSU0VPNGVW?= =?utf-8?B?b3ljNlFHb0dHNnplc2pVK2ZCVnVML0pvSzYvVkFmMUhoZFpGdUJseVpkaVRL?= =?utf-8?B?YXlabXVjT1ZvSHhtd0NCUnZKbTVGNEF4YStoUUh2OXJ6akk1RUlYMjhXT0dr?= =?utf-8?B?MUNwQi8wZTRuQnQ0b3pCUWdSbjJpSTJjcURsTE90UEFHZFJBejZtdjlGTVJH?= =?utf-8?B?N2diRkpnellyZmNQWjM0blZiQTFtSXhBZDV1Q2VJSDl5RjlieGNwVUhhUWY5?= =?utf-8?B?VTNGcGZLK08vMmVDWjZ1RVJpczliZTk3cEloaG4weUFFU3VwaG5LbXhIRTQv?= =?utf-8?B?d29JOHd1WUlVWDVzbmZieFV0aTJoNkZwckx4YnRRVVJTWFA5MVhxYmRhZjVX?= =?utf-8?B?MUdaaWs5Ny9NMll4RVN0YVhEWFU1RnZuQlppTFoveTByQ1NhQm5GU1grNFl3?= =?utf-8?B?MjNWS0JVRWdWUEdDMElLcklMNlRocTFqNkt1SXlYcXhMejd2MmpKdE5FbkQ3?= =?utf-8?B?MEUwM0V2YlpjZVJWRzJuQlZySi9MWEw2dUF2YU1VblUycXpZRHU1UEUybllB?= =?utf-8?B?M1J6U3gxQ082Qjh1cE05c0tJN0hOazM1OEZTaStKd0VzTUVqQ1R6aWFjV0dl?= =?utf-8?B?Tjl4YkFrMlFzajBZSVh2NVVKY1VnRWV0aTJwVk13SW9leVdqS1VQMVdzbG1w?= =?utf-8?B?S0xydXpMdHNFSU9uaS9jM0hKR0NTak5jUGpweXRTMSsxQ3FZeHh4MFh5eE1Y?= =?utf-8?B?cG9OTHI0ckNadDgvY2huS0tBOTg1c3R5NExIM2EvRzg1QW1wMml0VU8vYlZ0?= =?utf-8?B?cnJLVFdlQk5PL0VyMk44aGc1RkxsUVJyc25PNGhsaHJreTkvcU9oSmNDeTIv?= =?utf-8?B?blIxNnMySGtkeDFKaE4vUW5kWitaT0VDcU5EZWZKWDUzeEpmVVgrR3RCcTht?= =?utf-8?B?eEFKNWZKTDFNY2ZjS0VuMWdieHd6OURxOUxwNXJuaUNZZXJGT0UvRERMRGNm?= =?utf-8?B?SEVBa3BrT3o5TEtlTHNDUFlHM1NPQURCL3Z1K3QzWDFoQjlTNWpDNSsyMkNs?= =?utf-8?B?c3BrSHpOdGkxTit1OEFRYVo5eEhEcEhXZ051UGt3cnNoSmZidng5dW9lelNt?= =?utf-8?B?Z1J2ZVphSmVVNjdUUXRLRlplWEpFM0hhelF5Z3VVeTIwRTlpbjRvclRhUUg5?= =?utf-8?Q?bu3Afg27wzJcT8yug2tky5s=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e163a9d8-b02e-47ee-1910-08d9f2b99485 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5600.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Feb 2022 08:35:12.5507 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yvDyd028BHTXDZwt5ofSqeGrFP1Keon+xr1qgLlpNj9uttLAPBHHUeE695YMYSSDZ8FLHt0xTd+hjsMCZi9lHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5813 X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1645173345689100003 Content-Type: text/plain; charset="utf-8" The initial observation is that unlike the original ACPI idle driver we have a 2nd cpu_is_haltable() in here. By making the actual state entry conditional, the emitted trace records as well as the subsequent stats update are at least misleading in case the state wasn't actually entered. Hence they would want moving inside the conditional. At which point the cpuidle_get_tick() invocations could (and hence should) move as well. cstate_restore_tsc() also isn't needed if we didn't actually enter the state. This leaves only the errata_c6_workaround() and lapic_timer_off() invocations outside the conditional. As a result it looks easier to drop the conditional (and come back in sync with the other driver again) than to move almost everything into the conditional. While there also move the TRACE_6D() out of the IRQ-disabled region. Signed-off-by: Jan Beulich --- Moving the TRACE_6D() may be a little controversial, as this could lead to a sequence of trace records not actually representing the sequence of events, in case further records get emitted by interrupt handlers. But with us now conditionally enabling interrupts around MWAIT, that issue exists already anyway. Unlike said in the earlier outline of the alternative approach, errata_c6_workaround() cannot be moved: cpu_has_pending_apic_eoi() needs to be called when IRQs are already off. --- v4: Different approach (and title), as was previously outlined as an alternative. v3: Also move cstate_restore_tsc() invocation and split ones to update_idle_stats(). v2: New. --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -847,26 +847,25 @@ static void mwait_idle(void) =20 update_last_cx_stat(power, cx, before); =20 - if (cpu_is_haltable(cpu)) { - if (cx->irq_enable_early) - local_irq_enable(); + if (cx->irq_enable_early) + local_irq_enable(); =20 - mwait_idle_with_hints(cx->address, MWAIT_ECX_INTERRUPT_BREAK); + mwait_idle_with_hints(cx->address, MWAIT_ECX_INTERRUPT_BREAK); =20 - local_irq_disable(); - } + local_irq_disable(); =20 after =3D alternative_call(cpuidle_get_tick); =20 cstate_restore_tsc(); trace_exit_reason(irq_traced); - TRACE_6D(TRC_PM_IDLE_EXIT, cx->type, after, - irq_traced[0], irq_traced[1], irq_traced[2], irq_traced[3]); =20 /* Now back in C0. */ update_idle_stats(power, cx, before, after); local_irq_enable(); =20 + TRACE_6D(TRC_PM_IDLE_EXIT, cx->type, after, + irq_traced[0], irq_traced[1], irq_traced[2], irq_traced[3]); + if (!(lapic_timer_reliable_states & (1 << cx->type))) lapic_timer_on(); =20