From nobody Wed May 15 16:12:32 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=1646254502; cv=none; d=zohomail.com; s=zohoarc; b=mXkzLfLDj+mlNJgGw9LOjrK+/U0jZJY9QYK+EBj9ZV5raGgEXaysc8/MWrHVCUxwgHiRKHSQqKRINNcejwLIy9GR7GP5vZY/7lW70SeRQ+8XcKBh0Wh8lJEYzMF4I/ov8wQSkTiKVxr2x852BEuYQWzLSv3wUM8IDvfF8m3KI2A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254502; 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=bI6UFhAMhWBlOHTyDE4RG/auEtkAok0MRzYGhv/u1kY=; b=kyQnO616sI9iTwuiGmJ0RZivwHWnpBKNu+rmICd4hnWGBf5xPqhWDCj8FEFiU23W9r4p1GhNElIiPRQ0eA6Avf396L5T4ukASasPePR1ogCzv9bZz0qtlCDCoVina3ASSYT/V4eLLf3LYJUs60BLjlbN3HzH6uv1wwsLgbYvkbE= 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 1646254502770375.2328471972122; Wed, 2 Mar 2022 12:55:02 -0800 (PST) Received: from localhost ([::1]:38838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPVzw-0000Lz-VO for importer@patchew.org; Wed, 02 Mar 2022 15:55:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43240) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxd-0005cC-2G for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:37 -0500 Received: from [2a00:1450:4864:20::330] (port=43934 helo=mail-wm1-x330.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxb-00084v-3N for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:36 -0500 Received: by mail-wm1-x330.google.com with SMTP id a5-20020a05600c224500b003832be89f25so2047090wmm.2 for ; Wed, 02 Mar 2022 12:52:34 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=bI6UFhAMhWBlOHTyDE4RG/auEtkAok0MRzYGhv/u1kY=; b=HSWuVSLqonGBTA5KkMSfYC9rki+0bEp1BlYe0TOupq4TJ/V5YUyu139MZy/TAJLnsd +SCEWJeToMPXwg9qdcdBMOJBbO8DLDfFZ+W+IA4ukJUjJAckNFJWlBxB+VyZWfl2ajng SEwcvr9KHEHhemksN+S6lGe3dxGFtezhxjJCubTPK0vA1ggWAVYvkzcfYFiivS5tkRnv 9vfALIoYe2isF5HbvwA2DEBDGlUiY+Iz59PaXYTjHx8X9gvaSpIZHPUaWjXYNMkovbO9 llcVtyQZozP9re1/xilvTGQozzfw3jIXtuhcSbvw5kN8FYai1qXAOdKfi9ZHdjq7+6q4 dwmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bI6UFhAMhWBlOHTyDE4RG/auEtkAok0MRzYGhv/u1kY=; b=EwdjHCpqc1F5UO9E+odMIaUeXBP+USVCAQUv2mR8pG6+HPLjQFq9o/QFkkxbpY4DXx I6OVcnFZzm1McjiDspShCz+A/TvhAMkHMtfyMIz4qBnwAyX1lhW5LqUt3ZW6PhaRT/2z yYpe//16ZijI2IkD/lFEiy39aWfyiSxV/QCwZUIbN+RyHRFBjF36yS9QZUCtesZtMRjj 51vfmbBJqdTnGLhw+GNbn5JRp0p1TtLBtpzTERRd1oe8rlbhu3PrfDlurkXbPvtLDujE CYH2XmE60vfzBuUI2V1oAZ3FlgtenP2no3ULcevzJzzByr+bhjk/MXM6Fmb1Wv5TfeOL r17w== X-Gm-Message-State: AOAM530iZrXU2ObpK1NdXTBb5o/VMQwqAWe9NhjGeTkUjHUP8cKxScD/ rf2LRVprt5/T8i9EltfF9abpTQ+6Y65xSA== X-Google-Smtp-Source: ABdhPJwy8sgu7/gj2mjvi1EUxBm7kD7Y564Q5r2R0DZwMvy5qarOqTO9f4YDbCjaq7kck+S3fodCaQ== X-Received: by 2002:a05:600c:47d1:b0:381:1c01:2aa7 with SMTP id l17-20020a05600c47d100b003811c012aa7mr1297381wmo.189.1646254353736; Wed, 02 Mar 2022 12:52:33 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/26] mps3-an547: Add missing user ahb interfaces Date: Wed, 2 Mar 2022 20:52:05 +0000 Message-Id: <20220302205230.2122390-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::330 (failed) 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::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254504882100001 Content-Type: text/plain; charset="utf-8" From: Jimmy Brisson With these interfaces missing, TFM would delegate peripherals 0, 1, 2, 3 and 8, and qemu would ignore the delegation of interface 8, as it thought interface 4 was eth & USB. This patch corrects this behavior and allows TFM to delegate the eth & USB peripheral to NS mode. (The old QEMU behaviour was based on revision B of the AN547 appnote; revision C corrects this error in the documentation, and this commit brings QEMU in to line with how the FPGA image really behaves.) Signed-off-by: Jimmy Brisson Message-id: 20220210210227.3203883-1-jimmy.brisson@linaro.org Reviewed-by: Peter Maydell [PMM: added commit message note clarifying that the old behaviour was a docs issue, not because there were two different versions of the FPGA image] Signed-off-by: Peter Maydell --- hw/arm/mps2-tz.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index f40e854dec7..e287ad4d06b 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -1078,6 +1078,10 @@ static void mps2tz_common_init(MachineState *machine) { "gpio1", make_unimp_dev, &mms->gpio[1], 0x41101000, 0x10= 00 }, { "gpio2", make_unimp_dev, &mms->gpio[2], 0x41102000, 0x10= 00 }, { "gpio3", make_unimp_dev, &mms->gpio[3], 0x41103000, 0x10= 00 }, + { /* port 4 USER AHB interface 0 */ }, + { /* port 5 USER AHB interface 1 */ }, + { /* port 6 USER AHB interface 2 */ }, + { /* port 7 USER AHB interface 3 */ }, { "eth-usb", make_eth_usb, NULL, 0x41400000, 0x200000, { 4= 9 } }, }, }, --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646254974; cv=none; d=zohomail.com; s=zohoarc; b=FxZg10nJ/jDkZMDEbcDIuayPBwZFJRTMTp/hbgMYJG7x1oNGd2IhK7iu7Dxg/TZI6rhmxh64gf423yvEH8lzcxrTGfyh2sWosTZSyAvSdavFOir8lrJqB0+lmo8M/oZGjSejmPjxe6/iKRDzWsu6ubScoHNmntYFDKMVmuI4AGs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254974; 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=FAP8anOWorF+Rmm2oJQLE0W4TFL2c2lUXLkzNZ7iIa4=; b=UWzcM5Y7NpD+yDpPTfv9OKoXdoqG/pFYx/ujt/AbwmdiOYLuCtTGUuVtR7ZcHljYmi3tVqyifHiKuJJTbFXFgJFI2aDdQhv+DCxTBpJ5FBb7ekax8QydAV1f8a4uoRiMvR7YVO5P+gNt6z+jHnq6rwwdi4drJthi43R3z7FZTqI= 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 1646254974623690.4081002290852; Wed, 2 Mar 2022 13:02:54 -0800 (PST) Received: from localhost ([::1]:57366 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPW7Z-000521-NZ for importer@patchew.org; Wed, 02 Mar 2022 16:02:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43254) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxd-0005ce-Vx for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:39 -0500 Received: from [2a00:1450:4864:20::333] (port=42940 helo=mail-wm1-x333.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxb-00085N-Q0 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:37 -0500 Received: by mail-wm1-x333.google.com with SMTP id r187-20020a1c2bc4000000b003810e6b192aso2053457wmr.1 for ; Wed, 02 Mar 2022 12:52:35 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=FAP8anOWorF+Rmm2oJQLE0W4TFL2c2lUXLkzNZ7iIa4=; b=oLPlWkwxfJty/dbg5PY7plwC6PrBCHm10kp91hOkYV9bOXdk0RNEhGgq5HV3m1WeSk 3lPcTTRzAtVrng4n/aDD2M8/R2HHheM4zDki0bg7iQP+sW7EiilOvsmAdm+mxrtcZ5gS UdqSg81jCCUAuUIT5/5eWqOm4HJ5INY/C0tNiz8RPBMV3XgG1mclrZQizwpIQlymPtPE nJFKbUGCLUjyQwDD97v6Jr0bHTdY4XNLQIDfUBDzHCkF0G/2zmxDC8slJFypWZaf1Ytb g19EB42s4ltfvWqJ5Cn1HmXlp0iQIbTHLOCWdsO3f5nEu+e+xbHbkiFWIAysC8nd3os+ oYIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FAP8anOWorF+Rmm2oJQLE0W4TFL2c2lUXLkzNZ7iIa4=; b=kkeiCZ4Uki5NsyQ9WzxQDFDTW+kDv2xC2lonpsNvVU37pfdeYqiEyt1I1Cm5qU5OhX 4K/YYo2gy1YvdlV82HdSpH83nW5wdhdFtmbY8+p6AIbQbCgzSx7zyPd3xmgelcR/Nrsu nJfMCw8CHRgPXPg7PLLZiI3YRNYLkPt4ktClIGpfjzVbhpFuK3alMUHhMERR51JKaMan Cn5YbJk79nsSMYzb7UtONu4lLk8uR3NHfkq9wztYl4/auI1KVLizD2fq4H5W3yo6Ow+Y Np+CeRYDo0RttQGqn+K6KmJxLMR5gAZKSwM1n46YQIqGiVpsWNq6Q61GqD5v/tjiFn31 GlIw== X-Gm-Message-State: AOAM532KJW9Fq9mJwY+QK8ODlaW1hWk+s2Rlj4dM2oVhz5wmJdAEKYmb 68TX18cHlJxZr6aps0UYkApoTSckHZULXg== X-Google-Smtp-Source: ABdhPJyZwF3KWxqWOxnroNqhYwR19Y3Z81UywGGCXk8rJYfcpWQQapn2kG6DDYaIT+i5ynKRvI8XMQ== X-Received: by 2002:a1c:2544:0:b0:381:18a:a46d with SMTP id l65-20020a1c2544000000b00381018aa46dmr1338590wml.26.1646254354529; Wed, 02 Mar 2022 12:52:34 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 02/26] hw/arm/mps2-tz.c: Update AN547 documentation URL Date: Wed, 2 Mar 2022 20:52:06 +0000 Message-Id: <20220302205230.2122390-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::333 (failed) 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::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254977101100001 The AN547 application note URL has changed: update our comment accordingly. (Rev B is still downloadable from the old URL, but there is a new Rev C of the document now.) Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20220221094144.426191-1-peter.maydell@linaro.org --- hw/arm/mps2-tz.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index e287ad4d06b..4017392bf5a 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -32,7 +32,7 @@ * Application Note AN524: * https://developer.arm.com/documentation/dai0524/latest/ * Application Note AN547: - * https://developer.arm.com/-/media/Arm%20Developer%20Community/PDF/DAI05= 47B_SSE300_PLUS_U55_FPGA_for_mps3.pdf + * https://developer.arm.com/documentation/dai0547/latest/ * * The AN505 defers to the Cortex-M33 processor ARMv8M IoT Kit FVP User Gu= ide * (ARM ECM0601256) for the details of some of the device layout: --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646254737; cv=none; d=zohomail.com; s=zohoarc; b=luYYoYJzSdr5g6KKSftqoO1fUx+9Pvn7Nv2YRnvJj2sqFj+2amd1SQ2ST+WjD539y0+aByEG34qB3GmOHPEeX31ezWGGYx678eXnaT2vYYiYR1yf4fcjS0Q6ydJtELEJZXp6KcCVGSN8cUxWaLWhVCkSVVwThYeBjagSIG6RX8Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254737; 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=WQH43RYLvQDXPun3Ra4uvCKAv6ejoTJuD3KqLrDM/Eg=; b=aFL3A2WyhDna9wlHmbXNLKBlzxgy/bhBR7H4PHdhwLdwZgObu807Ac8MmECEDnsUFzfjmD+QanQvSXp6sUJWBtJg2XRE5VP/4Bi7tqo4Z2bU4Fm0WQqpuiw6rjpc9rHCy3oPh9m3xHCW0cFT03qaB8Q+Bv6DZ6wRH77Rehp22C4= 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 1646254737508135.31807405594952; Wed, 2 Mar 2022 12:58:57 -0800 (PST) Received: from localhost ([::1]:49008 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPW3k-0007UV-4T for importer@patchew.org; Wed, 02 Mar 2022 15:58:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43262) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxe-0005cl-PS for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:39 -0500 Received: from [2a00:1450:4864:20::335] (port=55192 helo=mail-wm1-x335.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxc-00085Z-Nj for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:38 -0500 Received: by mail-wm1-x335.google.com with SMTP id c192so1932740wma.4 for ; Wed, 02 Mar 2022 12:52:36 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=WQH43RYLvQDXPun3Ra4uvCKAv6ejoTJuD3KqLrDM/Eg=; b=E6+bFSCK6ilFW5zOkwiRCW4UFgZCaH2KczDAKlKER7Y0Y40VdmmDRrBRrxURBHeygA vI311t4yGiucxz4qW9VDt6a21qlIp6cluei6dhxRjtFfpEjL2Zf4fdoFCQCwSCBU9Gsb yTgAv4M2bGYlRVv7wyAUh4TMdwo6Q511dGGW4w/7hCl+eh6PXQ31DmQX2hvwC9T1hioU 9umIZOIoy/ATTKshi4kBfkBxKEnWMvYvgVvXVs9NoPQtHpzGJ14kf0KsX29v11Thqr24 5ZAfl0SdoMuSP22sHRuAddlLjKT6RW0sLfVE1Gamp62yn8w7a5Bh53wVUGKZh8u1FCpm BBBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WQH43RYLvQDXPun3Ra4uvCKAv6ejoTJuD3KqLrDM/Eg=; b=2sNgK4fxQ95bEcGGJF6yra4i+V82P2cgBQwwz8D+jT/8vpA6oqDsUynIPH6I4vmScD MJeIwdcFRBPoRU5XQjdLRBysJwD8KsDpkdKXnEQRUWKvTV9AiSmxZGlsX84N0spGSUER f2ztwoHQkQezr7s703Hy9daWwDZfb4FQzvoH2L9gCV6yC6EoiuOAEjjStiYL4qPl4opI 5b58PxWxWv5766B6Y/o1O4ClmJyx4IqysT+/VBXjQTv+lg8Sx/MR8ksnE+bADQnyYhfV mdLfsnHF7CUUV/fyIGTjq2TL++c0p/bWz+ogPfu2RTm6Yp7VZ2M5NpjwCvGPTwle6UiW ScnA== X-Gm-Message-State: AOAM5338EwX88EOCQ2xo+lgIP/aPrGfkjODrfSHVBPr1UxJXN2QM0ftA u63zocsv2VOAQ6cxVxUFsTpOJpwRdoaEzw== X-Google-Smtp-Source: ABdhPJwmLGRDnFwCNvATQPzqzqhNqmJJChuyUiDXRe9Y0oGF/Rb8fl4B0Q2gXQ2VN72M+I9zO3cM5w== X-Received: by 2002:a05:600c:4b87:b0:381:fe:3c5e with SMTP id e7-20020a05600c4b8700b0038100fe3c5emr1319029wmp.47.1646254355468; Wed, 02 Mar 2022 12:52:35 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 03/26] hw/input/tsc210x: Don't abort on bad SPI word widths Date: Wed, 2 Mar 2022 20:52:07 +0000 Message-Id: <20220302205230.2122390-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::335 (failed) 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::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254738466100001 The tsc210x doesn't support anything other than 16-bit reads on the SPI bus, but the guest can program the SPI controller to attempt them anyway. If this happens, don't abort QEMU, just log this as a guest error. This fixes our machine_arm_n8x0.py:N8x0Machine.test_n800 acceptance test, which hits this assertion. The reason we hit the assertion is because the guest kernel thinks there is a TSC2005 on this SPI bus address, not a TSC210x. (The n810 *does* have a TSC2005 at this address.) The TSC2005 supports the 24-bit accesses which the guest driver makes, and the TSC210x does not (that is, our TSC210x emulation is not missing support for a word width the hardware can handle). It's not clear whether the problem here is that the guest kernel incorrectly thinks the n800 has the same device at this SPI bus address as the n810, or that QEMU's n810 board model doesn't get the SPI devices right. At this late date there no longer appears to be any reliable information on the web about the hardware behaviour, but I am inclined to think this is a guest kernel bug. In any case, we prefer not to abort QEMU for guest-triggerable conditions, so logging the error is the right thing to do. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/736 Signed-off-by: Peter Maydell Reviewed-by: Alex Benn=C3=A9e Message-id: 20220221140750.514557-1-peter.maydell@linaro.org --- hw/input/tsc210x.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c index b0d5c2dd748..df7313db5d7 100644 --- a/hw/input/tsc210x.c +++ b/hw/input/tsc210x.c @@ -24,6 +24,7 @@ #include "hw/hw.h" #include "audio/audio.h" #include "qemu/timer.h" +#include "qemu/log.h" #include "sysemu/reset.h" #include "ui/console.h" #include "hw/arm/omap.h" /* For I2SCodec */ @@ -910,8 +911,11 @@ uint32_t tsc210x_txrx(void *opaque, uint32_t value, in= t len) TSC210xState *s =3D opaque; uint32_t ret =3D 0; =20 - if (len !=3D 16) - hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len); + if (len !=3D 16) { + qemu_log_mask(LOG_GUEST_ERROR, + "%s: bad SPI word width %i\n", __func__, len); + return 0; + } =20 /* TODO: sequential reads etc - how do we make sure the host doesn't * unintentionally read out a conversion result from a register while --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646254504; cv=none; d=zohomail.com; s=zohoarc; b=X9RnyXJ9YBdUaLTmIrqDzYT747cCz41Gq/ndpWtZnYauSNAJhv/Oi//aYkJ3bWJmi4VO3st8sw5QQSGg7ld/lVgNelUtYUZ7py4VXqYOsGXPKTTuV1eLa1E0IR7WgYBIFpxJgLw//ZpOMRWfTPAzNxefz0Azr0c8wRaSKYXAQXI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254504; 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=1l2NOv9OwvipekROpdxjCaOFOo+1t/8TzNdjQpxDeL4=; b=G9gHuEpU/E8Nmajlp43WynBJjbHm+6rqVi0ETIoOfVEPmYgykpCkgbHCnKsUrn93I3w9OF/g3r03D567K/J6ce2FMBi9pyLvP944rOwn9Aa9r9GKeZkfvy5YSUV+LPG1G982v+PgDofFxFbUppfzlS4nuhBTDYTSURBz6KNfXSk= 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 1646254504270346.54101047136896; Wed, 2 Mar 2022 12:55:04 -0800 (PST) Received: from localhost ([::1]:38890 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPVzz-0000O0-7Q for importer@patchew.org; Wed, 02 Mar 2022 15:55:03 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43286) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxg-0005dN-6o for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:41 -0500 Received: from [2a00:1450:4864:20::32f] (port=51113 helo=mail-wm1-x32f.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxe-00085x-Br for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:39 -0500 Received: by mail-wm1-x32f.google.com with SMTP id y5so1977160wmi.0 for ; Wed, 02 Mar 2022 12:52:37 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=1l2NOv9OwvipekROpdxjCaOFOo+1t/8TzNdjQpxDeL4=; b=XRPSAMbjjP8tP7nmhtOZiMab+AaJs17RNOoPiZs8H8d8Ru+klWxZkPACQUJ4lLtzus 1+bwaMob5YHsCIGHNR6M5GSzNnGI74VP38El+b7wCKX8NNKTTXSnlI+Oegt0UDR0S/GU QJJaVkIWLrpEOgNezSkGMqOxs5JEwVxtH4a3RsTLZGlUl2ufeVKLOFJt/mRjTjQJrvZr XfPOqH1SCheiwYjq+O1bu4sM16/ff19MgF47beXqXB/ldrwYsgOUxFQicNlpMr8iyiMf 5OtarqNPjKAlSZcVNvAgLr6nuuaibx7+SqLJkWkdBYLe4bYEX1NXwZNIBWugPqkiXbFB Pu8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1l2NOv9OwvipekROpdxjCaOFOo+1t/8TzNdjQpxDeL4=; b=V28ejyXyjFQ0D15vquL/dgaA3I9AflJPe4vgDW2C3N/4GsidTxIQKl4sqBgZVZ28DL Tt6vrHAPnknpv8/Yi7804YWk8dhpUg5DTf5rH8u35Qa9hf7lgnbfd1uJxGBvmo16aX2v mRICGAYqGk63jj27RgL8t1muV9/12Qxm0S9drc1Ag2LV6Bs7o1+BAoTKVoNeWxcwcRHW UP9L3ZciTXzRZklz0V35yIBgtwbZfWoQQJ2SHWP+tqgKBI2ph37911AqNUlneqBK75pi nvO5Mr+Aut4dp/3LMgYSIZtCSvqFH69igXEcqyLg0H4zvdQSbwlxQTHy4SZAlQwsKenL gvog== X-Gm-Message-State: AOAM530YnKwNR7cqyhuxbLM941BOGFX54q4NyL6mWr0Fgi4HyCrnWZw8 rKhpinhPz0OBhR6gmoSGXxDDWtYHbQqMgg== X-Google-Smtp-Source: ABdhPJzC3VSZfVif4Qr5cCds2ZPqC0JMLNiKtRtLSHcxbEH0tHu2RedXIRdPShbWHNhC5/YvO0WpvA== X-Received: by 2002:a7b:c954:0:b0:385:6e61:aea6 with SMTP id i20-20020a7bc954000000b003856e61aea6mr1334360wml.91.1646254356387; Wed, 02 Mar 2022 12:52:36 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 04/26] hw/i2c: flatten pca954x mux device Date: Wed, 2 Mar 2022 20:52:08 +0000 Message-Id: <20220302205230.2122390-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::32f (failed) 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::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254504906100002 From: Patrick Venture Previously this device created N subdevices which each owned an i2c bus. Now this device simply owns the N i2c busses directly. Tested: Verified devices behind mux are still accessible via qmp and i2c from within an arm32 SoC. Reviewed-by: Hao Wu Signed-off-by: Patrick Venture Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20220202164533.1283668-1-venture@google.com Signed-off-by: Peter Maydell --- hw/i2c/i2c_mux_pca954x.c | 77 +++++++--------------------------------- 1 file changed, 13 insertions(+), 64 deletions(-) diff --git a/hw/i2c/i2c_mux_pca954x.c b/hw/i2c/i2c_mux_pca954x.c index 847c59921cf..a9517b612ae 100644 --- a/hw/i2c/i2c_mux_pca954x.c +++ b/hw/i2c/i2c_mux_pca954x.c @@ -30,24 +30,6 @@ #define PCA9548_CHANNEL_COUNT 8 #define PCA9546_CHANNEL_COUNT 4 =20 -/* - * struct Pca954xChannel - The i2c mux device will have N of these states - * that own the i2c channel bus. - * @bus: The owned channel bus. - * @enabled: Is this channel active? - */ -typedef struct Pca954xChannel { - SysBusDevice parent; - - I2CBus *bus; - - bool enabled; -} Pca954xChannel; - -#define TYPE_PCA954X_CHANNEL "pca954x-channel" -#define PCA954X_CHANNEL(obj) \ - OBJECT_CHECK(Pca954xChannel, (obj), TYPE_PCA954X_CHANNEL) - /* * struct Pca954xState - The pca954x state object. * @control: The value written to the mux control. @@ -59,8 +41,8 @@ typedef struct Pca954xState { =20 uint8_t control; =20 - /* The channel i2c buses. */ - Pca954xChannel channel[PCA9548_CHANNEL_COUNT]; + bool enabled[PCA9548_CHANNEL_COUNT]; + I2CBus *bus[PCA9548_CHANNEL_COUNT]; } Pca954xState; =20 /* @@ -98,11 +80,11 @@ static bool pca954x_match(I2CSlave *candidate, uint8_t = address, } =20 for (i =3D 0; i < mc->nchans; i++) { - if (!mux->channel[i].enabled) { + if (!mux->enabled[i]) { continue; } =20 - if (i2c_scan_bus(mux->channel[i].bus, address, broadcast, + if (i2c_scan_bus(mux->bus[i], address, broadcast, current_devs)) { if (!broadcast) { return true; @@ -125,9 +107,9 @@ static void pca954x_enable_channel(Pca954xState *s, uin= t8_t enable_mask) */ for (i =3D 0; i < mc->nchans; i++) { if (enable_mask & (1 << i)) { - s->channel[i].enabled =3D true; + s->enabled[i] =3D true; } else { - s->channel[i].enabled =3D false; + s->enabled[i] =3D false; } } } @@ -184,23 +166,7 @@ I2CBus *pca954x_i2c_get_bus(I2CSlave *mux, uint8_t cha= nnel) Pca954xState *pca954x =3D PCA954X(mux); =20 g_assert(channel < pc->nchans); - return I2C_BUS(qdev_get_child_bus(DEVICE(&pca954x->channel[channel]), - "i2c-bus")); -} - -static void pca954x_channel_init(Object *obj) -{ - Pca954xChannel *s =3D PCA954X_CHANNEL(obj); - s->bus =3D i2c_init_bus(DEVICE(s), "i2c-bus"); - - /* Start all channels as disabled. */ - s->enabled =3D false; -} - -static void pca954x_channel_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - dc->desc =3D "Pca954x Channel"; + return pca954x->bus[channel]; } =20 static void pca9546_class_init(ObjectClass *klass, void *data) @@ -215,28 +181,19 @@ static void pca9548_class_init(ObjectClass *klass, vo= id *data) s->nchans =3D PCA9548_CHANNEL_COUNT; } =20 -static void pca954x_realize(DeviceState *dev, Error **errp) -{ - Pca954xState *s =3D PCA954X(dev); - Pca954xClass *c =3D PCA954X_GET_CLASS(s); - int i; - - /* SMBus modules. Cannot fail. */ - for (i =3D 0; i < c->nchans; i++) { - sysbus_realize(SYS_BUS_DEVICE(&s->channel[i]), &error_abort); - } -} - static void pca954x_init(Object *obj) { Pca954xState *s =3D PCA954X(obj); Pca954xClass *c =3D PCA954X_GET_CLASS(obj); int i; =20 - /* Only initialize the children we expect. */ + /* SMBus modules. Cannot fail. */ for (i =3D 0; i < c->nchans; i++) { - object_initialize_child(obj, "channel[*]", &s->channel[i], - TYPE_PCA954X_CHANNEL); + g_autofree gchar *bus_name =3D g_strdup_printf("i2c.%d", i); + + /* start all channels as disabled. */ + s->enabled[i] =3D false; + s->bus[i] =3D i2c_init_bus(DEVICE(s), bus_name); } } =20 @@ -252,7 +209,6 @@ static void pca954x_class_init(ObjectClass *klass, void= *data) rc->phases.enter =3D pca954x_enter_reset; =20 dc->desc =3D "Pca954x i2c-mux"; - dc->realize =3D pca954x_realize; =20 k->write_data =3D pca954x_write_data; k->receive_byte =3D pca954x_read_byte; @@ -278,13 +234,6 @@ static const TypeInfo pca954x_info[] =3D { .parent =3D TYPE_PCA954X, .class_init =3D pca9548_class_init, }, - { - .name =3D TYPE_PCA954X_CHANNEL, - .parent =3D TYPE_SYS_BUS_DEVICE, - .class_init =3D pca954x_channel_class_init, - .instance_size =3D sizeof(Pca954xChannel), - .instance_init =3D pca954x_channel_init, - } }; =20 DEFINE_TYPES(pca954x_info) --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646254711; cv=none; d=zohomail.com; s=zohoarc; b=UJQrEwiJ6gF2NyRdII1oNnmgQg9ndMkRBQe4ZFIjucehZEsPgF/k6GsXTvKRlqVua871mw9l1sBX62HOhfdhF8c4MwCnICAhRVTGGcObWK1/NiZAIAxFYbLiHyfYpHqsQpsYGErqZMNoNUTy8bt3piYxm8DDNlpwQ+YFVHSI358= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254711; 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=9/1gVGYDHfIM2iOzA0/RLao08BBx/4vLNzoqpMeDyBE=; b=k8IOfWf/Q22zk1ltaGVOpOvmB8olEc6RDm2AQUxTh8PfUWVELG6n8d1depKUCXU0ukhkJg0sVnpDUXXHj5LjbCDbpOdssL41V6FwElgj618/ee1ujPwVN+g3jrRf3bilVg7Qeg/s3G5zuz7JGRODYU8qnRLS2miA0ufbORVy3t8= 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 1646254711177228.0214773179307; Wed, 2 Mar 2022 12:58:31 -0800 (PST) Received: from localhost ([::1]:47266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPW3K-0006Jv-20 for importer@patchew.org; Wed, 02 Mar 2022 15:58:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43308) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxh-0005e3-B1 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:41 -0500 Received: from [2a00:1450:4864:20::434] (port=37881 helo=mail-wr1-x434.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxf-000869-9c for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:40 -0500 Received: by mail-wr1-x434.google.com with SMTP id bk29so4689376wrb.4 for ; Wed, 02 Mar 2022 12:52:38 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=9/1gVGYDHfIM2iOzA0/RLao08BBx/4vLNzoqpMeDyBE=; b=K8otbdbvdz7/Na+jzlcM7OMpDJvFm5/dm7HAprhLtKwQWir/tWaesLq7wW8D+XJZ6N mKcqoTRl0TJEOIFa3f+3nKCjytbxUd0TnDGPloYscw0/StdI82mxM7UotEFGSyS8ikuk rl382AqbXlfD1HORILKfg5hJKwN3sJeGwI3Llo0IeVCLR892yX7cEL017VewCDQb8Qaq KSgc0EnEBtNYAlmVpvCV561ki+Gqnnuyd9/AZ+RtB9WHMSiFwfC+IsnUGf6OBxjpp0T2 sajVVsS9vDpVV+XJDq+P3eI2R/yAFQlHdbpbTe8wVGRY2ZyPieJ5CTEf+F8YdpMXtN7L rfeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9/1gVGYDHfIM2iOzA0/RLao08BBx/4vLNzoqpMeDyBE=; b=SmzMcw4JNGlr2V2zHrDVlLyVZPN3GnKmUK7WtFo0yOxWDoYsNKE/6mriENM4Im5jH7 9klEytIVAt+/PdAkHM9jdpfVuFUrM5v3xXpFmyXC02HZxvxD/q5zDBXSVq7Jn9aD/i8D jqFNEvRAAPxOwhgQCWPZoKKV9wfPe6v6sc+QKyHeNulbrfkZq/KA7sNyDyN0MnSunT3z S4oAwU8abNvxFD1qv5mUGKNrfRUVxO40Q4/pOIq74RbAvedCQwb73lu8ro7iJ9R8umef /YTMjUIl76B5nT/GRwM9rHgglzzAhQ3jYYvmFn7XHIWizXPEEzavgthhFepralV7RVS4 JjWA== X-Gm-Message-State: AOAM530EV7H3mO3CgEcNTUStWWsq1Dy6Xvl44mTZDxbbgr5JQgr/tCRV ccT2X6F+Yya9zyJTYAnE8yB2f2vzEJGbqw== X-Google-Smtp-Source: ABdhPJzNOqmldfvtmHZcHCej2jSArxeilf+wOp/yVrymwmf6d7AyHQZb+iwSxoBb2LDYm9dK9gpyZg== X-Received: by 2002:a5d:4982:0:b0:1ef:5b5d:3164 with SMTP id r2-20020a5d4982000000b001ef5b5d3164mr21851991wrq.303.1646254357340; Wed, 02 Mar 2022 12:52:37 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 05/26] target/arm: Support PSCI 1.1 and SMCCC 1.0 Date: Wed, 2 Mar 2022 20:52:09 +0000 Message-Id: <20220302205230.2122390-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::434 (failed) 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::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x434.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254712539100002 Content-Type: text/plain; charset="utf-8" From: Akihiko Odaki Support the latest PSCI on TCG and HVF. A 64-bit function called from AArch32 now returns NOT_SUPPORTED, which is necessary to adhere to SMC Calling Convention 1.0. It is still not compliant with SMCCC 1.3 since they do not implement mandatory functions. Signed-off-by: Akihiko Odaki Message-id: 20220213035753.34577-1-akihiko.odaki@gmail.com Reviewed-by: Peter Maydell [PMM: update MISMATCH_CHECK checks on PSCI_VERSION macros to match] Signed-off-by: Peter Maydell --- target/arm/kvm-consts.h | 13 +++++++++---- hw/arm/boot.c | 12 +++++++++--- target/arm/cpu.c | 5 +++-- target/arm/hvf/hvf.c | 27 ++++++++++++++++++++++++++- target/arm/kvm64.c | 2 +- target/arm/psci.c | 35 ++++++++++++++++++++++++++++++++--- 6 files changed, 80 insertions(+), 14 deletions(-) diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h index 580f1c1fee0..e770921ddc2 100644 --- a/target/arm/kvm-consts.h +++ b/target/arm/kvm-consts.h @@ -77,6 +77,8 @@ MISMATCH_CHECK(QEMU_PSCI_0_1_FN_MIGRATE, KVM_PSCI_FN_MIGR= ATE); #define QEMU_PSCI_0_2_FN64_AFFINITY_INFO QEMU_PSCI_0_2_FN64(4) #define QEMU_PSCI_0_2_FN64_MIGRATE QEMU_PSCI_0_2_FN64(5) =20 +#define QEMU_PSCI_1_0_FN_PSCI_FEATURES QEMU_PSCI_0_2_FN(10) + MISMATCH_CHECK(QEMU_PSCI_0_2_FN_CPU_SUSPEND, PSCI_0_2_FN_CPU_SUSPEND); MISMATCH_CHECK(QEMU_PSCI_0_2_FN_CPU_OFF, PSCI_0_2_FN_CPU_OFF); MISMATCH_CHECK(QEMU_PSCI_0_2_FN_CPU_ON, PSCI_0_2_FN_CPU_ON); @@ -84,18 +86,21 @@ MISMATCH_CHECK(QEMU_PSCI_0_2_FN_MIGRATE, PSCI_0_2_FN_MI= GRATE); MISMATCH_CHECK(QEMU_PSCI_0_2_FN64_CPU_SUSPEND, PSCI_0_2_FN64_CPU_SUSPEND); MISMATCH_CHECK(QEMU_PSCI_0_2_FN64_CPU_ON, PSCI_0_2_FN64_CPU_ON); MISMATCH_CHECK(QEMU_PSCI_0_2_FN64_MIGRATE, PSCI_0_2_FN64_MIGRATE); +MISMATCH_CHECK(QEMU_PSCI_1_0_FN_PSCI_FEATURES, PSCI_1_0_FN_PSCI_FEATURES); =20 /* PSCI v0.2 return values used by TCG emulation of PSCI */ =20 /* No Trusted OS migration to worry about when offlining CPUs */ #define QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED 2 =20 -/* We implement version 0.2 only */ -#define QEMU_PSCI_0_2_RET_VERSION_0_2 2 +#define QEMU_PSCI_VERSION_0_1 0x00001 +#define QEMU_PSCI_VERSION_0_2 0x00002 +#define QEMU_PSCI_VERSION_1_1 0x10001 =20 MISMATCH_CHECK(QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED, PSCI_0_2_TOS_= MP); -MISMATCH_CHECK(QEMU_PSCI_0_2_RET_VERSION_0_2, - (PSCI_VERSION_MAJOR(0) | PSCI_VERSION_MINOR(2))); +/* We don't bother to check every possible version value */ +MISMATCH_CHECK(QEMU_PSCI_VERSION_0_2, PSCI_VERSION(0, 2)); +MISMATCH_CHECK(QEMU_PSCI_VERSION_1_1, PSCI_VERSION(1, 1)); =20 /* PSCI return values (inclusive of all PSCI versions) */ #define QEMU_PSCI_RET_SUCCESS 0 diff --git a/hw/arm/boot.c b/hw/arm/boot.c index b1e95978f26..0eeef94ceb5 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -488,9 +488,15 @@ static void fdt_add_psci_node(void *fdt) } =20 qemu_fdt_add_subnode(fdt, "/psci"); - if (armcpu->psci_version =3D=3D 2) { - const char comp[] =3D "arm,psci-0.2\0arm,psci"; - qemu_fdt_setprop(fdt, "/psci", "compatible", comp, sizeof(comp)); + if (armcpu->psci_version =3D=3D QEMU_PSCI_VERSION_0_2 || + armcpu->psci_version =3D=3D QEMU_PSCI_VERSION_1_1) { + if (armcpu->psci_version =3D=3D QEMU_PSCI_VERSION_0_2) { + const char comp[] =3D "arm,psci-0.2\0arm,psci"; + qemu_fdt_setprop(fdt, "/psci", "compatible", comp, sizeof(comp= )); + } else { + const char comp[] =3D "arm,psci-1.0\0arm,psci-0.2\0arm,psci"; + qemu_fdt_setprop(fdt, "/psci", "compatible", comp, sizeof(comp= )); + } =20 cpu_off_fn =3D QEMU_PSCI_0_2_FN_CPU_OFF; if (arm_feature(&armcpu->env, ARM_FEATURE_AARCH64)) { diff --git a/target/arm/cpu.c b/target/arm/cpu.c index c085dc10ee7..dd64d178e2e 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1110,11 +1110,12 @@ static void arm_cpu_initfn(Object *obj) * picky DTB consumer will also provide a helpful error message. */ cpu->dtb_compatible =3D "qemu,unknown"; - cpu->psci_version =3D 1; /* By default assume PSCI v0.1 */ + cpu->psci_version =3D QEMU_PSCI_VERSION_0_1; /* By default assume PSCI= v0.1 */ cpu->kvm_target =3D QEMU_KVM_ARM_TARGET_NONE; =20 if (tcg_enabled() || hvf_enabled()) { - cpu->psci_version =3D 2; /* TCG and HVF implement PSCI 0.2 */ + /* TCG and HVF implement PSCI 1.1 */ + cpu->psci_version =3D QEMU_PSCI_VERSION_1_1; } } =20 diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 4d4ddab348a..8c34f86792e 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -678,7 +678,7 @@ static bool hvf_handle_psci_call(CPUState *cpu) =20 switch (param[0]) { case QEMU_PSCI_0_2_FN_PSCI_VERSION: - ret =3D QEMU_PSCI_0_2_RET_VERSION_0_2; + ret =3D QEMU_PSCI_VERSION_1_1; break; case QEMU_PSCI_0_2_FN_MIGRATE_INFO_TYPE: ret =3D QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED; /* No truste= d OS */ @@ -746,6 +746,31 @@ static bool hvf_handle_psci_call(CPUState *cpu) case QEMU_PSCI_0_2_FN_MIGRATE: ret =3D QEMU_PSCI_RET_NOT_SUPPORTED; break; + case QEMU_PSCI_1_0_FN_PSCI_FEATURES: + switch (param[1]) { + case QEMU_PSCI_0_2_FN_PSCI_VERSION: + case QEMU_PSCI_0_2_FN_MIGRATE_INFO_TYPE: + case QEMU_PSCI_0_2_FN_AFFINITY_INFO: + case QEMU_PSCI_0_2_FN64_AFFINITY_INFO: + case QEMU_PSCI_0_2_FN_SYSTEM_RESET: + case QEMU_PSCI_0_2_FN_SYSTEM_OFF: + case QEMU_PSCI_0_1_FN_CPU_ON: + case QEMU_PSCI_0_2_FN_CPU_ON: + case QEMU_PSCI_0_2_FN64_CPU_ON: + case QEMU_PSCI_0_1_FN_CPU_OFF: + case QEMU_PSCI_0_2_FN_CPU_OFF: + case QEMU_PSCI_0_1_FN_CPU_SUSPEND: + case QEMU_PSCI_0_2_FN_CPU_SUSPEND: + case QEMU_PSCI_0_2_FN64_CPU_SUSPEND: + case QEMU_PSCI_1_0_FN_PSCI_FEATURES: + ret =3D 0; + break; + case QEMU_PSCI_0_1_FN_MIGRATE: + case QEMU_PSCI_0_2_FN_MIGRATE: + default: + ret =3D QEMU_PSCI_RET_NOT_SUPPORTED; + } + break; default: return false; } diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c index 71c3ca69717..64d48bfb19d 100644 --- a/target/arm/kvm64.c +++ b/target/arm/kvm64.c @@ -864,7 +864,7 @@ int kvm_arch_init_vcpu(CPUState *cs) cpu->kvm_init_features[0] |=3D 1 << KVM_ARM_VCPU_POWER_OFF; } if (kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PSCI_0_2)) { - cpu->psci_version =3D 2; + cpu->psci_version =3D QEMU_PSCI_VERSION_0_2; cpu->kvm_init_features[0] |=3D 1 << KVM_ARM_VCPU_PSCI_0_2; } if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { diff --git a/target/arm/psci.c b/target/arm/psci.c index b279c0b9a45..6c1239bb968 100644 --- a/target/arm/psci.c +++ b/target/arm/psci.c @@ -57,7 +57,7 @@ void arm_handle_psci_call(ARMCPU *cpu) { /* * This function partially implements the logic for dispatching Power = State - * Coordination Interface (PSCI) calls (as described in ARM DEN 0022B.= b), + * Coordination Interface (PSCI) calls (as described in ARM DEN 0022D.= b), * to the extent required for bringing up and taking down secondary co= res, * and for handling reset and poweroff requests. * Additional information about the calling convention used is availab= le in @@ -80,7 +80,7 @@ void arm_handle_psci_call(ARMCPU *cpu) } =20 if ((param[0] & QEMU_PSCI_0_2_64BIT) && !is_a64(env)) { - ret =3D QEMU_PSCI_RET_INVALID_PARAMS; + ret =3D QEMU_PSCI_RET_NOT_SUPPORTED; goto err; } =20 @@ -89,7 +89,7 @@ void arm_handle_psci_call(ARMCPU *cpu) ARMCPU *target_cpu; =20 case QEMU_PSCI_0_2_FN_PSCI_VERSION: - ret =3D QEMU_PSCI_0_2_RET_VERSION_0_2; + ret =3D QEMU_PSCI_VERSION_1_1; break; case QEMU_PSCI_0_2_FN_MIGRATE_INFO_TYPE: ret =3D QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED; /* No truste= d OS */ @@ -170,6 +170,35 @@ void arm_handle_psci_call(ARMCPU *cpu) } helper_wfi(env, 4); break; + case QEMU_PSCI_1_0_FN_PSCI_FEATURES: + switch (param[1]) { + case QEMU_PSCI_0_2_FN_PSCI_VERSION: + case QEMU_PSCI_0_2_FN_MIGRATE_INFO_TYPE: + case QEMU_PSCI_0_2_FN_AFFINITY_INFO: + case QEMU_PSCI_0_2_FN64_AFFINITY_INFO: + case QEMU_PSCI_0_2_FN_SYSTEM_RESET: + case QEMU_PSCI_0_2_FN_SYSTEM_OFF: + case QEMU_PSCI_0_1_FN_CPU_ON: + case QEMU_PSCI_0_2_FN_CPU_ON: + case QEMU_PSCI_0_2_FN64_CPU_ON: + case QEMU_PSCI_0_1_FN_CPU_OFF: + case QEMU_PSCI_0_2_FN_CPU_OFF: + case QEMU_PSCI_0_1_FN_CPU_SUSPEND: + case QEMU_PSCI_0_2_FN_CPU_SUSPEND: + case QEMU_PSCI_0_2_FN64_CPU_SUSPEND: + case QEMU_PSCI_1_0_FN_PSCI_FEATURES: + if (!(param[1] & QEMU_PSCI_0_2_64BIT) || is_a64(env)) { + ret =3D 0; + break; + } + /* fallthrough */ + case QEMU_PSCI_0_1_FN_MIGRATE: + case QEMU_PSCI_0_2_FN_MIGRATE: + default: + ret =3D QEMU_PSCI_RET_NOT_SUPPORTED; + break; + } + break; case QEMU_PSCI_0_1_FN_MIGRATE: case QEMU_PSCI_0_2_FN_MIGRATE: default: --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255319; cv=none; d=zohomail.com; s=zohoarc; b=dDPDc8L89uyh3JzPuHRwXI+c4sSyaEp5HZbyYVh7EtOi62YJQYYfkDX9N55T84rZmB4PDrmTrTKhCyIhLdjjLCpGT3+2Z6Z6DchiAvlOgkQ6SlI3ceK7ZqyEgy7qejZSlMgJDEdvs/f/tDMdBWUpz9wP+/0js3qPIpBnod0u0Mw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255319; 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=uceZrm8t+0Mt9tyMwvyRcCiMhGjKSU6WwAbSSYwHPe8=; b=Hz8AQPAzeXFt5ji+kZsqu3J/L/pwOSs/JECzCAK0dtV8sJJw3N/aRqp/HKLKqq/QQ3Atw2G+lYnrvmWiH9lxMn2I5hL4I2VMr7tIt/GPgHKHl4vGbXtwZ+EHEWbL+/JJm1lBCOxxXaDajRY7YkH1SMTKZThINgRpCI/L5qky1JY= 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 1646255319919253.91170130399234; Wed, 2 Mar 2022 13:08:39 -0800 (PST) Received: from localhost ([::1]:41814 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWD8-0005Mf-VD for importer@patchew.org; Wed, 02 Mar 2022 16:08:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43310) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxh-0005e5-Cb for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:41 -0500 Received: from [2a00:1450:4864:20::429] (port=33662 helo=mail-wr1-x429.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxf-00086L-F7 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:41 -0500 Received: by mail-wr1-x429.google.com with SMTP id j17so4743877wrc.0 for ; Wed, 02 Mar 2022 12:52:39 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=uceZrm8t+0Mt9tyMwvyRcCiMhGjKSU6WwAbSSYwHPe8=; b=I0hN8BxKNuU+DNvcCTEkkqBPRvIeneOgTeEDXjvHAlPaUwBD+1vYRnV4apNFhmej8A 7JgDysY7nFsrGLpvk64M3NKk7oNSAJZIGZ4D1Ef7xTx1YiX6GzrwO2Ya6picMfZy7w+e maAJlUAsScYETEsQJRyRqB2LRA1/Wq7ouny1lxBIrsCi3SxepSoESifRbx4ioJmiXDW0 RM5ndXVkZp/tJEXIGNiIK2dYtKbDf2/0yBWbbwVT47b+L7FHYBmVrOmzMWchT1oQ1FOU Dijj4ij1EBSmFIG7DoEnqDSiMJiGJmWLuiu0q84RXno6h+ZwttU9c7tyEXqFeO8VOhYu /ZHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uceZrm8t+0Mt9tyMwvyRcCiMhGjKSU6WwAbSSYwHPe8=; b=SHRfKqRNRXmJsi4bPZ8Jx5RNnLN9/EWnXgAfCvNo57BeX0gmCPkWNecm9NVGdVYW6o VR0PkKjUW2Xy0ZKbFbO+DWvtxpQFs0TqkufGstqW6XMX6zYVUUbSQub5zHzQoDdhNdNP sWcfM0YTWH1LkhxttuOt8LK5rPGbTxKUZ07wYROQSu2Xn+6wyPJS8y+cxHamv4Rg3OQN XGtBgVp6WMSF+nYO/BcGm1GevLRIcK6i0xOc8G3+K18y0k9es2n4kqZKyQ1XqncKi1IX iCyDp0of0iC+MgbG1vVD1PV8zL0ieFwEzY63jrNWFWP9sgg8IJwyytV7jl/HcQa1cHUz qa8g== X-Gm-Message-State: AOAM533eWq3t9jt6DldXycdDYt2brR7IQFACl7yxFGslshVioMUyimzX FipykxWyq9uSVxmJz+bz/cWAzp6tu5f6iQ== X-Google-Smtp-Source: ABdhPJwhjop5EkefX9CVFNv7TtP5NQmPMRIzQtZFJp6pN2gWJEuYwTf73kOVw4czmrPvo8z/USIVCA== X-Received: by 2002:a5d:628d:0:b0:1ed:f981:ccc with SMTP id k13-20020a5d628d000000b001edf9810cccmr23450314wru.616.1646254358145; Wed, 02 Mar 2022 12:52:38 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 06/26] target/arm: Fix early free of TCG temp in handle_simd_shift_fpint_conv() Date: Wed, 2 Mar 2022 20:52:10 +0000 Message-Id: <20220302205230.2122390-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::429 (failed) 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::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x429.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255320675100001 Content-Type: text/plain; charset="utf-8" From: Wentao_Liang handle_simd_shift_fpint_conv() was accidentally freeing the TCG temporary tcg_fpstatus too early, before the last use of it. Move the free down to where it belongs. Signed-off-by: Wentao_Liang Reviewed-by: Richard Henderson [PMM: cleaned up commit message] Signed-off-by: Peter Maydell --- target/arm/translate-a64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 5a1df25f91e..d1a59fad9c2 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -9045,9 +9045,9 @@ static void handle_simd_shift_fpint_conv(DisasContext= *s, bool is_scalar, } } =20 - tcg_temp_free_ptr(tcg_fpstatus); tcg_temp_free_i32(tcg_shift); gen_helper_set_rmode(tcg_rmode, tcg_rmode, tcg_fpstatus); + tcg_temp_free_ptr(tcg_fpstatus); tcg_temp_free_i32(tcg_rmode); } =20 --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646254942; cv=none; d=zohomail.com; s=zohoarc; b=aOePYTECeql63EupLVxBXKsT7poFUjPKM7HFerYc5ZbCaaqV6aSvHKGg1imxsTLaAFPPlh2vEtcxHKVjEchtOJFqQF06ErovjFjlS5kZCenYYvmHLQWh6MTq4owFsZd8JIVVqoyMA2QdCZRgnIAnd8FlcaeZkrtfX7SU8gfBQjw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254942; 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=7Iahj6+8k9bQAnoYUUi7Icju5K12EU5059U2BQiNTcI=; b=JJ4o1H8G2LxdFloqmwvJi9EaZ1r3V6h2Jn2gAJwLySk6qztVimt6FFnrl2QKVaTdxRGBg1Bmphzpx5G9zW4vjnQdi+wTePqtOfcSEF9ELDrN7dplvzO1TayRZfYbnu9xFdwgkBKgZ3wjVGF8/BGJ5EPoqgrmU8Nz3RbhSFQe2fk= 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 1646254942129185.58478068242164; Wed, 2 Mar 2022 13:02:22 -0800 (PST) Received: from localhost ([::1]:55706 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPW72-0003xJ-Vf for importer@patchew.org; Wed, 02 Mar 2022 16:02:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43346) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxi-0005gr-JM for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:42 -0500 Received: from [2a00:1450:4864:20::430] (port=46721 helo=mail-wr1-x430.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxg-00087U-IN for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:42 -0500 Received: by mail-wr1-x430.google.com with SMTP id x15so4646509wru.13 for ; Wed, 02 Mar 2022 12:52:40 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=7Iahj6+8k9bQAnoYUUi7Icju5K12EU5059U2BQiNTcI=; b=YGXayhGRxGGqVfAyR+lLEFc3QE2d4wT+ZdTF7gpkMfRF4+/Hj6drTfDJeM0nEQ3hk/ rcAP+GUoWTTlsTS4AI5uiyXnQTPlDYK0dLsXRjzd4OCVypy4phS6pz3+MPXipVjxEjOA lPpKY2QRdUYQQoafIFaFUiic0CaDgTdngRcUS1hJbcfjesLYTnisqYoqoL6OCLPAGa84 7GcqcwwFv7HqkrT5nwPv6MyK2xjhb4ttwsRvhCZhDAWZLuTTg9mns5gyhnmDCIw8566q qET/wi0PrzH0477eSRM6kkqfdlqQG70hcJnLaDmUJ0CP0Rrw8B/B3Zi8mhDGfPFDn/Rw bywQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7Iahj6+8k9bQAnoYUUi7Icju5K12EU5059U2BQiNTcI=; b=ke8DQOKVrftN3zyr6JRFAdKSJCbGckeygFeShVca1B8MjLQG3TCIooW7Angy/Qhkae gh06ZEIxnwYnlNvGfiy7rkwm4yWN0PPR2Cez4XOJv3JS0gr9VMHYHWHW+iONQ4LoFAwM RIZKAF1SM4v/q9qLJNr43I1iFV51ww2k0AbE17fN99aspviS7Ew+DP80wAeFxMUxA4mN 8Sw2P92y9AGkOwE1rkN++mjmt5aNcTHd2toymmChtx/1uMbMGO4AJRpA+a2lRTxEJ6D2 kJ1ngspz/kvFHQ4fshR/NG7zhKp6BJ9kRFiZocl3H+66rFx31xuq2StwZfeBsKDNl0EV mbqw== X-Gm-Message-State: AOAM532IrZL8DORYjEotTxZg+Dpin881xKIe1MQHlJCc7oyPB7KO6KTS BNmInlQLkP2NWo1EEFVF7rya4I6mP+cWTQ== X-Google-Smtp-Source: ABdhPJx3uqnT0E5gDEmifUdXeDU0Xi3OSsAlz6nnHuCfDrqX7Y4FBnJNJIIFcaa4MhqpEXOtipErSg== X-Received: by 2002:a05:6000:1882:b0:1f0:4c38:6d55 with SMTP id a2-20020a056000188200b001f04c386d55mr412258wri.483.1646254359270; Wed, 02 Mar 2022 12:52:39 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 07/26] tests/qtest: add qtests for npcm7xx sdhci Date: Wed, 2 Mar 2022 20:52:11 +0000 Message-Id: <20220302205230.2122390-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::430 (failed) 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: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254944760100001 Content-Type: text/plain; charset="utf-8" From: Shengtan Mao Reviewed-by: Hao Wu Reviewed-by: Chris Rauer Signed-off-by: Shengtan Mao Signed-off-by: Patrick Venture Message-id: 20220225174451.192304-1-wuhaotsh@google.com Signed-off-by: Peter Maydell --- tests/qtest/npcm7xx_sdhci-test.c | 215 +++++++++++++++++++++++++++++++ tests/qtest/meson.build | 1 + 2 files changed, 216 insertions(+) create mode 100644 tests/qtest/npcm7xx_sdhci-test.c diff --git a/tests/qtest/npcm7xx_sdhci-test.c b/tests/qtest/npcm7xx_sdhci-t= est.c new file mode 100644 index 00000000000..c1f496fb29b --- /dev/null +++ b/tests/qtest/npcm7xx_sdhci-test.c @@ -0,0 +1,215 @@ +/* + * QTests for NPCM7xx SD-3.0 / MMC-4.51 Host Controller + * + * Copyright (c) 2022 Google LLC + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WIT= HOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#include "qemu/osdep.h" +#include "hw/sd/npcm7xx_sdhci.h" + +#include "libqos/libqtest.h" +#include "libqtest-single.h" +#include "libqos/sdhci-cmd.h" + +#define NPCM7XX_REG_SIZE 0x100 +#define NPCM7XX_MMC_BA 0xF0842000 +#define NPCM7XX_BLK_SIZE 512 +#define NPCM7XX_TEST_IMAGE_SIZE (1 << 30) + +char *sd_path; + +static QTestState *setup_sd_card(void) +{ + QTestState *qts =3D qtest_initf( + "-machine kudo-bmc " + "-device sd-card,drive=3Ddrive0 " + "-drive id=3Ddrive0,if=3Dnone,file=3D%s,format=3Draw,auto-read-onl= y=3Doff", + sd_path); + + qtest_writew(qts, NPCM7XX_MMC_BA + SDHC_SWRST, SDHC_RESET_ALL); + qtest_writew(qts, NPCM7XX_MMC_BA + SDHC_CLKCON, + SDHC_CLOCK_SDCLK_EN | SDHC_CLOCK_INT_STABLE | + SDHC_CLOCK_INT_EN); + sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0, SDHC_APP_CMD); + sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0x41200000, 0, (41 << 8)); + sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0, SDHC_ALL_SEND_CID); + sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0, SDHC_SEND_RELATIVE_ADD= R); + sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0x45670000, 0, + SDHC_SELECT_DESELECT_CARD); + + return qts; +} + +static void write_sdread(QTestState *qts, const char *msg) +{ + int fd, ret; + size_t len =3D strlen(msg); + char *rmsg =3D g_malloc(len); + + /* write message to sd */ + fd =3D open(sd_path, O_WRONLY); + g_assert(fd >=3D 0); + ret =3D write(fd, msg, len); + close(fd); + g_assert(ret =3D=3D len); + + /* read message using sdhci */ + ret =3D sdhci_read_cmd(qts, NPCM7XX_MMC_BA, rmsg, len); + g_assert(ret =3D=3D len); + g_assert(!memcmp(rmsg, msg, len)); + + g_free(rmsg); +} + +/* Check MMC can read values from sd */ +static void test_read_sd(void) +{ + QTestState *qts =3D setup_sd_card(); + + write_sdread(qts, "hello world"); + write_sdread(qts, "goodbye"); + + qtest_quit(qts); +} + +static void sdwrite_read(QTestState *qts, const char *msg) +{ + int fd, ret; + size_t len =3D strlen(msg); + char *rmsg =3D g_malloc(len); + + /* write message using sdhci */ + sdhci_write_cmd(qts, NPCM7XX_MMC_BA, msg, len, NPCM7XX_BLK_SIZE); + + /* read message from sd */ + fd =3D open(sd_path, O_RDONLY); + g_assert(fd >=3D 0); + ret =3D read(fd, rmsg, len); + close(fd); + g_assert(ret =3D=3D len); + + g_assert(!memcmp(rmsg, msg, len)); + + g_free(rmsg); +} + +/* Check MMC can write values to sd */ +static void test_write_sd(void) +{ + QTestState *qts =3D setup_sd_card(); + + sdwrite_read(qts, "hello world"); + sdwrite_read(qts, "goodbye"); + + qtest_quit(qts); +} + +/* Check SDHCI has correct default values. */ +static void test_reset(void) +{ + QTestState *qts =3D qtest_init("-machine kudo-bmc"); + uint64_t addr =3D NPCM7XX_MMC_BA; + uint64_t end_addr =3D addr + NPCM7XX_REG_SIZE; + uint16_t prstvals_resets[] =3D {NPCM7XX_PRSTVALS_0_RESET, + NPCM7XX_PRSTVALS_1_RESET, + 0, + NPCM7XX_PRSTVALS_3_RESET, + 0, + 0}; + int i; + uint32_t mask; + + while (addr < end_addr) { + switch (addr - NPCM7XX_MMC_BA) { + case SDHC_PRNSTS: + /* + * ignores bits 20 to 24: they are changed when reading regist= ers + */ + mask =3D 0x1f00000; + g_assert_cmphex(qtest_readl(qts, addr) | mask, =3D=3D, + NPCM7XX_PRSNTS_RESET | mask); + addr +=3D 4; + break; + case SDHC_BLKGAP: + g_assert_cmphex(qtest_readb(qts, addr), =3D=3D, NPCM7XX_BLKGAP= _RESET); + addr +=3D 1; + break; + case SDHC_CAPAB: + g_assert_cmphex(qtest_readq(qts, addr), =3D=3D, NPCM7XX_CAPAB_= RESET); + addr +=3D 8; + break; + case SDHC_MAXCURR: + g_assert_cmphex(qtest_readq(qts, addr), =3D=3D, NPCM7XX_MAXCUR= R_RESET); + addr +=3D 8; + break; + case SDHC_HCVER: + g_assert_cmphex(qtest_readw(qts, addr), =3D=3D, NPCM7XX_HCVER_= RESET); + addr +=3D 2; + break; + case NPCM7XX_PRSTVALS: + for (i =3D 0; i < NPCM7XX_PRSTVALS_SIZE; ++i) { + g_assert_cmphex(qtest_readw(qts, addr + 2 * i), =3D=3D, + prstvals_resets[i]); + } + addr +=3D NPCM7XX_PRSTVALS_SIZE * 2; + break; + default: + g_assert_cmphex(qtest_readb(qts, addr), =3D=3D, 0); + addr +=3D 1; + } + } + + qtest_quit(qts); +} + +static void drive_destroy(void) +{ + unlink(sd_path); + g_free(sd_path); +} + +static void drive_create(void) +{ + int fd, ret; + GError *error =3D NULL; + + /* Create a temporary raw image */ + fd =3D g_file_open_tmp("sdhci_XXXXXX", &sd_path, &error); + if (fd =3D=3D -1) { + fprintf(stderr, "unable to create sdhci file: %s\n", error->messag= e); + g_error_free(error); + } + g_assert(sd_path !=3D NULL); + + ret =3D ftruncate(fd, NPCM7XX_TEST_IMAGE_SIZE); + g_assert_cmpint(ret, =3D=3D, 0); + g_message("%s", sd_path); + close(fd); +} + +int main(int argc, char **argv) +{ + int ret; + + drive_create(); + + g_test_init(&argc, &argv, NULL); + + qtest_add_func("npcm7xx_sdhci/reset", test_reset); + qtest_add_func("npcm7xx_sdhci/write_sd", test_write_sd); + qtest_add_func("npcm7xx_sdhci/read_sd", test_read_sd); + + ret =3D g_test_run(); + drive_destroy(); + return ret; +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index f33d84d19bc..721eafad125 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -190,6 +190,7 @@ qtests_npcm7xx =3D \ 'npcm7xx_gpio-test', 'npcm7xx_pwm-test', 'npcm7xx_rng-test', + 'npcm7xx_sdhci-test', 'npcm7xx_smbus-test', 'npcm7xx_timer-test', 'npcm7xx_watchdog_timer-test'] + \ --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255260; cv=none; d=zohomail.com; s=zohoarc; b=COg8M1XyOQ0RGGAzmx8MSssRim8B6GeeKYsUbdNv3BuhXMq2UrIyxhl3pN2E5ZPrW+iqC7bn5I/q8lySPSRLxL2pAnnMy7BcXv2uUvn1/X1CiMj0KNHARSGKTZ7GMiKKmv0kRLmsrA5kI261pxOvXp1op/fz4IfS6sxOqgq1siE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255260; 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=s10c62MdHMg8Tzahwc512pg4LIfqMdV8NVXBcsfmMks=; b=YaZMpuqvORS3b2vyzZai1HspPRiSVfWWU9lnfAph0YCnly+5Ng9Teuuow1IpWJwCD6hMk4p8FsfJfhEQP5PrZ6PeNEysk++c0XrqcTpI0Cyh1I1F+wtcVxHXY2YExxRXgS/LUN9q0GgZJpzXyrSwKMOgncjxjhPw8/uVMsASy2I= 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 1646255260164798.6468871886375; Wed, 2 Mar 2022 13:07:40 -0800 (PST) Received: from localhost ([::1]:37778 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWCB-0002de-1k for importer@patchew.org; Wed, 02 Mar 2022 16:07:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43368) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxj-0005hh-4x for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:43 -0500 Received: from [2a00:1450:4864:20::32b] (port=35554 helo=mail-wm1-x32b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxh-00087d-D5 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:42 -0500 Received: by mail-wm1-x32b.google.com with SMTP id v2-20020a7bcb42000000b0037b9d960079so4166458wmj.0 for ; Wed, 02 Mar 2022 12:52:40 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=s10c62MdHMg8Tzahwc512pg4LIfqMdV8NVXBcsfmMks=; b=D3Gv86Fjq1C6Jdb34hEtiEMS2kbsl+5iqv/CEdhtl9bJ0uz/r+rp8hFjL3uiiQ7MwL +uGR66F40Zu3pbNJY35ngDeN8rNsmTxFKvEwuH6v4aU95F7+KPBFkYWWyTGP/BiBz+4i xKwO2c9WQqulnOufwq0MK+of73PhOTbNcoYcfiyTsw/84M6g4P/w5FXtw7edveZCtZKz 5TelJ9FnWhA4AEOuQrbuH1Eu/dEKF9PoPWDpbud/FchkS1Lr5WoIhwdYxH/19wG18Nww Po57s2uQO7JQ91NVzcWnJRwD2/2xRzsKNUPz12J0jDu+KTj/DB8y17Oa2Z+MwkXMSbxA 0R0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=s10c62MdHMg8Tzahwc512pg4LIfqMdV8NVXBcsfmMks=; b=WYpw7ErUW8qoswdLMqW+4D1k8bTA/QvIHbr5eBV/+ZFz6432zqoPgiNwXA1ozekvWk peZrS/qo+BHssYHDRWYQDt+hoC2ZHU0zq8ilDpYU+z/BWcR2wAHkv3lAv/lKjOlYo1Fu vm4Xu5qZiyFIxsnrMkrpqiHoAXRlxvqzC8l6L4yLWqwFmgNWzIeWbSHcpiFnyj9NIRyT rZbkSytC+OueyvbAWd6/jSLK3TdVNrCKFGqCxDGF+e+XOLeRpaWIs1uPskz+HNNhKHnZ SlPiFBkUSb4L2GmMSx/2dWCheLDB0FhW3xX+tnB22N7Tck+Sl1HdDtgPN4eekukaq33K FgwA== X-Gm-Message-State: AOAM532pdhYq9WdK+po2DpxhHd6UJpeqERP91TIhpYnOFepoR/vexvcO 7fkzM17S1ALTHPR3/L7BY2TkcGDibfKLnw== X-Google-Smtp-Source: ABdhPJxVyu8On82TNZnSJ3giJaxJ3UqbYr9z1cOjArFqTKCdYa7uo8EfosfOgT4sBpDrAimt1Fwnjg== X-Received: by 2002:a7b:c114:0:b0:381:f7ee:e263 with SMTP id w20-20020a7bc114000000b00381f7eee263mr1361811wmi.30.1646254360095; Wed, 02 Mar 2022 12:52:40 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 08/26] hw/registerfields: Add FIELD_SEX and FIELD_SDP Date: Wed, 2 Mar 2022 20:52:12 +0000 Message-Id: <20220302205230.2122390-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::32b (failed) 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::32b; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255261944100001 From: Richard Henderson Add new macros to manipulate signed fields within the register. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-2-richard.henderson@linaro.org Suggested-by: Peter Maydell Signed-off-by: Richard Henderson Signed-off-by: Peter Maydell --- include/hw/registerfields.h | 48 ++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/include/hw/registerfields.h b/include/hw/registerfields.h index f2a3c9c41f7..3a88e135d02 100644 --- a/include/hw/registerfields.h +++ b/include/hw/registerfields.h @@ -59,6 +59,19 @@ extract64((storage), R_ ## reg ## _ ## field ## _SHIFT, \ R_ ## reg ## _ ## field ## _LENGTH) =20 +#define FIELD_SEX8(storage, reg, field) \ + sextract8((storage), R_ ## reg ## _ ## field ## _SHIFT, \ + R_ ## reg ## _ ## field ## _LENGTH) +#define FIELD_SEX16(storage, reg, field) \ + sextract16((storage), R_ ## reg ## _ ## field ## _SHIFT, \ + R_ ## reg ## _ ## field ## _LENGTH) +#define FIELD_SEX32(storage, reg, field) \ + sextract32((storage), R_ ## reg ## _ ## field ## _SHIFT, \ + R_ ## reg ## _ ## field ## _LENGTH) +#define FIELD_SEX64(storage, reg, field) \ + sextract64((storage), R_ ## reg ## _ ## field ## _SHIFT, \ + R_ ## reg ## _ ## field ## _LENGTH) + /* Extract a field from an array of registers */ #define ARRAY_FIELD_EX32(regs, reg, field) \ FIELD_EX32((regs)[R_ ## reg], reg, field) @@ -95,7 +108,40 @@ _d; }) #define FIELD_DP64(storage, reg, field, val) ({ \ struct { \ - uint64_t v:R_ ## reg ## _ ## field ## _LENGTH; \ + uint64_t v:R_ ## reg ## _ ## field ## _LENGTH; \ + } _v =3D { .v =3D val }; = \ + uint64_t _d; \ + _d =3D deposit64((storage), R_ ## reg ## _ ## field ## _SHIFT, = \ + R_ ## reg ## _ ## field ## _LENGTH, _v.v); \ + _d; }) + +#define FIELD_SDP8(storage, reg, field, val) ({ \ + struct { \ + signed int v:R_ ## reg ## _ ## field ## _LENGTH; \ + } _v =3D { .v =3D val }; = \ + uint8_t _d; \ + _d =3D deposit32((storage), R_ ## reg ## _ ## field ## _SHIFT, = \ + R_ ## reg ## _ ## field ## _LENGTH, _v.v); \ + _d; }) +#define FIELD_SDP16(storage, reg, field, val) ({ \ + struct { \ + signed int v:R_ ## reg ## _ ## field ## _LENGTH; \ + } _v =3D { .v =3D val }; = \ + uint16_t _d; \ + _d =3D deposit32((storage), R_ ## reg ## _ ## field ## _SHIFT, = \ + R_ ## reg ## _ ## field ## _LENGTH, _v.v); \ + _d; }) +#define FIELD_SDP32(storage, reg, field, val) ({ \ + struct { \ + signed int v:R_ ## reg ## _ ## field ## _LENGTH; \ + } _v =3D { .v =3D val }; = \ + uint32_t _d; \ + _d =3D deposit32((storage), R_ ## reg ## _ ## field ## _SHIFT, = \ + R_ ## reg ## _ ## field ## _LENGTH, _v.v); \ + _d; }) +#define FIELD_SDP64(storage, reg, field, val) ({ \ + struct { \ + int64_t v:R_ ## reg ## _ ## field ## _LENGTH; \ } _v =3D { .v =3D val }; = \ uint64_t _d; \ _d =3D deposit64((storage), R_ ## reg ## _ ## field ## _SHIFT, = \ --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255571; cv=none; d=zohomail.com; s=zohoarc; b=VbYJ4gydjqlLwQ93yIZGVT6MMW8ZpODdEw/1vDXwQsbazlzWw1ds8OtUs4l6ntHwGkBtHd5Q2qCBHKDz2xdix3j5S6ZPNzShwBzao7+QoqkzEjaaQ6UrxNCcTvbV+D8/x8VMuxzK6rmrbT5FtZlkNX+2oXhT8qKpAuiScQd46nE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255571; 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=h5vb/qPkkLSubI4hynyldV/6P4vM61yCn9qANZFywlI=; b=QY0buWcerSiKC8llidVhi/2AnXSVnQ7VTVGrNQaDO9KvtA9Z2pQWyEuVRh9/raUQTjlUzAF+czt3m3D0iJw6eDG0IzyxdOWjDyiowWIXI8Aiw9SHDL4t5NZ+qQD+967wQHzIoqpcQM0f+7r2eZPCe09Dd8tD+wq+jr4oMXm75QY= 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 1646255571811559.6511769289266; Wed, 2 Mar 2022 13:12:51 -0800 (PST) Received: from localhost ([::1]:53372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWHC-0004u2-Mr for importer@patchew.org; Wed, 02 Mar 2022 16:12:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43380) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxj-0005it-Kb for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:43 -0500 Received: from [2a00:1450:4864:20::334] (port=54013 helo=mail-wm1-x334.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxi-00087t-4x for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:43 -0500 Received: by mail-wm1-x334.google.com with SMTP id 19so1674782wmy.3 for ; Wed, 02 Mar 2022 12:52:41 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=h5vb/qPkkLSubI4hynyldV/6P4vM61yCn9qANZFywlI=; b=g2CMi0meKbLswpPcw+z8PtJ1M5ABN1K2Pv3nLK7KIs3jnAHelot6UQyweEou1IST44 zVKh45WStn5yN+M73CxDUI9URPkqF3/9Y7UZX3JgFnhy/ZYuzzfCyCrd2FcTFhQTj0Nl +BETLdYaMaOuEzvm4/SoBGrxmjD9++8tVswVTbpIaYEaJYIBRCjFvKTOpQS3wkfWGMU8 poWEXSk1XJO+JPZBoX1RxjKxhQg+O1Sx/hE7tsOHloGimQmMYju89rI4gn5DP4XlcXCK NsQg37qf6rAnCJAj3Yb4IGuoLIF4iu2XHSQMM/XAGapHL0nfzv2hzGFozbRW6tl5Iodi eAlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h5vb/qPkkLSubI4hynyldV/6P4vM61yCn9qANZFywlI=; b=DRmqTUJwva1cJVzTzTFa/Su42ijlJjoydIY2bbiZM5jP6mZPKozVU0qJRcjjtQmIzR SEXXwCzU9xZGrOQ3AxKnLXOvGPp9eb5HzjZntqHpFHyTJ2dwzD0eYXrkGCftrRhY+sbx OD3ENgaXq2flYeymk9+I20zyVj2PjohVX2ZfY4J+1iZUWmIQw+/eBjlM/39X/2Tsm1In aiiUbr7h1Qo2XCc4gSjYcUtimNi+QiwDKJc3Yiz9Lj6lHZocz8cqswGUK74kOV6v2Y+0 BC/0LxSZQuH9D36YZFZ6nbdPksJkx1+anZYMFiXnuC2FDW9UZ2hGNAiVqNjc+l26Mcg5 oRNg== X-Gm-Message-State: AOAM532i2Ury6srnBJqLuDxUBInrDchDfp8jm9vaVLNa18wxMA51yxjV Uew1Yb8RKHpHDJK3mFoUjUDmMEdhywYAoA== X-Google-Smtp-Source: ABdhPJxhTQQ3wo9S/9KKdUiS+gHuxaM10vJ8D6CjRZjY+zPAZcMMoojMkmoTn1GOceYQnKQxbOx6QQ== X-Received: by 2002:a05:600c:190d:b0:382:f9f9:bd33 with SMTP id j13-20020a05600c190d00b00382f9f9bd33mr1266315wmq.155.1646254360870; Wed, 02 Mar 2022 12:52:40 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 09/26] target/arm: Set TCR_EL1.TSZ for user-only Date: Wed, 2 Mar 2022 20:52:13 +0000 Message-Id: <20220302205230.2122390-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::334 (failed) 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::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255572673100003 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Set this as the kernel would, to 48 bits, to keep the computation of the address space correct for PAuth. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-3-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index dd64d178e2e..7091684a16d 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -206,10 +206,11 @@ static void arm_cpu_reset(DeviceState *dev) aarch64_sve_zcr_get_valid_len(cpu, cpu->sve_default_vq - 1= ); } /* + * Enable 48-bit address space (TODO: take reserved_va into accoun= t). * Enable TBI0 but not TBI1. * Note that this must match useronly_clean_ptr. */ - env->cp15.tcr_el[1].raw_tcr =3D (1ULL << 37); + env->cp15.tcr_el[1].raw_tcr =3D 5 | (1ULL << 37); =20 /* Enable MTE */ if (cpu_isar_feature(aa64_mte, cpu)) { --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255395; cv=none; d=zohomail.com; s=zohoarc; b=jcXu5w0cqUJmKG0o/5pZCmw0gRYAQLRT5XsMTPAlIbxBPDVvexUOEns0kVHs9FL7Llfrgix/kUj928ijGMki4krcnOspD9Ktq7gFEsgk/n5C8SDHg6ozdgC9fmPjH/EdtvSbOAPxgH7JBYDXvlve9AKezOjH7fxWBU2RNnO8f8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255395; 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=rHPHxW6sljpCsakcbokrQfQC++We7xXTK+2WDhtOUL0=; b=FehuycvXx+gaoGn53TKd7pYaVgYufnHXcxIlx9clAuXL0mzEG4dCP1ZHgOi3o4aGEXD1Fcg0bNF/g3Svxl1vrXRO3kDWwcM9OkGAvEtWcnw1QQ2SmAW0s9T6EjFcejkTmVeNsash+XuWI/6XNhydoUF9JKxcMVSmo8zy8ocH/s8= 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 1646255395423981.3685028258175; Wed, 2 Mar 2022 13:09:55 -0800 (PST) Received: from localhost ([::1]:46386 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWEM-0008Pk-7z for importer@patchew.org; Wed, 02 Mar 2022 16:09:54 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43406) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxk-0005l8-Iy for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:44 -0500 Received: from [2a00:1450:4864:20::42d] (port=38721 helo=mail-wr1-x42d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxi-000888-TZ for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:44 -0500 Received: by mail-wr1-x42d.google.com with SMTP id t11so4686790wrm.5 for ; Wed, 02 Mar 2022 12:52:42 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=rHPHxW6sljpCsakcbokrQfQC++We7xXTK+2WDhtOUL0=; b=N67SYiPlyhImI3JRyb1W6sykEJkiO7r6M9vyg7HHOiGw+KtnPUoEx4omG555LPI+su 1DEk8+5F/KFIwiLFT8GDVeT3Ah+BUbtkKK2k6AaYdebQeMduVh4bZBcJxKnsefCIwVjp d3GrXCzLyDiX0Qb6p9CaTsP8NNfJLbpdmbnLWG0HJPffgdQ7dIQ8Xp9hH3rvjulvJ3pe UZ4ZvPH5ufEnVM+8QsfVLbpjaCKcaXnIy1othTGcd/L2y6OEHPSzMvCd6oSJWakSyedM 5f3rDqHhiDwSjXjxbHzXzpejx3C8dm7Z3xeBjXbGhEfTgb2RmTYeJik13ssUc4XkHrGB mUtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rHPHxW6sljpCsakcbokrQfQC++We7xXTK+2WDhtOUL0=; b=5OfSRBPRPrtuvXPWE9+H2fxF7r+RiKFeLIZy9P17G00BH09g5Nkj5zxhHOv1Ft0jU4 jgRTrqNPTxLjQrEUGgT0zmMKjN7ZOL9+S12l3lOw+en6ux0YcZTeipG2p3vEFfQstM9q ymZYlowrW92O33F6SN7CpG/meudb5v1KMGs2M8GZodi1tqll5w8Bashlvb+VgCxABhcX tn/o+90cIDCEMcyjfT82TNXrGsGvdh0rmKDONx70o3XNWZ+TfxdvKAqhNpST3sBvfGP5 p1RF6ATzM8JY78umvtQ33s9njHLfZcc1SWm65Ndeckn6EEkP6wsjTaC/SxC5kLGnlGtn 0RLQ== X-Gm-Message-State: AOAM532guJXHXD0AZFLk34/Gp5PDRgZ4kd0peQiutGH6L3YmRl+Tpdd4 9x4EbmJna3ONqpzdNlsfhiV8/13rKWaHSA== X-Google-Smtp-Source: ABdhPJwuefe3i/LgrN7LaE3xzwdwCsCW4+59GmIP3mcNRWLfel+N6QsLGRwxgDR3Vt/U3Nju9ivmig== X-Received: by 2002:adf:fc89:0:b0:1ef:9517:c7d2 with SMTP id g9-20020adffc89000000b001ef9517c7d2mr15905625wrr.282.1646254361625; Wed, 02 Mar 2022 12:52:41 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 10/26] target/arm: Fault on invalid TCR_ELx.TxSZ Date: Wed, 2 Mar 2022 20:52:14 +0000 Message-Id: <20220302205230.2122390-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::42d (failed) 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::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255397082100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Without FEAT_LVA, the behaviour of programming an invalid value is IMPLEMENTATION DEFINED. With FEAT_LVA, programming an invalid minimum value requires a Translation fault. It is most self-consistent to choose to generate the fault always. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/internals.h | 1 + target/arm/helper.c | 32 ++++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 3f05748ea47..ef6c25d8cb7 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1055,6 +1055,7 @@ typedef struct ARMVAParameters { bool hpd : 1; bool using16k : 1; bool using64k : 1; + bool tsz_oob : 1; /* tsz has been clamped to legal range */ } ARMVAParameters; =20 ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va, diff --git a/target/arm/helper.c b/target/arm/helper.c index 7bf50fdd76f..dd4d95bda24 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11190,8 +11190,8 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, ARMMMUIdx mmu_idx, bool data) { uint64_t tcr =3D regime_tcr(env, mmu_idx)->raw_tcr; - bool epd, hpd, using16k, using64k; - int select, tsz, tbi, max_tsz; + bool epd, hpd, using16k, using64k, tsz_oob; + int select, tsz, tbi, max_tsz, min_tsz; =20 if (!regime_has_2_ranges(mmu_idx)) { select =3D 0; @@ -11232,9 +11232,17 @@ ARMVAParameters aa64_va_parameters(CPUARMState *en= v, uint64_t va, } else { max_tsz =3D 39; } + min_tsz =3D 16; /* TODO: ARMv8.2-LVA */ =20 - tsz =3D MIN(tsz, max_tsz); - tsz =3D MAX(tsz, 16); /* TODO: ARMv8.2-LVA */ + if (tsz > max_tsz) { + tsz =3D max_tsz; + tsz_oob =3D true; + } else if (tsz < min_tsz) { + tsz =3D min_tsz; + tsz_oob =3D true; + } else { + tsz_oob =3D false; + } =20 /* Present TBI as a composite with TBID. */ tbi =3D aa64_va_parameter_tbi(tcr, mmu_idx); @@ -11251,6 +11259,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, .hpd =3D hpd, .using16k =3D using16k, .using64k =3D using64k, + .tsz_oob =3D tsz_oob, }; } =20 @@ -11374,6 +11383,21 @@ static bool get_phys_addr_lpae(CPUARMState *env, u= int64_t address, param =3D aa64_va_parameters(env, address, mmu_idx, access_type !=3D MMU_INST_FETCH); level =3D 0; + + /* + * If TxSZ is programmed to a value larger than the maximum, + * or smaller than the effective minimum, it is IMPLEMENTATION + * DEFINED whether we behave as if the field were programmed + * within bounds, or if a level 0 Translation fault is generated. + * + * With FEAT_LVA, fault on less than minimum becomes required, + * so our choice is to always raise the fault. + */ + if (param.tsz_oob) { + fault_type =3D ARMFault_Translation; + goto do_fault; + } + addrsize =3D 64 - 8 * param.tbi; inputsize =3D 64 - param.tsz; } else { --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255705; cv=none; d=zohomail.com; s=zohoarc; b=R0W9EU5T1sA6CHE/NA2KKDcf82EHpqTX2ZV6ZfnXLvoPlS7zqAJGGBgf5tUtGR5FipKH+c4gfD3rgFCoj1sdrWRPe7kvZpea0/hKquosMxzTOjOsSVVaGfXPBHS47I3K7W8m5SNmm+nnvLBhwsHEK/6wCwuzbMPaa5VbckNbrK0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255705; 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=/jMvBmS05a6AvX2w8GLIu2n1iO4O8JPmoPPf/h/6b0c=; b=ACRLW5z5ZIRetElTJNMJYCg7Myhnn8cMKDihdI7gwSKToUNAxnbP0c5P8PXp39Fp2GBaD7pkmvIgdjWeAuv/tDbTVeJZ3QL9lV6tn5wedMz49aXnVcVEZFQ1kxA8Q39zxUloMb1eHhwPu0/tpLr/ptH/bkMWlRdyRuEdeVFd8qE= 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 1646255705731568.7439559693257; Wed, 2 Mar 2022 13:15:05 -0800 (PST) Received: from localhost ([::1]:59454 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWJM-0000WF-MV for importer@patchew.org; Wed, 02 Mar 2022 16:15:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43420) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxl-0005np-B0 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:45 -0500 Received: from [2a00:1450:4864:20::334] (port=52064 helo=mail-wm1-x334.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxj-00088M-PF for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:45 -0500 Received: by mail-wm1-x334.google.com with SMTP id p4so1946112wmg.1 for ; Wed, 02 Mar 2022 12:52:43 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=/jMvBmS05a6AvX2w8GLIu2n1iO4O8JPmoPPf/h/6b0c=; b=cl5h83Nw/XRAMZNOHItSybjWY8QdvGf/3GWofao76Z+NqLboxXdVP10J/51zwIZj17 OHZWjsSU2duOi+sKclrHCxPkLxPfa8I0FLEbGr69oBPkdQvwCOFnwrlpzWgo0H4npkfv cdrctQzpRLcDIsJyGZUu897cQvsfpAPgk9KMktpfnI3S/c5fI2G4w9QuYX12ikAND1rH YaKw4JWChMV6GoTpbuNyIlVj5rAq7d7av9IBQMAI8lfM/myVwT7pya9kd9di9TGUyC3T 497quhJXtJRQvMeKFi+PwF/xuizTAVtAuX7sn67g3hBYSNNf4rGF3f9Z4xar4EYF7mpp JO6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/jMvBmS05a6AvX2w8GLIu2n1iO4O8JPmoPPf/h/6b0c=; b=RolSrG8A512H/5GwRmiPwdtcDufJgcgtWixKcd8S1n+ZNmhhI5jRjjmbITrAY+FJeL /faTcc/NHAcmBOkLJhbjNz60o76i6FvEBPkFM3lqh+G4ESmX33x0rVqNlEng/y0unq8N 4k4ITkxsVzS7W2axUMivQ96Oy5vDwqQn/+HyZrWIyG0bQ2Mi479NgMXsA1VfdRURIwjR B6rq2z6KvXgGRFTOk+a6xP3W8IMzO1wH6AYuXlwClyYA2wK/KixAA8S75UY0FTh4I9id q2feOmmDlhrC2d0MNV1QQWPH3WrDjuSsMwmw3H/eynI2f3VXL9ZAK6HG/EArz/yeIi0c SCgA== X-Gm-Message-State: AOAM5309iNnXV3otANk0hYZWUBclLcQ0eAN3m4tgC/uESPDeSJuTDgxr QFeruGTz2bFvTHelGLwvlefgIysdy+bMhA== X-Google-Smtp-Source: ABdhPJzlNo1xK7AqQHT1XR4UUkjZORAXZ8Wn5ozAZt/NZOb4CnumjHmWWHl49h+0IMIm0V0UwhN+VA== X-Received: by 2002:a05:600c:384c:b0:37b:c771:499c with SMTP id s12-20020a05600c384c00b0037bc771499cmr1280943wmr.141.1646254362394; Wed, 02 Mar 2022 12:52:42 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 11/26] target/arm: Move arm_pamax out of line Date: Wed, 2 Mar 2022 20:52:15 +0000 Message-Id: <20220302205230.2122390-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::334 (failed) 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::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255707693100001 From: Richard Henderson We will shortly share parts of this function with other portions of address translation. Reviewed-by: Peter Maydell Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-5-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/internals.h | 19 +------------------ target/arm/helper.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index ef6c25d8cb7..fefd1fb8d88 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -243,24 +243,7 @@ static inline void update_spsel(CPUARMState *env, uint= 32_t imm) * Returns the implementation defined bit-width of physical addresses. * The ARMv8 reference manuals refer to this as PAMax(). */ -static inline unsigned int arm_pamax(ARMCPU *cpu) -{ - static const unsigned int pamax_map[] =3D { - [0] =3D 32, - [1] =3D 36, - [2] =3D 40, - [3] =3D 42, - [4] =3D 44, - [5] =3D 48, - }; - unsigned int parange =3D - FIELD_EX64(cpu->isar.id_aa64mmfr0, ID_AA64MMFR0, PARANGE); - - /* id_aa64mmfr0 is a read-only register so values outside of the - * supported mappings can be considered an implementation error. */ - assert(parange < ARRAY_SIZE(pamax_map)); - return pamax_map[parange]; -} +unsigned int arm_pamax(ARMCPU *cpu); =20 /* Return true if extended addresses are enabled. * This is always the case if our translation regime is 64 bit, diff --git a/target/arm/helper.c b/target/arm/helper.c index dd4d95bda24..71e575f352e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11152,6 +11152,28 @@ static uint8_t convert_stage2_attrs(CPUARMState *e= nv, uint8_t s2attrs) } #endif /* !CONFIG_USER_ONLY */ =20 +/* The cpu-specific constant value of PAMax; also used by hw/arm/virt. */ +unsigned int arm_pamax(ARMCPU *cpu) +{ + static const unsigned int pamax_map[] =3D { + [0] =3D 32, + [1] =3D 36, + [2] =3D 40, + [3] =3D 42, + [4] =3D 44, + [5] =3D 48, + }; + unsigned int parange =3D + FIELD_EX64(cpu->isar.id_aa64mmfr0, ID_AA64MMFR0, PARANGE); + + /* + * id_aa64mmfr0 is a read-only register so values outside of the + * supported mappings can be considered an implementation error. + */ + assert(parange < ARRAY_SIZE(pamax_map)); + return pamax_map[parange]; +} + static int aa64_va_parameter_tbi(uint64_t tcr, ARMMMUIdx mmu_idx) { if (regime_has_2_ranges(mmu_idx)) { --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255596; cv=none; d=zohomail.com; s=zohoarc; b=ROTzB5C0mW4q9A3zofIw9GyIlweT2YSpSezHZHC7mQ4MvVKbB/5Tsp5DuSVYK8ygyvOjc5NBo6hYP2HspKyllbYmEx8NdDJ6eO4SoVTRbgHaeVWYdgEDawuhF0hRr/QWNbCTCoSfKkj0VSb9bKp9qf8tXVrMul9ctIQxTVecQTc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255596; 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=+cFrQ0gYtD+BMJbyD47IQWGJju9cN+yG8odvU6RxmJ4=; b=cD/a5YcrSnNxCizUHCtkGGnYEdxlgQyFiN2CX5Rg7+7zdP7CBv/UVAdoGZrMZbOFtF/a/1TLSz2o+YKX4lHHEp+GIpWktceOgGOculL+vNTINVUdlcTQrNAjWgjKpARszfEP98JNxmbEFtWHv1WbEocXK7iKEaOM8solnB1Ybpo= 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 1646255596951450.120381530509; Wed, 2 Mar 2022 13:13:16 -0800 (PST) Received: from localhost ([::1]:54542 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWHZ-0005gU-Vi for importer@patchew.org; Wed, 02 Mar 2022 16:13:15 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43446) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxm-0005qO-BE for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:47 -0500 Received: from [2a00:1450:4864:20::432] (port=35384 helo=mail-wr1-x432.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxk-00088m-Li for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:46 -0500 Received: by mail-wr1-x432.google.com with SMTP id b5so4701407wrr.2 for ; Wed, 02 Mar 2022 12:52:44 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=+cFrQ0gYtD+BMJbyD47IQWGJju9cN+yG8odvU6RxmJ4=; b=boiE02vl76suB0S5OASrWRrGbYJc22XpqunH60k+nh+wls5jS4Rr3zft7IteLSXFhJ JFfuhTZ60iRzwyWagtgjp6xN9YGq/SXaGGm6PMK0lL+cZa4TQP5hnfDHVNvxNGbL/bDv +bBGIcY3K0eqLDRiMafci1DVx2IUTSSL7XXK9gSYvF/tHPlYa1i4CKmunZi4Li/LbyHb WDNGGSWmWQiepO2fStdRigQ+0lTJK6dirbKtR96/P6B6aBD7DwAvZcFjl8uBUTQtc7HY mswhzLX1xZUHzZxsoIhh2XRj03NXpW4NZYmIu1V6uslOZC42oaTaqF3gGNIdl3ntTYCr sJwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+cFrQ0gYtD+BMJbyD47IQWGJju9cN+yG8odvU6RxmJ4=; b=bWNXbnRal4vEf6lasTB2j4fu/U5Xhh0TmfxSYW0LHn0zNhufx9jmmURxP8GEb1tlqJ lA7UHNJ6cDcaaerVsNKzaj7WHY5TL6amV/m57pAq8R0eQSsN6ixLSxuvPQhIBlppROi9 +6oz9o9mdudh1NVgmxF3XCpCqBhVhNmkhULveFRF+qIKrUti1CA4VCJwvZzJ45TzkgCz tj2sqQxLqmzD4vtlcldwvBx7xCR6q/3t13gUzK09qhz6ExNj35HyBq71u9DQs16bZ/TF UpPZmT6tqLgmRG5e5N9WMn899anGgboE+fKA95UTqoCzG9gXPzh/mLdb6s8PaFgUaWF/ kFYg== X-Gm-Message-State: AOAM532jB7ZUhKaSllhz5TiMMncO6wIwgxE8TFGJcQ8eobH+xU5eLzQ2 ho+o2uxS5hoQS09QeUhvzeWu+fz9OQ2Quw== X-Google-Smtp-Source: ABdhPJy/hJ1be/cPtc1VlDmsOZeeKvvkgEdCH1hqmqz2Pe7pSEHCj21ukkNBM8WNCHDYR9NH+XZ0Pw== X-Received: by 2002:a5d:534a:0:b0:1f0:48f2:5f7c with SMTP id t10-20020a5d534a000000b001f048f25f7cmr1501899wrv.138.1646254363192; Wed, 02 Mar 2022 12:52:43 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 12/26] target/arm: Pass outputsize down to check_s2_mmu_setup Date: Wed, 2 Mar 2022 20:52:16 +0000 Message-Id: <20220302205230.2122390-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::432 (failed) 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::432; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x432.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255598848100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Pass down the width of the output address from translation. For now this is still just PAMax, but a subsequent patch will compute the correct value from TCR_ELx.{I}PS. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-6-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 71e575f352e..431b0c14052 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11065,7 +11065,7 @@ do_fault: * false otherwise. */ static bool check_s2_mmu_setup(ARMCPU *cpu, bool is_aa64, int level, - int inputsize, int stride) + int inputsize, int stride, int outputsize) { const int grainsize =3D stride + 3; int startsizecheck; @@ -11081,22 +11081,19 @@ static bool check_s2_mmu_setup(ARMCPU *cpu, bool = is_aa64, int level, } =20 if (is_aa64) { - CPUARMState *env =3D &cpu->env; - unsigned int pamax =3D arm_pamax(cpu); - switch (stride) { case 13: /* 64KB Pages. */ - if (level =3D=3D 0 || (level =3D=3D 1 && pamax <=3D 42)) { + if (level =3D=3D 0 || (level =3D=3D 1 && outputsize <=3D 42)) { return false; } break; case 11: /* 16KB Pages. */ - if (level =3D=3D 0 || (level =3D=3D 1 && pamax <=3D 40)) { + if (level =3D=3D 0 || (level =3D=3D 1 && outputsize <=3D 40)) { return false; } break; case 9: /* 4KB Pages. */ - if (level =3D=3D 0 && pamax <=3D 42) { + if (level =3D=3D 0 && outputsize <=3D 42) { return false; } break; @@ -11105,8 +11102,8 @@ static bool check_s2_mmu_setup(ARMCPU *cpu, bool is= _aa64, int level, } =20 /* Inputsize checks. */ - if (inputsize > pamax && - (arm_el_is_aa64(env, 1) || inputsize > 40)) { + if (inputsize > outputsize && + (arm_el_is_aa64(&cpu->env, 1) || inputsize > 40)) { /* This is CONSTRAINED UNPREDICTABLE and we choose to fault. = */ return false; } @@ -11392,7 +11389,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, ui= nt64_t address, target_ulong page_size; uint32_t attrs; int32_t stride; - int addrsize, inputsize; + int addrsize, inputsize, outputsize; TCR *tcr =3D regime_tcr(env, mmu_idx); int ap, ns, xn, pxn; uint32_t el =3D regime_el(env, mmu_idx); @@ -11422,11 +11419,13 @@ static bool get_phys_addr_lpae(CPUARMState *env, = uint64_t address, =20 addrsize =3D 64 - 8 * param.tbi; inputsize =3D 64 - param.tsz; + outputsize =3D arm_pamax(cpu); } else { param =3D aa32_va_parameters(env, address, mmu_idx); level =3D 1; addrsize =3D (mmu_idx =3D=3D ARMMMUIdx_Stage2 ? 40 : 32); inputsize =3D addrsize - param.tsz; + outputsize =3D 40; } =20 /* @@ -11511,7 +11510,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, ui= nt64_t address, =20 /* Check that the starting level is valid. */ ok =3D check_s2_mmu_setup(cpu, aarch64, startlevel, - inputsize, stride); + inputsize, stride, outputsize); if (!ok) { fault_type =3D ARMFault_Translation; goto do_fault; --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255865; cv=none; d=zohomail.com; s=zohoarc; b=XWb8ljqb4HHmfVIxJzTF8RUOOLgQ8/elrllgURr1wj7LNVCkcHEESy9SHY75rNOciv6zjr0agmmUUeZZqJGPPKgqJSjJcZAE0zG3wmS6+KHq/tp6DnzYjG2o87MYGYIRp2quaOX5M3I+oIqQFDSraF7mPmFgoLO6rhtHgZ0xxzE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255865; 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=cRu0ONP9iJRS52TXzF5kbcfgXqfx58WUEunHKG1fNWY=; b=feD9Vz+S3qN/s6P+lRiCbHCKX9C70DRVeeQuqFPmdUlfmBT5jdHb7uaTqcN2MIxhen+a4Q1wF10rLv8o+N6BvEGe9pS88DCP4xZ/oyt+c9537nnlTGWs2sgDu7qlth4KNSmdVV7zf2ssH7N+VGkhEuX6zcd7V1RzHPdc0f89T/4= 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 16462558659011015.3842565727392; Wed, 2 Mar 2022 13:17:45 -0800 (PST) Received: from localhost ([::1]:36616 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWLw-0004Q4-Ix for importer@patchew.org; Wed, 02 Mar 2022 16:17:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxm-0005qR-SL for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:47 -0500 Received: from [2a00:1450:4864:20::432] (port=34601 helo=mail-wr1-x432.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxl-000896-Dm for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:46 -0500 Received: by mail-wr1-x432.google.com with SMTP id d3so4711639wrf.1 for ; Wed, 02 Mar 2022 12:52:44 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=cRu0ONP9iJRS52TXzF5kbcfgXqfx58WUEunHKG1fNWY=; b=g9wsUoT7t/OyiAlKggZhUFscxbxonxhiO5zdIh23igdbvzMs5reynbfpkFiYCwut9K x02c6v4+/IHDZEWMy4ke9KwilvFTr5gLnyiq/sPb7hhF/tS8PZcyQjLpqx/3bz2J7zSe jiXoVAZEbscDy7RnmEq4Fa5/yB47ukymsIfEiZT/fL80YzDETlKwDHvVPe0FktdFI0mi GpWDIinBtKVPTh6k5j4NQ3UJs8bTybeSlwKf3A19bbv7Rd5/Sshno4qrTgJXTZiTDHof VF2c3xehlNYz6/mfk9/nkGHOqjXj6b9z4hW32Ar4qme1L1w3rTLjABhwjg8KnGtoUtF4 bKwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cRu0ONP9iJRS52TXzF5kbcfgXqfx58WUEunHKG1fNWY=; b=Qxt2gy+nB9ZaZpzoI3XR+Z9AZtQCtA6srpSocD5tmnpRCa9ha+jLFPHmE2QFZTRNMU KxTrJxIUV+tBBjwTG1PEj9K6damnxsk8XVVv0a/G0y6lv8fBCvfUWovDg+i4ReaMu9wk ya3G68PT7F5GW1tDdv1/AT9tAtFL71roZhWR1NzWZhnyBFwPtHrxQAhrOMY3ePll6iKj qCOHqp/+gClFozOg9/7QlC/gMsbGH8bsuk8rIAyOWmbNOzL2v2mU5t8NTnHA3RoqOU8W fM+tmVZxBzfFIT34eGT/SBNO+XmWVfVykt+zoMOpK2lL3QFrqp41t171eSvwjZ2giEca AliA== X-Gm-Message-State: AOAM532GExYc7xnKc8idbEzDocTTKcNBYCXmADGtjVTKji6xsUbPUUDi EU8dWTC008vfwWTcKzHkhQnsyqVnBudcsw== X-Google-Smtp-Source: ABdhPJz6XekabZQuQu0mt+OI/rKT0UjWUx8L1F5QHW6HtU3yiZu2JxpslM7BfjR0Vk7fH37EBzJ/QQ== X-Received: by 2002:a5d:64e7:0:b0:1e4:bb8b:d3eb with SMTP id g7-20020a5d64e7000000b001e4bb8bd3ebmr24247409wri.403.1646254364116; Wed, 02 Mar 2022 12:52:44 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 13/26] target/arm: Use MAKE_64BIT_MASK to compute indexmask Date: Wed, 2 Mar 2022 20:52:17 +0000 Message-Id: <20220302205230.2122390-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::432 (failed) 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::432; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x432.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255866785100001 From: Richard Henderson The macro is a bit more readable than the inlined computation. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 431b0c14052..675aec4bf30 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11518,8 +11518,8 @@ static bool get_phys_addr_lpae(CPUARMState *env, ui= nt64_t address, level =3D startlevel; } =20 - indexmask_grainsize =3D (1ULL << (stride + 3)) - 1; - indexmask =3D (1ULL << (inputsize - (stride * (4 - level)))) - 1; + indexmask_grainsize =3D MAKE_64BIT_MASK(0, stride + 3); + indexmask =3D MAKE_64BIT_MASK(0, inputsize - (stride * (4 - level))); =20 /* Now we can extract the actual base address from the TTBR */ descaddr =3D extract64(ttbr, 0, 48); --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255886; cv=none; d=zohomail.com; s=zohoarc; b=ghDWaecURXKwxq4BnPl3x8N+iO6pg3Zihv5f+q2vkuw51ByC8QUIBm1tbaxMMNSoL2OH1oUtv7z/CZOw3SAz/ptAPkTWq55aZHweBlW+d5bLdCffq4Cc4BDnHFnRBMYMY/ocGwT9QxaZkhtCAAZ67KTvsXcaSEFN/7JsFl0L37o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255886; 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=Ktp5JrOUqDuz2WM1tRsh4muMal7IsNgv1POHAYYvYgA=; b=GJX2ACOhUyRwI+lVIpbgBFfwjadTEb5jgttgw+pozRvtRCpqYaj98hwadiz9BD/wasErsiTPAdi9DB/2BX8bhPh5V0chS5JdaIaYqjVzNSXDi96dZr/ZDFkNuDF4ZiC+3KxX1MizidR/fO+q9iB0eJIYB9WCn3uyi8hxFqO03Q4= 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 1646255886324344.6091069782726; Wed, 2 Mar 2022 13:18:06 -0800 (PST) Received: from localhost ([::1]:37838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWMH-0005FD-34 for importer@patchew.org; Wed, 02 Mar 2022 16:18:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43478) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxo-0005r9-4M for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:49 -0500 Received: from [2a00:1450:4864:20::42d] (port=44922 helo=mail-wr1-x42d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxm-00089h-CO for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:47 -0500 Received: by mail-wr1-x42d.google.com with SMTP id u1so4654805wrg.11 for ; Wed, 02 Mar 2022 12:52:45 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Ktp5JrOUqDuz2WM1tRsh4muMal7IsNgv1POHAYYvYgA=; b=lYkS/cYo41UJ+5y8cc62xCe5xnK62mpDsv5QF3v27Ig/V75+sM/WNnC7ozKkpemUOA pJ8Qcdrxs5YlPZxMqHmGlYv0Y1MA6gsfTtLqTGhgvjhLwqjMGFKh9nr+Q9wr+xmQR1W5 P2xL5oYFTmdkFXXZaeJr9CU9Yg2yqJxPy2gotbQswWcdKqZStu3qxZGtbe1TGa1ARc30 E1GCxxN4YcyJeDpwrm0xDEthJNou+uQhBKKxyO01fQ8zx+bCadu4LJ3Io/GF2KV6SCeY pysv0Zx/e4sYRe/Oj6cbWxVY6BmBFeaLunRA7iewO+q0bl2FDni5OfsvB3KZ4nJhboM0 oTHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ktp5JrOUqDuz2WM1tRsh4muMal7IsNgv1POHAYYvYgA=; b=nDCRJaP0mK5hNbQ7s3UjJ9OEDOKUqK0d1I6LlSU4nlgLlEafFHgbN7NOcyOSALe+tE /jHdJ+LiPlTzlKZF05H5QEaqKTbOf34q3buNFn/zoz/IIR38CWCbdmr9Zyw4E4Ql33au kIsrw23V7B+csVXeWUVnx06EquxdkZFk+R5gSPTfsoj1Gc2AT+ZGyntZCtkSO4T0aoyF fT7sPAsY+RxSY4dvMDB4UWx5zlDW7P3BN20LA0VPZWUJ/JmNbOCaz73pn+mOy7tyVQ4R kaQfnF9NZvTZw6Rwr5lA8+iKJPDinuxsqyScX0YzJUtiwTp3rsfCHOe7ISPYfG4l2yl4 L/zA== X-Gm-Message-State: AOAM5331XiLP/fu9PmCACe32NGdNAomtFCfD2U/Sq4c30qPyhnWET3Yx AnqGSny0JmQ98wmtq47VZbGz4AX0yiLb3w== X-Google-Smtp-Source: ABdhPJwzFn7mL8qooCUZ41uJrHA+Z8NysehGWVXAkye/9LmS0VmenWomw87iSJW0eA9LOQ6pjTM9Nw== X-Received: by 2002:a5d:6d0a:0:b0:1ef:f01c:9e with SMTP id e10-20020a5d6d0a000000b001eff01c009emr10327432wrq.486.1646254364998; Wed, 02 Mar 2022 12:52:44 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 14/26] target/arm: Honor TCR_ELx.{I}PS Date: Wed, 2 Mar 2022 20:52:18 +0000 Message-Id: <20220302205230.2122390-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::42d (failed) 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::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255887622100001 From: Richard Henderson This field controls the output (intermediate) physical address size of the translation process. V8 requires to raise an AddressSize fault if the page tables are programmed incorrectly, such that any intermediate descriptor address, or the final translated address, is out of range. Add a PS field to ARMVAParameters, and properly compute outputsize in get_phys_addr_lpae. Test the descaddr as extracted from TTBR and from page table entries. Restrict descaddrmask so that we won't raise the fault for v7. Reviewed-by: Peter Maydell Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-8-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/internals.h | 1 + target/arm/helper.c | 72 ++++++++++++++++++++++++++++++++---------- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index fefd1fb8d88..3d3d41ba2b7 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1032,6 +1032,7 @@ static inline uint32_t aarch64_pstate_valid_mask(cons= t ARMISARegisters *id) */ typedef struct ARMVAParameters { unsigned tsz : 8; + unsigned ps : 3; unsigned select : 1; bool tbi : 1; bool epd : 1; diff --git a/target/arm/helper.c b/target/arm/helper.c index 675aec4bf30..c002100979f 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11149,17 +11149,19 @@ static uint8_t convert_stage2_attrs(CPUARMState *= env, uint8_t s2attrs) } #endif /* !CONFIG_USER_ONLY */ =20 +/* This mapping is common between ID_AA64MMFR0.PARANGE and TCR_ELx.{I}PS. = */ +static const uint8_t pamax_map[] =3D { + [0] =3D 32, + [1] =3D 36, + [2] =3D 40, + [3] =3D 42, + [4] =3D 44, + [5] =3D 48, +}; + /* The cpu-specific constant value of PAMax; also used by hw/arm/virt. */ unsigned int arm_pamax(ARMCPU *cpu) { - static const unsigned int pamax_map[] =3D { - [0] =3D 32, - [1] =3D 36, - [2] =3D 40, - [3] =3D 42, - [4] =3D 44, - [5] =3D 48, - }; unsigned int parange =3D FIELD_EX64(cpu->isar.id_aa64mmfr0, ID_AA64MMFR0, PARANGE); =20 @@ -11210,7 +11212,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, { uint64_t tcr =3D regime_tcr(env, mmu_idx)->raw_tcr; bool epd, hpd, using16k, using64k, tsz_oob; - int select, tsz, tbi, max_tsz, min_tsz; + int select, tsz, tbi, max_tsz, min_tsz, ps; =20 if (!regime_has_2_ranges(mmu_idx)) { select =3D 0; @@ -11224,6 +11226,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, hpd =3D extract32(tcr, 24, 1); } epd =3D false; + ps =3D extract32(tcr, 16, 3); } else { /* * Bit 55 is always between the two regions, and is canonical for @@ -11244,6 +11247,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, epd =3D extract32(tcr, 23, 1); hpd =3D extract64(tcr, 42, 1); } + ps =3D extract64(tcr, 32, 3); } =20 if (cpu_isar_feature(aa64_st, env_archcpu(env))) { @@ -11272,6 +11276,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, =20 return (ARMVAParameters) { .tsz =3D tsz, + .ps =3D ps, .select =3D select, .tbi =3D tbi, .epd =3D epd, @@ -11399,6 +11404,8 @@ static bool get_phys_addr_lpae(CPUARMState *env, ui= nt64_t address, =20 /* TODO: This code does not support shareability levels. */ if (aarch64) { + int ps; + param =3D aa64_va_parameters(env, address, mmu_idx, access_type !=3D MMU_INST_FETCH); level =3D 0; @@ -11419,7 +11426,16 @@ static bool get_phys_addr_lpae(CPUARMState *env, u= int64_t address, =20 addrsize =3D 64 - 8 * param.tbi; inputsize =3D 64 - param.tsz; - outputsize =3D arm_pamax(cpu); + + /* + * Bound PS by PARANGE to find the effective output address size. + * ID_AA64MMFR0 is a read-only register so values outside of the + * supported mappings can be considered an implementation error. + */ + ps =3D FIELD_EX64(cpu->isar.id_aa64mmfr0, ID_AA64MMFR0, PARANGE); + ps =3D MIN(ps, param.ps); + assert(ps < ARRAY_SIZE(pamax_map)); + outputsize =3D pamax_map[ps]; } else { param =3D aa32_va_parameters(env, address, mmu_idx); level =3D 1; @@ -11523,19 +11539,38 @@ static bool get_phys_addr_lpae(CPUARMState *env, = uint64_t address, =20 /* Now we can extract the actual base address from the TTBR */ descaddr =3D extract64(ttbr, 0, 48); + + /* + * If the base address is out of range, raise AddressSizeFault. + * In the pseudocode, this is !IsZero(baseregister<47:outputsize>), + * but we've just cleared the bits above 47, so simplify the test. + */ + if (descaddr >> outputsize) { + level =3D 0; + fault_type =3D ARMFault_AddressSize; + goto do_fault; + } + /* * We rely on this masking to clear the RES0 bits at the bottom of the= TTBR * and also to mask out CnP (bit 0) which could validly be non-zero. */ descaddr &=3D ~indexmask; =20 - /* The address field in the descriptor goes up to bit 39 for ARMv7 - * but up to bit 47 for ARMv8, but we use the descaddrmask - * up to bit 39 for AArch32, because we don't need other bits in that = case - * to construct next descriptor address (anyway they should be all zer= oes). + /* + * For AArch32, the address field in the descriptor goes up to bit 39 + * for both v7 and v8. However, for v8 the SBZ bits [47:40] must be 0 + * or an AddressSize fault is raised. So for v8 we extract those SBZ + * bits as part of the address, which will be checked via outputsize. + * For AArch64, the address field always goes up to bit 47 (with extra + * bits for FEAT_LPA placed elsewhere). AArch64 implies v8. */ - descaddrmask =3D ((1ull << (aarch64 ? 48 : 40)) - 1) & - ~indexmask_grainsize; + if (arm_feature(env, ARM_FEATURE_V8)) { + descaddrmask =3D MAKE_64BIT_MASK(0, 48); + } else { + descaddrmask =3D MAKE_64BIT_MASK(0, 40); + } + descaddrmask &=3D ~indexmask_grainsize; =20 /* Secure accesses start with the page table in secure memory and * can be downgraded to non-secure at any step. Non-secure accesses @@ -11560,7 +11595,12 @@ static bool get_phys_addr_lpae(CPUARMState *env, u= int64_t address, /* Invalid, or the Reserved level 3 encoding */ goto do_fault; } + descaddr =3D descriptor & descaddrmask; + if (descaddr >> outputsize) { + fault_type =3D ARMFault_AddressSize; + goto do_fault; + } =20 if ((descriptor & 2) && (level < 3)) { /* Table entry. The top five bits are attributes which may --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646254711; cv=none; d=zohomail.com; s=zohoarc; b=XQBHW4vQtaQMJi2qNKxTY+WUX6rzLP/C93Zc7OQQgWKElyNSRAjiDd5KeIaEfPfLj5F95FsKlc6vluKgVAPXCx1/3t+4/HiB+mgMX15p0+nvh0LHsovM4/kw5BQJDQoAG4hkz53+5+UvIylXuSorLMkZY95s+eVHQyGEsgVv8Do= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254711; 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=8QMoI8yKN1p10WB85KNBkULNMuISbQxDURZ0kblprrk=; b=Ue5Vx5I48cwwFH2YhWUzTuRmVps1cXPYDj0qMocXoqE6eGTO410uDIvn1OYvfvkuGcspfN7TDv/W808X98hxY2/yKHYLizj6NeRYiaz5KyF4T8/+bzLgxMnvLmoUTS0NPfHZEnJHhSIntKnabmXVrYNNSmNmNkQsnmOKs3dIZ+s= 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 1646254711287742.7399019457803; Wed, 2 Mar 2022 12:58:31 -0800 (PST) Received: from localhost ([::1]:47322 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPW3K-0006MC-5l for importer@patchew.org; Wed, 02 Mar 2022 15:58:30 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43506) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxp-0005rI-AB for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:51 -0500 Received: from [2a00:1450:4864:20::42b] (port=43947 helo=mail-wr1-x42b.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxn-0008DF-JM for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:49 -0500 Received: by mail-wr1-x42b.google.com with SMTP id m6so4661063wrr.10 for ; Wed, 02 Mar 2022 12:52:46 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=8QMoI8yKN1p10WB85KNBkULNMuISbQxDURZ0kblprrk=; b=Fqla6Gc9sOiu7yVj+sFQjKU1JMIpF4gj8LlM5mma87qjBzAqk5dXNJXnMzCEx4FSA0 W+U2DkFUowptDZ1DOQMc5Hh2BNp6mCdvi3BhqAGdUXo62TGhoVk+9o2DucSSEwbKvtcS Jv71JUhlWmQdfulOYbLEMX5w29qC4VRZcvAI9Vzf8RRccUZt53NAFgoLcxMWzoIk9Os8 4OZixLU0f6XjBTBOnRKDPsTrs/4AspleT0tomdkX7OXDlrJfEyJQKQ6Fs+s9/nAa/Smd 3eebcPn4xJiIKDA/vwwyXWQjLxZ6NvZgtjuh4UuEo+0ueVSd7jvvgoBoLNbKdL0gNN7t FXsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8QMoI8yKN1p10WB85KNBkULNMuISbQxDURZ0kblprrk=; b=xsF28qmJHlGMIALyXy7odvtcf1uH1FN+Hfig2j1INxbm/y4L/XJNdQ/JQ3uS1Vrq30 9d8e8KRAkjDcbnLPqZ9U/LO/GP3bpmahNq3RiYXL4bB3yxGyVDAewtRV8cBIz8MCEGzf 0xHcQpkLxekW56Vmcu/2SR2r8qUmcyu4qsZ6MVDy/PQj8vFap1FR3QTMG1IeNbUPsRmO tQRecqEnaBRJbhGf/RJkPin87FnnSqT/T63DE963F/RwWUkqUWkmHe4DRrxP3UenbY3G fFR2bKhysdA9A7Z/92ACyNv4l6qIhWT9eCmFRUKGUFFKAKVCei0KBhqJ49icRw1b3EFs JFvw== X-Gm-Message-State: AOAM5322UUG7oArRUkjHZUggiyocRqTqKIbGjnEj/ogoiOENUB78SafM jY+PKNzsHNjNKz/ynawzkHRN1Cj/wX4fSQ== X-Google-Smtp-Source: ABdhPJxCM18Q/2FXar9w3Opy2lsvXSD/cJF44eaAHbTNQyn8XWLJcKVyHoeeR2lbnmHV7CBY+OjApA== X-Received: by 2002:a05:6000:1ac5:b0:1ea:7870:d7eb with SMTP id i5-20020a0560001ac500b001ea7870d7ebmr24871679wry.171.1646254365799; Wed, 02 Mar 2022 12:52:45 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/26] target/arm: Prepare DBGBVR and DBGWVR for FEAT_LVA Date: Wed, 2 Mar 2022 20:52:19 +0000 Message-Id: <20220302205230.2122390-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::42b (failed) 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::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254712516100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson The original A.a revision of the AArch64 ARM required that we force-extend the addresses in these registers from 49 bits. This language has been loosened via a combination of IMPLEMENTATION DEFINED and CONSTRAINTED UNPREDICTABLE to allow consideration of the entire aligned address. This means that we do not have to consider whether or not FEAT_LVA is enabled, and decide from which bit an address might need to be extended. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-9-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index c002100979f..2eff30d18c6 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6423,11 +6423,18 @@ static void dbgwvr_write(CPUARMState *env, const AR= MCPRegInfo *ri, ARMCPU *cpu =3D env_archcpu(env); int i =3D ri->crm; =20 - /* Bits [63:49] are hardwired to the value of bit [48]; that is, the - * register reads and behaves as if values written are sign extended. + /* * Bits [1:0] are RES0. + * + * It is IMPLEMENTATION DEFINED whether [63:49] ([63:53] with FEAT_LVA) + * are hardwired to the value of bit [48] ([52] with FEAT_LVA), or if + * they contain the value written. It is CONSTRAINED UNPREDICTABLE + * whether the RESS bits are ignored when comparing an address. + * + * Therefore we are allowed to compare the entire register, which lets + * us avoid considering whether or not FEAT_LVA is actually enabled. */ - value =3D sextract64(value, 0, 49) & ~3ULL; + value &=3D ~3ULL; =20 raw_write(env, ri, value); hw_watchpoint_update(cpu, i); @@ -6473,10 +6480,19 @@ void hw_breakpoint_update(ARMCPU *cpu, int n) case 0: /* unlinked address match */ case 1: /* linked address match */ { - /* Bits [63:49] are hardwired to the value of bit [48]; that is, - * we behave as if the register was sign extended. Bits [1:0] are - * RES0. The BAS field is used to allow setting breakpoints on 16 - * bit wide instructions; it is CONSTRAINED UNPREDICTABLE whether + /* + * Bits [1:0] are RES0. + * + * It is IMPLEMENTATION DEFINED whether bits [63:49] + * ([63:53] for FEAT_LVA) are hardwired to a copy of the sign bit + * of the VA field ([48] or [52] for FEAT_LVA), or whether the + * value is read as written. It is CONSTRAINED UNPREDICTABLE + * whether the RESS bits are ignored when comparing an address. + * Therefore we are allowed to compare the entire register, which + * lets us avoid considering whether FEAT_LVA is actually enabled. + * + * The BAS field is used to allow setting breakpoints on 16-bit + * wide instructions; it is CONSTRAINED UNPREDICTABLE whether * a bp will fire if the addresses covered by the bp and the addre= sses * covered by the insn overlap but the insn doesn't start at the * start of the bp address range. We choose to require the insn and @@ -6489,7 +6505,7 @@ void hw_breakpoint_update(ARMCPU *cpu, int n) * See also figure D2-3 in the v8 ARM ARM (DDI0487A.c). */ int bas =3D extract64(bcr, 5, 4); - addr =3D sextract64(bvr, 0, 49) & ~3ULL; + addr =3D bvr & ~3ULL; if (bas =3D=3D 0) { return; } --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255740; cv=none; d=zohomail.com; s=zohoarc; b=gfT3eFuak2/XfNM178q6YwelI/Qt/KgPQCIZXYZw5aOtUZ5NT2EfEJvPbXtzTHWOgqNOJ/45DKa7vNn6OrH4iBqQk+ucMeJf1EE+np6oEceCqR3IzGtVU2oXSGaD9zbkHDnoHoC3IlDw1Xre4J2h7Bt1JJ0Lz1OWitCCRmXd9RA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255740; 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=a6BM5prJChWZqJQTT1PzTDgjTHURzpRa12/wyNIbx18=; b=Y3QN4Y+SDmXLkaeG1CYgjuQuLDweIXPbTMKOKYBgtasx7Zvw0rXY9qVf/82UP56ZlSczxQF0GUIua60VUV70FqzVj5HfV8Tkr52gqbWCqTnNyh5Dlr3fxW5wEWkWix/5g/CaqxvgLQrhS4AkukG0eFc1ayC2tg85yp/+hGTbDp8= 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 1646255740110374.28699171906294; Wed, 2 Mar 2022 13:15:40 -0800 (PST) Received: from localhost ([::1]:60280 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWJu-0001Aa-P1 for importer@patchew.org; Wed, 02 Mar 2022 16:15:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43508) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxp-0005rJ-CT for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:51 -0500 Received: from [2a00:1450:4864:20::32f] (port=52060 helo=mail-wm1-x32f.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxn-0008HT-RN for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:49 -0500 Received: by mail-wm1-x32f.google.com with SMTP id p4so1946252wmg.1 for ; Wed, 02 Mar 2022 12:52:47 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=a6BM5prJChWZqJQTT1PzTDgjTHURzpRa12/wyNIbx18=; b=DDAlN3CbmhnKG5xNfWo9TpC2VPU48k6thIy65fLnNhL4hT46OubyMN1cMVpxNXjVxr dDd/djwWU1qcbRa3J/7iL2reD/cgCp7HJ3gdsD0t36wQLk2lByukEiw93yjSpJUj/Rb5 xpwRU6e8b29tMbWEGwqq2j705SWREWULQ7/DyLr97eljKdUZ5+o4Zriz6kFhg8312P0s Av1O7IAhAF40CrQQVs9Ir6NKGtQTQvvwi9CHTKhr0vPJc8C/6xKzJGZY3GmFXEt1EkdV VjkmkrxuNQFwwlGQ5qLKfMXX80aFLVPas7ebn+RGUIKgeUwA1idtnyJo+4jwGRTkYIU9 4XcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=a6BM5prJChWZqJQTT1PzTDgjTHURzpRa12/wyNIbx18=; b=du1zXppQuaTZalxflUXjD0jztEghCoTNGVk8GST56x+2OaPAIONEK7wdvqs5YkXHYO pVM/lCJLJIzt1w/wTwxeM9/r7pn5xeRpikmiE9B+LLXE9bE1glrAyQ8XkHTuWEJzXA+d BkS0uNmePgWZ8gBu9istKRGNSpH0low6caWU5YwI8m2botmE1TzNWC1eMKY09kC+3ou7 TdZSgHS1b9kJ8hJ1KpQ+bNNJyYMbinnq3fHOx2k/86MddmamQ1xQbL04goZmea/KBvej ZcKAYD5NZ5U9zUOMe21aNSwiUjI0XvomeFbrPKjkYJqfFFExgaoj83wvdRiJ3tbCYE4U +9UA== X-Gm-Message-State: AOAM530qS5dkLREzTUqH3vyUm0GEhW4LwCa60CZ9o2zTFoz3IXnhoaC4 sB2lxbHKD83ArUYder64EfuB/I0ueW6EUw== X-Google-Smtp-Source: ABdhPJyoLerY6sdVig9RINJO4OhnhklUFUM4wALPK7lAJw6r/ZQe2R1tacwVFjdRdeR6DqzomQHnCA== X-Received: by 2002:a7b:c207:0:b0:381:6db7:d053 with SMTP id x7-20020a7bc207000000b003816db7d053mr1280380wmi.137.1646254366646; Wed, 02 Mar 2022 12:52:46 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 16/26] target/arm: Implement FEAT_LVA Date: Wed, 2 Mar 2022 20:52:20 +0000 Message-Id: <20220302205230.2122390-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::32f (failed) 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::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255741872100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This feature is relatively small, as it applies only to 64k pages and thus requires no additional changes to the table descriptor walking algorithm, only a change to the minimum TSZ (which is the inverse of the maximum virtual address space size). Note that this feature widens VBAR_ELx, but we already treat the register as being 64 bits wide. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-10-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + target/arm/cpu-param.h | 2 +- target/arm/cpu.h | 5 +++++ target/arm/cpu64.c | 1 + target/arm/helper.c | 9 ++++++++- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 144dc491d95..f3eabddfb5a 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -27,6 +27,7 @@ the following architecture extensions: - FEAT_LRCPC (Load-acquire RCpc instructions) - FEAT_LRCPC2 (Load-acquire RCpc instructions v2) - FEAT_LSE (Large System Extensions) +- FEAT_LVA (Large Virtual Address space) - FEAT_MTE (Memory Tagging Extension) - FEAT_MTE2 (Memory Tagging Extension) - FEAT_MTE3 (MTE Asymmetric Fault Handling) diff --git a/target/arm/cpu-param.h b/target/arm/cpu-param.h index 7f38d33b8ea..5f9c288b1a6 100644 --- a/target/arm/cpu-param.h +++ b/target/arm/cpu-param.h @@ -11,7 +11,7 @@ #ifdef TARGET_AARCH64 # define TARGET_LONG_BITS 64 # define TARGET_PHYS_ADDR_SPACE_BITS 48 -# define TARGET_VIRT_ADDR_SPACE_BITS 48 +# define TARGET_VIRT_ADDR_SPACE_BITS 52 #else # define TARGET_LONG_BITS 32 # define TARGET_PHYS_ADDR_SPACE_BITS 40 diff --git a/target/arm/cpu.h b/target/arm/cpu.h index c6a4d50e821..c52d56f6699 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -4289,6 +4289,11 @@ static inline bool isar_feature_aa64_ccidx(const ARM= ISARegisters *id) return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, CCIDX) !=3D 0; } =20 +static inline bool isar_feature_aa64_lva(const ARMISARegisters *id) +{ + return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, VARANGE) !=3D 0; +} + static inline bool isar_feature_aa64_tts2uxn(const ARMISARegisters *id) { return FIELD_EX64(id->id_aa64mmfr1, ID_AA64MMFR1, XNX) !=3D 0; diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 1171ab16b94..1de31ffb406 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -811,6 +811,7 @@ static void aarch64_max_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64MMFR2, UAO, 1); t =3D FIELD_DP64(t, ID_AA64MMFR2, CNP, 1); /* TTCNP */ t =3D FIELD_DP64(t, ID_AA64MMFR2, ST, 1); /* TTST */ + t =3D FIELD_DP64(t, ID_AA64MMFR2, VARANGE, 1); /* FEAT_LVA */ cpu->isar.id_aa64mmfr2 =3D t; =20 t =3D cpu->isar.id_aa64zfr0; diff --git a/target/arm/helper.c b/target/arm/helper.c index 2eff30d18c6..28b43472131 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11271,7 +11271,14 @@ ARMVAParameters aa64_va_parameters(CPUARMState *en= v, uint64_t va, } else { max_tsz =3D 39; } - min_tsz =3D 16; /* TODO: ARMv8.2-LVA */ + + min_tsz =3D 16; + if (using64k) { + if (cpu_isar_feature(aa64_lva, env_archcpu(env))) { + min_tsz =3D 12; + } + } + /* TODO: FEAT_LPA2 */ =20 if (tsz > max_tsz) { tsz =3D max_tsz; --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255994; cv=none; d=zohomail.com; s=zohoarc; b=QpQJnN4umMgRXiLJv4gWy1zkaVPpaD4MiE0bf+DoKMtIFHYOcyYq6FKRj2KZW5Dx5qxjwOEkOiDGlNDMTvTBm51VXMVkkrJrEn0BPfwuORKgY7Euj66X+dJKgcNf62K4utmqYpm+YOlcsU4nvU4nQ/delbR4DzC6AVbSSERyn0E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255994; 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=CRKzi8an4EM1SJfqwBg52hhLiM5AICaglyAbFT7p8Tc=; b=gl1I9FS00KQGPtXCDIP/XX+IBfsAAi9He8Ui9UGssqhmzA/4p6WtR8X5/jSC6vqlq5VqUBgu2RWh9NVEDE0gdBG2eO30oQqi3jN9NS3EnR7p4uEo0yir+lWZic0Nbkq/NJ13pAd/pMgGE7T68Mfito3C/MTbfxte2eFzqVAzrw4= 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 1646255994719178.39911861515225; Wed, 2 Mar 2022 13:19:54 -0800 (PST) Received: from localhost ([::1]:42940 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWO1-0000DS-Fk for importer@patchew.org; Wed, 02 Mar 2022 16:19:53 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43548) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxr-0005rm-Un for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:53 -0500 Received: from [2a00:1450:4864:20::429] (port=41511 helo=mail-wr1-x429.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxo-0008LN-Qt for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:50 -0500 Received: by mail-wr1-x429.google.com with SMTP id i8so4672987wrr.8 for ; Wed, 02 Mar 2022 12:52:48 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=CRKzi8an4EM1SJfqwBg52hhLiM5AICaglyAbFT7p8Tc=; b=MAPESj58h/YdLK8iF4s787XJ0tWAZLnCgAeIEMo/dpyyCIgqE5F8TfSZzZIesanVC9 xCHFhKaMXkTNOj8GguE6EYJVHRMX8kw31uHkV6EZdBw7YIwxvFoanHNuRv0OnfyMrSUY /dgR+p6AWXkeFE1SIIxHv2frwZYDy40fmbCcS+tQKQ9TGUqZ+A0QmfUP43onP997JLol h5MXxydY6lIUCLkPVQ9myGrad/95uzcuaPJLB6sO0FTJ/jTK/psjaGX5gTNkEH6Gg/Y5 Vqki4Z+oOmTCy5AlSOmXOWFYzc3mmqK+TTJYg5ZzjxOMseoeLWYoXbSuNCD3jJDb7kEd K1OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CRKzi8an4EM1SJfqwBg52hhLiM5AICaglyAbFT7p8Tc=; b=7y9Y3FX4xNmmA3X1pl36kiOH9/JG1FLmwBMwHMued7Ok4lJnVGHDXnw177ndXwJex7 bmIGd6bkY9Dma4GmlghRnNuwZjVIBdzPrklCQLEQeIAqtyx2APliJs47KG9VnJ9msnvr GMRJ0n6/YAVeCY13JhWNMQTCV8+e5vPGW4wWk6e8Qkfvw1r20SRY7TZJzImN1YffNLt2 iGMzrPnPceEpR4GQI/GJGfgQ0ZwGFW+wz/ZPz0+0P/cLwa/yhW40TFAJtL3w8UFE391n DTdVmfrAyQR5ysQ9AHnb0ZGPmKsKmZtU/V/xuDtLiXxCQFi/1RJ01nzGdnsyHZPOD+45 la1A== X-Gm-Message-State: AOAM531vV63271SBTKnjBiWUIrt+eMORJiVldn5sXRRwLc1hG4/Y7aK4 h18wcDLFizid/WNf46KOBHG9gQ8j1R3CCg== X-Google-Smtp-Source: ABdhPJwK5IsOqotSpckKuC2NMgttYwr6uuAPwLYcnUeVLuydKLfvx5JjE1c2rJo6v2BT0yCFe99Zrg== X-Received: by 2002:a5d:648d:0:b0:1ef:d62a:8414 with SMTP id o13-20020a5d648d000000b001efd62a8414mr11753944wri.99.1646254367503; Wed, 02 Mar 2022 12:52:47 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 17/26] target/arm: Implement FEAT_LPA Date: Wed, 2 Mar 2022 20:52:21 +0000 Message-Id: <20220302205230.2122390-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::429 (failed) 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::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x429.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255997290100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This feature widens physical addresses (and intermediate physical addresses for 2-stage translation) from 48 to 52 bits, when using 64k pages. The only thing left at this point is to handle the extra bits in the TTBR and in the table descriptors. Note that PAR_EL1 and HPFAR_EL2 are nominally extended, but we don't mask out the high bits when writing to those registers, so no changes are required there. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-11-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + target/arm/cpu-param.h | 2 +- target/arm/cpu64.c | 2 +- target/arm/helper.c | 19 ++++++++++++++++--- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index f3eabddfb5a..0053ddce208 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -24,6 +24,7 @@ the following architecture extensions: - FEAT_I8MM (AArch64 Int8 matrix multiplication instructions) - FEAT_JSCVT (JavaScript conversion instructions) - FEAT_LOR (Limited ordering regions) +- FEAT_LPA (Large Physical Address space) - FEAT_LRCPC (Load-acquire RCpc instructions) - FEAT_LRCPC2 (Load-acquire RCpc instructions v2) - FEAT_LSE (Large System Extensions) diff --git a/target/arm/cpu-param.h b/target/arm/cpu-param.h index 5f9c288b1a6..b59d505761c 100644 --- a/target/arm/cpu-param.h +++ b/target/arm/cpu-param.h @@ -10,7 +10,7 @@ =20 #ifdef TARGET_AARCH64 # define TARGET_LONG_BITS 64 -# define TARGET_PHYS_ADDR_SPACE_BITS 48 +# define TARGET_PHYS_ADDR_SPACE_BITS 52 # define TARGET_VIRT_ADDR_SPACE_BITS 52 #else # define TARGET_LONG_BITS 32 diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 1de31ffb406..d88662cef68 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -795,7 +795,7 @@ static void aarch64_max_initfn(Object *obj) cpu->isar.id_aa64pfr1 =3D t; =20 t =3D cpu->isar.id_aa64mmfr0; - t =3D FIELD_DP64(t, ID_AA64MMFR0, PARANGE, 5); /* PARange: 48 bits */ + t =3D FIELD_DP64(t, ID_AA64MMFR0, PARANGE, 6); /* FEAT_LPA: 52 bits */ cpu->isar.id_aa64mmfr0 =3D t; =20 t =3D cpu->isar.id_aa64mmfr1; diff --git a/target/arm/helper.c b/target/arm/helper.c index 28b43472131..950f56599e2 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -11173,6 +11173,7 @@ static const uint8_t pamax_map[] =3D { [3] =3D 42, [4] =3D 44, [5] =3D 48, + [6] =3D 52, }; =20 /* The cpu-specific constant value of PAMax; also used by hw/arm/virt. */ @@ -11564,11 +11565,15 @@ static bool get_phys_addr_lpae(CPUARMState *env, = uint64_t address, descaddr =3D extract64(ttbr, 0, 48); =20 /* - * If the base address is out of range, raise AddressSizeFault. + * For FEAT_LPA and PS=3D6, bits [51:48] of descaddr are in [5:2] of T= TBR. + * + * Otherwise, if the base address is out of range, raise AddressSizeFa= ult. * In the pseudocode, this is !IsZero(baseregister<47:outputsize>), * but we've just cleared the bits above 47, so simplify the test. */ - if (descaddr >> outputsize) { + if (outputsize > 48) { + descaddr |=3D extract64(ttbr, 2, 4) << 48; + } else if (descaddr >> outputsize) { level =3D 0; fault_type =3D ARMFault_AddressSize; goto do_fault; @@ -11620,7 +11625,15 @@ static bool get_phys_addr_lpae(CPUARMState *env, u= int64_t address, } =20 descaddr =3D descriptor & descaddrmask; - if (descaddr >> outputsize) { + + /* + * For FEAT_LPA and PS=3D6, bits [51:48] of descaddr are in [15:12] + * of descriptor. Otherwise, if descaddr is out of range, raise + * AddressSizeFault. + */ + if (outputsize > 48) { + descaddr |=3D extract64(descriptor, 12, 4) << 48; + } else if (descaddr >> outputsize) { fault_type =3D ARMFault_AddressSize; goto do_fault; } --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646256165; cv=none; d=zohomail.com; s=zohoarc; b=Dj2LDYbKeZXf0l9QmNifpISnOY7TKlEEzL+AfaqUF/vOoS2eWIF24zwpMZ7NY2FE6tOHhE9L9YkGsNdt8zYQBrYjupQB/UjcCtejY1x2/J2SCMh/FczLGBJYuqW+Fsdlf8/Ft2PITEuBAwzTfd42w4bLYpxVAqWP5I1nN2Gx/E8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646256165; 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=GGAK7LeYb7Sg1wWh/ohAGGWT9a5QRy3Af01VtMkcT+c=; b=fh4YQSWKIhIkOdLpV2/CxXZ8whhK/Csd35rIiCj+4HkafclkpGkvNpRbDBDUHv8x6eTghdP2pInPz+8282zCBSx5YGPpvPoLsV57Is29Bidjb8pJPQczdfKz08+iIMiwSt4smmYCRikHWXAYS2r+6D/IbQknI835dOa6SAec+Mc= 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 1646256165710185.61236401452322; Wed, 2 Mar 2022 13:22:45 -0800 (PST) Received: from localhost ([::1]:47486 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWQm-0003NW-Is for importer@patchew.org; Wed, 02 Mar 2022 16:22:44 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43550) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxr-0005rn-Uj for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:53 -0500 Received: from [2a00:1450:4864:20::431] (port=40931 helo=mail-wr1-x431.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxq-0008P1-4n for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:51 -0500 Received: by mail-wr1-x431.google.com with SMTP id n14so4683950wrq.7 for ; Wed, 02 Mar 2022 12:52:49 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=GGAK7LeYb7Sg1wWh/ohAGGWT9a5QRy3Af01VtMkcT+c=; b=Pvhb2gzlUtTu05nadRJS0ZJjs36rL+2f2Fhv3hUzbdJIA3vHFu7wUknJpeOzIrxlT2 N4eyGdsUrtzTD/EoOO+Fe2E7bFHIxUrWH3Gcvm/GhDCsto3IL0DLA7IsVlSnAeUXTOin qm9wsRW1GBJ1ZteIp55OV5QtTlizguEWbOvXcqu0w1+evoqpkuFW1SlkO7JkdrqGbjfE fclo9qE6bBlKKZhRSm5CpL9Jk6fMhoQ8vaUoPbQp+DiQYBPSTX8WXgY6pfdcksO9vXvX jA42NnFhZbQJJnQi/egHSISZ8AqLXEJTtn76yHADOFSINduu5MLzgk0Ep7EfZsMcKdED 6pxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GGAK7LeYb7Sg1wWh/ohAGGWT9a5QRy3Af01VtMkcT+c=; b=qFE6Vk1QaanChkgDqrXhrjyW363S/2hjLpCr15Ct0XjySBLsPsVWxGDeJdnWWTiDNM T067XkGzqIkYc6GLJ5ozzj/MVC3WkugaRjhl3VOX5kRZ5vIRtZi2NEd+nZCovN3EuExd 9kxI/VZtdY1/GiZ9IINo3NsMLvpBYYJB8GYcDWx/VCw/wPf0SB29LORLRjB41zPf1VF1 jShikK+egGc+n7iVqskO9WVEzGr502i62ZpKIpFGYbg1it3QZynwG7JPb4l8+ekLYupZ faE+3Ug3XXqoT5qlEDJOxOv1fD0JQJC3aKhIhk4nQ+VEhCFvEJiNutJtbZqr1jsWyde2 oSRQ== X-Gm-Message-State: AOAM5306diBANQQAld0V1Se14mgGvJhiPliJMesiyKMqS9QckJqccjfU /ZLvITmMJf4L+tVEeatQ3JpmBEIOZvCo1g== X-Google-Smtp-Source: ABdhPJxSij4wqMFUTXQrEJzC933ZZEXeWP6uGSsXKI7tl/91MMs3pg51RZJgGZi42jgvS4VLggrjeg== X-Received: by 2002:adf:8b58:0:b0:1f0:241e:9b51 with SMTP id v24-20020adf8b58000000b001f0241e9b51mr4874252wra.539.1646254368393; Wed, 02 Mar 2022 12:52:48 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 18/26] target/arm: Extend arm_fi_to_lfsc to level -1 Date: Wed, 2 Mar 2022 20:52:22 +0000 Message-Id: <20220302205230.2122390-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::431 (failed) 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::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x431.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646256166681100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson With FEAT_LPA2, rather than introducing translation level 4, we introduce level -1, below the current level 0. Extend arm_fi_to_lfsc to handle these faults. Assert that this new translation level does not leak into fault types for which it is not defined, which allows some masking of fi->level to be removed. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-12-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/internals.h | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 3d3d41ba2b7..00af41d7925 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -462,28 +462,51 @@ static inline uint32_t arm_fi_to_lfsc(ARMMMUFaultInfo= *fi) case ARMFault_None: return 0; case ARMFault_AddressSize: - fsc =3D fi->level & 3; + assert(fi->level >=3D -1 && fi->level <=3D 3); + if (fi->level < 0) { + fsc =3D 0b101001; + } else { + fsc =3D fi->level; + } break; case ARMFault_AccessFlag: - fsc =3D (fi->level & 3) | (0x2 << 2); + assert(fi->level >=3D 0 && fi->level <=3D 3); + fsc =3D 0b001000 | fi->level; break; case ARMFault_Permission: - fsc =3D (fi->level & 3) | (0x3 << 2); + assert(fi->level >=3D 0 && fi->level <=3D 3); + fsc =3D 0b001100 | fi->level; break; case ARMFault_Translation: - fsc =3D (fi->level & 3) | (0x1 << 2); + assert(fi->level >=3D -1 && fi->level <=3D 3); + if (fi->level < 0) { + fsc =3D 0b101011; + } else { + fsc =3D 0b000100 | fi->level; + } break; case ARMFault_SyncExternal: fsc =3D 0x10 | (fi->ea << 12); break; case ARMFault_SyncExternalOnWalk: - fsc =3D (fi->level & 3) | (0x5 << 2) | (fi->ea << 12); + assert(fi->level >=3D -1 && fi->level <=3D 3); + if (fi->level < 0) { + fsc =3D 0b010011; + } else { + fsc =3D 0b010100 | fi->level; + } + fsc |=3D fi->ea << 12; break; case ARMFault_SyncParity: fsc =3D 0x18; break; case ARMFault_SyncParityOnWalk: - fsc =3D (fi->level & 3) | (0x7 << 2); + assert(fi->level >=3D -1 && fi->level <=3D 3); + if (fi->level < 0) { + fsc =3D 0b011011; + } else { + fsc =3D 0b011100 | fi->level; + } break; case ARMFault_AsyncParity: fsc =3D 0x19; --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255230; cv=none; d=zohomail.com; s=zohoarc; b=Br74quQm2Fv0XXOmi0XqlAj8WBhjobPBu4reGrayxqAy3TAHNwJcp9/Ou7In2wwwMPkMqP0Z4XfMH9IOopeAJ5fKjTEzbKDnTxRRlWmjJDlF1Nc91AMSIk7waypMJI6w65xFop18vzBTHua9oOt1xoxNSLqkYCJBR/LW5TYDnUY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255230; 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=i7la0k2eorJda0aIicEx+aLSW513Xo/ZYfhT/cVR5VI=; b=GbvX8BVLN7uHPKElnWSXu+T4oixyZuBCvLBcVADS+LIZYnaxR416J2/J515yQpP8LD4SqlPIe+poo1+cphabtiQ9QhnztNRv/gsjAAfsHVd4mio70tUiIYrr67z2KbafCIBO8fBwjEdclGlp2ojNqH5vlnfznuZrm8Z2+J4rImQ= 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 1646255230449481.7426906832342; Wed, 2 Mar 2022 13:07:10 -0800 (PST) Received: from localhost ([::1]:36044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWBh-0001Rg-23 for importer@patchew.org; Wed, 02 Mar 2022 16:07:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43576) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxt-0005s2-9w for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:53 -0500 Received: from [2a00:1450:4864:20::432] (port=45997 helo=mail-wr1-x432.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxr-0008Sh-Dy for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:52 -0500 Received: by mail-wr1-x432.google.com with SMTP id p9so4646455wra.12 for ; Wed, 02 Mar 2022 12:52:50 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=i7la0k2eorJda0aIicEx+aLSW513Xo/ZYfhT/cVR5VI=; b=aO7EcNo1yNZb5ngWn+Fxlogzknw88bfn8E7A9sK7f4qmGt0aJNv6T6TPeATt8VVFqX wLuLSvvtpMC7er6lL0/RP7q5d1K7MVX+o6KiG8nP5ObuueM9dIjFJKe93dXYqr9I1x4l eI0THJLqy7SoVM9Hfwutm1zHKdE7RDRYCX7rXPor6qhxv0/VsPxKOksUzAomNAdkdZsb z4R95V2PthnVOp+w5zxUqQ9boPhhHR1XdpTolb8+2Nr+BmgENlS9/GyXMcHNCmN0DEuq KHVMh/hnpspRge83alZbR5n5wH4D//nv/oo3Sm4c/5VbYqzrSp8A6wlKaCGXrl014URv BOSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i7la0k2eorJda0aIicEx+aLSW513Xo/ZYfhT/cVR5VI=; b=Jh32GMDpQLbcAouKTCbb9ND9sIAZ6HyOtdUinDtIHB0GEHNPd4wDqOgKf6Sz193kyG ytZ0O21SzlfaTT1Qah8QxXUPoTgYqBc/52kzfGOH+EtxXgJi86hFevjuMhRbM6EJ27Nt cDvIIO3S+jaYk/YtUOV7Fu2BePDbMvIWyoY+Xt7ruQJTFlaTim8NeKqo1Y50AQnXWLtT FyjmLJ1vz2xRjAtEFpnlfntHaBnbgh307G9K4q92Ogq1bIeNJuzOLSy4Omy4oDTRIZbN t3vYn7Q00wpk33KzPQbVXR1Ku4TqV7KkuNZ6Q98STotdlbOmh+tZKNWT3M2YRvCl/qxc NwZQ== X-Gm-Message-State: AOAM530auuX/80TcCwPA13GuHTxt6VQ9YYHdsgv7sGU4xtCzgiwqpP7n COIEX4t8Yx7w/cAxY1Nc+M0KNSdtksiOWw== X-Google-Smtp-Source: ABdhPJwhTPM0OcEX6wZ5Xdx1p9sd9dqnS1UvNKUkdA0sx/K5SBXueqN5inWwVM3WV/j2MHfW8jqzlQ== X-Received: by 2002:adf:816c:0:b0:1e6:88a9:eb6c with SMTP id 99-20020adf816c000000b001e688a9eb6cmr23915795wrm.645.1646254369435; Wed, 02 Mar 2022 12:52:49 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 19/26] target/arm: Introduce tlbi_aa64_get_range Date: Wed, 2 Mar 2022 20:52:23 +0000 Message-Id: <20220302205230.2122390-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::432 (failed) 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::432; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x432.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255231929100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Merge tlbi_aa64_range_get_length and tlbi_aa64_range_get_base, returning a structure containing both results. Pass in the ARMMMUIdx, rather than the digested two_ranges boolean. This is in preparation for FEAT_LPA2, where the interpretation of 'value' depends on the effective value of DS for the regime. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-13-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 58 +++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 34 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 950f56599e2..31c2a716f2a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4511,70 +4511,60 @@ static void tlbi_aa64_vae3is_write(CPUARMState *env= , const ARMCPRegInfo *ri, } =20 #ifdef TARGET_AARCH64 -static uint64_t tlbi_aa64_range_get_length(CPUARMState *env, - uint64_t value) -{ - unsigned int page_shift; - unsigned int page_size_granule; - uint64_t num; - uint64_t scale; - uint64_t exponent; +typedef struct { + uint64_t base; uint64_t length; +} TLBIRange; + +static TLBIRange tlbi_aa64_get_range(CPUARMState *env, ARMMMUIdx mmuidx, + uint64_t value) +{ + unsigned int page_size_granule, page_shift, num, scale, exponent; + TLBIRange ret =3D { }; =20 - num =3D extract64(value, 39, 5); - scale =3D extract64(value, 44, 2); page_size_granule =3D extract64(value, 46, 2); =20 if (page_size_granule =3D=3D 0) { qemu_log_mask(LOG_GUEST_ERROR, "Invalid page size granule %d\n", page_size_granule); - return 0; + return ret; } =20 page_shift =3D (page_size_granule - 1) * 2 + 12; - + num =3D extract64(value, 39, 5); + scale =3D extract64(value, 44, 2); exponent =3D (5 * scale) + 1; - length =3D (num + 1) << (exponent + page_shift); =20 - return length; -} + ret.length =3D (num + 1) << (exponent + page_shift); =20 -static uint64_t tlbi_aa64_range_get_base(CPUARMState *env, uint64_t value, - bool two_ranges) -{ - /* TODO: ARMv8.7 FEAT_LPA2 */ - uint64_t pageaddr; - - if (two_ranges) { - pageaddr =3D sextract64(value, 0, 37) << TARGET_PAGE_BITS; + if (regime_has_2_ranges(mmuidx)) { + ret.base =3D sextract64(value, 0, 37) << TARGET_PAGE_BITS; } else { - pageaddr =3D extract64(value, 0, 37) << TARGET_PAGE_BITS; + ret.base =3D extract64(value, 0, 37) << TARGET_PAGE_BITS; } =20 - return pageaddr; + return ret; } =20 static void do_rvae_write(CPUARMState *env, uint64_t value, int idxmap, bool synced) { ARMMMUIdx one_idx =3D ARM_MMU_IDX_A | ctz32(idxmap); - bool two_ranges =3D regime_has_2_ranges(one_idx); - uint64_t baseaddr, length; + TLBIRange range; int bits; =20 - baseaddr =3D tlbi_aa64_range_get_base(env, value, two_ranges); - length =3D tlbi_aa64_range_get_length(env, value); - bits =3D tlbbits_for_regime(env, one_idx, baseaddr); + range =3D tlbi_aa64_get_range(env, one_idx, value); + bits =3D tlbbits_for_regime(env, one_idx, range.base); =20 if (synced) { tlb_flush_range_by_mmuidx_all_cpus_synced(env_cpu(env), - baseaddr, - length, + range.base, + range.length, idxmap, bits); } else { - tlb_flush_range_by_mmuidx(env_cpu(env), baseaddr, - length, idxmap, bits); + tlb_flush_range_by_mmuidx(env_cpu(env), range.base, + range.length, idxmap, bits); } } =20 --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646254941; cv=none; d=zohomail.com; s=zohoarc; b=Z1iTqyLCawxAh/6mL2pv3XxcR+qVuoMqki7J+6ixFXCCpZFFEfa1zBcH/kenvQ3+TIdx42Ok035a08FC4ZbahgKaOCWpcmaeMmOB2V8cnkLN3q6Ipa/mpOA5jKGeKvongULHMQk187FQB/0QqtX5NeXUo1lm9UUN5T+9yrPMuAw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646254941; 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=Drnno4VnFLtPbToNjmzneuITCSewrWEnfgXUqfz8b3M=; b=iaG0qB93aDsTh/Lzy+IGZOzbDR4b0pdf0aR0QuIEICKbAPAjs+f5hF1pGwS9D9B8CX3EUu1D0ZpU+whDoyh11r1I+EujBQfFOxx9+QkkBuU2FopADC5XdZcxCvXXWomL6SmelRaHsTn36aoVIEli4NUVu70S88HTtTGcLK3Osvk= 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 1646254941336164.39901499605605; Wed, 2 Mar 2022 13:02:21 -0800 (PST) Received: from localhost ([::1]:55610 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPW72-0003rq-AO for importer@patchew.org; Wed, 02 Mar 2022 16:02:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43578) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxt-0005s3-9v for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:53 -0500 Received: from [2a00:1450:4864:20::429] (port=45989 helo=mail-wr1-x429.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxr-0008Sq-Jr for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:52 -0500 Received: by mail-wr1-x429.google.com with SMTP id p9so4646503wra.12 for ; Wed, 02 Mar 2022 12:52:51 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Drnno4VnFLtPbToNjmzneuITCSewrWEnfgXUqfz8b3M=; b=KZ69s9sXpbZegzB6sASBbDezN8Ki+Kep2u6cijHbA2LiCnDSZr5aqeMMOZBhXELG4W FDqlCsq3PzRRuz/t2wgsAgJd/3vp1LAvcJvX8DeMTuSbZu/96pggfgnIZTb6HD0WGjHI AwvaikWF1lVfPsClFfN4wD95hbpy4Tj5MGsc604oIqpLFhj3RLOYARhNmcE4LqBBXMiD 6FluAyjiV1kOGO8yC0y1hEPcb6vCSZum4cw64XRZpbFZhV44FiQ1QeA4YRvgF1MV+LPT GGgUCvUj62Nk6ZeTP9WscLPk7QoMI6yJHEaewSTzxqUzWLClpplrCKEhUpfr+zgc522J pXiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Drnno4VnFLtPbToNjmzneuITCSewrWEnfgXUqfz8b3M=; b=Al5hlT2Dn40vaBRqtUIPjbBqE/3+aACD9dT/TTIAwb95WnQGtobbD0GlNWb+kidthS xqlI6ThoBhOXnYfWFuCtaTnCW6DRAkzEJw3R5HvyhzEqp8kKjn+YFg/u9M1m/XnHLENp e2ClQgIV0X7iEhKjswHmIlgOlKq7MS7c/Er+ayZ0N95Hefss1PsLdrt69yWIPLT3CCy+ GBw7mKiWnTbd3mDo3YiRH2zb1HzwvnJ7qWVAUv+H+FvXbqWgFv5Di6DlhU3EVJQFS6pr onw+edowQQ8uokgfOA3To/TlyYcdfQvzxWOyJ8BvC58aK+5ArOfl2Q3Hv0nQJHeFOjHY i5JA== X-Gm-Message-State: AOAM530ILIg7jYPUXFOUMIpL8RzkiqVMuklNooIv5RkhMmVgFBVYFvWi V26wZLzzlEXxbJ9rjCdUgfvEFRC7yKyMoA== X-Google-Smtp-Source: ABdhPJyPDMfJybiLuaWqtmtAPaRhjlv1tWOIkV1wDB3yLCIpEpqe3Mo2qEm3oEndwOvNO16ya1fP9Q== X-Received: by 2002:adf:e6cd:0:b0:1ef:db24:7ad1 with SMTP id y13-20020adfe6cd000000b001efdb247ad1mr10717215wrm.233.1646254370308; Wed, 02 Mar 2022 12:52:50 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 20/26] target/arm: Fix TLBIRange.base for 16k and 64k pages Date: Wed, 2 Mar 2022 20:52:24 +0000 Message-Id: <20220302205230.2122390-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::429 (failed) 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::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x429.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646254942704100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson The shift of the BaseADDR field depends on the translation granule in use. Fixes: 84940ed8255 ("target/arm: Add support for FEAT_TLBIRANGE") Reported-by: Peter Maydell Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-14-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 31c2a716f2a..e455397fb57 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4538,10 +4538,11 @@ static TLBIRange tlbi_aa64_get_range(CPUARMState *e= nv, ARMMMUIdx mmuidx, ret.length =3D (num + 1) << (exponent + page_shift); =20 if (regime_has_2_ranges(mmuidx)) { - ret.base =3D sextract64(value, 0, 37) << TARGET_PAGE_BITS; + ret.base =3D sextract64(value, 0, 37); } else { - ret.base =3D extract64(value, 0, 37) << TARGET_PAGE_BITS; + ret.base =3D extract64(value, 0, 37); } + ret.base <<=3D page_shift; =20 return ret; } --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255360; cv=none; d=zohomail.com; s=zohoarc; b=mr1JBdes6/pFJ7vi56n5wmmJ5lJzibr1ce5u8Mz9XFyHuIGNWnst+0K3GyjTdNyRVwQsMExUFxPQLB3d0niU0ud86djxaJxVhzkNLVxqqf+qktDvOjtPP4RH27b7ynCq0N0s3q+nGmn/DAj1fcF9HGRN4azZxowZQQu0sdxJ77I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255360; 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=SM320yQbplZVI8Mj8lk3kp4hv9BTspAqO+QUiQG4O/o=; b=TxpFaB80r8ZeAlbDoCj4yqmic4UR8iueemJ4E+BQXt0+tNN51Xn323BEsb5m6N3ZekQB0n1r17Lx/goxqa/Ysc8Mpjkvtghn5BKRu01hlVpUeIQHYaog9W86mWuNVPGWAf8C7I2UStabyrcGdBzfUiRNYKJjPnQNbbEgnqbHDpk= 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 1646255360654704.8192774080649; Wed, 2 Mar 2022 13:09:20 -0800 (PST) Received: from localhost ([::1]:44972 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWDo-0007V3-79 for importer@patchew.org; Wed, 02 Mar 2022 16:09:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43618) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxw-0005uD-0P for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:57 -0500 Received: from [2a00:1450:4864:20::42d] (port=39428 helo=mail-wr1-x42d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxs-0008Sw-BY for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:54 -0500 Received: by mail-wr1-x42d.google.com with SMTP id ay10so4678027wrb.6 for ; Wed, 02 Mar 2022 12:52:51 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=SM320yQbplZVI8Mj8lk3kp4hv9BTspAqO+QUiQG4O/o=; b=NkLPESjWQnirCgbc9i98Cr+nsjeG6gDrRGGYyL2TspfsR38laJx8HNldshMrek/mTK 94/U8Z5U6VIMDJrF5a2cQZ2zDza1CgPjBkm/YDhgFmbFkE0VfYjMibQTJvMo9YKRzs1m ALLOiyDhFBIhgZ/0P+JfsuOympSh3Lz18ri8xI9PDvM+T7wP0M5DatXbgwEYQvX0jzfU P9YOUj9ysJtke833yOfBYPkQ++M4Px49fSsBvr3DYrJQ5+3/MOK0hrSa2iyFbP4zI1U0 daQaRngqnl/2OZ0hha+MsNu53bXCRCRUQhTZG2obbh4ZEDyAVoeW+03GWBGlprTgCzUB Ph2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SM320yQbplZVI8Mj8lk3kp4hv9BTspAqO+QUiQG4O/o=; b=mONyRruBvam590Nf4meGGVHTe2Styqj+gxOSMfM4zz8QFnolrwUFU/zeb9fPtwQNnk IIpTn+CW5Qc6PZVlX4Bj38pHIKLZIXmrWodb/Rgl4H2LKgaevTnqZVnhQ2nQT5zlgCIh 0swvotlaiIF1KFWtDn4oQwEirIDepMInL+1C8EvNni34PF+4btBK6DjjRw61qrxNdflY 49cvkPqbbnfxhRo8z5mJ85yVJHkPPfdcbfakEPBLp0EYApiI0wGxDvbnM/CbYAED4nHt gBvcTxud2oJQViK1u5+NI1VFqW3FIM0nChd9KA40GjoNpt9SCBX9gj5heYNoh+SIJSez jARA== X-Gm-Message-State: AOAM532o8iCvnJ2+njfIjfhhvdGNfG+1bm/o2eNvz7WkCuGN4jDHvMpi 4FRt3sUVUoogH4yutKE3RlfAfuLpxlBo5g== X-Google-Smtp-Source: ABdhPJyIkRMcgrKcEhxbLKktKJ9ObPaKURzcQt1I/fNjQuiNDu6UVq07IheOF1W53OJlkSXrDUV1hg== X-Received: by 2002:a5d:64ae:0:b0:1f0:490e:159f with SMTP id m14-20020a5d64ae000000b001f0490e159fmr1387979wrp.143.1646254371103; Wed, 02 Mar 2022 12:52:51 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 21/26] target/arm: Validate tlbi TG matches translation granule in use Date: Wed, 2 Mar 2022 20:52:25 +0000 Message-Id: <20220302205230.2122390-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::42d (failed) 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::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255362714100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson For FEAT_LPA2, we will need other ARMVAParameters, which themselves depend on the translation granule in use. We might as well validate that the given TG matches; the architecture "does not require that the instruction invalidates any entries" if this is not true. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-15-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index e455397fb57..3a7f5cf6f08 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4520,12 +4520,16 @@ static TLBIRange tlbi_aa64_get_range(CPUARMState *e= nv, ARMMMUIdx mmuidx, uint64_t value) { unsigned int page_size_granule, page_shift, num, scale, exponent; + /* Extract one bit to represent the va selector in use. */ + uint64_t select =3D sextract64(value, 36, 1); + ARMVAParameters param =3D aa64_va_parameters(env, select, mmuidx, true= ); TLBIRange ret =3D { }; =20 page_size_granule =3D extract64(value, 46, 2); =20 - if (page_size_granule =3D=3D 0) { - qemu_log_mask(LOG_GUEST_ERROR, "Invalid page size granule %d\n", + /* The granule encoded in value must match the granule in use. */ + if (page_size_granule !=3D (param.using64k ? 3 : param.using16k ? 2 : = 1)) { + qemu_log_mask(LOG_GUEST_ERROR, "Invalid tlbi page size granule %d\= n", page_size_granule); return ret; } @@ -4537,7 +4541,7 @@ static TLBIRange tlbi_aa64_get_range(CPUARMState *env= , ARMMMUIdx mmuidx, =20 ret.length =3D (num + 1) << (exponent + page_shift); =20 - if (regime_has_2_ranges(mmuidx)) { + if (param.select) { ret.base =3D sextract64(value, 0, 37); } else { ret.base =3D extract64(value, 0, 37); --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255979; cv=none; d=zohomail.com; s=zohoarc; b=XbIFwI4+U4E0jL5MgNwFROvs5olfTn//AZfZblUtKFQ528r+bHFGP+P3QE5SN4o+9nIQYCrbD1bwMivepTScZTMEkTnp1wjj5MMTVt7T3KUdsVH/sL5niREYg9hwqT4f86x2YahlonKR6ZEh+VlNRm+fxKFh3PdBV6UcjghYj0E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255979; 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=I6iTHbTYl4zCFK0q1Q7m/0Mob7a5vYQevNvaNiwiXcI=; b=jAY1ri+hNmrU3uuRQc5DIGgYN/JCtLv13GKOxyrv5gAq7/B1i7QCb7L7IIGfJ4fDZsBV7H4O25Bw7nn8GR/IobOpbpJNcvyUWRhV8JYlD7RbFqBu0BDeRAXDb2ZaAVcmpNBl3nSa64VrFgSqQEcdvHQqtOQcXChu7aCr6eN9eF4= 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 1646255979810405.0867771021202; Wed, 2 Mar 2022 13:19:39 -0800 (PST) Received: from localhost ([::1]:42044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWNm-00081E-H3 for importer@patchew.org; Wed, 02 Mar 2022 16:19:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43620) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxw-0005uG-0y for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:57 -0500 Received: from [2a00:1450:4864:20::434] (port=37883 helo=mail-wr1-x434.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxt-00005i-6d for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:55 -0500 Received: by mail-wr1-x434.google.com with SMTP id bk29so4690214wrb.4 for ; Wed, 02 Mar 2022 12:52:52 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=I6iTHbTYl4zCFK0q1Q7m/0Mob7a5vYQevNvaNiwiXcI=; b=RCUOuRjYGzpbgHdUeT4fY9dc5L/d4gkh/GM0Tjb5hBHh56bevqySbncmJZ/++V94D6 Ufrb0iisQmQNzmuyjUlCXrV+8zUM3ykRM8KIexIWx+kXxo6k1PGDSGbB8lrSPwIkHjx9 PySYvR9cIU9tu51MRopuv7msdmiI9qYc9IQlLuEZPzee+lcw9ZPdjMLxtsyOVcYIFwdm dDDBypKH5YTtwo5l/Tfy0C2ovcoFp1sf7ArLc9Tm2aJzXNE8Uy25D5xGeXLPIRsqdHUE SjVdbGvg5weWuSC5J6nRG1gmj9McqrvGrYzP+CVxxQReGt+p05MHBiET54Pc17ElozMl d+Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=I6iTHbTYl4zCFK0q1Q7m/0Mob7a5vYQevNvaNiwiXcI=; b=ypJqB8+tI3zc+oiBmrgO82J1ojY7s8uHBHtI00bPW88eJn3uXpIaotIK15wq8+AzOf RRX+mA0iKKHsEim7d7KUFFROQ+SI3TQeHpj9rRstY5OPTO9IyfKC/ruEZdV+E9gJef8R DfTWOeiqFOsO59I5+qypiIH6ANIojkEbeN1iBXHD/mEAqcj9Ef6Pxtrg4wmi0k5tD6mj ZGNwAtAh9A0mF5SHgJxPEFb16r9gW3e0u9PnB3pXDtdmSOzNMeWja9yEmsLIa1NhzBCm Qkj+RcFnYXTosWdOH3diO3DxvaEld0seYVFosQJMYjoWI+dwW6hy3+dq3F89Vo/oFOQX cxXQ== X-Gm-Message-State: AOAM532Ot8XK/tVJ3jPMkE5C2aDw/8wSXTcYiUSnpkO1Vb0Gn4/IAiBh 7TZqXtM9FxM2q78K+ZMcuMlP2jPHO1eEAQ== X-Google-Smtp-Source: ABdhPJwsZDRQ69pzKQSKyPUixMXVbs7CJkNZqXiMjUH6bA0tNlKfF/B1juMt7aGXSTvtItXcS9OsBw== X-Received: by 2002:adf:d081:0:b0:1ef:9378:b7cc with SMTP id y1-20020adfd081000000b001ef9378b7ccmr16228866wrh.407.1646254371910; Wed, 02 Mar 2022 12:52:51 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 22/26] target/arm: Advertise all page sizes for -cpu max Date: Wed, 2 Mar 2022 20:52:26 +0000 Message-Id: <20220302205230.2122390-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::434 (failed) 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::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x434.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255981075100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson We support 16k pages, but do not advertize that in ID_AA64MMFR0. The value 0 in the TGRAN*_2 fields indicates that stage2 lookups defer to the same support as stage1 lookups. This setting is deprecated, so indicate support for all stage2 page sizes directly. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20220301215958.157011-16-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu64.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index d88662cef68..2fdc16bf182 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -796,6 +796,10 @@ static void aarch64_max_initfn(Object *obj) =20 t =3D cpu->isar.id_aa64mmfr0; t =3D FIELD_DP64(t, ID_AA64MMFR0, PARANGE, 6); /* FEAT_LPA: 52 bits */ + t =3D FIELD_DP64(t, ID_AA64MMFR0, TGRAN16, 1); /* 16k pages supporte= d */ + t =3D FIELD_DP64(t, ID_AA64MMFR0, TGRAN16_2, 2); /* 16k stage2 support= ed */ + t =3D FIELD_DP64(t, ID_AA64MMFR0, TGRAN64_2, 2); /* 64k stage2 support= ed */ + t =3D FIELD_DP64(t, ID_AA64MMFR0, TGRAN4_2, 2); /* 4k stage2 support= ed */ cpu->isar.id_aa64mmfr0 =3D t; =20 t =3D cpu->isar.id_aa64mmfr1; --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646256289; cv=none; d=zohomail.com; s=zohoarc; b=KfmrjrGAGYbNbiInoOMscVy9ss2E60iSpYHu4VvytTZQ05DmTVI6h2XWuU22KZta/5Rx7DGs6C8Mo2vgc2rAukEK8LDu2t/gxE7vdIoa5ADWTd4WcGd8zxRmqP55SlVdYgUHivaf47elS9qLAAlOftcUSSnJhfUvO5uBuVXFMN0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646256289; 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=/7Vp2M9cs0sUqfL04/OQn8hXX+h842EPxz0wSYudyes=; b=b7murqYDNVPt3YpsE2O+a5ob3AOgQCT/FfwezItcuTBS2O6cz/J9elixESJ9/Rklc6C7AF6sxeJNLaxTkqXIhcqDIboDBsgHfyV1WcYckZ/96ecOkayKf3g9iz4H5TBngmGxsfdIaVFoR6t+C1Q2rDMc/oQgG+fnAQa8ZyCxH0w= 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 164625628998050.78215601238344; Wed, 2 Mar 2022 13:24:49 -0800 (PST) Received: from localhost ([::1]:52222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWSm-0006cE-T4 for importer@patchew.org; Wed, 02 Mar 2022 16:24:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43654) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxx-0005uz-R0 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:57 -0500 Received: from [2a00:1450:4864:20::436] (port=37885 helo=mail-wr1-x436.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxv-0000CW-IX for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:57 -0500 Received: by mail-wr1-x436.google.com with SMTP id bk29so4690259wrb.4 for ; Wed, 02 Mar 2022 12:52:53 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=/7Vp2M9cs0sUqfL04/OQn8hXX+h842EPxz0wSYudyes=; b=K5RVJ7KRUEgcbYg0GLwiDe10/prviNiH/5lqscawDpESa4eo1ZfIzyVBT16auJWGVU XUuutO/Wjr312L8/hr8HXSjUvcvM5Q/mDiuOUHrc3w9jvsvI/31KDuPAB5WpqCY0EEgy s64XVsEYawY9yYy5Pz4+1vpbqZ6XXeRMVnkp0kx4nLu7bZowX+SI5cd5m9efb96F2Gh7 wNpfwvYGsQsowU9w/jtI7SypbuaeKOB1DuhZqB0EUIRKp5xtBXFOqJTrzENsv2sA57pd VrsJs3yZ1SimaCSkGjcIosdY0b65zlk8x9xHFqAYHVpAMCQnyvmzoAoa+I4DLtnBkIpM 948g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/7Vp2M9cs0sUqfL04/OQn8hXX+h842EPxz0wSYudyes=; b=8OVTiecCbQFSMLpSwAi8C8fd7+SsMaJU4EMPuYZCthp9W7zf4BFVFQr8o9M58q9iYd Vpl32WZPmUdtQKA+sh8Zkkflyv1JG9mg7yNxdkZ3fj7NJlNXx4TI/Q954b7hCo+zWnzF iB50IlbioEjNwGVewr/foaOv9RlPO2YuBDygyWG15h0MPwO6AOZt9BdlLHNnuGyn2K+7 j/+SjgOQIF8COZ+q84+MQcHZ1nVXdi9tLuVe1xFkJEbCPXlmwPd3rmvuuEddOGn37uqj yXciYYSnRN+iisFmbuhEZdsNHc7Zkh/zOUYTdITlD+zlROua35j//Ky1EkhPu47nmCAe SQOg== X-Gm-Message-State: AOAM530R9sQigH+AnwUWd6AZCZHslk+TixS+PFeXpPaUhSBV9SAahyy+ irZG/CR3RcjCVqdVSqPC29KvqZuYK/r35Q== X-Google-Smtp-Source: ABdhPJyWHKl1IAZoXiwxCbOiJm1z25NXPPwGNLyVSb4dBG1D7IG41UtisiPAr+qxatkOslNvjQCzqA== X-Received: by 2002:a05:6000:1882:b0:1f0:4c38:6d55 with SMTP id a2-20020a056000188200b001f04c386d55mr412663wri.483.1646254372845; Wed, 02 Mar 2022 12:52:52 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 23/26] target/arm: Implement FEAT_LPA2 Date: Wed, 2 Mar 2022 20:52:27 +0000 Message-Id: <20220302205230.2122390-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::436 (failed) 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::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x436.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646256292454100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This feature widens physical addresses (and intermediate physical addresses for 2-stage translation) from 48 to 52 bits, when using 4k or 16k pages. This introduces the DS bit to TCR_ELx, which is RES0 unless the page size is enabled and supports LPA2, resulting in the effective value of DS for a given table walk. The DS bit changes the format of the page table descriptor slightly, moving the PS field out to TCR so that all pages have the same sharability and repurposing those bits of the page table descriptor for the highest bits of the output address. Do not yet enable FEAT_LPA2; we need extra plumbing to avoid tickling an old kernel bug. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20220301215958.157011-17-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + target/arm/cpu.h | 22 ++++++++ target/arm/internals.h | 2 + target/arm/helper.c | 102 +++++++++++++++++++++++++++++----- 4 files changed, 112 insertions(+), 15 deletions(-) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 0053ddce208..520fd39071e 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -25,6 +25,7 @@ the following architecture extensions: - FEAT_JSCVT (JavaScript conversion instructions) - FEAT_LOR (Limited ordering regions) - FEAT_LPA (Large Physical Address space) +- FEAT_LPA2 (Large Physical and virtual Address space v2) - FEAT_LRCPC (Load-acquire RCpc instructions) - FEAT_LRCPC2 (Load-acquire RCpc instructions v2) - FEAT_LSE (Large System Extensions) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index c52d56f6699..24d9fff1705 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -4284,6 +4284,28 @@ static inline bool isar_feature_aa64_i8mm(const ARMI= SARegisters *id) return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, I8MM) !=3D 0; } =20 +static inline bool isar_feature_aa64_tgran4_lpa2(const ARMISARegisters *id) +{ + return FIELD_SEX64(id->id_aa64mmfr0, ID_AA64MMFR0, TGRAN4) >=3D 1; +} + +static inline bool isar_feature_aa64_tgran4_2_lpa2(const ARMISARegisters *= id) +{ + unsigned t =3D FIELD_EX64(id->id_aa64mmfr0, ID_AA64MMFR0, TGRAN4_2); + return t >=3D 3 || (t =3D=3D 0 && isar_feature_aa64_tgran4_lpa2(id)); +} + +static inline bool isar_feature_aa64_tgran16_lpa2(const ARMISARegisters *i= d) +{ + return FIELD_EX64(id->id_aa64mmfr0, ID_AA64MMFR0, TGRAN16) >=3D 2; +} + +static inline bool isar_feature_aa64_tgran16_2_lpa2(const ARMISARegisters = *id) +{ + unsigned t =3D FIELD_EX64(id->id_aa64mmfr0, ID_AA64MMFR0, TGRAN16_2); + return t >=3D 3 || (t =3D=3D 0 && isar_feature_aa64_tgran16_lpa2(id)); +} + static inline bool isar_feature_aa64_ccidx(const ARMISARegisters *id) { return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, CCIDX) !=3D 0; diff --git a/target/arm/internals.h b/target/arm/internals.h index 00af41d7925..a34be2e4595 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1056,6 +1056,7 @@ static inline uint32_t aarch64_pstate_valid_mask(cons= t ARMISARegisters *id) typedef struct ARMVAParameters { unsigned tsz : 8; unsigned ps : 3; + unsigned sh : 2; unsigned select : 1; bool tbi : 1; bool epd : 1; @@ -1063,6 +1064,7 @@ typedef struct ARMVAParameters { bool using16k : 1; bool using64k : 1; bool tsz_oob : 1; /* tsz has been clamped to legal range */ + bool ds : 1; } ARMVAParameters; =20 ARMVAParameters aa64_va_parameters(CPUARMState *env, uint64_t va, diff --git a/target/arm/helper.c b/target/arm/helper.c index 3a7f5cf6f08..088956eecf0 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4546,6 +4546,14 @@ static TLBIRange tlbi_aa64_get_range(CPUARMState *en= v, ARMMMUIdx mmuidx, } else { ret.base =3D extract64(value, 0, 37); } + if (param.ds) { + /* + * With DS=3D1, BaseADDR is always shifted 16 so that it is able + * to address all 52 va bits. The input address is perforce + * aligned on a 64k boundary regardless of translation granule. + */ + page_shift =3D 16; + } ret.base <<=3D page_shift; =20 return ret; @@ -11081,8 +11089,13 @@ static bool check_s2_mmu_setup(ARMCPU *cpu, bool i= s_aa64, int level, const int grainsize =3D stride + 3; int startsizecheck; =20 - /* Negative levels are never allowed. */ - if (level < 0) { + /* + * Negative levels are usually not allowed... + * Except for FEAT_LPA2, 4k page table, 52-bit address space, which + * begins with level -1. Note that previous feature tests will have + * eliminated this combination if it is not enabled. + */ + if (level < (inputsize =3D=3D 52 && stride =3D=3D 9 ? -1 : 0)) { return false; } =20 @@ -11223,8 +11236,9 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, ARMMMUIdx mmu_idx, bool data) { uint64_t tcr =3D regime_tcr(env, mmu_idx)->raw_tcr; - bool epd, hpd, using16k, using64k, tsz_oob; - int select, tsz, tbi, max_tsz, min_tsz, ps; + bool epd, hpd, using16k, using64k, tsz_oob, ds; + int select, tsz, tbi, max_tsz, min_tsz, ps, sh; + ARMCPU *cpu =3D env_archcpu(env); =20 if (!regime_has_2_ranges(mmu_idx)) { select =3D 0; @@ -11238,7 +11252,9 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, hpd =3D extract32(tcr, 24, 1); } epd =3D false; + sh =3D extract32(tcr, 12, 2); ps =3D extract32(tcr, 16, 3); + ds =3D extract64(tcr, 32, 1); } else { /* * Bit 55 is always between the two regions, and is canonical for @@ -11248,6 +11264,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, if (!select) { tsz =3D extract32(tcr, 0, 6); epd =3D extract32(tcr, 7, 1); + sh =3D extract32(tcr, 12, 2); using64k =3D extract32(tcr, 14, 1); using16k =3D extract32(tcr, 15, 1); hpd =3D extract64(tcr, 41, 1); @@ -11257,24 +11274,51 @@ ARMVAParameters aa64_va_parameters(CPUARMState *e= nv, uint64_t va, using64k =3D tg =3D=3D 3; tsz =3D extract32(tcr, 16, 6); epd =3D extract32(tcr, 23, 1); + sh =3D extract32(tcr, 28, 2); hpd =3D extract64(tcr, 42, 1); } ps =3D extract64(tcr, 32, 3); + ds =3D extract64(tcr, 59, 1); } =20 - if (cpu_isar_feature(aa64_st, env_archcpu(env))) { + if (cpu_isar_feature(aa64_st, cpu)) { max_tsz =3D 48 - using64k; } else { max_tsz =3D 39; } =20 + /* + * DS is RES0 unless FEAT_LPA2 is supported for the given page size; + * adjust the effective value of DS, as documented. + */ min_tsz =3D 16; if (using64k) { - if (cpu_isar_feature(aa64_lva, env_archcpu(env))) { + if (cpu_isar_feature(aa64_lva, cpu)) { + min_tsz =3D 12; + } + ds =3D false; + } else if (ds) { + switch (mmu_idx) { + case ARMMMUIdx_Stage2: + case ARMMMUIdx_Stage2_S: + if (using16k) { + ds =3D cpu_isar_feature(aa64_tgran16_2_lpa2, cpu); + } else { + ds =3D cpu_isar_feature(aa64_tgran4_2_lpa2, cpu); + } + break; + default: + if (using16k) { + ds =3D cpu_isar_feature(aa64_tgran16_lpa2, cpu); + } else { + ds =3D cpu_isar_feature(aa64_tgran4_lpa2, cpu); + } + break; + } + if (ds) { min_tsz =3D 12; } } - /* TODO: FEAT_LPA2 */ =20 if (tsz > max_tsz) { tsz =3D max_tsz; @@ -11296,6 +11340,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, return (ARMVAParameters) { .tsz =3D tsz, .ps =3D ps, + .sh =3D sh, .select =3D select, .tbi =3D tbi, .epd =3D epd, @@ -11303,6 +11348,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env= , uint64_t va, .using16k =3D using16k, .using64k =3D using64k, .tsz_oob =3D tsz_oob, + .ds =3D ds, }; } =20 @@ -11528,10 +11574,19 @@ static bool get_phys_addr_lpae(CPUARMState *env, = uint64_t address, * VTCR_EL2.SL0 field (whose interpretation depends on the page si= ze) */ uint32_t sl0 =3D extract32(tcr->raw_tcr, 6, 2); + uint32_t sl2 =3D extract64(tcr->raw_tcr, 33, 1); uint32_t startlevel; bool ok; =20 - if (!aarch64 || stride =3D=3D 9) { + /* SL2 is RES0 unless DS=3D1 & 4kb granule. */ + if (param.ds && stride =3D=3D 9 && sl2) { + if (sl0 !=3D 0) { + level =3D 0; + fault_type =3D ARMFault_Translation; + goto do_fault; + } + startlevel =3D -1; + } else if (!aarch64 || stride =3D=3D 9) { /* AArch32 or 4KB pages */ startlevel =3D 2 - sl0; =20 @@ -11585,10 +11640,12 @@ static bool get_phys_addr_lpae(CPUARMState *env, = uint64_t address, * for both v7 and v8. However, for v8 the SBZ bits [47:40] must be 0 * or an AddressSize fault is raised. So for v8 we extract those SBZ * bits as part of the address, which will be checked via outputsize. - * For AArch64, the address field always goes up to bit 47 (with extra - * bits for FEAT_LPA placed elsewhere). AArch64 implies v8. + * For AArch64, the address field goes up to bit 47, or 49 with FEAT_L= PA2; + * the highest bits of a 52-bit output are placed elsewhere. */ - if (arm_feature(env, ARM_FEATURE_V8)) { + if (param.ds) { + descaddrmask =3D MAKE_64BIT_MASK(0, 50); + } else if (arm_feature(env, ARM_FEATURE_V8)) { descaddrmask =3D MAKE_64BIT_MASK(0, 48); } else { descaddrmask =3D MAKE_64BIT_MASK(0, 40); @@ -11623,11 +11680,16 @@ static bool get_phys_addr_lpae(CPUARMState *env, = uint64_t address, =20 /* * For FEAT_LPA and PS=3D6, bits [51:48] of descaddr are in [15:12] - * of descriptor. Otherwise, if descaddr is out of range, raise - * AddressSizeFault. + * of descriptor. For FEAT_LPA2 and effective DS, bits [51:50] of + * descaddr are in [9:8]. Otherwise, if descaddr is out of range, + * raise AddressSizeFault. */ if (outputsize > 48) { - descaddr |=3D extract64(descriptor, 12, 4) << 48; + if (param.ds) { + descaddr |=3D extract64(descriptor, 8, 2) << 50; + } else { + descaddr |=3D extract64(descriptor, 12, 4) << 48; + } } else if (descaddr >> outputsize) { fault_type =3D ARMFault_AddressSize; goto do_fault; @@ -11721,7 +11783,17 @@ static bool get_phys_addr_lpae(CPUARMState *env, u= int64_t address, assert(attrindx <=3D 7); cacheattrs->attrs =3D extract64(mair, attrindx * 8, 8); } - cacheattrs->shareability =3D extract32(attrs, 6, 2); + + /* + * For FEAT_LPA2 and effective DS, the SH field in the attributes + * was re-purposed for output address bits. The SH attribute in + * that case comes from TCR_ELx, which we extracted earlier. + */ + if (param.ds) { + cacheattrs->shareability =3D param.sh; + } else { + cacheattrs->shareability =3D extract32(attrs, 6, 2); + } =20 *phys_ptr =3D descaddr; *page_size_ptr =3D page_size; --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255241; cv=none; d=zohomail.com; s=zohoarc; b=RyJXyDvRrFgSGV6KDDYeFxngj984z2o5tY0aMs7aq8wJbA7fl1b5Gf104XGIs/mwzxx1BNDI0K9B+Qs16BmaKfkSuRPaZ3rNQmauQaLrzyixGfEApNlyuaIG/bB5NQc+wKP/2JsTkcicKIAUIfWWfz+8hOSeTfRES7wD4REFFU4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255241; 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=l/7EADgfQiDC7fxjtgYtq9X1xBlDjXtx1HGr/ZG8QYc=; b=AwhIXiaQf00CFTcWzkHongdvnxznMBLhvh7krwoW7vpLeaqpxkZzzX+n2nF2nlMlx0Q9XlGeGjKXgK+v5a46jU/RZtHuCJUv0MjchW0rXB82H/Yjw4lhjyfP8+ODwhjtz8SDc/6QLiROYzFEPFI9oecdDHoHpI6wyJTscOlPgbE= 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 1646255241376373.3778717335042; Wed, 2 Mar 2022 13:07:21 -0800 (PST) Received: from localhost ([::1]:36394 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWBs-0001g4-B7 for importer@patchew.org; Wed, 02 Mar 2022 16:07:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxx-0005uQ-9m for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:57 -0500 Received: from [2a00:1450:4864:20::432] (port=39433 helo=mail-wr1-x432.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxv-0000Gf-N3 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:57 -0500 Received: by mail-wr1-x432.google.com with SMTP id ay10so4678133wrb.6 for ; Wed, 02 Mar 2022 12:52:54 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=l/7EADgfQiDC7fxjtgYtq9X1xBlDjXtx1HGr/ZG8QYc=; b=ykA8VvGEZIbRQh0Vi4Uq1gtgxTDH+GkvZ1QU+QaoqxYAdV0woIaIqd6yplmeaEhQzB 2cTuETVow8yU+xPlzgfKgYVlkfuFJ7zlrOIjTOUFGP1Ts0w6ux0yjg8EjpGhle7zrst/ r1jRZV091MBlsfiaJLF1tnoNeGOmdVswVrzl5cc4yDevARqCe82hmS4+WSY5UQo133tB w18Qdtp3sHmJBdt6hHBqmDhc9BihFMzskMDuEBKpNMSNsHJP11EW8REwYUU3MsDsBKiS 6KKyXDkYt61b8AVfoJeCvEkIS4L3PAteu/c014cpghmow4xk1F0cEfuJL7MfObLPKZTn zpDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=l/7EADgfQiDC7fxjtgYtq9X1xBlDjXtx1HGr/ZG8QYc=; b=20CnyfCBql/Kw5hmS0Vg9+ZPPZ4vpFsls4n5JWZrqpu92nO1+KNkj/xhG9j5dtsrFR ARPhhLOOhSiffaZmg9SdfxUpVLn/l2xoFUewcupmmN1bcPbvMhkHIdYOdLRqq1xMfL72 ePnSdOIhdanJ6vZC0hb8yvDXLaW1Vr1V5hwU/LFUDjEpUevY9ooVNvst6Oq5UAJMk5Xa QffngxQ3DxKlW2Nv+c4KWc0AX/gQPxRnVn2XEzyS+guOerVMxoIoeTshC996xLERHgbk 0VjsAm5YiPvygWKmbWQXL7Vv4yyzW0xAfXImiH7AIgZsARX5AKo3n3nT/AwKTvs0XTSL OdoQ== X-Gm-Message-State: AOAM531kodsQfozJGNpN1G2FrF2C4lEXmH9zEkOu+WiwlMFOn489p1pE fm4j5WEoEVzwM2HhYFHDWrLQJ9cCBSdX8g== X-Google-Smtp-Source: ABdhPJyzCsr4K9z9y1NlrJ6NMMar5gMDWu/F7yXwEz+8zCutbURpb/n6OROqGaf5oX7Molaq6mFeBQ== X-Received: by 2002:a5d:5302:0:b0:1ed:e1d2:f0fd with SMTP id e2-20020a5d5302000000b001ede1d2f0fdmr24853768wrv.585.1646254373706; Wed, 02 Mar 2022 12:52:53 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 24/26] target/arm: Report KVM's actual PSCI version to guest in dtb Date: Wed, 2 Mar 2022 20:52:28 +0000 Message-Id: <20220302205230.2122390-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::432 (failed) 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::432; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x432.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255243710100001 Content-Type: text/plain; charset="utf-8" When we're using KVM, the PSCI implementation is provided by the kernel, but QEMU has to tell the guest about it via the device tree. Currently we look at the KVM_CAP_ARM_PSCI_0_2 capability to determine if the kernel is providing at least PSCI 0.2, but if the kernel provides a newer version than that we will still only tell the guest it has PSCI 0.2. (This is fairly harmless; it just means the guest won't use newer parts of the PSCI API.) The kernel exposes the specific PSCI version it is implementing via the ONE_REG API; use this to report in the dtb that the PSCI implementation is 1.0-compatible if appropriate. (The device tree binding currently only distinguishes "pre-0.2", "0.2-compatible" and "1.0-compatible".) Signed-off-by: Peter Maydell Reviewed-by: Marc Zyngier Reviewed-by: Akihiko Odaki Reviewed-by: Richard Henderson Reviewed-by: Andrew Jones Message-id: 20220224134655.1207865-1-peter.maydell@linaro.org --- target/arm/kvm-consts.h | 1 + hw/arm/boot.c | 5 ++--- target/arm/kvm64.c | 12 ++++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h index e770921ddc2..faacf96fdc7 100644 --- a/target/arm/kvm-consts.h +++ b/target/arm/kvm-consts.h @@ -95,6 +95,7 @@ MISMATCH_CHECK(QEMU_PSCI_1_0_FN_PSCI_FEATURES, PSCI_1_0_F= N_PSCI_FEATURES); =20 #define QEMU_PSCI_VERSION_0_1 0x00001 #define QEMU_PSCI_VERSION_0_2 0x00002 +#define QEMU_PSCI_VERSION_1_0 0x10000 #define QEMU_PSCI_VERSION_1_1 0x10001 =20 MISMATCH_CHECK(QEMU_PSCI_0_2_RET_TOS_MIGRATION_NOT_REQUIRED, PSCI_0_2_TOS_= MP); diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 0eeef94ceb5..a47f38dfc90 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -488,9 +488,8 @@ static void fdt_add_psci_node(void *fdt) } =20 qemu_fdt_add_subnode(fdt, "/psci"); - if (armcpu->psci_version =3D=3D QEMU_PSCI_VERSION_0_2 || - armcpu->psci_version =3D=3D QEMU_PSCI_VERSION_1_1) { - if (armcpu->psci_version =3D=3D QEMU_PSCI_VERSION_0_2) { + if (armcpu->psci_version >=3D QEMU_PSCI_VERSION_0_2) { + if (armcpu->psci_version < QEMU_PSCI_VERSION_1_0) { const char comp[] =3D "arm,psci-0.2\0arm,psci"; qemu_fdt_setprop(fdt, "/psci", "compatible", comp, sizeof(comp= )); } else { diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c index 64d48bfb19d..ccadfbbe72b 100644 --- a/target/arm/kvm64.c +++ b/target/arm/kvm64.c @@ -849,6 +849,7 @@ int kvm_arch_init_vcpu(CPUState *cs) uint64_t mpidr; ARMCPU *cpu =3D ARM_CPU(cs); CPUARMState *env =3D &cpu->env; + uint64_t psciver; =20 if (cpu->kvm_target =3D=3D QEMU_KVM_ARM_TARGET_NONE || !object_dynamic_cast(OBJECT(cpu), TYPE_AARCH64_CPU)) { @@ -904,6 +905,17 @@ int kvm_arch_init_vcpu(CPUState *cs) } } =20 + /* + * KVM reports the exact PSCI version it is implementing via a + * special sysreg. If it is present, use its contents to determine + * what to report to the guest in the dtb (it is the PSCI version, + * in the same 15-bits major 16-bits minor format that PSCI_VERSION + * returns). + */ + if (!kvm_get_one_reg(cs, KVM_REG_ARM_PSCI_VERSION, &psciver)) { + cpu->psci_version =3D psciver; + } + /* * When KVM is in use, PSCI is emulated in-kernel and not by qemu. * Currently KVM has its own idea about MPIDR assignment, so we --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646255355; cv=none; d=zohomail.com; s=zohoarc; b=Yh+TEKJ3E5KF0bwPETNbgVDkLzI+yFaZt+SDxSSshgb4yU93VssGM3xiNhm9yyN2eBv0YTpb+gkIf2B5EqtIf+OugqSdXqXLDlYnFpcOXXG4bXkmIJBGZyr0QWuiZHNxxW5aZbuczayWCiCOdIOM4YGssRUVdlB1JPZAxXCN8Hs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646255355; 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=1SN1vpTnpt9IXjnMGc+qCvooXM94wtAW18+rqDaYSkU=; b=HoEWtyxLKYaxKuB6K1smFcWOkBkL2dQsnodhGjbbPlUX6h4vWK2OiGgDQtdjDIJN44K0Ki8EvjiOg6h5PNUIoI9BoteNQAnR0P7/wJEQUnXewbZVXEYOQ7y8tLAThRE5y46necu85SwaXt2XSRxirdJKiE7bojiZ//shYLLp8n0= 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 1646255355522230.64900469027828; Wed, 2 Mar 2022 13:09:15 -0800 (PST) Received: from localhost ([::1]:44700 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWDi-0007JG-S1 for importer@patchew.org; Wed, 02 Mar 2022 16:09:14 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43666) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxy-0005wy-JN for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:59 -0500 Received: from [2a00:1450:4864:20::429] (port=35378 helo=mail-wr1-x429.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxv-0000KD-Op for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:58 -0500 Received: by mail-wr1-x429.google.com with SMTP id b5so4701948wrr.2 for ; Wed, 02 Mar 2022 12:52:55 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=1SN1vpTnpt9IXjnMGc+qCvooXM94wtAW18+rqDaYSkU=; b=riUauh981Zz6b2WCAUQAH5DN/wmGtrFDAP1w9CdtZFPpimM/vM7livDbVOdbgQxP5y NECGviyQucRbQ45mAUDqdXDBJk802+NJ1m0BFwAuWcmr4oloGHHzQAC2oI0qLB+ejBvM a/UPwVIxPGcZEnZwdZDa4PH0ZZzijeCY9sCYvuXn2MQ9cHQV6Qm6H2JfozNmFDO8VaTW +jr/RcjqkD9lIu5zmwT5l9KIxuSLxlLyK0IpMA2nblZHhM4S+H+2flqjZ9kfvnpXzs8D CMu4Nd45QnIS9B5G/ZRObkz0+I1Iy6xbIhOGW4BDlWPF1d0Q3AVPM9YiDsnvLHRd9ukf 8SjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1SN1vpTnpt9IXjnMGc+qCvooXM94wtAW18+rqDaYSkU=; b=T9UclQSLgE9ylZ8Cj1MlE7b2iI2hw3PPn6MfDYTG7jFZ4hNFRqO9Azh0kTHC76LNjo f4EGCtgFBbQGGUqFuxudYIJKW2WFOe3LnXoIxrK+7UT64pA/5rMY0KBwcQVGcD1PwNmC dTfZNqRuNyk18U++r8llb5jWO+catfsI+XDHZT8z/xzGKF8GwvH01KUTaqOWghCiRPkT kW5aqNq6OYzRnMvA8r0H3HKl/0X0te2VKfP24VjH59MePn9Ta7AUXXnPKlc8lT2QBtsH dvQkuotl7MV8tEScaGXUp6jMzCs80XmV4dPG9bQnvoIgd8h2ZTadU0WTRAsMBgDsEwu+ HQnw== X-Gm-Message-State: AOAM531mhDq1zzQx0cRpfiyY/zh1glN+EpWkdOoB9H2aBwk0A+pEsoot QXfinfwoN672N6eBGVRpkLMoScB+VUrzAA== X-Google-Smtp-Source: ABdhPJwoByr6z8mxSj78/WzWj1t/lVcXhYcHk5YriKVLHdVYqJ9H9dJF7BOp8yGmyEeBpuvdHeyTew== X-Received: by 2002:adf:a551:0:b0:1f0:23fd:6f11 with SMTP id j17-20020adfa551000000b001f023fd6f11mr5041316wrb.7.1646254374492; Wed, 02 Mar 2022 12:52:54 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 25/26] ui/cocoa.m: Fix updateUIInfo threading issues Date: Wed, 2 Mar 2022 20:52:29 +0000 Message-Id: <20220302205230.2122390-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::429 (failed) 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::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x429.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646255356620100003 Content-Type: text/plain; charset="utf-8" The updateUIInfo method makes Cocoa API calls. It also calls back into QEMU functions like dpy_set_ui_info(). To do this safely, we need to follow two rules: * Cocoa API calls are made on the Cocoa UI thread * When calling back into QEMU we must hold the iothread lock Fix the places where we got this wrong, by taking the iothread lock while executing updateUIInfo, and moving the call in cocoa_switch() inside the dispatch_async block. Some of the Cocoa UI methods which call updateUIInfo are invoked as part of the initial application startup, while we're still doing the little cross-thread dance described in the comment just above call_qemu_main(). This meant they were calling back into the QEMU UI layer before we'd actually finished initializing our display and registered the DisplayChangeListener, which isn't really valid. Once updateUIInfo takes the iothread lock, we no longer get away with this, because during this startup phase the iothread lock is held by the QEMU main-loop thread which is waiting for us to finish our display initialization. So we must suppress updateUIInfo until applicationDidFinishLaunching allows the QEMU main-loop thread to continue. Signed-off-by: Peter Maydell Reviewed-by: Akihiko Odaki Tested-by: Akihiko Odaki Message-id: 20220224101330.967429-2-peter.maydell@linaro.org --- ui/cocoa.m | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index a8f1cdaf926..5ed1495552a 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -522,8 +522,9 @@ QemuCocoaView *cocoaView; } } =20 -- (void) updateUIInfo +- (void) updateUIInfoLocked { + /* Must be called with the iothread lock, i.e. via updateUIInfo */ NSSize frameSize; QemuUIInfo info; =20 @@ -554,6 +555,25 @@ QemuCocoaView *cocoaView; dpy_set_ui_info(dcl.con, &info, TRUE); } =20 +- (void) updateUIInfo +{ + if (!allow_events) { + /* + * Don't try to tell QEMU about UI information in the application + * startup phase -- we haven't yet registered dcl with the QEMU UI + * layer, and also trying to take the iothread lock would deadlock. + * When cocoa_display_init() does register the dcl, the UI layer + * will call cocoa_switch(), which will call updateUIInfo, so + * we don't lose any information here. + */ + return; + } + + with_iothread_lock(^{ + [self updateUIInfoLocked]; + }); +} + - (void)viewDidMoveToWindow { [self updateUIInfo]; @@ -1985,8 +2005,6 @@ static void cocoa_switch(DisplayChangeListener *dcl, =20 COCOA_DEBUG("qemu_cocoa: cocoa_switch\n"); =20 - [cocoaView updateUIInfo]; - // The DisplaySurface will be freed as soon as this callback returns. // We take a reference to the underlying pixman image here so it does // not disappear from under our feet; the switchSurface method will @@ -1994,6 +2012,7 @@ static void cocoa_switch(DisplayChangeListener *dcl, pixman_image_ref(image); =20 dispatch_async(dispatch_get_main_queue(), ^{ + [cocoaView updateUIInfo]; [cocoaView switchSurface:image]; }); [pool release]; --=20 2.25.1 From nobody Wed May 15 16:12:32 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=1646256410; cv=none; d=zohomail.com; s=zohoarc; b=iPKsy1BAj9o2zFIHQR4wWtt0tNas5O0AGVubWzxTVHmekbwzjW6Vqi1mqCdc0i3p0WjfJG5XYXOttDqSas/5A4A+9aAp0AFV3l+YU5xGoQiLF5QpQQr7dQds5YrX86wdPoQlz5Ud52QtdXI1D881MNfBN/PR8cR99/h5GqXLPJ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1646256410; 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=CZ5TYYnUc0e1hEuIV2ZzXVXaht7eB3zPn5/u5sClZ4M=; b=IH34P02kUB0Pecil+Lc+IhILr/+MVoVLerqYpIovxpYe7gDRXSo5k+NaR/rO8k3F0+oicBDddvOQ1tANxXNACfbXdsDQ8rNCvGJDK+GF/0/E5QrEolOn0LWu7MFD+LHCFKbhte6YDH9FLmVzntCStHjU3yNzduGeTzYturSUkI8= 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 1646256410771251.34154909934068; Wed, 2 Mar 2022 13:26:50 -0800 (PST) Received: from localhost ([::1]:54440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPWUj-0008Mn-Dq for importer@patchew.org; Wed, 02 Mar 2022 16:26:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43668) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPVxy-0005x0-N3 for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:59 -0500 Received: from [2a00:1450:4864:20::436] (port=43959 helo=mail-wr1-x436.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPVxw-0000KJ-Oe for qemu-devel@nongnu.org; Wed, 02 Mar 2022 15:52:58 -0500 Received: by mail-wr1-x436.google.com with SMTP id m6so4661565wrr.10 for ; Wed, 02 Mar 2022 12:52:56 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id x13-20020adfec0d000000b001e31279cc38sm90801wrn.11.2022.03.02.12.52.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Mar 2022 12:52:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=CZ5TYYnUc0e1hEuIV2ZzXVXaht7eB3zPn5/u5sClZ4M=; b=OscOzPwP9qe7eauvOc3CFg/XInvmSXqzaIDR+fcOWX0L/96Xtn9XOg+mO1ebR70ZNe 6OFuQDSdsO/MbH7x4ZcZuHOxCUDZ77fT6W2jA7nd4HKohmee2ZEAHJvCuYnryvJ+5yut CFWC96qpIb3TDYAC1+qzmQDGqTw/TbJ1/GchBYofIub1XsTwv6sqBUiFXcpSY63qc46z acwanGqrZvh/NsMCuwfegRCXubmDsCVuo3vWNUk7VTwUu6v74VCM2pNYsbRSUWKB4hYx CcxWDv3nwv7B1ulJUP3MHA9OE/O8Ctu8W9CBTlmNUtv1TUh8HrpeEMADATeCjuM8kVom rx5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CZ5TYYnUc0e1hEuIV2ZzXVXaht7eB3zPn5/u5sClZ4M=; b=vPBtc5SlqwaQATz/htTmoDYJ2bIRr7m9TMQfmKql2zD9RL89dhnuCTklkJSe7HaoUd F74H3bCTv6hk+SofP8zseKJhhA2EIgNxaPr153CNHpxhM/RZ9fP5EyvLoEnYrouwSamj xCVgKCRlR89of2Qh5Rc31RcMa4WKeGEbARDpxMF3VwjgpM1weZIQ7Ye5sWtAv0HrXUiN HT7RvC+tr1T2BVBcqlQ8emD4bD3WXVhSdfDld6l1nXOab9xUv20el/dgKPa/nJtUGE6T WqrKhr2ZSWOH0kBeirUe0GUKC8qeItLtsfwlDUFWMzltbf/Wm0zhAWb65pFgaOLuWemW YIdA== X-Gm-Message-State: AOAM533lSn5Fq4RcEnq9mxx1kIzCawtfCO/uMPTV9kD/luivTTvYRlG2 WoLwk/v2TENZFz/Or4sc6+F/RODAyM7GuA== X-Google-Smtp-Source: ABdhPJyEjlrH7kAFeFDKvqMGXOLDmIUciiRxdTJarZZxVmeQ2IsZKVAzWprd4BAHwfBFjwtQ0kv23A== X-Received: by 2002:a5d:64e7:0:b0:1e4:bb8b:d3eb with SMTP id g7-20020a5d64e7000000b001e4bb8bd3ebmr24247776wri.403.1646254375510; Wed, 02 Mar 2022 12:52:55 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 26/26] ui/cocoa.m: Remove unnecessary NSAutoreleasePools Date: Wed, 2 Mar 2022 20:52:30 +0000 Message-Id: <20220302205230.2122390-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302205230.2122390-1-peter.maydell@linaro.org> References: <20220302205230.2122390-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a00:1450:4864:20::436 (failed) 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::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x436.google.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 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, PDS_HP_HELO_NORDNS=0.659, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1646256413128100001 Content-Type: text/plain; charset="utf-8" In commit 6e657e64cdc478 in 2013 we added some autorelease pools to deal with complaints from macOS when we made calls into Cocoa from threads that didn't have automatically created autorelease pools. Later on, macOS got stricter about forbidding cross-thread Cocoa calls, and in commit 5588840ff77800e839d8 we restructured the code to avoid them. This left the autorelease pool creation in several functions without any purpose; delete it. We still need the pool in cocoa_refresh() for the clipboard related code which is called directly there. Signed-off-by: Peter Maydell Reviewed-by: Akihiko Odaki Tested-by: Akihiko Odaki Message-id: 20220224101330.967429-3-peter.maydell@linaro.org --- ui/cocoa.m | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index 5ed1495552a..b6e70e9134d 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -1976,8 +1976,6 @@ int main (int argc, char **argv) { static void cocoa_update(DisplayChangeListener *dcl, int x, int y, int w, int h) { - NSAutoreleasePool * pool =3D [[NSAutoreleasePool alloc] init]; - COCOA_DEBUG("qemu_cocoa: cocoa_update\n"); =20 dispatch_async(dispatch_get_main_queue(), ^{ @@ -1993,14 +1991,11 @@ static void cocoa_update(DisplayChangeListener *dcl, } [cocoaView setNeedsDisplayInRect:rect]; }); - - [pool release]; } =20 static void cocoa_switch(DisplayChangeListener *dcl, DisplaySurface *surface) { - NSAutoreleasePool * pool =3D [[NSAutoreleasePool alloc] init]; pixman_image_t *image =3D surface->image; =20 COCOA_DEBUG("qemu_cocoa: cocoa_switch\n"); @@ -2015,7 +2010,6 @@ static void cocoa_switch(DisplayChangeListener *dcl, [cocoaView updateUIInfo]; [cocoaView switchSurface:image]; }); - [pool release]; } =20 static void cocoa_refresh(DisplayChangeListener *dcl) --=20 2.25.1