From patchwork Tue Oct 10 11:59:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 150697 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp139515vqb; Tue, 10 Oct 2023 04:59:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFfXOct9+g8X0JeZTqhSaDGQGWWk/jYkQMTAvah7zQpieSIfWpEN59r71GPMC38A5bgJnVP X-Received: by 2002:a05:6808:1310:b0:3a9:e8e2:5799 with SMTP id y16-20020a056808131000b003a9e8e25799mr23263466oiv.14.1696939195873; Tue, 10 Oct 2023 04:59:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696939195; cv=none; d=google.com; s=arc-20160816; b=Ffyaul1JZEpUhGXRG1pjk6ekG/kS2Wqt287GMf+ck6tS0YTJZ3Ga8g7CD36nSYEJC/ a8kphNdzbWkleupRSEZm7EerG/5Ch6jOyAydA7UA7cB/XsmKHu10S4P/vkEkFjSg3jAk wpSxHYfzNP3oRFVlK7e8HTPRPBOVw/ZJ//ULZLKqC2ELn3M5OWIJZ9sdnFjkPZWeEPSt CLn7b83Gyhnl2mJSpf3Gx+EwsiGjvD6Uo9V9l20QcLAOvq750aM6YT0X8MPOSgCqrZYK AuiXgoCcESevQImRGnMtSc5+TP4GUzaMleZpjvpjIgMJUqZIgz02F9amZ7tMH9o5XTNn C64g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=6TeAGL6VrWMnxFu7U2uMUc1Ii/rZEg7l6x6B/cCde4U=; fh=9o1vzmbQvXEiiOZAoGEKGHmVR4Ieb6r+octdNZgYFWA=; b=PHRTgT11AO67kf7lknKDTEC29fvFmkvfjAZCCLbFfJEIJWeEIZDfXVhXa/YBvJ8mN5 Xe0QTEQ2AxACJ31CdOIMxoGYA08T9ZI7B+5y8By8Pch7xjCDpnpt4yXSsl5Z4eqJW6bA ANkltS73MhfkLH8hHVbEPaa0RYOtiGtvjY85D42Oo9k0Ior6ldTkgyGlakVFVCpdSXa+ AboSJN/2O5k+G2Ojv0NVg5vsgDbQWSAhnsDWxHzUO5t1kXYiCiCVzBtmJzMuzuBN/1uq QIOXpId2sgDGEeimAIMSmZkh/54KAVglplSEWtXMQZLxTBC5Lf6KgvVuLHyL5fbRMjHb vu8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=N10vcVSH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id m2-20020a633f02000000b0059d45bf6907si484330pga.551.2023.10.10.04.59.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 04:59:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=N10vcVSH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 78543815A1EA; Tue, 10 Oct 2023 04:59:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231567AbjJJL7v (ORCPT + 20 others); Tue, 10 Oct 2023 07:59:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231607AbjJJL7r (ORCPT ); Tue, 10 Oct 2023 07:59:47 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FE4AD6; Tue, 10 Oct 2023 04:59:43 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5980EC433CC; Tue, 10 Oct 2023 11:59:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696939182; bh=yY4b8whFEwnmlYcpE6hF0dsGH6oKpTRsy7zKEUgC6Z4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N10vcVSHoCFumioWjGZilOa3IUNIErDU2RGiqtrv/arquLmUnQWc/ZtKkO2xF4omL LI/CYXs5AG+ZXaJbGfj2//C67e59LDYtpO2WLXVtUveX7KLYwu6294MwXUeOwdQyS1 jf+iQqfPAv6EJDgB6EGr+ufhn887EgH4cw/iGBWDZ9hHHTrxmTRVSb47veqwne/l3j jDc7BxsTKFB+QFM1A6e5alpKK6WI/rXj35BdGRN5tWQz/KOK8yE2Q1RCGgl42aEOK7 IwyYZGrEvXVm15MsWlcuxMq1hqhqogIpE3/UXDDxmfjpRXtc41rZxnBitcQmwh4y1n zzpOfoWEav08Q== From: Frederic Weisbecker To: LKML Cc: "Paul E. McKenney" , Boqun Feng , Joel Fernandes , Josh Triplett , Mathieu Desnoyers , Neeraj Upadhyay , Steven Rostedt , Uladzislau Rezki , rcu , Frederic Weisbecker Subject: [PATCH 03/23] torture: Make torture_hrtimeout_ns() take an hrtimer mode parameter Date: Tue, 10 Oct 2023 13:59:01 +0200 Message-Id: <20231010115921.988766-4-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010115921.988766-1-frederic@kernel.org> References: <20231010115921.988766-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Tue, 10 Oct 2023 04:59:54 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779369714128193911 X-GMAIL-MSGID: 1779369714128193911 From: "Paul E. McKenney" The current torture-test sleeps are waiting for a duration, but there are situations where it is better to wait for an absolute time, for example, when ending a stutter interval. This commit therefore adds an hrtimer mode parameter to torture_hrtimeout_ns(). Why not also the other torture_hrtimeout_*() functions? The theory is that most absolute times will be in nanoseconds, especially not (say) jiffies. Signed-off-by: Paul E. McKenney Signed-off-by: Frederic Weisbecker --- include/linux/torture.h | 3 ++- kernel/torture.c | 13 +++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/linux/torture.h b/include/linux/torture.h index bb466eec01e4..017f0f710815 100644 --- a/include/linux/torture.h +++ b/include/linux/torture.h @@ -81,7 +81,8 @@ static inline void torture_random_init(struct torture_random_state *trsp) } /* Definitions for high-resolution-timer sleeps. */ -int torture_hrtimeout_ns(ktime_t baset_ns, u32 fuzzt_ns, struct torture_random_state *trsp); +int torture_hrtimeout_ns(ktime_t baset_ns, u32 fuzzt_ns, const enum hrtimer_mode mode, + struct torture_random_state *trsp); int torture_hrtimeout_us(u32 baset_us, u32 fuzzt_ns, struct torture_random_state *trsp); int torture_hrtimeout_ms(u32 baset_ms, u32 fuzzt_us, struct torture_random_state *trsp); int torture_hrtimeout_jiffies(u32 baset_j, struct torture_random_state *trsp); diff --git a/kernel/torture.c b/kernel/torture.c index 68dba4ecab5c..6ba62e5993e7 100644 --- a/kernel/torture.c +++ b/kernel/torture.c @@ -87,14 +87,15 @@ EXPORT_SYMBOL_GPL(verbose_torout_sleep); * nanosecond random fuzz. This function and its friends desynchronize * testing from the timer wheel. */ -int torture_hrtimeout_ns(ktime_t baset_ns, u32 fuzzt_ns, struct torture_random_state *trsp) +int torture_hrtimeout_ns(ktime_t baset_ns, u32 fuzzt_ns, const enum hrtimer_mode mode, + struct torture_random_state *trsp) { ktime_t hto = baset_ns; if (trsp) hto += torture_random(trsp) % fuzzt_ns; set_current_state(TASK_IDLE); - return schedule_hrtimeout(&hto, HRTIMER_MODE_REL); + return schedule_hrtimeout(&hto, mode); } EXPORT_SYMBOL_GPL(torture_hrtimeout_ns); @@ -106,7 +107,7 @@ int torture_hrtimeout_us(u32 baset_us, u32 fuzzt_ns, struct torture_random_state { ktime_t baset_ns = baset_us * NSEC_PER_USEC; - return torture_hrtimeout_ns(baset_ns, fuzzt_ns, trsp); + return torture_hrtimeout_ns(baset_ns, fuzzt_ns, HRTIMER_MODE_REL, trsp); } EXPORT_SYMBOL_GPL(torture_hrtimeout_us); @@ -123,7 +124,7 @@ int torture_hrtimeout_ms(u32 baset_ms, u32 fuzzt_us, struct torture_random_state fuzzt_ns = (u32)~0U; else fuzzt_ns = fuzzt_us * NSEC_PER_USEC; - return torture_hrtimeout_ns(baset_ns, fuzzt_ns, trsp); + return torture_hrtimeout_ns(baset_ns, fuzzt_ns, HRTIMER_MODE_REL, trsp); } EXPORT_SYMBOL_GPL(torture_hrtimeout_ms); @@ -136,7 +137,7 @@ int torture_hrtimeout_jiffies(u32 baset_j, struct torture_random_state *trsp) { ktime_t baset_ns = jiffies_to_nsecs(baset_j); - return torture_hrtimeout_ns(baset_ns, jiffies_to_nsecs(1), trsp); + return torture_hrtimeout_ns(baset_ns, jiffies_to_nsecs(1), HRTIMER_MODE_REL, trsp); } EXPORT_SYMBOL_GPL(torture_hrtimeout_jiffies); @@ -153,7 +154,7 @@ int torture_hrtimeout_s(u32 baset_s, u32 fuzzt_ms, struct torture_random_state * fuzzt_ns = (u32)~0U; else fuzzt_ns = fuzzt_ms * NSEC_PER_MSEC; - return torture_hrtimeout_ns(baset_ns, fuzzt_ns, trsp); + return torture_hrtimeout_ns(baset_ns, fuzzt_ns, HRTIMER_MODE_REL, trsp); } EXPORT_SYMBOL_GPL(torture_hrtimeout_s);