From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65C9DC433F5 for ; Fri, 25 Mar 2022 19:42:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231428AbiCYToJ (ORCPT ); Fri, 25 Mar 2022 15:44:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36180 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231789AbiCYTnT (ORCPT ); Fri, 25 Mar 2022 15:43:19 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC3E824E243; Fri, 25 Mar 2022 12:17:08 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4A54361C39; Fri, 25 Mar 2022 18:39:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4DAB0C340EE; Fri, 25 Mar 2022 18:39:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1648233587; bh=RzhKCCFfWfSfU0rzFmwlzLOe7NIpz7Rk27w9bf7jdbc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=U+YM3ZAMnqbGeqrOZr4fu9xc2qiTME3+Ssb1Nd+HFMMNvXwHLAQnY74QYdYqL19kw yB1+5uREJhGkLDn0YrNiqCTqCBdzYuRDuawUNcXRn9N+YeduFDhzLuikRMxAVpo1FQ zu5Elhs7sO3rSXN9iCbFCYSe83sqy8BEXI525IUd/Cuaik6otdrWZf+gqH6jnTdHlj PGzIIO1wg91BWXhW1guYjhyIpnjOxt2hVdyvg6Fl1Ileg6S49SWJ21RzqDgCt2PxKT Dwg7iiieuYWtV9Eh/uTbj63eWDGs04sHM6hN2NGEu4+JWhX5GCqJn6sqwyVX6FGBDD 2JOoiiDaRbAsg== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 9AA1A40407; Fri, 25 Mar 2022 15:39:44 -0300 (-03) Date: Fri, 25 Mar 2022 15:39:44 -0300 From: Arnaldo Carvalho de Melo To: Ali Saidi Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, german.gomez@arm.com, leo.yan@linaro.org, benh@kernel.crashing.org, Nick.Forrington@arm.com, alexander.shishkin@linux.intel.com, andrew.kilroy@arm.com, james.clark@arm.com, john.garry@huawei.com, jolsa@kernel.org, kjain@linux.ibm.com, lihuafei1@huawei.com, mark.rutland@arm.com, mathieu.poirier@linaro.org, mingo@redhat.com, namhyung@kernel.org, peterz@infradead.org, will@kernel.org Subject: Re: [PATCH v4 1/4] tools: arm64: Import cputype.h Message-ID: References: <20220324183323.31414-1-alisaidi@amazon.com> <20220324183323.31414-2-alisaidi@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20220324183323.31414-2-alisaidi@amazon.com> X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org Em Thu, Mar 24, 2022 at 06:33:20PM +0000, Ali Saidi escreveu: > Bring-in the kernel's arch/arm64/include/asm/cputype.h into tools/ > for arm64 to make use of all the core-type definitions in perf. > > Replace sysreg.h with the version already imported into tools/. You forgot to add it to tools/perf/check-headers.sh so that we get notificed when the original file in the kernel sources gets updated, so that we can check if this needs any tooling adjustments. ⬢[acme@toolbox perf]$ diff -u tools/arch/arm64/include/asm/cputype.h arch/arm64/include/asm/cputype.h --- tools/arch/arm64/include/asm/cputype.h 2022-03-25 15:29:41.185173403 -0300 +++ arch/arm64/include/asm/cputype.h 2022-03-22 17:52:10.881311839 -0300 @@ -170,7 +170,7 @@ #ifndef __ASSEMBLY__ -#include "sysreg.h" +#include #define read_cpuid(reg) read_sysreg_s(SYS_ ## reg) ⬢[acme@toolbox perf]$ I'll add the entry together with the waiver for this specific difference. - Arnaldo > Signed-off-by: Ali Saidi > --- > tools/arch/arm64/include/asm/cputype.h | 258 +++++++++++++++++++++++++ > 1 file changed, 258 insertions(+) > create mode 100644 tools/arch/arm64/include/asm/cputype.h > > diff --git a/tools/arch/arm64/include/asm/cputype.h b/tools/arch/arm64/include/asm/cputype.h > new file mode 100644 > index 000000000000..9afcc6467a09 > --- /dev/null > +++ b/tools/arch/arm64/include/asm/cputype.h > @@ -0,0 +1,258 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * Copyright (C) 2012 ARM Ltd. > + */ > +#ifndef __ASM_CPUTYPE_H > +#define __ASM_CPUTYPE_H > + > +#define INVALID_HWID ULONG_MAX > + > +#define MPIDR_UP_BITMASK (0x1 << 30) > +#define MPIDR_MT_BITMASK (0x1 << 24) > +#define MPIDR_HWID_BITMASK UL(0xff00ffffff) > + > +#define MPIDR_LEVEL_BITS_SHIFT 3 > +#define MPIDR_LEVEL_BITS (1 << MPIDR_LEVEL_BITS_SHIFT) > +#define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1) > + > +#define MPIDR_LEVEL_SHIFT(level) \ > + (((1 << level) >> 1) << MPIDR_LEVEL_BITS_SHIFT) > + > +#define MPIDR_AFFINITY_LEVEL(mpidr, level) \ > + ((mpidr >> MPIDR_LEVEL_SHIFT(level)) & MPIDR_LEVEL_MASK) > + > +#define MIDR_REVISION_MASK 0xf > +#define MIDR_REVISION(midr) ((midr) & MIDR_REVISION_MASK) > +#define MIDR_PARTNUM_SHIFT 4 > +#define MIDR_PARTNUM_MASK (0xfff << MIDR_PARTNUM_SHIFT) > +#define MIDR_PARTNUM(midr) \ > + (((midr) & MIDR_PARTNUM_MASK) >> MIDR_PARTNUM_SHIFT) > +#define MIDR_ARCHITECTURE_SHIFT 16 > +#define MIDR_ARCHITECTURE_MASK (0xf << MIDR_ARCHITECTURE_SHIFT) > +#define MIDR_ARCHITECTURE(midr) \ > + (((midr) & MIDR_ARCHITECTURE_MASK) >> MIDR_ARCHITECTURE_SHIFT) > +#define MIDR_VARIANT_SHIFT 20 > +#define MIDR_VARIANT_MASK (0xf << MIDR_VARIANT_SHIFT) > +#define MIDR_VARIANT(midr) \ > + (((midr) & MIDR_VARIANT_MASK) >> MIDR_VARIANT_SHIFT) > +#define MIDR_IMPLEMENTOR_SHIFT 24 > +#define MIDR_IMPLEMENTOR_MASK (0xff << MIDR_IMPLEMENTOR_SHIFT) > +#define MIDR_IMPLEMENTOR(midr) \ > + (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT) > + > +#define MIDR_CPU_MODEL(imp, partnum) \ > + (((imp) << MIDR_IMPLEMENTOR_SHIFT) | \ > + (0xf << MIDR_ARCHITECTURE_SHIFT) | \ > + ((partnum) << MIDR_PARTNUM_SHIFT)) > + > +#define MIDR_CPU_VAR_REV(var, rev) \ > + (((var) << MIDR_VARIANT_SHIFT) | (rev)) > + > +#define MIDR_CPU_MODEL_MASK (MIDR_IMPLEMENTOR_MASK | MIDR_PARTNUM_MASK | \ > + MIDR_ARCHITECTURE_MASK) > + > +#define ARM_CPU_IMP_ARM 0x41 > +#define ARM_CPU_IMP_APM 0x50 > +#define ARM_CPU_IMP_CAVIUM 0x43 > +#define ARM_CPU_IMP_BRCM 0x42 > +#define ARM_CPU_IMP_QCOM 0x51 > +#define ARM_CPU_IMP_NVIDIA 0x4E > +#define ARM_CPU_IMP_FUJITSU 0x46 > +#define ARM_CPU_IMP_HISI 0x48 > +#define ARM_CPU_IMP_APPLE 0x61 > + > +#define ARM_CPU_PART_AEM_V8 0xD0F > +#define ARM_CPU_PART_FOUNDATION 0xD00 > +#define ARM_CPU_PART_CORTEX_A57 0xD07 > +#define ARM_CPU_PART_CORTEX_A72 0xD08 > +#define ARM_CPU_PART_CORTEX_A53 0xD03 > +#define ARM_CPU_PART_CORTEX_A73 0xD09 > +#define ARM_CPU_PART_CORTEX_A75 0xD0A > +#define ARM_CPU_PART_CORTEX_A35 0xD04 > +#define ARM_CPU_PART_CORTEX_A55 0xD05 > +#define ARM_CPU_PART_CORTEX_A76 0xD0B > +#define ARM_CPU_PART_NEOVERSE_N1 0xD0C > +#define ARM_CPU_PART_CORTEX_A77 0xD0D > +#define ARM_CPU_PART_NEOVERSE_V1 0xD40 > +#define ARM_CPU_PART_CORTEX_A78 0xD41 > +#define ARM_CPU_PART_CORTEX_X1 0xD44 > +#define ARM_CPU_PART_CORTEX_A510 0xD46 > +#define ARM_CPU_PART_CORTEX_A710 0xD47 > +#define ARM_CPU_PART_CORTEX_X2 0xD48 > +#define ARM_CPU_PART_NEOVERSE_N2 0xD49 > +#define ARM_CPU_PART_CORTEX_A78C 0xD4B > + > +#define APM_CPU_PART_POTENZA 0x000 > + > +#define CAVIUM_CPU_PART_THUNDERX 0x0A1 > +#define CAVIUM_CPU_PART_THUNDERX_81XX 0x0A2 > +#define CAVIUM_CPU_PART_THUNDERX_83XX 0x0A3 > +#define CAVIUM_CPU_PART_THUNDERX2 0x0AF > +/* OcteonTx2 series */ > +#define CAVIUM_CPU_PART_OCTX2_98XX 0x0B1 > +#define CAVIUM_CPU_PART_OCTX2_96XX 0x0B2 > +#define CAVIUM_CPU_PART_OCTX2_95XX 0x0B3 > +#define CAVIUM_CPU_PART_OCTX2_95XXN 0x0B4 > +#define CAVIUM_CPU_PART_OCTX2_95XXMM 0x0B5 > +#define CAVIUM_CPU_PART_OCTX2_95XXO 0x0B6 > + > +#define BRCM_CPU_PART_BRAHMA_B53 0x100 > +#define BRCM_CPU_PART_VULCAN 0x516 > + > +#define QCOM_CPU_PART_FALKOR_V1 0x800 > +#define QCOM_CPU_PART_FALKOR 0xC00 > +#define QCOM_CPU_PART_KRYO 0x200 > +#define QCOM_CPU_PART_KRYO_2XX_GOLD 0x800 > +#define QCOM_CPU_PART_KRYO_2XX_SILVER 0x801 > +#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803 > +#define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804 > +#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805 > + > +#define NVIDIA_CPU_PART_DENVER 0x003 > +#define NVIDIA_CPU_PART_CARMEL 0x004 > + > +#define FUJITSU_CPU_PART_A64FX 0x001 > + > +#define HISI_CPU_PART_TSV110 0xD01 > + > +#define APPLE_CPU_PART_M1_ICESTORM 0x022 > +#define APPLE_CPU_PART_M1_FIRESTORM 0x023 > + > +#define MIDR_CORTEX_A53 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53) > +#define MIDR_CORTEX_A57 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57) > +#define MIDR_CORTEX_A72 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72) > +#define MIDR_CORTEX_A73 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A73) > +#define MIDR_CORTEX_A75 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A75) > +#define MIDR_CORTEX_A35 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A35) > +#define MIDR_CORTEX_A55 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A55) > +#define MIDR_CORTEX_A76 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76) > +#define MIDR_NEOVERSE_N1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N1) > +#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77) > +#define MIDR_NEOVERSE_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1) > +#define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78) > +#define MIDR_CORTEX_X1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X1) > +#define MIDR_CORTEX_A510 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A510) > +#define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710) > +#define MIDR_CORTEX_X2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X2) > +#define MIDR_NEOVERSE_N2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N2) > +#define MIDR_CORTEX_A78C MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78C) > +#define MIDR_THUNDERX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX) > +#define MIDR_THUNDERX_81XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_81XX) > +#define MIDR_THUNDERX_83XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_83XX) > +#define MIDR_OCTX2_98XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_OCTX2_98XX) > +#define MIDR_OCTX2_96XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_OCTX2_96XX) > +#define MIDR_OCTX2_95XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_OCTX2_95XX) > +#define MIDR_OCTX2_95XXN MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_OCTX2_95XXN) > +#define MIDR_OCTX2_95XXMM MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_OCTX2_95XXMM) > +#define MIDR_OCTX2_95XXO MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_OCTX2_95XXO) > +#define MIDR_CAVIUM_THUNDERX2 MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX2) > +#define MIDR_BRAHMA_B53 MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM, BRCM_CPU_PART_BRAHMA_B53) > +#define MIDR_BRCM_VULCAN MIDR_CPU_MODEL(ARM_CPU_IMP_BRCM, BRCM_CPU_PART_VULCAN) > +#define MIDR_QCOM_FALKOR_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR_V1) > +#define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR) > +#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO) > +#define MIDR_QCOM_KRYO_2XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_GOLD) > +#define MIDR_QCOM_KRYO_2XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_SILVER) > +#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER) > +#define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD) > +#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER) > +#define MIDR_NVIDIA_DENVER MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_DENVER) > +#define MIDR_NVIDIA_CARMEL MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_CARMEL) > +#define MIDR_FUJITSU_A64FX MIDR_CPU_MODEL(ARM_CPU_IMP_FUJITSU, FUJITSU_CPU_PART_A64FX) > +#define MIDR_HISI_TSV110 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV110) > +#define MIDR_APPLE_M1_ICESTORM MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM) > +#define MIDR_APPLE_M1_FIRESTORM MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM) > + > +/* Fujitsu Erratum 010001 affects A64FX 1.0 and 1.1, (v0r0 and v1r0) */ > +#define MIDR_FUJITSU_ERRATUM_010001 MIDR_FUJITSU_A64FX > +#define MIDR_FUJITSU_ERRATUM_010001_MASK (~MIDR_CPU_VAR_REV(1, 0)) > +#define TCR_CLEAR_FUJITSU_ERRATUM_010001 (TCR_NFD1 | TCR_NFD0) > + > +#ifndef __ASSEMBLY__ > + > +#include "sysreg.h" > + > +#define read_cpuid(reg) read_sysreg_s(SYS_ ## reg) > + > +/* > + * Represent a range of MIDR values for a given CPU model and a > + * range of variant/revision values. > + * > + * @model - CPU model as defined by MIDR_CPU_MODEL > + * @rv_min - Minimum value for the revision/variant as defined by > + * MIDR_CPU_VAR_REV > + * @rv_max - Maximum value for the variant/revision for the range. > + */ > +struct midr_range { > + u32 model; > + u32 rv_min; > + u32 rv_max; > +}; > + > +#define MIDR_RANGE(m, v_min, r_min, v_max, r_max) \ > + { \ > + .model = m, \ > + .rv_min = MIDR_CPU_VAR_REV(v_min, r_min), \ > + .rv_max = MIDR_CPU_VAR_REV(v_max, r_max), \ > + } > + > +#define MIDR_REV_RANGE(m, v, r_min, r_max) MIDR_RANGE(m, v, r_min, v, r_max) > +#define MIDR_REV(m, v, r) MIDR_RANGE(m, v, r, v, r) > +#define MIDR_ALL_VERSIONS(m) MIDR_RANGE(m, 0, 0, 0xf, 0xf) > + > +static inline bool midr_is_cpu_model_range(u32 midr, u32 model, u32 rv_min, > + u32 rv_max) > +{ > + u32 _model = midr & MIDR_CPU_MODEL_MASK; > + u32 rv = midr & (MIDR_REVISION_MASK | MIDR_VARIANT_MASK); > + > + return _model == model && rv >= rv_min && rv <= rv_max; > +} > + > +static inline bool is_midr_in_range(u32 midr, struct midr_range const *range) > +{ > + return midr_is_cpu_model_range(midr, range->model, > + range->rv_min, range->rv_max); > +} > + > +static inline bool > +is_midr_in_range_list(u32 midr, struct midr_range const *ranges) > +{ > + while (ranges->model) > + if (is_midr_in_range(midr, ranges++)) > + return true; > + return false; > +} > + > +/* > + * The CPU ID never changes at run time, so we might as well tell the > + * compiler that it's constant. Use this function to read the CPU ID > + * rather than directly reading processor_id or read_cpuid() directly. > + */ > +static inline u32 __attribute_const__ read_cpuid_id(void) > +{ > + return read_cpuid(MIDR_EL1); > +} > + > +static inline u64 __attribute_const__ read_cpuid_mpidr(void) > +{ > + return read_cpuid(MPIDR_EL1); > +} > + > +static inline unsigned int __attribute_const__ read_cpuid_implementor(void) > +{ > + return MIDR_IMPLEMENTOR(read_cpuid_id()); > +} > + > +static inline unsigned int __attribute_const__ read_cpuid_part_number(void) > +{ > + return MIDR_PARTNUM(read_cpuid_id()); > +} > + > +static inline u32 __attribute_const__ read_cpuid_cachetype(void) > +{ > + return read_cpuid(CTR_EL0); > +} > +#endif /* __ASSEMBLY__ */ > + > +#endif > -- > 2.32.0 -- - Arnaldo From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D359AC433F5 for ; Fri, 25 Mar 2022 18:41:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=w2YZCP+OD5f6j9Dxk47tuNJzHi6sPO1JiQCLjFHA0KI=; b=2SFhhOg1fFBJRJ b6GivJUKs4T/9VEK0gEmxeBAgo2TXtt158cMrc2FotwoRiGsGVw3f9Ms0HIhyXWh5Msyp5waF+u0z m4fP5FcirOAjR4K0BeN31S03L2eoSrD/l2sqv+GMRQTraXyD/WljUCdx90txBfo0fIH8xWCH14MO+ T4AiBFuDNhwCCweUIUZWcacFKV8MEzYMO84rbE01L5IoZgMITt3IfxJDV8cD1kDxM8rF3yVfyjllf n30LrQyOihIsn2znqKHpQh69dvHLpOJoYDpOgC79CMbHCN0Ts6tGEpZypFej/LKAJ/WsPrkKjQ9BV 8KYPaMrlZkZTGBHk3dMw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nXoql-0030fj-Vh; Fri, 25 Mar 2022 18:39:52 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nXoqj-0030fY-Sc for linux-arm-kernel@bombadil.infradead.org; Fri, 25 Mar 2022 18:39:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=U59bUm9ObZo+ZTlueRbuo5BUngjTuy4ECp7S77pugfU=; b=ktpuv37bwn+yzG77SH576X4xHc ACSxmLkZ84Q8zlxbB847s9LXclOTYb/lrzd3VP1gFX46YlMShLwliQF/QQPBFogJJWVpWwpmly3Tu f+cN2RL2c/Ojb8Wqj+onPNuBFXGsI+9vV9NfbhXKdanKzWptYk9lE+c6D+fC/7blDPzCzM1VGdFKq rcrEd8O1T+RyvXRZQ73PqIJDDFXlCbSPOTZe6rSKOsR+R5lxgK3QJ2bmrxKmJdYAvag6dLza1IpYt vzd6Mfc0tRejOSNn/jzKFp8nkhoU4V9ZNq+YzWdpyM1xMAnUosMz9sDvUOt2F06GwnJ8murmpXrFM eD/tH6nw==; Received: from [187.19.238.43] (helo=quaco.ghostprotocols.net) by desiato.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1nXoqh-004UAQ-Pg; Fri, 25 Mar 2022 18:39:48 +0000 Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 9AA1A40407; Fri, 25 Mar 2022 15:39:44 -0300 (-03) Date: Fri, 25 Mar 2022 15:39:44 -0300 From: Arnaldo Carvalho de Melo To: Ali Saidi Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, german.gomez@arm.com, leo.yan@linaro.org, benh@kernel.crashing.org, Nick.Forrington@arm.com, alexander.shishkin@linux.intel.com, andrew.kilroy@arm.com, james.clark@arm.com, john.garry@huawei.com, jolsa@kernel.org, kjain@linux.ibm.com, lihuafei1@huawei.com, mark.rutland@arm.com, mathieu.poirier@linaro.org, mingo@redhat.com, namhyung@kernel.org, peterz@infradead.org, will@kernel.org Subject: Re: [PATCH v4 1/4] tools: arm64: Import cputype.h Message-ID: References: <20220324183323.31414-1-alisaidi@amazon.com> <20220324183323.31414-2-alisaidi@amazon.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220324183323.31414-2-alisaidi@amazon.com> X-Url: http://acmel.wordpress.com X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RW0gVGh1LCBNYXIgMjQsIDIwMjIgYXQgMDY6MzM6MjBQTSArMDAwMCwgQWxpIFNhaWRpIGVzY3Jl dmV1Ogo+IEJyaW5nLWluIHRoZSBrZXJuZWwncyBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NwdXR5 cGUuaCBpbnRvIHRvb2xzLwo+IGZvciBhcm02NCB0byBtYWtlIHVzZSBvZiBhbGwgdGhlIGNvcmUt dHlwZSBkZWZpbml0aW9ucyBpbiBwZXJmLgo+IAo+IFJlcGxhY2Ugc3lzcmVnLmggd2l0aCB0aGUg dmVyc2lvbiBhbHJlYWR5IGltcG9ydGVkIGludG8gdG9vbHMvLgoKWW91IGZvcmdvdCB0byBhZGQg aXQgdG8gdG9vbHMvcGVyZi9jaGVjay1oZWFkZXJzLnNoIHNvIHRoYXQgd2UgZ2V0Cm5vdGlmaWNl ZCB3aGVuIHRoZSBvcmlnaW5hbCBmaWxlIGluIHRoZSBrZXJuZWwgc291cmNlcyBnZXRzIHVwZGF0 ZWQsIHNvCnRoYXQgd2UgY2FuIGNoZWNrIGlmIHRoaXMgbmVlZHMgYW55IHRvb2xpbmcgYWRqdXN0 bWVudHMuCgrirKJbYWNtZUB0b29sYm94IHBlcmZdJCBkaWZmIC11IHRvb2xzL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20vY3B1dHlwZS5oIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vY3B1dHlwZS5oCi0t LSB0b29scy9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NwdXR5cGUuaAkyMDIyLTAzLTI1IDE1OjI5 OjQxLjE4NTE3MzQwMyAtMDMwMAorKysgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jcHV0eXBlLmgJ MjAyMi0wMy0yMiAxNzo1MjoxMC44ODEzMTE4MzkgLTAzMDAKQEAgLTE3MCw3ICsxNzAsNyBAQAoK ICNpZm5kZWYgX19BU1NFTUJMWV9fCgotI2luY2x1ZGUgInN5c3JlZy5oIgorI2luY2x1ZGUgPGFz bS9zeXNyZWcuaD4KCiAjZGVmaW5lIHJlYWRfY3B1aWQocmVnKQkJCXJlYWRfc3lzcmVnX3MoU1lT XyAjIyByZWcpCgrirKJbYWNtZUB0b29sYm94IHBlcmZdJAoKCkknbGwgYWRkIHRoZSBlbnRyeSB0 b2dldGhlciB3aXRoIHRoZSB3YWl2ZXIgZm9yIHRoaXMgc3BlY2lmaWMKZGlmZmVyZW5jZS4KCi0g QXJuYWxkbwogCj4gU2lnbmVkLW9mZi1ieTogQWxpIFNhaWRpIDxhbGlzYWlkaUBhbWF6b24uY29t Pgo+IC0tLQo+ICB0b29scy9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NwdXR5cGUuaCB8IDI1OCAr KysrKysrKysrKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAyNTggaW5zZXJ0aW9u cygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9j cHV0eXBlLmgKPiAKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9j cHV0eXBlLmggYi90b29scy9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NwdXR5cGUuaAo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi45YWZjYzY0NjdhMDkKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvdG9vbHMvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jcHV0eXBlLmgK PiBAQCAtMCwwICsxLDI1OCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MC1vbmx5ICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMiBBUk0gTHRkLgo+ICsgKi8K PiArI2lmbmRlZiBfX0FTTV9DUFVUWVBFX0gKPiArI2RlZmluZSBfX0FTTV9DUFVUWVBFX0gKPiAr Cj4gKyNkZWZpbmUgSU5WQUxJRF9IV0lECQlVTE9OR19NQVgKPiArCj4gKyNkZWZpbmUgTVBJRFJf VVBfQklUTUFTSwkoMHgxIDw8IDMwKQo+ICsjZGVmaW5lIE1QSURSX01UX0JJVE1BU0sJKDB4MSA8 PCAyNCkKPiArI2RlZmluZSBNUElEUl9IV0lEX0JJVE1BU0sJVUwoMHhmZjAwZmZmZmZmKQo+ICsK PiArI2RlZmluZSBNUElEUl9MRVZFTF9CSVRTX1NISUZUCTMKPiArI2RlZmluZSBNUElEUl9MRVZF TF9CSVRTCSgxIDw8IE1QSURSX0xFVkVMX0JJVFNfU0hJRlQpCj4gKyNkZWZpbmUgTVBJRFJfTEVW RUxfTUFTSwkoKDEgPDwgTVBJRFJfTEVWRUxfQklUUykgLSAxKQo+ICsKPiArI2RlZmluZSBNUElE Ul9MRVZFTF9TSElGVChsZXZlbCkgXAo+ICsJKCgoMSA8PCBsZXZlbCkgPj4gMSkgPDwgTVBJRFJf TEVWRUxfQklUU19TSElGVCkKPiArCj4gKyNkZWZpbmUgTVBJRFJfQUZGSU5JVFlfTEVWRUwobXBp ZHIsIGxldmVsKSBcCj4gKwkoKG1waWRyID4+IE1QSURSX0xFVkVMX1NISUZUKGxldmVsKSkgJiBN UElEUl9MRVZFTF9NQVNLKQo+ICsKPiArI2RlZmluZSBNSURSX1JFVklTSU9OX01BU0sJMHhmCj4g KyNkZWZpbmUgTUlEUl9SRVZJU0lPTihtaWRyKQkoKG1pZHIpICYgTUlEUl9SRVZJU0lPTl9NQVNL KQo+ICsjZGVmaW5lIE1JRFJfUEFSVE5VTV9TSElGVAk0Cj4gKyNkZWZpbmUgTUlEUl9QQVJUTlVN X01BU0sJKDB4ZmZmIDw8IE1JRFJfUEFSVE5VTV9TSElGVCkKPiArI2RlZmluZSBNSURSX1BBUlRO VU0obWlkcikJXAo+ICsJKCgobWlkcikgJiBNSURSX1BBUlROVU1fTUFTSykgPj4gTUlEUl9QQVJU TlVNX1NISUZUKQo+ICsjZGVmaW5lIE1JRFJfQVJDSElURUNUVVJFX1NISUZUCTE2Cj4gKyNkZWZp bmUgTUlEUl9BUkNISVRFQ1RVUkVfTUFTSwkoMHhmIDw8IE1JRFJfQVJDSElURUNUVVJFX1NISUZU KQo+ICsjZGVmaW5lIE1JRFJfQVJDSElURUNUVVJFKG1pZHIpCVwKPiArCSgoKG1pZHIpICYgTUlE Ul9BUkNISVRFQ1RVUkVfTUFTSykgPj4gTUlEUl9BUkNISVRFQ1RVUkVfU0hJRlQpCj4gKyNkZWZp bmUgTUlEUl9WQVJJQU5UX1NISUZUCTIwCj4gKyNkZWZpbmUgTUlEUl9WQVJJQU5UX01BU0sJKDB4 ZiA8PCBNSURSX1ZBUklBTlRfU0hJRlQpCj4gKyNkZWZpbmUgTUlEUl9WQVJJQU5UKG1pZHIpCVwK PiArCSgoKG1pZHIpICYgTUlEUl9WQVJJQU5UX01BU0spID4+IE1JRFJfVkFSSUFOVF9TSElGVCkK PiArI2RlZmluZSBNSURSX0lNUExFTUVOVE9SX1NISUZUCTI0Cj4gKyNkZWZpbmUgTUlEUl9JTVBM RU1FTlRPUl9NQVNLCSgweGZmIDw8IE1JRFJfSU1QTEVNRU5UT1JfU0hJRlQpCj4gKyNkZWZpbmUg TUlEUl9JTVBMRU1FTlRPUihtaWRyKQlcCj4gKwkoKChtaWRyKSAmIE1JRFJfSU1QTEVNRU5UT1Jf TUFTSykgPj4gTUlEUl9JTVBMRU1FTlRPUl9TSElGVCkKPiArCj4gKyNkZWZpbmUgTUlEUl9DUFVf TU9ERUwoaW1wLCBwYXJ0bnVtKSBcCj4gKwkoKChpbXApCQkJPDwgTUlEUl9JTVBMRU1FTlRPUl9T SElGVCkgfCBcCj4gKwkoMHhmCQkJPDwgTUlEUl9BUkNISVRFQ1RVUkVfU0hJRlQpIHwgXAo+ICsJ KChwYXJ0bnVtKQkJPDwgTUlEUl9QQVJUTlVNX1NISUZUKSkKPiArCj4gKyNkZWZpbmUgTUlEUl9D UFVfVkFSX1JFVih2YXIsIHJldikgXAo+ICsJKCgodmFyKQk8PCBNSURSX1ZBUklBTlRfU0hJRlQp IHwgKHJldikpCj4gKwo+ICsjZGVmaW5lIE1JRFJfQ1BVX01PREVMX01BU0sgKE1JRFJfSU1QTEVN RU5UT1JfTUFTSyB8IE1JRFJfUEFSVE5VTV9NQVNLIHwgXAo+ICsJCQkgICAgIE1JRFJfQVJDSElU RUNUVVJFX01BU0spCj4gKwo+ICsjZGVmaW5lIEFSTV9DUFVfSU1QX0FSTQkJCTB4NDEKPiArI2Rl ZmluZSBBUk1fQ1BVX0lNUF9BUE0JCQkweDUwCj4gKyNkZWZpbmUgQVJNX0NQVV9JTVBfQ0FWSVVN CQkweDQzCj4gKyNkZWZpbmUgQVJNX0NQVV9JTVBfQlJDTQkJMHg0Mgo+ICsjZGVmaW5lIEFSTV9D UFVfSU1QX1FDT00JCTB4NTEKPiArI2RlZmluZSBBUk1fQ1BVX0lNUF9OVklESUEJCTB4NEUKPiAr I2RlZmluZSBBUk1fQ1BVX0lNUF9GVUpJVFNVCQkweDQ2Cj4gKyNkZWZpbmUgQVJNX0NQVV9JTVBf SElTSQkJMHg0OAo+ICsjZGVmaW5lIEFSTV9DUFVfSU1QX0FQUExFCQkweDYxCj4gKwo+ICsjZGVm aW5lIEFSTV9DUFVfUEFSVF9BRU1fVjgJCTB4RDBGCj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0ZP VU5EQVRJT04JCTB4RDAwCj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNTcJCTB4RDA3 Cj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzIJCTB4RDA4Cj4gKyNkZWZpbmUgQVJN X0NQVV9QQVJUX0NPUlRFWF9BNTMJCTB4RDAzCj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRF WF9BNzMJCTB4RDA5Cj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzUJCTB4RDBBCj4g KyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9BMzUJCTB4RDA0Cj4gKyNkZWZpbmUgQVJNX0NQ VV9QQVJUX0NPUlRFWF9BNTUJCTB4RDA1Cj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9B NzYJCTB4RDBCCj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX05FT1ZFUlNFX04xCTB4RDBDCj4gKyNk ZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzcJCTB4RDBECj4gKyNkZWZpbmUgQVJNX0NQVV9Q QVJUX05FT1ZFUlNFX1YxCTB4RDQwCj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzgJ CTB4RDQxCj4gKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9YMQkJMHhENDQKPiArI2RlZmlu ZSBBUk1fQ1BVX1BBUlRfQ09SVEVYX0E1MTAJMHhENDYKPiArI2RlZmluZSBBUk1fQ1BVX1BBUlRf Q09SVEVYX0E3MTAJMHhENDcKPiArI2RlZmluZSBBUk1fQ1BVX1BBUlRfQ09SVEVYX1gyCQkweEQ0 OAo+ICsjZGVmaW5lIEFSTV9DUFVfUEFSVF9ORU9WRVJTRV9OMgkweEQ0OQo+ICsjZGVmaW5lIEFS TV9DUFVfUEFSVF9DT1JURVhfQTc4QwkweEQ0Qgo+ICsKPiArI2RlZmluZSBBUE1fQ1BVX1BBUlRf UE9URU5aQQkJMHgwMDAKPiArCj4gKyNkZWZpbmUgQ0FWSVVNX0NQVV9QQVJUX1RIVU5ERVJYCTB4 MEExCj4gKyNkZWZpbmUgQ0FWSVVNX0NQVV9QQVJUX1RIVU5ERVJYXzgxWFgJMHgwQTIKPiArI2Rl ZmluZSBDQVZJVU1fQ1BVX1BBUlRfVEhVTkRFUlhfODNYWAkweDBBMwo+ICsjZGVmaW5lIENBVklV TV9DUFVfUEFSVF9USFVOREVSWDIJMHgwQUYKPiArLyogT2N0ZW9uVHgyIHNlcmllcyAqLwo+ICsj ZGVmaW5lIENBVklVTV9DUFVfUEFSVF9PQ1RYMl85OFhYCTB4MEIxCj4gKyNkZWZpbmUgQ0FWSVVN X0NQVV9QQVJUX09DVFgyXzk2WFgJMHgwQjIKPiArI2RlZmluZSBDQVZJVU1fQ1BVX1BBUlRfT0NU WDJfOTVYWAkweDBCMwo+ICsjZGVmaW5lIENBVklVTV9DUFVfUEFSVF9PQ1RYMl85NVhYTgkweDBC NAo+ICsjZGVmaW5lIENBVklVTV9DUFVfUEFSVF9PQ1RYMl85NVhYTU0JMHgwQjUKPiArI2RlZmlu ZSBDQVZJVU1fQ1BVX1BBUlRfT0NUWDJfOTVYWE8JMHgwQjYKPiArCj4gKyNkZWZpbmUgQlJDTV9D UFVfUEFSVF9CUkFITUFfQjUzCTB4MTAwCj4gKyNkZWZpbmUgQlJDTV9DUFVfUEFSVF9WVUxDQU4J CTB4NTE2Cj4gKwo+ICsjZGVmaW5lIFFDT01fQ1BVX1BBUlRfRkFMS09SX1YxCQkweDgwMAo+ICsj ZGVmaW5lIFFDT01fQ1BVX1BBUlRfRkFMS09SCQkweEMwMAo+ICsjZGVmaW5lIFFDT01fQ1BVX1BB UlRfS1JZTwkJMHgyMDAKPiArI2RlZmluZSBRQ09NX0NQVV9QQVJUX0tSWU9fMlhYX0dPTEQJMHg4 MDAKPiArI2RlZmluZSBRQ09NX0NQVV9QQVJUX0tSWU9fMlhYX1NJTFZFUgkweDgwMQo+ICsjZGVm aW5lIFFDT01fQ1BVX1BBUlRfS1JZT18zWFhfU0lMVkVSCTB4ODAzCj4gKyNkZWZpbmUgUUNPTV9D UFVfUEFSVF9LUllPXzRYWF9HT0xECTB4ODA0Cj4gKyNkZWZpbmUgUUNPTV9DUFVfUEFSVF9LUllP XzRYWF9TSUxWRVIJMHg4MDUKPiArCj4gKyNkZWZpbmUgTlZJRElBX0NQVV9QQVJUX0RFTlZFUgkJ MHgwMDMKPiArI2RlZmluZSBOVklESUFfQ1BVX1BBUlRfQ0FSTUVMCQkweDAwNAo+ICsKPiArI2Rl ZmluZSBGVUpJVFNVX0NQVV9QQVJUX0E2NEZYCQkweDAwMQo+ICsKPiArI2RlZmluZSBISVNJX0NQ VV9QQVJUX1RTVjExMAkJMHhEMDEKPiArCj4gKyNkZWZpbmUgQVBQTEVfQ1BVX1BBUlRfTTFfSUNF U1RPUk0JMHgwMjIKPiArI2RlZmluZSBBUFBMRV9DUFVfUEFSVF9NMV9GSVJFU1RPUk0JMHgwMjMK PiArCj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfQTUzIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1Q X0FSTSwgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNTMpCj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfQTU3 IE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FSTSwgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNTcp Cj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfQTcyIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FS TSwgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzIpCj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfQTczIE1J RFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FSTSwgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzMpCj4g KyNkZWZpbmUgTUlEUl9DT1JURVhfQTc1IE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FSTSwg QVJNX0NQVV9QQVJUX0NPUlRFWF9BNzUpCj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfQTM1IE1JRFJf Q1BVX01PREVMKEFSTV9DUFVfSU1QX0FSTSwgQVJNX0NQVV9QQVJUX0NPUlRFWF9BMzUpCj4gKyNk ZWZpbmUgTUlEUl9DT1JURVhfQTU1IE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FSTSwgQVJN X0NQVV9QQVJUX0NPUlRFWF9BNTUpCj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfQTc2CU1JRFJfQ1BV X01PREVMKEFSTV9DUFVfSU1QX0FSTSwgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNzYpCj4gKyNkZWZp bmUgTUlEUl9ORU9WRVJTRV9OMSBNSURSX0NQVV9NT0RFTChBUk1fQ1BVX0lNUF9BUk0sIEFSTV9D UFVfUEFSVF9ORU9WRVJTRV9OMSkKPiArI2RlZmluZSBNSURSX0NPUlRFWF9BNzcJTUlEUl9DUFVf TU9ERUwoQVJNX0NQVV9JTVBfQVJNLCBBUk1fQ1BVX1BBUlRfQ09SVEVYX0E3NykKPiArI2RlZmlu ZSBNSURSX05FT1ZFUlNFX1YxCU1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FSTSwgQVJNX0NQ VV9QQVJUX05FT1ZFUlNFX1YxKQo+ICsjZGVmaW5lIE1JRFJfQ09SVEVYX0E3OAlNSURSX0NQVV9N T0RFTChBUk1fQ1BVX0lNUF9BUk0sIEFSTV9DUFVfUEFSVF9DT1JURVhfQTc4KQo+ICsjZGVmaW5l IE1JRFJfQ09SVEVYX1gxCU1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FSTSwgQVJNX0NQVV9Q QVJUX0NPUlRFWF9YMSkKPiArI2RlZmluZSBNSURSX0NPUlRFWF9BNTEwIE1JRFJfQ1BVX01PREVM KEFSTV9DUFVfSU1QX0FSTSwgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNTEwKQo+ICsjZGVmaW5lIE1J RFJfQ09SVEVYX0E3MTAgTUlEUl9DUFVfTU9ERUwoQVJNX0NQVV9JTVBfQVJNLCBBUk1fQ1BVX1BB UlRfQ09SVEVYX0E3MTApCj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfWDIgTUlEUl9DUFVfTU9ERUwo QVJNX0NQVV9JTVBfQVJNLCBBUk1fQ1BVX1BBUlRfQ09SVEVYX1gyKQo+ICsjZGVmaW5lIE1JRFJf TkVPVkVSU0VfTjIgTUlEUl9DUFVfTU9ERUwoQVJNX0NQVV9JTVBfQVJNLCBBUk1fQ1BVX1BBUlRf TkVPVkVSU0VfTjIpCj4gKyNkZWZpbmUgTUlEUl9DT1JURVhfQTc4QwlNSURSX0NQVV9NT0RFTChB Uk1fQ1BVX0lNUF9BUk0sIEFSTV9DUFVfUEFSVF9DT1JURVhfQTc4QykKPiArI2RlZmluZSBNSURS X1RIVU5ERVJYCU1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0NBVklVTSwgQ0FWSVVNX0NQVV9Q QVJUX1RIVU5ERVJYKQo+ICsjZGVmaW5lIE1JRFJfVEhVTkRFUlhfODFYWCBNSURSX0NQVV9NT0RF TChBUk1fQ1BVX0lNUF9DQVZJVU0sIENBVklVTV9DUFVfUEFSVF9USFVOREVSWF84MVhYKQo+ICsj ZGVmaW5lIE1JRFJfVEhVTkRFUlhfODNYWCBNSURSX0NQVV9NT0RFTChBUk1fQ1BVX0lNUF9DQVZJ VU0sIENBVklVTV9DUFVfUEFSVF9USFVOREVSWF84M1hYKQo+ICsjZGVmaW5lIE1JRFJfT0NUWDJf OThYWCBNSURSX0NQVV9NT0RFTChBUk1fQ1BVX0lNUF9DQVZJVU0sIENBVklVTV9DUFVfUEFSVF9P Q1RYMl85OFhYKQo+ICsjZGVmaW5lIE1JRFJfT0NUWDJfOTZYWCBNSURSX0NQVV9NT0RFTChBUk1f Q1BVX0lNUF9DQVZJVU0sIENBVklVTV9DUFVfUEFSVF9PQ1RYMl85NlhYKQo+ICsjZGVmaW5lIE1J RFJfT0NUWDJfOTVYWCBNSURSX0NQVV9NT0RFTChBUk1fQ1BVX0lNUF9DQVZJVU0sIENBVklVTV9D UFVfUEFSVF9PQ1RYMl85NVhYKQo+ICsjZGVmaW5lIE1JRFJfT0NUWDJfOTVYWE4gTUlEUl9DUFVf TU9ERUwoQVJNX0NQVV9JTVBfQ0FWSVVNLCBDQVZJVU1fQ1BVX1BBUlRfT0NUWDJfOTVYWE4pCj4g KyNkZWZpbmUgTUlEUl9PQ1RYMl85NVhYTU0gTUlEUl9DUFVfTU9ERUwoQVJNX0NQVV9JTVBfQ0FW SVVNLCBDQVZJVU1fQ1BVX1BBUlRfT0NUWDJfOTVYWE1NKQo+ICsjZGVmaW5lIE1JRFJfT0NUWDJf OTVYWE8gTUlEUl9DUFVfTU9ERUwoQVJNX0NQVV9JTVBfQ0FWSVVNLCBDQVZJVU1fQ1BVX1BBUlRf T0NUWDJfOTVYWE8pCj4gKyNkZWZpbmUgTUlEUl9DQVZJVU1fVEhVTkRFUlgyIE1JRFJfQ1BVX01P REVMKEFSTV9DUFVfSU1QX0NBVklVTSwgQ0FWSVVNX0NQVV9QQVJUX1RIVU5ERVJYMikKPiArI2Rl ZmluZSBNSURSX0JSQUhNQV9CNTMgTUlEUl9DUFVfTU9ERUwoQVJNX0NQVV9JTVBfQlJDTSwgQlJD TV9DUFVfUEFSVF9CUkFITUFfQjUzKQo+ICsjZGVmaW5lIE1JRFJfQlJDTV9WVUxDQU4gTUlEUl9D UFVfTU9ERUwoQVJNX0NQVV9JTVBfQlJDTSwgQlJDTV9DUFVfUEFSVF9WVUxDQU4pCj4gKyNkZWZp bmUgTUlEUl9RQ09NX0ZBTEtPUl9WMSBNSURSX0NQVV9NT0RFTChBUk1fQ1BVX0lNUF9RQ09NLCBR Q09NX0NQVV9QQVJUX0ZBTEtPUl9WMSkKPiArI2RlZmluZSBNSURSX1FDT01fRkFMS09SIE1JRFJf Q1BVX01PREVMKEFSTV9DUFVfSU1QX1FDT00sIFFDT01fQ1BVX1BBUlRfRkFMS09SKQo+ICsjZGVm aW5lIE1JRFJfUUNPTV9LUllPIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX1FDT00sIFFDT01f Q1BVX1BBUlRfS1JZTykKPiArI2RlZmluZSBNSURSX1FDT01fS1JZT18yWFhfR09MRCBNSURSX0NQ VV9NT0RFTChBUk1fQ1BVX0lNUF9RQ09NLCBRQ09NX0NQVV9QQVJUX0tSWU9fMlhYX0dPTEQpCj4g KyNkZWZpbmUgTUlEUl9RQ09NX0tSWU9fMlhYX1NJTFZFUiBNSURSX0NQVV9NT0RFTChBUk1fQ1BV X0lNUF9RQ09NLCBRQ09NX0NQVV9QQVJUX0tSWU9fMlhYX1NJTFZFUikKPiArI2RlZmluZSBNSURS X1FDT01fS1JZT18zWFhfU0lMVkVSIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX1FDT00sIFFD T01fQ1BVX1BBUlRfS1JZT18zWFhfU0lMVkVSKQo+ICsjZGVmaW5lIE1JRFJfUUNPTV9LUllPXzRY WF9HT0xEIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX1FDT00sIFFDT01fQ1BVX1BBUlRfS1JZ T180WFhfR09MRCkKPiArI2RlZmluZSBNSURSX1FDT01fS1JZT180WFhfU0lMVkVSIE1JRFJfQ1BV X01PREVMKEFSTV9DUFVfSU1QX1FDT00sIFFDT01fQ1BVX1BBUlRfS1JZT180WFhfU0lMVkVSKQo+ ICsjZGVmaW5lIE1JRFJfTlZJRElBX0RFTlZFUiBNSURSX0NQVV9NT0RFTChBUk1fQ1BVX0lNUF9O VklESUEsIE5WSURJQV9DUFVfUEFSVF9ERU5WRVIpCj4gKyNkZWZpbmUgTUlEUl9OVklESUFfQ0FS TUVMIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX05WSURJQSwgTlZJRElBX0NQVV9QQVJUX0NB Uk1FTCkKPiArI2RlZmluZSBNSURSX0ZVSklUU1VfQTY0RlggTUlEUl9DUFVfTU9ERUwoQVJNX0NQ VV9JTVBfRlVKSVRTVSwgRlVKSVRTVV9DUFVfUEFSVF9BNjRGWCkKPiArI2RlZmluZSBNSURSX0hJ U0lfVFNWMTEwIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0hJU0ksIEhJU0lfQ1BVX1BBUlRf VFNWMTEwKQo+ICsjZGVmaW5lIE1JRFJfQVBQTEVfTTFfSUNFU1RPUk0gTUlEUl9DUFVfTU9ERUwo QVJNX0NQVV9JTVBfQVBQTEUsIEFQUExFX0NQVV9QQVJUX00xX0lDRVNUT1JNKQo+ICsjZGVmaW5l IE1JRFJfQVBQTEVfTTFfRklSRVNUT1JNIE1JRFJfQ1BVX01PREVMKEFSTV9DUFVfSU1QX0FQUExF LCBBUFBMRV9DUFVfUEFSVF9NMV9GSVJFU1RPUk0pCj4gKwo+ICsvKiBGdWppdHN1IEVycmF0dW0g MDEwMDAxIGFmZmVjdHMgQTY0RlggMS4wIGFuZCAxLjEsICh2MHIwIGFuZCB2MXIwKSAqLwo+ICsj ZGVmaW5lIE1JRFJfRlVKSVRTVV9FUlJBVFVNXzAxMDAwMQkJTUlEUl9GVUpJVFNVX0E2NEZYCj4g KyNkZWZpbmUgTUlEUl9GVUpJVFNVX0VSUkFUVU1fMDEwMDAxX01BU0sJKH5NSURSX0NQVV9WQVJf UkVWKDEsIDApKQo+ICsjZGVmaW5lIFRDUl9DTEVBUl9GVUpJVFNVX0VSUkFUVU1fMDEwMDAxCShU Q1JfTkZEMSB8IFRDUl9ORkQwKQo+ICsKPiArI2lmbmRlZiBfX0FTU0VNQkxZX18KPiArCj4gKyNp bmNsdWRlICJzeXNyZWcuaCIKPiArCj4gKyNkZWZpbmUgcmVhZF9jcHVpZChyZWcpCQkJcmVhZF9z eXNyZWdfcyhTWVNfICMjIHJlZykKPiArCj4gKy8qCj4gKyAqIFJlcHJlc2VudCBhIHJhbmdlIG9m IE1JRFIgdmFsdWVzIGZvciBhIGdpdmVuIENQVSBtb2RlbCBhbmQgYQo+ICsgKiByYW5nZSBvZiB2 YXJpYW50L3JldmlzaW9uIHZhbHVlcy4KPiArICoKPiArICogQG1vZGVsCS0gQ1BVIG1vZGVsIGFz IGRlZmluZWQgYnkgTUlEUl9DUFVfTU9ERUwKPiArICogQHJ2X21pbgktIE1pbmltdW0gdmFsdWUg Zm9yIHRoZSByZXZpc2lvbi92YXJpYW50IGFzIGRlZmluZWQgYnkKPiArICoJCSAgTUlEUl9DUFVf VkFSX1JFVgo+ICsgKiBAcnZfbWF4CS0gTWF4aW11bSB2YWx1ZSBmb3IgdGhlIHZhcmlhbnQvcmV2 aXNpb24gZm9yIHRoZSByYW5nZS4KPiArICovCj4gK3N0cnVjdCBtaWRyX3JhbmdlIHsKPiArCXUz MiBtb2RlbDsKPiArCXUzMiBydl9taW47Cj4gKwl1MzIgcnZfbWF4Owo+ICt9Owo+ICsKPiArI2Rl ZmluZSBNSURSX1JBTkdFKG0sIHZfbWluLCByX21pbiwgdl9tYXgsIHJfbWF4KQkJXAo+ICsJewkJ CQkJCQlcCj4gKwkJLm1vZGVsID0gbSwJCQkJCVwKPiArCQkucnZfbWluID0gTUlEUl9DUFVfVkFS X1JFVih2X21pbiwgcl9taW4pLAlcCj4gKwkJLnJ2X21heCA9IE1JRFJfQ1BVX1ZBUl9SRVYodl9t YXgsIHJfbWF4KSwJXAo+ICsJfQo+ICsKPiArI2RlZmluZSBNSURSX1JFVl9SQU5HRShtLCB2LCBy X21pbiwgcl9tYXgpIE1JRFJfUkFOR0UobSwgdiwgcl9taW4sIHYsIHJfbWF4KQo+ICsjZGVmaW5l IE1JRFJfUkVWKG0sIHYsIHIpIE1JRFJfUkFOR0UobSwgdiwgciwgdiwgcikKPiArI2RlZmluZSBN SURSX0FMTF9WRVJTSU9OUyhtKSBNSURSX1JBTkdFKG0sIDAsIDAsIDB4ZiwgMHhmKQo+ICsKPiAr c3RhdGljIGlubGluZSBib29sIG1pZHJfaXNfY3B1X21vZGVsX3JhbmdlKHUzMiBtaWRyLCB1MzIg bW9kZWwsIHUzMiBydl9taW4sCj4gKwkJCQkJICAgdTMyIHJ2X21heCkKPiArewo+ICsJdTMyIF9t b2RlbCA9IG1pZHIgJiBNSURSX0NQVV9NT0RFTF9NQVNLOwo+ICsJdTMyIHJ2ID0gbWlkciAmIChN SURSX1JFVklTSU9OX01BU0sgfCBNSURSX1ZBUklBTlRfTUFTSyk7Cj4gKwo+ICsJcmV0dXJuIF9t b2RlbCA9PSBtb2RlbCAmJiBydiA+PSBydl9taW4gJiYgcnYgPD0gcnZfbWF4Owo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNfbWlkcl9pbl9yYW5nZSh1MzIgbWlkciwgc3RydWN0IG1p ZHJfcmFuZ2UgY29uc3QgKnJhbmdlKQo+ICt7Cj4gKwlyZXR1cm4gbWlkcl9pc19jcHVfbW9kZWxf cmFuZ2UobWlkciwgcmFuZ2UtPm1vZGVsLAo+ICsJCQkJICAgICAgIHJhbmdlLT5ydl9taW4sIHJh bmdlLT5ydl9tYXgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiAraXNfbWlkcl9p bl9yYW5nZV9saXN0KHUzMiBtaWRyLCBzdHJ1Y3QgbWlkcl9yYW5nZSBjb25zdCAqcmFuZ2VzKQo+ ICt7Cj4gKwl3aGlsZSAocmFuZ2VzLT5tb2RlbCkKPiArCQlpZiAoaXNfbWlkcl9pbl9yYW5nZSht aWRyLCByYW5nZXMrKykpCj4gKwkJCXJldHVybiB0cnVlOwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9 Cj4gKwo+ICsvKgo+ICsgKiBUaGUgQ1BVIElEIG5ldmVyIGNoYW5nZXMgYXQgcnVuIHRpbWUsIHNv IHdlIG1pZ2h0IGFzIHdlbGwgdGVsbCB0aGUKPiArICogY29tcGlsZXIgdGhhdCBpdCdzIGNvbnN0 YW50LiAgVXNlIHRoaXMgZnVuY3Rpb24gdG8gcmVhZCB0aGUgQ1BVIElECj4gKyAqIHJhdGhlciB0 aGFuIGRpcmVjdGx5IHJlYWRpbmcgcHJvY2Vzc29yX2lkIG9yIHJlYWRfY3B1aWQoKSBkaXJlY3Rs eS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgdTMyIF9fYXR0cmlidXRlX2NvbnN0X18gcmVhZF9j cHVpZF9pZCh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gcmVhZF9jcHVpZChNSURSX0VMMSk7Cj4gK30K PiArCj4gK3N0YXRpYyBpbmxpbmUgdTY0IF9fYXR0cmlidXRlX2NvbnN0X18gcmVhZF9jcHVpZF9t cGlkcih2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gcmVhZF9jcHVpZChNUElEUl9FTDEpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9jb25zdF9fIHJlYWRf Y3B1aWRfaW1wbGVtZW50b3Iodm9pZCkKPiArewo+ICsJcmV0dXJuIE1JRFJfSU1QTEVNRU5UT1Io cmVhZF9jcHVpZF9pZCgpKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg X19hdHRyaWJ1dGVfY29uc3RfXyByZWFkX2NwdWlkX3BhcnRfbnVtYmVyKHZvaWQpCj4gK3sKPiAr CXJldHVybiBNSURSX1BBUlROVU0ocmVhZF9jcHVpZF9pZCgpKTsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSB1MzIgX19hdHRyaWJ1dGVfY29uc3RfXyByZWFkX2NwdWlkX2NhY2hldHlwZSh2b2lk KQo+ICt7Cj4gKwlyZXR1cm4gcmVhZF9jcHVpZChDVFJfRUwwKTsKPiArfQo+ICsjZW5kaWYgLyog X19BU1NFTUJMWV9fICovCj4gKwo+ICsjZW5kaWYKPiAtLSAKPiAyLjMyLjAKCi0tIAoKLSBBcm5h bGRvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg==