From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6ABBE4C78 for ; Mon, 14 Nov 2022 13:59:42 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E447123A; Mon, 14 Nov 2022 05:59:47 -0800 (PST) Received: from [10.57.39.18] (unknown [10.57.39.18]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2EF253F918; Mon, 14 Nov 2022 05:59:39 -0800 (PST) Message-ID: <66dc097f-c568-bb50-1d93-dba812bf7091@arm.com> Date: Mon, 14 Nov 2022 13:59:37 +0000 Precedence: bulk X-Mailing-List: oe-kbuild-all@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v12 1/2] drivers/coresight: Add UltraSoc System Memory Buffer driver To: hejunhao , kernel test robot , mathieu.poirier@linaro.org, mike.leach@linaro.org, leo.yan@linaro.org, jonathan.cameron@huawei.com, john.garry@huawei.com Cc: oe-kbuild-all@lists.linux.dev, coresight@lists.linaro.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, lpieralisi@kernel.org, linuxarm@huawei.com, liuqi115@huawei.com, f.fangjian@huawei.com, prime.zeng@hisilicon.com References: <20221109135008.9485-2-hejunhao3@huawei.com> <202211120623.aFVBerTp-lkp@intel.com> <901ee9b4-f0b3-437e-fce9-be3c6c214afe@huawei.com> From: Suzuki K Poulose In-Reply-To: <901ee9b4-f0b3-437e-fce9-be3c6c214afe@huawei.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 14/11/2022 13:06, hejunhao wrote: > > > On 2022/11/14 18:49, Suzuki K Poulose wrote: >> On 11/11/2022 22:06, kernel test robot wrote: >>> Hi Junhao, >>> >>> I love your patch! Perhaps something to improve: >>> >>> [auto build test WARNING on soc/for-next] >>> [also build test WARNING on linus/master v6.1-rc4 next-20221111] >>> [If your patch is applied to the wrong git tree, kindly drop us a note. >>> And when submitting patch, we suggest to use '--base' as documented in >>> https://git-scm.com/docs/git-format-patch#_base_tree_information] >>> >>> url: >>> https://github.com/intel-lab-lkp/linux/commits/Junhao-He/Add-support-for-UltraSoc-System-Memory-Buffer/20221109-215158 >>> base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git >>> for-next >>> patch link: >>> https://lore.kernel.org/r/20221109135008.9485-2-hejunhao3%40huawei.com >>> patch subject: [PATCH v12 1/2] drivers/coresight: Add UltraSoc System >>> Memory Buffer driver >>> config: arm64-randconfig-s033-20221111 >>> compiler: aarch64-linux-gcc (GCC) 12.1.0 >>> reproduce: >>>          wget >>> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross >>>          chmod +x ~/bin/make.cross >>>          # apt-get install sparse >>>          # sparse version: v0.6.4-39-gce1a6720-dirty >>>          # >>> https://github.com/intel-lab-lkp/linux/commit/49ede03fd874b65deca5382ea84c3377188136da >>>          git remote add linux-review >>> https://github.com/intel-lab-lkp/linux >>>          git fetch --no-tags linux-review >>> Junhao-He/Add-support-for-UltraSoc-System-Memory-Buffer/20221109-215158 >>>          git checkout 49ede03fd874b65deca5382ea84c3377188136da >>>          # save the config file >>>          mkdir build_dir && cp config build_dir/.config >>>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 >>> make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' >>> O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/hwtracing/coresight/ >>> >>> If you fix the issue, kindly add following tag where applicable >>> | Reported-by: kernel test robot >>> >>> sparse warnings: (new ones prefixed by >>) >>>>> drivers/hwtracing/coresight/ultrasoc-smb.c:113:33: sparse: sparse: >>>>> cast removes address space '__iomem' of expression >>>>> drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: sparse: >>>>> incorrect type in argument 1 (different address spaces) @@ expected >>>>> void const * @@     got void [noderef] __iomem * @@ >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: >>> expected void const * >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: got >>> void [noderef] __iomem * >>>>> drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: sparse: >>>>> incorrect type in argument 1 (different address spaces) @@ expected >>>>> void const * @@     got void [noderef] __iomem * @@ >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: >>> expected void const * >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: got >>> void [noderef] __iomem * >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: >>> sparse: incorrect type in argument 2 (different address spaces) >>> @@     expected void const * @@     got void [noderef] __iomem * @@ >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: >>> expected void const * >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:354:17: sparse: got >>> void [noderef] __iomem * >>>>> drivers/hwtracing/coresight/ultrasoc-smb.c:463:14: sparse: sparse: >>>>> incorrect type in assignment (different address spaces) @@ expected >>>>> void [noderef] __iomem *base @@     got void * @@ >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:463:14: sparse: >>> expected void [noderef] __iomem *base >>>     drivers/hwtracing/coresight/ultrasoc-smb.c:463:14: sparse: got >>> void * >>> >>> vim +/__iomem +113 drivers/hwtracing/coresight/ultrasoc-smb.c >>> >>>      89 >>>      90    static ssize_t smb_read(struct file *file, char __user >>> *data, size_t len, >>>      91                loff_t *ppos) >>>      92    { >>>      93        struct smb_drv_data *drvdata = >>> container_of(file->private_data, >>>      94                        struct smb_drv_data, miscdev); >>>      95        struct smb_data_buffer *sdb = &drvdata->sdb; >>>      96        struct device *dev = &drvdata->csdev->dev; >>>      97        ssize_t to_copy = 0; >>>      98 >>>      99        mutex_lock(&drvdata->mutex); >>>     100 >>>     101        if (!sdb->data_size) { >>>     102            smb_update_data_size(drvdata); >>>     103            if (!sdb->data_size) >>>     104                goto out; >>>     105        } >>>     106 >>>     107        to_copy = min(sdb->data_size, len); >>>     108 >>>     109        /* Copy parts of trace data when read pointer wrap >>> around SMB buffer */ >>>     110        if (sdb->rd_offset + to_copy > sdb->buf_size) >>>     111            to_copy = sdb->buf_size - sdb->rd_offset; >>>     112 >>>   > 113        if (copy_to_user(data, (void *)sdb->buf_base + >>> sdb->rd_offset, >>>     114                 to_copy)) { >>>     115            dev_dbg(dev, "Failed to copy data to user\n"); >>>     116            to_copy = -EFAULT; >>>     117            goto out; >>>     118        } >>>     119 >> >> Please could we replace this with copy_to_user_fromio() ? >> >> Suzuki >> >> _______________________________________________ >> CoreSight mailing list -- coresight@lists.linaro.org >> To unsubscribe send an email to coresight-leave@lists.linaro.org >> . >> > Hi Suzuki, > > This is a cache memory,  due to improper use of "__iomem" , the sparse > generates warnings. > I has fix it in v13. > https://lore.kernel.org/lkml/20221114090316.63157-2-hejunhao3@huawei.com/ I don't see a ChangeLog mentioning that this change. Please make sure you accurately describe the changes (especially fixes like these). Thanks Suzuki > > Best regards, > Junhao. > > > 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 B0C6BC4332F for ; Mon, 14 Nov 2022 14:01:45 +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=K1jLQOogWdscY+e9q6YHV5zOnXidSQq/Be32KL0SpwQ=; b=bd6jU/neAKJc18 HlX3DrhV875uex0+7QV3kh3OauYH+aWJVXcNdOi9JQqavmYvxfJlLxDX0TMTqkHxxfxiHyTucs0i8 FpfTHnaDdaZr2r4p91QErvouTC2bY5zgxeO5Dt6jkwBDfxW1BBYfqrc6I51FL/2NprP8gtKD53hf3 +DimbWpwWwHOw979KvS/VITHhpWHZb7cus488wgtYZ5XYWNQ6+wd7K+88FM9lYrn6oAYeMaJxOT+K dEqicEJ46d469OqdfjRYfcLZ4yvsEUSeVxxTSXq4sDozpNUilONdceVhZZbVwdCqlVa4I2ITQVA6C Gv5dKevsQOwVPPGUF9nw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oua0m-001Uqv-Cv; Mon, 14 Nov 2022 14:00:32 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oua01-001UTZ-OH for linux-arm-kernel@lists.infradead.org; Mon, 14 Nov 2022 13:59:48 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E447123A; Mon, 14 Nov 2022 05:59:47 -0800 (PST) Received: from [10.57.39.18] (unknown [10.57.39.18]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2EF253F918; Mon, 14 Nov 2022 05:59:39 -0800 (PST) Message-ID: <66dc097f-c568-bb50-1d93-dba812bf7091@arm.com> Date: Mon, 14 Nov 2022 13:59:37 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v12 1/2] drivers/coresight: Add UltraSoc System Memory Buffer driver To: hejunhao , kernel test robot , mathieu.poirier@linaro.org, mike.leach@linaro.org, leo.yan@linaro.org, jonathan.cameron@huawei.com, john.garry@huawei.com Cc: oe-kbuild-all@lists.linux.dev, coresight@lists.linaro.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, lpieralisi@kernel.org, linuxarm@huawei.com, liuqi115@huawei.com, f.fangjian@huawei.com, prime.zeng@hisilicon.com References: <20221109135008.9485-2-hejunhao3@huawei.com> <202211120623.aFVBerTp-lkp@intel.com> <901ee9b4-f0b3-437e-fce9-be3c6c214afe@huawei.com> From: Suzuki K Poulose In-Reply-To: <901ee9b4-f0b3-437e-fce9-be3c6c214afe@huawei.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221114_055945_911234_BB1FA537 X-CRM114-Status: GOOD ( 18.11 ) 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 T24gMTQvMTEvMjAyMiAxMzowNiwgaGVqdW5oYW8gd3JvdGU6Cj4gCj4gCj4gT24gMjAyMi8xMS8x NCAxODo0OSwgU3V6dWtpIEsgUG91bG9zZSB3cm90ZToKPj4gT24gMTEvMTEvMjAyMiAyMjowNiwg a2VybmVsIHRlc3Qgcm9ib3Qgd3JvdGU6Cj4+PiBIaSBKdW5oYW8sCj4+Pgo+Pj4gSSBsb3ZlIHlv dXIgcGF0Y2ghIFBlcmhhcHMgc29tZXRoaW5nIHRvIGltcHJvdmU6Cj4+Pgo+Pj4gW2F1dG8gYnVp bGQgdGVzdCBXQVJOSU5HIG9uIHNvYy9mb3ItbmV4dF0KPj4+IFthbHNvIGJ1aWxkIHRlc3QgV0FS TklORyBvbiBsaW51cy9tYXN0ZXIgdjYuMS1yYzQgbmV4dC0yMDIyMTExMV0KPj4+IFtJZiB5b3Vy IHBhdGNoIGlzIGFwcGxpZWQgdG8gdGhlIHdyb25nIGdpdCB0cmVlLCBraW5kbHkgZHJvcCB1cyBh IG5vdGUuCj4+PiBBbmQgd2hlbiBzdWJtaXR0aW5nIHBhdGNoLCB3ZSBzdWdnZXN0IHRvIHVzZSAn LS1iYXNlJyBhcyBkb2N1bWVudGVkIGluCj4+PiBodHRwczovL2dpdC1zY20uY29tL2RvY3MvZ2l0 LWZvcm1hdC1wYXRjaCNfYmFzZV90cmVlX2luZm9ybWF0aW9uXQo+Pj4KPj4+IHVybDogCj4+PiBo dHRwczovL2dpdGh1Yi5jb20vaW50ZWwtbGFiLWxrcC9saW51eC9jb21taXRzL0p1bmhhby1IZS9B ZGQtc3VwcG9ydC1mb3ItVWx0cmFTb2MtU3lzdGVtLU1lbW9yeS1CdWZmZXIvMjAyMjExMDktMjE1 MTU4Cj4+PiBiYXNlOiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs L2dpdC9zb2Mvc29jLmdpdCAKPj4+IGZvci1uZXh0Cj4+PiBwYXRjaCBsaW5rOiAKPj4+IGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyMjExMDkxMzUwMDguOTQ4NS0yLWhlanVuaGFvMyU0MGh1 YXdlaS5jb20KPj4+IHBhdGNoIHN1YmplY3Q6IFtQQVRDSCB2MTIgMS8yXSBkcml2ZXJzL2NvcmVz aWdodDogQWRkIFVsdHJhU29jIFN5c3RlbSAKPj4+IE1lbW9yeSBCdWZmZXIgZHJpdmVyCj4+PiBj b25maWc6IGFybTY0LXJhbmRjb25maWctczAzMy0yMDIyMTExMQo+Pj4gY29tcGlsZXI6IGFhcmNo NjQtbGludXgtZ2NjIChHQ0MpIDEyLjEuMAo+Pj4gcmVwcm9kdWNlOgo+Pj4gwqDCoMKgwqDCoMKg wqDCoCB3Z2V0IAo+Pj4gaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ludGVsL2xr cC10ZXN0cy9tYXN0ZXIvc2Jpbi9tYWtlLmNyb3NzIC1PIH4vYmluL21ha2UuY3Jvc3MKPj4+IMKg wqDCoMKgwqDCoMKgwqAgY2htb2QgK3ggfi9iaW4vbWFrZS5jcm9zcwo+Pj4gwqDCoMKgwqDCoMKg wqDCoCAjIGFwdC1nZXQgaW5zdGFsbCBzcGFyc2UKPj4+IMKgwqDCoMKgwqDCoMKgwqAgIyBzcGFy c2UgdmVyc2lvbjogdjAuNi40LTM5LWdjZTFhNjcyMC1kaXJ0eQo+Pj4gwqDCoMKgwqDCoMKgwqDC oCAjIAo+Pj4gaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLWxhYi1sa3AvbGludXgvY29tbWl0LzQ5 ZWRlMDNmZDg3NGI2NWRlY2E1MzgyZWE4NGMzMzc3MTg4MTM2ZGEKPj4+IMKgwqDCoMKgwqDCoMKg wqAgZ2l0IHJlbW90ZSBhZGQgbGludXgtcmV2aWV3IAo+Pj4gaHR0cHM6Ly9naXRodWIuY29tL2lu dGVsLWxhYi1sa3AvbGludXgKPj4+IMKgwqDCoMKgwqDCoMKgwqAgZ2l0IGZldGNoIC0tbm8tdGFn cyBsaW51eC1yZXZpZXcgCj4+PiBKdW5oYW8tSGUvQWRkLXN1cHBvcnQtZm9yLVVsdHJhU29jLVN5 c3RlbS1NZW1vcnktQnVmZmVyLzIwMjIxMTA5LTIxNTE1OAo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBn aXQgY2hlY2tvdXQgNDllZGUwM2ZkODc0YjY1ZGVjYTUzODJlYTg0YzMzNzcxODgxMzZkYQo+Pj4g wqDCoMKgwqDCoMKgwqDCoCAjIHNhdmUgdGhlIGNvbmZpZyBmaWxlCj4+PiDCoMKgwqDCoMKgwqDC oMKgIG1rZGlyIGJ1aWxkX2RpciAmJiBjcCBjb25maWcgYnVpbGRfZGlyLy5jb25maWcKPj4+IMKg wqDCoMKgwqDCoMKgwqAgQ09NUElMRVJfSU5TVEFMTF9QQVRIPSRIT01FLzBkYXkgQ09NUElMRVI9 Z2NjLTEyLjEuMCAKPj4+IG1ha2UuY3Jvc3MgQz0xIENGPSctZmRpYWdub3N0aWMtcHJlZml4IC1E X19DSEVDS19FTkRJQU5fXycgCj4+PiBPPWJ1aWxkX2RpciBBUkNIPWFybTY0IFNIRUxMPS9iaW4v YmFzaCBkcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvCj4+Pgo+Pj4gSWYgeW91IGZpeCB0aGUg aXNzdWUsIGtpbmRseSBhZGQgZm9sbG93aW5nIHRhZyB3aGVyZSBhcHBsaWNhYmxlCj4+PiB8IFJl cG9ydGVkLWJ5OiBrZXJuZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4KPj4+Cj4+PiBzcGFy c2Ugd2FybmluZ3M6IChuZXcgb25lcyBwcmVmaXhlZCBieSA+PikKPj4+Pj4gZHJpdmVycy9od3Ry YWNpbmcvY29yZXNpZ2h0L3VsdHJhc29jLXNtYi5jOjExMzozMzogc3BhcnNlOiBzcGFyc2U6IAo+ Pj4+PiBjYXN0IHJlbW92ZXMgYWRkcmVzcyBzcGFjZSAnX19pb21lbScgb2YgZXhwcmVzc2lvbgo+ Pj4+PiBkcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvdWx0cmFzb2Mtc21iLmM6MzU0OjE3OiBz cGFyc2U6IHNwYXJzZTogCj4+Pj4+IGluY29ycmVjdCB0eXBlIGluIGFyZ3VtZW50IDEgKGRpZmZl cmVudCBhZGRyZXNzIHNwYWNlcykgQEAgZXhwZWN0ZWQgCj4+Pj4+IHZvaWQgY29uc3QgKiBAQMKg wqDCoMKgIGdvdCB2b2lkIFtub2RlcmVmXSBfX2lvbWVtICogQEAKPj4+IMKgwqDCoCBkcml2ZXJz L2h3dHJhY2luZy9jb3Jlc2lnaHQvdWx0cmFzb2Mtc21iLmM6MzU0OjE3OiBzcGFyc2U6IAo+Pj4g ZXhwZWN0ZWQgdm9pZCBjb25zdCAqCj4+PiDCoMKgwqAgZHJpdmVycy9od3RyYWNpbmcvY29yZXNp Z2h0L3VsdHJhc29jLXNtYi5jOjM1NDoxNzogc3BhcnNlOiBnb3QgCj4+PiB2b2lkIFtub2RlcmVm XSBfX2lvbWVtICoKPj4+Pj4gZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L3VsdHJhc29jLXNt Yi5jOjM1NDoxNzogc3BhcnNlOiBzcGFyc2U6IAo+Pj4+PiBpbmNvcnJlY3QgdHlwZSBpbiBhcmd1 bWVudCAxIChkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZXMpIEBAIGV4cGVjdGVkIAo+Pj4+PiB2b2lk IGNvbnN0ICogQEDCoMKgwqDCoCBnb3Qgdm9pZCBbbm9kZXJlZl0gX19pb21lbSAqIEBACj4+PiDC oMKgwqAgZHJpdmVycy9od3RyYWNpbmcvY29yZXNpZ2h0L3VsdHJhc29jLXNtYi5jOjM1NDoxNzog c3BhcnNlOiAKPj4+IGV4cGVjdGVkIHZvaWQgY29uc3QgKgo+Pj4gwqDCoMKgIGRyaXZlcnMvaHd0 cmFjaW5nL2NvcmVzaWdodC91bHRyYXNvYy1zbWIuYzozNTQ6MTc6IHNwYXJzZTogZ290IAo+Pj4g dm9pZCBbbm9kZXJlZl0gX19pb21lbSAqCj4+PiDCoMKgwqAgZHJpdmVycy9od3RyYWNpbmcvY29y ZXNpZ2h0L3VsdHJhc29jLXNtYi5jOjM1NDoxNzogc3BhcnNlOiAKPj4+IHNwYXJzZTogaW5jb3Jy ZWN0IHR5cGUgaW4gYXJndW1lbnQgMiAoZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzKSAKPj4+IEBA wqDCoMKgwqAgZXhwZWN0ZWQgdm9pZCBjb25zdCAqIEBAwqDCoMKgwqAgZ290IHZvaWQgW25vZGVy ZWZdIF9faW9tZW0gKiBAQAo+Pj4gwqDCoMKgIGRyaXZlcnMvaHd0cmFjaW5nL2NvcmVzaWdodC91 bHRyYXNvYy1zbWIuYzozNTQ6MTc6IHNwYXJzZTogCj4+PiBleHBlY3RlZCB2b2lkIGNvbnN0ICoK Pj4+IMKgwqDCoCBkcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvdWx0cmFzb2Mtc21iLmM6MzU0 OjE3OiBzcGFyc2U6IGdvdCAKPj4+IHZvaWQgW25vZGVyZWZdIF9faW9tZW0gKgo+Pj4+PiBkcml2 ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvdWx0cmFzb2Mtc21iLmM6NDYzOjE0OiBzcGFyc2U6IHNw YXJzZTogCj4+Pj4+IGluY29ycmVjdCB0eXBlIGluIGFzc2lnbm1lbnQgKGRpZmZlcmVudCBhZGRy ZXNzIHNwYWNlcykgQEAgZXhwZWN0ZWQgCj4+Pj4+IHZvaWQgW25vZGVyZWZdIF9faW9tZW0gKmJh c2UgQEDCoMKgwqDCoCBnb3Qgdm9pZCAqIEBACj4+PiDCoMKgwqAgZHJpdmVycy9od3RyYWNpbmcv Y29yZXNpZ2h0L3VsdHJhc29jLXNtYi5jOjQ2MzoxNDogc3BhcnNlOiAKPj4+IGV4cGVjdGVkIHZv aWQgW25vZGVyZWZdIF9faW9tZW0gKmJhc2UKPj4+IMKgwqDCoCBkcml2ZXJzL2h3dHJhY2luZy9j b3Jlc2lnaHQvdWx0cmFzb2Mtc21iLmM6NDYzOjE0OiBzcGFyc2U6IGdvdCAKPj4+IHZvaWQgKgo+ Pj4KPj4+IHZpbSArL19faW9tZW0gKzExMyBkcml2ZXJzL2h3dHJhY2luZy9jb3Jlc2lnaHQvdWx0 cmFzb2Mtc21iLmMKPj4+Cj4+PiDCoMKgwqDCoCA4OQo+Pj4gwqDCoMKgwqAgOTDCoMKgwqAgc3Rh dGljIHNzaXplX3Qgc21iX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyIAo+Pj4g KmRhdGEsIHNpemVfdCBsZW4sCj4+PiDCoMKgwqDCoCA5McKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBsb2ZmX3QgKnBwb3MpCj4+PiDCoMKgwqDCoCA5MsKgwqDCoCB7Cj4+PiDCoMKgwqDC oCA5M8KgwqDCoMKgwqDCoMKgIHN0cnVjdCBzbWJfZHJ2X2RhdGEgKmRydmRhdGEgPSAKPj4+IGNv bnRhaW5lcl9vZihmaWxlLT5wcml2YXRlX2RhdGEsCj4+PiDCoMKgwqDCoCA5NMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHNtYl9kcnZfZGF0YSwg bWlzY2Rldik7Cj4+PiDCoMKgwqDCoCA5NcKgwqDCoMKgwqDCoMKgIHN0cnVjdCBzbWJfZGF0YV9i dWZmZXIgKnNkYiA9ICZkcnZkYXRhLT5zZGI7Cj4+PiDCoMKgwqDCoCA5NsKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkZXZpY2UgKmRldiA9ICZkcnZkYXRhLT5jc2Rldi0+ZGV2Owo+Pj4gwqDCoMKgwqAg OTfCoMKgwqDCoMKgwqDCoCBzc2l6ZV90IHRvX2NvcHkgPSAwOwo+Pj4gwqDCoMKgwqAgOTgKPj4+ IMKgwqDCoMKgIDk5wqDCoMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmZHJ2ZGF0YS0+bXV0ZXgpOwo+ Pj4gwqDCoMKgIDEwMAo+Pj4gwqDCoMKgIDEwMcKgwqDCoMKgwqDCoMKgIGlmICghc2RiLT5kYXRh X3NpemUpIHsKPj4+IMKgwqDCoCAxMDLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNtYl91cGRhdGVf ZGF0YV9zaXplKGRydmRhdGEpOwo+Pj4gwqDCoMKgIDEwM8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKCFzZGItPmRhdGFfc2l6ZSkKPj4+IMKgwqDCoCAxMDTCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ290byBvdXQ7Cj4+PiDCoMKgwqAgMTA1wqDCoMKgwqDCoMKgwqAgfQo+Pj4gwqDC oMKgIDEwNgo+Pj4gwqDCoMKgIDEwN8KgwqDCoMKgwqDCoMKgIHRvX2NvcHkgPSBtaW4oc2RiLT5k YXRhX3NpemUsIGxlbik7Cj4+PiDCoMKgwqAgMTA4Cj4+PiDCoMKgwqAgMTA5wqDCoMKgwqDCoMKg wqAgLyogQ29weSBwYXJ0cyBvZiB0cmFjZSBkYXRhIHdoZW4gcmVhZCBwb2ludGVyIHdyYXAgCj4+ PiBhcm91bmQgU01CIGJ1ZmZlciAqLwo+Pj4gwqDCoMKgIDExMMKgwqDCoMKgwqDCoMKgIGlmIChz ZGItPnJkX29mZnNldCArIHRvX2NvcHkgPiBzZGItPmJ1Zl9zaXplKQo+Pj4gwqDCoMKgIDExMcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdG9fY29weSA9IHNkYi0+YnVmX3NpemUgLSBzZGItPnJkX29m ZnNldDsKPj4+IMKgwqDCoCAxMTIKPj4+IMKgID4gMTEzwqDCoMKgwqDCoMKgwqAgaWYgKGNvcHlf dG9fdXNlcihkYXRhLCAodm9pZCAqKXNkYi0+YnVmX2Jhc2UgKyAKPj4+IHNkYi0+cmRfb2Zmc2V0 LAo+Pj4gwqDCoMKgIDExNMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvX2NvcHkp KSB7Cj4+PiDCoMKgwqAgMTE1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfZGJnKGRldiwgIkZh aWxlZCB0byBjb3B5IGRhdGEgdG8gdXNlclxuIik7Cj4+PiDCoMKgwqAgMTE2wqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB0b19jb3B5ID0gLUVGQVVMVDsKPj4+IMKgwqDCoCAxMTfCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGdvdG8gb3V0Owo+Pj4gwqDCoMKgIDExOMKgwqDCoMKgwqDCoMKgIH0KPj4+IMKg wqDCoCAxMTkKPj4KPj4gUGxlYXNlIGNvdWxkIHdlIHJlcGxhY2UgdGhpcyB3aXRoIGNvcHlfdG9f dXNlcl9mcm9taW8oKSA/Cj4+Cj4+IFN1enVraQo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBDb3JlU2lnaHQgbWFpbGluZyBsaXN0IC0tIGNv cmVzaWdodEBsaXN0cy5saW5hcm8ub3JnCj4+IFRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwg dG8gY29yZXNpZ2h0LWxlYXZlQGxpc3RzLmxpbmFyby5vcmcKPj4gLgo+Pgo+IEhpIFN1enVraSwK PiAKPiBUaGlzIGlzIGEgY2FjaGUgbWVtb3J5LMKgIGR1ZSB0byBpbXByb3BlciB1c2Ugb2YgIl9f aW9tZW0iICwgdGhlIHNwYXJzZSAKPiBnZW5lcmF0ZXMgd2FybmluZ3MuCj4gSSBoYXMgZml4IGl0 IGluIHYxMy4KPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjIxMTE0MDkwMzE2LjYz MTU3LTItaGVqdW5oYW8zQGh1YXdlaS5jb20vCgpJIGRvbid0IHNlZSBhIENoYW5nZUxvZyBtZW50 aW9uaW5nIHRoYXQgdGhpcyBjaGFuZ2UuIFBsZWFzZSBtYWtlIHN1cmUKeW91IGFjY3VyYXRlbHkg ZGVzY3JpYmUgdGhlIGNoYW5nZXMgKGVzcGVjaWFsbHkgZml4ZXMgbGlrZSB0aGVzZSkuCgpUaGFu a3MKU3V6dWtpCgo+IAo+IEJlc3QgcmVnYXJkcywKPiBKdW5oYW8uCj4gCj4gCj4gCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=