Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp311660pxj; Thu, 27 May 2021 00:14:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyX6IXrab2uYcPbunpoegh3W+jusbjJGVmSYWTsd07vUVlQdMf8hwy67VjEj/iKF0P8pQmc X-Received: by 2002:a17:906:26db:: with SMTP id u27mr2356347ejc.532.1622099685772; Thu, 27 May 2021 00:14:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622099685; cv=none; d=google.com; s=arc-20160816; b=N34txxMUE4ngsS2BOdffiVHjUwPuh6ekfWqb/4s317U1jO6Yy8y/eLB4/ToucMNDyS ImpJwKbYi/7CSERnO2adBhSDEtXjE5O3qO9a1uZxKbaKv4xnr3FeWrdRbEPIAFYh8BDu tU8rmIbWvvOUDP1IawYvU6aPlpRiUgkekP6gxISLbFVSpQjRXnyrkxhHIvYR91j8FWcj WBQDFkajVsUhur7hE+aLVfheyzBiOq/LHI42xpYqyqBPPzwd+JrteTCRY1hkPmEGsTKs zyn7Cd1oF5+NNxvFdMU3yPhj8UXDCCzWwNb6v9lzoNm+F53rAFdVKdWgri4qHPZISV++ NxAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:message-id:references:in-reply-to :subject:cc:to:from:date:content-transfer-encoding:mime-version :sender:dkim-signature; bh=8lksUp1qCJXiBU12bEnLm7XV+ucQTovs88KOZ7ewuHk=; b=My3PyZS0hWK1t9+ZtttYoQahWiHDmL+KUCvZ0nVhxHQyQSNnUeauubh3xMbUpt5JzM xmJsl+XPRB8CrSotzJMAJJF1tUGSRoKtf8CfRdSZxobZfcO7Nix2UTpZU2t1xYbYu2AN XrF+7yOmxsoaABq200ytrlI2KzwaAVlWC/oZvtn0bX6KQ9Nt8fHWHMflTl6DOdDMetpu W3yra+yGZJ9ojhRYXpDVL50xHl3pvZ3oDyEOP6xS5nyY0jpzQdQEodTqHW13pQQdA/0R NH8lL5tYob3voSFVNKibistnpV4DlzcDuIi+sOshvi261Y/VJUKwcuFq5CylYaJ3dm8Y 95xw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=tbv6jJe6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f24si1452122ejz.234.2021.05.27.00.14.22; Thu, 27 May 2021 00:14:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=tbv6jJe6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233922AbhE0F1A (ORCPT + 99 others); Thu, 27 May 2021 01:27:00 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:26409 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233918AbhE0F04 (ORCPT ); Thu, 27 May 2021 01:26:56 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1622093124; h=Message-ID: References: In-Reply-To: Subject: Cc: To: From: Date: Content-Transfer-Encoding: Content-Type: MIME-Version: Sender; bh=8lksUp1qCJXiBU12bEnLm7XV+ucQTovs88KOZ7ewuHk=; b=tbv6jJe6cm+SlIUgecihg8gSQtSFg9QtIKI3IxmjgaHHDg6a1La3DxajmScbc2WSu6LUqrhn 0aHLk1DQgPoecYdU8hMdx3bfiExYgJHQygFsH3rYR/HUP0C+pIUh5TYl0UrSnjHLvpBKOVY9 GZVx3tw2aXDhHAc0uRJU7XF4cYQ= X-Mailgun-Sending-Ip: 198.61.254.9 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n07.prod.us-west-2.postgun.com with SMTP id 60af2d3c5f788b52a57d009b (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Thu, 27 May 2021 05:25:16 GMT Sender: schowdhu=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id E9C15C43460; Thu, 27 May 2021 05:25:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.codeaurora.org (localhost.localdomain [127.0.0.1]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: schowdhu) by smtp.codeaurora.org (Postfix) with ESMTPSA id BE2ABC433F1; Thu, 27 May 2021 05:25:14 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Thu, 27 May 2021 10:55:14 +0530 From: schowdhu@codeaurora.org To: Andy Gross , Bjorn Andersson , Rob Herring Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, Sai Prakash Ranjan , Sibi Sankar , Rajendra Nayak , vkoul@kernel.org Subject: Re: [PATCH V4 0/4] Add driver support for Data Capture and Compare Engine(DCC) for SM8150 In-Reply-To: References: Message-ID: X-Sender: schowdhu@codeaurora.org User-Agent: Roundcube Webmail/1.3.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2021-05-03 21:47, Souradeep Chowdhury wrote: > DCC(Data Capture and Compare) is a DMA engine designed for debugging > purposes.In case of a system > crash or manual software triggers by the user the DCC hardware stores > the value at the register > addresses which can be used for debugging purposes.The DCC driver > provides the user with sysfs > interface to configure the register addresses.The options that the DCC > hardware provides include > reading from registers,writing to registers,first reading and then > writing to registers and looping > through the values of the same register. > > In certain cases a register write needs to be executed for accessing > the rest of the registers, > also the user might want to record the changing values of a register > with time for which he has the > option to use the loop feature. > > The options mentioned above are exposed to the user by sysfs files > once the driver is probed.The > details and usage of this sysfs files are documented in > Documentation/ABI/testing/sysfs-driver-dcc. > > As an example let us consider a couple of debug scenarios where DCC > has been proved to be effective > for debugging purposes:- > > i)TimeStamp Related Issue > > On SC7180, there was a coresight timestamp issue where it would > occasionally be all 0 instead of proper > timestamp values. > > Proper timestamp: > Idx:3373; ID:10; I_TIMESTAMP : Timestamp.; Updated val = > 0x13004d8f5b7aa; CC=0x9e > > Zero timestamp: > Idx:3387; ID:10; I_TIMESTAMP : Timestamp.; Updated val = 0x0; CC=0xa2 > > Now this is a non-fatal issue and doesn't need a system reset, but > still needs > to be rootcaused and fixed for those who do care about coresight etm > traces. > Since this is a timestamp issue, we would be looking for any timestamp > related > clocks and such. > > o we get all the clk register details from IP documentation and > configure it > via DCC config syfs node. Before that we set the current linked list. > > /* Set the current linked list */ > echo 3 > /sys/bus/platform/devices/10a2000.dcc/curr_list > > /* Program the linked list with the addresses */ > echo 0x10c004 > /sys/bus/platform/devices/10a2000.dcc/config > echo 0x10c008 > /sys/bus/platform/devices/10a2000.dcc/config > echo 0x10c00c > /sys/bus/platform/devices/10a2000.dcc/config > echo 0x10c010 > /sys/bus/platform/devices/10a2000.dcc/config > ..... and so on for other timestamp related clk registers > > /* Other way of specifying is in "addr len" pair, in below case it > specifies to capture 4 words starting 0x10C004 */ > > echo 0x10C004 4 > /sys/bus/platform/devices/10a2000.dcc/config > > /* Enable DCC */ > echo 1 > /sys/bus/platform/devices/10a2000.dcc/enable > > /* Run the timestamp test for working case */ > > /* Send SW trigger */ > echo 1 > /sys/bus/platform/devices/10a2000.dcc/trigger > > /* Read SRAM */ > cat /dev/dcc_sram > dcc_sram1.bin > > /* Run the timestamp test for non-working case */ > > /* Send SW trigger */ > echo 1 > /sys/bus/platform/devices/10a2000.dcc/trigger > > /* Read SRAM */ > cat /dev/dcc_sram > dcc_sram2.bin > > Get the parser from [1] and checkout the latest branch. > > /* Parse the SRAM bin */ > python dcc_parser.py -s dcc_sram1.bin --v2 -o output/ > python dcc_parser.py -s dcc_sram2.bin --v2 -o output/ > > Sample parsed output of dcc_sram1.bin: > > > 03/14/21 > Linux DCC Parser > > > > > > > next_ll_offset : 0x1c > > > ii)NOC register errors > > A particular class of registers called NOC which are functional > registers was reporting > errors while logging the values.To trace these errors the DCC has been > used effectively. > The steps followed were similar to the ones mentioned above. > In addition to NOC registers a few other dependent registers were > configured in DCC to > monitor it's values during a crash. A look at the dependent register > values revealed that > the crash was happening due to a secured access to one of these > dependent registers. > All these debugging activity and finding the root cause was achieved > using DCC. > > DCC parser is available at the following open source location > > https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/tools/tree/dcc_parser > > Changes in v4: > > *Implement all the comments on v3 of the patch. > *Incorporate code change for handling multiple SoCs. > *Incorporate code change for DCC_SRAM content to persist across warm > reboots. > *Fixed the issue with the Makefile in v3 of the patch. > > Souradeep Chowdhury (4): > dt-bindings: Added the yaml bindings for DCC > soc: qcom: dcc:Add driver support for Data Capture and Compare > unit(DCC) > MAINTAINERS: Add the entry for DCC(Data Capture and Compare) driver > support > arm64: dts: qcom: sm8150: Add Data Capture and Compare(DCC) support > node > > Documentation/ABI/testing/sysfs-driver-dcc | 114 ++ > .../devicetree/bindings/arm/msm/qcom,dcc.yaml | 40 + > MAINTAINERS | 8 + > arch/arm64/boot/dts/qcom/sm8150.dtsi | 6 + > drivers/soc/qcom/Kconfig | 8 + > drivers/soc/qcom/Makefile | 1 + > drivers/soc/qcom/dcc.c | 1534 > ++++++++++++++++++++ > 7 files changed, 1711 insertions(+) > create mode 100644 Documentation/ABI/testing/sysfs-driver-dcc > create mode 100644 > Documentation/devicetree/bindings/arm/msm/qcom,dcc.yaml > create mode 100644 drivers/soc/qcom/dcc.c Gentle Ping