From nobody Mon Feb 9 07:56:02 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1666879776; cv=none; d=zohomail.com; s=zohoarc; b=l7BE6AivNAFWuBBhMLNEw3G6QP6to9gBOyaMi9K9AU3UoJNzxE4ZHfSHYr3kj9lHMGj9+ikirR0GDQg/Gen2bdOkJq2oLWuKPuHVUF1DPqYH3nVWuE/EuaYQ6d4tldDPz31fH/U8EUmDpFKZm86wAhayUrdiukj40u+pqz0u1s4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666879776; h=Content-Transfer-Encoding:Cc: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=sxsG7XqK7FJahGsD3iXOduO+aSm9dtXBlxQk+S7kf6c=; b=FT6aj7M2OO4GrMnzgQ9ebsERLNrs2DtoStavFWgqTI0/dI5x8no4GOYuzJROmvZEht6hRozU2xURD7p+wOUJVPvuPuw7D5Vp4PpjN0Awc2I2hDBPpG0Fj/GgkIZxeRCEmA7bh4Iy9JjaOBJKdGP+bXkgeCLUH8YTyYEVVVzLD9E= 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 1666879776688907.2124652366697; Thu, 27 Oct 2022 07:09:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oo3Sb-0007CF-Bt; Thu, 27 Oct 2022 10:02:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oo3SZ-000724-Ow for qemu-devel@nongnu.org; Thu, 27 Oct 2022 10:02:15 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oo3SY-0004yT-33 for qemu-devel@nongnu.org; Thu, 27 Oct 2022 10:02:15 -0400 Received: by mail-wr1-x42d.google.com with SMTP id bp11so2329604wrb.9 for ; Thu, 27 Oct 2022 07:02:13 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id bp6-20020a5d5a86000000b00228a6ce17b4sm1301236wrb.37.2022.10.27.07.02.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Oct 2022 07:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sxsG7XqK7FJahGsD3iXOduO+aSm9dtXBlxQk+S7kf6c=; b=EoWnqlcGZ1p78F9o1k8id8l/ID8lh4gkC1Zdd+IdaHlBt1BerGUgU9++BcfBBiemuC 7RtxZ7omJWdvs9LSSyIHeuPOQpc/H8hmKueGFr6+fn9MYvyrAZ/+kI2xpmxsv29sXQpy 4Xpfk6PsWTEzdEDppG3RUKyuZc9rPEQDufk7aPUWBmcsZkd/haJts4Q6VS5vZPj3YfIK nNDEPz5FjUFnmVamBHC5jGMxjTOoiquXxeBlBw07uKSPbxLTvtLGlJNhGARB7dJeDtiR krTtNXNl3Mqs56BWs/zw9a4W+fuCROV/L+4dw9X9D/r9NkLMhvkEDmJbS5Vh7qBZQzAs SBDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sxsG7XqK7FJahGsD3iXOduO+aSm9dtXBlxQk+S7kf6c=; b=tTsYx27IwN4NV7EkTYQm3fqeaHGRjccym16u36IOV+pQr2HpbRaP8OIEhthTRRfSRR tX2899+IDdPlYiVH5qxoxQ6MJ1CjOw+uCI+IXUGEE4/V6fUPtUPzGcLOmfc19W449AJE vqFse3dVDOtYYB2hirdSTNQZ3SwegCQwA6leDMljSG5MjHAewwuYOzaUJnq2q/w5aQeP N/3X8aipasjvxdrKr8y8UOD+vr8Tc0Q6+R9mp2GFb5t4INiQgOnXVG0GNkbSDUObSJz/ kmck6Jw02MsCAo14CFNxbJKN8C7ADoAoRx+FQmcsE4cdDweBGvYW65Cp8PXxVRt4CKCA eCGg== X-Gm-Message-State: ACrzQf1YiIFJ7jAyY3pogRrhZ95Bxn06Tl0tOIOdsKVpk01Vt+y0uW5n 8ur6UvEPh0251YXBHZAzB4bfxA== X-Google-Smtp-Source: AMsMyM6mY99jgazA2pFIHizYU6Qu1QeYRJMHZE699M1Cgg+i3Iow/BmMYOOH0Y8fenOpbfW+yNX/PQ== X-Received: by 2002:adf:e195:0:b0:22f:6117:a932 with SMTP id az21-20020adfe195000000b0022f6117a932mr32671859wrb.572.1666879332039; Thu, 27 Oct 2022 07:02:12 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Jerome Forissier Subject: [PATCH 1/2] hw/arm/boot: Set SME and SVE EL3 vector lengths when booting kernel Date: Thu, 27 Oct 2022 15:02:06 +0100 Message-Id: <20221027140207.413084-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221027140207.413084-1-peter.maydell@linaro.org> References: <20221027140207.413084-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1666879778602100003 Content-Type: text/plain; charset="utf-8" When we direct boot a kernel on a CPU which emulates EL3, we need to set up the EL3 system registers as the Linux kernel documentation specifies: https://www.kernel.org/doc/Documentation/arm64/booting.rst For SVE and SME this includes: - ZCR_EL3.LEN must be initialised to the same value for all CPUs the kernel is executed on. - SMCR_EL3.LEN must be initialised to the same value for all CPUs the kernel will execute on. Although we are technically compliant with this, the "same value" we currently use by default is the reset value of 0. This will end up forcing the guest kernel's SVE and SME vector length to be only the smallest supported length. Initialize the vector length fields to their maximum possible value, which is 0xf. If the implementation doesn't actually support that vector length then the effective vector length will be constrained down to the maximum supported value at point of use. This allows the guest to use all the vector lengths the emulated CPU supports (by programming the _EL2 and _EL1 versions of these registers.) Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- hw/arm/boot.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index b0b92af1889..0e4d1e5a816 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -762,10 +762,12 @@ static void do_cpu_reset(void *opaque) } if (cpu_isar_feature(aa64_sve, cpu)) { env->cp15.cptr_el[3] |=3D R_CPTR_EL3_EZ_MASK; + env->vfp.zcr_el[3] =3D 0xf; } if (cpu_isar_feature(aa64_sme, cpu)) { env->cp15.cptr_el[3] |=3D R_CPTR_EL3_ESM_MASK; env->cp15.scr_el3 |=3D SCR_ENTP2; + env->vfp.smcr_el[3] =3D 0xf; } /* AArch64 kernels never boot in secure mode */ assert(!info->secure_boot); --=20 2.25.1 From nobody Mon Feb 9 07:56:02 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1666879472; cv=none; d=zohomail.com; s=zohoarc; b=Gyt8nfDwR/Gw7YoAgseEX0fChO/NaY769b8zXVspsf3vw7JEiSuL1RFFNJ/jOqm6D3ikmAq+WwiaeDsGCFcmfVphdOA0V1uK1WIZvDrB/asrMR9lwhOHBEODvMX7hGgDXGzdQKE+dSuNdekAAA8UnqJsZHshBv+Bi/Ll7dI42+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666879472; h=Content-Transfer-Encoding:Cc: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=nNtjyiRH/CIEjeKDHvpJCfaqZyeMGogdKG4xYD/wkmY=; b=gF5P3NciVTOPQCX6OZjol+ssXhMTvUT9fri6sP6a9VOSmWzY7X3ZShMhez+AhJDZ0dUgyFK+rPf2p+Uh3/V+WAhUnkL2SQ0rV5f4TYlw2/Loi0p0rBwg78k610MzMKMp6g6Xpn4+wsWZEcpXqXRdkemtC3SnVSHt3zdY7gDrnAI= 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 1666879472185528.9230690882296; Thu, 27 Oct 2022 07:04:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oo3Sc-0007Cr-06; Thu, 27 Oct 2022 10:02:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oo3Sa-00076S-Jk for qemu-devel@nongnu.org; Thu, 27 Oct 2022 10:02:16 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oo3SZ-0004yk-13 for qemu-devel@nongnu.org; Thu, 27 Oct 2022 10:02:16 -0400 Received: by mail-wr1-x435.google.com with SMTP id bs21so2340989wrb.4 for ; Thu, 27 Oct 2022 07:02:14 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id bp6-20020a5d5a86000000b00228a6ce17b4sm1301236wrb.37.2022.10.27.07.02.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Oct 2022 07:02:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nNtjyiRH/CIEjeKDHvpJCfaqZyeMGogdKG4xYD/wkmY=; b=yrBraNwzd30pXmNdBZ9MbsFKaZWk8cgz39Si3hT+SpY64IUviyfru5olumaCiaW+lr rHHzuU9WL1r80ZhvXxG0xa5/cWIOa1Y9G2wsjDLdk380g1hybxqcHpoEeGe8RFYm5Vr5 sHaKlqhzoVJIgAy4Px72tmu2DT/WVwif0knYlbgzkGM4ANWgKaAKwX43Zpfv3Cuoq+QC /JRDjOg7FylKn4B2UZ82ghZqmL8l+sjnxnxZMoVHv2oVk3Gy/Ew7end32h3Aq3TOTR9C 4X4ukFLwM0qyW3qY98P8v4RyC9rXA7su4Ut135Zv+MAwAoo9H0a67OSWzp34SVe+Nex4 RS5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nNtjyiRH/CIEjeKDHvpJCfaqZyeMGogdKG4xYD/wkmY=; b=NrXrLjemgacLQarNVPVWywS7Zb6OwDLXAFNA/dGt1qu9kFVx4pblehAhu7W3ahc9P+ j21AAUY+q7Vny0qYvYBeA5GVOKr5y6IqVv8ilsFP6TRwa/1dMqm+W2sk0ee0MwdtnvRT D2A18PLegk+cKibCf70WYyEGp4eF2ktXQWBAZWwb4+9Z2SQXXo20tGGxvGWPovpXKtfI ZHeeDohc6CqveVu1YYs01q1OHsuzbebXaGJIqra4Qop0FqFarPNyXXb1euJvQXqlAG/P FcqdKE4LGxBTZJ+6YN7GaZYzoYO/FESPF/+1wdZGAQB2KEeWw/hkjxkE+3guLuH164O6 hWFw== X-Gm-Message-State: ACrzQf1GRoQmt3+Eaa0nYQZJ1pUgojAGR9d+5txoPdLMdvLFpDkKnHdz mOgA8W5AamGDqYAL0cmOkumWeQ== X-Google-Smtp-Source: AMsMyM5yWhUAGSZrQTuyv8OCnpaWt5pZbca/QlYL+ld+y7v2DVZmigbIadTkmPo9jmkPV5Z6pwQRrQ== X-Received: by 2002:a5d:4441:0:b0:236:6c3e:efb4 with SMTP id x1-20020a5d4441000000b002366c3eefb4mr15512585wrr.539.1666879333297; Thu, 27 Oct 2022 07:02:13 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Jerome Forissier Subject: [PATCH 2/2] hw/arm/boot: Set SCR_EL3.HXEn when booting kernel Date: Thu, 27 Oct 2022 15:02:07 +0100 Message-Id: <20221027140207.413084-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221027140207.413084-1-peter.maydell@linaro.org> References: <20221027140207.413084-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1666879476134100001 Content-Type: text/plain; charset="utf-8" When we direct boot a kernel on a CPU which emulates EL3, we need to set up the EL3 system registers as the Linux kernel documentation specifies: https://www.kernel.org/doc/Documentation/arm64/booting.rst For CPUs with FEAT_HCX support this includes: - SCR_EL3.HXEn (bit 38) must be initialised to 0b1. but we forgot to do this when implementing FEAT_HCX, which would mean that a guest trying to access the HCRX_EL2 register would crash. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- hw/arm/boot.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 0e4d1e5a816..ddb7b1bdba0 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -769,6 +769,9 @@ static void do_cpu_reset(void *opaque) env->cp15.scr_el3 |=3D SCR_ENTP2; env->vfp.smcr_el[3] =3D 0xf; } + if (cpu_isar_feature(aa64_hcx, cpu)) { + env->cp15.scr_el3 |=3D SCR_HXEN; + } /* AArch64 kernels never boot in secure mode */ assert(!info->secure_boot); /* This hook is only supported for AArch32 currently: --=20 2.25.1