[{"id":3674046,"web_url":"http://patchwork.ozlabs.org/comment/3674046/","msgid":"<20260407095955.GO2872@noisy.programming.kicks-ass.net>","list_archive_url":null,"date":"2026-04-07T09:59:55","subject":"Re: [patch 03/12] hrtimer: Use hrtimer_start_expires_user() for\n hrtimer sleepers","submitter":{"id":493,"url":"http://patchwork.ozlabs.org/api/people/493/","name":"Peter Zijlstra","email":"peterz@infradead.org"},"content":"On Tue, Apr 07, 2026 at 10:54:27AM +0200, Thomas Gleixner wrote:\n> Most hrtimer sleepers are user controlled and user space can hand arbitrary\n> expiry values in as long as they are valid timespecs. If the expiry value\n> is in the past then this requires a full loop through reprogramming the\n> clock event device, taking the hrtimer interrupt, waking the task and\n> reprogram again.\n> \n> Use hrtimer_start_expires_user() which avoids the full round trip by\n> checking the timer for expiry on enqueue.\n> \n> Signed-off-by: Thomas Gleixner <tglx@kernel.org>\n> Cc: Anna-Maria Behnsen <anna-maria@linutronix.de>\n> Cc: Frederic Weisbecker <frederic@kernel.org>\n\nAcked-by: Peter Zijlstra (Intel) <peterz@infradead.org>\n\n> ---\n>  kernel/time/hrtimer.c |    6 +++++-\n>  1 file changed, 5 insertions(+), 1 deletion(-)\n> \n> --- a/kernel/time/hrtimer.c\n> +++ b/kernel/time/hrtimer.c\n> @@ -2152,7 +2152,11 @@ void hrtimer_sleeper_start_expires(struc\n>  \tif (IS_ENABLED(CONFIG_PREEMPT_RT) && sl->timer.is_hard)\n>  \t\tmode |= HRTIMER_MODE_HARD;\n>  \n> -\thrtimer_start_expires(&sl->timer, mode);\n> +\t/* If already expired, clear the task pointer and set current state to running */\n> +\tif (!hrtimer_start_expires_user(&sl->timer, mode)) {\n> +\t\tsl->task = NULL;\n> +\t\t__set_current_state(TASK_RUNNING);\n> +\t}\n>  }\n>  EXPORT_SYMBOL_GPL(hrtimer_sleeper_start_expires);\n>  \n>","headers":{"Return-Path":"\n <netfilter-devel+bounces-11658-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","netfilter-devel@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256\n header.s=casper.20170209 header.b=wZeNWmtu;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=netfilter-devel+bounces-11658-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org\n header.b=\"wZeNWmtu\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=90.155.50.34","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=infradead.org","smtp.subspace.kernel.org;\n spf=none smtp.mailfrom=infradead.org"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqhX02vY1z1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 07 Apr 2026 20:00:16 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 7AA733016264\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  7 Apr 2026 10:00:03 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id A0DFD3A75B5;\n\tTue,  7 Apr 2026 10:00:01 +0000 (UTC)","from casper.infradead.org (casper.infradead.org [90.155.50.34])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id DFAE83A3817;\n\tTue,  7 Apr 2026 09:59:59 +0000 (UTC)","from 77-249-17-252.cable.dynamic.v4.ziggo.nl ([77.249.17.252]\n helo=noisy.programming.kicks-ass.net)\n\tby casper.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wA3Dv-00000003OmK-3mKc;\n\tTue, 07 Apr 2026 09:59:55 +0000","by noisy.programming.kicks-ass.net (Postfix, from userid 1000)\n\tid 786C830035C; Tue, 07 Apr 2026 11:59:55 +0200 (CEST)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775556001; cv=none;\n b=VM2D2RLtVUp14l2WT+u1zCNEC1zpp4OK4Zin0Wd/JR8fpVZOV/N+9fvYyQ+81kOhkJ/6ZS7CqW9O94CEhOKK7CTuWSFHxczd65nWpjQiwffrE/SRvIlrVTsnN1xyYOCFEQ1b61SBXPxAlWywTqodJNgkmm1teaSntroJCP2SaTw=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775556001; c=relaxed/simple;\n\tbh=3NdvxjEP2tw3cILkE1W+iAvam5QB+6V4vghaDnuuv9I=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=fCQyB5uhWY2ghi/Y4KL2YCZgbycZ7Eh348XEPsO+xTzymfp6WdClr5IWYud3mr8H5dEvMgBsu+/TI1LbY9ZjxL3f9s7Zk76xA7uRfPew10aX4S9uqK4jzRmvno9vLvvtZNyN2Z8OVCHN3goopea+yOVk8BtdZsGSEwb5cgTajUc=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=infradead.org;\n spf=none smtp.mailfrom=infradead.org;\n dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org\n header.b=wZeNWmtu; arc=none smtp.client-ip=90.155.50.34","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version:\n\tReferences:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:\n\tContent-Transfer-Encoding:Content-ID:Content-Description;\n\tbh=SBqiX9dwutRSoxZynSS6034CtvIP8my3GlNM6Fn1uOE=; b=wZeNWmtuROtU65+wwVqZ0FC6Lu\n\ta63CxLEutuH+xWOBzloX+ZCcawzFnqMVTUVMkCrr8pp0FuRMmXJtUVuUmc+yIVOajP1H4NNDkZ9Lq\n\tXlHrUlLAXfRJ8kQzA5hN0u3DEuT72627noPDJXvEl2qx4X/vOpBp8L6ROxsWloRXUA8VeiipIrtSg\n\t2WrkgaEI45oHXO4Zb/pwfMwpUMpjrOhBwCKIiC3Wxs+rMHPxEIN3oafgKIEGAm2AiCTF5Tke2P3+1\n\tlfaQaJdlQvkqUoSZnG0qjOuBMFZ/F6lms48dJ812zMLZWKh10z6E4jwLuStQX+kSHxT6iVPYFpH9T\n\tMy5B0nKg==;","Date":"Tue, 7 Apr 2026 11:59:55 +0200","From":"Peter Zijlstra <peterz@infradead.org>","To":"Thomas Gleixner <tglx@kernel.org>","Cc":"LKML <linux-kernel@vger.kernel.org>,\n\tAnna-Maria Behnsen <anna-maria@linutronix.de>,\n\tFrederic Weisbecker <frederic@kernel.org>,\n\tCalvin Owens <calvin@wbinvd.org>, Ingo Molnar <mingo@kernel.org>,\n\tJohn Stultz <jstultz@google.com>, Stephen Boyd <sboyd@kernel.org>,\n\tAlexander Viro <viro@zeniv.linux.org.uk>,\n\tChristian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,\n\tlinux-fsdevel@vger.kernel.org, Sebastian Reichel <sre@kernel.org>,\n\tlinux-pm@vger.kernel.org, Pablo Neira Ayuso <pablo@netfilter.org>,\n\tFlorian Westphal <fw@strlen.de>, Phil Sutter <phil@nwl.cc>,\n\tnetfilter-devel@vger.kernel.org, coreteam@netfilter.org","Subject":"Re: [patch 03/12] hrtimer: Use hrtimer_start_expires_user() for\n hrtimer sleepers","Message-ID":"<20260407095955.GO2872@noisy.programming.kicks-ass.net>","References":"<20260407083219.478203185@kernel.org>\n <20260407083247.696142908@kernel.org>","Precedence":"bulk","X-Mailing-List":"netfilter-devel@vger.kernel.org","List-Id":"<netfilter-devel.vger.kernel.org>","List-Subscribe":"<mailto:netfilter-devel+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:netfilter-devel+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260407083247.696142908@kernel.org>"}}]