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 85CEFC7EE29 for ; Fri, 9 Jun 2023 17:34:40 +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=NdJNQtSCrRA7SzVQzpLME2eeDTGEIhHBFNoGUHH4G54=; b=EaJ1G9Cmmmdkb+ SHdc9rzKy3LihpIrrbbI1jHF5ev7UZ9ekKVU3faA0c1Q9XgDGmMUQAQWwyG/nQTdVcJ+zcY1zatrV tdj8Fz4SrOVlK3HPowdizLY7L/ittCMZaXS6OxSXzn+YpFehsnuhPBv2zXJxAL6/IsbG7br6NgTEx GWvqM0thXIeqIC2RfdLJ21e4Uo+0mI851HF74W6rHKjgogy2CjZBPgV5xvrOPmqchue7u9MMvHzB9 eDsOl4Cl1LMhiFRaIhBz+2hbY6g93zWihveG1LeZQObLbOIB36aMeBXR8E6Bc7KQ8AnaoJ4zCDUv8 nsaAzUREylByqm85t/nw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q7fzy-00DjzP-2j; Fri, 09 Jun 2023 17:34:06 +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 1q7fzv-00Djyo-1D for linux-arm-kernel@lists.infradead.org; Fri, 09 Jun 2023 17:34:05 +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 359Dj1Td002667; Fri, 9 Jun 2023 17:33:27 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=y6PSJ/a4efM6fP1I3t21ItHgFrgYNVQ8HnAxTEOR8C0=; b=XhIa5+axDvH54JGeH6Mhj9+02iHlW09N6s2TA77PX35JSJP64Jbs1paOBOqvCsrXNzdm 9d++yp7XcQEib52JZPMBK9HOY5VWUzL44VKXn2K1rDAsdSmH6u5IpW1AmufWrU1kot/k k/IH/DV1g/bOfSXpjGb2CGgAmxtLIsds/xqdhLQfjOjM1HGHBmC2bQ6n9abD0adgMniu 5iWSrRc1TtpOiJpcKXxTh5bCBovLcyfBdnY4XMZUcmrPnmwvsrRCRDmJaVkV0o9TvRBp dE+DBcWO4Qn9tjpjpmYFk3rSIRPnUxWu9arKYe+c4iUdoIQtCP4ApYmwJYap3+MnVc3q pQ== Received: from nasanppmta01.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3r3nwet4h9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 09 Jun 2023 17:33:27 +0000 Received: from nasanex01b.na.qualcomm.com (nasanex01b.na.qualcomm.com [10.46.141.250]) by NASANPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 359HXQLk021351 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 9 Jun 2023 17:33:26 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; Fri, 9 Jun 2023 10:33:25 -0700 Message-ID: <2f60fc9f-a8b2-fe8c-183a-5ee9b276b02d@quicinc.com> Date: Fri, 9 Jun 2023 10:33:25 -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 v13 23/24] virt: gunyah: Add ioeventfd Content-Language: en-US To: Alex Elder , Srinivas Kandagatla , Prakruthi Deepak Heragu , Jonathan Corbet 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 , Bagas Sanjaya , Will Deacon , Andy Gross , Catalin Marinas , Jassi Brar , , , , , References: <20230509204801.2824351-1-quic_eberman@quicinc.com> <20230509204801.2824351-24-quic_eberman@quicinc.com> <85e7c3ae-0991-0ca9-909c-f38773f63894@linaro.org> From: Elliot Berman In-Reply-To: <85e7c3ae-0991-0ca9-909c-f38773f63894@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: ollpdWv-vbhs78Ds3TYrpqiVb4IgVe7L X-Proofpoint-ORIG-GUID: ollpdWv-vbhs78Ds3TYrpqiVb4IgVe7L X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.176.26 definitions=2023-06-09_12,2023-06-09_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 spamscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2306090145 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230609_103403_554959_59EF7AFC X-CRM114-Status: GOOD ( 32.37 ) 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 CgpPbiA2LzUvMjAyMyAxMjo1MCBQTSwgQWxleCBFbGRlciB3cm90ZToKPiBPbiA1LzkvMjMgMzo0 OCBQTSwgRWxsaW90IEJlcm1hbiB3cm90ZToKPj4gQWxsb3cgdXNlcnNwYWNlIHRvIGF0dGFjaCBh biBpb2V2ZW50ZmQgdG8gYW4gbW1pbyBhZGRyZXNzIHdpdGhpbiB0aGUgCj4+IGd1ZXN0Lgo+Pgo+ PiBDby1kZXZlbG9wZWQtYnk6IFByYWtydXRoaSBEZWVwYWsgSGVyYWd1IDxxdWljX3BoZXJhZ3VA cXVpY2luYy5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFByYWtydXRoaSBEZWVwYWsgSGVyYWd1IDxx dWljX3BoZXJhZ3VAcXVpY2luYy5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEVsbGlvdCBCZXJtYW4g PHF1aWNfZWJlcm1hbkBxdWljaW5jLmNvbT4KPiAKPiBMb29rcyBnb29kLsKgIE9uZSBxdWVzdGlv biBiZWxvdy4KPiAKPiBSZXZpZXdlZC1ieTogQWxleCBFbGRlciA8ZWxkZXJAbGluYXJvLm9yZz4K PiAKClRoYW5rcyEKCj4+IC0tLQo+PiDCoCBEb2N1bWVudGF0aW9uL3ZpcnQvZ3VueWFoL3ZtLW1h bmFnZXIucnN0IHzCoMKgIDIgKy0KPj4gwqAgZHJpdmVycy92aXJ0L2d1bnlhaC9LY29uZmlnwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgOSArKwo+PiDCoCBkcml2ZXJzL3ZpcnQvZ3Vu eWFoL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+PiDCoCBkcml2 ZXJzL3ZpcnQvZ3VueWFoL2d1bnlhaF9pb2V2ZW50ZmQuY8KgwqAgfCAxMzAgKysrKysrKysrKysr KysrKysrKysrKysKPj4gwqAgaW5jbHVkZS91YXBpL2xpbnV4L2d1bnlhaC5owqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDM3ICsrKysrKysKPj4gwqAgNSBmaWxlcyBjaGFuZ2VkLCAxNzgg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy92aXJ0L2d1bnlhaC9ndW55YWhfaW9ldmVudGZkLmMKPj4KPj4gZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vdmlydC9ndW55YWgvdm0tbWFuYWdlci5yc3QgCj4+IGIvRG9jdW1lbnRhdGlv bi92aXJ0L2d1bnlhaC92bS1tYW5hZ2VyLnJzdAo+PiBpbmRleCBjNDk2MDk0OGM3NzkuLjg3ODM4 YzViNTk0NSAxMDA2NDQKPj4gLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0L2d1bnlhaC92bS1tYW5h Z2VyLnJzdAo+PiArKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnQvZ3VueWFoL3ZtLW1hbmFnZXIucnN0 Cj4+IEBAIC0xMTUsNyArMTE1LDcgQEAgdGhlIFZNICpiZWZvcmUqIHRoZSBWTSBzdGFydHMuCj4+ IMKgIFRoZSBhcmd1bWVudCB0eXBlcyBhcmUgZG9jdW1lbnRlZCBiZWxvdzoKPj4gwqAgLi4ga2Vy bmVsLWRvYzo6IGluY2x1ZGUvdWFwaS9saW51eC9ndW55YWguaAo+PiAtwqDCoCA6aWRlbnRpZmll cnM6IGdoX2ZuX3ZjcHVfYXJnIGdoX2ZuX2lycWZkX2FyZyBnaF9pcnFmZF9mbGFncwo+PiArwqDC oCA6aWRlbnRpZmllcnM6IGdoX2ZuX3ZjcHVfYXJnIGdoX2ZuX2lycWZkX2FyZyBnaF9pcnFmZF9m bGFncyAKPj4gZ2hfZm5faW9ldmVudGZkX2FyZyBnaF9pb2V2ZW50ZmRfZmxhZ3MKPj4gwqAgR3Vu eWFoIFZDUFUgQVBJIERlc2NyaXB0aW9ucwo+PiDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpcnQvZ3VueWFoL0tjb25maWcgYi9kcml2ZXJz L3ZpcnQvZ3VueWFoL0tjb25maWcKPj4gaW5kZXggYmMyYzQ2ZDlkZjk0Li42M2JlYmM1YjlmODIg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdmlydC9ndW55YWgvS2NvbmZpZwo+PiArKysgYi9kcml2 ZXJzL3ZpcnQvZ3VueWFoL0tjb25maWcKPj4gQEAgLTQ4LDMgKzQ4LDEyIEBAIGNvbmZpZyBHVU5Z QUhfSVJRRkQKPj4gwqDCoMKgwqDCoMKgwqAgb24gR3VueWFoIHZpcnR1YWwgbWFjaGluZS4KPj4g wqDCoMKgwqDCoMKgwqAgU2F5IFkvTSBoZXJlIGlmIHVuc3VyZSBhbmQgeW91IHdhbnQgdG8gc3Vw cG9ydCBHdW55YWggVk1Ncy4KPj4gKwo+PiArY29uZmlnIEdVTllBSF9JT0VWRU5URkQKPj4gK8Kg wqDCoCB0cmlzdGF0ZSAiR3VueWFoIGlvZXZlbnRmZCBpbnRlcmZhY2UiCj4+ICvCoMKgwqAgZGVw ZW5kcyBvbiBHVU5ZQUgKPj4gK8KgwqDCoCBoZWxwCj4+ICvCoMKgwqDCoMKgIEVuYWJsZSBrZXJu ZWwgc3VwcG9ydCBmb3IgY3JlYXRpbmcgaW9ldmVudGZkcyB3aGljaCBjYW4gYWxlcnQgCj4+IHVz ZXJzcGFjZQo+PiArwqDCoMKgwqDCoCB3aGVuIGEgR3VueWFoIHZpcnR1YWwgbWFjaGluZSBhY2Nl c3NlcyBhIG1lbW9yeSBhZGRyZXNzLgo+PiArCj4+ICvCoMKgwqDCoMKgIFNheSBZL00gaGVyZSBp ZiB1bnN1cmUgYW5kIHlvdSB3YW50IHRvIHN1cHBvcnQgR3VueWFoIFZNTXMuCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpcnQvZ3VueWFoL01ha2VmaWxlIGIvZHJpdmVycy92aXJ0L2d1bnlhaC9N YWtlZmlsZQo+PiBpbmRleCBhZDIxMmExY2Y5NjcuLjYzY2ExMWU3NDc5NiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy92aXJ0L2d1bnlhaC9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL3ZpcnQvZ3Vu eWFoL01ha2VmaWxlCj4+IEBAIC04LDMgKzgsNCBAQCBvYmotJChDT05GSUdfR1VOWUFIKSArPSBn dW55YWgubwo+PiDCoCBvYmotJChDT05GSUdfR1VOWUFIX1ZDUFUpICs9IGd1bnlhaF92Y3B1Lm8K Pj4gwqAgb2JqLSQoQ09ORklHX0dVTllBSF9JUlFGRCkgKz0gZ3VueWFoX2lycWZkLm8KPj4gK29i ai0kKENPTkZJR19HVU5ZQUhfSU9FVkVOVEZEKSArPSBndW55YWhfaW9ldmVudGZkLm8KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmlydC9ndW55YWgvZ3VueWFoX2lvZXZlbnRmZC5jIAo+PiBiL2Ry aXZlcnMvdmlydC9ndW55YWgvZ3VueWFoX2lvZXZlbnRmZC5jCj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNWIxYjlmZDlhYzNhCj4+IC0tLSAvZGV2L251bGwK Pj4gKysrIGIvZHJpdmVycy92aXJ0L2d1bnlhaC9ndW55YWhfaW9ldmVudGZkLmMKPj4gQEAgLTAs MCArMSwxMzAgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkK Pj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjItMjAyMyBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBBbGwgCj4+IHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqLwo+PiArCj4+ICsj aW5jbHVkZSA8bGludXgvZXZlbnRmZC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KPj4g KyNpbmNsdWRlIDxsaW51eC9mcy5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2d1bnlhaC5oPgo+PiAr I2luY2x1ZGUgPGxpbnV4L2d1bnlhaF92bV9tZ3IuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KPj4gKwo+PiArI2luY2x1ZGUgPHVh cGkvbGludXgvZ3VueWFoLmg+Cj4+ICsKPj4gK3N0cnVjdCBnaF9pb2V2ZW50ZmQgewo+PiArwqDC oMKgIHN0cnVjdCBnaF92bV9mdW5jdGlvbl9pbnN0YW5jZSAqZjsKPj4gK8KgwqDCoCBzdHJ1Y3Qg Z2hfdm1faW9faGFuZGxlciBpb19oYW5kbGVyOwo+PiArCj4+ICvCoMKgwqAgc3RydWN0IGV2ZW50 ZmRfY3R4ICpjdHg7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IGdoX3dyaXRlX2lvZXZlbnRm ZChzdHJ1Y3QgZ2hfdm1faW9faGFuZGxlciAqaW9fZGV2LCB1NjQgCj4+IGFkZHIsIHUzMiBsZW4s IHU2NCBkYXRhKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBnaF9pb2V2ZW50ZmQgKmlvZmQgPSBj b250YWluZXJfb2YoaW9fZGV2LCBzdHJ1Y3QgCj4+IGdoX2lvZXZlbnRmZCwgaW9faGFuZGxlcik7 Cj4gCj4gRG9lcyBhIHdyaXRlIG9mIDAgYnl0ZXMgc3RpbGwgc2lnbmFsIGFuIGV2ZW50Pwo+IAoK IEZyb20gZ3VueWFoX2lvZXZlbnRmZCBwZXJzcGVjdGl2ZSwgeWVzLiBJIGRvbid0IHRoaW5rIGEg d3JpdGUgb2YgMCAKYnl0ZXMgaXMgcG9zc2libGUsIGJ1dCBtYXliZSB5b3UgYXJlIHRoaW5raW5n IG9mIHNjZW5hcmlvIEknbSBub3Q/Cgo+PiArCj4+ICvCoMKgwqAgZXZlbnRmZF9zaWduYWwoaW9m ZC0+Y3R4LCAxKTsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0 cnVjdCBnaF92bV9pb19oYW5kbGVyX29wcyBpb19vcHMgPSB7Cj4+ICvCoMKgwqAgLndyaXRlID0g Z2hfd3JpdGVfaW9ldmVudGZkLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGxvbmcgZ2hfaW9ldmVu dGZkX2JpbmQoc3RydWN0IGdoX3ZtX2Z1bmN0aW9uX2luc3RhbmNlICpmKQo+PiArewo+PiArwqDC oMKgIGNvbnN0IHN0cnVjdCBnaF9mbl9pb2V2ZW50ZmRfYXJnICphcmdzID0gZi0+YXJncDsKPj4g K8KgwqDCoCBzdHJ1Y3QgZ2hfaW9ldmVudGZkICppb2ZkOwo+PiArwqDCoMKgIHN0cnVjdCBldmVu dGZkX2N0eCAqY3R4Owo+PiArwqDCoMKgIGludCByZXQ7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoZi0+ YXJnX3NpemUgIT0gc2l6ZW9mKCphcmdzKSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlO VkFMOwo+PiArCj4+ICvCoMKgwqAgLyogQWxsIG90aGVyIGZsYWcgYml0cyBhcmUgcmVzZXJ2ZWQg Zm9yIGZ1dHVyZSB1c2UgKi8KPj4gK8KgwqDCoCBpZiAoYXJncy0+ZmxhZ3MgJiB+R0hfSU9FVkVO VEZEX0ZMQUdTX0RBVEFNQVRDSCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+ PiArCj4+ICvCoMKgwqAgLyogbXVzdCBiZSBuYXR1cmFsLXdvcmQgc2l6ZWQsIG9yIDAgdG8gaWdu b3JlIGxlbmd0aCAqLwo+PiArwqDCoMKgIHN3aXRjaCAoYXJncy0+bGVuKSB7Cj4+ICvCoMKgwqAg Y2FzZSAwOgo+PiArwqDCoMKgIGNhc2UgMToKPj4gK8KgwqDCoCBjYXNlIDI6Cj4+ICvCoMKgwqAg Y2FzZSA0Ogo+PiArwqDCoMKgIGNhc2UgODoKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiAr wqDCoMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gK8Kg wqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCAvKiBjaGVjayBmb3IgcmFuZ2Ugb3ZlcmZsb3cgKi8KPj4g K8KgwqDCoCBpZiAob3ZlcmZsb3dzX3R5cGUoYXJncy0+YWRkciArIGFyZ3MtPmxlbiwgdTY0KSkK Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgLyogaW9l dmVudGZkIHdpdGggbm8gbGVuZ3RoIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggREFUQU1BVENIICov Cj4+ICvCoMKgwqAgaWYgKCFhcmdzLT5sZW4gJiYgKGFyZ3MtPmZsYWdzICYgR0hfSU9FVkVOVEZE X0ZMQUdTX0RBVEFNQVRDSCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4g Kwo+PiArwqDCoMKgIGN0eCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGFyZ3MtPmZkKTsKPj4gK8KgwqDC oCBpZiAoSVNfRVJSKGN0eCkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUihjdHgp Owo+PiArCj4+ICvCoMKgwqAgaW9mZCA9IGt6YWxsb2Moc2l6ZW9mKCppb2ZkKSwgR0ZQX0tFUk5F TCk7Cj4+ICvCoMKgwqAgaWYgKCFpb2ZkKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5P TUVNOwo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZXZlbnRmZDsKPj4gK8KgwqDCoCB9Cj4+ ICsKPj4gK8KgwqDCoCBmLT5kYXRhID0gaW9mZDsKPj4gK8KgwqDCoCBpb2ZkLT5mID0gZjsKPj4g Kwo+PiArwqDCoMKgIGlvZmQtPmN0eCA9IGN0eDsKPj4gKwo+PiArwqDCoMKgIGlmIChhcmdzLT5m bGFncyAmIEdIX0lPRVZFTlRGRF9GTEFHU19EQVRBTUFUQ0gpIHsKPj4gK8KgwqDCoMKgwqDCoMKg IGlvZmQtPmlvX2hhbmRsZXIuZGF0YW1hdGNoID0gdHJ1ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIGlv ZmQtPmlvX2hhbmRsZXIubGVuID0gYXJncy0+bGVuOwo+PiArwqDCoMKgwqDCoMKgwqAgaW9mZC0+ aW9faGFuZGxlci5kYXRhID0gYXJncy0+ZGF0YW1hdGNoOwo+PiArwqDCoMKgIH0KPj4gK8KgwqDC oCBpb2ZkLT5pb19oYW5kbGVyLmFkZHIgPSBhcmdzLT5hZGRyOwo+PiArwqDCoMKgIGlvZmQtPmlv X2hhbmRsZXIub3BzID0gJmlvX29wczsKPj4gKwo+PiArwqDCoMKgIHJldCA9IGdoX3ZtX2FkZF9p b19oYW5kbGVyKGYtPmdodm0sICZpb2ZkLT5pb19oYW5kbGVyKTsKPj4gK8KgwqDCoCBpZiAocmV0 KQo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfaW9fZGV2X2FkZDsKPj4gKwo+PiArwqDCoMKg IHJldHVybiAwOwo+PiArCj4+ICtlcnJfaW9fZGV2X2FkZDoKPj4gK8KgwqDCoCBrZnJlZShpb2Zk KTsKPj4gK2Vycl9ldmVudGZkOgo+PiArwqDCoMKgIGV2ZW50ZmRfY3R4X3B1dChjdHgpOwo+PiAr wqDCoMKgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGdoX2lvZXZlbnRf dW5iaW5kKHN0cnVjdCBnaF92bV9mdW5jdGlvbl9pbnN0YW5jZSAqZikKPj4gK3sKPj4gK8KgwqDC oCBzdHJ1Y3QgZ2hfaW9ldmVudGZkICppb2ZkID0gZi0+ZGF0YTsKPj4gKwo+PiArwqDCoMKgIGV2 ZW50ZmRfY3R4X3B1dChpb2ZkLT5jdHgpOwo+PiArwqDCoMKgIGdoX3ZtX3JlbW92ZV9pb19oYW5k bGVyKGlvZmQtPmYtPmdodm0sICZpb2ZkLT5pb19oYW5kbGVyKTsKPj4gK8KgwqDCoCBrZnJlZShp b2ZkKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wgZ2hfaW9ldmVudF9jb21wYXJlKGNvbnN0 IHN0cnVjdCBnaF92bV9mdW5jdGlvbl9pbnN0YW5jZSAqZiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjb25zdCB2b2lkICphcmcsIHNpemVfdCBzaXplKQo+PiArewo+PiArwqDC oMKgIGNvbnN0IHN0cnVjdCBnaF9mbl9pb2V2ZW50ZmRfYXJnICppbnN0YW5jZSA9IGYtPmFyZ3As Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpvdGhlciA9IGFy ZzsKPj4gKwo+PiArwqDCoMKgIGlmIChzaXplb2YoKm90aGVyKSAhPSBzaXplKQo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIGluc3RhbmNlLT5h ZGRyID09IG90aGVyLT5hZGRyOwo+PiArfQo+PiArCj4+ICtERUNMQVJFX0dIX1ZNX0ZVTkNUSU9O X0lOSVQoaW9ldmVudGZkLCBHSF9GTl9JT0VWRU5URkQsIDMsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ2hfaW9ldmVudGZkX2JpbmQsIGdoX2lvZXZlbnRfdW5iaW5kLAo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdoX2lvZXZlbnRfY29tcGFyZSk7Cj4+ICtN T0RVTEVfREVTQ1JJUFRJT04oIkd1bnlhaCBpb2V2ZW50ZmQgVk0gRnVuY3Rpb24iKTsKPj4gK01P RFVMRV9MSUNFTlNFKCJHUEwiKTsKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9n dW55YWguaCBiL2luY2x1ZGUvdWFwaS9saW51eC9ndW55YWguaAo+PiBpbmRleCAwYzQ4MGM2MjI2 ODYuLmZhMWNhZTc0MTlkMiAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2d1bnlh aC5oCj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9ndW55YWguaAo+PiBAQCAtNzksMTAgKzc5 LDEzIEBAIHN0cnVjdCBnaF92bV9kdGJfY29uZmlnIHsKPj4gwqDCoCAqwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgUmV0dXJuOiBmaWxlIGRlc2NyaXB0b3IgdG8gbWFuaXB1bGF0ZSB0aGUgdmNw dS4KPj4gwqDCoCAqIEBHSF9GTl9JUlFGRDogcmVnaXN0ZXIgZXZlbnRmZCB0byBhc3NlcnQgYSBH dW55YWggZG9vcmJlbGwKPj4gwqDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3Ry dWN0IGdoX2ZuX2Rlc2MuYXJnIGlzIGEgcG9pbnRlciB0byAmc3RydWN0IAo+PiBnaF9mbl9pcnFm ZF9hcmcKPj4gKyAqIEBHSF9GTl9JT0VWRU5URkQ6IHJlZ2lzdGVyIGlvZXZlbnRmZCB0byB0cmln Z2VyIHdoZW4gVk0gZmF1bHRzIG9uIAo+PiBwYXJhbWV0ZXIKPj4gKyAqwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzdHJ1Y3QgZ2hfZm5fZGVzYy5hcmcgaXMgYSBwb2ludGVy IHRvICZzdHJ1Y3QgCj4+IGdoX2ZuX2lvZXZlbnRmZF9hcmcKPj4gwqDCoCAqLwo+PiDCoCBlbnVt IGdoX2ZuX3R5cGUgewo+PiDCoMKgwqDCoMKgIEdIX0ZOX1ZDUFUgPSAxLAo+PiDCoMKgwqDCoMKg IEdIX0ZOX0lSUUZELAo+PiArwqDCoMKgIEdIX0ZOX0lPRVZFTlRGRCwKPj4gwqAgfTsKPj4gwqAg I2RlZmluZSBHSF9GTl9NQVhfQVJHX1NJWkXCoMKgwqDCoMKgwqDCoCAyNTYKPj4gQEAgLTEzNCw2 ICsxMzcsNDAgQEAgc3RydWN0IGdoX2ZuX2lycWZkX2FyZyB7Cj4+IMKgwqDCoMKgwqAgX191MzIg cGFkZGluZzsKPj4gwqAgfTsKPj4gKy8qKgo+PiArICogZW51bSBnaF9pb2V2ZW50ZmRfZmxhZ3Mg LSBmbGFncyBmb3IgdXNlIGluIGdoX2ZuX2lvZXZlbnRmZF9hcmcKPj4gKyAqIEBHSF9JT0VWRU5U RkRfRkxBR1NfREFUQU1BVENIOiB0aGUgZXZlbnQgd2lsbCBiZSBzaWduYWxlZCBvbmx5IGlmIHRo ZQo+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB3cml0dGVuIHZhbHVlIHRvIHRoZSByZWdpc3RlcmVkIAo+PiBhZGRyZXNz IGlzCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGVxdWFsIHRvICZzdHJ1Y3QgCj4+IGdoX2ZuX2lvZXZlbnRmZF9hcmcu ZGF0YW1hdGNoCj4+ICsgKi8KPj4gK2VudW0gZ2hfaW9ldmVudGZkX2ZsYWdzIHsKPj4gK8KgwqDC oCBHSF9JT0VWRU5URkRfRkxBR1NfREFUQU1BVENIwqDCoMKgID0gMVVMIDw8IDAsCj4+ICt9Owo+ PiArCj4+ICsvKioKPj4gKyAqIHN0cnVjdCBnaF9mbl9pb2V2ZW50ZmRfYXJnIC0gQXJndW1lbnRz IHRvIGNyZWF0ZSBhbiBpb2V2ZW50ZmQgCj4+IGZ1bmN0aW9uCj4+ICsgKiBAZGF0YW1hdGNoOiBk YXRhIHVzZWQgd2hlbiBHSF9JT0VWRU5URkRfREFUQU1BVENIIGlzIHNldAo+PiArICogQGFkZHI6 IEFkZHJlc3MgaW4gZ3Vlc3QgbWVtb3J5Cj4+ICsgKiBAbGVuOiBMZW5ndGggb2YgYWNjZXNzCj4+ ICsgKiBAZmQ6IFdoZW4gaW9ldmVudGZkIGlzIG1hdGNoZWQsIHRoaXMgZXZlbnRmZCBpcyB3cml0 dGVuCj4+ICsgKiBAZmxhZ3M6IFNlZSAmZW51bSBnaF9pb2V2ZW50ZmRfZmxhZ3MKPj4gKyAqIEBw YWRkaW5nOiBwYWRkaW5nIGJ5dGVzCj4+ICsgKgo+PiArICogQ3JlYXRlIHRoaXMgZnVuY3Rpb24g d2l0aCAmR0hfVk1fQUREX0ZVTkNUSU9OIHVzaW5nIHR5cGUgCj4+ICZHSF9GTl9JT0VWRU5URkQu Cj4+ICsgKgo+PiArICogQXR0YWNoZXMgYW4gaW9ldmVudGZkIHRvIGEgbGVnYWwgbW1pbyBhZGRy ZXNzIHdpdGhpbiB0aGUgZ3Vlc3QuIEEgCj4+IGd1ZXN0IHdyaXRlCj4+ICsgKiBpbiB0aGUgcmVn aXN0ZXJlZCBhZGRyZXNzIHdpbGwgc2lnbmFsIHRoZSBwcm92aWRlZCBldmVudCBpbnN0ZWFkIAo+ PiBvZiB0cmlnZ2VyaW5nCj4+ICsgKiBhbiBleGl0IG9uIHRoZSBHSF9WQ1BVX1JVTiBpb2N0bC4K Pj4gKyAqLwo+PiArc3RydWN0IGdoX2ZuX2lvZXZlbnRmZF9hcmcgewo+PiArwqDCoMKgIF9fdTY0 IGRhdGFtYXRjaDsKPj4gK8KgwqDCoCBfX3U2NCBhZGRyO8KgwqDCoMKgwqDCoMKgIC8qIGxlZ2Fs IG1taW8gYWRkcmVzcyAqLwo+PiArwqDCoMKgIF9fdTMyIGxlbjvCoMKgwqDCoMKgwqDCoMKgIC8q IDEsIDIsIDQsIG9yIDggYnl0ZXM7IG9yIDAgdG8gaWdub3JlIGxlbmd0aCAqLwo+PiArwqDCoMKg IF9fczMyIGZkOwo+PiArwqDCoMKgIF9fdTMyIGZsYWdzOwo+PiArwqDCoMKgIF9fdTMyIHBhZGRp bmc7Cj4+ICt9Owo+PiArCj4+IMKgIC8qKgo+PiDCoMKgICogc3RydWN0IGdoX2ZuX2Rlc2MgLSBB cmd1bWVudHMgdG8gY3JlYXRlIGEgVk0gZnVuY3Rpb24KPj4gwqDCoCAqIEB0eXBlOiBUeXBlIG9m IHRoZSBmdW5jdGlvbi4gU2VlICZlbnVtIGdoX2ZuX3R5cGUuCj4gCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==