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 775F6C433F5 for ; Tue, 24 May 2022 07:14:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232538AbiEXHOt (ORCPT ); Tue, 24 May 2022 03:14:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45310 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235038AbiEXHOr (ORCPT ); Tue, 24 May 2022 03:14:47 -0400 Received: from alexa-out-sd-02.qualcomm.com (alexa-out-sd-02.qualcomm.com [199.106.114.39]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD1C995495; Tue, 24 May 2022 00:14:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1653376485; x=1684912485; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=ZneZlwTaWbu52y3FEEErRrYskpuDw+eBsbDnaaApUno=; b=kbHXg5iUVwTgpd6JhL7/fSvdvdcM3mcG+HMs9G99UMbP7bEqfZv5s+M7 nA1RKtprVDaVwX36DqhKPuZZd3QEHKZZt5q/BbVwdOJ5GYkrU3bku5r82 EDFh/UsynjRLkwrDXZCDdScioyRYkhXjl+EO1z9d/LRl8uyX7fhdRb42B Y=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-02.qualcomm.com with ESMTP; 24 May 2022 00:14:45 -0700 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg05-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:14:45 -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, 24 May 2022 00:14:44 -0700 Received: from [10.239.133.9] (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, 24 May 2022 00:14:40 -0700 Message-ID: <6f44aa9e-ba5e-3c94-501c-32e0b35ade56@quicinc.com> Date: Tue, 24 May 2022 15:14:38 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [PATCH v7 05/10] coresight-tpdm: Add integration test support Content-Language: en-US To: Suzuki K Poulose , Mathieu Poirier , Alexander Shishkin , Konrad Dybcio , Mike Leach CC: Greg Kroah-Hartman , , , , Tingwei Zhang , Yuanfang Zhang , Tao Zhang , Trilok Soni , Hao Zhang , , Bjorn Andersson References: <20220509133947.20987-1-quic_jinlmao@quicinc.com> <20220509133947.20987-6-quic_jinlmao@quicinc.com> <7fd884ed-1255-5976-6fcc-7a19ad0eb04e@arm.com> From: Jinlong Mao In-Reply-To: <7fd884ed-1255-5976-6fcc-7a19ad0eb04e@arm.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 Good afternoon. On 5/23/2022 5:17 PM, Suzuki K Poulose wrote: > On 09/05/2022 14:39, Mao Jinlong wrote: >> Integration test for tpdm can help to generate the data for >> verification of the topology during TPDM software bring up. >> >> Sample: >> 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 >> cat /dev/tmc_etf0 > /data/etf-tpdm0.bin >> >> Signed-off-by: Tao Zhang >> Signed-off-by: Mao Jinlong > > Please could we stick this under a sub-Kconfig entry, like > we did for the CTI ? > > CONFIG_CORESIGHT_TPMD_INTEGRATION_TEST This is comment in V5 patch. There is no adverse effects for all tpdms with integration test enabled. So i removed this config. " For the last patchset you mentioned that you were making this configurable because the CTI intgration tests were also configurable. The reason that the CTI intergration test registers were done in this way is that some of the CoreSight components were not guaranteed to return to a usable state once integration test was disabled. Thus after use of the integration test, a complete board reset was recommended. Therefore we ensured that these features would only be used by those specifically configuring them and who were hopefully aware of the potentail limitations If your hardware can reliably enable and disable integration test without adverse effects, then you may wish to consider making the integration test a permanent feature of the driver. Regards Mike " > >> --- >>   drivers/hwtracing/coresight/coresight-tpdm.c | 54 ++++++++++++++++++++ >>   drivers/hwtracing/coresight/coresight-tpdm.h | 14 +++++ >>   2 files changed, 68 insertions(+) >> >> diff --git a/drivers/hwtracing/coresight/coresight-tpdm.c >> b/drivers/hwtracing/coresight/coresight-tpdm.c >> index 70df888ac565..57e38aa7d2bd 100644 >> --- a/drivers/hwtracing/coresight/coresight-tpdm.c >> +++ b/drivers/hwtracing/coresight/coresight-tpdm.c >> @@ -123,6 +123,59 @@ static void tpdm_init_default_data(struct >> tpdm_drvdata *drvdata) >>       CS_LOCK(drvdata->base); >>   } >>   +/* >> + * value 1: 64 bits test data >> + * value 2: 32 bits test data >> + */ >> +static ssize_t integration_test_store(struct device *dev, >> +                      struct device_attribute *attr, >> +                      const char *buf, >> +                      size_t size) >> +{ >> +    int i, ret = 0; >> +    unsigned long val; >> +    struct tpdm_drvdata *drvdata = dev_get_drvdata(dev->parent); >> + >> +    ret = kstrtoul(buf, 10, &val); >> +    if (ret) >> +        return ret; >> + >> +    if (val != 1 && val != 2) >> +        return -EINVAL; >> + >> +    if (!drvdata->enable) >> +        return -EINVAL; >> + >> +    if (val == 1) >> +        val = ATBCNTRL_VAL_64; >> +    else >> +        val = ATBCNTRL_VAL_32; >> +    CS_UNLOCK(drvdata->base); >> +    writel_relaxed(0x1, drvdata->base + TPDM_ITCNTRL); >> + >> +    for (i = 1; i < INTEGRATION_TEST_CYCLE; i++) > > super minor nit : It is a bit un-natural, not to have i = 0; This should be 0. I will update. > > Rest looks fine to me . > > Suzuki > > >> +        writel_relaxed(val, drvdata->base + TPDM_ITATBCNTRL); >> + >> +    writel_relaxed(0, drvdata->base + TPDM_ITCNTRL); >> +    CS_LOCK(drvdata->base); >> +    return size; >> +} >> +static DEVICE_ATTR_WO(integration_test); >> + >> +static struct attribute *tpdm_attrs[] = { >> +    &dev_attr_integration_test.attr, >> +    NULL, >> +}; >> + >> +static struct attribute_group tpdm_attr_grp = { >> +    .attrs = tpdm_attrs, >> +}; >> + >> +static const struct attribute_group *tpdm_attr_grps[] = { >> +    &tpdm_attr_grp, >> +    NULL, >> +}; >> + >>   static int tpdm_probe(struct amba_device *adev, const struct >> amba_id *id) >>   { >>       struct device *dev = &adev->dev; >> @@ -157,6 +210,7 @@ static int tpdm_probe(struct amba_device *adev, >> const struct amba_id *id) >>       desc.ops = &tpdm_cs_ops; >>       desc.pdata = adev->dev.platform_data; >>       desc.dev = &adev->dev; >> +    desc.groups = tpdm_attr_grps; >>       drvdata->csdev = coresight_register(&desc); >>       if (IS_ERR(drvdata->csdev)) >>           return PTR_ERR(drvdata->csdev); >> diff --git a/drivers/hwtracing/coresight/coresight-tpdm.h >> b/drivers/hwtracing/coresight/coresight-tpdm.h >> index f95aaad9c653..4aa880794383 100644 >> --- a/drivers/hwtracing/coresight/coresight-tpdm.h >> +++ b/drivers/hwtracing/coresight/coresight-tpdm.h >> @@ -14,6 +14,20 @@ >>   /* Enable bit for DSB subunit */ >>   #define TPDM_DSB_CR_ENA        BIT(0) >>   +/* TPDM integration test registers */ >> +#define TPDM_ITATBCNTRL        (0xEF0) >> +#define TPDM_ITCNTRL        (0xF00) >> + >> +/* Register value for integration test */ >> +#define ATBCNTRL_VAL_32        0xC00F1409 >> +#define ATBCNTRL_VAL_64        0xC01F1409 >> + >> +/* >> + * Number of cycles to write value when >> + * integration test. >> + */ >> +#define INTEGRATION_TEST_CYCLE    10 >> + >>   /** >>    * This enum is for PERIPHIDR0 register of TPDM. >>    * The fields [6:0] of PERIPHIDR0 are used to determine what > > _______________________________________________ > CoreSight mailing list -- coresight@lists.linaro.org > To unsubscribe send an email to coresight-leave@lists.linaro.org 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 C2991C433F5 for ; Tue, 24 May 2022 07:16:04 +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=NnlnTSiMBqLoF2HcwNNY6X3fA0HJYYwuFgaK5kHNzzU=; b=0M5xQHUjk+BRMH ioMR0HSv8AELup15M3Tp9bd6pj2KJwa6ItSCeD6BRKo3xnmVyHT/ezWpGm5CGbogihST1uQ4ZF9Du CzpoqkgR3M7/JPmGa87s+17g2Dr9i9T+Xr6HL7kf00QB8e5Ob1iHNXiSz8r6ANHSyoAnmVb0X61Al 7xX8xF/TbXW33StIDIYMlLvzcB1yT9Te/hLppACzqFfVR7osO6GykCQVUM2n97WEtkr2p5sRiWkBS bY95Ec0gEaAyTEOJj64Gup8XlzPMOoi+EWN0YtCaRkebr2KR5xToQuXHN1JiPo/RJSaLVK2xKIR2L wPyPzX0QUciQ2vw6NchA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntOkk-0072La-O2; Tue, 24 May 2022 07:14:50 +0000 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntOkh-0072K9-7B for linux-arm-kernel@lists.infradead.org; Tue, 24 May 2022 07:14:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1653376487; x=1684912487; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=ZneZlwTaWbu52y3FEEErRrYskpuDw+eBsbDnaaApUno=; b=ZL/iV/EDZ4CHJtrhHpYRmXb+ULJX2EflRcS//f8c9HzXWs7BFRyD/xAY s2MA29vRL4X71Hk10n83NzMeIkb47lineBxpeS4tq4gYw6k8danvDCkAE pASNDR34cH8SpkoMXZ290CaxSScPEsvEvW/eSF/HUFGFaThhyPnAUFyTN 4=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 24 May 2022 00:14:45 -0700 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg05-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:14:45 -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, 24 May 2022 00:14:44 -0700 Received: from [10.239.133.9] (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, 24 May 2022 00:14:40 -0700 Message-ID: <6f44aa9e-ba5e-3c94-501c-32e0b35ade56@quicinc.com> Date: Tue, 24 May 2022 15:14:38 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [PATCH v7 05/10] coresight-tpdm: Add integration test support Content-Language: en-US To: Suzuki K Poulose , Mathieu Poirier , Alexander Shishkin , Konrad Dybcio , Mike Leach CC: Greg Kroah-Hartman , , , , Tingwei Zhang , Yuanfang Zhang , Tao Zhang , Trilok Soni , Hao Zhang , , Bjorn Andersson References: <20220509133947.20987-1-quic_jinlmao@quicinc.com> <20220509133947.20987-6-quic_jinlmao@quicinc.com> <7fd884ed-1255-5976-6fcc-7a19ad0eb04e@arm.com> From: Jinlong Mao In-Reply-To: <7fd884ed-1255-5976-6fcc-7a19ad0eb04e@arm.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-20220524_001447_375994_34415586 X-CRM114-Status: GOOD ( 27.21 ) 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 R29vZCBhZnRlcm5vb24uCgpPbiA1LzIzLzIwMjIgNToxNyBQTSwgU3V6dWtpIEsgUG91bG9zZSB3 cm90ZToKPiBPbiAwOS8wNS8yMDIyIDE0OjM5LCBNYW8gSmlubG9uZyB3cm90ZToKPj4gSW50ZWdy YXRpb24gdGVzdCBmb3IgdHBkbSBjYW4gaGVscCB0byBnZW5lcmF0ZSB0aGUgZGF0YSBmb3IKPj4g dmVyaWZpY2F0aW9uIG9mIHRoZSB0b3BvbG9neSBkdXJpbmcgVFBETSBzb2Z0d2FyZSBicmluZyB1 cC4KPj4KPj4gU2FtcGxlOgo+PiBlY2hvIDEgPiAvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy90 bWNfZXRmMC9lbmFibGVfc2luawo+PiBlY2hvIDEgPiAvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNl cy90cGRtMC9lbmFibGVfc291cmNlCj4+IGVjaG8gMSA+IC9zeXMvYnVzL2NvcmVzaWdodC9kZXZp Y2VzL3RwZG0wL2ludGVncmF0aW9uX3Rlc3QKPj4gZWNobyAyID4gL3N5cy9idXMvY29yZXNpZ2h0 L2RldmljZXMvdHBkbTAvaW50ZWdyYXRpb25fdGVzdAo+PiBjYXQgL2Rldi90bWNfZXRmMCA+IC9k YXRhL2V0Zi10cGRtMC5iaW4KPj4KPj4gU2lnbmVkLW9mZi1ieTogVGFvIFpoYW5nIDxxdWljX3Rh b3poYUBxdWljaW5jLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogTWFvIEppbmxvbmcgPHF1aWNfamlu bG1hb0BxdWljaW5jLmNvbT4KPgo+IFBsZWFzZSBjb3VsZCB3ZSBzdGljayB0aGlzIHVuZGVyIGEg c3ViLUtjb25maWcgZW50cnksIGxpa2UKPiB3ZSBkaWQgZm9yIHRoZSBDVEkgPwo+Cj4gQ09ORklH X0NPUkVTSUdIVF9UUE1EX0lOVEVHUkFUSU9OX1RFU1QKVGhpcyBpcyBjb21tZW50IGluIFY1IHBh dGNoLiBUaGVyZSBpcyBubyBhZHZlcnNlIGVmZmVjdHMgZm9yIGFsbCB0cGRtcyB3aXRoCmludGVn cmF0aW9uIHRlc3QgZW5hYmxlZC4gU28gaSByZW1vdmVkIHRoaXMgY29uZmlnLgoKIgoKRm9yIHRo ZSBsYXN0IHBhdGNoc2V0IHlvdSBtZW50aW9uZWQgdGhhdCB5b3Ugd2VyZSBtYWtpbmcgdGhpcwpj b25maWd1cmFibGUgYmVjYXVzZSB0aGUgQ1RJIGludGdyYXRpb24gdGVzdHMgd2VyZSBhbHNvIGNv bmZpZ3VyYWJsZS4KVGhlIHJlYXNvbiB0aGF0IHRoZSBDVEkgaW50ZXJncmF0aW9uIHRlc3QgcmVn aXN0ZXJzIHdlcmUgZG9uZSBpbiB0aGlzCndheSBpcyB0aGF0IHNvbWUgb2YgdGhlIENvcmVTaWdo dCBjb21wb25lbnRzIHdlcmUgbm90IGd1YXJhbnRlZWQgdG8KcmV0dXJuIHRvIGEgdXNhYmxlIHN0 YXRlIG9uY2UgaW50ZWdyYXRpb24gdGVzdCB3YXMgZGlzYWJsZWQuClRodXMgYWZ0ZXIgdXNlIG9m IHRoZSBpbnRlZ3JhdGlvbiB0ZXN0LCBhIGNvbXBsZXRlIGJvYXJkIHJlc2V0IHdhcwpyZWNvbW1l bmRlZC4gVGhlcmVmb3JlIHdlIGVuc3VyZWQgdGhhdCB0aGVzZSBmZWF0dXJlcyB3b3VsZCBvbmx5 IGJlCnVzZWQgYnkgdGhvc2Ugc3BlY2lmaWNhbGx5IGNvbmZpZ3VyaW5nIHRoZW0gYW5kIHdobyB3 ZXJlIGhvcGVmdWxseQphd2FyZSBvZiB0aGUgcG90ZW50YWlsIGxpbWl0YXRpb25zCgpJZiB5b3Vy IGhhcmR3YXJlIGNhbiByZWxpYWJseSBlbmFibGUgYW5kIGRpc2FibGUgaW50ZWdyYXRpb24gdGVz dAp3aXRob3V0IGFkdmVyc2UgZWZmZWN0cywgdGhlbiB5b3UgbWF5IHdpc2ggdG8gY29uc2lkZXIg bWFraW5nIHRoZQppbnRlZ3JhdGlvbiB0ZXN0IGEgcGVybWFuZW50IGZlYXR1cmUgb2YgdGhlIGRy aXZlci4KClJlZ2FyZHMKCk1pa2UKIgoKCj4KPj4gLS0tCj4+IMKgIGRyaXZlcnMvaHd0cmFjaW5n L2NvcmVzaWdodC9jb3Jlc2lnaHQtdHBkbS5jIHwgNTQgKysrKysrKysrKysrKysrKysrKysKPj4g wqAgZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L2NvcmVzaWdodC10cGRtLmggfCAxNCArKysr Kwo+PiDCoCAyIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKykKPj4KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHBkbS5jIAo+PiBiL2Ry aXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC9jb3Jlc2lnaHQtdHBkbS5jCj4+IGluZGV4IDcwZGY4 ODhhYzU2NS4uNTdlMzhhYTdkMmJkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2h3dHJhY2luZy9j b3Jlc2lnaHQvY29yZXNpZ2h0LXRwZG0uYwo+PiArKysgYi9kcml2ZXJzL2h3dHJhY2luZy9jb3Jl c2lnaHQvY29yZXNpZ2h0LXRwZG0uYwo+PiBAQCAtMTIzLDYgKzEyMyw1OSBAQCBzdGF0aWMgdm9p ZCB0cGRtX2luaXRfZGVmYXVsdF9kYXRhKHN0cnVjdCAKPj4gdHBkbV9kcnZkYXRhICpkcnZkYXRh KQo+PiDCoMKgwqDCoMKgIENTX0xPQ0soZHJ2ZGF0YS0+YmFzZSk7Cj4+IMKgIH0KPj4gwqAgKy8q Cj4+ICsgKiB2YWx1ZSAxOiA2NCBiaXRzIHRlc3QgZGF0YQo+PiArICogdmFsdWUgMjogMzIgYml0 cyB0ZXN0IGRhdGEKPj4gKyAqLwo+PiArc3RhdGljIHNzaXplX3QgaW50ZWdyYXRpb25fdGVzdF9z dG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqYnVmLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVfdCBzaXplKQo+ PiArewo+PiArwqDCoMKgIGludCBpLCByZXQgPSAwOwo+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcg dmFsOwo+PiArwqDCoMKgIHN0cnVjdCB0cGRtX2RydmRhdGEgKmRydmRhdGEgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2LT5wYXJlbnQpOwo+PiArCj4+ICvCoMKgwqAgcmV0ID0ga3N0cnRvdWwoYnVmLCAx MCwgJnZhbCk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7Cj4+ICsKPj4gK8KgwqDCoCBpZiAodmFsICE9IDEgJiYgdmFsICE9IDIpCj4+ICvCoMKgwqDC oMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArwqDCoMKgIGlmICghZHJ2ZGF0YS0+ZW5h YmxlKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCBp ZiAodmFsID09IDEpCj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgPSBBVEJDTlRSTF9WQUxfNjQ7Cj4+ ICvCoMKgwqAgZWxzZQo+PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gQVRCQ05UUkxfVkFMXzMyOwo+ PiArwqDCoMKgIENTX1VOTE9DSyhkcnZkYXRhLT5iYXNlKTsKPj4gK8KgwqDCoCB3cml0ZWxfcmVs YXhlZCgweDEsIGRydmRhdGEtPmJhc2UgKyBUUERNX0lUQ05UUkwpOwo+PiArCj4+ICvCoMKgwqAg Zm9yIChpID0gMTsgaSA8IElOVEVHUkFUSU9OX1RFU1RfQ1lDTEU7IGkrKykKPgo+IHN1cGVyIG1p bm9yIG5pdCA6IEl0IGlzIGEgYml0IHVuLW5hdHVyYWwsIG5vdCB0byBoYXZlIGkgPSAwOwpUaGlz IHNob3VsZCBiZSAwLiBJIHdpbGwgdXBkYXRlLgo+Cj4gUmVzdCBsb29rcyBmaW5lIHRvIG1lIC4K Pgo+IFN1enVraQo+Cj4KPj4gK8KgwqDCoMKgwqDCoMKgIHdyaXRlbF9yZWxheGVkKHZhbCwgZHJ2 ZGF0YS0+YmFzZSArIFRQRE1fSVRBVEJDTlRSTCk7Cj4+ICsKPj4gK8KgwqDCoCB3cml0ZWxfcmVs YXhlZCgwLCBkcnZkYXRhLT5iYXNlICsgVFBETV9JVENOVFJMKTsKPj4gK8KgwqDCoCBDU19MT0NL KGRydmRhdGEtPmJhc2UpOwo+PiArwqDCoMKgIHJldHVybiBzaXplOwo+PiArfQo+PiArc3RhdGlj IERFVklDRV9BVFRSX1dPKGludGVncmF0aW9uX3Rlc3QpOwo+PiArCj4+ICtzdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqdHBkbV9hdHRyc1tdID0gewo+PiArwqDCoMKgICZkZXZfYXR0cl9pbnRlZ3Jh dGlvbl90ZXN0LmF0dHIsCj4+ICvCoMKgwqAgTlVMTCwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHRwZG1fYXR0cl9ncnAgPSB7Cj4+ICvCoMKgwqAgLmF0dHJz ID0gdHBkbV9hdHRycywKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwICp0cGRtX2F0dHJfZ3Jwc1tdID0gewo+PiArwqDCoMKgICZ0cGRtX2F0dHJfZ3Jw LAo+PiArwqDCoMKgIE5VTEwsCj4+ICt9Owo+PiArCj4+IMKgIHN0YXRpYyBpbnQgdHBkbV9wcm9i ZShzdHJ1Y3QgYW1iYV9kZXZpY2UgKmFkZXYsIGNvbnN0IHN0cnVjdCAKPj4gYW1iYV9pZCAqaWQp Cj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYWRldi0+ZGV2Owo+ PiBAQCAtMTU3LDYgKzIxMCw3IEBAIHN0YXRpYyBpbnQgdHBkbV9wcm9iZShzdHJ1Y3QgYW1iYV9k ZXZpY2UgKmFkZXYsIAo+PiBjb25zdCBzdHJ1Y3QgYW1iYV9pZCAqaWQpCj4+IMKgwqDCoMKgwqAg ZGVzYy5vcHMgPSAmdHBkbV9jc19vcHM7Cj4+IMKgwqDCoMKgwqAgZGVzYy5wZGF0YSA9IGFkZXYt PmRldi5wbGF0Zm9ybV9kYXRhOwo+PiDCoMKgwqDCoMKgIGRlc2MuZGV2ID0gJmFkZXYtPmRldjsK Pj4gK8KgwqDCoCBkZXNjLmdyb3VwcyA9IHRwZG1fYXR0cl9ncnBzOwo+PiDCoMKgwqDCoMKgIGRy dmRhdGEtPmNzZGV2ID0gY29yZXNpZ2h0X3JlZ2lzdGVyKCZkZXNjKTsKPj4gwqDCoMKgwqDCoCBp ZiAoSVNfRVJSKGRydmRhdGEtPmNzZGV2KSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBQ VFJfRVJSKGRydmRhdGEtPmNzZGV2KTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHd0cmFjaW5n L2NvcmVzaWdodC9jb3Jlc2lnaHQtdHBkbS5oIAo+PiBiL2RyaXZlcnMvaHd0cmFjaW5nL2NvcmVz aWdodC9jb3Jlc2lnaHQtdHBkbS5oCj4+IGluZGV4IGY5NWFhYWQ5YzY1My4uNGFhODgwNzk0Mzgz IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvY29yZXNpZ2h0LXRw ZG0uaAo+PiArKysgYi9kcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvY29yZXNpZ2h0LXRwZG0u aAo+PiBAQCAtMTQsNiArMTQsMjAgQEAKPj4gwqAgLyogRW5hYmxlIGJpdCBmb3IgRFNCIHN1YnVu aXQgKi8KPj4gwqAgI2RlZmluZSBUUERNX0RTQl9DUl9FTkHCoMKgwqDCoMKgwqDCoCBCSVQoMCkK Pj4gwqAgKy8qIFRQRE0gaW50ZWdyYXRpb24gdGVzdCByZWdpc3RlcnMgKi8KPj4gKyNkZWZpbmUg VFBETV9JVEFUQkNOVFJMwqDCoMKgwqDCoMKgwqAgKDB4RUYwKQo+PiArI2RlZmluZSBUUERNX0lU Q05UUkzCoMKgwqDCoMKgwqDCoCAoMHhGMDApCj4+ICsKPj4gKy8qIFJlZ2lzdGVyIHZhbHVlIGZv ciBpbnRlZ3JhdGlvbiB0ZXN0ICovCj4+ICsjZGVmaW5lIEFUQkNOVFJMX1ZBTF8zMsKgwqDCoMKg wqDCoMKgIDB4QzAwRjE0MDkKPj4gKyNkZWZpbmUgQVRCQ05UUkxfVkFMXzY0wqDCoMKgwqDCoMKg wqAgMHhDMDFGMTQwOQo+PiArCj4+ICsvKgo+PiArICogTnVtYmVyIG9mIGN5Y2xlcyB0byB3cml0 ZSB2YWx1ZSB3aGVuCj4+ICsgKiBpbnRlZ3JhdGlvbiB0ZXN0Lgo+PiArICovCj4+ICsjZGVmaW5l IElOVEVHUkFUSU9OX1RFU1RfQ1lDTEXCoMKgwqAgMTAKPj4gKwo+PiDCoCAvKioKPj4gwqDCoCAq IFRoaXMgZW51bSBpcyBmb3IgUEVSSVBISURSMCByZWdpc3RlciBvZiBUUERNLgo+PiDCoMKgICog VGhlIGZpZWxkcyBbNjowXSBvZiBQRVJJUEhJRFIwIGFyZSB1c2VkIHRvIGRldGVybWluZSB3aGF0 Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IENv cmVTaWdodCBtYWlsaW5nIGxpc3QgLS0gY29yZXNpZ2h0QGxpc3RzLmxpbmFyby5vcmcKPiBUbyB1 bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIGNvcmVzaWdodC1sZWF2ZUBsaXN0cy5saW5hcm8u b3JnCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg==