From patchwork Tue Jul 11 05:54:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kazuki Hashimoto X-Patchwork-Id: 118278 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp274539vqm; Mon, 10 Jul 2023 23:19:04 -0700 (PDT) X-Google-Smtp-Source: APBJJlFKAk7gbqLhtEM8AwRLKzI6f0Z17A+GyndrRNY/Ohfw5ixbWZfPtoU3k44NFEPr3io6cHcH X-Received: by 2002:a17:907:587:b0:988:e365:6231 with SMTP id vw7-20020a170907058700b00988e3656231mr12131977ejb.41.1689056343969; Mon, 10 Jul 2023 23:19:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689056343; cv=none; d=google.com; s=arc-20160816; b=YkpNYlk7tzBmK7t1tui1mcy+6JN5SnebJDSuiRcPflVon9+6JWL4/WtD7XLpHblApI JecPJZzcqVghy67ofKJSEJpcVA0MhbP3fRPA6+zzZEbiTePbN+/SiE+dGD3kIMFZNpqv YGlw2B58dT4THyT7JM4jCxsLrdf4wCGPmnDOmb/s4MKW0gnTw5sESNkyuV6Y00bJC7tD zHx9KlyH4+1aV2x2yefdhvY+CJfnHNquVc7O/ROgQV0B/Sw4d73BmOLO4uzu967750Jw FSQOcwBNmnFnNme0oZRQZycLXAV86WfYYTe53g7VIrcVEOenqkuc0FZoOez6oncBwZMr kxBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=pATxnRjw1kvbkvJOwnrnm5lR+PWjwDmKzZaehDZNMZU=; fh=IKlDn2abjmtvqJm9Uotgu9m7s6SHFoJLg0z2JSHIbx8=; b=0XsQgXlw3Mu0/cxHxvqzyLgFK21sEtvqx6WAZF8bcXv0rwrFiLv3aECw/6KWOvQkI+ H82xvauW1CXiw/OKddjvxmIph117Fl/0swvw/zHC7TDnAvmGmoFzUiigQNokgFJf56+E 5awwrRCTK09mQbnRmDCpusKUBgkRWR7eaA4Z11kEmjLignARCrtQ81cbt2j5zGJ2pIeA +XlpQfbHcMQ9obyOSnLUO8XtSYTHgj7RVfSwHqPOsOzDytwaPBILUbi06Tf+GIeM3ouY C6CbLJH/53z0DXn9C5Fxr0TKpTmKyHwZS8oxR+zoHEs0aeOkHLewz7ujwj+ZBu4GssWw JjQQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=J2YdBxXT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g10-20020a1709067c4a00b0098e07395330si1294058ejp.746.2023.07.10.23.18.40; Mon, 10 Jul 2023 23:19:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=J2YdBxXT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230255AbjGKFyg (ORCPT + 99 others); Tue, 11 Jul 2023 01:54:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229585AbjGKFya (ORCPT ); Tue, 11 Jul 2023 01:54:30 -0400 Received: from mail-pg1-x534.google.com (mail-pg1-x534.google.com [IPv6:2607:f8b0:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9C0E195; Mon, 10 Jul 2023 22:54:29 -0700 (PDT) Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-55bac17b442so4041832a12.3; Mon, 10 Jul 2023 22:54:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689054869; x=1691646869; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=pATxnRjw1kvbkvJOwnrnm5lR+PWjwDmKzZaehDZNMZU=; b=J2YdBxXTObGU48Mlg1QDs9/IFFLJTaAdZHwxFx67EdkgpuaTy9VzUan8q62OndaNBK krWqsHjhli9TJv4piybN/VGrEhfIg88Reqn1rorGP/xkRN3qVjSUuRs5/xNKkWIZn3dj D4+Xb1BnGbAWjxZAs6Qa9+wZpaSokuxonMC68/0c6MjqrBfq7MFXaWs9DKpBC3j3AlHH llHkjZtUkqehSGVHQup4Q4zmtrb/dBblnV28R/NMSZ19RbK13D74xVnHReSvwezEiGmt 5mCFawl60m7HbTqkUeslWnHXAyeYUEqkK4FrxjbQuwBwORM1sExFmXoNQ0lQ3TbrjVfS mqcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689054869; x=1691646869; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pATxnRjw1kvbkvJOwnrnm5lR+PWjwDmKzZaehDZNMZU=; b=dhA0sz41J8QCCnuXiC/brncggNx6xXcBzsvxkCsZT9p4wrqgErnYsiWMJ+t6MerlkR pRAudO/sjDceXmaJMKsHGVKmBj3Co+9XwwvnGspHkdw6W4wp1DGZbfLyRYyo12k51iBx cuGykEssN2Pr0ZEyify2GitZ9rm/n0gGsEpOoRQ/Gvlbfn4D2qGI/kC1VBfb02v8oowx zZzzLSCDoSFI6jWEHICpstJPrF1UsZ4HlQ16BpYfe6tbPaFsknHZOt5OaIfdDRZpSL0t qdeVtp8ZneBd/xzyLHmPxRiiLSkxGVLk5gicathujKBERRd1jhKptiH7KOsNwsXDH7KH mdLA== X-Gm-Message-State: ABy/qLaWeMGxgNT+6VYntoF4N23C4PfR6fP1sLihK+2a7uYp/OJD9pmp qNmNQsPXJJma98l/HLn1c+sRmrjjVm8= X-Received: by 2002:a05:6a20:1612:b0:125:87b1:a30d with SMTP id l18-20020a056a20161200b0012587b1a30dmr19359235pzj.1.1689054869144; Mon, 10 Jul 2023 22:54:29 -0700 (PDT) Received: from j293.lan ([2400:4051:ea3:5910:5676:1078:8b85:c18f]) by smtp.gmail.com with ESMTPSA id bd5-20020a170902830500b001b8761c739csm878053plb.271.2023.07.10.22.54.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jul 2023 22:54:28 -0700 (PDT) From: Kazuki Hashimoto Date: Tue, 11 Jul 2023 14:54:21 +0900 Subject: [PATCH 1/2] cpuidle: Don't pass any values to cpuidle_not_available MIME-Version: 1.0 Message-Id: <20230711-cpuidle-v1-1-f391224b3140@gmail.com> References: <20230711-cpuidle-v1-0-f391224b3140@gmail.com> In-Reply-To: <20230711-cpuidle-v1-0-f391224b3140@gmail.com> To: "Rafael J. Wysocki" , Daniel Lezcano , Ingo Molnar , Peter Zijlstra , Len Brown , Pavel Machek Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, "Rafael J. Wysocki" , Hector Martin , Kazuki Hashimoto X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689054863; l=2377; i=kazukih0205@gmail.com; s=20230709; h=from:subject:message-id; bh=KEMzFSoNpLPvIqVf3L5RPIfQHsabNi9qRgonhXVECcU=; b=YeQaYzdMq0SvFc5ST91wRuJNDDD5zIEm+g2+iXejUAUavkAROyVFrnoHun4n0BUc5Dj4GUPAp 6alWWHJszE5D+XmnFhkpAv+C20AeVj21LgIN352NvjB8S8bhv9rfMvd X-Developer-Key: i=kazukih0205@gmail.com; a=ed25519; pk=r8m5wVK5lljix+hYnqXRT/GsxNkTADqXGmhdl7kykYY= X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771103944550873744 X-GMAIL-MSGID: 1771103944550873744 There's no reason to pass any values to cpuidle_not_available() as the function works standalone. Since we're planning to use the function in other places, make it so to avoid code duplication. Signed-off-by: Kazuki Hashimoto --- drivers/cpuidle/cpuidle.c | 6 ++++-- include/linux/cpuidle.h | 6 ++---- kernel/sched/idle.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 737a026ef58a..c9ba51e0fa38 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -49,9 +49,11 @@ void disable_cpuidle(void) off = 1; } -bool cpuidle_not_available(struct cpuidle_driver *drv, - struct cpuidle_device *dev) +bool cpuidle_not_available(void) { + struct cpuidle_device *dev = cpuidle_get_device(); + struct cpuidle_driver *drv = cpuidle_get_cpu_driver(dev); + return off || !initialized || !drv || !dev || !dev->enabled; } diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 3183aeb7f5b4..a0ce9b6d16ce 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h @@ -169,8 +169,7 @@ struct cpuidle_driver { #ifdef CONFIG_CPU_IDLE extern void disable_cpuidle(void); -extern bool cpuidle_not_available(struct cpuidle_driver *drv, - struct cpuidle_device *dev); +extern bool cpuidle_not_available(void); extern int cpuidle_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, @@ -204,8 +203,7 @@ static inline struct cpuidle_device *cpuidle_get_device(void) {return __this_cpu_read(cpuidle_devices); } #else static inline void disable_cpuidle(void) { } -static inline bool cpuidle_not_available(struct cpuidle_driver *drv, - struct cpuidle_device *dev) +static inline bool cpuidle_not_available(void) {return true; } static inline int cpuidle_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, bool *stop_tick) diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 342f58a329f5..865674d2e420 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -164,7 +164,7 @@ static void cpuidle_idle_call(void) * step to the grace period */ - if (cpuidle_not_available(drv, dev)) { + if (cpuidle_not_available()) { tick_nohz_idle_stop_tick(); default_idle_call(); From patchwork Tue Jul 11 05:54:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kazuki Hashimoto X-Patchwork-Id: 118277 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp274451vqm; Mon, 10 Jul 2023 23:18:48 -0700 (PDT) X-Google-Smtp-Source: APBJJlGcRxS+nxbkOllaWb4YmykgaxOrGQe+Li88A9epSvdKpOcOEo2LgvmUYAgbJwXjyOgo7Tay X-Received: by 2002:a2e:2405:0:b0:2b6:ce35:2e9e with SMTP id k5-20020a2e2405000000b002b6ce352e9emr11803329ljk.44.1689056327810; Mon, 10 Jul 2023 23:18:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689056327; cv=none; d=google.com; s=arc-20160816; b=0bR5+Er4QENMS+Kwx7K++k097GnbnDj6iGFu1yHXvXEfEvlK+SCJ4qL4uGkCFsuqgw F4K0U1f17AYyKEV7qT6FnZCURMibQPG1IXcuf2uQPya70ojYXTZkqclk6LaATadxK2w6 1Rs/7MwKbq2ONGpHb8LYXOhyTli3OOuujoCWOrmS6Un8zUYVGNo3jHnfUytaTXg6Kc05 U8sE1TdsmDj3WxsEW/zSJcyDzqO/X52Ie6VsiZYVPBRVYlkzWC5dFIfcenhyL5qZoPBj c0WCtfNzvsoYcyx8WZP1HNdZdlAFCpFZ/W9xK1q9jfTKJayOMbeqACLaHYmwa7LUiK+i ypww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=nk4niLNV6K0/PBl1ZDWCwqAEI3u1h+Q4tTNLOBHoMWM=; fh=IKlDn2abjmtvqJm9Uotgu9m7s6SHFoJLg0z2JSHIbx8=; b=Ij+HpBfITPGanAC6m9D75f0890OVlgB/XT5urLAairTh3aEgnPVcbvFxJsa6HtMObB 9EQTzYbPqWCfYyDuvgBKjtCxd7MZBfzMdbgZhGhPFg5LTvYSjhrGxWdzUo3yS+klYJUY VAZcot44S3Wc9uh990Cb4vfxcuk6X6wPW7Ep7UzXeyB7AS+7iUJDdKj2qCkkK3w8+E4S 7aff5nZxsi1eHjCwTYh10BgiI0r5/aT2rTbx1Mn4JoGllsdc9J/yDS3S+j9l6a26cae+ T5sSrsehSoGP8aKQ5oWOU5bpe7ZP2fBQgRQpwmhGBebe3ZSgrp5EnaSvCjghtDnMmhMI GVqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=kWPuKebr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a4-20020a17090680c400b00992fef5cff9si1122118ejx.497.2023.07.10.23.18.23; Mon, 10 Jul 2023 23:18:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=kWPuKebr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230455AbjGKFyj (ORCPT + 99 others); Tue, 11 Jul 2023 01:54:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230387AbjGKFyf (ORCPT ); Tue, 11 Jul 2023 01:54:35 -0400 Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 92104E40; Mon, 10 Jul 2023 22:54:32 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-666683eb028so2804971b3a.0; Mon, 10 Jul 2023 22:54:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689054872; x=1691646872; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=nk4niLNV6K0/PBl1ZDWCwqAEI3u1h+Q4tTNLOBHoMWM=; b=kWPuKebr23fLuFvrI3MW4ogXI6dr/IRwsu/v40oN4sHO1B15ZKtejInkzcOS8BLsMS fhZIJ76/5TOOSuk+vi2y0XQIsK2m8hi7MDkVqr3jbkgYbBsmLRhJoC5X63gijFpNGFbN f01mVUks/HfHprmN16QR5elSbGKmQpGfpIjzzGSWHStCrRl7De6V8oOmqYXmvB2yLpuR i1ARofJ/hSDSj5BNou5oNgOAkTQMPze7ru4UQn1L62Eu6HpnI1sCqkW+bg73KgAhDCkZ 4aL9MaFAbhZ1YsUsIbSdsUlKFWLvPjAbE8h/FIc46Xx93onlyxoEVynaDyEIeugwUgMU pm3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689054872; x=1691646872; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nk4niLNV6K0/PBl1ZDWCwqAEI3u1h+Q4tTNLOBHoMWM=; b=FAWYkeRkLx6h3aNIYKuf1cPaU2ezNP5AuapUvpPM0g0Echoj1c9YmCXaVEdkQAB1Lx DitnRqqPPsPoLlVob9c6ljDMLFDdS0wu84nQglQnuL0aTRoAI5KBkeDj+FEQbxxEqZy5 iBRgtmo/NSfL1unfK0/48k6Ih2ItjLioKuIa+AUSfpERbs0iopL313uffRWPD+UjbCbO 3dreCLm/wZ6jHvyUKOd9RjR0d5XHCPaIcZVROrDXuY2t7sMWZFPZ4JrzpIkl1rlIKAmE krd90RdDoyBQZA6rgjQ9vLl85LW/8NU0hFhYkt4g0QWoQggxaVpC9LsBpOXf+dvaiBai xTfA== X-Gm-Message-State: ABy/qLYsS05a2+c/jWd++ovBRKzjSwCxV95fE5BsUiKgkGO+eYiqwtNy NEmAQJXAYcGTX4mza5b4bNDqr2quuCw= X-Received: by 2002:a05:6a21:6811:b0:131:1bbd:dc50 with SMTP id wr17-20020a056a21681100b001311bbddc50mr6236730pzb.6.1689054872037; Mon, 10 Jul 2023 22:54:32 -0700 (PDT) Received: from j293.lan ([2400:4051:ea3:5910:5676:1078:8b85:c18f]) by smtp.gmail.com with ESMTPSA id bd5-20020a170902830500b001b8761c739csm878053plb.271.2023.07.10.22.54.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jul 2023 22:54:31 -0700 (PDT) From: Kazuki Hashimoto Date: Tue, 11 Jul 2023 14:54:22 +0900 Subject: [PATCH 2/2] PM: s2idle: Fully prevent the system from entering s2idle when cpuidle isn't supported MIME-Version: 1.0 Message-Id: <20230711-cpuidle-v1-2-f391224b3140@gmail.com> References: <20230711-cpuidle-v1-0-f391224b3140@gmail.com> In-Reply-To: <20230711-cpuidle-v1-0-f391224b3140@gmail.com> To: "Rafael J. Wysocki" , Daniel Lezcano , Ingo Molnar , Peter Zijlstra , Len Brown , Pavel Machek Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, "Rafael J. Wysocki" , Hector Martin , Kazuki Hashimoto X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689054863; l=2849; i=kazukih0205@gmail.com; s=20230709; h=from:subject:message-id; bh=M0tNL3ccyxkfW5oli7KYKognuqR974/5Z/sS00RLTpY=; b=+vtnn6cnlTZTyDy/DLEZFml0G2vgNaqFHTs6ssNRATlNAiax2uJaMsh5C/xmGlJkeKHtBogaV dZBlmMupN8cAw3FQS8Ek1VDKZkTlEKdBC/p9vYQA1hluzM5WyJFYx2t X-Developer-Key: i=kazukih0205@gmail.com; a=ed25519; pk=r8m5wVK5lljix+hYnqXRT/GsxNkTADqXGmhdl7kykYY= X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771103927895797396 X-GMAIL-MSGID: 1771103927895797396 In order for systems to properly enter s2idle, we need functions both in the idle subsystem (such as call_cpuidle_s2idle()) and the suspend subsystem to be executed. s2idle got blocked in the idle subsystem on platforms without cpuidle after commit ef2b22ac540c ("cpuidle / sleep: Use broadcast timer for states that stop local timer"). However, the suspend subsystem doesn't have this, which can cause the suspend subsystem to begin entering s2idle behind the idle subsystem's back, which in turn can cause the system to enter s2idle even though all the functions necessary for s2idle hasn't been executed, breaking the system (e.g. ClOCK_MONOTONIC keeps ticking during suspend even though it's not supposed to). Prevent the system from entering s2idle when cpuidle isn't supported in the suspend subsystem as well. Fixes: ef2b22ac540c ("cpuidle / sleep: Use broadcast timer for states that stop local timer") Signed-off-by: Kazuki Hashimoto --- kernel/power/main.c | 12 +++++++++--- kernel/power/suspend.c | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/kernel/power/main.c b/kernel/power/main.c index f6425ae3e8b0..82fedcf6032d 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c @@ -174,6 +174,8 @@ static ssize_t mem_sleep_show(struct kobject *kobj, struct kobj_attribute *attr, for (i = PM_SUSPEND_MIN; i < PM_SUSPEND_MAX; i++) { if (i >= PM_SUSPEND_MEM && cxl_mem_active()) continue; + if (i == PM_SUSPEND_TO_IDLE && cpuidle_not_available()) + continue; if (mem_sleep_states[i]) { const char *label = mem_sleep_states[i]; @@ -226,11 +228,15 @@ static ssize_t mem_sleep_store(struct kobject *kobj, struct kobj_attribute *attr } state = decode_suspend_state(buf, n); - if (state < PM_SUSPEND_MAX && state > PM_SUSPEND_ON) + if (state == PM_SUSPEND_TO_IDLE && cpuidle_not_available()) + goto err; + if (state < PM_SUSPEND_MAX && state > PM_SUSPEND_ON) { mem_sleep_current = state; - else - error = -EINVAL; + goto out; + } + err: + error = -EINVAL; out: pm_autosleep_unlock(); return error ? error : n; diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index fa3bf161d13f..02cc76c9109e 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -556,6 +556,11 @@ static int enter_state(suspend_state_t state) trace_suspend_resume(TPS("suspend_enter"), state, true); if (state == PM_SUSPEND_TO_IDLE) { + if (cpuidle_not_available()) { + pr_warn("s2idle is unsupported when cpuidle is unavailable"); + return -EINVAL; + } + #ifdef CONFIG_PM_DEBUG if (pm_test_level != TEST_NONE && pm_test_level <= TEST_CPUS) { pr_warn("Unsupported test mode for suspend to idle, please choose none/freezer/devices/platform.\n");