From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 33E6DC61DC2 for ; Thu, 27 Aug 2026 13:39:09 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wzaJq-0007Ot-Qz; Thu, 27 Aug 2026 09:39:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wzaJn-0007O6-Gg for qemu-arm@nongnu.org; Thu, 27 Aug 2026 09:38:59 -0400 Received: from mailgate02.uberspace.is ([185.26.156.114]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wzaJl-0003d4-Lp for qemu-arm@nongnu.org; Thu, 27 Aug 2026 09:38:59 -0400 Received: from skiff.uberspace.de (skiff.uberspace.de [185.26.156.131]) by mailgate02.uberspace.is (Postfix) with ESMTPS id CDD81180432 for ; Thu, 27 Aug 2026 15:38:48 +0200 (CEST) Received: (qmail 16823 invoked by uid 990); 27 Aug 2026 13:38:48 -0000 Authentication-Results: skiff.uberspace.de; auth=pass (plain) Received: from unknown (HELO unknown) (::1) by skiff.uberspace.de (Haraka/3.1.1) with ESMTPSA; Thu, 27 Aug 2026 15:38:48 +0200 MIME-Version: 1.0 Date: Thu, 27 Aug 2026 13:38:47 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: "Julian Ganz" Message-ID: <39c0afbc330cd144bc1ae3757e7638b2a8c8fc57@nut.email> TLS-Required: No Subject: Re: [PATCH 13/35] target/avr: call plugin trap callbacks To: "=?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?=" , "=?utf-8?B?QWxleCBCZW5uw6ll?=" , qemu-devel@nongnu.org Cc: "Liu Zhiwei" , "Alexandre Iooss" , "Chinmay Rath" , qemu-arm@nongnu.org, "Peter Maydell" , "Nicholas Piggin" , "Ilya Leoshkevich" , "David Hildenbrand" , qemu-ppc@nongnu.org, "Paolo Bonzini" , qemu-s390x@nongnu.org, "Bastian Koppelmann" , "Helge Deller" , "Stafford Horne" , "Mahmoud Mandour" , "Artyom Tarasenko" , "Eduardo Habkost" , "Palmer Dabbelt" , "Alistair Francis" , "Laurent Vivier" , "Weiwei Li" , "Daniel Henrique Barboza" , "Mark Cave-Ayland" , "Yoshinori Sato" , "Edgar E. Iglesias" , "Aurelien Jarno" , "Richard Henderson" , "Thomas Huth" , "Max Filippov" , "Jiaxun Yang" , "Michael Rolnik" , "Song Gao" , qemu-riscv@nongnu.org, "Aleksandar Rikalo" , "Pierrick Bouvier" In-Reply-To: References: <20251027110344.2289945-1-alex.bennee@linaro.org> <20251027110344.2289945-14-alex.bennee@linaro.org> X-Rspamd-Bar: + X-Rspamd-Report: SUSPICIOUS_RECIPS(1.5) BAYES_HAM(-0.035663) MIME_GOOD(-0.1) X-Rspamd-Score: 1.364336 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nut.email; s=uberspace; h=from:to:cc:subject:date; bh=3YLSykSOgjx+A88sO5o8Doo1klTySZuA845vpIUw5f0=; b=H1PcMs5+zwTIkGKISmDQF6XsH1GKukHw6JTHx/8TPfnydTyCr4ykemYtPDftAjnQoJ020j7vm9 AmseTI8Zro2L70wLz2Njk3pqaBdB5WCQpO/JjbRlY8wTJdIN77cNftOLtQZDIf6ATqP9o5JOLEyx yDiIVMEzndB344dUfhnXSaOE+QWJIwu4w/WprywWJifQTvtHODRT1nlXSiSsnKbLaQQ/5BkoZp7h tJcDSnJKXVR8IoZGw2DMIS1VxP8P2C3gpa5HerBPZTQN8CJHu2lVKLdJz69ZPtxxsLFDMrVhcRXh cEuQHpxZ4xL2yOFxM63RydIALfQOc2QdG+49xvXXJXn3lzqybSnl8MNFtOFsEOsflsk/AH5/Xu3k OpafC1ImSENz15gil/HpHDH5BK71wO8dDAeU/kyYkOIlXyCf1YawOb9UssC6R5lDVyWNfkvq5oCa Gx5o+9xml+2eXRIsblZA0bw5oCndn5ZQjx8YGM1LpfVvxvBclbY08bc3/DQMHX5GsZ3BDK+Sh4Dz 588aAsBB+dBe51yR82sNO7Ru9RydbThLbcN4Vguujf9h/UUwqGgIbHl7ZWrmaFIB9+eevERTOZBw r9nRZiTyL4S8p2VTNiibysLDlYONScXBN8cM36KltX2scgObYGT3rbUwTGKcO06H4wa4j4A2UL0T A= Received-SPF: pass client-ip=185.26.156.114; envelope-from=neither@nut.email; helo=mailgate02.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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-arm@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-arm-bounces+qemu-arm=archiver.kernel.org@nongnu.org Sender: qemu-arm-bounces+qemu-arm=archiver.kernel.org@nongnu.org Hi Philippe, sorry for the late reply. Did not realize I hadn't checked mails this long. August 17, 2026 at 1:14 PM, "Philippe Mathieu-Daud=C3=A9" wrote: > Expanding a bit ... >=20 >=20 77 void avr_cpu_do_interrupt(CPUState *cs) > 78 { > 79 CPUAVRState *env =3D cpu_env(cs); > 80 > 81 uint32_t ret =3D env->pc_w; > 82 int vector =3D 0; > 83 int size =3D avr_feature(env, AVR_FEATURE_JMP_CALL) ? 2 : 1; > 84 int base =3D 0; > 85 > 86 if (cs->exception_index =3D=3D EXCP_RESET) { > 87 vector =3D 0; > 88 } else if (env->intsrc !=3D 0) { > 89 vector =3D ctz64(env->intsrc) + 1; > 90 } >=20 >=20Unconditionally recording exception vector as interrupt seems wrong, > shouldn't we call qemu_plugin_vcpu_exception_cb() in that case? >=20 >=20 91 > 92 if (avr_feature(env, AVR_FEATURE_3_BYTE_PC)) { > 93 do_stb(env, env->sp--, ret, 0); > 94 do_stb(env, env->sp--, ret >> 8, 0); > 95 do_stb(env, env->sp--, ret >> 16, 0); > 96 } else if (avr_feature(env, AVR_FEATURE_2_BYTE_PC)) { > 97 do_stb(env, env->sp--, ret, 0); > 98 do_stb(env, env->sp--, ret >> 8, 0); > 99 } else { > 100 do_stb(env, env->sp--, ret, 0); > 101 } > 102 > 103 env->pc_w =3D base + vector * size; > 104 env->sregI =3D 0; /* clear Global Interrupt Flag */ > 105 > 106 cs->exception_index =3D -1; > 107 > 108 qemu_plugin_vcpu_interrupt_cb(cs, ret); > 109 } Yes. As should be apparent from _some_ commit message, I wrote this under the impression that AVR did not have exceptions. Or rather, what we call exceptions in the discon API, which are synchronous events or traps resulting from specific instructions being executed (including things such as invalid instructios and instruction load failures). We _do_ want to make sure to call qemu_plugin_vcpu_interrupt_cb only for interrupts. At the same time, we don't necessarily want to call qemu_plugin_vcpu_exceptions_cb either, at least if AVR just resets on an illegal instructions. Regards, Julian