From nobody Fri Oct 23 20:51:22 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=1792641831; cv=none; d=zohomail.com; s=zohoarc; b=l6x3P8nYJ8li4Jyn17qUkB9/OjClajJDhxbzgh6q8msV107hOGFXYYtLgIU191gXhu1mcX/682lQ9NOv/f2AZsJgbQ7s5JiN6x/hg7jk9Tcy7nANp3mjs57T8r1IQNBqn0F2MJOxEl7DeEd3UXajds37WQSXmuGJQjTUZ5FoIb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1792641831; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/uetjsA9Z42pxGQEPsZaIXxyPFdfdHALxEuTtBc7tAA=; b=klwcE/v4kRdUZFg+PNno9e6JGw0nVRvFtksjM0Y79O/YVj8cWfhBoUU+/7RmGS96sKodZ14IHDzcz9gtBNzukKa6Xv7XfVR20E32qnbpeyV5RuUEF/NqWKVqGt9MM4y03eEFHRnKH0K2Oq0tegERBKdfICS2Ztz/SOckgPB8d8I= 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 1792641831696676.4859361321647; Wed, 21 Oct 2026 21:03:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xJk1T-0003pG-Dc; Thu, 22 Oct 2026 00:03:23 -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 1xJk1P-0003nJ-0a for qemu-devel@nongnu.org; Thu, 22 Oct 2026 00:03:19 -0400 Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xJk1N-0006B1-5z for qemu-devel@nongnu.org; Thu, 22 Oct 2026 00:03:18 -0400 Received: by mail-vk1-xa35.google.com with SMTP id 71dfb90a1353d-5eabf7d5bbeso1531376e0c.1 for ; Wed, 21 Oct 2026 21:03:16 -0700 (PDT) Received: from localhost.localdomain ([186.151.100.62]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5eae969803dsm5859810e0c.2.2026.10.21.21.03.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Oct 2026 21:03:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792641796; x=1793246596; 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:content-type; bh=/uetjsA9Z42pxGQEPsZaIXxyPFdfdHALxEuTtBc7tAA=; b=kBw3iL61mp5l8/S1yhKSq06EpiE6m0YIJo1D7t/Ibd2vFiJgvOeH8YqjFmWS82ulVG 2GtWW41gwDAo47BvJhKmjBJ8Xqo4Ec+Gesd8jivPr0Yhngt1NyeXSeRml7SBIi+QKvJ0 IU4DaqGfICOnGV4PCCqal0LkmuU9Z9i8hoiXlU2IMb6L1whvaWF3+YvMiIAw14pgGQKp E05RQCZVO/CjViUdr+6DUMisf5Nu/F3DgxjoqI3QSBwPqsXD7osLr4rCWeKpsehFuKKC H398S0paVBVSTFKIldnm8CoDh4Z/DCqeMuX8K5bakLyC0jyv5qCagkk1k3o4jUrMpcWQ 89Tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792641796; x=1793246596; 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:content-type; bh=/uetjsA9Z42pxGQEPsZaIXxyPFdfdHALxEuTtBc7tAA=; b=OH4VJtqLQnIxiN/dZxu9nI2qX5y/u+gt36z5DaO3Kp+9KN4R6UYdFQ+BESCJaRYagn q5UAyPxoBrn0tbFNIHi2fvZxOLWLyJ+dokU84CIQ2UzdxhGuOP7pD7st1nT3ZkaD6WIz GzaupB5NDmCLycdgDwHnh4Q431k0i7hOFiivTEkqRwIsxk/uIS5jpAZQ3OFip0PWtMbU nEPMLA2TM56uNwSrxu1hQrrYwjdDqybfCqMrMP9sLKbHDuD+SD4Bf+B7IeQwZ0ZQxrcN m0b2A9JwlrgMMSPP5ZBknNrxeNdCWUB0gGWQMHK4Iu7v7TZmmkNynrcxVD+NfHC0b6xP WlLg== X-Gm-Message-State: AFq9FYKEJwxiI4yt+45Ozp9jmiKI+rr3arFy8giAaGjdiskG8cFLshux IujQiP+v6rcjuhqtZAsFzgs7jDHh1vfS5L5oxi9PIN+9GxgBqTclWMWhcz1kirms X-Gm-Gg: AYBFou0hyosFo2MvSlaq5nqXIEJiLjkgXnFrJTccXgk2qR6/DfprBHCNpdQIkdo8quh z++YHKeglvMkfkbnB0pcEafIoByBQD8GXyK7xxlHMWcvmNLQNkxMH8lqi2poZnW84jcIW5xYssD t4Eq06/Lk8dqrt8VkroHtfOf/yaE9T4lZQT2Nnbv28Pum0W1dtPUP+JUwH8yRERz1Se4KSG5uaz ROjg7T8GKClyblLajCpGjKPfjx2GF8AlHGy8h+RwLEhtLgfL46pcTAJer9VfKGrN4K/OIyUEIEA FIK180UZRBrjCUIHtCnxvQwd0DW0HCz68aBX/WKv9nhfwSW/xPczDbTn+YTARK/WqvIBH5UzZ8X StiSo3LYyKfcpJ4yAqfnnU3nZ7+r3XnAO4Hi7JGY8T0MbxRtqTk4ztMzT+3dOafMKuoGljJ4SNs kZb4W+wLcvODxCg36auSNRCUmFpTr5Rjjn16/vn8FWBhg0gSY4QvEHzlzKiH6bFKu7B9hbb6nQU bjzSFEzN0k5u13qrgr64IPKAtL4rmrUUydZeqt5SElY2q/1p+V3pLyGtRo1S7lQ6j6FsIr+NFeA Ehi5VUBRzHQEMEi76sY9emczIhFBfUrH2S/LArClH1o4 X-Received: by 2002:a05:6122:469e:b0:5ea:bfe3:6035 with SMTP id 71dfb90a1353d-5eaebd6d4bbmr1751513e0c.8.1792641796129; Wed, 21 Oct 2026 21:03:16 -0700 (PDT) From: Sebastian Alba Vives To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, palmer@dabbelt.com, alistair.francis@wdc.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu@processmission.com, richard.henderson@linaro.org, Sebastian Alba Vives Subject: [PATCH v3 1/2] target/riscv: pmp: clear A and L on every implemented PMP entry at reset Date: Wed, 21 Oct 2026 22:02:57 -0600 Message-ID: <20261022040258.1509306-2-sebasjosue84@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261022040258.1509306-1-sebasjosue84@gmail.com> References: <20261022040258.1509306-1-sebasjosue84@gmail.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::a35; envelope-from=sebasjosue84@gmail.com; helo=mail-vk1-xa35.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: 1792641834502158500 Content-Type: text/plain; charset="utf-8" pmp_unlock_entries() bounds its loop with pmp_get_num_rules(), which returns the number of entries whose A field is not OFF rather than the number of implemented entries. With a sparse configuration the loop stops early: with entries 0 and 1 OFF and entries 2 and 3 locked, num_rules is 2, the loop covers i =3D 0 and i =3D 1, and entries 2 and 3 keep their lock and address-match bits across reset. riscv_cpu_reset_hold() clears mseccfg, and with it RLB, before calling this, so pmp_is_readonly() then silently discards every subsequent pmpcfg write to those entries. The stale rules survive for the lifetime of the machine. Bound the loop by the number of implemented regions instead. Fixes: 4bf501dc0118 ("target/riscv: pmp: Clear pmp/smepmp bits on reset") Signed-off-by: Sebastian Alba Vives Reviewed-by: Alistair Francis --- target/riscv/tcg/pmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/tcg/pmp.c b/target/riscv/tcg/pmp.c index 41b55519a8..061f0e078d 100644 --- a/target/riscv/tcg/pmp.c +++ b/target/riscv/tcg/pmp.c @@ -201,7 +201,7 @@ static bool pmp_write_cfg(CPURISCVState *env, uint32_t = pmp_index, uint8_t val) =20 void pmp_unlock_entries(CPURISCVState *env) { - uint32_t pmp_num =3D pmp_get_num_rules(env); + uint32_t pmp_num =3D riscv_cpu_cfg(env)->pmp_regions; int i; =20 for (i =3D 0; i < pmp_num; i++) { --=20 2.43.0 From nobody Fri Oct 23 20:51:22 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=1792641857; cv=none; d=zohomail.com; s=zohoarc; b=nXcy/TJhqNu6c2nDheLTZ7gQSVIhAu0Vxd77kjWRhThcx7LPGwSn+xQbTILui0v5XZU3hIrBEiCfrEF79s4e9+Wf8MYhAQQD63BbOUtq0rqWbFicSa/NZU07ct3a6jffdXf0YSpm0XnjyXaKdXWEgvM+deqguZA5yS8x4IfC9BI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1792641857; 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:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=blifmjB3bz8B3ljsvWKzg0ctm7yw5Q0RBn0wK/bYCFg=; b=m92c1Skoz3gawd4tKYujuzEv2xZYzCBLOyetdR+a4rvUUMmbiADgdF90/0TuR9M62mRAUsibIkQGytQwWZRAWWlyegKVPvooGOiI9aYzwGVf08MbErGuNtbpCWHpq11a72yW2Y5BidkWz8ErgUU6GfqHfwMdgr8mBEE2i5c1QXM= 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 1792641857526404.7270980292823; Wed, 21 Oct 2026 21:04:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xJk1T-0003pY-Tr; Thu, 22 Oct 2026 00:03:23 -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 1xJk1S-0003oP-84 for qemu-devel@nongnu.org; Thu, 22 Oct 2026 00:03:22 -0400 Received: from mail-vk1-xa33.google.com ([2607:f8b0:4864:20::a33]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xJk1P-0006BX-OT for qemu-devel@nongnu.org; Thu, 22 Oct 2026 00:03:20 -0400 Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-5ebf39def3aso25614e0c.3 for ; Wed, 21 Oct 2026 21:03:19 -0700 (PDT) Received: from localhost.localdomain ([186.151.100.62]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5eae969803dsm5859810e0c.2.2026.10.21.21.03.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Oct 2026 21:03:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792641798; x=1793246598; 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:content-type; bh=blifmjB3bz8B3ljsvWKzg0ctm7yw5Q0RBn0wK/bYCFg=; b=hcQeVliLNTaoP7oDDt4GMKceBUmbnYe3d1fK7RB3Pvx19/D2HdB3dTb5KQr6CYWi+t dsIB6qxufn9gIi5pjqpG/PxFgimI3uWwSy5c/kRABFd9YV7V/cJCpyiJiGNxltxtmORS NCkiu9YQjfBjd36OKlWKNYoeF3aiJgRlcGiWBzG0ymllJ1Z+f+cv1qqBLRmEWRr+o/u0 AmSDRY4rkpZqY+8sKQTSKGhedKN2hLD1DITOFi8SicOvCWYJrklkuO9sYoqQ1zFxHTJh JrBJB13UQ+ldwM3dkqXVhM8OwUc/CGFFVIz7T0nBLhr3lRYIuuTeTzyIGjf5osv2rsg7 kSmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792641798; x=1793246598; 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:content-type; bh=blifmjB3bz8B3ljsvWKzg0ctm7yw5Q0RBn0wK/bYCFg=; b=z67BvhDZaqoOVGOrDUWKy/ifMbSClOgrjlfbkDzCcvcuT96RicEkxqk/IJED3hKuQe LePdoUFfQcqTX5St1vkf8p/l2QafDSaW6J9MhmWVJCV4Qf1QygUxbi2dMqywk2/L0fEf rTL4D5cIwEDGdTW0/7Wqs/9tWDVAq60S9jmiga7X97nQtwDau87cYyXP8rAiSzbl1M3d bemkogO40JTwmsRON/XG/vwx3zGye0C2LrH4QTQMK7h3fnxvn+NAfLTZ/O4yV4TfmutA 7QkcAb4xOSOV+EJZ8EnfQ/pp85DJ08TbsuSJr8C2IIQi+eOWrsBnvJKxPPc+UKz3nG9X sImA== X-Gm-Message-State: AFq9FYKbwlFZIAuHbxigTFtQESN0XLbS+Xtq3V+QnvDS4WzQCnW090d2 mrgKeH1ySB/yBYr8J0/qqoxIJx1ZQBoaWfexbgNmBriFMzTXijC0geeGl6YtCid2 X-Gm-Gg: AYBFou0g66Oqh/DlJjH29IvB2lreztj+PAvW4qH3BKf94hQw33973RIMKs/GQSq7cF1 By3Uzmc7DkOma1He6Nm1gxpuNtSThKO9wVm+72NXJrYXAKu+LP2n9+fDaE4J74fEYJP+KwR7nzn uIZYE9UADExkLqd281Wb/0ToZNbU2zHXzz1ntiYXgU9SXlG1lbOUp5QTlnZzJhk3P7lLLjtljgJ bZKsIshqYD67aoQyzGUc8kgBNJ3JS0muMaw0R/ub1Gd4jl7canWjlECptVKfER7sylxp7CzR1mH U2K065mHbCX9xBn9ttXLyccxte+4Rd6d4k7zWxhGSXym3fFjOeKf1LyhKKyiXlJzHzJS7N1FwZ0 2qyHxGeQqwwqVPhp/04KOmhJYc0KPy2smU6x8jVB/pvhxJVhNMnfunFyQvaIKWDXSw68v0y3/EG +Ps0qa5gMca5nZYOIvyDkbGoPH3nrrSlIr/K+w5zMpp0rjr/CSQlvvr/wI2rKZW9ou9/IRQmdmT AkzkMZ4+J/dIfOMHHz0nf1draO67tgk0Yp1ydiM7YvcwrKk3j7yKGj3S9MCuvyv1+cvOlQ8ROEv N3c6A2CRt8+YdVZhNIJjkFfTpOjq36wJ066k4hj0OfjF X-Received: by 2002:a05:6122:3406:b0:5ea:d14a:ef8f with SMTP id 71dfb90a1353d-5eaebdb1684mr1793766e0c.4.1792641798485; Wed, 21 Oct 2026 21:03:18 -0700 (PDT) From: Sebastian Alba Vives To: qemu-devel@nongnu.org Cc: qemu-riscv@nongnu.org, palmer@dabbelt.com, alistair.francis@wdc.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu@processmission.com, richard.henderson@linaro.org, Sebastian Alba Vives Subject: [PATCH v3 2/2] target/riscv: pmp: reset the derived PMP bounds and rule count Date: Wed, 21 Oct 2026 22:02:58 -0600 Message-ID: <20261022040258.1509306-3-sebasjosue84@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261022040258.1509306-1-sebasjosue84@gmail.com> References: <20261022040258.1509306-1-sebasjosue84@gmail.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::a33; envelope-from=sebasjosue84@gmail.com; helo=mail-vk1-xa33.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=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: 1792641859025158500 Content-Type: text/plain; charset="utf-8" The priv spec only requires the A and L fields to be reset, which the previous patch now does for every implemented entry. QEMU additionally keeps derived state next to the architectural registers: pmp_state.addr[] holds the decoded start and end address of each entry and pmp_state.num_rules caches the active rule count. Both are recomputed from the pmpaddr and pmpcfg write paths only, never at reset. pmp_is_in_range() compares against addr[].sa and addr[].ea without consulting the A field, and the partially-inside check in pmp_hart_has_privs() runs before the A field is tested, so a range left over from before the reset can still deny an access that straddles its boundary once the guest configures any entry again. Clear the derived state alongside the architectural fields so the two cannot disagree. Signed-off-by: Sebastian Alba Vives Reviewed-by: Alistair Francis --- target/riscv/tcg/pmp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/riscv/tcg/pmp.c b/target/riscv/tcg/pmp.c index 061f0e078d..04df53c234 100644 --- a/target/riscv/tcg/pmp.c +++ b/target/riscv/tcg/pmp.c @@ -207,6 +207,14 @@ void pmp_unlock_entries(CPURISCVState *env) for (i =3D 0; i < pmp_num; i++) { env->pmp_state.pmp[i].cfg_reg &=3D ~(PMP_LOCK | PMP_AMATCH); } + + /* + * addr[] and num_rules are derived from the pmpaddr and pmpcfg write + * paths and are not recomputed at reset. Clear them here so they + * cannot disagree with the architectural fields cleared above. + */ + memset(env->pmp_state.addr, 0, sizeof(env->pmp_state.addr)); + env->pmp_state.num_rules =3D 0; } =20 static void pmp_decode_napot(hwaddr a, hwaddr *sa, hwaddr *ea) --=20 2.43.0