From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D50F3264DA for ; Mon, 27 Apr 2026 15:11:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777302716; cv=none; b=Ga4Ury7J6CW4twcsD9NtZwhEYQ4/5vW0kMHpP6zhw4aFrgDQRx6+4O3dhON21Qb4echvTlPc1OWlMup72IT219ipqJAXStLFl7oamps9L3tDQwWt236mpxeiQjXLi870d1rrgNympfjJaitN2vnrXNpuq1XMCcF5SCvIfX+Si6g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777302716; c=relaxed/simple; bh=aVAqdCXdV6eJozKW7db/vaawPWlfqGLQK+rT7vDrqv0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=TSW2xhjtATQ4wp/I0BIYbm/5ET6zi7G9s8xYXkHUG6JnsIBAkN7ccx9uUw2a/n7K6IE0643nzQ89W1b0/QocY8TQoc7x/XvKI+t0mg/pB69TGYAuMPUV8GelgwaZpzg8Z0LISFX6yYbiEfvgOtSJlHELMgeyAsJtvaDYDduOWEM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=iToGeRfD; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="iToGeRfD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777302713; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=+Tly+ExAMxdGd6yARGJk0tySw/vRfTsEdgmbQxE8NRY=; b=iToGeRfDSMKNbkIdw+HTWNJwdz6Pay/ZoRkGTtfzKb17Wg1enufu9v9aQ1pOGu96Gsoh6K 1MvSUV3T8G2NdrMzRWRCSj0PzEHbqwse7agsVIomrVMkf4iDL0yde7S0wwISriLNKt35sv pcUUBmHDZwFUhK53W/HTiUwzVPnl91Q= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-275-W3cm3LJrOvaBRAtl0w4kug-1; Mon, 27 Apr 2026 11:11:51 -0400 X-MC-Unique: W3cm3LJrOvaBRAtl0w4kug-1 X-Mimecast-MFC-AGG-ID: W3cm3LJrOvaBRAtl0w4kug_1777302710 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F3AC31956088; Mon, 27 Apr 2026 15:11:49 +0000 (UTC) Received: from fedora-pc.redhat.corp (headnet01.pony-001.prod.iad2.dc.redhat.com [10.2.32.101]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id E24A7195608E; Mon, 27 Apr 2026 15:11:46 +0000 (UTC) From: Gabriele Monaco To: linux-trace-kernel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Gabriele Monaco , Steven Rostedt , Nam Cao , Thomas Weissschuh , Tomas Glozar , John Kacur , Wen Yang Subject: [RFC PATCH 00/12] rv: Add selftests to tools and KUnit tests Date: Mon, 27 Apr 2026 17:11:22 +0200 Message-ID: <20260427151134.192971-1-gmonaco@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 This series adds support to the make check target in the rv userspace tool and the rvgen script, this allows to quickly validate its functionality. The selftest framework is inspired by the one used in RTLA. A few bugs in both tools were also discovered and are fixed as part of this series. Additionally it adds unit tests for models. This is achieved by running the handlers functions directly within KUnit, emulating all modules paths as if real kernel events fired. Unit tests emulate a series of events that are expected to trigger violations and checks that a reaction occurred, stub structs and functions are used so the kernel is not affected by the test. To: linux-trace-kernel@vger.kernel.org To: linux-kernel@vger.kernel.org Cc: Steven Rostedt Cc: Nam Cao Cc: Thomas Weissschuh Cc: Tomas Glozar Cc: John Kacur Cc: Wen Yang Gabriele Monaco (12): tools/rv: Fix substring match bug in monitor name search tools/rv: Fix substring match when listing container monitors tools/rv: Fix exit status when monitor execution fails tools/rv: Fix cleanup after failed trace setup tools/rv: Add selftests verification/rvgen: Fix options shared among commands verification/rvgen: Add golden and spec folders for tests verification/rvgen: Add selftests rv: Add KUnit stub to rv_react() and rv_*_task_monitor_slot() rv: Add KUnit tests for some DA/HA monitors rv: Add KUnit stubs for current and smp_processor_id() rv: Add KUnit tests for some LTL monitors include/rv/da_monitor.h | 32 +++ include/rv/kunit_stubs.h | 17 ++ include/rv/ltl_monitor.h | 32 +++ kernel/trace/rv/Kconfig | 14 + kernel/trace/rv/Makefile | 3 + kernel/trace/rv/monitors/nomiss/nomiss.c | 30 +++ kernel/trace/rv/monitors/opid/opid.c | 27 ++ .../trace/rv/monitors/pagefault/pagefault.c | 26 +- kernel/trace/rv/monitors/sco/sco.c | 23 ++ kernel/trace/rv/monitors/sleep/sleep.c | 64 ++++- kernel/trace/rv/monitors/sssw/sssw.c | 27 ++ kernel/trace/rv/monitors/sts/sts.c | 35 +++ kernel/trace/rv/rv.c | 5 + kernel/trace/rv/rv_monitors_test.c | 99 +++++++ kernel/trace/rv/rv_monitors_test.h | 90 +++++++ kernel/trace/rv/rv_reactors.c | 3 + tools/verification/rv/Makefile | 5 +- tools/verification/rv/src/in_kernel.c | 58 ++-- tools/verification/rv/src/rv.c | 2 +- tools/verification/rv/tests/rv_list.t | 48 ++++ tools/verification/rv/tests/rv_mon.t | 95 +++++++ tools/verification/rvgen/Makefile | 4 + tools/verification/rvgen/__main__.py | 10 +- .../rvgen/tests/golden/da_global/Kconfig | 9 + .../rvgen/tests/golden/da_global/da_global.c | 95 +++++++ .../rvgen/tests/golden/da_global/da_global.h | 47 ++++ .../tests/golden/da_global/da_global_trace.h | 15 ++ .../tests/golden/da_perobj_parent/Kconfig | 11 + .../da_perobj_parent/da_perobj_parent.c | 110 ++++++++ .../da_perobj_parent/da_perobj_parent.h | 64 +++++ .../da_perobj_parent/da_perobj_parent_trace.h | 15 ++ .../tests/golden/da_pertask_desc/Kconfig | 9 + .../golden/da_pertask_desc/da_pertask_desc.c | 105 ++++++++ .../golden/da_pertask_desc/da_pertask_desc.h | 64 +++++ .../da_pertask_desc/da_pertask_desc_trace.h | 15 ++ .../rvgen/tests/golden/ha_percpu/Kconfig | 9 + .../rvgen/tests/golden/ha_percpu/ha_percpu.c | 244 +++++++++++++++++ .../rvgen/tests/golden/ha_percpu/ha_percpu.h | 72 +++++ .../tests/golden/ha_percpu/ha_percpu_trace.h | 19 ++ .../rvgen/tests/golden/ltl_pertask/Kconfig | 9 + .../tests/golden/ltl_pertask/ltl_pertask.c | 107 ++++++++ .../tests/golden/ltl_pertask/ltl_pertask.h | 108 ++++++++ .../golden/ltl_pertask/ltl_pertask_trace.h | 14 + .../rvgen/tests/golden/test_container/Kconfig | 5 + .../golden/test_container/test_container.c | 35 +++ .../golden/test_container/test_container.h | 3 + .../rvgen/tests/golden/test_da/Kconfig | 9 + .../rvgen/tests/golden/test_da/test_da.c | 95 +++++++ .../rvgen/tests/golden/test_da/test_da.h | 47 ++++ .../tests/golden/test_da/test_da_trace.h | 15 ++ .../rvgen/tests/golden/test_ha/Kconfig | 9 + .../rvgen/tests/golden/test_ha/test_ha.c | 247 ++++++++++++++++++ .../rvgen/tests/golden/test_ha/test_ha.h | 72 +++++ .../tests/golden/test_ha/test_ha_trace.h | 19 ++ .../rvgen/tests/golden/test_ltl/Kconfig | 11 + .../rvgen/tests/golden/test_ltl/test_ltl.c | 108 ++++++++ .../rvgen/tests/golden/test_ltl/test_ltl.h | 108 ++++++++ .../tests/golden/test_ltl/test_ltl_trace.h | 14 + .../rvgen/tests/rvgen_container.t | 20 ++ .../verification/rvgen/tests/rvgen_monitor.t | 87 ++++++ .../rvgen/tests/specs/test_da.dot | 16 ++ .../rvgen/tests/specs/test_da2.dot | 18 ++ .../rvgen/tests/specs/test_ha.dot | 27 ++ .../rvgen/tests/specs/test_invalid.dot | 8 + .../rvgen/tests/specs/test_invalid.ltl | 1 + .../rvgen/tests/specs/test_invalid_ha.dot | 16 ++ .../rvgen/tests/specs/test_ltl.ltl | 1 + tools/verification/tests/engine.sh | 156 +++++++++++ 68 files changed, 2993 insertions(+), 44 deletions(-) create mode 100644 include/rv/kunit_stubs.h create mode 100644 kernel/trace/rv/rv_monitors_test.c create mode 100644 kernel/trace/rv/rv_monitors_test.h create mode 100644 tools/verification/rv/tests/rv_list.t create mode 100644 tools/verification/rv/tests/rv_mon.t create mode 100644 tools/verification/rvgen/tests/golden/da_global/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/da_global/da_global.c create mode 100644 tools/verification/rvgen/tests/golden/da_global/da_global.h create mode 100644 tools/verification/rvgen/tests/golden/da_global/da_global_trace.h create mode 100644 tools/verification/rvgen/tests/golden/da_perobj_parent/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/da_perobj_parent/da_perobj_parent.c create mode 100644 tools/verification/rvgen/tests/golden/da_perobj_parent/da_perobj_parent.h create mode 100644 tools/verification/rvgen/tests/golden/da_perobj_parent/da_perobj_parent_trace.h create mode 100644 tools/verification/rvgen/tests/golden/da_pertask_desc/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/da_pertask_desc/da_pertask_desc.c create mode 100644 tools/verification/rvgen/tests/golden/da_pertask_desc/da_pertask_desc.h create mode 100644 tools/verification/rvgen/tests/golden/da_pertask_desc/da_pertask_desc_trace.h create mode 100644 tools/verification/rvgen/tests/golden/ha_percpu/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/ha_percpu/ha_percpu.c create mode 100644 tools/verification/rvgen/tests/golden/ha_percpu/ha_percpu.h create mode 100644 tools/verification/rvgen/tests/golden/ha_percpu/ha_percpu_trace.h create mode 100644 tools/verification/rvgen/tests/golden/ltl_pertask/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/ltl_pertask/ltl_pertask.c create mode 100644 tools/verification/rvgen/tests/golden/ltl_pertask/ltl_pertask.h create mode 100644 tools/verification/rvgen/tests/golden/ltl_pertask/ltl_pertask_trace.h create mode 100644 tools/verification/rvgen/tests/golden/test_container/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/test_container/test_container.c create mode 100644 tools/verification/rvgen/tests/golden/test_container/test_container.h create mode 100644 tools/verification/rvgen/tests/golden/test_da/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/test_da/test_da.c create mode 100644 tools/verification/rvgen/tests/golden/test_da/test_da.h create mode 100644 tools/verification/rvgen/tests/golden/test_da/test_da_trace.h create mode 100644 tools/verification/rvgen/tests/golden/test_ha/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/test_ha/test_ha.c create mode 100644 tools/verification/rvgen/tests/golden/test_ha/test_ha.h create mode 100644 tools/verification/rvgen/tests/golden/test_ha/test_ha_trace.h create mode 100644 tools/verification/rvgen/tests/golden/test_ltl/Kconfig create mode 100644 tools/verification/rvgen/tests/golden/test_ltl/test_ltl.c create mode 100644 tools/verification/rvgen/tests/golden/test_ltl/test_ltl.h create mode 100644 tools/verification/rvgen/tests/golden/test_ltl/test_ltl_trace.h create mode 100644 tools/verification/rvgen/tests/rvgen_container.t create mode 100644 tools/verification/rvgen/tests/rvgen_monitor.t create mode 100644 tools/verification/rvgen/tests/specs/test_da.dot create mode 100644 tools/verification/rvgen/tests/specs/test_da2.dot create mode 100644 tools/verification/rvgen/tests/specs/test_ha.dot create mode 100644 tools/verification/rvgen/tests/specs/test_invalid.dot create mode 100644 tools/verification/rvgen/tests/specs/test_invalid.ltl create mode 100644 tools/verification/rvgen/tests/specs/test_invalid_ha.dot create mode 100644 tools/verification/rvgen/tests/specs/test_ltl.ltl create mode 100644 tools/verification/tests/engine.sh base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731 -- 2.53.0