From patchwork Fri Jul 26 20:21:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ankur Arora X-Patchwork-Id: 13743173 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 6583EC3DA49 for ; Fri, 26 Jul 2024 20:25:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=0Y5iQq5AlfaXHODFJbhwAtwyWEbdQAvsaddyAJxEonM=; b=YZ/fdLC3SxoXXcs0hSncJ9pMRd Q7S4BSTLC5t2rojlWxVOALdnKWzu4YxgiRR4Dh1ictQI1ZHZSAGrvIXpgX7PHNTbMtSoVKrRFVvsC KlufcS2NNg0ic5sEF+ic1gpc21+tSInavrjShOcWl3R67lTM+JWzw1IMLTfV7O2J/lY3AEJftn2uP ftiW/a6Sl7JZnryCAQNTQBAKpCyp4Ke7Le/FK+5ZjvCyqt+5gar2tLvd42Fi+g6h//ikoIO9nxDYK kYU9xaeO2GM2HWm7YTsZ5e7SEK3AA3J3scvb70aTlL20MMHPNm4g0wfYFOO/IJiG7HezuyBw8Yyas hWUCfmfQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sXRUl-00000004uGg-3yhk; Fri, 26 Jul 2024 20:24:55 +0000 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sXRSI-00000004tFg-2onT for linux-arm-kernel@lists.infradead.org; Fri, 26 Jul 2024 20:22:24 +0000 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 46QJkOd3010642; Fri, 26 Jul 2024 20:22:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :content-transfer-encoding:content-type:mime-version; s= corp-2023-11-20; bh=0Y5iQq5AlfaXHODFJbhwAtwyWEbdQAvsaddyAJxEonM=; b= d4GlpcLrF0pcmUbCUhvanPUPFWTTBNADkOj8TMOY1XgFbR5w97OfhQw3XSwPIjn6 PrfRL1c4IzS8o4WBErUcOJS5l7kYt3wIvvewRmvscCfC2qal/fU0mIL7ZA6uIhH6 qXNKLcFx8rR+HH7BizI96lIr+mDJtYy1XjTRB0XcWerxi8Yz+G36DY0k9mAUf8jH 5wtzPe9Zr6FTGQcOMOeHdiJ2nYLucAvstAb7x0O9jIvkS+m84ZeSfI2Ni6/Rd6rm xu7CRgstTNcyp+Qlvmbs/8fYL16tRA5W5bHt/OGjf/qf94lHjhbGDHS4qq6itlGS a9C7pCECFN3yNjGNy5ExSA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 40hg1161j6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 Jul 2024 20:22:01 +0000 (GMT) Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 46QJUlLG022353; Fri, 26 Jul 2024 20:22:00 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2101.outbound.protection.outlook.com [104.47.58.101]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 40h27sf01v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 Jul 2024 20:22:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u1ut5/c3ZGTB35fh+51ysTyI80OV4NLN/vaul8ylTX8vNtRaMS6bOLfjQVZBr4m2Uu1qNZ1Jpi8qKAHS2C1oIlAmaCVoTqJ9xB8lSEBynG4U77ksuTWIbGGcs3mwU5NQ37Ne2Dm3+CCPrrqSGJyhiXfbd3cwZg7J1WGZie8tArsGBIkdRufDq3IVBegCEU08Asm9CG0tEk5OYQam99MeLxy7qsb6rtNp/L84+Cxen6cm6BA+EkG/mmMcou51p4yXhQ4Nq2stWbeMfGCr6NoA3P+T0FzFUdc5lZjhtiqu7s8yhfQb0i6RElATikT3wKhIE37x8396GATXsNsb4Qg/Qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=0Y5iQq5AlfaXHODFJbhwAtwyWEbdQAvsaddyAJxEonM=; b=jwitmADPuNkLkW3x/2rMDfbRSAw1XbRRTJAv9dGtTnKLzJfBaoraXg5B2DvmnAOuaNPRDGFsYKn38KcRAnHgi84NznWsUz8AF2gLWQObA2j4yxvThRkmwwjKF7LZTvdZPbOslO9IKp5pwxp8Al8TwfUpldxZAlHp4d0lhQ59LgGi/E5DFtKFSF7u2bXJf2lRUCIt5c0UddJj7oXBS/i70RzieAqrM9YKY3ATBsRq3qDjTlMbrFayDw2EFFWrpoJtbftE3HnBVujVLMjArvi4F/ul0Uijdk7BTIV7Hnqy1+y/PYuDOl9ZF+dMh33kxvt6BDi/9cYmt2hgKb99klAnVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0Y5iQq5AlfaXHODFJbhwAtwyWEbdQAvsaddyAJxEonM=; b=L8nOAh90ItiNOAf5/k5UbUsWTPKam+pyqN4xRgYLMc7bGsy3vV1GeqlrHih6OgGlkNGOOqV8CBuPqskhJTU16nUW/vBJEjhJqjkByA8lwroUoRxguBLWtatzw5uggdT8675kQTQzQYO2MVCQJxWFcA+V50pfQXEM+l1NfWwRiAA= Received: from CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) by IA1PR10MB7485.namprd10.prod.outlook.com (2603:10b6:208:451::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7784.20; Fri, 26 Jul 2024 20:21:57 +0000 Received: from CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::25a9:32c2:a7b0:de9e]) by CO6PR10MB5409.namprd10.prod.outlook.com ([fe80::25a9:32c2:a7b0:de9e%4]) with mapi id 15.20.7784.020; Fri, 26 Jul 2024 20:21:57 +0000 From: Ankur Arora To: linux-pm@vger.kernel.org, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: catalin.marinas@arm.com, will@kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, pbonzini@redhat.com, wanpengli@tencent.com, vkuznets@redhat.com, rafael@kernel.org, daniel.lezcano@linaro.org, peterz@infradead.org, arnd@arndb.de, lenb@kernel.org, mark.rutland@arm.com, harisokn@amazon.com, mtosatti@redhat.com, sudeep.holla@arm.com, cl@gentwo.org, misono.tomohiro@fujitsu.com, joao.m.martins@oracle.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, ankur.a.arora@oracle.com Subject: [PATCH v6 09/10] arm64: support cpuidle-haltpoll Date: Fri, 26 Jul 2024 13:21:33 -0700 Message-Id: <20240726202134.627514-7-ankur.a.arora@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240726202134.627514-1-ankur.a.arora@oracle.com> References: <20240726201332.626395-1-ankur.a.arora@oracle.com> <20240726202134.627514-1-ankur.a.arora@oracle.com> X-ClientProxiedBy: MW4PR04CA0133.namprd04.prod.outlook.com (2603:10b6:303:84::18) To CO6PR10MB5409.namprd10.prod.outlook.com (2603:10b6:5:357::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO6PR10MB5409:EE_|IA1PR10MB7485:EE_ X-MS-Office365-Filtering-Correlation-Id: 6eca1415-992e-4c09-e687-08dcadb09908 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: VVedSUvFUOFwTfPZfK5YY9gvuZl6iOi9QcGwrvdkdni9OAgpUMNSH6WwFoAZREGL9i6X5R/Q1UUoNhYaxBv5y10uFlIPj5Dvr0mJrA8d89OuU5mpLbP33dWVW+AXYHPsLJkOQ1hH9tbB/ddrXyrYxWbGBBYPxeLY50pjUIgB4Cy7TxOO8PHMK83oMwd6zU11D89z57Z2jq4RZ5xVtx8TR96KyCVzCM4qL2hlT3hWMTmvuoKR4fRGhSVyeINLdr97pRIpGSYz9f8ObrLVJphxxZQrt32GSf/dh+1UWPrmDenMnb9tURc8kRI/S/JIquFEMEmHSQ9SVbuHz3K016Mbn2pKGkslnDtzKna2iSxQcz9Ay3C9u2v1GXOnCba/Jh9jllJFNxb9ZYXcyDh+nQPmKfr6SZjzQSk32aJzepZkxoAO2RrQ3bty41U3hrmAVkzW/BiKzyE6FcVFUSTByhBcL0EjiqJjUcbPhtioYyuAk8JsPfHZUdV8FdpKkUiGjvthj6Q24TSEijcnIRC8iPI9aY6VbhUeeGx+9XFR6HYRSsd24wC1TPDJ0NL8LFc9lL32cKYBRtNV3gq/E+ExnqoHBL27p8tKIHiAIDIsTdPrnyrUzdhtpLjdcLnnOkGlle9yZkerLRzXKTsk7r55sFVTzq9fQRo5iMG9MKmTjwiSrcqwvRip3yGlHHVGSQ7LCUr2JQjtg/dW2FY5RfsP2BajLX9DuCVAIUhB8cboMsI+bCdpqK+L8hDjsRJx8+Gi9fOZF0zIBSsdPBhJTwmlsbK9RU/9plqIvmR5jl3EJbh+dMQkGKBPybXEYIJ2EgWBVTZF7gfVb6pENG2KAtFWQnm+yqKMEg9yUCSDV7lRBdz7D/ftDbf5SpKJEC2ldpR4K0CDGgRWK/HNuIoAadaUIMn6XWERItpIjsW8ij6cMM5NdtBB/qIrOoGxhrVgiDyTCrijuFufHIu0k2h+Ru77iLKLlfsSW9i1TB47BYfDA/l4Ql2rDnTos9By+GdsqiYT4mHdAHKAacc6U9QkODBeC5JbJnuk7wudHu+f4U0p1ME8s9F/TxS1fnzJvRHfpJLpTQtTr2XfoF11pUYGxOJIm3KmYUwYMoq9XH9kyiGc9oc/EP+u/vxnpJt+sPmpqtmkktzAOFUaZIOdG+pSDHRhqKfOd6/mPDHFFPbpijjCkzfKBTjHDuqJvkmFQgUZjpgauuErkPTQO8CxQDSuY9vANLnwgDm+Q5omy6gnK9JDfmN2n81tusG0noyWfLvtJLR7nIBS9ffBe8zfifa0aOeVa//7jiXeFGZNX+v/S1sK3PdnvVyL4rBw1Mme4nprRwWLZti1mQ9j6A7Y/GShbL3V8yZ05g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR10MB5409.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4uGGjfQB+7jqx5B31Gu8n0WYjnEim4NsZjEiIlLyBGOreCX+zVu7d5CsECvJfw2fIOgEc/gkGilq6vpOFQKJXrnVae3vTGZy3BQrjhTcibQTsPCzwy8QMsIZ9KtpycCWM529E8VlRSHBiiLHxKBlGMP3bbFctA+zkCxjUSz0BowbzFIZE8EE97XRsy6+Fl6lFxKC/oceHfIEwqeqlz7XqlvI4+gJ9NZAWL5MVzvE2dnGzsC1mAP/QFwGv/JMi4d9T1jO4js4k6bcaElLQN8bouFdSeLHcASNLe9iLvRxv6ESSKy7E4pstyGQbVwH656TMCa6Hqynr3DdKsbIUfuiKj3eeuuNWbgYXgQXCCw0pAXGTPS+DAmXc4myt5Z2vDhBMpedBfSz4noHBIESiiszcr41849ydckn3yE0YZaeineOOzzBxdunYubiST5tcZ22gzMYurbeWKayE+EPNW9WGGp5kt0QczbrnQj1WXlPZ3lGHGnoR/VAE3PI0BjPecWgUFmOZiZsw/8NsSiJeEe5RsYT05dEdV4M1MRD46aC9A71lv/YRWjHs6wML4fUFjp4JvMrIVQDUMcRnbM49lDS5PbYz5PcATTWrDeN1pXvAmkd+lzHdLKkGtxT01vCS9XdistbQ6Tbdp6HQpRjx6ds268Km+BoZWPthbgl/6UguyiWOy3R6VzMUc8P7v5AyvMKplDmRhfBxgwoW3BeRMVUQGoTUJtsvtXkG+zTpAShfkSyluQTH4X7XgjgcGrW84aVHi65guD1Ti4SiHrfAx9UuIXvN7dN/8/H9Rf5VZm0laxsFZIEViKkruYfZWFYUDDeOgm6Ij1cB4svaXn6c+9+DtCPgvx0l7CXnBVhl7ya3lkDNdhJNqQZsAAm9FB4/NTFC8hZZdSLDlv7LwILdldHsHe42a5xKRB/PHe7njjXzDILNEWkkR3iSdfYybMslV1+HhBzv8YgAzraZ3iPjkuz97Dr68bPDYBK6qUOAMsb97hldh5RCt+r33U3653d3MyWO+z6TB+kVHKdkNIxNfC+83c466hJQzyuORgThbxTBHa8m4YSpZAfwHuu0ZIrUwvMvQeXlQpcakYPKROXTuj7LQGD+gsk2g0IA10P0FUcJwgZTDXQ0Oy83YWkM+1ig2OZlpNv4D0rQvAx12VbROZOlQ07uUWVlw5/MzKIWuxRVuDD6LdC25+oxqIw9ItyJVQTB7AuMJ7WDTbLzaWGtEtMiXnJGSJPNQ4hvWRc2HLrZqMGIHRcrFUfOl2PSxCa0JrhCrGOz4wVagqoXvVyRrR3jU+7Qs2v58PPpwmKfQbEbVF335aPqGnbfRea9SCQwFweSaMzPJnNZFmfgR3Uc6v8L1tM4nHcLkG8GIDwU0VmEJdLBYYWKvKgxd/kQQ1HyffmkhD+nI+l+GJxGWg82DAO49PeBaitWDyNzFypSo255sqetVr6QJEm1DTHjyCiA4glRjVaxzQaJLid0yaPz+tWWSaujKSGnuOXjO9wEEEhINoNbKAVkXQchcGyengnahlEOlXMaQVc7UNEx0nEb1mf4Zm85eQlAw0vSh9uKtqAr5mIZlJ8w90uW7I5sQeFs3wsE6WOnaQy0edMd8Y1WLCoDw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: CYOpyjInU6zrLpoZ/CaJOw/SEfxdYf5FwlzK9dy5kGjPLZP0tYV4azuiG7jBKSgRf8MxCgsPKSqggINHHYfrlPJVSe9bvSlSHIgrYghW5oB5e84gzHqljRAwcIFG4l3VQrSLJJbTTQbGBEswhzQBWH9HAuHwcSfb+I2ZBRrgkG88bmiF4gSr9bshmCfSwPWHoUOrTujGv7j7lrkxf/VtXqS2qJ6J7TBGppSQ4cjZyYTOWbm2FxeQjy+AVaU+ndZ+NsDQ8kStQa0GFFdJ5i57g/dSgq6f6p96M+AfhwvyLmM4KtWQ53NgVr//oARNgnMthh7EhFUki3Soapw5pjEjINlNilqpclQInLLcXmOJvAC9aFnbE9sxqTrhhhTneS93IijQFsfZuGqmvPR5YA+sHp3qKPAGECFvpvQX8jhpqWQ+HirlSzlv2JocUOjrxg4u3sVcVrXdD6ejSU1Iep1DZRtDv9NVwGH55KWIY7aaxnpnP2TtP1KHNaQxPCktF3AbV5/FkHFcawbW3G5TXTCUgeyRiXTaZ3FMKi2tQUNE7b9elrxvBFx6t7eyWKTmNTb/ndR2zZFXUa+nGcGgAcmXfN9EEe6pSUpqRm0umj8tq6o= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6eca1415-992e-4c09-e687-08dcadb09908 X-MS-Exchange-CrossTenant-AuthSource: CO6PR10MB5409.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jul 2024 20:21:57.4669 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bqCinqdqOxU3cAlWs5s2VaDOqVt5zVmyCqlqo5MQ1mMOYmMhKgw1xNMkXGgiCzkr8JlbDtYKrSGhlYrSiLqvDY3TQwvYUt1+RMklz94F+94= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7485 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-07-26_12,2024-07-26_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 phishscore=0 suspectscore=0 mlxlogscore=999 malwarescore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2407110000 definitions=main-2407260138 X-Proofpoint-ORIG-GUID: r3VMDMiEYHbrCo8naZXvtr6jsELcjEH7 X-Proofpoint-GUID: r3VMDMiEYHbrCo8naZXvtr6jsELcjEH7 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240726_132222_957159_EC97529C X-CRM114-Status: GOOD ( 19.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Add architectural support for cpuidle-haltpoll driver by defining arch_haltpoll_*(). Also define ARCH_CPUIDLE_HALTPOLL to allow cpuidle-haltpoll to be selected, and given that we have an optimized polling mechanism in smp_cond_load*(), select ARCH_HAS_OPTIMIZED_POLL. smp_cond_load*() are implemented via LDXR, WFE, with LDXR loading a memory region in exclusive state and the WFE waiting for any stores to it. In the edge case -- no CPU stores to the waited region and there's no interrupt -- the event-stream will provide the terminating condition ensuring we don't wait forever, but because the event-stream runs at a fixed frequency (configured at 10kHz) we might spend more time in the polling stage than specified by cpuidle_poll_time(). This would only happen in the last iteration, since overshooting the poll_limit means the governor moves out of the polling stage. Signed-off-by: Ankur Arora Tested-by: Haris Okanovic --- arch/arm64/Kconfig | 10 ++++++++++ arch/arm64/include/asm/cpuidle_haltpoll.h | 9 +++++++++ arch/arm64/kernel/cpuidle.c | 23 +++++++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 arch/arm64/include/asm/cpuidle_haltpoll.h diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 5d91259ee7b5..cf1c6681eb0a 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -35,6 +35,7 @@ config ARM64 select ARCH_HAS_MEMBARRIER_SYNC_CORE select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE + select ARCH_HAS_OPTIMIZED_POLL select ARCH_HAS_PTE_DEVMAP select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_HW_PTE_YOUNG @@ -2376,6 +2377,15 @@ config ARCH_HIBERNATION_HEADER config ARCH_SUSPEND_POSSIBLE def_bool y +config ARCH_CPUIDLE_HALTPOLL + bool "Enable selection of the cpuidle-haltpoll driver" + default n + help + cpuidle-haltpoll allows for adaptive polling based on + current load before entering the idle state. + + Some virtualized workloads benefit from using it. + endmenu # "Power management options" menu "CPU Power Management" diff --git a/arch/arm64/include/asm/cpuidle_haltpoll.h b/arch/arm64/include/asm/cpuidle_haltpoll.h new file mode 100644 index 000000000000..65f289407a6c --- /dev/null +++ b/arch/arm64/include/asm/cpuidle_haltpoll.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ARCH_HALTPOLL_H +#define _ARCH_HALTPOLL_H + +static inline void arch_haltpoll_enable(unsigned int cpu) { } +static inline void arch_haltpoll_disable(unsigned int cpu) { } + +bool arch_haltpoll_want(bool force); +#endif diff --git a/arch/arm64/kernel/cpuidle.c b/arch/arm64/kernel/cpuidle.c index f372295207fb..334df82a0eac 100644 --- a/arch/arm64/kernel/cpuidle.c +++ b/arch/arm64/kernel/cpuidle.c @@ -72,3 +72,26 @@ __cpuidle int acpi_processor_ffh_lpi_enter(struct acpi_lpi_state *lpi) lpi->index, state); } #endif + +#if IS_ENABLED(CONFIG_HALTPOLL_CPUIDLE) + +#include + +bool arch_haltpoll_want(bool force) +{ + /* + * Enabling haltpoll requires two things: + * + * - Event stream support to provide a terminating condition to the + * WFE in the poll loop. + * + * - KVM support for arch_haltpoll_enable(), arch_haltpoll_enable(). + * + * Given that the second is missing, allow haltpoll to only be force + * loaded. + */ + return (arch_timer_evtstrm_available() && false) || force; +} + +EXPORT_SYMBOL_GPL(arch_haltpoll_want); +#endif