Received: by 2002:ab2:3141:0:b0:1ed:23cc:44d1 with SMTP id i1csp2018455lqg; Mon, 4 Mar 2024 10:14:08 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVRNAs3X8dXwwbMXCwbMcmR5iJsrCd2UX7b9Mc7qMXV7z2mBYLk0SdmeAu2OyCRVTAJLpyy1hs+1zuKadhfWQ17fzKY5f1eIMYo/v6Ktg== X-Google-Smtp-Source: AGHT+IHKVieZm+wLggL5IG5fChsW4Mbpi9t+WqJKomInQeWB6HiynHyElL1vbY42q11TWqFDw6jQ X-Received: by 2002:a17:902:e843:b0:1db:cb54:5e77 with SMTP id t3-20020a170902e84300b001dbcb545e77mr15284014plg.22.1709576047705; Mon, 04 Mar 2024 10:14:07 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709576047; cv=pass; d=google.com; s=arc-20160816; b=j42pbnaCa/YlAeHTT+Id4eW1D7MTRpkS6RQbDS70StBAibvdmSr9krTHGgi+0odujC 8G0iiPprDyWQZB68KFilznuQ243Zv6iXXwsCV/5XyCpa92xwl8AcU3SX0J8KComBX5Zn GF4EB1W7S1ppiWHE5/ujz+bu1PIMoXsnb82RF1d9G9ve4pJXjpPqWp/pCoRrn0IDhj1p LIbRQvbImjnyXInmw0kxE1pMxydtvO2PfGz16pNaZ3HiSyg0FlG2MQV63h2lvduPQ21N LNnjrCsJm816qN2y2dxoL2aAOlnyHSBO3MMbafcNtqPYQZ9KQ09ioR4GTD8CQ5okY4WT jnAQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:message-id:references:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:in-reply-to:date :dkim-signature; bh=LIR4tpXfm1Zf9xB2dvSMHOKf+DsIJbzUCheSmbqVnZ4=; fh=hSKZ3fjiLQrmS5P0rA0JeMgQYjZmwKjJmLn+QFeJnzQ=; b=a3ZqDucRMxe6hv7g4Mw8mX09F9tPvNq7YbmPRU6+OfmYEdr0WS5u/BPt/m4Afz1otx vpBywp6A6LAz8IYSbxFpIpZaL01F8TX+G1jh/k5xQlm+IqzAcjpUjAVCWitJ9nZ7p9uK 4f85JAONmLG1pYqr9n0nzNTguU+spU+Ywc/m6kxs2rNt0YYABEwNiMuuSxsJ3Xd9HbmI ZG0IRKkePPXYVFhGqwiBj/8bne8q+b8uVXUkUNGQf9bQnsNSRzz11HGZJX6ohtIVDkwO nI7ho2ptL4++9fEmBwuhhNL6RUeeGWJtnIyjMZR7Y2ARe0HmVlW+QQoeGDGT5C68rXDv Oyhg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=OeBX8bue; arc=pass (i=1 spf=pass spfdomain=flex--edliaw.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-91070-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-91070-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id q3-20020a170902eb8300b001dc3c3be4a5si8793506plg.4.2024.03.04.10.14.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Mar 2024 10:14:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-91070-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=OeBX8bue; arc=pass (i=1 spf=pass spfdomain=flex--edliaw.bounces.google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-91070-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-91070-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id CE7C92810BE for ; Mon, 4 Mar 2024 18:12:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1A1396217F; Mon, 4 Mar 2024 18:11:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="OeBX8bue" Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (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 B734362152 for ; Mon, 4 Mar 2024 18:11:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575914; cv=none; b=r+Xwe5OcdxoRbnO9KSDceHreUKBwbAuKY12umjn/ZUYA+juEL0ozvGQZizkrvdneF+8B/dwaT7sHu7T6mBOHRv8dDLeZO/1kcWRWCfWuS/SxMSscRKerjvojuRBJaD6TzJBoIXexmZL16cDMIpE2zszncHe6IvLtSSkm1a64Zg8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709575914; c=relaxed/simple; bh=CC+iy3zkI7zBVRFWIq21TO6LNko9XBBY5WLB//p8GHg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=fo986BRF0RghVELnBcV+TS44QDETAqMW7r6hqOkOQoTDjWfCOboFY3GZ6aZPNiAcjt/O43HZ8V6/tx0RyfUXD4C68e5Mxd0D9X/owwUEv0JWK3Z4QF1rRVkQGRsYWY2Dcca5TkqgT1GKRwqnZB9ABv55+jVZagf4Y0TeYRD+TmU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=OeBX8bue; arc=none smtp.client-ip=209.85.214.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--edliaw.bounces.google.com Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-1dc4f385c16so47421755ad.1 for ; Mon, 04 Mar 2024 10:11:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709575912; x=1710180712; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=LIR4tpXfm1Zf9xB2dvSMHOKf+DsIJbzUCheSmbqVnZ4=; b=OeBX8buewaY1kn0YxAr60HF8GT+bam5EAHRrzD1UD9WzYaAFTdHvLa6G05VdOIyPQ9 TWy6Eais3lPUwiPxFBeTmXROOqZBFFT175/urypfiVHcZIKKrmfPSFcNJBTADO6I9Hqa cT7ZzZvykcGOwL+GFvhGR+cD0H4aPtrNgeh6GlnnyIh2IqZ7ZL665v9/m4/P+wieY140 MbIetNTiWmm/9LpZ6AIJuI59a8HojXIVC6GsxeWRTLhI3qkESE3Lno9a/lskoSUqL7Fr btN/mlWjkWhc5dJs5vpWj2fZa+BxjCEeJDzgAbh7gZlgYgeyu6aRfM/FYnowm3DlxsJw 40fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709575912; x=1710180712; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LIR4tpXfm1Zf9xB2dvSMHOKf+DsIJbzUCheSmbqVnZ4=; b=qm98D4VZjk2XoaXBEtHWiicGcio6Q0exQFwGCUOMK6gAx5oh2LD3soJZjoZntfmgM2 MMoZziElnEohnG8/MdRqsdLRWrBM3Hr2v9qDeq0wD4b3M0xgGuoDjLvD8qUWHF98mi4h N7fdgqsmn4KTvQiiYcE95AjhL+nNjIpzyzwquJrlwMyP+ifJWr+qBKMsyaEH6NuHWkrA bfFb0WgAvRbjPV0PDIzxvYawZJRLBzNw486ue92VRM1JseqnMiaSwOVl/Cu8CPbIjtjO wNAEHOgpyja9+xPzv5ai6Gb/XBObpNq6sNOVwpZVFEpRgPp+wWckqG7UChB1xpg4Zoqa sCGg== X-Gm-Message-State: AOJu0YzvIuiNXOTiAvxL4tpO4m0z7ZZK+iaqfj1Fe/k5A45d5cFYsqR9 MOSpcjUvkljr24ZuElezEcQHFHkR1FTNojjDzN1aXENzoE7wT8yOF+fdEGzRJkFBjilDAeNa55P /8uwSvun7+HQPGDOeM6oaRuZRonGK9w5nvOoJhqmnShTsBenPXPFASaOAwT2R56WFSWfgZRYSwS tKnvKIu5XMiO7TfMudwducctIU1fi/0hBZfwkkVQrr X-Received: from edliaw.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:305d]) (user=edliaw job=sendgmr) by 2002:a17:902:db02:b0:1dc:b7d2:453e with SMTP id m2-20020a170902db0200b001dcb7d2453emr168006plx.0.1709575911467; Mon, 04 Mar 2024 10:11:51 -0800 (PST) Date: Mon, 4 Mar 2024 18:11:32 +0000 In-Reply-To: <20240304181140.644212-1-edliaw@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240304181140.644212-1-edliaw@google.com> X-Mailer: git-send-email 2.44.0.rc1.240.g4c46232300-goog Message-ID: <20240304181140.644212-2-edliaw@google.com> Subject: [PATCH v1 1/3] selftests/timers/posix_timers: Make signal distribution test less fragile From: Edward Liaw To: linux-kernel@vger.kernel.org, John Stultz , Thomas Gleixner , Stephen Boyd , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: linux-kselftest@vger.kernel.org, kernel-team@android.com, Edward Liaw , llvm@lists.linux.dev Content-Type: text/plain; charset="UTF-8" The signal distribution test has a tendency to hang for a long time as the signal delivery is not really evenly distributed. Increasing the timer interval to 10ms makes this less likely. Add a timeout to catch the case where it hangs and terminate the test gracefully. While at it get rid of the pointless atomic operation on a the thread local variable in the signal handler. Signed-off-by: Thomas Gleixner [edliaw: Rebase and fix checkpatch recommendations] Signed-off-by: Edward Liaw --- tools/testing/selftests/timers/posix_timers.c | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/timers/posix_timers.c b/tools/testing/selftests/timers/posix_timers.c index d49dd3ffd0d9..03779b6b3c20 100644 --- a/tools/testing/selftests/timers/posix_timers.c +++ b/tools/testing/selftests/timers/posix_timers.c @@ -24,7 +24,8 @@ static volatile int done; /* Busy loop in userspace to elapse ITIMER_VIRTUAL */ static void user_loop(void) { - while (!done); + while (!done) + continue; } /* @@ -184,18 +185,19 @@ static int check_timer_create(int which) return 0; } -int remain; -__thread int got_signal; +static int remain; +static __thread int got_signal; static void *distribution_thread(void *arg) { - while (__atomic_load_n(&remain, __ATOMIC_RELAXED)); + while (__atomic_load_n(&remain, __ATOMIC_RELAXED) && !done) + continue; return NULL; } static void distribution_handler(int nr) { - if (!__atomic_exchange_n(&got_signal, 1, __ATOMIC_RELAXED)) + if (++got_signal == 1) __atomic_fetch_sub(&remain, 1, __ATOMIC_RELAXED); } @@ -205,17 +207,19 @@ static void distribution_handler(int nr) */ static int check_timer_distribution(void) { - int err, i; - timer_t id; const int nthreads = 10; pthread_t threads[nthreads]; struct itimerspec val = { .it_value.tv_sec = 0, - .it_value.tv_nsec = 1000 * 1000, + .it_value.tv_nsec = 20 * 1000 * 1000, .it_interval.tv_sec = 0, - .it_interval.tv_nsec = 1000 * 1000, + .it_interval.tv_nsec = 20 * 1000 * 1000, }; + time_t start, now; + int err, i; + timer_t id; + done = 0; remain = nthreads + 1; /* worker threads + this thread */ signal(SIGALRM, distribution_handler); err = timer_create(CLOCK_PROCESS_CPUTIME_ID, NULL, &id); @@ -240,7 +244,18 @@ static int check_timer_distribution(void) } /* Wait for all threads to receive the signal. */ - while (__atomic_load_n(&remain, __ATOMIC_RELAXED)); + now = start = time(NULL); + while (__atomic_load_n(&remain, __ATOMIC_RELAXED)) { + now = time(NULL); + if (now - start > 5) + break; + } + done = 1; + + if (timer_delete(id)) { + ksft_perror("Can't delete timer\n"); + return -1; + } for (i = 0; i < nthreads; i++) { err = pthread_join(threads[i], NULL); @@ -251,12 +266,8 @@ static int check_timer_distribution(void) } } - if (timer_delete(id)) { - ksft_perror("Can't delete timer"); - return -1; - } + ksft_test_result((now - start <= 5), "%s\n", __func__); - ksft_test_result_pass("check_timer_distribution\n"); return 0; } @@ -265,7 +276,7 @@ int main(int argc, char **argv) ksft_print_header(); ksft_set_plan(6); - ksft_print_msg("Testing posix timers. False negative may happen on CPU execution \n"); + ksft_print_msg("Testing posix timers. False negative may happen on CPU execution\n"); ksft_print_msg("based timers if other threads run on the CPU...\n"); if (check_itimer(ITIMER_VIRTUAL) < 0) -- 2.44.0.rc1.240.g4c46232300-goog