From nobody Fri May 10 04:42:56 2024 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=1669135260; cv=none; d=zohomail.com; s=zohoarc; b=fBD9jsxuCCrURQz6GcH8yGT6P9Pa9SYHjqHsM8kDuM+Qoi/CIpdAmxolKwszDAvI6I+GhsdaRv5LvSAR1eQmj7C40+SQKu9I0DZlY7b8Vxeq/7a9sPhLYMIqkMYBuB/Dpq/p6sDDDvGSGbBwlBLboPXNJm60uquxwfKn8JjDDwo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1669135260; h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=FTvCkzoU4dh1lLaA8KtPpm96t/AlaV/FPI3PFeRW8FM=; b=g+7KtOiVM2PD4aiZNjXHfjDVT/oCQQ/4FK4Ny/HXhZWjaxpCpfk1Zj+hGA/1T9/uixP1JWc2nsm8R0oh4T1d19AfhrJCaQfeuRe6nQ9Rwz9rvQnWNC3nleW3MVqhy7CmQs9PPtyJEAHbS+DAXzJLEEJhcJToEnKlUn2mzI1pZow= 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 1669135260082946.4005174643517; Tue, 22 Nov 2022 08:41:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oxWJa-0002Gm-V2; Tue, 22 Nov 2022 11:40:07 -0500 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 1oxWJV-0002GB-U3 for qemu-devel@nongnu.org; Tue, 22 Nov 2022 11:40:02 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oxWJT-0003nW-15 for qemu-devel@nongnu.org; Tue, 22 Nov 2022 11:40:00 -0500 Received: by mail-wr1-x430.google.com with SMTP id i12so21717018wrb.0 for ; Tue, 22 Nov 2022 08:39:58 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id l10-20020adff48a000000b002366ded5864sm14353585wro.116.2022.11.22.08.39.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Nov 2022 08:39:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=FTvCkzoU4dh1lLaA8KtPpm96t/AlaV/FPI3PFeRW8FM=; b=waNGPfzRlwoZ1w8OJN7cb2f8TMWPlMEvpXSkAdufvulPCp4/wP8rXi9zq1SkOB9BfG 3iT7ZOIeXhS1e3LpfD9plhF9Ss002Ace+X2QTWOBQPl+Li3TjZQ3pvpRxFfhs4eDVz82 MSETo9mDHrxqZrHUtzrMTYVaXmAIANuUWX1M/SNxuG015P1kg+FfRC/TG942TK2GGKyC 8rfsCtkaCeZRom8uMqPewbDGOrAJUUAipKQ0v8aPDyYzzF6SjG5BXemf3FBs1f04mueF MSw4CwCukk/ro12hMf1YqYn+/xQDNX6iot8Oropa0l5471lBhfwb/SvJm/affFIIc7xQ So2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FTvCkzoU4dh1lLaA8KtPpm96t/AlaV/FPI3PFeRW8FM=; b=1J300B8BSJ8yN3N4VRsA79i4NsaYQf6cYbo4V+MeYhE8c0rEpn6/e9ykhbky4oui0W 19fAL1GN2T8pFOs+0OInIE5TdFXasSON6LMShXeVYtKp+3tzbNIr7E1Mal0xbYfe5Q90 fYstWssQ2M810RV9vGVHOPFBQoyBRbx1xSbR+54o62zbymGhlKGzLa+aplQwDJfd6G6y Buph0CKPbJVR5K9sJwSlMpit4N0bc2dAPe8gdVCy0N7SwiBI/D2WFjeMKDIu0+JNFK80 dGvC0tbiqKw9Up1YQoq5DStIASCTUk87rE/lO9I5CgwkkR5Sl9wg+i9iN/WrxgoBZaOS GYCg== X-Gm-Message-State: ANoB5plo5/FXye9yrx6qpdPmE2RzQtwX5E5oj5vsxpetwfcwmkF6WTER yGIk7dIDkA8qsQgULOPUnHhvaOCt4z13Jw== X-Google-Smtp-Source: AA0mqf5NwfSDdq52K4FWh6AWD8sLFt02ngpMiuIo3PmJtp9+hJ6zS6ocK/mg3X+F6cmexADAsyHlfQ== X-Received: by 2002:adf:d4cb:0:b0:241:e680:b5be with SMTP id w11-20020adfd4cb000000b00241e680b5bemr1765996wrk.717.1669135197083; Tue, 22 Nov 2022 08:39:57 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 1/2] target/arm: Don't do two-stage lookup if stage 2 is disabled Date: Tue, 22 Nov 2022 16:39:53 +0000 Message-Id: <20221122163954.1900093-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221122163954.1900093-1-peter.maydell@linaro.org> References: <20221122163954.1900093-1-peter.maydell@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=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x430.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: 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: 1669135260888100003 Content-Type: text/plain; charset="utf-8" In get_phys_addr_with_struct(), we call get_phys_addr_twostage() if the CPU supports EL2. However, we don't check here that stage 2 is actually enabled. Instead we only check that inside get_phys_addr_twostage() to skip stage 2 translation. This means that even if stage 2 is disabled we still tell the stage 1 lookup to do its page table walks via stage 2. This works by luck for normal CPU accesses, but it breaks for debug accesses, which are used by the disassembler and also by semihosting file reads and writes, because the debug case takes a different code path inside S1_ptw_translate(). This means that setups that use semihosting for file loads are broken (a regression since 7.1, introduced in recent ptw refactoring), and that sometimes disassembly in debug logs reports "unable to read memory" rather than showing the guest insns. Fix the bug by hoisting the "is stage 2 enabled?" check up to get_phys_addr_with_struct(), so that we handle S2 disabled the same way we do the "no EL2" case, with a simple single stage lookup. Reported-by: Jens Wiklander Reviewed-by: Richard Henderson Signed-off-by: Peter Maydell Message-id: 20221121212404.1450382-1-peter.maydell@linaro.org --- target/arm/ptw.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 9a6277d862f..8ca468d65bc 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -2612,8 +2612,8 @@ static bool get_phys_addr_twostage(CPUARMState *env, = S1Translate *ptw, =20 ret =3D get_phys_addr_with_struct(env, ptw, address, access_type, resu= lt, fi); =20 - /* If S1 fails or S2 is disabled, return early. */ - if (ret || regime_translation_disabled(env, ARMMMUIdx_Stage2, is_secur= e)) { + /* If S1 fails, return early. */ + if (ret) { return ret; } =20 @@ -2739,7 +2739,8 @@ static bool get_phys_addr_with_struct(CPUARMState *en= v, S1Translate *ptw, * Otherwise, a stage1+stage2 translation is just stage 1. */ ptw->in_mmu_idx =3D mmu_idx =3D s1_mmu_idx; - if (arm_feature(env, ARM_FEATURE_EL2)) { + if (arm_feature(env, ARM_FEATURE_EL2) && + !regime_translation_disabled(env, ARMMMUIdx_Stage2, is_secure)= ) { return get_phys_addr_twostage(env, ptw, address, access_type, result, fi); } --=20 2.25.1 From nobody Fri May 10 04:42:56 2024 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=1669135265; cv=none; d=zohomail.com; s=zohoarc; b=hirX2sLuy8NsjHtY97oB4U30OQh3nkjjZcWIjtR4NKJ+cSyPy2djx3NPQ09xhC4EXdPYyizsZO0kRtX7ENyMDnznVqGHVlX/j8Y+muOgEBcKn5xWqAD54qIJToIfEJ13jJ5nWsmSFuHQADd46EX1TXlcdjKsajKChEg9LkW11GU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1669135265; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HqDPpnWELHr2m7elwL0yB9WHHm7yHlEKuLIM5l4oojA=; b=fNYgT23oeeR7A1gZTwV/2FIFEY0qjOhkfWKuS/kQTxeYvxIY9nDFbchpeyX4o8bPxjtppV6QUFfkpcxn0Gk/BpOQROsDrspihfOW05tU5MAAQfZrhSlaCxIcb86A45rK5rFn60kDfZ/ULKrFuVTvCBAWOxrf+Vx94qFl3q7kFHk= 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 1669135265302390.53838370705785; Tue, 22 Nov 2022 08:41:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oxWJj-0002Hp-9X; Tue, 22 Nov 2022 11:40:15 -0500 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 1oxWJX-0002GQ-9Y for qemu-devel@nongnu.org; Tue, 22 Nov 2022 11:40:03 -0500 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oxWJT-0003nb-G2 for qemu-devel@nongnu.org; Tue, 22 Nov 2022 11:40:02 -0500 Received: by mail-wr1-x433.google.com with SMTP id z4so10990775wrr.3 for ; Tue, 22 Nov 2022 08:39:58 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id l10-20020adff48a000000b002366ded5864sm14353585wro.116.2022.11.22.08.39.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Nov 2022 08:39:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=HqDPpnWELHr2m7elwL0yB9WHHm7yHlEKuLIM5l4oojA=; b=ML/oFIuAVEeanFtQtlzUzlU2mfjKw55JkQMX6vyJAa6Suh4VoG5Z22UIPB+dsT8N6b dMHnwnrnCMOvxNbSmQKuEbll2i3r2azAUf3sXjzxP9RbqtQ/G//RWFr8Jqbh0G3vXgIX jsBoouhipahyu1o4OE8tW+hkonm0yVKjcXplvO0H6vNJt/pWgbjrv2kcukXXlnkEsOqm 3kNL1u0bPp3mFb0UlI9MeZUeYYCJyDeTlVRgol/OndeqkSaHKzYSlcBBL0z/YGrnK0hw 8fucL1PBStmqE4HiDCuaZ2TgK27VARIKXYDvhJVC2EFyMxF1ZGjnhJdackZFSFvXp/SS jt7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HqDPpnWELHr2m7elwL0yB9WHHm7yHlEKuLIM5l4oojA=; b=7rjCSdUuFNxGhaP8MngxBIHExprZVUblxS4uxHqfqVjkxhpsQoF5cWWA3bJ+gUynkK OAKxr2F7Vz6Zn0dgDIMAvgIlNylgMseg5w8SSXEtb6mF2N/kHH/TnBdYHxmG/EfSTG2y 7Kv5nWQKOX6wXWd2tvdVVU2sdrdJ3fvsdiNIH4+uHcygTU5ZCJ6f/d9uZViL3IlHyH8U eqbCo80+5YOTFlkGRmyw3ffRJMAPyVSEMwzohRqeutLaVN+hMZKz3Zs7urHY1esydbCu owfRPZwjAyKQHPd/418o9rgz0DEg7fn+vS4XDAcsOQc0UZsMBNtHQt2QO1RwOHzhvZB/ Rtlw== X-Gm-Message-State: ANoB5pnrzw7L9uNZWevonerzr0VJaQUplvCZFHsa5iHQ84eMZDDxua0b WVSjN0CxUIuIJ6DEfadE5kZZt0kih11y/Q== X-Google-Smtp-Source: AA0mqf7Df347lPSwhiTqcFkVz7UhhhoYFLrpVcPtPa5HcD4otLIQLb5o5Y1jvSSNuOKsmu9d0JBBVg== X-Received: by 2002:a5d:4c8c:0:b0:241:c222:e27e with SMTP id z12-20020a5d4c8c000000b00241c222e27emr10328767wrs.236.1669135198016; Tue, 22 Nov 2022 08:39:58 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 2/2] target/arm: Use signed quantity to represent VMSAv8-64 translation level Date: Tue, 22 Nov 2022 16:39:54 +0000 Message-Id: <20221122163954.1900093-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221122163954.1900093-1-peter.maydell@linaro.org> References: <20221122163954.1900093-1-peter.maydell@linaro.org> 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=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x433.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: 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: 1669135266810100001 From: Ard Biesheuvel The LPA2 extension implements 52-bit virtual addressing for 4k and 16k translation granules, and for the former, this means an additional level of translation is needed. This means we start counting at -1 instead of 0 when doing a walk, and so 'level' is now a signed quantity, and should be typed as such. So turn it from uint32_t into int32_t. This avoids a level of -1 getting misinterpreted as being >=3D 3, and terminating a page table walk prematurely with a bogus output address. Cc: Peter Maydell Cc: Philippe Mathieu-Daud=C3=A9 Cc: Richard Henderson Signed-off-by: Ard Biesheuvel Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/ptw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 8ca468d65bc..f812734bfb2 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1172,7 +1172,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, ARMCPU *cpu =3D env_archcpu(env); ARMMMUIdx mmu_idx =3D ptw->in_mmu_idx; bool is_secure =3D ptw->in_secure; - uint32_t level; + int32_t level; ARMVAParameters param; uint64_t ttbr; hwaddr descaddr, indexmask, indexmask_grainsize; @@ -1302,7 +1302,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, */ uint32_t sl0 =3D extract32(tcr, 6, 2); uint32_t sl2 =3D extract64(tcr, 33, 1); - uint32_t startlevel; + int32_t startlevel; bool ok; =20 /* SL2 is RES0 unless DS=3D1 & 4kb granule. */ --=20 2.25.1