From nobody Fri Nov 14 23:29:44 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1759744967; cv=none; d=zohomail.com; s=zohoarc; b=FqCqpsk9TXNHWt4vq6hL6Qj6TAb/PJ1K5TM3TF2MHDMlU9I38Q39kM4S3HG3WBRIGmyrAPvD96YZ3luCiWC6rvd30KRkkN7ZbCOCJplXmi2lzIzw/IAex1Au2DyzO9uU+6zIweiUUqIcC3RIGem0X8ZP2jmx1li4l/CyCWwgiTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759744967; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VQcknKM9Chi1JQ32rH/hZn3XNsgb4ohhFGV+75s3oYI=; b=BIfuZZWZJE9zeMFL677F9tFAjtIPJyq+1kjknTq0nmloIHetSvDM3ZFKxRQoQcHBJFNNs7VCi6YISAqi9NMyJK4HHdw5QdXSjxOg7ZLu4AUlHvRrlBRqomaWJ4DxyQVn7CJ10sOjyTL3ccDXMpg2HP6Gjp+5T6YrcLyV6N9cKJk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1759744967642726.9071783446076; Mon, 6 Oct 2025 03:02:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v5i1M-0002XE-Oh; Mon, 06 Oct 2025 06:00:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1v5i0S-0001Y1-8k for qemu-devel@nongnu.org; Mon, 06 Oct 2025 05:59:49 -0400 Received: from mailgate01.uberspace.is ([95.143.172.20]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v5i0Q-00041U-Gz for qemu-devel@nongnu.org; Mon, 06 Oct 2025 05:59:48 -0400 Received: from skiff.uberspace.de (skiff.uberspace.de [185.26.156.131]) by mailgate01.uberspace.is (Postfix) with ESMTPS id 4A9CD60B91 for ; Mon, 6 Oct 2025 11:59:45 +0200 (CEST) Received: (qmail 21069 invoked by uid 990); 6 Oct 2025 09:59:45 -0000 Received: from unknown (HELO unkown) (::1) by skiff.uberspace.de (Haraka/3.0.1) with ESMTPSA; Mon, 06 Oct 2025 11:59:45 +0200 Authentication-Results: skiff.uberspace.de; auth=pass (plain) From: Julian Ganz To: qemu-devel@nongnu.org Cc: Julian Ganz , Daniel Henrique Barboza , Palmer Dabbelt , Alistair Francis , Weiwei Li , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs) Subject: [PATCH v7 25/25] tests: add test with interrupted memory accesses on rv64 Date: Mon, 6 Oct 2025 11:59:20 +0200 Message-ID: <729c8db0f4b61033f5a460747ea50fced9dabc1e.1759744337.git.neither@nut.email> X-Mailer: git-send-email 2.49.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Bar: ---- X-Rspamd-Report: REPLY(-4) BAYES_HAM(-2.214157) MID_CONTAINS_FROM(1) MIME_GOOD(-0.1) R_MISSING_CHARSET(0.5) X-Rspamd-Score: -4.814157 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nut.email; s=uberspace; h=from:to:cc:subject:date; bh=mVLyiyy1HWjSWhu1/Q5w+icoVuven8S3d7VhRcdbntg=; b=ns2lwxA4B0p8ltBmZnDMEHNw0Bq5Ga6Y1QM+vbpm/5XynLaOFk2vRdl0z3AgZ0Stw+7b+/F/XH M68z3dtDsNwwfxZQ0Z6Mp1UzWu2eygtlTiPkCrIq9YHO2vtMdiv9HaVRd/hGJuoH9shb9xDPRE0g 0nEUonUD4B3KaRyVeZWIlI60J208FwcZalZHqWxcO0vDKX2mm4TgPS4s2kRTD6XgabwuXNM8BDld hGhjp11tFyBks+F9BHHoKGownnqcPohMYxbp85Vx9OnIdEcKyw8VsP5EIeJQvWOPQGbMxXLU48Ma /zNwBH5ytJE/8FsWNZCWo+MKrDE7i/1LEpr1W7YgP+fUI2wMN9TurOgK/UyIBDSLJ3tc7BlczeNp r6d4zcGt6AVve4FwvqmmbdaoPrt7BkkxvHXnqiz0bhtQxxJ7lPoHbMGZDsjrIIeCoW2GYy9KJO2m Vpj0reCAd4zAizhzLlny7qo5eNNnDsri8J8ZZZ8FxstKy3NFHygsesJEfobv9+biXzDzoWbHjfjh iqInSOPHfDv8khneqkrRZFEMnc+5cSdtdHuSPDCtVt2QNN47Iso5GQaIhUnmzaQGwJ+WQFJXIJXn Nt94ahfTZndbW6MbGi4YKsDEPKqPOuELNFf+Q2rcx/XwgpPYiRyJgwJzdhoTInMwibneeEDBY9mg w= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=95.143.172.20; envelope-from=neither@nut.email; helo=mailgate01.uberspace.is X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @nut.email) X-ZM-MESSAGEID: 1759744973272116600 Content-Type: text/plain; charset="utf-8" This test aims at catching API misbehaviour w.r.t. the interaction between interrupts and memory accesses, such as the bug fixed in 27f347e6a1d269c533633c812321cabb249eada8 Because the condition for triggering misbehaviour may not be deterministic and the cross-section between memory accesses and interrupt handlers may be small, we have to place our trust in large numbers. Instead of guessing/trying an arbitrary, fixed loop-bound, we decided to loop for a fixed amount of real-time. This avoids the test running into a time-out on slower machines while enabling a high number of possible interactions on faster machines. Reviewed-by: Daniel Henrique Barboza Signed-off-by: Julian Ganz --- tests/tcg/riscv64/Makefile.softmmu-target | 6 ++ tests/tcg/riscv64/interruptedmemory.S | 67 +++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 tests/tcg/riscv64/interruptedmemory.S diff --git a/tests/tcg/riscv64/Makefile.softmmu-target b/tests/tcg/riscv64/= Makefile.softmmu-target index 1a71a78653..d8f92b8e61 100644 --- a/tests/tcg/riscv64/Makefile.softmmu-target +++ b/tests/tcg/riscv64/Makefile.softmmu-target @@ -30,5 +30,11 @@ run-plugin-doubletrap: doubletrap $(QEMU) -plugin ../plugins/libdiscons.so -d plugin -D $*.pout \ $(QEMU_OPTS)$<) =20 +EXTRA_RUNS +=3D run-plugin-interruptedmemory +run-plugin-interruptedmemory: interruptedmemory + $(call run-test, $<, \ + $(QEMU) -plugin ../plugins/libdiscons.so -d plugin -D $*.pout \ + $(QEMU_OPTS)$<) + # We don't currently support the multiarch system tests undefine MULTIARCH_TESTS diff --git a/tests/tcg/riscv64/interruptedmemory.S b/tests/tcg/riscv64/inte= rruptedmemory.S new file mode 100644 index 0000000000..a32d672849 --- /dev/null +++ b/tests/tcg/riscv64/interruptedmemory.S @@ -0,0 +1,67 @@ + .option norvc + + .text + .global _start +_start: + # Set up trap vector + lla t0, trap + csrw mtvec, t0 + + # Set up timer + lui t1, 0x02004 + sd zero, 0(t1) # MTIMECMP0 + + # Enable timer interrupts + li t0, 0x80 + csrrs zero, mie, t0 + csrrsi zero, mstatus, 0x8 + + # Find out when to stop + call rtc_get + li t0, 60 + slli t0, t0, 30 # Approx. 10e9 ns + add t0, t0, a0 + + # Loop with memory accesses + la t1, semiargs +0: + ld t2, 0(t1) + sd t2, 0(t1) + call rtc_get + bltu a0, t0, 0b + + li a0, 0 + lla a1, semiargs + li t0, 0x20026 # ADP_Stopped_ApplicationExit + sd t0, 0(a1) + sd a0, 8(a1) + li a0, 0x20 # TARGET_SYS_EXIT_EXTENDED + + # Semihosting call sequence + .balign 16 + slli zero, zero, 0x1f + ebreak + srai zero, zero, 0x7 + j . + +rtc_get: + # Get current time from the goldfish RTC + lui t3, 0x0101 + lw a0, 0(t3) + lw t3, 4(t3) + slli t3, t3, 32 + add a0, a0, t3 + ret + +trap: + lui t5, 0x0200c + ld t6, -0x8(t5) # MTIME + addi t6, t6, 100 + lui t5, 0x02004 + sd t6, 0(t5) # MTIMECMP + mret + + .data + .balign 16 +semiargs: + .space 16 --=20 2.49.1