Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4272609pxv; Mon, 19 Jul 2021 22:48:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyHAcGcerpDCv5AHIITiK/HilGgu+YnSpLnpWRp+yuKmLbxuJqtWrrma+FHOoT+mX9qGBkO X-Received: by 2002:a17:906:70b:: with SMTP id y11mr30848024ejb.328.1626760080865; Mon, 19 Jul 2021 22:48:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626760080; cv=none; d=google.com; s=arc-20160816; b=C7ef0uqgOpMsuAI3TJE1iH+fAgvHXJGYDa9d2MAxDnBWF5Jg/f/ZPbP8NI+bGZPFKy oEyWNa9txwWawl35OwIYNFELYULoMTfXGKoxt1d7FfsXaR2Yi7adoyhb/nKVn7MZTkCz R8bE4bftliOVc3c3v44izu2ZJBMKhL4YycCm4HYeVoW5AAPZdr+wvw3PXhWF1Qve1FMJ gK8nefCp5bWGgF+YtFzwmPuq7iRkOf0YLy+2uGoGduH29gaM0bc52ZR63ZmjuDm7ZB7G ieMYQ4vYDEcNtREo1YAH4eN8VhnTn0thI9epzyX68/NODkZaVCLO8zaGsNVy9bty4gIY FnCA== 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=Sky0m1zkNTA75j9sDva6jJzx6ezxLcveD1wic3cSVP4=; b=SQP7vEEX333lLO6IRlODAfZocUSZBRP0lRZhX6Eaid+GLS+jbGEgmFqPk9LtBfJHN4 x1WOYc28DyY9inmFh2Nsn3pQq9K/Trsaadh9f1Wkhr+IvbiPwMI+ZorKaMpoDGHkngdH r4DzzRMLYjUF8hXMvNLFLePrLNRCrCz1MFLZbpVxK9a+V1Csu/yXpAQgilFD2lcKE6TJ Hci4LFp1nm1STSc5aJIhD151Ll2lm5mFfAtkDuHjDf2hqbY2AxBb1dnw+VT+CWmBYKaB VbL9A/lJ+i2awYX5DKRWkYF+22pXZvvsKNVUH79TVK8aOYrtxJe6hgOZoRJzXpfQDuNX A2mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=iKLn0cMG; 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 g13si16362948ejo.277.2021.07.19.22.47.36; Mon, 19 Jul 2021 22:48:00 -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=iKLn0cMG; 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 S229684AbhGTFFl (ORCPT + 99 others); Tue, 20 Jul 2021 01:05:41 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:48603 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232809AbhGTFFi (ORCPT ); Tue, 20 Jul 2021 01:05:38 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1626759977; h=Message-ID: References: In-Reply-To: Subject: Cc: To: From: Date: Content-Transfer-Encoding: Content-Type: MIME-Version: Sender; bh=Sky0m1zkNTA75j9sDva6jJzx6ezxLcveD1wic3cSVP4=; b=iKLn0cMG1BLA2iYXC0YQ2O1eMPGfJNx0QLsJ5nCJR1NU7H6quG+ZtwuilmXoGSI2pAfkfTVn e1cKUAR9hWxaQWRSzaZHqgn/i/yebT60MU/gtm+Tm3UYrwXlSfUL8xE9SSFRYf79Dbt3hkTK zW/4BxRFZop/cFKQQuqiMoXffeI= 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-n06.prod.us-west-2.postgun.com with SMTP id 60f6632896a66e66b208ca50 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Tue, 20 Jul 2021 05:46:16 GMT Sender: schowdhu=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id BDD2AC43460; Tue, 20 Jul 2021 05:46: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 8D73FC433F1; Tue, 20 Jul 2021 05:46:13 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Tue, 20 Jul 2021 11:16:13 +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 V5 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-06-30 19:19, 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 v5: > > *Fixed the issue with timeout faced while polling dcc_status register > in case > of software triggers.Increased the timeout from 100 us to 5000 us to > enable > dcc to process larger register sets in case of software triggers. > > 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