Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp4124435rwb; Mon, 31 Jul 2023 01:31:56 -0700 (PDT) X-Google-Smtp-Source: APBJJlH5Tshbk8FUyqPzb4Bb8qFddL1tIFfClBYUsXNCpPiu9IVXUb0RV2s2HMWfJ8wvJ6+ojHH0 X-Received: by 2002:aa7:c6c7:0:b0:522:2019:2020 with SMTP id b7-20020aa7c6c7000000b0052220192020mr7705501eds.17.1690792316204; Mon, 31 Jul 2023 01:31:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690792316; cv=none; d=google.com; s=arc-20160816; b=hxOuIUDfsYBkRi0C3CmkwiKo0iHB16oyeHUnFyzpGQAirGnsxYTJebegRgQOaZyOLN r7o07TMFP9hOY3pmmWhlalisMeghvFqnDPaSNCV2YMqta5wcNV8QGhh+bTC7UR5q3u8l Gv+LqdzkIyBzjlF6EscuUW6142Qa2Y/VSu9YKVgJSVd3jFZtlE3Sx7AP1lLXnppybB8N pNawCkpCc3yIodq6VCFiTqba3qY3y4zH8aQlM61dALPbzR3jTMoIPmItMH4wXeMblVvd 06x5s2h8531knGoTRLFVSKO7zxOBSoXqPBFtxQaU4hPAgwUPrRZl+odyqJ+b1pVazmiv muBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id; bh=Xw7jE5Pk4a+E5gbKpAWrtkY/EN/ORE5xFi7azjYNJhE=; fh=k5yIRgwnpkg7reY4XEPgh5RuMLpPeH5+t6WT0to75ik=; b=QQluDGmudt+7q9JkHpImoxDybJa6bGItDbV9UUG2N/ZUoASmRyQfiRqAL/xacZ6535 wIatGY5cHa7RzsrZfEttCQRLezWZ5utemeMs//Z4BhQWUhyCMi38kqlxsw715h4fow/j w9RhoXBmfkz2pxRy1FABNa/QvZZBeixYeu5/+GS1Pv26zcQM9TDZg7pVy//QVgzCFnNm B3D7iiC4fbDs6Zd39zuG0T/KvMGwgELX3BXAyIshG0mz+uJ3unrUH9qJ77lPntDT3GKh UJyB7KpgxxZh6LUkcnG1Tdk5Ndu2j/YuQ5/dO6moFY4Epv+NgFv6s3ZQwQcsrRBRkHM6 lckg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p24-20020a056402075800b00522be90257csi1779049edy.466.2023.07.31.01.31.31; Mon, 31 Jul 2023 01:31:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231837AbjGaIMQ (ORCPT + 99 others); Mon, 31 Jul 2023 04:12:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230157AbjGaILw (ORCPT ); Mon, 31 Jul 2023 04:11:52 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E563E1B4; Mon, 31 Jul 2023 01:08:02 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C6126D75; Mon, 31 Jul 2023 01:08:45 -0700 (PDT) Received: from [192.168.1.3] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A96153F59C; Mon, 31 Jul 2023 01:08:00 -0700 (PDT) Message-ID: Date: Mon, 31 Jul 2023 09:07:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [PATCH V13 - RESEND 02/10] arm64/perf: Add BRBE registers and fields To: Anshuman Khandual , Will Deacon Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, catalin.marinas@arm.com, mark.rutland@arm.com, Mark Brown , Rob Herring , Marc Zyngier , Suzuki Poulose , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org References: <20230711082455.215983-1-anshuman.khandual@arm.com> <20230711082455.215983-3-anshuman.khandual@arm.com> <20230728162011.GA22050@willie-the-truck> <89ce4bc4-00c5-a763-3179-e1d3e9f198b7@arm.com> <937468a1-b325-7d05-8daf-765f911c9240@arm.com> Content-Language: en-US From: James Clark In-Reply-To: <937468a1-b325-7d05-8daf-765f911c9240@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 31/07/2023 03:33, Anshuman Khandual wrote: > > > On 7/28/23 22:22, James Clark wrote: >> >> >> On 28/07/2023 17:20, Will Deacon wrote: >>> On Tue, Jul 11, 2023 at 01:54:47PM +0530, Anshuman Khandual wrote: >>>> This adds BRBE related register definitions and various other related field >>>> macros there in. These will be used subsequently in a BRBE driver which is >>>> being added later on. >>>> >>>> Cc: Catalin Marinas >>>> Cc: Will Deacon >>>> Cc: Marc Zyngier >>>> Cc: Mark Rutland >>>> Cc: linux-arm-kernel@lists.infradead.org >>>> Cc: linux-kernel@vger.kernel.org >>>> Tested-by: James Clark >>>> Reviewed-by: Mark Brown >>>> Signed-off-by: Anshuman Khandual >>>> --- >>>> arch/arm64/include/asm/sysreg.h | 103 +++++++++++++++++++++ >>>> arch/arm64/tools/sysreg | 158 ++++++++++++++++++++++++++++++++ >>>> 2 files changed, 261 insertions(+) >>>> >>>> diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h >>>> index b481935e9314..f95e30c13c8b 100644 >>>> --- a/arch/arm64/include/asm/sysreg.h >>>> +++ b/arch/arm64/include/asm/sysreg.h >>>> @@ -163,6 +163,109 @@ >>>> #define SYS_DBGDTRTX_EL0 sys_reg(2, 3, 0, 5, 0) >>>> #define SYS_DBGVCR32_EL2 sys_reg(2, 4, 0, 7, 0) >>>> >>>> +#define __SYS_BRBINFO(n) sys_reg(2, 1, 8, ((n) & 0xf), ((((n) & 0x10)) >> 2 + 0)) >>>> +#define __SYS_BRBSRC(n) sys_reg(2, 1, 8, ((n) & 0xf), ((((n) & 0x10)) >> 2 + 1)) >>>> +#define __SYS_BRBTGT(n) sys_reg(2, 1, 8, ((n) & 0xf), ((((n) & 0x10)) >> 2 + 2)) >>> >>> It's that time on a Friday but... aren't these macros busted? I think you >>> need brackets before adding the offset, otherwise wouldn't, for example, >>> target registers 0-15 all access info register 0 and __SYS_BRBTGT(16) would >>> then start accessing source register 0? >>> >>> I'm surprised that the compiler doesn't warn about this, but even more >>> surprised that you managed to test this. >>> >>> Please tell me I'm wrong! >>> >>> Will >> >> No I think you are right, it is wrong. Luckily there is already an >> extraneous bracket so you you can fix it by moving one a place down: >> >> sys_reg(2, 1, 8, ((n) & 0xf), ((((n) & 0x10) >> 2) + 2)) >> >> It's interesting because the test [1] is doing quite a bit and looking >> at the branch info, and that src and targets match up to function names. >> I also manually looked at the branch buffers and didn't see anything >> obviously wrong like things that looked like branch infos in the source >> or target fields. Will have to take another look to see if it would be >> possible for the test to catch this. >> >> James >> >> [1]: >> https://gitlab.arm.com/linux-arm/linux-jc/-/commit/3a7ddce70c2daadb63fcc511de0a89055ca48b32 > > ((((n) & 0x10)) >> 2 + 2) ---> ((((n) & 0x10) >> 2) + 2) > > The additional brackets are useful in explicitly telling the compiler but > what it the compiler is just doing the right thing implicitly i.e computing > the shifting operation before doing the offset addition. During testing, all > those captured branch records looked alright. But that is no excuse, for not > doing the right thing to begin with i.e adding explicit brackets. I will fix > these in next version. Are you sure? If you see the return value here, it's 0 until register 16, then it becomes 1: https://godbolt.org/z/c7zhbno3n If you add the bracket it does actually change the return value.