From nobody Sat May 11 22:00:02 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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 ARC-Seal: i=1; a=rsa-sha256; t=1621863025; cv=none; d=zohomail.com; s=zohoarc; b=DRcDNHd/g5xemQm0Jt1NzTHySeETo4FLCpsj+lo9XNgMJJDEXqPnKYGn0lHYU20ZBWOsMv0jMRFY8oQsObdg3zvJlDpEi988bC/oREH+R6Oe1qIm6Hu0IbDNwxH2QUjiVNoq9DTchXoEIn/171dPfxUQxAbwAZhlNs6GP1PvFBc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1621863025; h=Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=B5vCchJTb7GEbpfbedteaBDjGdQPYwb2tJtpla8Bjo4=; b=XLBJkCh6UVHcL3cgfTMyf0i95tPL4U2TmmLlRHC9HiQGsgctJq7WreVzskP3AkWIV2xAkd2Jitswv3WZw5ZG+C7IMhufYMXHG6WfT20R6dCHSWzFIHEpm5Xm3JZcSAGYPFd/g/8UNqR8OyjdseXrIfIrO9W/nZDm4fv2ccc3lgk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1621863025514754.716752933905; Mon, 24 May 2021 06:30:25 -0700 (PDT) Received: from localhost ([::1]:43464 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1llAf2-0005iT-FN for importer@patchew.org; Mon, 24 May 2021 09:30:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51802) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ll6B7-0001iW-5a for qemu-devel@nongnu.org; Mon, 24 May 2021 04:43:13 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]:43935) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ll6B5-0003u1-K3 for qemu-devel@nongnu.org; Mon, 24 May 2021 04:43:12 -0400 Received: by mail-wr1-x42c.google.com with SMTP id p7so23924359wru.10 for ; Mon, 24 May 2021 01:43:11 -0700 (PDT) Received: from localhost ([82.44.17.50]) by smtp.gmail.com with ESMTPSA id i11sm11505262wrq.26.2021.05.24.01.43.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 01:43:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=B5vCchJTb7GEbpfbedteaBDjGdQPYwb2tJtpla8Bjo4=; b=GHe0wSQnIRdGH1QJmN15ywx4rSQhTHGol2S9l8b/BfcpvUfhZ9LRTRtxquKveayIZ8 9nnkGYzNcSgunz0LY8Mj8LhaV9cN1BYCMvr5e4O88M1W39MqCocTKuc8xcAuDl+WAiAY poamHUv+B13uGmRFl/4OvJ9sV/qQr9sDVV3GZcknZHZK0N+bj+QeYksYReopj3YuFnsI AU9oQYcZ4d/khWRgXQEvXk41IeCwCX/HG1Ar7Z//X+0fU6FjkGxnXPyedIfZtq+6IXPm 421ZV32yTFeamULJu7TlMdewI+4ZfyrRE66xTtUnVJevep2MZkkHt60035dwvZuLWWVL H4Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=B5vCchJTb7GEbpfbedteaBDjGdQPYwb2tJtpla8Bjo4=; b=hTnfhn3Q+PYcIMNowEPfkYIKrvDM+qkuJFAQo9beMt9KfoplqVXfCglLvOIU5pENu8 0CHECUz7KnJosadTZeiEwALCPN3j/pTrLyZEiq7opE0rHTGRpBkQhaa5atFtU74Jf8rt FAwlexup7Ptl2jinKTyEqLz+9EAMj8xLPijMZHGGkA/trn4rUdJGZZsPWRX4Dem0b/Je kZlkJRvE5QRWywbLukx14l4qt6FawBfAlGR0+wIVR0moP68NyRq7UkMdE0WV10AMy2tq +4AWpJQ1Aj98w8Tj8xzUjU3bE+hg1NS4zfvMWY939iEjzOMKbCf79DOuLax9jrbAAAiP 8b3w== X-Gm-Message-State: AOAM532kIBn55a6ovEB4sI2wuVXzgUg8EF0e6XTDzp2IcPqrJbMgc78K wUM5xivdGhR9g0BRkdfkONJxMQ== X-Google-Smtp-Source: ABdhPJyZNwpeKIM2H2ijlHi/WzSswmXnpWo07RRp+kfiIE90kDNYZEV9ZOjza4FQskKIlB2DbEIaPg== X-Received: by 2002:a5d:654f:: with SMTP id z15mr20791984wrv.64.1621845790357; Mon, 24 May 2021 01:43:10 -0700 (PDT) From: Jamie Iles To: qemu-arm@nongnu.org Subject: [PATCH] target/arm: don't clobber ID_AA64ISAR1 pointer auth Date: Mon, 24 May 2021 09:43:06 +0100 Message-Id: <20210524084306.1666265-1-jamie@nuviainc.com> X-Mailer: git-send-email 2.30.2 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::42c; envelope-from=jamie@nuviainc.com; helo=mail-wr1-x42c.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 24 May 2021 09:27:40 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Jamie Iles , leif@nuviainc.com, Richard Henderson , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The pointer auth properties are added to the max CPU type but the finalization happens for all CPUs. It makes sense to be able to disable pointer authentication for the max CPU type, but for future CPUs that implement pointer authentication and have bits set in ID_AA64ISAR1, don't clobber them unless there is a property registered that can disable them. Cc: Richard Henderson Cc: Peter Maydell Signed-off-by: Jamie Iles --- target/arm/cpu64.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index f0a9e968c9c1..81c9e494acb6 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -575,26 +575,31 @@ void aarch64_add_sve_properties(Object *obj) =20 void arm_cpu_pauth_finalize(ARMCPU *cpu, Error **errp) { - int arch_val =3D 0, impdef_val =3D 0; + int apa =3D FIELD_EX64(cpu->isar.id_aa64isar1, ID_AA64ISAR1, APA); + int gpa =3D FIELD_EX64(cpu->isar.id_aa64isar1, ID_AA64ISAR1, GPA); + int api =3D FIELD_EX64(cpu->isar.id_aa64isar1, ID_AA64ISAR1, API); + int gpi =3D FIELD_EX64(cpu->isar.id_aa64isar1, ID_AA64ISAR1, GPI); uint64_t t; =20 + if (object_property_find(OBJECT(cpu), "pauth-impdef")) { + api =3D gpi =3D cpu->prop_pauth_impdef; + } + + if (object_property_find(OBJECT(cpu), "pauth")) { + apa =3D gpa =3D cpu->prop_pauth; + } + /* TODO: Handle HaveEnhancedPAC, HaveEnhancedPAC2, HaveFPAC. */ - if (cpu->prop_pauth) { - if (cpu->prop_pauth_impdef) { - impdef_val =3D 1; - } else { - arch_val =3D 1; - } - } else if (cpu->prop_pauth_impdef) { + if (cpu->prop_pauth_impdef && !cpu->prop_pauth) { error_setg(errp, "cannot enable pauth-impdef without pauth"); error_append_hint(errp, "Add pauth=3Don to the CPU property list.\= n"); } =20 t =3D cpu->isar.id_aa64isar1; - t =3D FIELD_DP64(t, ID_AA64ISAR1, APA, arch_val); - t =3D FIELD_DP64(t, ID_AA64ISAR1, GPA, arch_val); - t =3D FIELD_DP64(t, ID_AA64ISAR1, API, impdef_val); - t =3D FIELD_DP64(t, ID_AA64ISAR1, GPI, impdef_val); + t =3D FIELD_DP64(t, ID_AA64ISAR1, APA, apa); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPA, gpa); + t =3D FIELD_DP64(t, ID_AA64ISAR1, API, api); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPI, gpi); cpu->isar.id_aa64isar1 =3D t; } =20 @@ -662,6 +667,10 @@ static void aarch64_max_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64ISAR1, SPECRES, 1); t =3D FIELD_DP64(t, ID_AA64ISAR1, FRINTTS, 1); t =3D FIELD_DP64(t, ID_AA64ISAR1, LRCPC, 2); /* ARMv8.4-RCPC */ + t =3D FIELD_DP64(t, ID_AA64ISAR1, APA, 1); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPA, 1); + t =3D FIELD_DP64(t, ID_AA64ISAR1, API, 0); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPI, 0); cpu->isar.id_aa64isar1 =3D t; =20 t =3D cpu->isar.id_aa64pfr0; --=20 2.30.2