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 8920CC4332F for ; Tue, 19 Apr 2022 12:01:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348783AbiDSMES (ORCPT ); Tue, 19 Apr 2022 08:04:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351961AbiDSMCR (ORCPT ); Tue, 19 Apr 2022 08:02:17 -0400 Received: from alexa-out.qualcomm.com (alexa-out.qualcomm.com [129.46.98.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F1492316A; Tue, 19 Apr 2022 04:58:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1650369530; x=1681905530; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=tBgvWdaivKxPupWluH3aaPmc9RwgWxsFZBbdngJpiVA=; b=JcjUbGWeMsDFfx1rbGnrA6cMcVZ/L1jo5VFc6WkYse2CP0pkNToMfpqA p22zFlq6IZrU+6u75ltiJnEQHY/lIsr993DehZp/+7/uDI9/gTk31D3e7 FIIUWKhi0E16bMKkT0QDPX5FNs8E+8ew/SLjcdXujMSnVFOoSFqtadCEW 4=; Received: from ironmsg-lv-alpha.qualcomm.com ([10.47.202.13]) by alexa-out.qualcomm.com with ESMTP; 19 Apr 2022 04:58:50 -0700 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg-lv-alpha.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2022 04:58:49 -0700 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Tue, 19 Apr 2022 04:58:48 -0700 Received: from [10.79.142.210] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Tue, 19 Apr 2022 04:58:44 -0700 Message-ID: <07b820e5-87e7-37ea-734d-df3e994c9698@quicinc.com> Date: Tue, 19 Apr 2022 17:28:17 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH V7 0/7] Add driver support for Data Capture and Compare Engine(DCC) for SM8150,SC7280,SC7180,SDM845 Content-Language: en-CA To: Andy Gross , Bjorn Andersson , Rob Herring , Alex Elder CC: , , , , "Sai Prakash Ranjan" , Sibi Sankar , Rajendra Nayak , References: From: Souradeep Chowdhury In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 3/3/2022 11:57 AM, 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 debugfs 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 debugfs files once the driver > is probed. The details and usage of this debugfs files are documented in > Documentation/ABI/testing/debugfs-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. > > We get all the clk register details from IP documentation and configure it > via DCC config_read debugfs node. Before that we set the current linked list. > > /* Set the current linked list */ > echo 3 > /sys/kernel/debug/dcc/../curr_list > > /* Program the linked list with the addresses */ > echo 0x10c004 > /sys/kernel/debug/dcc/../config_read > echo 0x10c008 > /sys/kernel/debug/dcc/../config_read > echo 0x10c00c > /sys/kernel/debug/dcc/../config_read > echo 0x10c010 > /sys/kernel/debug/dcc/../config_read > ..... 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/kernel/debug/dcc/../config_read > > /* Enable DCC */ > echo 1 > /sys/kernel/debug/dcc/../enable > > /* Run the timestamp test for working case */ > > /* Send SW trigger */ > echo 1 > /sys/kernel/debug/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/kernel/debug/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 V7 > > *The DCC interface has been shifted from sysfs to debugfs. The new interface > details are documented in Documentation/ABI/testing/debugfs-driver-dcc. > > *All the rest of the comments from previous versions have been implemented. > > > Souradeep Chowdhury (7): > 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 > arm64: dts: qcom: sc7280: Add Data Capture and Compare(DCC) support > node > arm64: dts: qcom: sc7180: Add Data Capture and Compare(DCC) support > node > arm64: dts: qcom: sdm845: Add Data Capture and Compare(DCC) support > node > > Documentation/ABI/testing/debugfs-driver-dcc | 124 ++ > .../devicetree/bindings/arm/msm/qcom,dcc.yaml | 43 + > MAINTAINERS | 8 + > arch/arm64/boot/dts/qcom/sc7180.dtsi | 6 + > arch/arm64/boot/dts/qcom/sc7280.dtsi | 6 + > arch/arm64/boot/dts/qcom/sdm845.dtsi | 6 + > arch/arm64/boot/dts/qcom/sm8150.dtsi | 6 + > drivers/soc/qcom/Kconfig | 8 + > drivers/soc/qcom/Makefile | 1 + > drivers/soc/qcom/dcc.c | 1465 ++++++++++++++++++++ > 10 files changed, 1673 insertions(+) > create mode 100644 Documentation/ABI/testing/debugfs-driver-dcc > create mode 100644 Documentation/devicetree/bindings/arm/msm/qcom,dcc.yaml > create mode 100644 drivers/soc/qcom/dcc.c > > -- > 2.7.4 Hi, Gentle Ping  Let me know if there is any feedback regarding this patch Thanks, Souradeep 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 21561C433EF for ; Tue, 19 Apr 2022 13:13:54 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:CC:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ddyzy3s1ULg96wBqWazDYkphevpPGQJu2EPuHvVf0LY=; b=A8seJl2psxU509 oyGSNs6X11CtMB4XOVKyISUwN9k2ZaL7hvGGdH+XuhkDv9bBHVVrBhCEMKMEgYd8LSsEagtsWVVpn RIL/prMltdqU9IgwsRMYzzi3RZ68vh2zThm7CpjmHdwngBj2l2hP5CMQwrddmwX9bGedPDYmTxQ64 SrGE6ki0dbNy67d120901I27A13dba1+gnI9Amm4kvFEg6MgTe6fH1sY6t/rr7124j79VN3Lt1v79 yjRSAWpyoJqmCO2xSXWFHlImXMW+ShQDX/wSKHkCer5gwzeJqa4FQRxg51HIkkeDeBIHpVI5u9umX UCdwOccf56Ekp8F8bNxg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ngneW-003kBp-1E; Tue, 19 Apr 2022 13:12:20 +0000 Received: from alexa-out.qualcomm.com ([129.46.98.28]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ngmVR-003IiO-FV for linux-arm-kernel@lists.infradead.org; Tue, 19 Apr 2022 11:58:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1650369533; x=1681905533; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=tBgvWdaivKxPupWluH3aaPmc9RwgWxsFZBbdngJpiVA=; b=RLseBp1HXcycghfYvQYHJpFpwXJwtdWVcC51rSD0FAkwVl1ZSt558gCd wIkoml9IahmHQqXCyNoTlA3V+qIvvhg00XlMjQHvisTrBH7JxaWaIoPr7 F3Lp/uwYOW8i+u8d4Po2tA2t2LUOkJzUEpK7TwtDU9ZMsCWX+Nyc+P+1W 8=; Received: from ironmsg-lv-alpha.qualcomm.com ([10.47.202.13]) by alexa-out.qualcomm.com with ESMTP; 19 Apr 2022 04:58:49 -0700 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg-lv-alpha.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2022 04:58:49 -0700 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Tue, 19 Apr 2022 04:58:48 -0700 Received: from [10.79.142.210] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Tue, 19 Apr 2022 04:58:44 -0700 Message-ID: <07b820e5-87e7-37ea-734d-df3e994c9698@quicinc.com> Date: Tue, 19 Apr 2022 17:28:17 +0530 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH V7 0/7] Add driver support for Data Capture and Compare Engine(DCC) for SM8150,SC7280,SC7180,SDM845 Content-Language: en-CA To: Andy Gross , Bjorn Andersson , Rob Herring , Alex Elder CC: , , , , "Sai Prakash Ranjan" , Sibi Sankar , Rajendra Nayak , References: From: Souradeep Chowdhury In-Reply-To: X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220419_045853_622319_365232E0 X-CRM114-Status: GOOD ( 34.77 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Ck9uIDMvMy8yMDIyIDExOjU3IEFNLCBTb3VyYWRlZXAgQ2hvd2RodXJ5IHdyb3RlOgo+IERDQyhE YXRhIENhcHR1cmUgYW5kIENvbXBhcmUpIGlzIGEgRE1BIGVuZ2luZSBkZXNpZ25lZCBmb3IgZGVi dWdnaW5nIHB1cnBvc2VzLgo+IEluIGNhc2Ugb2YgYSBzeXN0ZW0gY3Jhc2ggb3IgbWFudWFsIHNv ZnR3YXJlIHRyaWdnZXJzIGJ5IHRoZSB1c2VyIHRoZSBEQ0MgaGFyZHdhcmUKPiBzdG9yZXMgdGhl IHZhbHVlIGF0IHRoZSByZWdpc3RlciBhZGRyZXNzZXMgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRl YnVnZ2luZyBwdXJwb3Nlcy4KPiBUaGUgRENDIGRyaXZlciBwcm92aWRlcyB0aGUgdXNlciB3aXRo IGRlYnVnZnMgaW50ZXJmYWNlIHRvIGNvbmZpZ3VyZSB0aGUgcmVnaXN0ZXIKPiBhZGRyZXNzZXMu IFRoZSBvcHRpb25zIHRoYXQgdGhlIERDQyBoYXJkd2FyZSBwcm92aWRlcyBpbmNsdWRlIHJlYWRp bmcgZnJvbSByZWdpc3RlcnMsCj4gd3JpdGluZyB0byByZWdpc3RlcnMsIGZpcnN0IHJlYWRpbmcg YW5kIHRoZW4gd3JpdGluZyB0byByZWdpc3RlcnMgYW5kIGxvb3BpbmcKPiB0aHJvdWdoIHRoZSB2 YWx1ZXMgb2YgdGhlIHNhbWUgcmVnaXN0ZXIuCj4KPiBJbiBjZXJ0YWluIGNhc2VzIGEgcmVnaXN0 ZXIgd3JpdGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgZm9yIGFjY2Vzc2luZyB0aGUgcmVzdCBvZiB0 aGUKPiByZWdpc3RlcnMsIGFsc28gdGhlIHVzZXIgbWlnaHQgd2FudCB0byByZWNvcmQgdGhlIGNo YW5naW5nIHZhbHVlcyBvZiBhIHJlZ2lzdGVyIHdpdGgKPiB0aW1lIGZvciB3aGljaCBoZSBoYXMg dGhlIG9wdGlvbiB0byB1c2UgdGhlIGxvb3AgZmVhdHVyZS4KPgo+IFRoZSBvcHRpb25zIG1lbnRp b25lZCBhYm92ZSBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciBieSBkZWJ1Z2ZzIGZpbGVzIG9uY2Ug dGhlIGRyaXZlcgo+IGlzIHByb2JlZC4gVGhlIGRldGFpbHMgYW5kIHVzYWdlIG9mIHRoaXMgZGVi dWdmcyBmaWxlcyBhcmUgZG9jdW1lbnRlZCBpbgo+IERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcv ZGVidWdmcy1kcml2ZXItZGNjLgo+Cj4gQXMgYW4gZXhhbXBsZSBsZXQgdXMgY29uc2lkZXIgYSBj b3VwbGUgb2YgZGVidWcgc2NlbmFyaW9zIHdoZXJlIERDQyBoYXMgYmVlbiBwcm92ZWQgdG8gYmUK PiBlZmZlY3RpdmUgZm9yIGRlYnVnZ2luZyBwdXJwb3NlczotCj4KPiBpKVRpbWVTdGFtcCBSZWxh dGVkIElzc3VlCj4KPiBPbiBTQzcxODAsIHRoZXJlIHdhcyBhIGNvcmVzaWdodCB0aW1lc3RhbXAg aXNzdWUgd2hlcmUgaXQgd291bGQgb2NjYXNpb25hbGx5IGJlIGFsbCAwCj4gaW5zdGVhZCBvZiBw cm9wZXIgdGltZXN0YW1wIHZhbHVlcy4KPgo+IFByb3BlciB0aW1lc3RhbXA6Cj4gSWR4OjMzNzM7 IElEOjEwOyBJX1RJTUVTVEFNUCA6IFRpbWVzdGFtcC47IFVwZGF0ZWQgdmFsID0gMHgxMzAwNGQ4 ZjViN2FhOyBDQz0weDllCj4KPiBaZXJvIHRpbWVzdGFtcDoKPiBJZHg6MzM4NzsgSUQ6MTA7IElf VElNRVNUQU1QIDogVGltZXN0YW1wLjsgVXBkYXRlZCB2YWwgPSAweDA7IENDPTB4YTIKPgo+IE5v dyB0aGlzIGlzIGEgbm9uLWZhdGFsIGlzc3VlIGFuZCBkb2Vzbid0IG5lZWQgYSBzeXN0ZW0gcmVz ZXQsIGJ1dCBzdGlsbCBuZWVkcwo+IHRvIGJlIHJvb3RjYXVzZWQgYW5kIGZpeGVkIGZvciB0aG9z ZSB3aG8gZG8gY2FyZSBhYm91dCBjb3Jlc2lnaHQgZXRtIHRyYWNlcy4KPiBTaW5jZSB0aGlzIGlz IGEgdGltZXN0YW1wIGlzc3VlLCB3ZSB3b3VsZCBiZSBsb29raW5nIGZvciBhbnkgdGltZXN0YW1w IHJlbGF0ZWQKPiBjbG9ja3MgYW5kIHN1Y2guCj4KPiBXZSBnZXQgYWxsIHRoZSBjbGsgcmVnaXN0 ZXIgZGV0YWlscyBmcm9tIElQIGRvY3VtZW50YXRpb24gYW5kIGNvbmZpZ3VyZSBpdAo+IHZpYSBE Q0MgY29uZmlnX3JlYWQgZGVidWdmcyBub2RlLiBCZWZvcmUgdGhhdCB3ZSBzZXQgdGhlIGN1cnJl bnQgbGlua2VkIGxpc3QuCj4KPiAvKiBTZXQgdGhlIGN1cnJlbnQgbGlua2VkIGxpc3QgKi8KPiBl Y2hvIDMgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9kY2MvLi4vY3Vycl9saXN0Cj4KPiAvKiBQcm9ncmFt IHRoZSBsaW5rZWQgbGlzdCB3aXRoIHRoZSBhZGRyZXNzZXMgKi8KPiBlY2hvIDB4MTBjMDA0ID4g L3N5cy9rZXJuZWwvZGVidWcvZGNjLy4uL2NvbmZpZ19yZWFkCj4gZWNobyAweDEwYzAwOCA+IC9z eXMva2VybmVsL2RlYnVnL2RjYy8uLi9jb25maWdfcmVhZAo+IGVjaG8gMHgxMGMwMGMgPiAvc3lz L2tlcm5lbC9kZWJ1Zy9kY2MvLi4vY29uZmlnX3JlYWQKPiBlY2hvIDB4MTBjMDEwID4gL3N5cy9r ZXJuZWwvZGVidWcvZGNjLy4uL2NvbmZpZ19yZWFkCj4gLi4uLi4gYW5kIHNvIG9uIGZvciBvdGhl ciB0aW1lc3RhbXAgcmVsYXRlZCBjbGsgcmVnaXN0ZXJzCj4KPiAvKiBPdGhlciB3YXkgb2Ygc3Bl Y2lmeWluZyBpcyBpbiAiYWRkciBsZW4iIHBhaXIsIGluIGJlbG93IGNhc2UgaXQKPiBzcGVjaWZp ZXMgdG8gY2FwdHVyZSA0IHdvcmRzIHN0YXJ0aW5nIDB4MTBDMDA0ICovCj4KPiBlY2hvIDB4MTBD MDA0IDQgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9kY2MvLi4vY29uZmlnX3JlYWQKPgo+IC8qIEVuYWJs ZSBEQ0MgKi8KPiBlY2hvIDEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9kY2MvLi4vZW5hYmxlCj4KPiAv KiBSdW4gdGhlIHRpbWVzdGFtcCB0ZXN0IGZvciB3b3JraW5nIGNhc2UgKi8KPgo+IC8qIFNlbmQg U1cgdHJpZ2dlciAqLwo+IGVjaG8gMSA+IC9zeXMva2VybmVsL2RlYnVnL2RjYy8uLi90cmlnZ2Vy Cj4KPiAvKiBSZWFkIFNSQU0gKi8KPiBjYXQgL2Rldi9kY2Nfc3JhbSA+IGRjY19zcmFtMS5iaW4K Pgo+IC8qIFJ1biB0aGUgdGltZXN0YW1wIHRlc3QgZm9yIG5vbi13b3JraW5nIGNhc2UgKi8KPgo+ IC8qIFNlbmQgU1cgdHJpZ2dlciAqLwo+IGVjaG8gMSA+IC9zeXMva2VybmVsL2RlYnVnL2RjYy8u Li90cmlnZ2VyCj4KPiAvKiBSZWFkIFNSQU0gKi8KPiBjYXQgL2Rldi9kY2Nfc3JhbSA+IGRjY19z cmFtMi5iaW4KPgo+IEdldCB0aGUgcGFyc2VyIGZyb20gWzFdIGFuZCBjaGVja291dCB0aGUgbGF0 ZXN0IGJyYW5jaC4KPgo+IC8qIFBhcnNlIHRoZSBTUkFNIGJpbiAqLwo+IHB5dGhvbiBkY2NfcGFy c2VyLnB5IC1zIGRjY19zcmFtMS5iaW4gLS12MiAtbyBvdXRwdXQvCj4gcHl0aG9uIGRjY19wYXJz ZXIucHkgLXMgZGNjX3NyYW0yLmJpbiAtLXYyIC1vIG91dHB1dC8KPgo+IFNhbXBsZSBwYXJzZWQg b3V0cHV0IG9mIGRjY19zcmFtMS5iaW46Cj4KPiA8aHdpb0R1bXAgdmVyc2lvbj0iMSI+Cj4gICAg ICAgICAgPHRpbWVzdGFtcD4wMy8xNC8yMTwvdGltZXN0YW1wPgo+ICAgICAgICAgICAgICA8Z2Vu ZXJhdG9yPkxpbnV4IERDQyBQYXJzZXI8L2dlbmVyYXRvcj4KPiAgICAgICAgICAgICAgICAgIDxj aGlwIG5hbWU9Ik5vbmUiIHZlcnNpb249Ik5vbmUiPgo+ICAgICAgICAgICAgICAgICAgPHJlZ2lz dGVyIGFkZHJlc3M9IjB4MDAxMGMwMDQiIHZhbHVlPSIweDgwMDAwMDAwIiAvPgo+ICAgICAgICAg ICAgICAgICAgPHJlZ2lzdGVyIGFkZHJlc3M9IjB4MDAxMGMwMDgiIHZhbHVlPSIweDAwMDAwMDA4 IiAvPgo+ICAgICAgICAgICAgICAgICAgPHJlZ2lzdGVyIGFkZHJlc3M9IjB4MDAxMGMwMGMiIHZh bHVlPSIweDgwMDA0MjIwIiAvPgo+ICAgICAgICAgICAgICAgICAgPHJlZ2lzdGVyIGFkZHJlc3M9 IjB4MDAxMGMwMTAiIHZhbHVlPSIweDgwMDAwMDAwIiAvPgo+ICAgICAgICAgICAgICA8L2NoaXA+ Cj4gICAgICA8bmV4dF9sbF9vZmZzZXQ+bmV4dF9sbF9vZmZzZXQgOiAweDFjIDwvbmV4dF9sbF9v ZmZzZXQ+Cj4gPC9od2lvRHVtcD4KPgo+IGlpKU5PQyByZWdpc3RlciBlcnJvcnMKPgo+IEEgcGFy dGljdWxhciBjbGFzcyBvZiByZWdpc3RlcnMgY2FsbGVkIE5PQyB3aGljaCBhcmUgZnVuY3Rpb25h bCByZWdpc3RlcnMgd2FzIHJlcG9ydGluZwo+IGVycm9ycyB3aGlsZSBsb2dnaW5nIHRoZSB2YWx1 ZXMuVG8gdHJhY2UgdGhlc2UgZXJyb3JzIHRoZSBEQ0MgaGFzIGJlZW4gdXNlZCBlZmZlY3RpdmVs eS4KPiBUaGUgc3RlcHMgZm9sbG93ZWQgd2VyZSBzaW1pbGFyIHRvIHRoZSBvbmVzIG1lbnRpb25l ZCBhYm92ZS4KPiBJbiBhZGRpdGlvbiB0byBOT0MgcmVnaXN0ZXJzIGEgZmV3IG90aGVyIGRlcGVu ZGVudCByZWdpc3RlcnMgd2VyZSBjb25maWd1cmVkIGluIERDQyB0bwo+IG1vbml0b3IgaXQncyB2 YWx1ZXMgZHVyaW5nIGEgY3Jhc2guIEEgbG9vayBhdCB0aGUgZGVwZW5kZW50IHJlZ2lzdGVyIHZh bHVlcyByZXZlYWxlZCB0aGF0Cj4gdGhlIGNyYXNoIHdhcyBoYXBwZW5pbmcgZHVlIHRvIGEgc2Vj dXJlZCBhY2Nlc3MgdG8gb25lIG9mIHRoZXNlIGRlcGVuZGVudCByZWdpc3RlcnMuCj4gQWxsIHRo ZXNlIGRlYnVnZ2luZyBhY3Rpdml0eSBhbmQgZmluZGluZyB0aGUgcm9vdCBjYXVzZSB3YXMgYWNo aWV2ZWQgdXNpbmcgRENDLgo+Cj4gRENDIHBhcnNlciBpcyBhdmFpbGFibGUgYXQgdGhlIGZvbGxv d2luZyBvcGVuIHNvdXJjZSBsb2NhdGlvbgo+Cj4gaHR0cHM6Ly9zb3VyY2UuY29kZWF1cm9yYS5v cmcvcXVpYy9sYS9wbGF0Zm9ybS92ZW5kb3IvcWNvbS1vcGVuc291cmNlL3Rvb2xzL3RyZWUvZGNj X3BhcnNlcgo+Cj4gQ2hhbmdlcyBpbiBWNwo+Cj4gKlRoZSBEQ0MgaW50ZXJmYWNlIGhhcyBiZWVu IHNoaWZ0ZWQgZnJvbSBzeXNmcyB0byBkZWJ1Z2ZzLiBUaGUgbmV3IGludGVyZmFjZQo+ICAgZGV0 YWlscyBhcmUgZG9jdW1lbnRlZCBpbiBEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2RlYnVnZnMt ZHJpdmVyLWRjYy4KPgo+ICpBbGwgdGhlIHJlc3Qgb2YgdGhlICBjb21tZW50cyBmcm9tIHByZXZp b3VzIHZlcnNpb25zIGhhdmUgYmVlbiBpbXBsZW1lbnRlZC4KPgo+Cj4gU291cmFkZWVwIENob3dk aHVyeSAoNyk6Cj4gICAgZHQtYmluZGluZ3M6IEFkZGVkIHRoZSB5YW1sIGJpbmRpbmdzIGZvciBE Q0MKPiAgICBzb2M6IHFjb206IGRjYzpBZGQgZHJpdmVyIHN1cHBvcnQgZm9yIERhdGEgQ2FwdHVy ZSBhbmQgQ29tcGFyZQo+ICAgICAgdW5pdChEQ0MpCj4gICAgTUFJTlRBSU5FUlM6IEFkZCB0aGUg ZW50cnkgZm9yIERDQyhEYXRhIENhcHR1cmUgYW5kIENvbXBhcmUpIGRyaXZlcgo+ICAgICAgc3Vw cG9ydAo+ICAgIGFybTY0OiBkdHM6IHFjb206IHNtODE1MDogQWRkIERhdGEgQ2FwdHVyZSBhbmQg Q29tcGFyZShEQ0MpIHN1cHBvcnQKPiAgICAgIG5vZGUKPiAgICBhcm02NDogZHRzOiBxY29tOiBz YzcyODA6IEFkZCBEYXRhIENhcHR1cmUgYW5kIENvbXBhcmUoRENDKSBzdXBwb3J0Cj4gICAgICBu b2RlCj4gICAgYXJtNjQ6IGR0czogcWNvbTogc2M3MTgwOiBBZGQgRGF0YSBDYXB0dXJlIGFuZCBD b21wYXJlKERDQykgc3VwcG9ydAo+ICAgICAgbm9kZQo+ICAgIGFybTY0OiBkdHM6IHFjb206IHNk bTg0NTogQWRkIERhdGEgQ2FwdHVyZSBhbmQgQ29tcGFyZShEQ0MpIHN1cHBvcnQKPiAgICAgIG5v ZGUKPgo+ICAgRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWRyaXZlci1kY2MgICAg ICAgfCAgMTI0ICsrCj4gICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXNtL3Fjb20sZGNj LnlhbWwgICAgICB8ICAgNDMgKwo+ICAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICA4ICsKPiAgIGFyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9z YzcxODAuZHRzaSAgICAgICAgICAgICAgIHwgICAgNiArCj4gICBhcmNoL2FybTY0L2Jvb3QvZHRz L3Fjb20vc2M3MjgwLmR0c2kgICAgICAgICAgICAgICB8ICAgIDYgKwo+ICAgYXJjaC9hcm02NC9i b290L2R0cy9xY29tL3NkbTg0NS5kdHNpICAgICAgICAgICAgICAgfCAgICA2ICsKPiAgIGFyY2gv YXJtNjQvYm9vdC9kdHMvcWNvbS9zbTgxNTAuZHRzaSAgICAgICAgICAgICAgIHwgICAgNiArCj4g ICBkcml2ZXJzL3NvYy9xY29tL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDggKwo+ICAgZHJpdmVycy9zb2MvcWNvbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxICsKPiAgIGRyaXZlcnMvc29jL3Fjb20vZGNjLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTQ2NSArKysrKysrKysrKysrKysrKysrKwo+ICAgMTAgZmlsZXMgY2hhbmdl ZCwgMTY3MyBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlv bi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWRyaXZlci1kY2MKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBE b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS9xY29tLGRjYy55YW1sCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvcWNvbS9kY2MuYwo+Cj4gLS0KPiAyLjcu NAoKSGksCgpHZW50bGUgUGluZwoKIMKgTGV0IG1lIGtub3cgaWYgdGhlcmUgaXMgYW55IGZlZWRi YWNrIHJlZ2FyZGluZyB0aGlzIHBhdGNoCgpUaGFua3MsCgpTb3VyYWRlZXAKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1h aWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==