From nobody Wed Aug 26 08:50:40 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=1779408510; cv=none; d=zohomail.com; s=zohoarc; b=Hru4HE09NWd3HCZxsrxDvoPrwtOCCNMK87cAcgZdUTjbLYOFjm5nB9XiyUarhQPMRkc0I9Jejs1HjT5h3Z79wPN7+N0OcqlFja0jPUgya78oh7nYCtxmY9ORogOphxIJB5WLhQZcRUJTUDhSgnpzyYknZx2+SRpW1sXKWYFebs0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779408510; 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=twKNIA8iq6mVfGklHL0d5uqCz0627Z0NNMjiNjuk0ik=; b=d2FjFvHWDxRy7Sggb2a18mGjX5NP+f3JguwvylgNsmDAq0MaLQ81G5dR9J3R5+2Fc0z3eKsLTI6BPDqne/Z0eANj+CAHIlzLCeuu8TD6u3KAAlxXONQt9BfrbBDZ2n3p7aBIgy1jhjyCPWtKYdKce39tvQLifGtaWCZ7nnVATUI= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779408510214154.18477532214933; Thu, 21 May 2026 17:08:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wQDQC-0005J6-WD; Thu, 21 May 2026 20:07:25 -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 1wQDP6-0003fl-E1 for qemu-devel@nongnu.org; Thu, 21 May 2026 20:06:21 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wQDP0-0004tf-2r for qemu-devel@nongnu.org; Thu, 21 May 2026 20:06:12 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2bd2051167eso31329275ad.1 for ; Thu, 21 May 2026 17:06:09 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2beb114b54csm3915475ad.42.2026.05.21.17.06.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 17:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779408368; x=1780013168; 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=twKNIA8iq6mVfGklHL0d5uqCz0627Z0NNMjiNjuk0ik=; b=TWctF2RqJeytuUIWdUm889dMHBISjpHuYw5s0Xub3PHNXV3K/chWGKujtTlE816E5g nAYfYNr6vyk1pGDqIxSwY+frcsJelflqZesNB0cjpUDSCwAc33nzXZIf9XePDIKCXqzg 89T1fKRU3A3J9vClaSySiq6T5cQq20Pz/bq/KG2rnvo+WpfyrEYuLVOFzM+rSbfuBJ/C qMgfIsc7ORztBKegBqqahk0QM3yn2Ouezzl7bGjjY0wXuYGPY3Q2PTq/Saer46kyAAty XVfi00IlAWjhOxvHXD8+DQtCB6JAVlm1b9jSNH434K+qOWrjTXVX09QlcgaoxVz4KnSj oj/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779408368; x=1780013168; 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=twKNIA8iq6mVfGklHL0d5uqCz0627Z0NNMjiNjuk0ik=; b=XFezJdy5EWVPSZPh7pHn7g9yVn/GlnK5dfTKMcekmn8KIudE4eG094CcqKXSQoEOL3 pqnyqWx/p7EmsoOlr5v64cq5j0GavB5xEjEezwPlSGmWdI5kDvDz0XkWh8m3IE7XdVAH 0nfvpahGZ3C3WY3P5oGjxoECFE+BFBm5fjgA+NA9DbHRXWRrpmuJ++XsO2Zu6PpvGPEX TZ3/HWop3tre43iA76dRhIG/bRsFXav5j6xChfZAE5nY5hym9eqKSNvhhV3PS486Cb31 tTQ084lmtOuYBAEyjditHENoJUl+qE1yDjJf00sGyqArVMyrJExnjwFK+W3io1PjaZYW ufUA== X-Gm-Message-State: AOJu0Ywqcyq+PgJAYpCFbSQ+37mvLoFKO0W5QDQvY/uhYSoEnfWtbIZf kAG7HDItJnt5v4Yx+h8EgcvlBAUaalOUivNxnA2zVcrpfYNMDiB1zf4G5W05iDaH X-Gm-Gg: Acq92OF9EdtkrYzz+iT0z+7jEsstkPwq8Q2KoxAtR7bDadEJ2nvJnV1iZv6vxvympCL MM4dS9l4DVTB8ntRB7jJDbMe9XC3ht2fgXyvKzMQ0PoBfKjcLIwnZSYyCIVG7yGj34zqUgt6/EO FSTjdpDx8fO+DwCv1c4RDKwq2z3TGfBCxfUtLvG9TSjSWFnngl17wJeOJCvKIHlSkFQNL+TOXeE Kf7Os9mjz51uUKLor2ydcG1TcpkIg56OCfVwncHTW0ru2FKhIjp1thyNFAJ5qkydafezt6Jp4O8 HB3et0PU3NtKtbHa+yeS5pegyFWpJw+nTqHaGZTPbd1VdRCDSHeDEQaLzFCthWW9e44aVSq4iJs b+lCW5crJZvI0EB6N3EJxyhV5uCJvP6ytFFpSLGqBe6uhgjdhJyGdaOu27wBc4sIbTuQm951wCk y07Qh7YMuuUP+NlG7FQej9aZXpxY69C7wvoiVRAVDE+A== X-Received: by 2002:a17:903:19e6:b0:2bc:7d5d:e2b7 with SMTP id d9443c01a7336-2beb069cff3mr11937425ad.36.1779408368113; Thu, 21 May 2026 17:06:08 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, Jim Shu , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 47/48] hw/intc: riscv_aplic: add trace events of APLIC read/write function Date: Fri, 22 May 2026 10:03:23 +1000 Message-ID: <20260522000324.23255-48-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260522000324.23255-1-alistair.francis@wdc.com> References: <20260522000324.23255-1-alistair.francis@wdc.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::62b; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, 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 @gmail.com) X-ZM-MESSAGEID: 1779408511963154100 Content-Type: text/plain; charset="utf-8" From: Jim Shu Add the trace events for APLIC read/write functions. Signed-off-by: Jim Shu Reviewed-by: Daniel Henrique Barboza Message-ID: <20260428160103.3551125-5-jim.shu@sifive.com> [ Changes by AF: - Init val to zero to avoid uninitialised build errors ] Signed-off-by: Alistair Francis --- 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 a04e0e1a89..c2c67c29e6 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 =3D 0; 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 c6696f0e0a..e7d6c30448 100644 --- a/hw/intc/trace-events +++ b/hw/intc/trace-events @@ -353,3 +353,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.53.0