From nobody Mon Feb 9 22:21:35 2026 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; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1597215286; cv=none; d=zohomail.com; s=zohoarc; b=CIJOKwEIo6YoraYiu0lv23zPVCd3v976F47BP/PSqQBsckRAndJU/FeQ9RQYS2PorJzbVWjmuZksmvphFWDnYtBXX9USjrpngZxQcnGKYh6LHS89fCjnpdct7CFdEwmTHF8PnuIEbn/5MEbywNTthGfCWFcjAGtnNF3SNR+OyoI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597215286; 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=j39crPjYqJGwIgrM7ErljlkD2SFiNa9r8wEicsqELGI=; b=h4XhWGWLmIfXrSkiRzM+mC26IUa3hlNL6bkp2HPYdifmKSYgqAiCm8d8WkILVcRVI3Fpv0WvXwGAeWbBuxtMOIIz+ouJmyv+TK9uzr/6jtyUupvSorwhKnBDF7vPmu/3rgPIXN/WsPRlSLjTGgMsyRxP72zWg08AG6ytKWLdnv0= 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597215285323190.9782474882204; Tue, 11 Aug 2020 23:54:45 -0700 (PDT) Received: from localhost ([::1]:36632 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k5kep-00064g-7M for importer@patchew.org; Wed, 12 Aug 2020 02:54:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33790) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k5kdt-0005Dw-V1 for qemu-devel@nongnu.org; Wed, 12 Aug 2020 02:53:45 -0400 Received: from mail-pg1-x542.google.com ([2607:f8b0:4864:20::542]:43301) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k5kds-00041C-BQ for qemu-devel@nongnu.org; Wed, 12 Aug 2020 02:53:45 -0400 Received: by mail-pg1-x542.google.com with SMTP id d19so535065pgl.10 for ; Tue, 11 Aug 2020 23:53:43 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id b26sm1242781pff.54.2020.08.11.23.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2020 23:53:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=j39crPjYqJGwIgrM7ErljlkD2SFiNa9r8wEicsqELGI=; b=LT5I2t6QfsNhm/Zmcw9Uw/LJBuiQz3Yv/l2hdyAlCVLO+tu3HLrsJjMffUkFfat3n8 AznUmX8Mxnvexxtoc6aOsRpZqEQmvmaf1LZQyv5AIR8O1wCjEuHgGUti1+B1A0aNRo/w TIBwoYI9eFX3k3aC/2hfClf8o5YuHEjilka0pOPk7VBs8iTSJtlxm6oWfLWOgcXtuzat 2O+me+06Vo5jxwo60jkmjdg5UQ+t1AYXiMscCOOKpYg3jb8u6HhaDxSzJKAAxlGJjYwa 3aAPEaZWi2VuAeyZCoUp2cEtEzxMvQnia7V7MAHh00/oKFPW6scLapQS4s05iB50BIF1 jgfA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=j39crPjYqJGwIgrM7ErljlkD2SFiNa9r8wEicsqELGI=; b=pgFiXnT0vi7wQoCSIlV+AkX0bDWHrJbvIjNNe/tmaSsOmirzoa+dRoYV8GGfk0Gxoo /I9igjYBFNNGuwPog8LYk6yiKfPqqIUSFA8pa/S5nVswQzdF+ho8nF6ds7GpORfNZwFJ ZtP0iuXdICNR9yMPyPbhqvMRz/Yuwzypu7rqqRMDspkuIITRf4he39jvQwPpBsehZaWS 50RbcuF//kaRJVMuyZZ6WZBTV94QmGCgfzYFm+KH7wtpqTCMuluTiVPYGsPZJpsVNNSI BwB6Xo/uNO1JoqNlLB9RW9NtLidWFYNn45fNS0ihx5ur0ujxkTmlAMqobI4qsRhDcnbj 0Zfg== X-Gm-Message-State: AOAM532AHTrPoTwZ9/6SIVtm6YvOc151yk3SB+GzMmIgIWAfvTz68r88 8aevSlDBWpKHTTSouYRW/6nkbMPr/Iw= X-Google-Smtp-Source: ABdhPJx/iBFx/J0HZt6t0WKKyzlbSQN24NoADEsr35yfXn85XTDgQAVAUxMApXMEwTMAjVbkkcq6Bw== X-Received: by 2002:a65:4183:: with SMTP id a3mr3762192pgq.448.1597215222467; Tue, 11 Aug 2020 23:53:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 1/2] target/arm: Add cpu property to control pauth Date: Tue, 11 Aug 2020 23:53:38 -0700 Message-Id: <20200812065339.2030527-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200812065339.2030527-1-richard.henderson@linaro.org> References: <20200812065339.2030527-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::542; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x542.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, peter.maydell@linaro.org, alex.bennee@linaro.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 crypto overhead of emulating pauth can be significant for some workloads. Add an enumeration property that allows the feature to be turned off, on with the architected algorithm, or on with an implementation defined algorithm. The architected algorithm is quite expensive to emulate; using another algorithm may allow hardware acceleration. Signed-off-by: Richard Henderson --- target/arm/cpu64.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index dd696183df..3181d0e2f8 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -572,6 +572,69 @@ void aarch64_add_sve_properties(Object *obj) } } =20 +static const char * const pauth_names[] =3D { + "off", "impdef", "arch" +}; + +static const QEnumLookup pauth_lookup =3D { + .array =3D pauth_names, + .size =3D ARRAY_SIZE(pauth_names) +}; + +static int cpu_arm_get_pauth(Object *obj, Error **errp) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + int value; + + /* We will always set GPA+APA and GPI+API to the same value. */ + if (FIELD_EX64(cpu->isar.id_aa64isar1, ID_AA64ISAR1, APA)) { + value =3D 2; + } else if (FIELD_EX64(cpu->isar.id_aa64isar1, ID_AA64ISAR1, API)) { + value =3D 1; + } else { + value =3D 0; + } + return value; +} + +static void cpu_arm_set_pauth(Object *obj, int value, Error **errp) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + uint64_t t; + + /* TODO: Handle HaveEnhancedPAC, HaveEnhancedPAC2, HaveFPAC. */ + t =3D cpu->isar.id_aa64isar1; + switch (value) { + case 0: + t =3D FIELD_DP64(t, ID_AA64ISAR1, APA, 0); + t =3D FIELD_DP64(t, ID_AA64ISAR1, API, 0); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPA, 0); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPI, 0); + break; + case 1: + t =3D FIELD_DP64(t, ID_AA64ISAR1, APA, 0); + t =3D FIELD_DP64(t, ID_AA64ISAR1, API, 1); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPA, 0); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPI, 1); + break; + case 2: + t =3D FIELD_DP64(t, ID_AA64ISAR1, APA, 1); + t =3D FIELD_DP64(t, ID_AA64ISAR1, API, 0); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPA, 1); + t =3D FIELD_DP64(t, ID_AA64ISAR1, GPI, 0); + break; + default: + g_assert_not_reached(); + } + cpu->isar.id_aa64isar1 =3D t; +} + +static void aarch64_add_pauth_properties(Object *obj) +{ + object_property_add_enum(obj, "pauth", "ARMPauthKind", &pauth_lookup, + cpu_arm_get_pauth, cpu_arm_set_pauth); +} + /* -cpu max: if KVM is enabled, like -cpu host (best possible with this ho= st); * otherwise, a CPU with as many features enabled as our emulation support= s. * The version of '-cpu max' for qemu-system-arm is defined in cpu.c; @@ -720,6 +783,7 @@ static void aarch64_max_initfn(Object *obj) #endif } =20 + aarch64_add_pauth_properties(obj); aarch64_add_sve_properties(obj); object_property_add(obj, "sve-max-vq", "uint32", cpu_max_get_sve_max_v= q, cpu_max_set_sve_max_vq, NULL, NULL); --=20 2.25.1 From nobody Mon Feb 9 22:21:35 2026 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; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1597215342; cv=none; d=zohomail.com; s=zohoarc; b=JtMAZ+xi4bOIgExCYZVs22BfrRGXOc5lmgfOt2TsodafU/MMzmVNaqLfyvz6rPErV7mXCCvymh+dSCjLMshO1Evf6duMyiCKJFdx4xCuPqUqyNw9GzN293fcNZV4q/yIu+bNMFH67xJ6y8G7QhfXGzW1iSf3YcMYd73Co4+6kJ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1597215342; 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=x+CUNWxmdwpnm0VPcjEokAjthjrI6ArpKh4ph7vyRmQ=; b=Kc71npVbgK0Er7d5bxSXPNWJoPEIEmzWWAtDeNr2kzTDo5eXbtWqx5NHZXeQQccxBPn0XhHTik68tmnMCAlAlWzrJpk049e3zijBAjUsJn84LygxTCK9/DDUrSfM61Yc7z/swgU/oORuUhCLUCmktD58uKbgN//Gr8EySaAIJY4= 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1597215342751150.2667195521068; Tue, 11 Aug 2020 23:55:42 -0700 (PDT) Received: from localhost ([::1]:39876 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k5kfl-0007UT-IA for importer@patchew.org; Wed, 12 Aug 2020 02:55:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33804) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k5kdv-0005Ea-Ao for qemu-devel@nongnu.org; Wed, 12 Aug 2020 02:53:47 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]:40114) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k5kdt-00041H-CJ for qemu-devel@nongnu.org; Wed, 12 Aug 2020 02:53:46 -0400 Received: by mail-pf1-x42b.google.com with SMTP id k18so530367pfp.7 for ; Tue, 11 Aug 2020 23:53:45 -0700 (PDT) Received: from localhost.localdomain ([71.212.141.89]) by smtp.gmail.com with ESMTPSA id b26sm1242781pff.54.2020.08.11.23.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2020 23:53:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=x+CUNWxmdwpnm0VPcjEokAjthjrI6ArpKh4ph7vyRmQ=; b=n/O4ms78CjwxGMaoAtJnso/7mOl9+MmCYRd6naB25F8FsdUnmPoVu82Rofqkbpnun1 7r5PKR8jNxVuqnFS1c7k8F1D3t9rWk5ppuE7H8DTUlr2xMhADnsu7AoQ8vnXJCy7yuar ggOv0QeNEoHekcVMgNCxINfnqiQ8+0wLT915h3KQE2rrOwpmYcbgswXSj1qq8inLjSyU P7r1jshZnczsSzUEPGga6tjCO/1JwPo5gU2NII1+yttlV3YtQP8lc3BFgWzszoX8thMv aQpV2ogXk5t0Wf0r9wfENmDo2nzrCYnHpL5fFf1GXWNuO5M+EzQ3BVDXDqBh+ObCvDo3 +Epw== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=x+CUNWxmdwpnm0VPcjEokAjthjrI6ArpKh4ph7vyRmQ=; b=TmzqXNXSI+niJgXW9rBopWZrMNTC9eFxbubOHH2Glb5kC19RkI1HKBtraItQa3sMoO aGWineUo1sBlfn27Uxf8DTk46Pvwqiw1tNnz5483Nkhwdzu2UUOeO4xVgqz1+4aFN+hP UXMLUJh5W5SE32TRa1N8wj9rZWusay1B3RVSr4aT1dgKHTl4AVjMgWBEvHGcNYofAPTU SbTHDIitf/SRshL0nm4ZZNAk0cd5+SOLcAw80b5kExKD64UCvvMkPsQOBc4WHDaizHvF FPG1/51OgcTEXN93dVLMmyvIZkx84MdKcGxPpLoPrRdyMNpTb5lIQgqn7k4VwaaUMywE e/XA== X-Gm-Message-State: AOAM530x9xqcZg3mIKLnL1ZHudfWGyIhZvdvd0NZtozlVgM2bpTDdKJr vjEzFQDMoLE/5kdvH9mou1HG/E83MyU= X-Google-Smtp-Source: ABdhPJyTLWwgWdYbMYXQRdN51PyGk+lYSZF6tSiZkriHOXXw/uksAQWXxO8pfijP4LNQS+0fKycDVQ== X-Received: by 2002:a62:4e07:: with SMTP id c7mr9186715pfb.10.1597215223619; Tue, 11 Aug 2020 23:53:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH 2/2] target/arm: Implement an IMPDEF pauth algorithm Date: Tue, 11 Aug 2020 23:53:39 -0700 Message-Id: <20200812065339.2030527-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200812065339.2030527-1-richard.henderson@linaro.org> References: <20200812065339.2030527-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, peter.maydell@linaro.org, alex.bennee@linaro.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" Without hardware acceleration, a cryptographically strong algorithm is too expensive for pauth_computepac. Even with hardware accel, we are not currently expecting to link the linux-user binaries to any crypto libraries, and doing so would generally make the --static build fail. So choose XXH64 as a reasonably quick and decent hash. Signed-off-by: Richard Henderson --- target/arm/pauth_helper.c | 75 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 5 deletions(-) diff --git a/target/arm/pauth_helper.c b/target/arm/pauth_helper.c index 6dbab03768..f1a4389465 100644 --- a/target/arm/pauth_helper.c +++ b/target/arm/pauth_helper.c @@ -207,8 +207,8 @@ static uint64_t tweak_inv_shuffle(uint64_t i) return o; } =20 -static uint64_t pauth_computepac(uint64_t data, uint64_t modifier, - ARMPACKey key) +static uint64_t __attribute__((noinline)) +pauth_computepac_architected(uint64_t data, uint64_t modifier, ARMPACKey k= ey) { static const uint64_t RC[5] =3D { 0x0000000000000000ull, @@ -272,6 +272,71 @@ static uint64_t pauth_computepac(uint64_t data, uint64= _t modifier, return workingval; } =20 +/* + * The XXH64 algorithm from + * https://github.com/Cyan4973/xxHash/blob/v0.8.0/xxhash.h + */ +#define PRIME64_1 0x9E3779B185EBCA87ULL +#define PRIME64_2 0xC2B2AE3D27D4EB4FULL +#define PRIME64_3 0x165667B19E3779F9ULL +#define PRIME64_4 0x85EBCA77C2B2AE63ULL +#define PRIME64_5 0x27D4EB2F165667C5ULL + +static inline uint64_t XXH64_round(uint64_t acc, uint64_t input) +{ + return rol64(acc + input * PRIME64_2, 31) * PRIME64_1; +} + +static inline uint64_t XXH64_mergeround(uint64_t acc, uint64_t val) +{ + return (acc ^ XXH64_round(0, val)) * PRIME64_1 + PRIME64_4; +} + +static inline uint64_t XXH64_avalanche(uint64_t h64) +{ + h64 ^=3D h64 >> 33; + h64 *=3D PRIME64_2; + h64 ^=3D h64 >> 29; + h64 *=3D PRIME64_3; + /* h64 ^=3D h64 >> 32; -- does not affect high 64 for pauth */ + return h64; +} + +static uint64_t __attribute__((noinline)) +pauth_computepac_impdef(uint64_t data, uint64_t modifier, ARMPACKey key) +{ + uint64_t v1 =3D 1 + PRIME64_1 + PRIME64_2; + uint64_t v2 =3D 1 + PRIME64_2; + uint64_t v3 =3D 1 + 0; + uint64_t v4 =3D 1 - PRIME64_1; + uint64_t h64; + + v1 =3D XXH64_round(v1, data); + v2 =3D XXH64_round(v2, modifier); + v3 =3D XXH64_round(v3, key.lo); + v4 =3D XXH64_round(v4, key.hi); + + h64 =3D rol64(v1, 1) + rol64(v2, 7) + rol64(v3, 12) + rol64(v4, 18); + h64 =3D XXH64_mergeround(h64, v1); + h64 =3D XXH64_mergeround(h64, v2); + h64 =3D XXH64_mergeround(h64, v3); + h64 =3D XXH64_mergeround(h64, v4); + + return XXH64_avalanche(h64); +} + +static uint64_t pauth_computepac(CPUARMState *env, uint64_t data, + uint64_t modifier, ARMPACKey key) +{ + ARMCPU *cpu =3D env_archcpu(env); + + if (FIELD_EX64(cpu->isar.id_aa64isar1, ID_AA64ISAR1, APA)) { + return pauth_computepac_architected(data, modifier, key); + } else { + return pauth_computepac_impdef(data, modifier, key); + } +} + static uint64_t pauth_addpac(CPUARMState *env, uint64_t ptr, uint64_t modi= fier, ARMPACKey *key, bool data) { @@ -292,7 +357,7 @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_t= ptr, uint64_t modifier, bot_bit =3D 64 - param.tsz; ext_ptr =3D deposit64(ptr, bot_bit, top_bit - bot_bit, ext); =20 - pac =3D pauth_computepac(ext_ptr, modifier, *key); + pac =3D pauth_computepac(env, ext_ptr, modifier, *key); =20 /* * Check if the ptr has good extension bits and corrupt the @@ -341,7 +406,7 @@ static uint64_t pauth_auth(CPUARMState *env, uint64_t p= tr, uint64_t modifier, uint64_t pac, orig_ptr, test; =20 orig_ptr =3D pauth_original_ptr(ptr, param); - pac =3D pauth_computepac(orig_ptr, modifier, *key); + pac =3D pauth_computepac(env, orig_ptr, modifier, *key); bot_bit =3D 64 - param.tsz; top_bit =3D 64 - 8 * param.tbi; =20 @@ -442,7 +507,7 @@ uint64_t HELPER(pacga)(CPUARMState *env, uint64_t x, ui= nt64_t y) uint64_t pac; =20 pauth_check_trap(env, arm_current_el(env), GETPC()); - pac =3D pauth_computepac(x, y, env->keys.apga); + pac =3D pauth_computepac(env, x, y, env->keys.apga); =20 return pac & 0xffffffff00000000ull; } --=20 2.25.1