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 92E7BC3F6B0 for ; Tue, 2 Aug 2022 14:44:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236017AbiHBOoJ (ORCPT ); Tue, 2 Aug 2022 10:44:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233153AbiHBOoI (ORCPT ); Tue, 2 Aug 2022 10:44:08 -0400 Received: from alexa-out.qualcomm.com (alexa-out.qualcomm.com [129.46.98.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B334EA474; Tue, 2 Aug 2022 07:44:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1659451447; x=1690987447; h=message-id:date:mime-version:subject:from:to:cc: references:in-reply-to:content-transfer-encoding; bh=0HsczQYtJm1i3slGdvS7RQjwctCL5Y7nU/w+74oz0VQ=; b=NtJqa5+c4hyQxkCkFvns1YHHb270xsUJvX0ROjaKRzAVScegUpSvQldK jb/nRZHfs1DoSRQMO+4TejkEgS6X8SCEQ837sOHU9+dubrR67Jms55P7K 10AI3sbL083OCrc7aldQgwRR14WG47efXkSKIurHieVaRKm1dtLmEp0/S s=; Received: from ironmsg-lv-alpha.qualcomm.com ([10.47.202.13]) by alexa-out.qualcomm.com with ESMTP; 02 Aug 2022 07:44:07 -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; 02 Aug 2022 07:44:06 -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, 2 Aug 2022 07:44:06 -0700 Received: from [10.253.74.155] (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, 2 Aug 2022 07:43:58 -0700 Message-ID: <20260db2-8c7e-e2b6-2385-74f433e4b55e@quicinc.com> Date: Tue, 2 Aug 2022 22:43:39 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH v12 0/9] Coresight: Add support for TPDM and TPDA Content-Language: en-US From: Jinlong Mao To: Mathieu Poirier , Suzuki K Poulose , Alexander Shishkin , Konrad Dybcio , Mike Leach , Andy Gross , "Bjorn Andersson" , Rob Herring , Krzysztof Kozlowski CC: Leo Yan , Greg Kroah-Hartman , , , , , Tingwei Zhang , Yuanfang Zhang , Tao Zhang , Trilok Soni , Hao Zhang , References: <20220710021032.27455-1-quic_jinlmao@quicinc.com> <3f714c34-277d-ef71-b527-f758172160f9@quicinc.com> In-Reply-To: <3f714c34-277d-ef71-b527-f758172160f9@quicinc.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01a.na.qualcomm.com (10.47.209.196) Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hi Reviewers, Please help to review V12 series of TPDM/TPDA patches. Thanks Jinlong Mao On 7/21/2022 11:30 PM, Jinlong Mao wrote: > Hi all, > > Please help to review V12 patches. > > Thanks > > Jinlong Mao > > On 7/10/2022 10:10 AM, Mao Jinlong wrote: >> This series adds support for the trace performance monitoring and >> diagnostics hardware (TPDM and TPDA). It is composed of two major >> elements. >> a) Changes for original coresight framework to support for TPDM and >> TPDA. >> b) Add driver code for TPDM and TPDA. >> >> Introduction of changes for original coresight framework >> Support TPDM as new coresight source. >> Since only STM and ETM are supported as coresight source originally. >> TPDM is a newly added coresight source. We need to change >> the original way of saving coresight path to support more types source >> for coresight driver. >> The following patch is to add support more coresight sources. >>      coresight: core: Use IDR for non-cpu bound sources' paths. >> >> Introduction of TPDM and TPDA >> TPDM - The trace performance monitoring and diagnostics monitor or >> TPDM in >> short serves as data collection component for various dataset types >> specified in the QPMDA(Qualcomm performance monitoring and diagnostics >> architecture) spec. The primary use case of the TPDM is to collect data >> from different data sources and send it to a TPDA for packetization, >> timestamping and funneling. >>       Coresight: Add coresight TPDM source driver >>       dt-bindings: arm: Adds CoreSight TPDM hardware definitions >>       coresight-tpdm: Add DSB dataset support >>       coresight-tpdm: Add integration test support >>       docs: sysfs: coresight: Add sysfs ABI documentation for TPDM >> >> TPDA - The trace performance monitoring and diagnostics aggregator or >> TPDA in short serves as an arbitration and packetization engine for the >> performance monitoring and diagnostics network as specified in the QPMDA >> (Qualcomm performance monitoring and diagnostics architecture) >> specification. The primary use case of the TPDA is to provide >> packetization, funneling and timestamping of Monitor data as specified >> in the QPMDA specification. >> The following patch is to add driver for TPDA. >>       Coresight: Add TPDA link driver >>       dt-bindings: arm: Adds CoreSight TPDA hardware definitions >> >> The last patch of this series is a device tree modification, which add >> the TPDM and TPDA configuration to device tree for validating. >>      ARM: dts: msm: Add coresight components for SM8250 >>      ARM: dts: msm: Add tpdm mm/prng for sm8250 >> >> Once this series patches are applied properly, the tpdm and tpda nodes >> should be observed at the coresight path /sys/bus/coresight/devices >> e.g. >> /sys/bus/coresight/devices # ls -l | grep tpd >> tpda0 -> ../../../devices/platform/soc@0/6004000.tpda/tpda0 >> tpdm0 -> ../../../devices/platform/soc@0/6c08000.mm.tpdm/tpdm0 >> >> We can use the commands are similar to the below to validate TPDMs. >> Enable coresight sink first. >> >> echo 1 > /sys/bus/coresight/devices/tmc_etf0/enable_sink >> echo 1 > /sys/bus/coresight/devices/tpdm0/enable_source >> echo 1 > /sys/bus/coresight/devices/tpdm0/integration_test >> echo 2 > /sys/bus/coresight/devices/tpdm0/integration_test >> The test data will be collected in the coresight sink which is enabled. >> If rwp register of the sink is keeping updating when do >> integration_test (by cat tmc_etf0/mgmt/rwp), it means there is data >> generated from TPDM to sink. >> >> There must be a tpda between tpdm and the sink. When there are some >> other trace event hw components in the same HW block with tpdm, tpdm >> and these hw components will connect to the coresight funnel. When >> there is only tpdm trace hw in the HW block, tpdm will connect to >> tpda directly. >>         +---------------+                +-------------+ >>      |  tpdm@6c08000 |                |tpdm@684C000 | >>      +-------|-------+                +------|------+ >>              |                               | >>      +-------|-------+                       | >>      | funnel@6c0b000|                       | >>      +-------|-------+                       | >>              |                               | >>      +-------|-------+                       | >>      |funnel@6c2d000 |                       | >>      +-------|-------+                       | >>              |                               | >>              |    +---------------+          | >>              +----- tpda@6004000  -----------+ >>                   +-------|-------+ >>                           | >>                   +-------|-------+ >>                   |funnel@6005000 | >>                   +---------------+ >> >> This patch series depends on patch series: >> "[v2,00/13] coresight: Add new API to allocate trace source ID values" >> https://patchwork.kernel.org/project/linux-arm-kernel/cover/20220704081149.16797-1-mike.leach@linaro.org/ >> >> >> Changes from V11: >> 1. Clear bits for atid before setting them and relese atid when tpda >> remove. -- Suzuki K Poulose >> >> Mao Jinlong (9): >>    coresight: core: Use IDR for non-cpu bound sources' paths. >>    Coresight: Add coresight TPDM source driver >>    dt-bindings: arm: Adds CoreSight TPDM hardware definitions >>    coresight-tpdm: Add DSB dataset support >>    coresight-tpdm: Add integration test support >>    Coresight: Add TPDA link driver >>    dt-bindings: arm: Adds CoreSight TPDA hardware definitions >>    arm64: dts: qcom: sm8250: Add coresight components >>    arm64: dts: qcom: sm8250: Add tpdm mm/prng >> >>   .../testing/sysfs-bus-coresight-devices-tpdm  |  13 + >>   .../bindings/arm/qcom,coresight-tpda.yaml     | 111 +++ >>   .../bindings/arm/qcom,coresight-tpdm.yaml     |  93 +++ >>   MAINTAINERS                                   |   2 + >>   arch/arm64/boot/dts/qcom/sm8250.dtsi          | 671 ++++++++++++++++++ >>   drivers/hwtracing/coresight/Kconfig           |  23 + >>   drivers/hwtracing/coresight/Makefile          |   2 + >>   drivers/hwtracing/coresight/coresight-core.c  |  42 +- >>   drivers/hwtracing/coresight/coresight-tpda.c  | 208 ++++++ >>   drivers/hwtracing/coresight/coresight-tpda.h  |  35 + >>   drivers/hwtracing/coresight/coresight-tpdm.c  | 259 +++++++ >>   drivers/hwtracing/coresight/coresight-tpdm.h  |  62 ++ >>   include/linux/coresight.h                     |   1 + >>   13 files changed, 1510 insertions(+), 12 deletions(-) >>   create mode 100644 >> Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm >>   create mode 100644 >> Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml >>   create mode 100644 >> Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml >>   create mode 100644 drivers/hwtracing/coresight/coresight-tpda.c >>   create mode 100644 drivers/hwtracing/coresight/coresight-tpda.h >>   create mode 100644 drivers/hwtracing/coresight/coresight-tpdm.c >>   create mode 100644 drivers/hwtracing/coresight/coresight-tpdm.h >> 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 76094C00140 for ; Tue, 2 Aug 2022 14:45:37 +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:References:CC:To:From: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=3965l5amUVFfF/zHhDH4IsUu5th8QW87OkRneueHVmc=; b=0eLBv2Dbgr5Sqw cgoXNrUrIw+Hw3DYZlTHE3oEbmpb7rVlsHTHvkx3Xc67SSh02UuXoBLu1r29ziwpatb2hud6QOMj4 wKDzysifxXv+fzQaCFE+1Vbhlef3kKiLDKjuJXvXWiWiF+6Oy6nMVck8AAXze4O57tNgqsCoITvCj wrbuE7TIL+5VRmDF/jkytUvLoMZo3Xv6Fo05vMC4m6Dfj+QAWjRB578Sj8baKPB6RSfY6QLdnjDOu C6IuL2QlfIop/jS+yUXIcCrVwbOBXWPno3pgiBvHb2uZDzJfndEhUNxcGjnhhIcikXY+Hu8OGxGrJ G4FRkfp4cjFUtmpmitbg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oIt84-00F4kZ-Kt; Tue, 02 Aug 2022 14:44:16 +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 1oIt80-00F4hY-PG for linux-arm-kernel@lists.infradead.org; Tue, 02 Aug 2022 14:44:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1659451453; x=1690987453; h=message-id:date:mime-version:subject:from:to:cc: references:in-reply-to:content-transfer-encoding; bh=0HsczQYtJm1i3slGdvS7RQjwctCL5Y7nU/w+74oz0VQ=; b=Oic5lyTLD6Bj12kG4n7T9oRds638apfvLPIQytNJ9jt3irE8gIU+dHe5 YiEiqyz1nmTZX7QwtQxL2nard0TQpwqQLr2XQzVafOM+zOU2VoGtMsbKw fQ977XDRjGrbSrrjrJvpuB539uVMl6RFTLaaHsDlx6H6e2KCiJCbm0Q6x k=; Received: from ironmsg-lv-alpha.qualcomm.com ([10.47.202.13]) by alexa-out.qualcomm.com with ESMTP; 02 Aug 2022 07:44:07 -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; 02 Aug 2022 07:44:06 -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, 2 Aug 2022 07:44:06 -0700 Received: from [10.253.74.155] (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, 2 Aug 2022 07:43:58 -0700 Message-ID: <20260db2-8c7e-e2b6-2385-74f433e4b55e@quicinc.com> Date: Tue, 2 Aug 2022 22:43:39 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH v12 0/9] Coresight: Add support for TPDM and TPDA Content-Language: en-US From: Jinlong Mao To: Mathieu Poirier , Suzuki K Poulose , Alexander Shishkin , Konrad Dybcio , Mike Leach , Andy Gross , "Bjorn Andersson" , Rob Herring , Krzysztof Kozlowski CC: Leo Yan , Greg Kroah-Hartman , , , , , Tingwei Zhang , Yuanfang Zhang , Tao Zhang , Trilok Soni , Hao Zhang , References: <20220710021032.27455-1-quic_jinlmao@quicinc.com> <3f714c34-277d-ef71-b527-f758172160f9@quicinc.com> In-Reply-To: <3f714c34-277d-ef71-b527-f758172160f9@quicinc.com> X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) 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-20220802_074412_904425_003C1ED4 X-CRM114-Status: GOOD ( 24.43 ) 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 SGkgUmV2aWV3ZXJzLAoKUGxlYXNlIGhlbHAgdG8gcmV2aWV3IFYxMiBzZXJpZXMgb2YgVFBETS9U UERBIHBhdGNoZXMuCgpUaGFua3MKCkppbmxvbmcgTWFvCgpPbiA3LzIxLzIwMjIgMTE6MzAgUE0s IEppbmxvbmcgTWFvIHdyb3RlOgo+IEhpIGFsbCwKPgo+IFBsZWFzZSBoZWxwIHRvIHJldmlldyBW MTIgcGF0Y2hlcy4KPgo+IFRoYW5rcwo+Cj4gSmlubG9uZyBNYW8KPgo+IE9uIDcvMTAvMjAyMiAx MDoxMCBBTSwgTWFvIEppbmxvbmcgd3JvdGU6Cj4+IFRoaXMgc2VyaWVzIGFkZHMgc3VwcG9ydCBm b3IgdGhlIHRyYWNlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgYW5kCj4+IGRpYWdub3N0aWNzIGhh cmR3YXJlIChUUERNIGFuZCBUUERBKS4gSXQgaXMgY29tcG9zZWQgb2YgdHdvIG1ham9yCj4+IGVs ZW1lbnRzLgo+PiBhKSBDaGFuZ2VzIGZvciBvcmlnaW5hbCBjb3Jlc2lnaHQgZnJhbWV3b3JrIHRv IHN1cHBvcnQgZm9yIFRQRE0gYW5kIAo+PiBUUERBLgo+PiBiKSBBZGQgZHJpdmVyIGNvZGUgZm9y IFRQRE0gYW5kIFRQREEuCj4+Cj4+IEludHJvZHVjdGlvbiBvZiBjaGFuZ2VzIGZvciBvcmlnaW5h bCBjb3Jlc2lnaHQgZnJhbWV3b3JrCj4+IFN1cHBvcnQgVFBETSBhcyBuZXcgY29yZXNpZ2h0IHNv dXJjZS4KPj4gU2luY2Ugb25seSBTVE0gYW5kIEVUTSBhcmUgc3VwcG9ydGVkIGFzIGNvcmVzaWdo dCBzb3VyY2Ugb3JpZ2luYWxseS4KPj4gVFBETSBpcyBhIG5ld2x5IGFkZGVkIGNvcmVzaWdodCBz b3VyY2UuIFdlIG5lZWQgdG8gY2hhbmdlCj4+IHRoZSBvcmlnaW5hbCB3YXkgb2Ygc2F2aW5nIGNv cmVzaWdodCBwYXRoIHRvIHN1cHBvcnQgbW9yZSB0eXBlcyBzb3VyY2UKPj4gZm9yIGNvcmVzaWdo dCBkcml2ZXIuCj4+IFRoZSBmb2xsb3dpbmcgcGF0Y2ggaXMgdG8gYWRkIHN1cHBvcnQgbW9yZSBj b3Jlc2lnaHQgc291cmNlcy4KPj4gwqDCoMKgwqAgY29yZXNpZ2h0OiBjb3JlOiBVc2UgSURSIGZv ciBub24tY3B1IGJvdW5kIHNvdXJjZXMnIHBhdGhzLgo+Pgo+PiBJbnRyb2R1Y3Rpb24gb2YgVFBE TSBhbmQgVFBEQQo+PiBUUERNIC0gVGhlIHRyYWNlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgYW5k IGRpYWdub3N0aWNzIG1vbml0b3Igb3IgCj4+IFRQRE0gaW4KPj4gc2hvcnQgc2VydmVzIGFzIGRh dGEgY29sbGVjdGlvbiBjb21wb25lbnQgZm9yIHZhcmlvdXMgZGF0YXNldCB0eXBlcwo+PiBzcGVj aWZpZWQgaW4gdGhlIFFQTURBKFF1YWxjb21tIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgYW5kIGRp YWdub3N0aWNzCj4+IGFyY2hpdGVjdHVyZSkgc3BlYy4gVGhlIHByaW1hcnkgdXNlIGNhc2Ugb2Yg dGhlIFRQRE0gaXMgdG8gY29sbGVjdCBkYXRhCj4+IGZyb20gZGlmZmVyZW50IGRhdGEgc291cmNl cyBhbmQgc2VuZCBpdCB0byBhIFRQREEgZm9yIHBhY2tldGl6YXRpb24sCj4+IHRpbWVzdGFtcGlu ZyBhbmQgZnVubmVsaW5nLgo+PiDCoMKgwqDCoMKgIENvcmVzaWdodDogQWRkIGNvcmVzaWdodCBU UERNIHNvdXJjZSBkcml2ZXIKPj4gwqDCoMKgwqDCoCBkdC1iaW5kaW5nczogYXJtOiBBZGRzIENv cmVTaWdodCBUUERNIGhhcmR3YXJlIGRlZmluaXRpb25zCj4+IMKgwqDCoMKgwqAgY29yZXNpZ2h0 LXRwZG06IEFkZCBEU0IgZGF0YXNldCBzdXBwb3J0Cj4+IMKgwqDCoMKgwqAgY29yZXNpZ2h0LXRw ZG06IEFkZCBpbnRlZ3JhdGlvbiB0ZXN0IHN1cHBvcnQKPj4gwqDCoMKgwqDCoCBkb2NzOiBzeXNm czogY29yZXNpZ2h0OiBBZGQgc3lzZnMgQUJJIGRvY3VtZW50YXRpb24gZm9yIFRQRE0KPj4KPj4g VFBEQSAtIFRoZSB0cmFjZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGFuZCBkaWFnbm9zdGljcyBh Z2dyZWdhdG9yIG9yCj4+IFRQREEgaW4gc2hvcnQgc2VydmVzIGFzIGFuIGFyYml0cmF0aW9uIGFu ZCBwYWNrZXRpemF0aW9uIGVuZ2luZSBmb3IgdGhlCj4+IHBlcmZvcm1hbmNlIG1vbml0b3Jpbmcg YW5kIGRpYWdub3N0aWNzIG5ldHdvcmsgYXMgc3BlY2lmaWVkIGluIHRoZSBRUE1EQQo+PiAoUXVh bGNvbW0gcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBhbmQgZGlhZ25vc3RpY3MgYXJjaGl0ZWN0dXJl KQo+PiBzcGVjaWZpY2F0aW9uLiBUaGUgcHJpbWFyeSB1c2UgY2FzZSBvZiB0aGUgVFBEQSBpcyB0 byBwcm92aWRlCj4+IHBhY2tldGl6YXRpb24sIGZ1bm5lbGluZyBhbmQgdGltZXN0YW1waW5nIG9m IE1vbml0b3IgZGF0YSBhcyBzcGVjaWZpZWQKPj4gaW4gdGhlIFFQTURBIHNwZWNpZmljYXRpb24u Cj4+IFRoZSBmb2xsb3dpbmcgcGF0Y2ggaXMgdG8gYWRkIGRyaXZlciBmb3IgVFBEQS4KPj4gwqDC oMKgwqDCoCBDb3Jlc2lnaHQ6IEFkZCBUUERBIGxpbmsgZHJpdmVyCj4+IMKgwqDCoMKgwqAgZHQt YmluZGluZ3M6IGFybTogQWRkcyBDb3JlU2lnaHQgVFBEQSBoYXJkd2FyZSBkZWZpbml0aW9ucwo+ Pgo+PiBUaGUgbGFzdCBwYXRjaCBvZiB0aGlzIHNlcmllcyBpcyBhIGRldmljZSB0cmVlIG1vZGlm aWNhdGlvbiwgd2hpY2ggYWRkCj4+IHRoZSBUUERNIGFuZCBUUERBIGNvbmZpZ3VyYXRpb24gdG8g ZGV2aWNlIHRyZWUgZm9yIHZhbGlkYXRpbmcuCj4+IMKgwqDCoMKgIEFSTTogZHRzOiBtc206IEFk ZCBjb3Jlc2lnaHQgY29tcG9uZW50cyBmb3IgU004MjUwCj4+IMKgwqDCoMKgIEFSTTogZHRzOiBt c206IEFkZCB0cGRtIG1tL3BybmcgZm9yIHNtODI1MAo+Pgo+PiBPbmNlIHRoaXMgc2VyaWVzIHBh dGNoZXMgYXJlIGFwcGxpZWQgcHJvcGVybHksIHRoZSB0cGRtIGFuZCB0cGRhIG5vZGVzCj4+IHNo b3VsZCBiZSBvYnNlcnZlZCBhdCB0aGUgY29yZXNpZ2h0IHBhdGggL3N5cy9idXMvY29yZXNpZ2h0 L2RldmljZXMKPj4gZS5nLgo+PiAvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcyAjIGxzIC1sIHwg Z3JlcCB0cGQKPj4gdHBkYTAgLT4gLi4vLi4vLi4vZGV2aWNlcy9wbGF0Zm9ybS9zb2NAMC82MDA0 MDAwLnRwZGEvdHBkYTAKPj4gdHBkbTAgLT4gLi4vLi4vLi4vZGV2aWNlcy9wbGF0Zm9ybS9zb2NA MC82YzA4MDAwLm1tLnRwZG0vdHBkbTAKPj4KPj4gV2UgY2FuIHVzZSB0aGUgY29tbWFuZHMgYXJl IHNpbWlsYXIgdG8gdGhlIGJlbG93IHRvIHZhbGlkYXRlIFRQRE1zLgo+PiBFbmFibGUgY29yZXNp Z2h0IHNpbmsgZmlyc3QuCj4+Cj4+IGVjaG8gMSA+IC9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2Vz L3RtY19ldGYwL2VuYWJsZV9zaW5rCj4+IGVjaG8gMSA+IC9zeXMvYnVzL2NvcmVzaWdodC9kZXZp Y2VzL3RwZG0wL2VuYWJsZV9zb3VyY2UKPj4gZWNobyAxID4gL3N5cy9idXMvY29yZXNpZ2h0L2Rl dmljZXMvdHBkbTAvaW50ZWdyYXRpb25fdGVzdAo+PiBlY2hvIDIgPiAvc3lzL2J1cy9jb3Jlc2ln aHQvZGV2aWNlcy90cGRtMC9pbnRlZ3JhdGlvbl90ZXN0Cj4+IFRoZSB0ZXN0IGRhdGEgd2lsbCBi ZSBjb2xsZWN0ZWQgaW4gdGhlIGNvcmVzaWdodCBzaW5rIHdoaWNoIGlzIGVuYWJsZWQuCj4+IElm IHJ3cCByZWdpc3RlciBvZiB0aGUgc2luayBpcyBrZWVwaW5nIHVwZGF0aW5nIHdoZW4gZG8KPj4g aW50ZWdyYXRpb25fdGVzdCAoYnkgY2F0IHRtY19ldGYwL21nbXQvcndwKSwgaXQgbWVhbnMgdGhl cmUgaXMgZGF0YQo+PiBnZW5lcmF0ZWQgZnJvbSBUUERNIHRvIHNpbmsuCj4+Cj4+IFRoZXJlIG11 c3QgYmUgYSB0cGRhIGJldHdlZW4gdHBkbSBhbmQgdGhlIHNpbmsuIFdoZW4gdGhlcmUgYXJlIHNv bWUKPj4gb3RoZXIgdHJhY2UgZXZlbnQgaHcgY29tcG9uZW50cyBpbiB0aGUgc2FtZSBIVyBibG9j ayB3aXRoIHRwZG0sIHRwZG0KPj4gYW5kIHRoZXNlIGh3IGNvbXBvbmVudHMgd2lsbCBjb25uZWN0 IHRvIHRoZSBjb3Jlc2lnaHQgZnVubmVsLiBXaGVuCj4+IHRoZXJlIGlzIG9ubHkgdHBkbSB0cmFj ZSBodyBpbiB0aGUgSFcgYmxvY2ssIHRwZG0gd2lsbCBjb25uZWN0IHRvCj4+IHRwZGEgZGlyZWN0 bHkuCj4+IMKgwqAgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0rCj4+IMKgwqDCoMKgIHzCoCB0cGRtQDZjMDgwMDAg fMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8dHBkbUA2ODRDMDAwIHwKPj4gwqDCoMKg wqAgKy0tLS0tLS18LS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0t LXwtLS0tLS0rCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gwqDCoMKgwqAg Ky0tLS0tLS18LS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8Cj4+IMKgwqDCoMKgIHwgZnVubmVsQDZjMGIwMDB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiDCoMKgwqDCoCArLS0tLS0tLXwtLS0tLS0tK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiDCoMKgwqDCoCArLS0tLS0tLXwtLS0tLS0tK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gwqDCoMKgwqAgfGZ1 bm5lbEA2YzJkMDAwIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+IMKgwqDCoMKgICstLS0tLS0tfC0tLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgICstLS0tLS0tLS0tLS0tLS0rwqDC oMKgwqDCoMKgwqDCoMKgIHwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLSB0cGRh QDYwMDQwMDDCoCAtLS0tLS0tLS0tLSsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCArLS0tLS0tLXwtLS0tLS0tKwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKy0tLS0tLS18LS0tLS0tLSsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8ZnVubmVsQDYwMDUwMDAgfAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICstLS0tLS0tLS0tLS0tLS0rCj4+Cj4+IFRoaXMgcGF0Y2ggc2VyaWVzIGRlcGVuZHMgb24gcGF0 Y2ggc2VyaWVzOgo+PiAiW3YyLDAwLzEzXSBjb3Jlc2lnaHQ6IEFkZCBuZXcgQVBJIHRvIGFsbG9j YXRlIHRyYWNlIHNvdXJjZSBJRCB2YWx1ZXMiCj4+IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5v cmcvcHJvamVjdC9saW51eC1hcm0ta2VybmVsL2NvdmVyLzIwMjIwNzA0MDgxMTQ5LjE2Nzk3LTEt bWlrZS5sZWFjaEBsaW5hcm8ub3JnLyAKPj4KPj4KPj4gQ2hhbmdlcyBmcm9tIFYxMToKPj4gMS4g Q2xlYXIgYml0cyBmb3IgYXRpZCBiZWZvcmUgc2V0dGluZyB0aGVtIGFuZCByZWxlc2UgYXRpZCB3 aGVuIHRwZGEKPj4gcmVtb3ZlLiAtLSBTdXp1a2kgSyBQb3Vsb3NlIDxzdXp1a2kucG91bG9zZUBh cm0uY29tPgo+Pgo+PiBNYW8gSmlubG9uZyAoOSk6Cj4+IMKgwqAgY29yZXNpZ2h0OiBjb3JlOiBV c2UgSURSIGZvciBub24tY3B1IGJvdW5kIHNvdXJjZXMnIHBhdGhzLgo+PiDCoMKgIENvcmVzaWdo dDogQWRkIGNvcmVzaWdodCBUUERNIHNvdXJjZSBkcml2ZXIKPj4gwqDCoCBkdC1iaW5kaW5nczog YXJtOiBBZGRzIENvcmVTaWdodCBUUERNIGhhcmR3YXJlIGRlZmluaXRpb25zCj4+IMKgwqAgY29y ZXNpZ2h0LXRwZG06IEFkZCBEU0IgZGF0YXNldCBzdXBwb3J0Cj4+IMKgwqAgY29yZXNpZ2h0LXRw ZG06IEFkZCBpbnRlZ3JhdGlvbiB0ZXN0IHN1cHBvcnQKPj4gwqDCoCBDb3Jlc2lnaHQ6IEFkZCBU UERBIGxpbmsgZHJpdmVyCj4+IMKgwqAgZHQtYmluZGluZ3M6IGFybTogQWRkcyBDb3JlU2lnaHQg VFBEQSBoYXJkd2FyZSBkZWZpbml0aW9ucwo+PiDCoMKgIGFybTY0OiBkdHM6IHFjb206IHNtODI1 MDogQWRkIGNvcmVzaWdodCBjb21wb25lbnRzCj4+IMKgwqAgYXJtNjQ6IGR0czogcWNvbTogc204 MjUwOiBBZGQgdHBkbSBtbS9wcm5nCj4+Cj4+IMKgIC4uLi90ZXN0aW5nL3N5c2ZzLWJ1cy1jb3Jl c2lnaHQtZGV2aWNlcy10cGRtwqAgfMKgIDEzICsKPj4gwqAgLi4uL2JpbmRpbmdzL2FybS9xY29t LGNvcmVzaWdodC10cGRhLnlhbWzCoMKgwqDCoCB8IDExMSArKysKPj4gwqAgLi4uL2JpbmRpbmdz L2FybS9xY29tLGNvcmVzaWdodC10cGRtLnlhbWzCoMKgwqDCoCB8wqAgOTMgKysrCj4+IMKgIE1B SU5UQUlORVJTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+IMKgIGFyY2gvYXJtNjQvYm9vdC9kdHMv cWNvbS9zbTgyNTAuZHRzacKgwqDCoMKgwqDCoMKgwqDCoCB8IDY3MSArKysrKysrKysrKysrKysr KysKPj4gwqAgZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L0tjb25maWfCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqAgMjMgKwo+PiDCoCBkcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvTWFrZWZp bGXCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+IMKgIGRyaXZlcnMvaHd0cmFjaW5nL2Nv cmVzaWdodC9jb3Jlc2lnaHQtY29yZS5jwqAgfMKgIDQyICstCj4+IMKgIGRyaXZlcnMvaHd0cmFj aW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHBkYS5jwqAgfCAyMDggKysrKysrCj4+IMKgIGRyaXZl cnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHBkYS5owqAgfMKgIDM1ICsKPj4gwqAg ZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cGRtLmPCoCB8IDI1OSArKysr KysrCj4+IMKgIGRyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHBkbS5owqAg fMKgIDYyICsrCj4+IMKgIGluY2x1ZGUvbGludXgvY29yZXNpZ2h0LmjCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+PiDCoCAxMyBmaWxlcyBjaGFuZ2Vk LCAxNTEwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQo+PiDCoCBjcmVhdGUgbW9kZSAx MDA2NDQgCj4+IERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNvcmVzaWdodC1k ZXZpY2VzLXRwZG0KPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IAo+PiBEb2N1bWVudGF0aW9uL2Rl dmljZXRyZWUvYmluZGluZ3MvYXJtL3Fjb20sY29yZXNpZ2h0LXRwZGEueWFtbAo+PiDCoCBjcmVh dGUgbW9kZSAxMDA2NDQgCj4+IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0v cWNvbSxjb3Jlc2lnaHQtdHBkbS55YW1sCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2h3dHJhY2luZy9jb3Jlc2lnaHQvY29yZXNpZ2h0LXRwZGEuYwo+PiDCoCBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cGRhLmgKPj4gwqAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQt dHBkbS5jCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2ln aHQvY29yZXNpZ2h0LXRwZG0uaAo+PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=