From nobody Mon Apr 6 15:52:33 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773887246; cv=none; d=zohomail.com; s=zohoarc; b=elfMtDt1EDS3TQKIWRKTDnTJG7qiFjgM0zgJHEB3u0wbit+J+SM8NgyfzmOnxz8IQDbCyXFcMGaXbc7v45+mZikGZFrwN2Pzo64ybCKhMRYDM4QvCBd1Shfg4FS/+H4dQCcqLmfM4kSJT1cRqOgFmYY+2Y1/jPtawpByrnONF7w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773887246; 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=OUjOedTJILydQY7f/OfkEk8wUHENkhFnJJVe3/bR9qI=; b=cCTnFx1IK8FDZWg89y1oKeDn/8/sjJryF6gwv6Nw6NTxl61I9KI1rYb6AZwVqRYUPKXbRzdDIgAjNOQTCpt8EsqUo0E1WY7WfOm38yDeJOpfDuqJQKMoz0UpZrnjcxH19q5uAd3G73LVhOKRZvhbv4H3eIzeBXXkwBPcZ7s44GY= 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 1773887246672857.0885717731877; Wed, 18 Mar 2026 19:27:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w335t-0003jR-D5; Wed, 18 Mar 2026 22:26:41 -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 1w335q-0003hu-1t for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:38 -0400 Received: from mail-yw1-x112f.google.com ([2607:f8b0:4864:20::112f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w335o-0002qU-KD for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:37 -0400 Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-79a535e7c00so5724777b3.3 for ; Wed, 18 Mar 2026 19:26:29 -0700 (PDT) Received: from gromero0.. ([177.146.137.168]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79a7141eb65sm28159417b3.21.2026.03.18.19.26.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 19:26:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773887189; x=1774491989; 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=OUjOedTJILydQY7f/OfkEk8wUHENkhFnJJVe3/bR9qI=; b=X7tUH0O6MNGJ/D9GNofqJeuPBXZLB+eclOoR5lO1i2lnmoLaPvH4OCfRTJNqhKxa+B hHVqQi0JJqriXilrNGy+KabXlcLYWfuVP8Dny1QhZYhF+Ly1W42vUYEGwIcstTOenPwE Q8iyPoY67RcPmjZVC2a9Fj/BkjU3Ii2f0IXDG8JWYaqkfCKTK5tGjFZ7xDIpIpZXXQD5 CSaeovXrh9KP5+L2RWLaByvWmoGTQQ7gzj7E4osgUTmYY7fWCAC00uOdfasa9jBDHDVu iGQwblC52UDbkq78Vj07DXQp0UWSpMEMkI7Rxa1/17d20lWIvXLBgk7/sijXFz3dm5Sk xHxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773887189; x=1774491989; 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=OUjOedTJILydQY7f/OfkEk8wUHENkhFnJJVe3/bR9qI=; b=fth1fAmnu0DjPJoyssDk6Bp4h5VEyYM3p5LHWoWvM6K4GwzHANLJ/QJTS9f0k9DnOk XkTeCDxUrlVPjGviTw5WJ40M3dXSPFVpzu4rTgFfiODCCago+tsf+zbQeYvhZU2r6Jkv woCzqexufaaab90jf3alFlhO2FMWxQDAmBFOb2FK5OCgDFJpaUwQgUEAdbPmH5D/pmj8 KjLfBpAsXiO5oOAG0+mnw+q+Fqk/g4CipR8oWxhSIso88SSXSjDDFrh1xeF6aEgBJ7Az bFK5G+E9izyfZeWAq4KyYxi1kC5m3/+9xkgv+u8OOkJdYrWWv4lFnlCyNv1QsmEHindy PZJg== X-Gm-Message-State: AOJu0YxOdOkIkIW7vKIY4LF3d0Pu39C5EdEUd/486nRXMkMlEoIumW5R pyGLvGsFEbEFUVWKPCQSFSz9FolsvQMGIrUPiSu3x1ZNk5jkGCVtseY6lchyYOMtVFj3a6/vZTL ZpXAUyso= X-Gm-Gg: ATEYQzwpbizzK/U4erpRLQNcaxPAtaV7wBF2+tSo4orYgB3iKLFI+b98p+S/29nMeus xLw7ZJgzngQDOeqaP5SYypZGEDqSQii9gqSWLeCgHnV4DT3GvE8KVQG91O4A3j3/+To+P1nT/fF HuYwVXNU40H3G3W/+5VarojPMtPy6OHTEYnpT8TDYg74QZRw9XNLOAqinh3TMfYJlJI8m+Fgzl1 +AmZuOUMUhS9ICGMRdWIWGOkhgNEyUHW3vZ4SF7n5qB5GfG4J0JcM0sL3a6YDfJ2DOhRNcRTqIA wNQHJGcSv8MpifJrF3QaELpqo+fySQMrNuQWndFhNKJWJxb6i/u1I9pVTwn3zVwpl5uDxQxWGQF wEwAtSkC0mE50WzZNvmOf9Z9yN7EHYAyBlJ3ZC2MIQROqayPPUfMJIfPRNdy++AjUA5WFbYRizD 8Jrztzr8GNHlQx608aoCwgH8K5N9kN+g== X-Received: by 2002:a05:690c:c4f1:b0:796:6df5:485a with SMTP id 00721157ae682-79a71ade093mr57741587b3.39.1773887189009; Wed, 18 Mar 2026 19:26:29 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, richard.henderson@linaro.org Cc: alex.bennee@linaro.org, peter.maydell@linaro.org, gustavo.romero@linaro.org Subject: [RFC PATCH 1/7] target/arm: Flush TLB on MECID write Date: Wed, 18 Mar 2026 23:23:29 -0300 Message-Id: <20260319022335.22523-2-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260319022335.22523-1-gustavo.romero@linaro.org> References: <20260319022335.22523-1-gustavo.romero@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::112f; envelope-from=gustavo.romero@linaro.org; helo=mail-yw1-x112f.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 @linaro.org) X-ZM-MESSAGEID: 1773887248786154100 Content-Type: text/plain; charset="utf-8" Flush TLB on write to any MECID register. This allow us to take the slow path and check if the MECID is the correct. Signed-off-by: Gustavo Romero Reviewed-by: Richard Henderson --- target/arm/helper.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index 6bfab90981..ec25ec8444 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -5125,6 +5125,8 @@ static CPAccessResult mecid_access(CPUARMState *env, static void mecid_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { + tlb_flush(CPU(env_archcpu(env))); + value =3D extract64(value, 0, MECID_WIDTH); raw_write(env, ri, value); } --=20 2.34.1 From nobody Mon Apr 6 15:52:33 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773887266; cv=none; d=zohomail.com; s=zohoarc; b=gGsLS1R85suINShIBhmfIEy8xLunzJklrk4bs+wOln0VdQvszLgbDsedGyIjX4IzisOJV22tngS1PJgW6SIpQzkUqe4MbFiV0pSRDBhyNW5sA+X1iqAzoz6m4PPo6sTa5xurgzNhTkj2NOGdlfHHwDa4SMrBH0/X303io8GFP4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773887266; 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=LqOECBK48fd3/HOaVd+Lj39XqKiw8Mz+sralwGO6znk=; b=M7myL+J12Gl+ddys7s8WhkdDSm8QTNz7/9aT12aFENzYUx12WXzy58oma87R/07SkfUIiHG1zm6jOjuYQ/VdXNvT/j9GC4CFL86k6X8QDtsiEmDd2m79vhfYZI+diqQ+tWnVtbPoOi9NLLxeawtQU454JNvxUiGAMZ6nPFvbGtU= 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 1773887266888180.9963343919494; Wed, 18 Mar 2026 19:27:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w335t-0003jd-Pd; Wed, 18 Mar 2026 22:26:41 -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 1w335r-0003i5-DK for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:39 -0400 Received: from mail-yw1-x112e.google.com ([2607:f8b0:4864:20::112e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w335o-0002r3-Ls for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:39 -0400 Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-79a51edef1fso24804477b3.1 for ; Wed, 18 Mar 2026 19:26:32 -0700 (PDT) Received: from gromero0.. ([177.146.137.168]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79a7141eb65sm28159417b3.21.2026.03.18.19.26.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 19:26:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773887191; x=1774491991; 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=LqOECBK48fd3/HOaVd+Lj39XqKiw8Mz+sralwGO6znk=; b=rdmBSyKIN6dqtCycNYee4/XxZlSvCHQx5amvwpBeZoPmC7qK7TsIDE7IvPal4ZRclk mOkjoC/L/oVTKrHhcM9d9YgZ+r59IE8TPVesZui3mxfdD6tQzvH7YfWNDLdTiy1PvzgP 5+Ha0pi7+Q53cyA5EXnlRR/7v9QFs9hpHIjwgQpmB7CW6PSYBHs33J0HKhwJPsKyDk5T 747O4VKDxQTTvF6SqJ5daocq0Gt4k72fK5PekEV2T8CWOFcNU1f99SOarrG+RumUDBzd lUBh4kZEz0iXp/goohLKV/Xb/OLglh6DM84xvmbXmj2no86JnKpeNx1d5lA9TtUIkqTJ VmqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773887191; x=1774491991; 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=LqOECBK48fd3/HOaVd+Lj39XqKiw8Mz+sralwGO6znk=; b=QXsQ8w5CymolwQIGPjqJ3Dew2fnFxlU2kjzTBNienwKkjnakr71JuTP3fANPsPYBQi Kv0VyHHNsclq5l/jtvOM472sway7tvaWVYFnHbIWgwXEiAqvtfHNFKSUNQcrIMl1uRZJ 29n7V5IUTuFeYqfSL+LCTJfXDfrTz2quWYFtDooQVuEPlU4bCAW05FfBxkPyk8q092OL pR6+w861Iuy+a088cdh0BFO/iceW5mhjc79T7I08lxXGJTUsDBymmeunBu/rHFqZUQDy o4o4TgetO0qTw031HefAfWkK3D42WOsS0ZBUtNmMTljimOFe5Uyj+10oGHUj7tqb+RNo /vnw== X-Gm-Message-State: AOJu0YxVH7vJG1qhBVtZTHQW/C8fFJJjMobFbn82AZov0B27TDPYYT0x I4TxoQMeuO7MpdfYlM0JvYuDhi3ckXwj1s7I0UwXZcOBdreWUP6SzEVh16fYQqM7XiI/nFZbu57 ubcOn76w= X-Gm-Gg: ATEYQzymW33x92mAfL5FyyWXy9SonBqgimKE3naQgFet2znI2LAIQPmyhReyTkwvHT2 7fdXK4rVU+og1Xkk25aXdIvNff94oJDHrSZw5RZRLA4POSEUFxYAJzIpXz3u5svAzsrn0iCz1e0 z8CWBOKs3SO6wJ7TwZdJq/AbXyWClHssgwu6bPf7fzv9GW4ZNCWpZN0BrCrDL7ycKmuE5d+y4n2 yDRfz2XoWX4qLsiBj/ej2VDCmsMelsAMKMwF0uQh18lSnAipGR88669DTJti+65vcHB2RB5lLSD 5YfDgycyPIics70YsClKqRf30Sg7nmwzk40iNFxVFIRkEuoGRktPNsICh6gc2QMcp23RrllPPO4 IuAJW73LBX5ke6IrNkL6054jwg1Fzogw5iq8kIka9lL4dahmJrRvDA8PvCj8csiPF2EwaAe6fWc NUMIJFwrz0EsfmXGgvtZcfJLRiJOX9bg== X-Received: by 2002:a05:690c:91:b0:794:c02e:f617 with SMTP id 00721157ae682-79a81a9018emr19109557b3.12.1773887191446; Wed, 18 Mar 2026 19:26:31 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, richard.henderson@linaro.org Cc: alex.bennee@linaro.org, peter.maydell@linaro.org, gustavo.romero@linaro.org Subject: [RFC PATCH 2/7] target/cpu: Add two new address spaces for FEAT_MEC Date: Wed, 18 Mar 2026 23:23:30 -0300 Message-Id: <20260319022335.22523-3-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260319022335.22523-1-gustavo.romero@linaro.org> References: <20260319022335.22523-1-gustavo.romero@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::112e; envelope-from=gustavo.romero@linaro.org; helo=mail-yw1-x112e.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 @linaro.org) X-ZM-MESSAGEID: 1773887269114154100 Content-Type: text/plain; charset="utf-8" Add two new address spaces for FEAT_MEC. One is used to store the substitute encrypted page, which is returned instead of the actual encrypted page in case of a MECID mismatch. The other is used to store the MECIDs themselves, associated with physical addresses. Signed-off-by: Gustavo Bueno Reviewed-by: Richard Henderson --- target/arm/cpu.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 657ff4ab20..87c1787c9b 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2364,7 +2364,9 @@ typedef enum ARMASIdx { ARMASIdx_S =3D 1, ARMASIdx_TagNS =3D 2, ARMASIdx_TagS =3D 3, - ARMASIdx_MAX =3D ARMASIdx_TagS + ARMASIdx_MEC =3D 4, + ARMASIdx_MEC_PAGE =3D 5, + ARMASIdx_MAX =3D ARMASIdx_MEC_PAGE } ARMASIdx; =20 static inline ARMMMUIdx arm_space_to_phys(ARMSecuritySpace space) --=20 2.34.1 From nobody Mon Apr 6 15:52:33 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773887282; cv=none; d=zohomail.com; s=zohoarc; b=RP3ymT+k7263pP0xEaIgovntfUchDs38bLIqjwj+Trl5mWnZQfQU6Iz/3LLfskEi/TfgWzFMhREMKJ7EF2HwiVTcOsG0nKAL9zjiQZ3P1Z1+2JaH2qx3o5CDusK+ane08v0nj1CgPL4eWT7GGZ7XB0ttULiXvDrbFryIWzYF4JU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773887282; 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=pPR+B5HhuRzCWChWo5IsIa4xYMcv5gwsDSjxGxdN6ps=; b=l5KDbxhq5oXltdyTqIRALr9U+/QAFHaOgvoPdEM0LRPFG1r4isXGiTtWyFlZPpy3bi3AahELzOe8PbaZzQMXb6H3Oa9wJNYmJuX0wG64enOHdgrlsQCwF/9qUbT3h0IwOZSJENwgRLFWmBq96wK/jyPzIVIb2qrtW8GD+WIx+ig= 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 1773887282492992.7109765604523; Wed, 18 Mar 2026 19:28:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w335u-0003jr-FD; Wed, 18 Mar 2026 22:26:42 -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 1w335r-0003i2-8f for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:39 -0400 Received: from mail-yw1-x112f.google.com ([2607:f8b0:4864:20::112f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w335o-0002rJ-Lq for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:39 -0400 Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-79800183233so5546777b3.1 for ; Wed, 18 Mar 2026 19:26:34 -0700 (PDT) Received: from gromero0.. ([177.146.137.168]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79a7141eb65sm28159417b3.21.2026.03.18.19.26.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 19:26:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773887194; x=1774491994; 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=pPR+B5HhuRzCWChWo5IsIa4xYMcv5gwsDSjxGxdN6ps=; b=bKh81J/4AHgqGUmmfxHajKnHUs1b1shVLeoCNbG5v0X5sg6/h9pjVesCpANr0M4fJb Nsx3v+jfgH2ty/sYdHyLMdd97d72HPz1XeA5A1kB9PjcTzYRjBp4zUh1Xh62PBQVQUfG VKsziPeKkj+p/YYwqNYI3KNxub5UlDTx52hZrrAwQ1EmMZ2bggppGBHIDf4+t5QdNyGS EprseK+dP1TXsxFxikcsw14XVlYX8qW9vvuIbFkZC0dbCKEJQ2z2LOnQPQ0r54orKv35 CXhp5upLxHdglxQHxhMFGV2nJGcA6Gc8ZPSoXIPKI2qxHidOhSnqzVId3YdC0r5dgvKZ IePA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773887194; x=1774491994; 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=pPR+B5HhuRzCWChWo5IsIa4xYMcv5gwsDSjxGxdN6ps=; b=LllNLNHX9wRO3vFmqXZ4Xnd09BrGvtTZhJWJDfILDbrEDwbHIvegvs1NrwgOevH3tW GYt0O/4J1Ovl0zsErU29VjiP7GHXhdtj96CdYGxqtiewGMyHNx0bmE5D7Z1+FlPI+hh5 Px49la8dp7+hRFFhF+ETtCKc0D/4YTL4BdBSoq5Gq7Cns2doRto3UML0a8ji4JDRU7Pj l0Cg/y97P3hrVdSFeT+R+z1nQ7zWkCw84uRs0kLfiozgraxgyd6kEuqdQ7W1htzaHfI+ RS3EEh+LD/5stskuMAhMJVGz8lwxvXnL2CAfsTYqCOj3oj2vKYIFnIddNoc6drME+kZB yHVQ== X-Gm-Message-State: AOJu0Yws6AbQN3wJO5WyNFByd7IuTiUB8PXTLTupLC5G64IGEZ7JP/YF T24IGgn8xrusTg1kS8uhp1BHSmf2KcXIx6GEqTws/XcvAh7O3xKq1+xRGRN11Ck+nxImzPA6Lyo jRUJ1vBw= X-Gm-Gg: ATEYQzz5UYn0gf5O+l4hT+m2z/wd2eVDKjDI9gwi0o05OCxhLClp+YB0cZNnYwgMTu7 hy4ytZdBLBHMGNvlBFphgzvukthPTYfQpAmMLSfUoP1cYqmesjV6yxdGnKwb/QMdbHOYiDPasny mFQ1T9AjKbHnk94vnqQpPQF8P+gunMIrAR1GrdZCKQIEgs1VWO+2UikD7rDINSqRoY0HJc+zfZp /QI2sfw7Z0Mpz5DmHms9NtYJ9/aorJNGNjpyDX9lLj4VTKPbtnIamxQhNYYUcRmxztHkf01nIsk nzIByg4otP9LlyjXgpF+NKf0lw4fNihhA6kNlqBR08ck2GUBAeDpBm9QTl27gPCi6/Cnx5hF9L5 Sbqc1+qirFC6ZZ+q3D6yNdqf3Kus4658SqljZPnMwcMwPaEt48KVeoZevSW9oS7ZPTRtbW6zvtR vZSNLiFXdQNMzQO7TfGAWsIkE4EN+LEOT9oEGjrvRC X-Received: by 2002:a05:690c:3481:b0:797:bc42:9e35 with SMTP id 00721157ae682-79a81b952afmr17720397b3.23.1773887193848; Wed, 18 Mar 2026 19:26:33 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, richard.henderson@linaro.org Cc: alex.bennee@linaro.org, peter.maydell@linaro.org, gustavo.romero@linaro.org Subject: [RFC PATCH 3/7] memattrs: Add new attribute 'encrypted' Date: Wed, 18 Mar 2026 23:23:31 -0300 Message-Id: <20260319022335.22523-4-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260319022335.22523-1-gustavo.romero@linaro.org> References: <20260319022335.22523-1-gustavo.romero@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::112f; envelope-from=gustavo.romero@linaro.org; helo=mail-yw1-x112f.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 @linaro.org) X-ZM-MESSAGEID: 1773887283356158500 Content-Type: text/plain; charset="utf-8" Add new attribute to the memory transaction attributes that is used on Arm to select the address space where the encrypted page resides. Signed-off-by: Gustavo Romero Reviewed-by: Richard Henderson --- include/exec/memattrs.h | 7 +++++++ target/arm/cpu.h | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h index 52ee955249..efe9d9c7ba 100644 --- a/include/exec/memattrs.h +++ b/include/exec/memattrs.h @@ -57,6 +57,13 @@ typedef struct MemTxAttrs { /* PCI - IOMMU operations, see PCIAddressType */ unsigned int address_type:1; =20 + /* + * Memory is encrypted. This is used to acccess the substitute + * encrypted page that has its own address space. This is required + * by FEAT_MEC on ARM. + */ + unsigned int encrypted:1; + /* * Bus masters which don't specify any attributes will get this * (via the MEMTXATTRS_UNSPECIFIED constant), so that we can diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 87c1787c9b..ebf4e4e01c 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2596,7 +2596,11 @@ enum { /* Return the address space index to use for a memory access */ static inline int arm_asidx_from_attrs(CPUState *cs, MemTxAttrs attrs) { - return attrs.secure ? ARMASIdx_S : ARMASIdx_NS; + if (attrs.encrypted) { + return ARMASIdx_MEC_PAGE; + } else { + return attrs.secure ? ARMASIdx_S : ARMASIdx_NS; + } } =20 /* Return the AddressSpace to use for a memory access --=20 2.34.1 From nobody Mon Apr 6 15:52:33 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773887318; cv=none; d=zohomail.com; s=zohoarc; b=m1tOG9SidF1oyzQkV8n2eVbfk/YRJ/lMUGvwjZy5iFGbOfDPi0BPm2n1/T0jqEzIuI6KT3XsHUNknTBpVNunhnzeZSTJ2Ajt52L2D2QrG4I+Fa2fdDKaq1MDC4/3j5fQRS4XPiYdP3bXCJupfGl5AI0wjZXB0jbiKMrrVSontMQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773887318; 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=DKkANjLZg1ioAK7kFziWCBF+Rd7tkHlYjXgtjul6Zjg=; b=RJdrPA/z3PYAW/kpwq9es79qHv2NQrBXpF2mJ7ZWBtJsnNJbNcaGT9rFQYjzMDWwX8pAsKEnkNJnkdswKjTL8YGrivhpQduAqptTo4H909QG1n/x07jp8YgxGx8iz75Q5Ey41I8bY97Bl88EOk4vQ2+5GYNi8NwnwT9TJ3XArEc= 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 1773887318064718.4783893557246; Wed, 18 Mar 2026 19:28:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w335x-0003lo-5F; Wed, 18 Mar 2026 22:26:45 -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 1w335s-0003iC-Jn for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:40 -0400 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w335p-0002rl-FK for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:40 -0400 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-79a535e7c00so5725127b3.3 for ; Wed, 18 Mar 2026 19:26:37 -0700 (PDT) Received: from gromero0.. ([177.146.137.168]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79a7141eb65sm28159417b3.21.2026.03.18.19.26.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 19:26:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773887196; x=1774491996; 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=DKkANjLZg1ioAK7kFziWCBF+Rd7tkHlYjXgtjul6Zjg=; b=MGCiiPxEHjBVEbVePiv3NpSD5HJr5ykm90U4JZDrxPkiTcIOJIUP7yX21kvut4hM4A quqCvi9r/92mHmuxNyI7et2un/X5Grnk6Np0aoOoyRzyGmeD9EmneYG5itFvx5X+XJcA C/TUJEPUntO4Eh+2igQ40UexikzksbZx5CTtL+FpfplTHnFGt7F4t0AsnP0sBifmSlyb nuVJjqUZyG0CSaluDNlvW2h/hqVFGUm4rFjylzE2ZyZ39Eq1CnZCSsovN784pri8kPpj PozXNrq0IyYk5MVP74Xud0IYHzEHZxzixBfhC9S2RaeNmq6D5G4RzO6eOJCyZoOFdDmy bLbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773887196; x=1774491996; 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=DKkANjLZg1ioAK7kFziWCBF+Rd7tkHlYjXgtjul6Zjg=; b=Y7sb8g+YuKeWwZLx1MYcvN8G/78NwMdxAIASNrITRTElzre0CHEQG8YoWYK0CxBGyb rEt/8vFvotYSkEkdPFs77z+B5l2RQGlYvnO0Uj1VtVJY+6BBNTfZprqeLpn3hFcy6zzA prOJPV3KQb+xxAwLey3ArE6Z1R832c8PoBEf9sotv9U3QImY+go/bNyHltQeeKdk6iGk 46SYNECZRzprgm3rvGuP/JJCaHhvOgOpNQtJw+eLgXIrmzd8rRrpHDllFwZxqdDjDC3I v2zzHY6O0bIxXyZb0gbctodeDWFFpub5QMMnCgwbGKxCUB5N97U5dzcogTOgE7hpIwVN cb0A== X-Gm-Message-State: AOJu0YxXgSDImRjRDIGOz+d+NUxpEuDORLtX+/zmiZjqbnRKvfFz74bk IbIL/gjgw/f/O5101y3ZtLXIrg6EMvlATXjzLkf4W9W+zOb2VrXK6cxpHsb2sQhpfTPXrxsqqrc vrf0LSYU= X-Gm-Gg: ATEYQzzGum1P1P8vW/yC8Dt8Kiqs1VHEg24KxKFQQwo5ggVGcUWenbzKn5yIKVP6Uyt dA4xl/jlxhw1kaSOTtQDl2MwudgDzChCV2I5LI/rGsA1HrRtJ17tPCAlLROJtSwvbZ+0TDJiGib D2ed8PEG188yBcEKoCNdxpPr+1dyZqH4gCcq0uszobUoiTr/dJL7K9OXJZTgkOxdIDEwkNGN/U/ VNEgZLLOPdi1nif9/Z/WlxidiUWapW+IV55yDATyL+9jt9LhalRMIz+Dr+MHcangHvtbJCJouE2 QxQhkeEfAwkeaKtcpgRzn+cQmx8zGHgIC3bRAjwOITqKmg9i/kOw8OIC0N6mjceCBFKAYU2pyA+ uMcVBwN0zTJExNsKomn190JQ7Jf6eRNwKhSrqwrWPB3z8XynuOP6HMj1iboY8I49fR0enYTbnAu kFE++SS66l2fYy2IJu2BIIRMqhnlny8Q== X-Received: by 2002:a05:690c:9988:b0:79a:6eda:b24e with SMTP id 00721157ae682-79a71ade8bamr60109677b3.33.1773887196291; Wed, 18 Mar 2026 19:26:36 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, richard.henderson@linaro.org Cc: alex.bennee@linaro.org, peter.maydell@linaro.org, gustavo.romero@linaro.org Subject: [RFC PATCH 4/7] target/arm/cpu: Add FEAT_MEC object properties Date: Wed, 18 Mar 2026 23:23:32 -0300 Message-Id: <20260319022335.22523-5-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260319022335.22523-1-gustavo.romero@linaro.org> References: <20260319022335.22523-1-gustavo.romero@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::112a; envelope-from=gustavo.romero@linaro.org; helo=mail-yw1-x112a.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 @linaro.org) X-ZM-MESSAGEID: 1773887319354158500 Content-Type: text/plain; charset="utf-8" Add 'mec' and 'mec-page' object properties to the Arm CPU object that allows setting at machine level the memories used by FEAT_MEC. Signed-off-by: Gustavo Romero Reviewed-by: Richard Henderson --- target/arm/cpu.c | 20 ++++++++++++++++++++ target/arm/cpu.h | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 7e3e84b4bb..98bb559eb2 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1542,6 +1542,21 @@ static void arm_cpu_post_init(Object *obj) OBJ_PROP_LINK_STRONG); } } + + if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64) && + cpu_isar_feature(aa64_mec, cpu)) { + + object_property_add_link(obj, "mec", TYPE_MEMORY_REGION, + (Object **)&cpu->mec, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + + object_property_add_link(obj, "mec-page", + TYPE_MEMORY_REGION, + (Object **)&cpu->mec_page, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } #endif qdev_property_add_static(DEVICE(obj), &arm_cpu_cfgend_property); } @@ -2169,6 +2184,11 @@ static void arm_cpu_realizefn(DeviceState *dev, Erro= r **errp) } } =20 + if (cpu->mec !=3D NULL) { + cpu_address_space_init(cs, ARMASIdx_MEC, "cpu-tuple-memory", cpu->= mec); + cpu_address_space_init(cs, ARMASIdx_MEC_PAGE, "cpu-pseudo-encrypte= d-page", cpu->mec_page); + } + /* No core_count specified, default to smp_cpus. */ if (cpu->core_count =3D=3D -1) { cpu->core_count =3D smp_cpus; diff --git a/target/arm/cpu.h b/target/arm/cpu.h index ebf4e4e01c..a91db25d68 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -977,6 +977,10 @@ struct ArchCPU { MemoryRegion *tag_memory; MemoryRegion *secure_tag_memory; =20 + /* MemoryRegion use by FEAT_MEC. */ + MemoryRegion *mec; + MemoryRegion *mec_page; + /* For v8M, pointer to the IDAU interface provided by board/SoC */ Object *idau; =20 --=20 2.34.1 From nobody Mon Apr 6 15:52:33 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773887308; cv=none; d=zohomail.com; s=zohoarc; b=fk10KRMEc5PecOqwYhLQpZWeuDrCPMpUDJogaDqSthw56TMghL0SLqNmETKe13WkPkpIb2r8bd6Mb9pxh5nO3Q8N9aU/Y+/7U/Tg10dAkeZD3MMp3zTKnV/3lMSIhxhC5RSlgRdgdefLUesX6KZjRYnaef4RSqQnZdxxqvdobug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773887308; 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=Tj5zvCy48mw2g9/BEVzB0FOExoU07LA09j0teQZUMxY=; b=jrHz/o1p4i29sJGdsR81oeF1FgLgIjllS2sFisErxFvohuRRIiB0v3H9RoxuVV59WSVugy3lDd1vnXWNx0vXF32+Xh+NoPWs0x+OvHpEBxjLaeYko269nMKxbwsIT7Njk+JgomY/u/DVDhV0RKU1bFi+Sz/O4jQu3Y94+DokEAE= 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 1773887308440248.75008815677245; Wed, 18 Mar 2026 19:28:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w335x-0003ma-T3; Wed, 18 Mar 2026 22:26:45 -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 1w335t-0003jX-Ku for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:41 -0400 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w335r-0002sn-Vv for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:41 -0400 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-7947cf097c1so5340317b3.2 for ; Wed, 18 Mar 2026 19:26:39 -0700 (PDT) Received: from gromero0.. ([177.146.137.168]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79a7141eb65sm28159417b3.21.2026.03.18.19.26.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 19:26:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773887199; x=1774491999; 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=Tj5zvCy48mw2g9/BEVzB0FOExoU07LA09j0teQZUMxY=; b=KbybQ//RwTPSOkMhhQnKZ35QBMlv4ccKDrtSsAv/IWCY8pzIwGC63EGo8ZJgIzjzTM G5SeY1XxYXy7L1PHpbRINC9Cif4b9Aofb5k4J5dx67ZtFjEntMol+++/Y2LeFlwnwQm0 TUmlQguQehMsYvqw2jCKtmEyikqecj5M1zJRUifqRhBGYR7IKATVJRQZqJ/UuMIt57SV n3brlpOVbnltPaI/VOY5+KhXLeQ5YIXIOPI6PridFPNulb3MGD6PcN4V3k9l5wvKR++d zjFep4mzndWS4nKi5meqqDfqOJzw/ctiC4n7+0X4ZRmR+QPQQLvR9yt8lGr/0CfsGZe1 KsOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773887199; x=1774491999; 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=Tj5zvCy48mw2g9/BEVzB0FOExoU07LA09j0teQZUMxY=; b=XrU/Eg2yOZ3G2sSgqdu4z22KLJJeEsr3uR616gkTE1V04FQEN0am8FKCLG80yDg1pL 8GRgcAH0nWokwKxaf6LGj9aNC5dZ/+1/7P4onIEDJpJi2TNjaGstTTd/8+6ul/EZL7li 1YzVwto3X53fCdOoPD1WyAIPMNtzKd21MLGWkbbi2l9lNrKMsMcAQlOhv8vVP+HnYI0G FT/yvzY3Qh05ePyftvFY5+67fzPT/quHuEDcTUw2s9g6Igk3TEq3jikT8wCHfOVgG+CP qcGhywePTu02moMj2LiEfby1c5cpih2Ob0kO8ObcXfC4O2Ogk5hY19IUjdnKEiB5lMIE j8gQ== X-Gm-Message-State: AOJu0YywvHBmir2bsx+8yFrPJzXlmQjCEKLr+6L/OGiQxVLQvyhYAUyI 6ecIwMTushNxNbBn5qn69tCPtI1otCSJtjF1Xj2f4eUo6WB2sjtzqLHlKPUlQ4FOwRwCZSYz1+D 9Gan3s2k= X-Gm-Gg: ATEYQzy2Z+dbsGAOvxT/PMhgY+2iKj/FaRNMXZNECtnRmhQikGJGbEU/y55O6KGw7bs jV7mqvSajqYnp6/SETKcLlTBI35iV0Nayhh3sA4M/AOSpJnoYbUzVqzdHuDxlHfXXxwLoPmkViK UVnA9x0Qj3dLAUo3TjjZnkx1h+zmyyV1Qc/uFIactuYn0WQcJIS2rW0GYbabHArKr6x4ZVoFrQl 6ppLpR7vnBQ3x4D+xwL4ZLq3rx8IjeHEWYlCqsKRL/zvBxqMpN3a8FMKEXLcWYQmwBLyYvzyYuE 1AvY3BZbnxJ3pnF6/6Qd0F1T+Fl6aDOgTE5DQA2EFKFVNkKUhtgYiKM0TBovKeIiWnJElgTKnre cnoAGVi2xQ0t347opuDTKKtSARA1Nn8x1svuTfDoxFheF3wSO0aPvcBr/5zKqMPHi9Qk98qz3Q5 5eboQkwybZ3gnqsCytiMKJgo8VnqPzGg== X-Received: by 2002:a05:690c:4dc5:20b0:799:266:83ba with SMTP id 00721157ae682-79a71830746mr47572837b3.4.1773887198700; Wed, 18 Mar 2026 19:26:38 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, richard.henderson@linaro.org Cc: alex.bennee@linaro.org, peter.maydell@linaro.org, gustavo.romero@linaro.org Subject: [RFC PATCH 5/7] hw/arm/virt: Add machine option 'mec' Date: Wed, 18 Mar 2026 23:23:33 -0300 Message-Id: <20260319022335.22523-6-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260319022335.22523-1-gustavo.romero@linaro.org> References: <20260319022335.22523-1-gustavo.romero@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::112a; envelope-from=gustavo.romero@linaro.org; helo=mail-yw1-x112a.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 @linaro.org) X-ZM-MESSAGEID: 1773887309425158500 Content-Type: text/plain; charset="utf-8" Add new machine option 'mec' that enables and sets the memory used by FEAT_MEC. Signed-off-by: Gustavo Romero --- hw/arm/virt.c | 76 +++++++++++++++++++++++++++++++++++++++++++ include/hw/arm/virt.h | 1 + 2 files changed, 77 insertions(+) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index cab2e21e8a..7d127a4205 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1762,6 +1762,27 @@ static void create_tag_ram(MemoryRegion *tag_sysmem, memory_region_add_subregion(tag_sysmem, base / 32, tagram); } =20 +static void create_mec_ram(MemoryRegion *tag_sysmem, + hwaddr base, hwaddr size, + const char *name) +{ + memory_region_init_ram(tag_sysmem, NULL, name, size / 32, &error_fatal= ); +} + +static void create_mec_ram_fake_page(MemoryRegion *mr, uint64_t size, cons= t char *name) +{ + assert(is_power_of_2(size) ); + assert(size >=3D sizeof(uint32_t)); + + uint32_t *ptr =3D g_malloc(size); + + for (int i =3D 0; i < size / sizeof(uint32_t); i++) { + ptr[i] =3D 0xDEADBEEF; + } + + memory_region_init_ram_ptr(mr, NULL, name, size, ptr); +} + static void create_secure_ram(VirtMachineState *vms, MemoryRegion *secure_sysmem, MemoryRegion *secure_tag_sysmem) @@ -2267,6 +2288,8 @@ static void machvirt_init(MachineState *machine) MemoryRegion *secure_sysmem =3D NULL; MemoryRegion *tag_sysmem =3D NULL; MemoryRegion *secure_tag_sysmem =3D NULL; + MemoryRegion *pseudo_encrypted_page =3D NULL; + MemoryRegion *tuple_memory =3D NULL; int n, virt_max_cpus; bool firmware_loaded; bool aarch64 =3D true; @@ -2495,6 +2518,28 @@ static void machvirt_init(MachineState *machine) } } =20 + if (vms->mec) { + if (tcg_enabled()) { + if (tuple_memory =3D=3D NULL) { + /* XXX(gromero): Add object_property_find(cpuobj, "tup= le-memory", ...) here. */ + + tuple_memory =3D g_new(MemoryRegion, 1); + memory_region_init(tuple_memory, OBJECT(machine), "mec= ", UINT64_MAX / 32); + + pseudo_encrypted_page =3D g_new(MemoryRegion, 1); + memory_region_init(pseudo_encrypted_page, OBJECT(machi= ne), "mec-page", 4 * 1024 /* 4 KiB */); + } + + object_property_set_link(cpuobj, "mec", OBJECT(tuple_memo= ry), &error_abort); + object_property_set_link(cpuobj, "mec-page", OBJECT(pseud= o_encrypted_page), &error_abort); + + } else { + /* Check for other accels here. */ + error_report("MEC requested, but not supported"); + exit(1); + } + } + qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); object_unref(cpuobj); } @@ -2561,6 +2606,14 @@ static void machvirt_init(MachineState *machine) machine->ram_size, "mach-virt.tag"); } =20 + if (tuple_memory) { + create_mec_ram(tuple_memory, vms->memmap[VIRT_MEM].base, machine->= ram_size, "tuple-memory"); + } + + if(pseudo_encrypted_page) { + create_mec_ram_fake_page(pseudo_encrypted_page, 4 * 1024, "mec-fake= -page"); + } + vms->highmem_ecam &=3D (!firmware_loaded || aarch64); =20 create_rtc(vms); @@ -2966,6 +3019,20 @@ static void virt_set_mte(Object *obj, bool value, Er= ror **errp) vms->mte =3D value; } =20 +static bool virt_get_mec(Object *obj, Error **errp) +{ + VirtMachineState *vms =3D VIRT_MACHINE(obj); + + return vms->mec; +} + +static void virt_set_mec(Object *obj, bool value, Error **errp) +{ + VirtMachineState *vms =3D VIRT_MACHINE(obj); + + vms->mec =3D value; +} + static char *virt_get_gic_version(Object *obj, Error **errp) { VirtMachineState *vms =3D VIRT_MACHINE(obj); @@ -3602,6 +3669,12 @@ static void virt_machine_class_init(ObjectClass *oc,= const void *data) "guest CPU which implements the = ARM " "Memory Tagging Extension"); =20 + object_class_property_add_bool(oc, "mec", virt_get_mec, virt_set_mec); + object_class_property_set_description(oc, "mec", + "Set on/off to enable/disable emulating a" + "guest CPU which implements the ARM" + "Memory Encryption Extention"); + object_class_property_add_bool(oc, "its", virt_get_its, virt_set_its); object_class_property_set_description(oc, "its", @@ -3686,6 +3759,9 @@ static void virt_instance_init(Object *obj) /* MTE is disabled by default. */ vms->mte =3D false; =20 + /* FEAT_MEC is disabled by default. */ + vms->mec =3D false; + /* Supply kaslr-seed and rng-seed by default */ vms->dtb_randomness =3D true; =20 diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index dba8ac7f2f..4e49eb1d13 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -154,6 +154,7 @@ struct VirtMachineState { bool virt; bool ras; bool mte; + bool mec; bool dtb_randomness; bool second_ns_uart_present; OnOffAuto acpi; --=20 2.34.1 From nobody Mon Apr 6 15:52:33 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773887243; cv=none; d=zohomail.com; s=zohoarc; b=b4LW75vxuwrCQucyH31fTuEaMMMEZmrkY5R87Yoi1myq1KD4puxqgOBAYqQrzPq4xq/JQkVn1/tx7Nl8bHSvV6Q9MnPt4YRyKm+qhC4S6o9jnKZneWfeCESd6rKpCYoY49x4/dVXcKVb8oUB044iYdV0pNBfz8O2wLTfYmNJR3E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773887243; 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=KKX5HsaUKSV7F7rfvCDr4RwTZHqLb66reFgdEeXZa+k=; b=XwWtGCb/kBazxT9pjrTptAZfPiXJD5KCIqkMEf5myVVfmOzUlJmEHyHD/Oj/AZ5UTaUInIEm608CCWsKEl8Fn8zbyVOTS6sFIuSvcM88qUS+ocGAIkxHDu0a+9wWSEvyerKeLF93eDwq0r0qKuBSkfRNc0ECTFw5Yao1xXOESg8= 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 1773887243140406.8405284551203; Wed, 18 Mar 2026 19:27:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w335y-0003nx-TU; Wed, 18 Mar 2026 22:26:46 -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 1w335w-0003ld-Jz for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:44 -0400 Received: from mail-yw1-x1135.google.com ([2607:f8b0:4864:20::1135]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w335u-0002tt-Mu for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:44 -0400 Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-79a5a37113aso6072637b3.2 for ; Wed, 18 Mar 2026 19:26:42 -0700 (PDT) Received: from gromero0.. ([177.146.137.168]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79a7141eb65sm28159417b3.21.2026.03.18.19.26.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 19:26:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773887201; x=1774492001; 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=KKX5HsaUKSV7F7rfvCDr4RwTZHqLb66reFgdEeXZa+k=; b=iorfkBR+Yz6DpScu2zmxzjepd9WYszLjjWm1sbq6o0WDRPiyYndlW7QmuQ3aIPe0A8 todA0pppwSOSIOSCwPiKdA1xJhfPYrwE4fgI0O0UuL9fxJNfNw9fP8WYADcCjVY+hSXt LFYMsU00LcnYLLeb7D3P1F8zSmTATAurgTirfOSLXJ7QFkw53uXSJNom0n2D0hfZecyz S3gU4BHVZcqTDNncnjoBBSCBzTnKVV2hup6FSluLXUX/YKnqkI7cfrv8eBfsVIHkzvXY xavu7N3RebeM9M0GBY0V69qt1HhawiIJlM+Hwpd+pMeU1/EdZb5ujfUeO+zi7Vq/kWXQ aB6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773887201; x=1774492001; 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=KKX5HsaUKSV7F7rfvCDr4RwTZHqLb66reFgdEeXZa+k=; b=pDPg84EJv3ZRyVMDhf0NTH2IrkQtWmAK9W4U3d1z5A5Z7s9zLjSIBPY69XKu7DmKcZ AUVVsdnlOkUlV94D3ynrX0G7PcWmp2SJDZSDiE6BPc3Y0JPyKZdxEUqTNjAJPpR0uers TK4SBNLgzvmOqLgbPiBBu7RerFZsRvg6z041nK4IvGFx2ovUCjvLUn4PL4HQvXuNLTZ6 VeZnqYfYx/Fcy0bueasCktFYQIiNAjsArodRWsq5F9IU4v04l3BJpXIXI2RKHFxMnWiG L/bPFTr2pgeHT/VP0PnBmo4xbhnDlAcMyAojJG/iDNUj58e6r7YlXNXnxneN/gyfCg2a mvxw== X-Gm-Message-State: AOJu0YysAg7fzQvqC1oOjM3e4Ueeym/VCe4okvrOmTCeqTQvXk7Fu3ii qnmYc8fCjJqZIxh9wbhKcJsdY13ntwpS+loVuPI+eDfnlEPPF2HhyWH5xE9MV8hAqz81EJQqbD6 Zle9jI6Q= X-Gm-Gg: ATEYQzwPb57+nFqcwZhORcii3Y954r98mLsoXGnzRQ6ZKFwnMZ+y1689qzwODHQHRnk UUZFiW4VuP6TbtHEu15kCZVnaYaajVBHpERst5xLJeUBdJ6F/BJXMX2N55h1zxk/TeW1kpF7bw2 lttUaD2L9xuRqNPd5HYm4WLFRAKw65WuCV1xHQ0kuk1qFMOJn6vvlBjviYZJCYiOIyIJdlkZhNT CRpZjJuovZWB59auAtjXJ1JmcoLYq2GFddZArFpnEnwC33bfOcktFM9GR/zzvSuLpHmpnSX1NHt Tamq6todAuukLvnfwBExAGZm5CfVsPGY+hI4T42VjdzQ64cvrvDy8rwyJNHhgZiPfst/YZXhlT+ NfA1knbL6jVJtUGzIlea9fRsMk1P479zQIhOH4zLYY57QX6Vn2NIzuZpcFVmuvgwwyVvGywg2Ly teeLbhRKGvoDaDwano3tOA6bvJjZC2tg== X-Received: by 2002:a05:690c:c50e:b0:79a:3a33:933 with SMTP id 00721157ae682-79a71ad413dmr61068687b3.31.1773887201137; Wed, 18 Mar 2026 19:26:41 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, richard.henderson@linaro.org Cc: alex.bennee@linaro.org, peter.maydell@linaro.org, gustavo.romero@linaro.org Subject: [RFC PATCH 6/7] target/arm/ptw: Add MECID checks Date: Wed, 18 Mar 2026 23:23:34 -0300 Message-Id: <20260319022335.22523-7-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260319022335.22523-1-gustavo.romero@linaro.org> References: <20260319022335.22523-1-gustavo.romero@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1135; envelope-from=gustavo.romero@linaro.org; helo=mail-yw1-x1135.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 @linaro.org) X-ZM-MESSAGEID: 1773887244941154100 Content-Type: text/plain; charset="utf-8" Add MECID checks. The MECID registers were introduced before and this commit uses them to perform the proper MECID checks, which is part of FEAT_MEC implementation. On MECID mismatches (wrong MECID) we return a substitute encrypted page instead of the real encrypted page, which doesn't hurt performance on memory accesses and behaves like FEAT_MEC design on the physical hardware. Signed-off-by: Gustavo Romero --- target/arm/internals.h | 2 + target/arm/ptw.c | 215 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 216 insertions(+), 1 deletion(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 8ec2750847..d668948949 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1473,6 +1473,8 @@ typedef struct GetPhysAddrResult { * with the stage1 protection. */ int s2prot; + /* FEAT_MEC AMEC found in Block or Page descriptor. */ + bool amec; } GetPhysAddrResult; =20 /** diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 8b8dc09e72..aacc32ba33 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -2090,6 +2090,17 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, goto do_fault; } =20 + /* + * XXX(gromero): Add checks for NS bit and AMEC0/1 bits, generating th= e due + * fault in case AMEC0/1 =3D 0 and AMEC bit is 1. So far we just get t= he AMEC + * bit directly in case of a Block or Page descriptor. + * + */ + if (((level =3D=3D 1 || level =3D=3D 2) && (extract64(descriptor, 0, 2= ) =3D=3D 1)) || + level =3D=3D 3) { + result->amec =3D extract64(descriptor, 63, 1); + } + if ((descriptor & 2) && (level < 3)) { /* * Table entry. The top five bits are attributes which may @@ -3766,6 +3777,208 @@ static bool get_phys_addr_nogpc(CPUARMState *env, S= 1Translate *ptw, } } =20 +static uint32_t *get_mecid_ptr(CPUARMState *env, hwaddr pa) +{ + MemoryRegion *mr; + AddressSpace *mec_as; + hwaddr mec_paddr, xlat; + MemTxAttrs memattrs =3D { 0x0 }; + + /* Find out the page number to use it as an offset in mec AS. */ + mec_paddr =3D pa >> TARGET_PAGE_BITS; + mec_paddr *=3D 4; /* Assume MECID maximum size is 4 bytes. */ + /* MECIDs are kept in their own Address Space. */ + mec_as =3D cpu_get_address_space(env_cpu(env), ARMASIdx_MEC); + mr =3D address_space_translate(mec_as, mec_paddr, &xlat, NULL, true, m= emattrs); + + /* + * Return pointer in the mec AS associated to physical address 'pa', w= hich + * is used to store the MECID. + */ + return memory_region_get_ram_ptr(mr) + xlat; +} + +static uint32_t get_mecid(CPUARMState *env, hwaddr pa) +{ + return *get_mecid_ptr(env, pa); +} + +static void set_mecid(CPUARMState *env, hwaddr pa, uint32_t mecid) +{ + *get_mecid_ptr(env, pa) =3D mecid; +} + +/* + * Returns 'false' on MECID mismatch and 'true' on MECID match (success). + */ +static bool mecid_check(CPUARMState *env, S1Translate *ptw, hwaddr va, + MMUAccessType access_type, GetPhysAddrResult *resu= lt, + ARMMMUIdx s1_mmu_idx) +{ + ARMSecuritySpace ss =3D ptw->out_space; + /* Final physical address after translation. */ + hwaddr pa =3D result->f.phys_addr; + + switch (s1_mmu_idx) { + case ARMMMUIdx_Phys_S: + case ARMMMUIdx_Phys_NS: + case ARMMMUIdx_Phys_Root: + case ARMMMUIdx_Phys_Realm: + case ARMMMUIdx_Stage2: + case ARMMMUIdx_Stage2_S: + /* In the middle of a translation, so result->f.phys_addr has no PA ye= t. */ + return true; + break; + default: + /* Pass */ + break; + } + + /* Find out which EL controls EMEC for Stage 1 translations. */ + uint32_t el =3D regime_el(s1_mmu_idx) < 3 ? 2 : 3; + + /* XXX(gromero): Do we need to check for SCR_EL3.SCTLR2En when el =3D= =3D 2? */ + if (!(cpu_isar_feature(aa64_mec, env_archcpu(env)) && + (env->cp15.sctlr2_el[el] & SCTLR2_EMEC))) { + /* FEAT_MEC is disabled. */ + return true; + } + + if (ss !=3D ARMSS_Realm) { + /* + * GPT checks are already done, so if SS is Root here MECIDs are + * irrelevants for EL3 accesses. If SS is Secure or NonSecure that= 's not + * pertinent to FEAT_MEC. Hence, only proceed with MECID checks if= SS is + * Realm. + */ + return true; + } + + bool amec =3D result->amec; + bool varange_lower =3D extract64(va, 55, 1) ? false : true; + /* MECID in register set given a translation regime. */ + uint32_t mecid; + + /* ARMMMUIdx after full ptw (all stages). */ + ARMMMUIdx ptw_mmu_idx =3D ptw->in_mmu_idx; + + switch (ptw_mmu_idx) { + case ARMMMUIdx_Stage2: + case ARMMMUIdx_Stage2_S: + /* In the middle of a two stage translation, so result->f.phys_addr ha= s no PA yet. */ + return true; + break; + default: + /* Pass */ + break; + } + + /* + * NB: No MECID is used for the ptw itself, i.e., used for the level + * lookups, so AArch64.S1TTWalkMECID() and AArch64.S2TTWalkMECID() are= not + * relevant for our FEAT_MEC implementation. + */ + bool is_pa_from_s2 =3D regime_is_stage2(ptw_mmu_idx); + bool is_mmu_disabled =3D regime_translation_disabled(env, ptw_mmu_idx,= ss); + if (is_pa_from_s2) { /* PA from Stage 2. */ + /* As per AArch64.S2OutputMECID(). */ + mecid =3D amec ? env->cp15.vmecid_a_el2 : env->cp15.vmecid_p_el2; + + } else { /* PA from Stage 1. */ + if (is_mmu_disabled) { /* PA from Stage 1 and MMU is disabled. */ + /* As per AArch64.S1DisabledOutputMECID(). */ + switch (s1_mmu_idx) { + case ARMMMUIdx_E3: + /* MECID =3D 0 (default), so return without any check. */ + return true; + break; + case ARMMMUIdx_E2: + case ARMMMUIdx_E20_0: + case ARMMMUIdx_E20_2: + case ARMMMUIdx_E20_2_PAN: + mecid =3D env->cp15.mecid_p0_el2; + break; + case ARMMMUIdx_E10_0: + case ARMMMUIdx_E10_1: + mecid =3D env->cp15.vmecid_p_el2; + break; + default: + g_assert_not_reached(); + } + + } else { /* PA from Stage 1 and MMU is enabled. */ + /* As per AArch64.S1OutputMECID(). */ + switch (s1_mmu_idx) { + case ARMMMUIdx_E3: + mecid =3D env->cp15.mecid_rl_a_el3; + break; + case ARMMMUIdx_E2: + mecid =3D amec ? env->cp15.mecid_a0_el2 : env->cp15.mecid_= p0_el2; + break; + case ARMMMUIdx_E20_0: + case ARMMMUIdx_E20_2: + case ARMMMUIdx_E20_2_PAN: + if (varange_lower) { + mecid =3D amec ? env->cp15.mecid_a0_el2 : env->cp15.me= cid_p0_el2; + } else { + mecid =3D amec ? env->cp15.mecid_a1_el2 : env->cp15.me= cid_p1_el2; + } + break; + case ARMMMUIdx_E10_0: + case ARMMMUIdx_E10_1: + mecid =3D env->cp15.vmecid_p_el2; + break; + default: + g_assert_not_reached(); + } + } + } + + /* + * MECID is updated on data store and checked on other access types. + */ + if (access_type =3D=3D MMU_DATA_STORE) { + /* Store MECID for physical address 'pa'. */ + set_mecid(env, pa, mecid); + return true; + } else { + uint32_t stored_mecid; + /* Load the MECID stored in memory for physical address 'pa'. */ + stored_mecid =3D get_mecid(env, pa); + if (stored_mecid =3D=3D mecid) { + /* MECID is correct. */ + return true; + } else { + /* MECID is incorrect, so return the substitute encrypted page= . */ + result->f.phys_addr =3D 0x0; /* Start of the page. */ + result->f.attrs.encrypted =3D true; /* Substitute encrypted pa= ge. */ + return false; + } + } +} + +static bool get_phys_addr_mec(CPUARMState *env, S1Translate *ptw, + vaddr address, + MMUAccessType access_type, MemOp memop, + GetPhysAddrResult *result, + ARMMMUFaultInfo *fi) + +{ + /* + * After 'address' is resolved by get_phys_addr_nogpc(), ptw->in_mmu_i= dx can + * change depending on the translation stages, hence stash it. + */ + ARMMMUIdx s1_mmu_idx =3D ptw->in_mmu_idx; + + if (get_phys_addr_gpc(env, ptw, address, access_type, memop, result, f= i)) { + return true; /* Translation fault. */ + } + if (!mecid_check(env, ptw, address, access_type, result, s1_mmu_idx)) { + return true; /* MECID mismatch. */ + } + return false; +} + static bool get_phys_addr_gpc(CPUARMState *env, S1Translate *ptw, vaddr address, MMUAccessType access_type, MemOp memop, @@ -3907,7 +4120,7 @@ bool get_phys_addr(CPUARMState *env, vaddr address, .in_prot_check =3D 1 << access_type, }; =20 - return get_phys_addr_gpc(env, &ptw, address, access_type, + return get_phys_addr_mec(env, &ptw, address, access_type, memop, result, fi); } =20 --=20 2.34.1 From nobody Mon Apr 6 15:52:33 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1773887265; cv=none; d=zohomail.com; s=zohoarc; b=k4LFRIV80+KfRoXin3KGGJr8+OL4B4TQyidpF6xWfR/JeHO29ByeWiZ8YBead+AmbCMLKoy/jQs9B4vvA83Fwb2tAsYucU7HhT7TOqw+I5fJJnlfD+Fn95jK9SGYExmTIAYzbREDvnM8PsTXU9rYV5+1wsq33jVbePs4nlu3PFs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773887265; 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=ztIVCrrmqBuhnm6JGGEUa3bN+o69ButyUhpjXpcaOJo=; b=G8kaW8tagdkGur5sLxJmw55zPYRrGheermCbKQ1w5QbP2Da51OXEskSUlUQt6PIAlm6wLMIgOCUzHJokf9Jii+gUtN0iH5rWBb8vASShlHbYVqLzRKbxTAfexjG6uetfcyLqT5xV3IRgpRLzhlz2HdaEF9pLzeJSMGOC5UVIBmw= 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 1773887265239222.47473917722277; Wed, 18 Mar 2026 19:27:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w335z-0003oE-5t; Wed, 18 Mar 2026 22:26:47 -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 1w335y-0003n7-7Z for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:46 -0400 Received: from mail-yw1-x112c.google.com ([2607:f8b0:4864:20::112c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w335w-0002uO-NZ for qemu-devel@nongnu.org; Wed, 18 Mar 2026 22:26:45 -0400 Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-79885f4a8ffso5278947b3.3 for ; Wed, 18 Mar 2026 19:26:44 -0700 (PDT) Received: from gromero0.. ([177.146.137.168]) by smtp.gmail.com with ESMTPSA id 00721157ae682-79a7141eb65sm28159417b3.21.2026.03.18.19.26.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 19:26:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1773887203; x=1774492003; 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=ztIVCrrmqBuhnm6JGGEUa3bN+o69ButyUhpjXpcaOJo=; b=TUFzhQBxivaTfWcSRBZE+79d3X7HeZ0rnMBGBvapAMlTvoKOfjKNAaGkRSd8CVY67i zsF6t1MnIoUbjR3fvZFFOfk1g/9jcvn7IeF4V7NSIinZOi5weeFLXpl/dGTx2HSRJJcO qXseks3Mcd+63Sifh3PXqUpdpecB2gaC3yeT1v6yunwuUvfgW9v99ZEIBOr+6iJLAs2h P4iQKPXSJHpSSCb9peVCOMTdY9tYjlqSW5oAGffIHdOq5AN3uqHQ+IWnMZm6g9rgMKR/ DBUEnYEqS3zAlNSR++MRDEULh70UH8YYe7vOiwMg3SeJbc+wnfsE9wdr1o+Q5SReiRmW HTyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773887203; x=1774492003; 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=ztIVCrrmqBuhnm6JGGEUa3bN+o69ButyUhpjXpcaOJo=; b=h3LI1aEZubGNZsUYySNDl5C97BRM9fsh/CjG/nS4gEXC5Z8d6WebeGgSg+tpIb+Hpt l73MaPJTK+t2V7Qb4k2rThqG8uOyxukaz9CJ7ix0Uipzuc958hcdy6EP8ZZAgW8HAgls jOt1QM02ncG1PYEOfro5JL+vS2ZTVPi1N7sdQMKlgG8bljYBWIRh0CIFnbWh7MrAAXzc v+U00IGiD0+jWIWmeaVEo1lplnc4j46d0JhRUI0vO8d1d0KWoykTYA63JsGszjLc49mo IHHbHH6rLetWuoG9lLnNNvF2zPVwiDc75gz64zPhSDgw2gV73CDijqKxwxo43SI12RXJ 9jVw== X-Gm-Message-State: AOJu0Yw8gEs9nI8bnRgZxRan7fyXfXB2S/Nmb/MT3Dscvmyfgx48tawH 2Mg4zuFuDb/KWU+PdG/VaFX9oEiPwBjRcIxHx86z02SBJo95olx/EB+x896W0MvEgWHhskW+iMf JxstbZmY= X-Gm-Gg: ATEYQzy7Z8fsn7YdK3ec5FUL3/vBPz8l4qeespmU3Px3EhalMkabeQJHBLFp3t8IPYI MaM15wkURcmUudsyIdxBnrb1ovg7Xt0Otf9eXuCzspLL29tXS8FVwLQrHs53Opg+JR5bHuFMao0 fllN3h50L/K66z/maQ1S5kCLey6EOErq8x3d4i8GeLJAOddRTKRIjVLH0wfDO5TRouXZEpouxKJ DQ1XgHrNfzN66f9bGZhem6fHVb7IGIcK4ApOehEgid3a/l+QTxY2x4MPzIvur9e/pyNq69iBWgi 8ExgB26j5sQkrHEidQK/aWDDegdidQDleh4A22Zpet1dgIopgV6xsiqwgEz3AvjRFKoy8Sx3515 IPXoHceEKAB/yFAr0foa+H/7BunYkm8d32FtxYL5pmCCP3s7lYJ/LD+Fg5OsW2ptUYWxAbfFDs4 ZJ8x235yLFRZwbqRVBj2PQdAJSacSdLQ== X-Received: by 2002:a05:690c:e3ce:b0:799:a3b:37d5 with SMTP id 00721157ae682-79a71c701d9mr57545017b3.46.1773887203566; Wed, 18 Mar 2026 19:26:43 -0700 (PDT) From: Gustavo Romero To: qemu-devel@nongnu.org, qemu-arm@nongnu.org, richard.henderson@linaro.org Cc: alex.bennee@linaro.org, peter.maydell@linaro.org, gustavo.romero@linaro.org Subject: [RFC PATCH 7/7] target/arm/ptw: Print MECID if not zero [TO BE DISCARDED] Date: Wed, 18 Mar 2026 23:23:35 -0300 Message-Id: <20260319022335.22523-8-gustavo.romero@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260319022335.22523-1-gustavo.romero@linaro.org> References: <20260319022335.22523-1-gustavo.romero@linaro.org> 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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::112c; envelope-from=gustavo.romero@linaro.org; helo=mail-yw1-x112c.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 @linaro.org) X-ZM-MESSAGEID: 1773887267166154100 Content-Type: text/plain; charset="utf-8" It's easy to get the sw stack wrongly configured and end up having no MECIDs being setup different from zero. If this happens FEAT_MEC isn't stressed because a MECID 0 won't cause mismatches. This commit is just a printf to allow double checking that MECIDs being provided by TF-RMM are not zero. This commit is just for debugging purposes and will be discarded. Please uncomment the line to make it effective. Signed-off-by: Gustavo Romero --- target/arm/ptw.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index aacc32ba33..bf58ac656f 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -3939,6 +3939,9 @@ static bool mecid_check(CPUARMState *env, S1Translate= *ptw, hwaddr va, */ if (access_type =3D=3D MMU_DATA_STORE) { /* Store MECID for physical address 'pa'. */ + if (mecid !=3D 0) { + // printf("MECID (in register) stored for va =3D %lx pa=3D %lx = is %d | s1_mmu_idx =3D %d and ptw->in_mmu_idx =3D %d\n", va, pa, mecid, s1_= mmu_idx, ptw_mmu_idx); + } set_mecid(env, pa, mecid); return true; } else { --=20 2.34.1