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 67625C77B62 for ; Mon, 3 Apr 2023 20:36:07 +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=Ufe4xVPGKAefmZjMF9YvBB96cJQ0z+dDHu32vlJCs04=; b=ZCjnIR6GpAksZI /AehB2FDPGx/XODHFe02WT68fP7SEyizWfPVIkP9Y/OW07tcwI6yV2Xm+SDSAOUJA1jLXVtBYkw9F D3mIt6hQoyjy0wc4xhz2VyVu97K8IhEolNS8gn4ciLL42nDUDWmR9P2/c8o1MscVGUPxNFdVVcw3n UM9JwfNoiSTjhIbh7XYFcuhRCXLOReLHSvovWLx8VMQbT4msrFLksROuL+x3jNYqWIN6c7DEsMcNB 1yLnpBF3XlfEbDRVprQulZZBL1/X7d8jXEO8wLxlY7eQ74N4l2BaD6qrz/OeJM7q6JQVXXYFU4jNC o9bqkcg+qNgtFdr4IvgA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pjQtV-00Gevm-1p; Mon, 03 Apr 2023 20:35:13 +0000 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pjQtR-00GeuI-2O for linux-arm-kernel@lists.infradead.org; Mon, 03 Apr 2023 20:35:12 +0000 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 333ETv8c027587; Mon, 3 Apr 2023 20:34:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=qcppdkim1; bh=0y+2yRD4cbbBvfAfR4jDn5m56JlDgK3Zu4rz5RmpMDc=; b=TBx5o1Z3wlJeHYeIDopr74ZHYBscCJqm6ruu+YmXrJbjN655rFBH+FwazJrNSo53B8tN wh01u7GAfUhJH0IPABcwbBdw+SYaXDn7UkYGfhM1+OBnzafultaSMC8U1cZ+TxJZimII X22iTQET77/UaXBqduiADHiHTSg3mRioA0Fasban5br5UibogQq6H2h5gXZQmbP0U+QS EYvFhKEM2dGzhUWz7XeyvBswzpaOqxTGfY9JA63kkbBwZdLlr5om3/+O9jr29aiYs8o1 rW4eBrNdg6SyHogE8HjC1qKBn2y5T9AStpJ8jUjpzd1UzN/hh/3y6p9fyvPsv+DLcn4F LQ== Received: from nasanppmta04.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3pr0kx0ud2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 03 Apr 2023 20:34:59 +0000 Received: from nasanex01b.na.qualcomm.com (nasanex01b.na.qualcomm.com [10.46.141.250]) by NASANPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 333KYvNx002200 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 3 Apr 2023 20:34:57 GMT Received: from [10.134.65.165] (10.80.80.8) by nasanex01b.na.qualcomm.com (10.46.141.250) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Mon, 3 Apr 2023 13:34:54 -0700 Message-ID: Date: Mon, 3 Apr 2023 13:34:54 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH v11 08/26] gunyah: rsc_mgr: Add resource manager RPC core Content-Language: en-US To: Alex Elder , Srinivas Kandagatla , Prakruthi Deepak Heragu CC: Murali Nalajala , Trilok Soni , Srivatsa Vaddagiri , Carl van Schaik , Dmitry Baryshkov , Bjorn Andersson , "Konrad Dybcio" , Arnd Bergmann , "Greg Kroah-Hartman" , Rob Herring , Krzysztof Kozlowski , Jonathan Corbet , Bagas Sanjaya , Will Deacon , Andy Gross , Catalin Marinas , Jassi Brar , , , , , References: <20230304010632.2127470-1-quic_eberman@quicinc.com> <20230304010632.2127470-9-quic_eberman@quicinc.com> <02ab8928-a34a-f034-d123-b0319edf1c6f@linaro.org> From: Elliot Berman In-Reply-To: <02ab8928-a34a-f034-d123-b0319edf1c6f@linaro.org> X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nasanex01b.na.qualcomm.com (10.46.141.250) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: yrNk7GRagd8QvSMzmubOPqYtnBtpFnPH X-Proofpoint-ORIG-GUID: yrNk7GRagd8QvSMzmubOPqYtnBtpFnPH X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-03_16,2023-04-03_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 phishscore=0 priorityscore=1501 malwarescore=0 suspectscore=0 impostorscore=0 mlxlogscore=999 clxscore=1015 lowpriorityscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304030160 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230403_133509_906793_14BF4661 X-CRM114-Status: GOOD ( 46.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 CgpPbiAzLzMxLzIwMjMgNzoyNSBBTSwgQWxleCBFbGRlciB3cm90ZToKPiBPbiAzLzMvMjMgNzow NiBQTSwgRWxsaW90IEJlcm1hbiB3cm90ZToKPj4gVGhlIHJlc291cmNlIG1hbmFnZXIgaXMgYSBz cGVjaWFsIHZpcnR1YWwgbWFjaGluZSB3aGljaCBpcyBhbHdheXMKPj4gcnVubmluZyBvbiBhIEd1 bnlhaCBzeXN0ZW0uIEl0IHByb3ZpZGVzIEFQSXMgZm9yIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5n Cj4+IFZNcywgc2VjdXJlIG1lbW9yeSBtYW5hZ2VtZW50LCBzaGFyaW5nL2xlbmRpbmcgb2YgbWVt b3J5IGJldHdlZW4gVk1zLAo+PiBhbmQgc2V0dXAgb2YgaW50ZXItVk0gY29tbXVuaWNhdGlvbi4g Q2FsbHMgdG8gdGhlIHJlc291cmNlIG1hbmFnZXIgYXJlCj4+IG1hZGUgdmlhIG1lc3NhZ2UgcXVl dWVzLgo+Pgo+PiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGJhc2ljIHByb2JpbmcgYW5kIFJQ QyBtZWNoYW5pc20gdG8gbWFrZSB0aG9zZQo+PiBBUEkgY2FsbHMuIFJlcXVlc3QvcmVzcG9uc2Ug Y2FsbHMgY2FuIGJlIG1hZGUgd2l0aCBnaF9ybV9jYWxsLgo+PiBEcml2ZXJzIGNhbiBhbHNvIHJl Z2lzdGVyIHRvIG5vdGlmaWNhdGlvbnMgcHVzaGVkIGJ5IFJNIHZpYQo+PiBnaF9ybV9yZWdpc3Rl cl9ub3RpZmllcgo+Pgo+PiBTcGVjaWZpYyBBUEkgY2FsbHMgdGhhdCByZXNvdXJjZSBtYW5hZ2Vy IHN1cHBvcnRzIHdpbGwgYmUgaW1wbGVtZW50ZWQgaW4KPj4gc3Vic2VxdWVudCBwYXRjaGVzLgo+ IAo+IE1vc3RseSB2ZXJ5IHNpbXBsZSBpc3N1ZXMgbm90ZWQgaGVyZS7CoMKgwqAgLUFsZXgKPiAK Pj4gU2lnbmVkLW9mZi1ieTogRWxsaW90IEJlcm1hbiA8cXVpY19lYmVybWFuQHF1aWNpbmMuY29t Pgo+PiAtLS0KPj4gwqAgZHJpdmVycy92aXJ0L2d1bnlhaC9NYWtlZmlsZcKgwqAgfMKgwqAgMyAr Cj4+IMKgIGRyaXZlcnMvdmlydC9ndW55YWgvcnNjX21nci5jwqAgfCA2ODggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4+IMKgIGRyaXZlcnMvdmlydC9ndW55YWgvcnNjX21nci5o wqAgfMKgIDE2ICsKPj4gwqAgaW5jbHVkZS9saW51eC9ndW55YWhfcnNjX21nci5oIHzCoCAyMSAr Cj4+IMKgIDQgZmlsZXMgY2hhbmdlZCwgNzI4IGluc2VydGlvbnMoKykKPj4gwqAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvdmlydC9ndW55YWgvcnNjX21nci5jCj4+IMKgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL3ZpcnQvZ3VueWFoL3JzY19tZ3IuaAo+PiDCoCBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9saW51eC9ndW55YWhfcnNjX21nci5oCj4+Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpcnQvZ3VueWFoL01ha2VmaWxlIGIvZHJpdmVycy92aXJ0L2d1bnlhaC9NYWtlZmls ZQo+PiBpbmRleCAzNGYzMjExMGZhZjkuLmNjODY0ZmY1YWJiYiAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy92aXJ0L2d1bnlhaC9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL3ZpcnQvZ3VueWFoL01h a2VmaWxlCj4+IEBAIC0xLDMgKzEsNiBAQAo+PiDCoCAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCj4+IMKgIG9iai0kKENPTkZJR19HVU5ZQUgpICs9IGd1bnlhaC5vCj4+ICsKPj4g K2d1bnlhaF9yc2NfbWdyLXkgKz0gcnNjX21nci5vCj4+ICtvYmotJChDT05GSUdfR1VOWUFIKSAr PSBndW55YWhfcnNjX21nci5vCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnQvZ3VueWFoL3Jz Y19tZ3IuYyAKPj4gYi9kcml2ZXJzL3ZpcnQvZ3VueWFoL3JzY19tZ3IuYwo+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjY3ODEzYzlhNTJkYgo+PiAtLS0gL2Rl di9udWxsCj4+ICsrKyBiL2RyaXZlcnMvdmlydC9ndW55YWgvcnNjX21nci5jCj4+IEBAIC0wLDAg KzEsNjg4IEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4+ ICsvKgo+PiArICogQ29weXJpZ2h0IChjKSAyMDIyLTIwMjMgUXVhbGNvbW0gSW5ub3ZhdGlvbiBD ZW50ZXIsIEluYy4gQWxsIAo+PiByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKi8KPj4gKwo+IAo+IC4g LiAuCj4gCj4+ICtzdGF0aWMgdm9pZCBnaF9ybV90cnlfY29tcGxldGVfY29ubmVjdGlvbihzdHJ1 Y3QgZ2hfcm0gKnJtKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBnaF9ybV9jb25uZWN0aW9uICpj b25uZWN0aW9uID0gcm0tPmFjdGl2ZV9yeF9jb25uZWN0aW9uOwo+PiArCj4+ICvCoMKgwqAgaWYg KCFjb25uZWN0aW9uIHx8IGNvbm5lY3Rpb24tPmZyYWdtZW50c19yZWNlaXZlZCAhPSAKPj4gY29u bmVjdGlvbi0+bnVtX2ZyYWdtZW50cykKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gKwo+ PiArwqDCoMKgIHN3aXRjaCAoY29ubmVjdGlvbi0+dHlwZSkgewo+PiArwqDCoMKgIGNhc2UgUk1f UlBDX1RZUEVfUkVQTFk6Cj4+ICvCoMKgwqDCoMKgwqDCoCBjb21wbGV0ZSgmY29ubmVjdGlvbi0+ cmVwbHkuc2VxX2RvbmUpOwo+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2Fz ZSBSTV9SUENfVFlQRV9OT1RJRjoKPj4gK8KgwqDCoMKgwqDCoMKgIHNjaGVkdWxlX3dvcmsoJmNv bm5lY3Rpb24tPm5vdGlmaWNhdGlvbi53b3JrKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ PiArwqDCoMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyX3JhdGVsaW1pdGVk KHJtLT5kZXYsICJJbnZhbGlkIG1lc3NhZ2UgdHlwZSAoJWQpIAo+PiByZWNlaXZlZFxuIiwKPiAK PiBzLyVkLyV1Lwo+IAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29ubmVjdGlvbi0+dHlwZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnaF9ybV9hYm9ydF9jb25uZWN0 aW9uKHJtKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIH0KPj4gKwo+PiAr wqDCoMKgIHJtLT5hY3RpdmVfcnhfY29ubmVjdGlvbiA9IE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyB2b2lkIGdoX3JtX21zZ3FfcnhfZGF0YShzdHJ1Y3QgbWJveF9jbGllbnQgKmNsLCB2b2lk ICptc3NnKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBnaF9ybSAqcm0gPSBjb250YWluZXJfb2Yo Y2wsIHN0cnVjdCBnaF9ybSwgbXNncV9jbGllbnQpOwo+PiArwqDCoMKgIHN0cnVjdCBnaF9tc2dx X3J4X2RhdGEgKnJ4X2RhdGEgPSBtc3NnOwo+PiArwqDCoMKgIHNpemVfdCBtc2dfc2l6ZSA9IHJ4 X2RhdGEtPmxlbmd0aDsKPj4gK8KgwqDCoCB2b2lkICptc2cgPSByeF9kYXRhLT5kYXRhOwo+PiAr wqDCoMKgIHN0cnVjdCBnaF9ybV9ycGNfaGRyICpoZHI7Cj4+ICsKPj4gK8KgwqDCoCBpZiAobXNn X3NpemUgPCBzaXplb2YoKmhkcikgfHwgbXNnX3NpemUgPiBHSF9NU0dRX01BWF9NU0dfU0laRSkK Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gKwo+PiArwqDCoMKgIGhkciA9IG1zZzsKPj4g K8KgwqDCoCBpZiAoaGRyLT5hcGkgIT0gUk1fUlBDX0FQSSkgewo+PiArwqDCoMKgwqDCoMKgwqAg ZGV2X2VycihybS0+ZGV2LCAiVW5rbm93biBSTSBSUEMgQVBJIHZlcnNpb246ICV4XG4iLCBoZHIt PmFwaSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvC oMKgwqAgc3dpdGNoIChGSUVMRF9HRVQoUk1fUlBDX1RZUEVfTUFTSywgaGRyLT50eXBlKSkgewo+ PiArwqDCoMKgIGNhc2UgUk1fUlBDX1RZUEVfTk9USUY6Cj4+ICvCoMKgwqDCoMKgwqDCoCBnaF9y bV9wcm9jZXNzX25vdGlmKHJtLCBtc2csIG1zZ19zaXplKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJy ZWFrOwo+PiArwqDCoMKgIGNhc2UgUk1fUlBDX1RZUEVfUkVQTFk6Cj4+ICvCoMKgwqDCoMKgwqDC oCBnaF9ybV9wcm9jZXNzX3JwbHkocm0sIG1zZywgbXNnX3NpemUpOwo+PiArwqDCoMKgwqDCoMKg wqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2FzZSBSTV9SUENfVFlQRV9DT05USU5VQVRJT046Cj4+ICvC oMKgwqDCoMKgwqDCoCBnaF9ybV9wcm9jZXNzX2NvbnQocm0sIHJtLT5hY3RpdmVfcnhfY29ubmVj dGlvbiwgbXNnLCBtc2dfc2l6ZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDC oCBkZWZhdWx0Ogo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2VycihybS0+ZGV2LCAiSW52YWxpZCBt ZXNzYWdlIHR5cGUgKCVsdSkgcmVjZWl2ZWRcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEZJRUxEX0dFVChSTV9SUENfVFlQRV9NQVNLLCBoZHItPnR5cGUpKTsKPj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybjsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBnaF9ybV90cnlfY29tcGxl dGVfY29ubmVjdGlvbihybSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGdoX3JtX21zZ3Ff dHhfZG9uZShzdHJ1Y3QgbWJveF9jbGllbnQgKmNsLCB2b2lkICptc3NnLCAKPj4gaW50IHIpCj4+ ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGdoX3JtICpybSA9IGNvbnRhaW5lcl9vZihjbCwgc3RydWN0 IGdoX3JtLCBtc2dxX2NsaWVudCk7Cj4+ICsKPj4gK8KgwqDCoCBrbWVtX2NhY2hlX2ZyZWUocm0t PmNhY2hlLCBtc3NnKTsKPj4gK8KgwqDCoCBybS0+bGFzdF90eF9yZXQgPSByOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50IGdoX3JtX3NlbmRfcmVxdWVzdChzdHJ1Y3QgZ2hfcm0gKnJtLCB1MzIg bWVzc2FnZV9pZCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qg dm9pZCAqcmVxX2J1ZmYsIHNpemVfdCByZXFfYnVmX3NpemUsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBnaF9ybV9jb25uZWN0aW9uICpjb25uZWN0aW9uKQo+ PiArewo+PiArwqDCoMKgIHNpemVfdCBidWZfc2l6ZV9yZW1haW5pbmcgPSByZXFfYnVmX3NpemU7 Cj4+ICvCoMKgwqAgY29uc3Qgdm9pZCAqcmVxX2J1Zl9jdXJyID0gcmVxX2J1ZmY7Cj4+ICvCoMKg wqAgc3RydWN0IGdoX21zZ3FfdHhfZGF0YSAqbXNnOwo+PiArwqDCoMKgIHN0cnVjdCBnaF9ybV9y cGNfaGRyICpoZHIsIGhkcl90ZW1wbGF0ZTsKPj4gK8KgwqDCoCB1MzIgY29udF9mcmFnbWVudHMg PSAwOwo+PiArwqDCoMKgIHNpemVfdCBwYXlsb2FkX3NpemU7Cj4+ICvCoMKgwqAgdm9pZCAqcGF5 bG9hZDsKPj4gK8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgaWYgKHJlcV9idWZfc2l6 ZSA+IEdIX1JNX01BWF9OVU1fRlJBR01FTlRTICogR0hfUk1fTUFYX01TR19TSVpFKSB7Cj4+ICvC oMKgwqDCoMKgwqDCoCBkZXZfd2FybihybS0+ZGV2LCAiTGltaXQgZXhjZWVkZWQgZm9yIHRoZSBu dW1iZXIgb2YgCj4+IGZyYWdtZW50czogJXVcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNvbnRfZnJhZ21lbnRzKTsKPiAKPiBZb3UgYXJlIHByaW50aW5nIHRoZSB2YWx1ZSBvZiBjb250 X2ZyYWdtZW50cyBoZXJlIHdoZW4gaXQncyBqdXN0IHplcm8uCj4gCj4+ICvCoMKgwqDCoMKgwqDC oCBkdW1wX3N0YWNrKCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUUyQklHOwo+PiArwqDC oMKgIH0KPj4gKwo+IAo+IE1vdmUgdGhlIGNvbXB1dGF0aW9uIG9mIGNvbnRfZnJhZ21lbnRzIHBy aW9yIHRvIHRoZSBibG9jayBhYm92ZS4KPiBZb3UgY291bGQgdXNlIGEgPzogc3RhdGVtZW50IHRv IGFzc2lnbiBpdC4KPiAKPj4gK8KgwqDCoCBpZiAocmVxX2J1Zl9zaXplKQo+PiArwqDCoMKgwqDC oMKgwqAgY29udF9mcmFnbWVudHMgPSAocmVxX2J1Zl9zaXplIC0gMSkgLyBHSF9STV9NQVhfTVNH X1NJWkU7Cj4+ICsKPj4gK8KgwqDCoCBoZHJfdGVtcGxhdGUuYXBpID0gUk1fUlBDX0FQSTsKPj4g K8KgwqDCoCBoZHJfdGVtcGxhdGUudHlwZSA9IEZJRUxEX1BSRVAoUk1fUlBDX1RZUEVfTUFTSywg Cj4+IFJNX1JQQ19UWVBFX1JFUVVFU1QpIHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRklF TERfUFJFUChSTV9SUENfRlJBR01FTlRTX01BU0ssIGNvbnRfZnJhZ21lbnRzKTsKPiAKPiBUaGUg bGluZSBhYm92ZSBzaG91bGQgYmUgaW5kZW50ZWQgZnVydGhlci4KPiAKPj4gK8KgwqDCoCBoZHJf dGVtcGxhdGUuc2VxID0gY3B1X3RvX2xlMTYoY29ubmVjdGlvbi0+cmVwbHkuc2VxKTsKPj4gK8Kg wqDCoCBoZHJfdGVtcGxhdGUubXNnX2lkID0gY3B1X3RvX2xlMzIobWVzc2FnZV9pZCk7Cj4+ICsK Pj4gK8KgwqDCoCByZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnJtLT5zZW5kX2xvY2sp Owo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiAr Cj4+ICvCoMKgwqAgLyogQ29uc2lkZXIgYWxzbyB0aGUgJ3JlcXVlc3QnIHBhY2tldCBmb3IgdGhl IGxvb3AgY291bnQgKi8KPiAKPiBJIGRvbid0IHRoaW5rIHRoZSBjb21tZW50IGFib3ZlIGlzIGhl bHBmdWwuCj4gCj4+ICvCoMKgwqAgZG8gewo+PiArwqDCoMKgwqDCoMKgwqAgbXNnID0ga21lbV9j YWNoZV96YWxsb2Mocm0tPmNhY2hlLCBHRlBfS0VSTkVMKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlm ICghbXNnKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiAr Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBGaWxsIGhlYWRlciAqLwo+PiArwqDCoMKgwqDCoMKgwqAg aGRyID0gKHN0cnVjdCBnaF9ybV9ycGNfaGRyICopbXNnLT5kYXRhOwo+IAo+IEkgcGVyc29uYWxs eSB3b3VsZCBwcmVmZXIgJm1zZy0+ZGF0YVswXSBpbiB0aGlzIGNhc2UuCj4gCj4+ICvCoMKgwqDC oMKgwqDCoCAqaGRyID0gaGRyX3RlbXBsYXRlOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBD b3B5IHBheWxvYWQgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHBheWxvYWQgPSBoZHIgKyAxOwo+IAo+ IEkgdGhpbmsgSSBtaWdodCBoYXZlIHN1Z2dlc3RlZCB1c2luZyAiaGRyICsgMSIgaGVyZS4KPiAK PiBFbHNld2hlcmUgeW91IHVzZSBzb21ldGhpbmcgbGlrZToKPiAgwqDCoMKgwqBwYXlsb2FkID0g KGNoYXIgKiloZHIgKyBzaXplb2YoaGRyKTsKPiBvciBzb21ldGhpbmcgc2ltaWxhci7CoCBJIHN1 Z2dlc3QgeW91IGNob29zZSBvbmUgYXBwcm9hY2ggYW5kIHVzZQo+IGl0IGNvbnNpc3RlbnRseSB0 aHJvdWdvdXQgdGhlIGRyaXZlci7CoCBFaXRoZXIgaXMgZmluZSwgYnV0IEkKPiBoYXZlIGEgc2xp Z2h0IHByZWZlcmVuY2UgZm9yIHRoZSAiaGRyICsgMSIgd2F5Lgo+IAoKSSB0aGluayB5b3UgbWln aHQgYmUgcmVmZXJlbmNpbmcgdGhlIG1lbWNweSBpbiAKZ2hfcm1faW5pdF9jb25uZWN0aW9uX3Bh eWxvYWQuIEluIHRoZSBnaF9ybV9pbml0X2Nvbm5lY3Rpb25fcGF5bG9hZCwgCmhkcl9zaXplIGlz IG5vdCBmaXhlZDogZm9yIG5vdGlmaWNhdGlvbnMsIGl0J3MganVzdCB0aGUgUlBDIGhlYWRlci4g Rm9yIApyZXNwb25zZXMsIHRoZXJlIGlzIHRoZSBSUEMgaGVhZGVyICsgdGhlICJSTSBlcnJvciBj b2RlIi4gVG8gYmUgYWJsZSB0byAKcmUtdXNlIHNhbWUgaGVhZGVyIHByb2Nlc3NpbmcsIEknZCBo YXZlIHRvIGRvIGJ5dGUgYXJpdGhtZXRpYyByYXRoZXIgCnRoYW4gdGhlICJoZHIgKyAxIiB3YXku IEkgYWxzbyBwcmVmZXIgdGhlICJoZHIgKyAxIiB3YXksIGJ1dCBpZiBJIGFtIApnb2luZyB0byBi ZSBjb25zaXN0ZW50LCBuZWVkIHRvIHN0aWNrIHdpdGggYnl0ZSBhcml0aG1ldGljLgoKPj4gK8Kg wqDCoMKgwqDCoMKgIHBheWxvYWRfc2l6ZSA9IG1pbihidWZfc2l6ZV9yZW1haW5pbmcsIEdIX1JN X01BWF9NU0dfU0laRSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBtZW1jcHkocGF5bG9hZCwgcmVxX2J1 Zl9jdXJyLCBwYXlsb2FkX3NpemUpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmVxX2J1Zl9jdXJyICs9 IHBheWxvYWRfc2l6ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJ1Zl9zaXplX3JlbWFpbmluZyAtPSBw YXlsb2FkX3NpemU7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIEZvcmNlIHRoZSBsYXN0IGZy YWdtZW50IHRvIGltbWVkaWF0ZWx5IGFsZXJ0IHRoZSByZWNlaXZlciAqLwo+PiArwqDCoMKgwqDC oMKgwqAgbXNnLT5wdXNoID0gIWJ1Zl9zaXplX3JlbWFpbmluZzsKPj4gK8KgwqDCoMKgwqDCoMKg IG1zZy0+bGVuZ3RoID0gc2l6ZW9mKCpoZHIpICsgcGF5bG9hZF9zaXplOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoCByZXQgPSBtYm94X3NlbmRfbWVzc2FnZShnaF9tc2dxX2NoYW4oJnJtLT5tc2dx KSwgbXNnKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGttZW1fY2FjaGVfZnJlZShybS0+Y2FjaGUsIG1zZyk7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoCBpZiAocm0tPmxhc3RfdHhfcmV0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldCA9IHJtLT5sYXN0X3R4X3JldDsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGhkcl90ZW1w bGF0ZS50eXBlID0gRklFTERfUFJFUChSTV9SUENfVFlQRV9NQVNLLCAKPj4gUk1fUlBDX1RZUEVf Q09OVElOVUFUSU9OKSB8Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBGSUVMRF9QUkVQKFJNX1JQQ19GUkFHTUVOVFNfTUFTSywgY29udF9mcmFnbWVudHMpOwo+PiAr wqDCoMKgIH0gd2hpbGUgKGJ1Zl9zaXplX3JlbWFpbmluZyk7Cj4+ICsKPj4gK291dDoKPj4gK8Kg wqDCoCBtdXRleF91bmxvY2soJnJtLT5zZW5kX2xvY2spOwo+PiArwqDCoMKgIHJldHVybiByZXQg PCAwID8gcmV0IDogMDsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBnaF9ybV9jYWxsOiBBY2hp ZXZlIHJlcXVlc3QtcmVzcG9uc2UgdHlwZSBjb21tdW5pY2F0aW9uIHdpdGggUlBDCj4+ICsgKiBA cm06IFBvaW50ZXIgdG8gR3VueWFoIHJlc291cmNlIG1hbmFnZXIgaW50ZXJuYWwgZGF0YQo+PiAr ICogQG1lc3NhZ2VfaWQ6IFRoZSBSTSBSUEMgbWVzc2FnZS1pZAo+PiArICogQHJlcV9idWZmOiBS ZXF1ZXN0IGJ1ZmZlciB0aGF0IGNvbnRhaW5zIHRoZSBwYXlsb2FkCj4+ICsgKiBAcmVxX2J1Zl9z aXplOiBUb3RhbCBzaXplIG9mIHRoZSBwYXlsb2FkCj4+ICsgKiBAcmVzcF9idWY6IFBvaW50ZXIg dG8gYSByZXNwb25zZSBidWZmZXIKPj4gKyAqIEByZXNwX2J1Zl9zaXplOiBTaXplIG9mIHRoZSBy ZXNwb25zZSBidWZmZXIKPj4gKyAqCj4+ICsgKiBNYWtlIGEgcmVxdWVzdCB0byB0aGUgUk0tVk0g YW5kIHdhaXQgZm9yIHJlcGx5IGJhY2suIEZvciBhIHN1Y2Nlc3NmdWwKPiAKPiBJIHRoaW5rIHlv dSBjb3VsZCBqdXN0IHNheSAidG8gdGhlIFJNIGFuZCB3YWl0Ii4uLgo+IAo+IE92ZXJhbGwgSSBz dWdnZXN0IHVzaW5nICJSTSIgb3IgIlJNIFZNIiBjb25zaXN0ZW50bHkgd2hlbiB5b3UgdGFsawo+ IGFib3V0IHRoZSBSZXNvdXJjZSBNYW5hZ2VyLsKgIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2UgSSBz ZWUgIlJNLVZNIi4KPiAKPj4gKyAqIHJlc3BvbnNlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUg cGF5bG9hZC4gVGhlIHNpemUgb2YgdGhlIAo+PiBwYXlsb2FkIGlzIHNldCBpbgo+PiArICogcmVz cF9idWZfc2l6ZS4gVGhlIHJlc3BfYnVmIHNob3VsZCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyIHdo ZW4gMCAKPj4gaXMgcmV0dXJuZWQKPiAKPiBzL3Nob3VsZC9tdXN0Lwo+IAo+PiArICogYW5kIHJl c3BfYnVmX3NpemUgIT0gMC4KPj4gKyAqCj4+ICsgKiByZXFfYnVmZiBzaG91bGQgYmUgbm90IE5V TEwgZm9yIHJlcV9idWZfc2l6ZSA+MC4gSWYgcmVxX2J1Zl9zaXplIAo+PiA9PSAwLAo+PiArICog cmVxX2J1ZmYgKmNhbiogYmUgTlVMTCBhbmQgbm8gYWRkaXRpb25hbCBwYXlsb2FkIGlzIHNlbnQu Cj4gCj4gSSdkIHNheSB1c2UgImJ1ZiIgb3IgImJ1ZmYiIGJ1dCBub3QgYm90aCBpbiB5b3VyIG5h bWluZwo+IGNvbnZlbnRpb24uCj4gCgpOb3QgaW50ZW50aW9uYWwgLS0gd2lsbCBtYWtlIGl0IGNv bnNpc3RlbnQuCgo+PiArICoKPj4gKyAqIENvbnRleHQ6IFByb2Nlc3MgY29udGV4dC4gV2lsbCBz bGVlcCB3YWl0aW5nIGZvciByZXBseS4KPj4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLiA8MCBp ZiBlcnJvci4KPj4gKyAqLwo+PiAraW50IGdoX3JtX2NhbGwoc3RydWN0IGdoX3JtICpybSwgdTMy IG1lc3NhZ2VfaWQsIHZvaWQgKnJlcV9idWZmLCAKPj4gc2l6ZV90IHJlcV9idWZfc2l6ZSwKPj4g K8KgwqDCoMKgwqDCoMKgIHZvaWQgKipyZXNwX2J1Ziwgc2l6ZV90ICpyZXNwX2J1Zl9zaXplKQo+ IAo+IEkgc3VzcGVjdCB5b3UgY291bGQgZGVmaW5lIHRoZSByZXF1ZXN0IGJ1ZmZlciBhcyBhIHBv aW50ZXIgdG8gY29uc3Q7Cj4gY2FuIHlvdT8KPiAKCkkgY2FuIQoKPj4gK3sKPj4gK8KgwqDCoCBz dHJ1Y3QgZ2hfcm1fY29ubmVjdGlvbiAqY29ubmVjdGlvbjsKPj4gK8KgwqDCoCB1MzIgc2VxX2lk Owo+PiArwqDCoMKgIGludCByZXQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiBtZXNzYWdlX2lkIDAgaXMg cmVzZXJ2ZWQuIHJlcV9idWZfc2l6ZSBpbXBsaWVzIHJlcV9idWYgaXMgbm90IAo+PiBOVUxMICov Cj4+ICvCoMKgwqAgaWYgKCFtZXNzYWdlX2lkIHx8ICghcmVxX2J1ZmYgJiYgcmVxX2J1Zl9zaXpl KSB8fCAhcm0pCj4gCj4gSWYgeW91J3JlIGdvaW5nIHRvIGNoZWNrIGZvciBhIG51bGwgUk0gcG9p bnRlciwgSSdkIGNoZWNrIGl0IGZpcnN0Lgo+IAo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F SU5WQUw7Cj4+ICsKPj4gKwo+PiArwqDCoMKgIGNvbm5lY3Rpb24gPSBremFsbG9jKHNpemVvZigq Y29ubmVjdGlvbiksIEdGUF9LRVJORUwpOwo+PiArwqDCoMKgIGlmICghY29ubmVjdGlvbikKPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiArCj4+ICvCoMKgwqAgY29ubmVjdGlv bi0+dHlwZSA9IFJNX1JQQ19UWVBFX1JFUExZOwo+PiArwqDCoMKgIGNvbm5lY3Rpb24tPm1zZ19p ZCA9IGNwdV90b19sZTMyKG1lc3NhZ2VfaWQpOwo+PiArCj4+ICvCoMKgwqAgaW5pdF9jb21wbGV0 aW9uKCZjb25uZWN0aW9uLT5yZXBseS5zZXFfZG9uZSk7Cj4gCj4gLiAuIC4KPiAKPj4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvZ3VueWFoX3JzY19tZ3IuaCAKPj4gYi9pbmNsdWRlL2xpbnV4 L2d1bnlhaF9yc2NfbWdyLmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAw MDAwMDAwLi5kZWNhOWIzZGE1NDEKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9pbmNsdWRlL2xp bnV4L2d1bnlhaF9yc2NfbWdyLmgKPj4gQEAgLTAsMCArMSwyMSBAQAo+PiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAo YykgMjAyMi0yMDIzIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCAKPj4gcmln aHRzIHJlc2VydmVkLgo+PiArICovCj4+ICsKPj4gKyNpZm5kZWYgX0dVTllBSF9SU0NfTUdSX0gK Pj4gKyNkZWZpbmUgX0dVTllBSF9SU0NfTUdSX0gKPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L2d1bnlhaC5oPgo+PiArCj4+ICsjZGVmaW5lIEdIX1ZNSURfSU5WQUzCoMKgwqAgVTE2X01BWAo+ IAo+IEFkZCBhIHRhYiBiZWZvcmUgVTE2X01BWDsgaXQgd2lsbCBsaW5lIHVwIG1vcmUgbmljZWx5 Cj4gd2hlbiB5b3UgZGVmaW5lIEdIX01FTV9IQU5ETEVfSU5WQUwgbGF0ZXIuCj4gCj4+ICsKPj4g K3N0cnVjdCBnaF9ybTsKPj4gK2ludCBnaF9ybV9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3QgZ2hf cm0gKnJtLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgCj4+ICpuYik7Cj4+ICtpbnQgZ2hfcm1fbm90 aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgZ2hfcm0gKnJtLCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg Cj4+ICpuYik7Cj4+ICtzdHJ1Y3QgZGV2aWNlICpnaF9ybV9nZXQoc3RydWN0IGdoX3JtICpybSk7 Cj4+ICt2b2lkIGdoX3JtX3B1dChzdHJ1Y3QgZ2hfcm0gKnJtKTsKPj4gKwo+PiArI2VuZGlmCj4g CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==