From nobody Sat Apr 11 23:08:42 2026 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1772954545; cv=none; d=zohomail.com; s=zohoarc; b=XoYBDy41cshCiYrSnWpsNNXHwaH+cdXHiep3V1Ujf9dxSurIINNup29qmUYQ8w4fhM6rEwYCfzTIZURrLv5vsg3lnxmGFKGwPiM1juWISWl9sq7rF72uiOIt002Efpr/LpScLgvWdjHpNqcAGxev8pgumQd+Aam4pikAIGUM4Ng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772954545; 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=aLL7Tl0LDKOGqVdwmIrV20atrUT/3NfBWs1jccL/0l4=; b=YbbKT/aj2yQ1ovL1ShyRAqldOAc+fvYxVjORpaggweY0U5SVn1qFsSU5C7esMF3o3qmM7AaRj07TfXeuF07NYCqGNMnJmTdu2RS3U8qJEBAAJtV0dInQ3yV7tNEnEaqhSZZ/vxz8eZEr1WP/HYfuiGj0HWoq2vygQER5vy8ghmc= 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177295454596086.23566592926704; Sat, 7 Mar 2026 23:22:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vz8S8-00035H-0y; Sun, 08 Mar 2026 03:21:29 -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 1vz8R3-0001dg-4F for qemu-devel@nongnu.org; Sun, 08 Mar 2026 03:20:22 -0400 Received: from mail-dy1-x1341.google.com ([2607:f8b0:4864:20::1341]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vz8R1-0002cD-Ha for qemu-devel@nongnu.org; Sun, 08 Mar 2026 03:20:20 -0400 Received: by mail-dy1-x1341.google.com with SMTP id 5a478bee46e88-2be4781d2baso4107737eec.0 for ; Sat, 07 Mar 2026 23:20:19 -0800 (PST) Received: from ZEVORN-PC.bbrouter ([38.95.120.198]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2be4f984ceasm6014081eec.32.2026.03.07.23.20.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Mar 2026 23:20:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772954418; x=1773559218; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aLL7Tl0LDKOGqVdwmIrV20atrUT/3NfBWs1jccL/0l4=; b=VWs+YDoyAQ+ygW55D5fkKkgkK1XD2T31liHJgvToPdb5aQAtuUk5Uto7oq/DL33O/5 fHR8PksmsdvERH0OucyXi4wIELohdm2Q3K+KUbxJZlK+DZBZkQrV/uW/LPp71hBkTrdJ EuTLv8L0Eo6CFSMICM/V//KvRXNjjt24tmcesD59SFofkHnGnI35LawPHcGpd/rDd2iE FPxuIg9teIMaJxGMk+xHlnfS1oneWbr8Mz0rhMmNZre9GDbhDg5Lnt320Du1h02rXOSg OPBkDIMIHhWYZYJy/3SxAY0n0Rl9yt+ZQ+qyZbYTK5N5ArwXJ4wB8EmqB+QiZdDYxqBB DsoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772954418; x=1773559218; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=aLL7Tl0LDKOGqVdwmIrV20atrUT/3NfBWs1jccL/0l4=; b=nyiCI3ulhQzJuY+Anc3n3XXP7kuAINsBjcrU45LHYEgw5NyxhNEnhm/rrVmpNWGVql m2T3UVLlkvaD2RPH+69js4rYLIeHknvdcheEYw4mO8ku8tyVfqP7PMzx+F3no1UsQE0p RxsdxZ95aPb6v2le5MzulrtxEpfmxUgghdgQYAZfP2BaX7jVB3JKT20wvW/uVjcsLFZe yT1bibN69Jdfgj03AJInI6u/ZbPz4fVxeYM0Z4vi9RjPSC6Y8Vxp5z6AIbTPb2EP8g9j 2YyO/8MQ87jwryxFQs7cOj33+sohWLrONJNar8U6Hvk+/GtXJuiUVklhXu3F/2tK12iW VO1A== X-Forwarded-Encrypted: i=1; AJvYcCW108RHGaZiXItxrY1eBOkDImxCvXia1J762J2gYxzLYz3gaOGld4qp/XKgfL08DSWITHS7SmoF03As@nongnu.org X-Gm-Message-State: AOJu0Ywc9dIK1VmbVUrTEaqH0LRjH58wkUrGfno19K4PLdEUWZ5cvcZR 8O2LY1Z4+Bf26E7Z1qmSniIUKe8szRxvue1UNI8QaahupLOoegTYdh0R X-Gm-Gg: ATEYQzzm7EEg53c5n8F+eKft2tYPU9kM+fWYRZ7rZAyyS/D4jTcQT/34IY75Z2XHctQ LowqcToNabkSb4XJMQDs9aN/j+dIgAbx4XfPw+4WtwTJtQggyu4kGFWrtCxUxFA7T3hl/MqfM4B /lS3WYge8TlZSz8SpsModRLr47HSANvon5Ec28eD6xoavgoogBRFDvj3ix1qPH0nSnq+g6Z5KR/ IkbJSvSi1Yih0MZ2hRNhj8C1jI5VPEbjsJW7X4gyt2cXfM6uKm9GHHxV477DxMzmCm6k30jo0EW vXReeRiiRh6727d7KP1zadwnnqwOe1e36TSjqxmB9i8W9dmpySE20G6kW7zJQHWHV7Q6KxBsi/F 6Y3Sz05XcHWMkycyjsi5EloxkNtzRIlcRa5D0ZY5c9tKk2OlQ5o3KGjhyEW4nNg8tklNbFFmWXF QMuYKH9k0b5CRl7cztJrjyAPl3SbaWKHxQloGa0M2xCSHb4TNeEe7uA7jq0zDuGGLyLHFLoZeF5 T3/qsLKPzedEYpiH8a64R5+xD4= X-Received: by 2002:a05:7300:a883:b0:2be:522:2edf with SMTP id 5a478bee46e88-2be4e0d0aafmr3005632eec.39.1772954418104; Sat, 07 Mar 2026 23:20:18 -0800 (PST) From: Chao Liu To: Paolo Bonzini , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , Fabiano Rosas , Laurent Vivier Cc: tangtao1634@phytium.com.cn, qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH v1 18/28] hw/riscv/dm: queue reset halts from the reset work item Date: Sun, 8 Mar 2026 15:17:21 +0800 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2607:f8b0:4864:20::1341; envelope-from=chao.liu.zevorn@gmail.com; helo=mail-dy1-x1341.google.com 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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 @gmail.com) X-ZM-MESSAGEID: 1772954547567158500 Content-Type: text/plain; charset="utf-8" Queue reset-halt requests from the CPU reset work item so the halt is requested after the hart reset has completed, not before it starts. Keeping the ordering in one place avoids racing the pending halt against the code that clears hart state and ROM mailbox flags, and it works the same way for both TCG and non-TCG reset paths. Signed-off-by: Chao Liu --- hw/riscv/dm.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/hw/riscv/dm.c b/hw/riscv/dm.c index d55b5b827d..760cae27e2 100644 --- a/hw/riscv/dm.c +++ b/hw/riscv/dm.c @@ -240,22 +240,20 @@ static void dm_debug_reset(RISCVDMState *s); =20 static void dm_cpu_reset_on_cpu(CPUState *cpu, run_on_cpu_data data) { - (void)data; + bool request_reset_halt =3D data.host_int; + cpu_reset(cpu); + if (request_reset_halt) { + riscv_cpu_request_dm_halt(RISCV_CPU(cpu), DCSR_CAUSE_RESET); + } } =20 static void dm_note_hart_reset(RISCVDMState *s, uint32_t hartsel) { - CPUState *cs =3D qemu_get_cpu(hartsel); - s->hart_halted[hartsel] =3D false; s->hart_resumeack[hartsel] =3D false; s->hart_havereset[hartsel] =3D true; dm_rom_write8(s, RISCV_DM_ROM_FLAGS + hartsel, RISCV_DM_FLAG_CLEAR); - - if (cs && s->hart_resethaltreq[hartsel]) { - riscv_cpu_request_dm_halt(RISCV_CPU(cs), DCSR_CAUSE_RESET); - } } =20 static void dm_reset_hart(RISCVDMState *s, uint32_t hartsel) @@ -268,10 +266,15 @@ static void dm_reset_hart(RISCVDMState *s, uint32_t h= artsel) =20 cs =3D qemu_get_cpu(hartsel); if (cs && tcg_enabled()) { - run_on_cpu(cs, dm_cpu_reset_on_cpu, RUN_ON_CPU_NULL); + run_on_cpu(cs, dm_cpu_reset_on_cpu, + RUN_ON_CPU_HOST_INT(s->hart_resethaltreq[hartsel])); } =20 dm_note_hart_reset(s, hartsel); + + if (cs && !tcg_enabled() && s->hart_resethaltreq[hartsel]) { + riscv_cpu_request_dm_halt(RISCV_CPU(cs), DCSR_CAUSE_RESET); + } } =20 static void dm_reset_selected_harts(RISCVDMState *s, DMHartSelection *sel) --=20 2.53.0