From nobody Sat May 30 19:22:59 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=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1777392204; cv=none; d=zohomail.com; s=zohoarc; b=Ih0Kr+OyksEX2L1z7d6qlKXezhx/dRgXo2ENuKsypqSN+rNzAsLWJP1mLeQeNFnhevMnCbmkXz2fKwFYsxbdZJlAzAbuySIzTIA/9ylfUse2ZHgqU6w+DXTE2HZRAMqgZgQUXthPN1kq4U3krQMpxhsJPtqvti7Aeb3jU30jJ/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777392204; 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=VQANHWAgJWbGUByZ7ElwjIusOl7UBvMVgDS40O+mI7E=; b=lp7ODlK4aI8OdnTFSo3HAU4mtY7GlqULw10osEQKndvcGkNrLDBtpnVVhqfZAZ4wcmYs9kJ/0OFKcgnMbVTiExC9XCUX2nk/jSjFXGQk81dIRgGytbYYpPmw5lXZej2YpxqWQg5A0nS2LOh1Ry1+yvZtuJqWh1I2ZDxV31AeyeQ= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777392204536357.5545188616246; Tue, 28 Apr 2026 09:03:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHktb-0003VR-6f; Tue, 28 Apr 2026 12:02:48 -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 1wHksM-00034m-T7 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:31 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHksJ-0003iD-IU for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:30 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-82f83bd32efso8551640b3a.2 for ; Tue, 28 Apr 2026 09:01:25 -0700 (PDT) Received: from hsinchu26.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834daf30fbfsm3002331b3a.33.2026.04.28.09.01.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 09:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1777392083; x=1777996883; 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=VQANHWAgJWbGUByZ7ElwjIusOl7UBvMVgDS40O+mI7E=; b=ZXIVJ875aOHo8ahR0OmL9EmBFf7Tk3O2bbuA54yhMzsen8pPj2q67Bs9fZsDyo/X3W AdrVRmmYNhpY7a2VYL0xfrCgHAI6yqy1z90bIaAVIhWUbisM1FXqp2b6F+w1PeHabgil 9U9nq3Tx3BXbkgZlKU7wpc2LnT8mqwhbxQRNTTBTD7iC6mdUW/P5T64ZX9CkEjnv3Y/O Yk+2DpwMcQ63xADcwjZzAWraQ9JBmL4h513C05WPM/vhcl9A2EFHEZCiNxc3bbWn1tta Zrj98t+aZEuCTOxvjPd2x+TOKfNMcXbdEhhgdy/XHXxq6yWWMvPBGZuiNjl6ig3qqkgD HCEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777392083; x=1777996883; 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=VQANHWAgJWbGUByZ7ElwjIusOl7UBvMVgDS40O+mI7E=; b=GMVN9q0dp8bUmZDlk9q0IvHOIUF3J3yatxYtUIqsfxrb2zCrFzCjwLrkt05C8vXP37 mN6uUC5ju/Bv49sjkGAIcEaFRqDWjP13AUO1Ua0fwOqkebof2r3QRYGqKFd7EmFFDlGa cN+CuHEIG/Iu9WfCMnnL9HMWwmEFkF68AZqGvwYcCJlCCLu/ag++V8cnsizyvXxwAwr2 X4Rqb0G+dhITEY/hOgWPxwLCrX+W1T6NokdAGZyXPuE0VLUHDnajp3L0jAA76/MNdO3p GyPAP4iIHJQxY3OdTbxd5T1dLymOeZ20ZhaDsISUqdxY5lrDEz579bv0lmHY9mw+DzEc nNFA== X-Gm-Message-State: AOJu0YzI99pd/g+yLjL0kNXG5EAJrT67bO961+zkvw4zazWj/o66mf0A 1r9T5oY9qSATAvPBJTRQhTnuIqiNGIiqvW8LX9XaMskqJ9bSTEbbLkdOdzNmXuND+FHCoSSCsr9 tjf19xS8Xo7h6YYoBfJD/1QVH9QfMVFF0azn2aHBQcrHqg/LHvJbPYCh9Jhs9SRQ3Aj2k6wzkOu M+HFca+kwP76djYcDDs+CM8xHDvO+OhfyEXZyaFnTH X-Gm-Gg: AeBDieumyvVEh1b1MVn1140mROmy5apA9WtrYcV1xNnc8+DX1+kqYVssBO6IIqQHXGZ xJrbGnrHtGUodkla7tbPXjHCvhozA3VIiGc6geylEJltuFpWSQha9KZu4SFE48oUi7Bji3AXY9L cPfiTDTqKw/kYicsPshNc8LBs6vDOf0V2vtvjtOVAqH6710yFtCjBf2/p1kMBJXzoyfuDUyuBQt msQg4NiK8hKYzLd2PX+/90a5J3pBUSz9qHD4hQ8ldk4a+WZxHHX3EFu60MMX4znBtZzybLj+5TT Tj5FnOCPUo3YpAAW/Z0AQwuxMFtIc0rt78NdVha5BBTkQnyc5DK3hrW4K6eRQPkTcY+oboqvNoW 5RrapFLWg9Uj8+9w2bPaIAjfGQPv3b54Efm+LhWJ/4l9SD4jonDDyceABmVBjxqBbDYTy0xaCAw VEToj9qNPGj6cR8AQPV22S1a573kq4EeWg6iDHdP5Bgb0eG2ImZq5uGG4= X-Received: by 2002:a05:6a00:2191:b0:82f:6e9:d1ba with SMTP id d2e1a72fcca58-834ddc09748mr3996747b3a.37.1777392081770; Tue, 28 Apr 2026 09:01:21 -0700 (PDT) From: Jim Shu To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , Jim Shu Subject: [PATCH 1/4] hw/intc: riscv_aplic: Fix level trigger IRQ in direct delivery mode Date: Wed, 29 Apr 2026 00:01:00 +0800 Message-ID: <20260428160103.3551125-2-jim.shu@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260428160103.3551125-1-jim.shu@sifive.com> References: <20260428160103.3551125-1-jim.shu@sifive.com> 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=jim.shu@sifive.com; helo=mail-pf1-x42d.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: 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 @sifive.com) X-ZM-MESSAGEID: 1777392207719154100 Content-Type: text/plain; charset="utf-8" According to the AIA spec ch4.7 ("Precise effects on interrupt-pending bits"), pending bit of APLIC should be set/cleared whenever the rectified input value is high/low in the both level-trigger mode and direct delivery mode. Currently, QEMU APLIC only clears the pending bit when interrupt is claimed in APLIC, but not clears it when the rectified input value is low. (e.g. IRQ source signal is low in the LEVEL_HIGH/Level1 mode). The software may receive an additional IRQ if the peripheral triggers one after the software clears the APLIC IRQ but before it clears the peripheral's IRQ. Thus, we also clear the pending bit via the rectified input value in the level-trigger mode. This change doesn't affect MSI delivery mode. Calling riscv_aplic_msi_irq_update() when IRQ pending is low will do nothing. Signed-off-by: Jim Shu Reviewed-by: Chao Liu Reviewed-by: Daniel Henrique Barboza --- hw/intc/riscv_aplic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index 8f700431114..791e0b01b96 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -591,14 +591,14 @@ static void riscv_aplic_request(void *opaque, int irq= , int level) } break; case APLIC_SOURCECFG_SM_LEVEL_HIGH: - if ((level > 0) && !(state & APLIC_ISTATE_PENDING)) { - riscv_aplic_set_pending_raw(aplic, irq, true); + if ((level > 0) !=3D !!(state & APLIC_ISTATE_PENDING)) { + riscv_aplic_set_pending_raw(aplic, irq, level > 0); update =3D true; } break; case APLIC_SOURCECFG_SM_LEVEL_LOW: - if ((level <=3D 0) && !(state & APLIC_ISTATE_PENDING)) { - riscv_aplic_set_pending_raw(aplic, irq, true); + if ((level <=3D 0) !=3D !!(state & APLIC_ISTATE_PENDING)) { + riscv_aplic_set_pending_raw(aplic, irq, level <=3D 0); update =3D true; } break; --=20 2.43.0 From nobody Sat May 30 19:22:59 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=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1777392232; cv=none; d=zohomail.com; s=zohoarc; b=havOoW4ySzKH8KmOjl2qWeTprio2aD2eHvodfM1YTJhfMx6AUl/5cx2tDY3JnqW6HzZmAlNnXlUQNWy7ZsL7ktDu37fhGEBeoQ54kpPSoNWv5+7h014lRpxXF1GxOtaEpCxMIOyiqEGMN1Mu1KJCEYkoRo9NAVYrae6IuMEK7oQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777392232; 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=CgXtKy+iVz/buq8xrh+OuZeU7ZMd1UBY6bFU951VKdw=; b=EIRJWC/LAdmuSuNJM5mygXds/MVdh32njqzYLjXfHnmfPLhe8ISsib8ErsNYnQFxUXAEEGfBCpdbAFYBlCbOEhxP48aTLSOcvQhZfzJpsBpv/Rf18pbfhds7Tfs4KsXuHdKXoJiNZvxR+z1VhpocVlesWARZUj+6Ft3ztKDi6/0= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777392232458189.80557978669913; Tue, 28 Apr 2026 09:03:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHku2-0003zq-AC; Tue, 28 Apr 2026 12:03:14 -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 1wHksO-00036F-VI for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:39 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHksK-0003iU-9O for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:32 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-c76b9efc299so4831078a12.0 for ; Tue, 28 Apr 2026 09:01:26 -0700 (PDT) Received: from hsinchu26.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834daf30fbfsm3002331b3a.33.2026.04.28.09.01.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 09:01:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1777392085; x=1777996885; 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=CgXtKy+iVz/buq8xrh+OuZeU7ZMd1UBY6bFU951VKdw=; b=a6gfP3knLsX4FtRJhfd+HzAp5azDYWJ38TrYQ8VeAgo0IPzUGamnfmfuEo8C5gWEdt K46RBFZHwzVHpNlbtlrbuB3vxAj3Gm1KSw4SsY7uoiJHsOyVDsFLxPTlXFuf5829pDWh xH/I+hgnHRtCKY6/OBfGvHxN/nw4kvzk0H08qAQAq5onjJa1tKETUCosZij/vPdirDv2 MB34H2MuhbfPsxPaw/lATaKbHuqrvL+lXsk/A2ZcTmG8LG8FWH/MmmCE8Hbyx+IugzRl D5EmHkOp7Q2DL18NsdQ9tG6MK5lPcWZxVfg1vYM5OJKxekl7MTvpL1sXbN62LNOru11b DCGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777392085; x=1777996885; 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=CgXtKy+iVz/buq8xrh+OuZeU7ZMd1UBY6bFU951VKdw=; b=lFDUIpKgUwXYrxJBPA9Ab9lqlUsfCvdA4zq83DcPunQVGVHm46wVkFqRlDDBgSl4X4 nP48KXTLG+jG0y6y97DZhOOL17hNPeY3JRT94puTIh4WLJq1taFcqzUFsY04Zm8f63yd qccDDDlPwm03rJVvqVaVw/xsxxEGTJMMi1JlEAseZNq0TsE7UfrueRhWbEc9pQ2ixHyB /6uBGxST4DkoFRxqyEBKMsnFHazbxWh8dXEEIXPpiZfg/EtUeOiezOJyzCQxiAtEKKjE XXFSPurT9aOJGjDOWRd4HUTxgF6ndqIcu6pmbWsh4beTlN6TcxATx7r9+s3Pedpvw4Ch PcSA== X-Gm-Message-State: AOJu0YxCay4MHKh8Z7fEHfptoej0i16Sg3klxDyO4/ko3NeisJmOyISp BUMpGJgObODYJtPU6lDXd29SQYqq1fa11xxZekY8KTKWFtpi7mpT/ZYvw1MuTJt1En2CvWV7zkA 8gdnU+90w9p/QvtDHNLIts2E3VPsD0mgm3KhTS2eDJpuadXZmARcFunDV+KVHYam3rPSDsPqIAV bwQkJZQQG3MvyIgBOYTyzYF+atLHHcfUTG/5qC402j X-Gm-Gg: AeBDietRMLIF1zQRdaunuPa+L0mYVMVCeP0a2mF2CWx0cE/JIZcL3Mf0s44iwF9GY64 inkBWtcznjsWQ7ArXUrtwIXE0KzDM76LkQQWB6fjlz5ZaB2cqe4TV3CSIkwjgu6m3V+fC0e9MZg aJ4aFNWCYJpTqBZMFUxIOQf0WmByJd3GOonFeSlpLaDoWo3+XTcVnUn/KANIZrVKYnkoBXr3sEe 9nus8qB7vjCB6dgFbokE8a4EnoIkZXi6UwHG+SWsH9JqO1dRPLQlXVTo3ubotGohe6ixGv9S+DX AEMMw3HK9MJ4fRoaZRiPx3eeCNPT//BUFMS8XZEazVgQVJ21HnxvBVXMrZVAiBnPgaamY/GmwQJ TWAQiH3Vha7WBLeHKO9Ms4z9F8X0uxtfDR8iWvzxMus4woB30tkH2Q1OR2TVFt8pRpZJ2xDA1Ul qNoIqi9NJozdrO27cy0UUqf4f7HjeVE/M/qmAlrt5uq6Fvr/gXN4QSMUQ= X-Received: by 2002:a05:6a21:3294:b0:3a2:d976:2210 with SMTP id adf61e73a8af0-3a39c04e43dmr4507133637.8.1777392084925; Tue, 28 Apr 2026 09:01:24 -0700 (PDT) From: Jim Shu To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , Jim Shu , "Fea . Wang" Subject: [PATCH 2/4] hw/intc: riscv_aplic: Add reset API to APLIC Date: Wed, 29 Apr 2026 00:01:01 +0800 Message-ID: <20260428160103.3551125-3-jim.shu@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260428160103.3551125-1-jim.shu@sifive.com> References: <20260428160103.3551125-1-jim.shu@sifive.com> 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=jim.shu@sifive.com; helo=mail-pg1-x536.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, 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 @sifive.com) X-ZM-MESSAGEID: 1777392233748154100 Content-Type: text/plain; charset="utf-8" Clearing APLIC registers and qemu_irq in the reset function Signed-off-by: Jim Shu Signed-off-by: Fea.Wang Reviewed-by: Daniel Henrique Barboza --- hw/intc/riscv_aplic.c | 45 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index 791e0b01b96..a04e0e1a898 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -892,6 +892,44 @@ static const MemoryRegionOps riscv_aplic_ops =3D { } }; =20 +static void riscv_aplic_reset_enter(Object *obj, ResetType type) +{ + RISCVAPLICState *aplic =3D RISCV_APLIC(obj); + int i; + + aplic->domaincfg =3D 0; + memset(aplic->sourcecfg, 0, sizeof(uint32_t) * aplic->num_irqs); + memset(aplic->target, 0, sizeof(uint32_t) * aplic->num_irqs); + if (!aplic->msimode) { + for (i =3D 0; i < aplic->num_irqs; i++) { + aplic->target[i] =3D 1; + } + } + + for (i =3D 0; i < aplic->num_irqs ; i++) { + riscv_aplic_set_enabled_raw(aplic, i, false); + } + + /* Need to unlock [ms]msicfgaddrh.L */ + aplic->mmsicfgaddr =3D 0; + aplic->mmsicfgaddrH =3D 0; + aplic->smsicfgaddr =3D 0; + aplic->smsicfgaddrH =3D 0; + + if (!aplic->msimode) { + /* Reset IDC registers only in non-MSI mode */ + for (i =3D 0; i < aplic->num_harts; i++) { + aplic->idelivery[i] =3D 0; + aplic->iforce[i] =3D 0; + aplic->ithreshold[i] =3D 0; + } + + for (i =3D 0; i < aplic->num_harts; i++) { + qemu_irq_lower(aplic->external_irqs[i]); + } + } +} + static void riscv_aplic_realize(DeviceState *dev, Error **errp) { uint32_t i; @@ -925,11 +963,6 @@ static void riscv_aplic_realize(DeviceState *dev, Erro= r **errp) aplic->sourcecfg =3D g_new0(uint32_t, aplic->num_irqs); aplic->state =3D g_new0(uint32_t, aplic->num_irqs); aplic->target =3D g_new0(uint32_t, aplic->num_irqs); - if (!aplic->msimode) { - for (i =3D 0; i < aplic->num_irqs; i++) { - aplic->target[i] =3D 1; - } - } aplic->idelivery =3D g_new0(uint32_t, aplic->num_harts); aplic->iforce =3D g_new0(uint32_t, aplic->num_harts); aplic->ithreshold =3D g_new0(uint32_t, aplic->num_harts); @@ -1014,9 +1047,11 @@ static const VMStateDescription vmstate_riscv_aplic = =3D { static void riscv_aplic_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); =20 device_class_set_props(dc, riscv_aplic_properties); dc->realize =3D riscv_aplic_realize; + rc->phases.enter =3D riscv_aplic_reset_enter; dc->vmsd =3D &vmstate_riscv_aplic; } =20 --=20 2.43.0 From nobody Sat May 30 19:22:59 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=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1777392253; cv=none; d=zohomail.com; s=zohoarc; b=HU6OEuDK+A8ayrK/lFReMtGGcULdKRPZItZceWTmhfLrIgnX+tetwVQNZ6SRXTVZ+v2OAi1OVY/dceOlh67rtvDW4PUOAum1VHydKhKY/Jbiv2VvmvCZPVDAIHXv9lSpsVFMyeZbsI7nrmD50x3wt2/ms3jY8wR9rsA2bO54xLI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777392253; 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=I+5wI6eYi21zzKtm0yWLn4MFkpmieEFORcN4wGstIFM=; b=nwDHCeTD+Uwn2esgNd/eGBwnOZhpfJPy5YHO/eqVjF4dO6YMzXYs4hUPfdrk0cAUVP8N59T0dFzFOxpcEtZxTRln7J24koMWsp1WaFSVOXzx6LBI19JCWhubCxb1pjtYucq4EUNt4QIZcZmCBEOzb/Hc+DNcQTgWoPYOqhs5+IU= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777392253821277.1246136845622; Tue, 28 Apr 2026 09:04:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHkuW-00044G-6g; Tue, 28 Apr 2026 12:03:44 -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 1wHksO-00036D-Mi for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:39 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHksM-0003jZ-7l for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:31 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-8318293f02bso2334254b3a.0 for ; Tue, 28 Apr 2026 09:01:29 -0700 (PDT) Received: from hsinchu26.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834daf30fbfsm3002331b3a.33.2026.04.28.09.01.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 09:01:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1777392088; x=1777996888; 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=I+5wI6eYi21zzKtm0yWLn4MFkpmieEFORcN4wGstIFM=; b=DO/m0OqeXmLVKqMWXYHez9XSrtYh9vhHgepThO0dtd/2ixAGAUWlmoP3XMHXmis/s+ MWJfunJMK3ohRA+4uCuDsiJ+YifojJE/J9hqt1CbXP/2TDVTrzxX7owhVgFAnc0+pbL8 uVhT4Dwcu/WW3DU9YV9wFNDI+a/aEzvBQiG43iXNhrntrrjTC7NzZckiWqHgeSdn6wxK 0oAgXl4omAnjWuhPY5xrODxFe3GeJhzHlR0GRz1UgynBNTGXJWtSi76FvHdhn8eXCYgC 92QtYw1uFQMijAaXtcXpADDtcs9VwXYRtObuu97zczPk+VlpCVPupTiRFxSXbOs469th RY/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777392088; x=1777996888; 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=I+5wI6eYi21zzKtm0yWLn4MFkpmieEFORcN4wGstIFM=; b=cJthgHlBhv9sOLAJ/e1A21NFaRT9J/vUT6nPEAl/Rp8jol2kqucAiqszrSBelKXQxl TAAhWrwRSR68esIY9fLVCnqnydyWig03xEHkF/cEam37iRTNFIVblqcwPaCRdYJHfnZa R6RWn6qMgWAc3uXfuvNbw+JuaTZIixsCmpW8TF7/qJ5kHMHWn9qJopPnye8QjJTwJuI5 SJCllV/S+Hhtwa2zhOhPrAVGjY7WByo/y4LVrDMhHPXf1KU+VDOrRmlmO58HvT5CsJjq UEh2d02sWuqFTjoambdK9Qs8g2jRfWTdVE6E/tShd9m1ZdmKuCvG5Jo0hJYEXi2tcl1H O3ag== X-Gm-Message-State: AOJu0YyW54fSO+hiLMizOiLAgIc12gQ+qBpbVLu9qCR3eda4RAur20jA TGKD1eCnk9BhwhOt9Vqn6NhUmN2qPUHsRB2iD9YBr0MsPW3DWu6DKh5dcEQp561ZGUn9AA8zhRB n40/bX8lzRFULuQx49NLELAP1Gmxh+pGNB1T0JGMdtwyr0PWQDgwTTdPCvMKX2YIniPBTs8rmgT ttXQYjg4KPn8wallA7GmL8Rs4Y7dIdJ3xF6xodFHI/ X-Gm-Gg: AeBDiesEVSyYSxmEiQffbscG3fwJmXAN9B8s0eNaNx6A5gHN0C3j6kInTlN8QL2buQ0 VvTx9BW5598TUHhV0uHw7nkiWLPB2iy4FozdfWUs14q5T/8TAlzZ30EK76P4Qj9ZsPaFGYzRc1f nAEEwjMaRc//J0IMOyQQlwRbuo9gAjP26fbHsOT0qebt6kpCdzMsJOK7ZbUg31SIAgl4t1coQBt kmAvPNuF92H/ohVuZDs+lZuhqfrPcnhGuAQArIRJgKvrPkUpbRYXJtsMx4I2LEavI2CECslvUg9 BYmodbcewjUPLpV2KUffWMzOdzUKSnANx0FpygpcxXMr6d83ccd9JqlRBvaFHl0LXl71qJu4l1Y 8yq8AIX9qBYSfsO/3sBsRDuTeTtedo5oNcIuvIzD5EmnUN+hT8A4cXadLqQNaAAxoXjmmbT44am wZ5Tm+UGCkmzJ2dXtyINPSSIn/5F4o+DHi5wTEVMmQPhDZFO5yw9y2YafFuc/E00B8Cg== X-Received: by 2002:a05:6a00:80a:b0:7e8:3fcb:9b03 with SMTP id d2e1a72fcca58-834dcdaf080mr3424973b3a.25.1777392088000; Tue, 28 Apr 2026 09:01:28 -0700 (PDT) From: Jim Shu To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , Jim Shu Subject: [PATCH 3/4] hw/intc: riscv_imsic: Add reset API to IMSIC Date: Wed, 29 Apr 2026 00:01:02 +0800 Message-ID: <20260428160103.3551125-4-jim.shu@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260428160103.3551125-1-jim.shu@sifive.com> References: <20260428160103.3551125-1-jim.shu@sifive.com> 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=jim.shu@sifive.com; helo=mail-pf1-x434.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, RCVD_IN_DNSWL_NONE=-0.0001, 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: 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 @sifive.com) X-ZM-MESSAGEID: 1777392255948154100 Content-Type: text/plain; charset="utf-8" Clearing IMSIC registers and qemu_irq in the reset function Signed-off-by: Jim Shu Reviewed-by: Daniel Henrique Barboza --- hw/intc/riscv_imsic.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/intc/riscv_imsic.c b/hw/intc/riscv_imsic.c index 7c9a0120335..ac59496c22b 100644 --- a/hw/intc/riscv_imsic.c +++ b/hw/intc/riscv_imsic.c @@ -342,6 +342,23 @@ static const MemoryRegionOps riscv_imsic_ops =3D { } }; =20 +static void riscv_imsic_reset_enter(Object *obj, ResetType type) +{ + RISCVIMSICState *imsic =3D RISCV_IMSIC(obj); + int i; + + memset(imsic->eidelivery, 0, sizeof(uint32_t) * imsic->num_pages); + memset(imsic->eithreshold, 0, sizeof(uint32_t) * imsic->num_pages); + + for (i =3D 0; i < imsic->num_eistate; i++) { + imsic->eistate[i] &=3D ~IMSIC_EISTATE_ENABLED; + } + + for (i =3D 0; i < imsic->num_pages; i++) { + qemu_irq_lower(imsic->external_irqs[i]); + } +} + static void riscv_imsic_realize(DeviceState *dev, Error **errp) { RISCVIMSICState *imsic =3D RISCV_IMSIC(dev); @@ -425,9 +442,11 @@ static const VMStateDescription vmstate_riscv_imsic = =3D { static void riscv_imsic_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); =20 device_class_set_props(dc, riscv_imsic_properties); dc->realize =3D riscv_imsic_realize; + rc->phases.enter =3D riscv_imsic_reset_enter; dc->vmsd =3D &vmstate_riscv_imsic; } =20 --=20 2.43.0 From nobody Sat May 30 19:22:59 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=reject dis=none) header.from=sifive.com ARC-Seal: i=1; a=rsa-sha256; t=1777392230; cv=none; d=zohomail.com; s=zohoarc; b=POfIAC2vS1xm6sjfzt1aTkEezJ4JNnUgoj41uRDBZdeR0JRY2vVpKUwfzlGLwx+kyL874bUPKtdamA8yyxiVqizw0+AOfugzeG0GgELG4FelNpI5q2yqG670ClYTx+MF9DSltDl/EREa7yHmckyTuP+8w2G4fwA38MVLzwpf6o8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777392230; 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=/Hx21rvPtv3e1ezzyiyMTIiO3uaK5NV82dpiR14Fe1A=; b=TUouVzYmHClccGJGxX/17Awjf3HEsUuzjgjh6Y3fsayXJe4hTbaz3IvCcHUnXEWbIbe1Eow4II6j8uVWkAlBWZW7jFiiRXGbZbtJMY50ne0B6uCEAEFMp0yfupr7M3XilrYQqCX902L0YFVzKWzyzQ1e0ncM9MG76S80kVWoxgk= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777392229899265.99086692745686; Tue, 28 Apr 2026 09:03:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHku0-0003wN-3G; Tue, 28 Apr 2026 12:03:12 -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 1wHksU-00039w-A7 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:41 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHksP-0003lH-57 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 12:01:37 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-8296dabef74so9658538b3a.1 for ; Tue, 28 Apr 2026 09:01:32 -0700 (PDT) Received: from hsinchu26.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834daf30fbfsm3002331b3a.33.2026.04.28.09.01.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 09:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1777392091; x=1777996891; 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=/Hx21rvPtv3e1ezzyiyMTIiO3uaK5NV82dpiR14Fe1A=; b=I6cf0xLZ2xEBIqzjR+6APzJjiFFPGJOUbR0J0z3b5UILgXFyZi174TgpejsvxMhsO6 KAisXGrB5SRt5/Q1ZcwnU0ST1wLvUjixhUiuKdnxoE03CtB+xINYFzFy1Ugm6NGHkVKL npwpME9m6tQd13DqR5rkRUcXl4UjIv3Xx5LyiICBz4WCC16emxk2ki8EM/NB4r7kt5b8 Het4+RGisVQOElvW9Ok6IC0z6DljyZFfm8BZdqMa5DCm0z73VIHVVa7RXUZjgSgORJE4 yKE7XmMILbDOSyjyyO0ECYTVzgJcXMFuSFSnPy3zOx2WAhjVwOOQ7C3qqaOkBfXzLybi NHGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777392091; x=1777996891; 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=/Hx21rvPtv3e1ezzyiyMTIiO3uaK5NV82dpiR14Fe1A=; b=JSwbmnoRtdZODMfq444dOWyTm/wiL/KiAMbIhXCwQsr2R21u7VOC0y09JK7KQN9Raj A+avl4oxMPHZkS3Xclp1XgMON32/4YWgcy2+2zXjps/eJ8MvfUFN6jsHIXVl4rbmrIRS PIfUzHiQEKobKs9JzQGEJxu83wLKmcPENRsWO5qqxrXYaNR564sKDDiiQaM5tx0AUgqt a/V4mGkLk1s25l2SThRLgxUQ6MU3JZuIUKiRlcF6naioXv7J0d8sE6zOC1/HePI/EoPq ws3TbuaMkncHYTLjInlR0yLaTQX0W337XBSjQ+8PD/TDYE9MShD5x1VNkpnTYQ+rtXTF sWkA== X-Gm-Message-State: AOJu0Yy5tVOdHTRIbX+66IpLV7COQAUf1PEwjzo2TIbFFHl8JcVulPJj 6wLWDFbv55zPWo/SSlG1YB6qbIB6lKKaP9DotQQ1pKVYFQxhpsl1xq3mo0BOpoZkVWklHsCU2tk PQUU1blfVS1+ZsvdrhBecnVvSVhNbogLUlxZVD4o586kcgxSs+5nFqxc+ADf2L1WLLdYJtzxeHj fgwKwjhEzSXF25dY/sEKb11KehAMphcRqX1SpJlE+l X-Gm-Gg: AeBDiev8dlfvT9G0LT5qN991WqxFTLp+xH9BpInl9p/KlKwPoEpARHaaU0xxBEZONy4 cDD6EWnuxIH+OvunNFsY5aEpelPPuql4fiEvGdSfBIHl4FIyahkVZUgHzbAxXsuHyTCH9VRkxnW 1v2gW2FYsJl3iATT8QppIJh6ar4AfZDDCRncsJaoC9hWeMZ5FmmbKuHo9DYXqFayKGyC/80srmn SVOgbym7wRaJir0+HwEjvI08/Vxd99wLcOChjWTUlr1rwgOrx02gVR0e8cheZO1LaBXDuGpxiZF rP8KNmHRSPCAOFZScOigFwb52MUeKDTwjfOGZ4l6w8nMdxKAlvbVy3uL4xA+dt4DkBkALuZs6MN 4D+pJaho6GBsS5Ic9owXwTSsu1dzW92Lonl5RFSea4E4VMyUfvqA4uG0iMzZZpR4U8vnaG6nBhQ Z7Hcy6CRrSsOXitQvEM0zhi7UMLKkDGHRtMinpLgX+gGzUd3UMIgfI4P0= X-Received: by 2002:a05:6a00:3989:b0:82f:8a29:e3b4 with SMTP id d2e1a72fcca58-834ddc9558amr3530183b3a.50.1777392090710; Tue, 28 Apr 2026 09:01:30 -0700 (PDT) From: Jim Shu To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Cc: Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , Chao Liu , Jim Shu Subject: [PATCH 4/4] hw/intc: riscv_aplic: add trace events of APLIC read/write function Date: Wed, 29 Apr 2026 00:01:03 +0800 Message-ID: <20260428160103.3551125-5-jim.shu@sifive.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260428160103.3551125-1-jim.shu@sifive.com> References: <20260428160103.3551125-1-jim.shu@sifive.com> 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=jim.shu@sifive.com; helo=mail-pf1-x42f.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, 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 @sifive.com) X-ZM-MESSAGEID: 1777392231394158500 Content-Type: text/plain; charset="utf-8" Add the trace events for APLIC read/write functions. Signed-off-by: Jim Shu Reviewed-by: Daniel Henrique Barboza --- hw/intc/riscv_aplic.c | 63 ++++++++++++++++++++++++++----------------- hw/intc/trace-events | 4 +++ 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/hw/intc/riscv_aplic.c b/hw/intc/riscv_aplic.c index a04e0e1a898..55515d1a085 100644 --- a/hw/intc/riscv_aplic.c +++ b/hw/intc/riscv_aplic.c @@ -35,6 +35,7 @@ #include "system/tcg.h" #include "kvm/kvm_riscv.h" #include "migration/vmstate.h" +#include "trace.h" =20 #define APLIC_MAX_IDC (1UL << 14) #define APLIC_MAX_SOURCE 1024 @@ -626,6 +627,7 @@ static void riscv_aplic_request(void *opaque, int irq, = int level) static uint64_t riscv_aplic_read(void *opaque, hwaddr addr, unsigned size) { uint32_t irq, word, idc; + uint64_t val; RISCVAPLICState *aplic =3D opaque; =20 /* Reads must be 4 byte words */ @@ -634,18 +636,18 @@ static uint64_t riscv_aplic_read(void *opaque, hwaddr= addr, unsigned size) } =20 if (addr =3D=3D APLIC_DOMAINCFG) { - return APLIC_DOMAINCFG_RDONLY | aplic->domaincfg | - (aplic->msimode ? APLIC_DOMAINCFG_DM : 0); + val =3D APLIC_DOMAINCFG_RDONLY | aplic->domaincfg | + (aplic->msimode ? APLIC_DOMAINCFG_DM : 0); } else if ((APLIC_SOURCECFG_BASE <=3D addr) && (addr < (APLIC_SOURCECFG_BASE + (aplic->num_irqs - 1) * 4))) { irq =3D ((addr - APLIC_SOURCECFG_BASE) >> 2) + 1; - return aplic->sourcecfg[irq]; + val =3D aplic->sourcecfg[irq]; } else if (aplic->mmode && aplic->msimode && (addr =3D=3D APLIC_MMSICFGADDR)) { - return aplic->mmsicfgaddr; + val =3D aplic->mmsicfgaddr; } else if (aplic->mmode && aplic->msimode && (addr =3D=3D APLIC_MMSICFGADDRH)) { - return aplic->mmsicfgaddrH; + val =3D aplic->mmsicfgaddrH; } else if (aplic->mmode && aplic->msimode && (addr =3D=3D APLIC_SMSICFGADDR)) { /* @@ -657,65 +659,74 @@ static uint64_t riscv_aplic_read(void *opaque, hwaddr= addr, unsigned size) * only zero in at least one of the supervisor-level child * domains). */ - return (aplic->num_children) ? aplic->smsicfgaddr : 0; + val =3D (aplic->num_children) ? aplic->smsicfgaddr : 0; } else if (aplic->mmode && aplic->msimode && (addr =3D=3D APLIC_SMSICFGADDRH)) { - return (aplic->num_children) ? aplic->smsicfgaddrH : 0; + val =3D (aplic->num_children) ? aplic->smsicfgaddrH : 0; } else if ((APLIC_SETIP_BASE <=3D addr) && (addr < (APLIC_SETIP_BASE + aplic->bitfield_words * 4))) { word =3D (addr - APLIC_SETIP_BASE) >> 2; - return riscv_aplic_read_pending_word(aplic, word); + val =3D riscv_aplic_read_pending_word(aplic, word); } else if (addr =3D=3D APLIC_SETIPNUM) { - return 0; + val =3D 0; } else if ((APLIC_CLRIP_BASE <=3D addr) && (addr < (APLIC_CLRIP_BASE + aplic->bitfield_words * 4))) { word =3D (addr - APLIC_CLRIP_BASE) >> 2; - return riscv_aplic_read_input_word(aplic, word); + val =3D riscv_aplic_read_input_word(aplic, word); } else if (addr =3D=3D APLIC_CLRIPNUM) { - return 0; + val =3D 0; } else if ((APLIC_SETIE_BASE <=3D addr) && (addr < (APLIC_SETIE_BASE + aplic->bitfield_words * 4))) { word =3D (addr - APLIC_SETIE_BASE) >> 2; - return riscv_aplic_read_enabled_word(aplic, word); + val =3D riscv_aplic_read_enabled_word(aplic, word); } else if (addr =3D=3D APLIC_SETIENUM) { - return 0; + val =3D 0; } else if ((APLIC_CLRIE_BASE <=3D addr) && (addr < (APLIC_CLRIE_BASE + aplic->bitfield_words * 4))) { - return 0; + val =3D 0; } else if (addr =3D=3D APLIC_CLRIENUM) { - return 0; + val =3D 0; } else if (addr =3D=3D APLIC_SETIPNUM_LE) { - return 0; + val =3D 0; } else if (addr =3D=3D APLIC_SETIPNUM_BE) { - return 0; + val =3D 0; } else if (addr =3D=3D APLIC_GENMSI) { - return (aplic->msimode) ? aplic->genmsi : 0; + val =3D (aplic->msimode) ? aplic->genmsi : 0; } else if ((APLIC_TARGET_BASE <=3D addr) && (addr < (APLIC_TARGET_BASE + (aplic->num_irqs - 1) * 4))) { irq =3D ((addr - APLIC_TARGET_BASE) >> 2) + 1; if (!riscv_aplic_source_active(aplic, irq)) { - return 0; + val =3D 0; + } else { + val =3D aplic->target[irq]; } - return aplic->target[irq]; } else if (!aplic->msimode && (APLIC_IDC_BASE <=3D addr) && (addr < (APLIC_IDC_BASE + aplic->num_harts * APLIC_IDC_SIZE)))= { idc =3D (addr - APLIC_IDC_BASE) / APLIC_IDC_SIZE; switch (addr - (APLIC_IDC_BASE + idc * APLIC_IDC_SIZE)) { case APLIC_IDC_IDELIVERY: - return aplic->idelivery[idc]; + val =3D aplic->idelivery[idc]; + break; case APLIC_IDC_IFORCE: - return aplic->iforce[idc]; + val =3D aplic->iforce[idc]; + break; case APLIC_IDC_ITHRESHOLD: - return aplic->ithreshold[idc]; + val =3D aplic->ithreshold[idc]; + break; case APLIC_IDC_TOPI: - return riscv_aplic_idc_topi(aplic, idc); + val =3D riscv_aplic_idc_topi(aplic, idc); + break; case APLIC_IDC_CLAIMI: - return riscv_aplic_idc_claimi(aplic, idc); + val =3D riscv_aplic_idc_claimi(aplic, idc); + break; default: goto err; }; } =20 + trace_riscv_aplic_read(addr, size, val); + return val; + err: qemu_log_mask(LOG_GUEST_ERROR, "%s: Invalid register read 0x%" HWADDR_PRIx "\n", @@ -734,6 +745,8 @@ static void riscv_aplic_write(void *opaque, hwaddr addr= , uint64_t value, goto err; } =20 + trace_riscv_aplic_write(addr, size, value); + if (addr =3D=3D APLIC_DOMAINCFG) { /* Only IE bit writable at the moment */ value &=3D APLIC_DOMAINCFG_IE; diff --git a/hw/intc/trace-events b/hw/intc/trace-events index 018c609ca5e..36ea75049ab 100644 --- a/hw/intc/trace-events +++ b/hw/intc/trace-events @@ -330,3 +330,7 @@ loongarch_msi_set_irq(int irq_num) "set msi irq %d" loongarch_extioi_setirq(int irq, int level) "set extirq irq %d level %d" loongarch_extioi_readw(uint64_t addr, uint64_t val) "addr: 0x%"PRIx64 "val= : 0x%" PRIx64 loongarch_extioi_writew(uint64_t addr, uint64_t val) "addr: 0x%"PRIx64 "va= l: 0x%" PRIx64 + +# riscv_aplic.c +riscv_aplic_read(uint64_t offset, unsigned size, uint64_t value) "offset: = 0x%" PRIx64 ", size: %u, value: 0x%" PRIx64 +riscv_aplic_write(uint64_t offset, unsigned size, uint64_t value) "offset:= 0x%" PRIx64 ", size: %u, value: 0x%" PRIx64 --=20 2.43.0