From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5EE833A4F2A for ; Tue, 10 Mar 2026 03:57:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773115076; cv=none; b=aYFpZwiN+op5OVZ/7mcdXJ+MYVLAoVoCODAj8U43qOtU/UUcBL9jFrpZIxT2ON/Q1bVSYwluBgvsACZPfsglSv6nYjmvC3XnRMYl2ZpSuyKVQ1kokB/J5ch1pDyHyafNwOG8zvMVwcmKCeMf2FTT+VoJKKmSgPcffIvp56GIRVM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773115076; c=relaxed/simple; bh=I++9CabtjnzNdZic6iU2EuZTX0Bdpq5xE7epVmOiHuo=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=us3BXNxlrxRLSczfakuwDA/uH0BeoVQs3wsKnE/DeB6ny6htv638A8PEaw75RGxN7detQ4o+0agfzaVNa8TDmf7Miviz6TifY8HSYO/oTUK/g0BbsOmTaISxSLt7nt6tzBQYPngxk2EgLSPFHVeap8xh0GO4X6v2wAcn4pwM9dA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=layalina.io; spf=pass smtp.mailfrom=layalina.io; dkim=pass (2048-bit key) header.d=layalina-io.20230601.gappssmtp.com header.i=@layalina-io.20230601.gappssmtp.com header.b=Wj4EG51j; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=layalina.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=layalina.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=layalina-io.20230601.gappssmtp.com header.i=@layalina-io.20230601.gappssmtp.com header.b="Wj4EG51j" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4853aec185aso15061635e9.1 for ; Mon, 09 Mar 2026 20:57:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=layalina-io.20230601.gappssmtp.com; s=20230601; t=1773115073; x=1773719873; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=L2OgqkD+rDLKy88k7oX0bX18Yp0IhShgRiQX3DdPw70=; b=Wj4EG51jfhQzpsm8t2T+FqRWqrxWlxexMml9K8cm6mJcGNIO9Epu0jwY0F3oAFyYPv dhi8wFBhK+ff39Axx0zcmW9IGeneTkWBXA8x4Ba+z83bGzNcD1YJ3wMf9TBTudTqgHoG wy1NXbHhzhNXZSwrb+AwH60zHnILa1uG/8tjT9bNK3azNs4kmag1gmeasbGmp3LaCFv9 +MNerw78qz3jQnTiPCxkdoBxqdv82PYmHVOBfMtgXRRBH2py62nkgXl1njQ7CHiBMz1M iIw034LdLUZs97clISOnXJ+xyC6iOTF9qKDECjCa1Hmm7DlDFoJgk0IFMt7HXZqAbxce I3YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773115073; x=1773719873; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=L2OgqkD+rDLKy88k7oX0bX18Yp0IhShgRiQX3DdPw70=; b=vy5X7/g4gfD4MLCinaJQYZDhLqwfKngZbcWgzhexBAn+X63fLmx4YNDD4KZo0QZb17 L554DvivJ/xXaE7TX9vDOtAK9vhlbi0MpuRfxUYc3lMLQrAODAsn9dFCnzzjkLzoBDll 5r1MlKttIij+u9OenACaCN5JiLNePHiy8VBxAfEwQOM7wSNgrfn/5Cy1kDFsmj4EKyAl ZelJN8LE8fSCkZU+Dp+YtNPAXMLnrWfO9XxCoOE3jPhc+klugT2lfjd81ErDZLG91qpF KWFpPG66z3/VehWdNuWsBBZcWyGNDm37PjQJXNcXAAncXADKilYcpids0kzLJyDakelF DW4A== X-Forwarded-Encrypted: i=1; AJvYcCVK11dom9u5Y2XwEoKsYWRTpEim0RWzIUX/Movz5vN+xXNe0fBO4wq+0lrHkx6xQ2is5m7i7hre+25VLdY=@vger.kernel.org X-Gm-Message-State: AOJu0YyE/FqP2Y7OUGCnVR9hp146j4e10o5H10vG5KKbn8uEuOq9hf65 quyXBrsuPvFe7U/Tg7cRaz9EPtS0TJxN7iEcADO5M41H49uyTd9l/CN0J5y5oVFtkLn76naAeby Ku+lr X-Gm-Gg: ATEYQzw9klwSQSi3paLrtQ+hUJEgidhJqEJiVdv6HVFtNAa/SNzkuRkhb/lTrw6E6+a sJC5DzY8s0LhFdnjHtlssp6A71qK0Rjl67McmFya4WJfYzxGB5k6v1/rFscL26xgvSEK9l6UcKG c/IiQWPIei4C95sZb7cxwa3i+YhOxpkDzN1fXQMqCmZDZBWrgPFkBBgBCIE+9qubyW3U5s+dh/S f/XCdwQ395F60p0ArAQbnA9K/Seeu/3WwetbkfYOqrfb2IDCNCCqdHxn09Jq6LHoEm+DZvlbFBW Zv138gHCgEDRT2QPxEBgOs1X9GwzfAGac6DajZhC7L5Kp62LuYxBeO+xFlfziC71eQBVIfKn5TG TBAtrs5X3EP2eU+ghzF+Nv4LigmREg3OUM7rW/EEzcrpn1n56WaiahGCM9AuqOm+rZBS86glFn4 jehiHyFhrp9bhn3YmhUg== X-Received: by 2002:a05:600c:64c6:b0:485:445a:87d1 with SMTP id 5b1f17b1804b1-485445a899bmr8904845e9.8.1773115072357; Mon, 09 Mar 2026 20:57:52 -0700 (PDT) Received: from airbuntu ([194.36.110.147]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48531818b5asm112595685e9.3.2026.03.09.20.57.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2026 20:57:52 -0700 (PDT) Date: Tue, 10 Mar 2026 03:57:48 +0000 From: Qais Yousef To: "Rafael J. Wysocki" Cc: Christian Loehle , Linux PM , Thomas Gleixner , LKML , Peter Zijlstra , Frederic Weisbecker , Aboorva Devarajan Subject: Re: [PATCH v1] sched: idle: Make skipping governor callbacks more consistent Message-ID: <20260310035748.oum5mlscwh3tml7v@airbuntu> References: <20260301191959.406218221@kernel.org> <20260304030306.uk5c63xw4oqvjffb@airbuntu> <12857700.O9o76ZdvQC@rafael.j.wysocki> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On 03/09/26 13:26, Rafael J. Wysocki wrote: > On Mon, Mar 9, 2026 at 10:13 AM Christian Loehle > wrote: > > > > On 3/7/26 16:12, Rafael J. Wysocki wrote: > > > From: Rafael J. Wysocki > > > > > > If the cpuidle governor .select() callback is skipped because there > > > is only one idle state in the cpuidle driver, the .reflect() callback > > > should be skipped as well, at least for consistency (if not for > > > correctness), so do it. > > > > > > Fixes: e5c9ffc6ae1b ("cpuidle: Skip governor when only one idle state is available") > > > Signed-off-by: Rafael J. Wysocki > > > --- > > > drivers/cpuidle/cpuidle.c | 10 ---------- > > > kernel/sched/idle.c | 11 ++++++++++- > > > 2 files changed, 10 insertions(+), 11 deletions(-) > > > > > > --- a/drivers/cpuidle/cpuidle.c > > > +++ b/drivers/cpuidle/cpuidle.c > > > @@ -359,16 +359,6 @@ noinstr int cpuidle_enter_state(struct c > > > int cpuidle_select(struct cpuidle_driver *drv, struct cpuidle_device *dev, > > > bool *stop_tick) > > > { > > > - /* > > > - * If there is only a single idle state (or none), there is nothing > > > - * meaningful for the governor to choose. Skip the governor and > > > - * always use state 0 with the tick running. > > > - */ > > > - if (drv->state_count <= 1) { > > > - *stop_tick = false; > > > - return 0; > > > - } > > > - > > > return cpuidle_curr_governor->select(drv, dev, stop_tick); > > > } > > > > > > --- a/kernel/sched/idle.c > > > +++ b/kernel/sched/idle.c > > > @@ -221,7 +221,7 @@ static void cpuidle_idle_call(void) > > > > > > next_state = cpuidle_find_deepest_state(drv, dev, max_latency_ns); > > > call_cpuidle(drv, dev, next_state); > > > - } else { > > > + } else if (drv->state_count > 1) { > > > bool stop_tick = true; > > > > > > /* > > > @@ -239,6 +239,15 @@ static void cpuidle_idle_call(void) > > > * Give the governor an opportunity to reflect on the outcome > > > */ > > > cpuidle_reflect(dev, entered_state); > > > + } else { > > > + tick_nohz_idle_retain_tick(); > > > + > > > + /* > > > + * If there is only a single idle state (or none), there is > > > + * nothing meaningful for the governor to choose. Skip the > > > + * governor and always use state 0. > > > + */ > > > + call_cpuidle(drv, dev, 0); > > > } > > > > > > exit_idle: > > > > > > > > > > > > > Duh, good catch. > > Reviewed-by: Christian Loehle > > OK, so any objections or concerns from anyone? > > I'm about to queue this up for the next -rc. LGTM too