From nobody Sun Oct 19 03:35:57 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1747628034; cv=none; d=zohomail.com; s=zohoarc; b=WswGvZCCubonJ01Ja5zNnSymz67CAKs97jds1vI1mvb8rE+yiskVGmXSOqtSYknToAEHLN5m4kX8Uf3FoUShCSrhD3L/GM3SYFCX6QpoairH8NRC5JGiBmlpRxSzYBTboclgTn4M+5xFb+R6r0AW9Af7bamZ5aCHaGaAPe922Qg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747628034; h=Content-Type: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=eQ8oK567cL4InAUCLjpcMcBvYiQLXRFYVbtoODZATfI=; b=O+53ZGQP7G3XdDxK05J0m5BJl2tKeRQmJk/hq/ESVXGOd1OchXOG0zwm9Yhup5S3/yZJNgN0WUqYaUZdLNe0Mgrp4JbxRsxkZClNrj9thXbIeQa21nNjIX8fNI0BTQJ7GheK2BPN5E/dsUToHM6OBreuPCBEpjGMSx5e/2m5zMo= 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 1747628034189974.7600121792303; Sun, 18 May 2025 21:13:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uGrsk-0002gk-JA; Mon, 19 May 2025 00:13:43 -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 1uGrmk-0004kC-Fe for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:33 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uGrmg-00045c-Pa for qemu-devel@nongnu.org; Mon, 19 May 2025 00:07:28 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-30ed99132abso752409a91.3 for ; Sun, 18 May 2025 21:07:26 -0700 (PDT) Received: from toolbx.alistair23.me (2403-580b-97e8-0-82ce-f179-8a79-69f4.ip6.aussiebb.net. [2403:580b:97e8:0:82ce:f179:8a79:69f4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-231ecd5ea41sm41750035ad.228.2025.05.18.21.07.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 May 2025 21:07:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747627645; x=1748232445; 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=eQ8oK567cL4InAUCLjpcMcBvYiQLXRFYVbtoODZATfI=; b=ZFOJwxFRF7tDSEo90iCHdp8ixY9FcBGrj2sJs1XAtDDOhXcWiT1RR8S8WCFyZWzvby wJW3ZEch4U6xnwhg7GCxRE0nd1gaVmw5IqOnv6Sa+/XCGaYQFBEeQ6MFX4QHe+kctFYs BEHDwgJIi/Jov/fnyrDg0UryjLQ86oUnW/T6rM/uHknle8X9PdZeakJHKhKh3WFfkkwc uV/cgPCfMJIm96JFZomOOuBXezDyvSt9DfWd9le06MF4gsMnIe6KffEQLBoH6H7GVPs7 C4gQM5Izscqc/LzULa8/vRDzhJXJCFIKnc+Sd5wbqNUl6bjKpOaUqrd5ZNiSBqrJ0TRE Go7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747627645; x=1748232445; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eQ8oK567cL4InAUCLjpcMcBvYiQLXRFYVbtoODZATfI=; b=e6fGHvPBrvzPhmVk9ZDi+j9Cen/X9Qti2aa/VL9+b9VwwdK37w7PVEMRdS2kslqClx IrQ526QEvUGXIFp838tesf/Tf2GUk2RIy2hKPdYSbZX4kJ0fn9AnwsRzfN3k6nsw/LhU NEogj8vAfhdC63WrRbE+MkLij3vFO0MtCj2Sl+tmmckimH3O/rWgEQRNYHKMxrbPVTSB rRjSOyKH3kBdnEJhnjwDsVe4BVX/eHQtGYspehttBN5xd4r7LvaLQagnTSyvPW13p3GW niRM61Z+FHhduo9YMVuRpUVhU+YjvR1J51NtRM1+rYjjdBfv1VFy0JYDw5JqhyJPkufq 3vrA== X-Gm-Message-State: AOJu0YylSvQsrg9qKLnMifahOniYebwc6y5YHHG2BFOEtftfOLJTOYYu nM58VwhbtDuEKCAanFxUQd23q26Jqz4fkYQKrxvjF7nvC4VrxGkK59NwJB/NQA== X-Gm-Gg: ASbGncvWYlQLPfJFZ9TUR/eAubhhEv+zLg6IX8M8MukuNnpVjbesEJePp0Vs4rS3nI+ 1vuI5B6L+PvGxs88kRDcHOS3onqt3iWSIcuE1HXQ9mBdwGa+RriGt6TH27c23MnMkExJ0qlJlNV 8/Uwc5iO4XXKjPM46z9FaWbvy5T2TZNrzIUcdU4bWN39Fb1T56qxPVEo320l4Mf5dvuQZBOcqF2 h1Ek5JK+zZ4cj+LXCylDpA/Vp48NAongHIE1WMCczJoqk6b9Ud15PwBQSUy/kQ4B1RKotMvuG8p SNuyaow68gOjmtV9qoF2XiFy1goDI8DITkmcSi7Zjb7naoNiPkqdFwuHRI4LI+XT5ilvg/CD6q/ 7gaZXkb8qY+3klYfUXIpVk8tKVCI4bkMpkuAVM+I7lf5V4nMDnJw3UH8s X-Google-Smtp-Source: AGHT+IGVOZWfhn2SIfXo1tf+oMj5+2825n7mGdgRmxejbaGH5S2f9xhJsJLeE7BHwf/6TbBYUkc3+A== X-Received: by 2002:a17:902:c948:b0:22f:c91f:d05f with SMTP id d9443c01a7336-231d45c99c7mr173264435ad.46.1747627644713; Sun, 18 May 2025 21:07:24 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Lo=C3=AFc=20Lefort?= , Daniel Henrique Barboza , Alistair Francis , LIU Zhiwei Subject: [PULL 06/56] target/riscv: pmp: exit csr writes early if value was not changed Date: Mon, 19 May 2025 14:05:03 +1000 Message-ID: <20250519040555.3797167-7-alistair.francis@wdc.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250519040555.3797167-1-alistair.francis@wdc.com> References: <20250519040555.3797167-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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::1029; envelope-from=alistair23@gmail.com; helo=mail-pj1-x1029.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: 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: 1747628035103116600 From: Lo=C3=AFc Lefort Signed-off-by: Lo=C3=AFc Lefort Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Reviewed-by: LIU Zhiwei Message-ID: <20250313193011.720075-5-loic@rivosinc.com> Signed-off-by: Alistair Francis --- target/riscv/pmp.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index 8fc313990a..4070e21ea3 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -142,6 +142,11 @@ static inline uint8_t pmp_read_cfg(CPURISCVState *env,= uint32_t pmp_index) static bool pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t = val) { if (pmp_index < MAX_RISCV_PMPS) { + if (env->pmp_state.pmp[pmp_index].cfg_reg =3D=3D val) { + /* no change */ + return false; + } + if (pmp_is_readonly(env, pmp_index)) { qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpcfg write - read only\n"); @@ -529,6 +534,11 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t ad= dr_index, bool is_next_cfg_tor =3D false; =20 if (addr_index < MAX_RISCV_PMPS) { + if (env->pmp_state.pmp[addr_index].addr_reg =3D=3D val) { + /* no change */ + return; + } + /* * In TOR mode, need to check the lock bit of the next pmp * (if there is a next). @@ -545,14 +555,12 @@ void pmpaddr_csr_write(CPURISCVState *env, uint32_t a= ddr_index, } =20 if (!pmp_is_readonly(env, addr_index)) { - if (env->pmp_state.pmp[addr_index].addr_reg !=3D val) { - env->pmp_state.pmp[addr_index].addr_reg =3D val; - pmp_update_rule_addr(env, addr_index); - if (is_next_cfg_tor) { - pmp_update_rule_addr(env, addr_index + 1); - } - tlb_flush(env_cpu(env)); + env->pmp_state.pmp[addr_index].addr_reg =3D val; + pmp_update_rule_addr(env, addr_index); + if (is_next_cfg_tor) { + pmp_update_rule_addr(env, addr_index + 1); } + tlb_flush(env_cpu(env)); } else { qemu_log_mask(LOG_GUEST_ERROR, "ignoring pmpaddr write - read only\n"); --=20 2.49.0