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 0425BEB64DC for ; Thu, 20 Jul 2023 14:25:51 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Po3VkFXOlSim3CkOHU3X7ZGd7Wo/uQc3hTfEWUkkQUY=; b=JgrPiUa9lPa4Dp bmg9nnF/xLvtSkesOh+hpjUQt69x6mY9rsxIg4piNR7sYes5/MT09tV/h59AYc2n993PEPhQmoedn ip9PJltiblrgj0Q0UZyT4CHP59xwXrYB9D7X/e4HZ1Le2CxQoWAwa8hTEO1NTyCWeitlKLr1sCxvd /vk7Hh9XUssqLSTkZQQW403BhY4EpG20JJzd1Sq8hEruhmmvURMxvuf1lAATpGx88PbLJPT55hMC7 d5qQVDCYU+LSb4neaY3k86J+TI2RjWCwRnEjnpGipUvVH1mdnLn5VATMh6cnbPSbMILi3+oO8PHP2 M6/TpMMhEqL3hCxvwncA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qMUav-00BNm2-3D; Thu, 20 Jul 2023 14:25:30 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qMUat-00BNlM-03 for linux-arm-kernel@lists.infradead.org; Thu, 20 Jul 2023 14:25:29 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 61DF361B05; Thu, 20 Jul 2023 14:25:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34046C433C7; Thu, 20 Jul 2023 14:25:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1689863125; bh=gc0SxsL57xUfme8TPK+aCC7Cs6WOfyxwkhIKcrGjX+k=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iDSlCf6GVsEEbCErF39qN+Fat80YPxUlVPc5Qzeilt3TG2HufpJhW9X741EQgGHUI rW1pPjWiC67ympDQ6xlkMDhtNzCcm9gMQD3qpx/5BIXntQfkX4uMhoAgB+kMw1VuT/ pjHT9JuqHDSq22HKZs+aFxOKayaVFFCc1yxBX1DoF3irx6fbevDqFIv2RgcX7A70wi Nx7NAy/gVzMoCYQqUi2n8tuqlR5LpzRhy7ZkU7zcc5O2Jv1JU6Sxu7CM34nzKnhQ6k zC1wTeS/VDuMV66FBW+jhPxHm8e08kFeG4cx+1vYg3J0fZEXtlxWBlCesfDgQnAp6x NKNuWpqBsdjxQ== Date: Thu, 20 Jul 2023 19:55:09 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: Manivannan Sadhasivam , helgaas@kernel.org, imx@lists.linux.dev, bhelgaas@google.com, devicetree@vger.kernel.org, gustavo.pimentel@synopsys.com, kw@linux.com, leoyang.li@nxp.com, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lorenzo.pieralisi@arm.com, minghuan.lian@nxp.com, mingkai.hu@nxp.com, robh+dt@kernel.org, roy.zang@nxp.com, shawnguo@kernel.org, zhiqiang.hou@nxp.com Subject: Re: [PATCH v3 1/2] PCI: dwc: Implement general suspend/resume functionality for L2/L3 transitions Message-ID: <20230720142509.GB48270@thinkpad> References: <20230419164118.596300-1-Frank.Li@nxp.com> <20230717164526.GC35455@thinkpad> <20230718100400.GB4771@thinkpad> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20230718100400.GB4771@thinkpad> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230720_072527_142634_A748ECA1 X-CRM114-Status: GOOD ( 49.44 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCBKdWwgMTgsIDIwMjMgYXQgMDM6MzQ6MjZQTSArMDUzMCwgTWFuaXZhbm5hbiBTYWRo YXNpdmFtIHdyb3RlOgo+IE9uIE1vbiwgSnVsIDE3LCAyMDIzIGF0IDAyOjM2OjE5UE0gLTA0MDAs IEZyYW5rIExpIHdyb3RlOgo+ID4gT24gTW9uLCBKdWwgMTcsIDIwMjMgYXQgMTA6MTU6MjZQTSAr MDUzMCwgTWFuaXZhbm5hbiBTYWRoYXNpdmFtIHdyb3RlOgo+ID4gPiBPbiBXZWQsIEFwciAxOSwg MjAyMyBhdCAxMjo0MToxN1BNIC0wNDAwLCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiBJbnRyb2R1 Y2VkIGhlbHBlciBmdW5jdGlvbiBkd19wY2llX2dldF9sdHNzbSB0byByZXRyaWV2ZSBTTUxIX0xU U1NfU1RBVEUuCj4gPiA+ID4gQWRkZWQgQVBJIHBtZV90dXJuX29mZiBhbmQgZXhpdF9mcm9tX2wy IGZvciBtYW5hZ2luZyBMMi9MMyBzdGF0ZSB0cmFuc2l0aW9ucy4KPiA+ID4gPiAKPiA+ID4gPiBU eXBpY2FsIEwyIGVudHJ5IHdvcmtmbG93Ogo+ID4gPiA+IAo+ID4gPiA+IDEuIFRyYW5zbWl0IFBN RSB0dXJuIG9mZiBzaWduYWwgdG8gUENJIGRldmljZXMuCj4gPiA+ID4gMi4gQXdhaXQgbGluayBl bnRlcmluZyBMMl9JRExFIHN0YXRlLgo+ID4gPiAKPiA+ID4gQUZBSUssIHR5cGljYWwgd29ya2Zs b3cgaXMgdG8gd2FpdCBmb3IgUE1FX1RvX0Fjay4KPiA+IAo+ID4gMSBBbHJlYWR5IHdhaXQgZm9y IFBNRV90b19BQ0ssICAyLCBqdXN0IHdhaXQgZm9yIGxpbmsgYWN0dWFsIGVudGVyIEwyLgo+ID4g SSB0aGluayBQQ0kgUkMgbmVlZHMgc29tZSB0aW1lIHRvIHNldCBsaW5rIGVudGVyIEwyIGFmdGVy IGdldCBBQ0sgZnJvbQo+ID4gUE1FLgo+ID4gCgpPbmUgbW9yZSBjb21tZW50LiBJZiB5b3UgdHJh bnNpdGlvbiB0aGUgZGV2aWNlIHRvIEwyL0wzLCB0aGVuIGl0IGNhbiBsb29zZSBwb3dlcgppZiBW YXV4IHdhcyBub3QgcHJvdmlkZWQuIEluIHRoYXQgY2FzZSwgY2FuIGFsbCB0aGUgZGV2aWNlcyB3 b3JrIGFmdGVyIHJlc3VtZT8KTW9zdCBub3RhYmx5IE5WTWU/CgotIE1hbmkKCj4gPiA+IAo+ID4g PiA+IDMuIFRyYW5zaXRpb24gUm9vdCBjb21wbGV4IHRvIEQzIHN0YXRlLgo+ID4gPiA+IAo+ID4g PiA+IFR5cGljYWwgTDIgZXhpdCB3b3JrZmxvdzoKPiA+ID4gPiAKPiA+ID4gPiAxLiBUcmFuc2l0 aW9uIFJvb3QgY29tcGxleCB0byBEMCBzdGF0ZS4KPiA+ID4gPiAyLiBJc3N1ZSBleGl0IGZyb20g TDIgY29tbWFuZC4KPiA+ID4gPiAzLiBSZWluaXRpYWxpemUgUENJIGhvc3QuCj4gPiA+ID4gNC4g V2FpdCBmb3IgbGluayB0byBiZWNvbWUgYWN0aXZlLgo+ID4gPiA+IAo+ID4gPiA+IFNpZ25lZC1v ZmYtYnk6IEZyYW5rIExpIDxGcmFuay5MaUBueHAuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+IENo YW5nZSBmcm9tIHYyIHRvIHYzOiAKPiA+ID4gPiAtIEJhc2ljIHJld3JpdGUgd2hvbGUgcGF0Y2gg YWNjb3JkaW5nIHJvYiBoZXJyeSBzdWdnZXN0aW9uLiAKPiA+ID4gPiAgIHB1dCBjb21tb24gZnVu Y3Rpb24gaW50byBkd2MsIHNvIG1vcmUgc29jIGNhbiBzaGFyZSB0aGUgc2FtZSBsb2dpYy4KPiA+ ID4gPiAgIAo+ID4gPiA+ICAuLi4vcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1o b3N0LmMgfCA4MCArKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gIGRyaXZlcnMvcGNpL2NvbnRy b2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oICB8IDI4ICsrKysrKysKPiA+ID4gPiAgMiBmaWxl cyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygrKQo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jIGIvZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYwo+ID4gPiA+IGlu ZGV4IDk5NTIwNTdjODgxOS4uZWY2ODY5NDg4YmRlIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmMKPiA+ID4gPiArKysg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtaG9zdC5jCj4gPiA+ ID4gQEAgLTgsNiArOCw3IEBACj4gPiA+ID4gICAqIEF1dGhvcjogSmluZ29vIEhhbiA8amcxLmhh bkBzYW1zdW5nLmNvbT4KPiA+ID4gPiAgICovCj4gPiA+ID4gIAo+ID4gPiA+ICsjaW5jbHVkZSA8 bGludXgvaW9wb2xsLmg+Cj4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9pcnFjaGlwL2NoYWluZWRf aXJxLmg+Cj4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4KPiA+ID4gPiAgI2lu Y2x1ZGUgPGxpbnV4L21zaS5oPgo+ID4gPiA+IEBAIC04MDcsMyArODA4LDgyIEBAIGludCBkd19w Y2llX3NldHVwX3JjKHN0cnVjdCBkd19wY2llX3JwICpwcCkKPiA+ID4gPiAgCXJldHVybiAwOwo+ ID4gPiA+ICB9Cj4gPiA+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKGR3X3BjaWVfc2V0dXBfcmMpOwo+ ID4gPiA+ICsKPiA+ID4gPiArLyoKPiA+ID4gPiArICogVGhlcmUgYXJlIGZvciBjb25maWd1cmlu ZyBob3N0IGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgYnJpZGdlcyAqdG8qIFBDSSBkZXZpY2VzCj4g PiA+ID4gKyAqIGJ1dCBhcmUgbm90IFBDSSBkZXZpY2VzIHRoZW1zZWx2ZXMuCj4gPiA+IAo+ID4g PiBOb25lIG9mIHRoZSBmdW5jdGlvbnMgYXBwbGljYWJsZSB0byB0aGUgZGV2aWNlcy4gU28gdGhl cmUgaXMgbm8gbmVlZCBmb3IgdGhpcwo+ID4gPiBjb21tZW50Lgo+ID4gCj4gPiBJIGNvcHkgY29t bWVudHMgaW4gZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmMuCj4g PiAKPiA+IC8qCj4gPiAgKiBUaGVzZSBpbnRlcmZhY2VzIHJlc2VtYmxlIHRoZSBwY2lfZmluZF8q Y2FwYWJpbGl0eSgpIGludGVyZmFjZXMsIGJ1dCB0aGVzZQo+ID4gICogYXJlIGZvciBjb25maWd1 cmluZyBob3N0IGNvbnRyb2xsZXJzLCB3aGljaCBhcmUgYnJpZGdlcyAqdG8qIFBDSSBkZXZpY2Vz IGJ1dAo+ID4gICogYXJlIG5vdCBQQ0kgZGV2aWNlcyB0aGVtc2VsdmVzLgo+ID4gICovCj4gPiBz dGF0aWMgdTggX19kd19wY2llX2ZpbmRfbmV4dF9jYXAoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTgg Y2FwX3B0ciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBjYXApCj4g PiAKPiA+IAo+ID4gSSB0aGluayBpdCBpcyByZWFzb25hbGJsZSBiZWNhdXNlIGl0IGlzIHRvbyBz aW1pbGFyIHdpdGggc3RhbmRhcmQgQVBJCj4gPiBwY2lfc2V0X3Bvd2VyX3N0YXRlKCk7Cj4gPiAK PiAKPiBPaywgdGhlbiBwbGVhc2UgYWRkIHRoaXMgQVBJIHNpbWlsYXJpdHkgaW4gdGhlIGNvbW1l bnQgYXMgbGlrZQo+IF9fZHdfcGNpZV9maW5kX25leHRfY2FwKCkuIEFsc28gY2hhbmdlICJUaGVy ZSIgdG8gIlRoZXNlIi4KPiAKPiA+ID4gCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICtzdGF0aWMgdm9p ZCBkd19wY2llX3NldF9kc3RhdGUoc3RydWN0IGR3X3BjaWUgKnBjaSwgdTMyIGRzdGF0ZSkKPiA+ ID4gCj4gPiA+IFBsZWFzZSB1c2UgcGNpX3Bvd2VyX3QgZGVmaW5lcyBmb3IgZHN0YXRlcy4KPiA+ IAo+ID4gQWx0aG91Z2ggZHdjIHVzZSB0aGUgc2FtZSBkZWZpbmUsIGl0IGlzIGRpZmZlcmVuY2Ug dGhpbmdzLiAKPiA+IAo+IAo+IFNvcnJ5LCB3aGF0IGRpZmZlcmVuY2U/IENvdWxkIHlvdSBwbGVh c2UgY2xhcmlmeT8KPiAKPiA+ID4gCj4gPiA+ID4gK3sKPiA+ID4gPiArCXU4IG9mZnNldCA9IGR3 X3BjaWVfZmluZF9jYXBhYmlsaXR5KHBjaSwgUENJX0NBUF9JRF9QTSk7Cj4gPiA+ID4gKwl1MzIg dmFsOwo+ID4gPiA+ICsKPiA+ID4gPiArCXZhbCA9IGR3X3BjaWVfcmVhZHdfZGJpKHBjaSwgb2Zm c2V0ICsgUENJX1BNX0NUUkwpOwo+ID4gPiAKPiA+ID4gUGxlYXNlIHVzZSBQQ0kgYWNjZXNzb3Jz IGZvciBhY2Nlc3Npbmcgc3BlYyBjb21wbGlhbnQgcmVnaXN0ZXJzLgo+ID4gCj4gPiBBY2NvcmRp bmcgdG8gY29tbWVudHMgaW4gcGNpZS1kZXNpZ253YXJlLmMsIGl0IGlzIGRpZmZlcmVuY2UgY29u Y2VwdAo+ID4gZXZlbiB0aG91Z2ggcmVnaXN0ZXIgZGVmaW5lIGlzIHRoZSBzYW1lIGFzIFBDSSBz cGVjLiBJdCB3YXMgdXNlZCB0bwo+ID4gY29udHJvbCByb290IGJyaWRnZXMuCj4gPiAKPiAKPiBB aCwgSSBnb3Qgc2xpZ2h0bHkgY29uZnVzZWQuIFRoaXMgaXMgZmluZS4KPiAKPiA+ID4gCj4gPiA+ ID4gKwl2YWwgJj0gflBDSV9QTV9DVFJMX1NUQVRFX01BU0s7Cj4gPiA+ID4gKwl2YWwgfD0gZHN0 YXRlOwo+ID4gPiA+ICsJZHdfcGNpZV93cml0ZXdfZGJpKHBjaSwgb2Zmc2V0ICsgUENJX1BNX0NU UkwsIHZhbCk7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK2ludCBkd19wY2llX3N1c3Bl bmRfbm9pcnEoc3RydWN0IGR3X3BjaWUgKnBjaSkKPiA+ID4gPiArewo+ID4gPiA+ICsJdTMyIHZh bDsKPiA+ID4gPiArCWludCByZXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKGR3X3BjaWVfZ2V0 X2x0c3NtKHBjaSkgPD0gRFdfUENJRV9MVFNTTV9ERVRFQ1RfQUNUKQo+ID4gPiA+ICsJCXJldHVy biAwOwo+ID4gPiA+ICsKPiA+ID4gPiArCXBjaS0+cHAub3BzLT5wbWVfdHVybl9vZmYoJnBjaS0+ cHApOwo+ID4gPiAKPiA+ID4gWW91IHNob3VsZCBmaXJzdCBjaGVjayBmb3IgdGhlIGV4aXN0ZW5j ZSBvZiB0aGUgY2FsbGJhY2sgYmVmb3JlIGludm9raW5nLiBUaGlzCj4gPiA+IGFwcGxpZXMgdG8g YWxsIGNhbGxiYWNrcyBpbiB0aGlzIHBhdGNoLgo+ID4gCj4gPiBZZXMsIEkgd2lsbCB1cGRhdGUu Cj4gPiAKPiA+ID4gCj4gPiA+ID4gKwo+ID4gPiA+ICsJLyoKPiA+ID4gPiArCSAqIFBDSSBFeHBy ZXNzIEJhc2UgU3BlY2lmaWNhdGlvbiBSZXYgNC4wCj4gPiA+ID4gKwkgKiA1LjMuMy4yLjEgUE1F IFN5bmNocm9uaXphdGlvbgo+ID4gPiA+ICsJICogUmVjb21tYW5kIDFtcyB0byAxMG1zIHRpbWVv dXQgdG8gY2hlY2sgTDIgcmVhZHkKPiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJcmV0ID0gcmVhZF9w b2xsX3RpbWVvdXQoZHdfcGNpZV9nZXRfbHRzc20sIHZhbCwgdmFsID09IERXX1BDSUVfTFRTU01f TDJfSURMRSwKPiA+ID4gPiArCQkJCTEwMCwgMTAwMDAsIGZhbHNlLCBwY2kpOwo+ID4gPiAKPiA+ ID4gSXMgdGhlcmUgbm8gd2F5IHRvIHdhaXQgZm9yIFBNRV9Ub19BY2sgVExQPwo+ID4gCj4gPiAK PiA+IFN1cHBvc2UgUE1FX3R1cm5fb2ZmIHNob3VsZCB3YWl0IGZvciBBQ0sgYmVmb3JlIHJldHVy bi4gCj4gCj4gT2suIEkgZGlkbid0IHNlZSB0aGlzIGJlaGF2aW9yIGluIHRoZSBzcGVjLCBoZW5j ZSBjdXJpb3VzLgo+IAo+ID4gSGVyZSwganVzdCBtYWtlIHN1cmUgTGluayBlbnRlciBMMiBzdGF0 dXMuIEhhcmR3YXJlIG5lZWQgc29tZSB0aW1lIHRvIHB1dAo+ID4gbGluayB0byBMMiBhZnRlciBn ZXQgQUNLIGZyb20gYnVzLCBldmVuIGl0IGlzIHZlcnkgc2hvcnQgZ2VuZXJhbGx5Lgo+ID4gCj4g Cj4gRmluZSB0aGVuLiBCdXQgY2FuIHdlIGNoZWNrIGZvciBQTV9MSU5LU1RfSU5fTDIgU0lJIFN5 c3RlbSBJbmZvcm1hdGlvbiBJbnRlcmZhY2UKPiAoU0lJKSBpbnN0ZWFkIG9mIExUU1NNIHN0YXRl Pwo+IAo+ID4gPiAKPiA+ID4gPiArCWlmIChyZXQpIHsKPiA+ID4gPiArCQlkZXZfZXJyKHBjaS0+ ZGV2LCAiUENJZSBsaW5rIGVudGVyIEwyIHRpbWVvdXQhIGx0c3NtID0gMHgleFxuIiwgdmFsKTsK PiA+ID4gPiArCQlyZXR1cm4gcmV0Owo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWR3 X3BjaWVfc2V0X2RzdGF0ZShwY2ksIDB4Myk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcGNpLT5zdXNw ZW5kZWQgPSB0cnVlOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ID4gK30K PiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwoZHdfcGNpZV9zdXNwZW5kX25vaXJxKTsKPiA+ID4g PiArCj4gPiA+ID4gK2ludCBkd19wY2llX3Jlc3VtZV9ub2lycShzdHJ1Y3QgZHdfcGNpZSAqcGNp KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICgh cGNpLT5zdXNwZW5kZWQpCj4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ cGNpLT5zdXNwZW5kZWQgPSBmYWxzZTsKPiA+ID4gPiArCj4gPiA+ID4gKwlkd19wY2llX3NldF9k c3RhdGUocGNpLCAweDApOwo+ID4gPiA+ICsKPiA+ID4gPiArCXBjaS0+cHAub3BzLT5leGl0X2Zy b21fbDIoJnBjaS0+cHApOwo+ID4gPiA+ICsKPiA+ID4gPiArCS8qIGRlbGF5IDEwIG1zIHRvIGFj Y2VzcyBFUCAqLwo+ID4gPiAKPiA+ID4gSXMgdGhpcyBkZWxheSBhcyBwYXJ0IG9mIHRoZSBEV0Mg c3BlYz8gSWYgc28sIHBsZWFzZSBxdW90ZSB0aGUgc2VjdGlvbi4KPiA+ID4gCj4gPiA+ID4gKwlt ZGVsYXkoMTApOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldCA9IHBjaS0+cHAub3BzLT5ob3N0X2lu aXQoJnBjaS0+cHApOwo+ID4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiA+ICsJCWRldl9lcnIocGNp LT5kZXYsICJsc19wY2llX2hvc3RfaW5pdCBmYWlsZWQhIHJldCA9IDB4JXhcbiIsIHJldCk7Cj4g PiA+IAo+ID4gPiBzL2xzX3BjaWVfaG9zdF9pbml0L0hvc3QgaW5pdAo+ID4gPiAKPiA+ID4gPiAr CQlyZXR1cm4gcmV0Owo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWR3X3BjaWVfc2V0 dXBfcmMoJnBjaS0+cHApOwo+ID4gPiA+ICsKPiA+ID4gCj4gPiA+IERvbid0IHlvdSBuZWVkIHRv IGNvbmZpZ3VyZSBpQVRVPwo+ID4gPiAKPiA+ID4gPiArCXJldCA9IGR3X3BjaWVfd2FpdF9mb3Jf bGluayhwY2kpOwo+ID4gPiAKPiA+ID4gRG9uJ3QgeW91IG5lZWQgdG8gc3RhcnQgdGhlIGxpbmsg YmVmb3JlaGFuZD8KPiA+IAo+ID4gU3VwcG9zZSBuZWVkIHN0YXJ0IGxpbmssIGl0IHdvcmtzIGF0 IGxheWVyc2NhcGUgcGxhdGZvcm0ganVzdCBiZWNhdXNlIGR3Ywo+ID4gaGF2ZSBub3QgZnVsbCBw b3dlciBvZmYuIHNvbWUgc3RhdGUgc3RpbGwga2VwdC4KPiA+IAo+IAo+IEl0IG1heSB3b3JrIGZv ciB5b3VyIHBsYXRmb3JtIGJ1dCBub3QgZm9yIGFsbCBpZiB0aGUgcG93ZXIgZ2V0cyByZW1vdmVk LiBTbwo+IHBsZWFzZSBzdGFydCB0aGUgbGluayBtYW51YWxseS4KPiAKPiAtIE1hbmkKPiAKPiA+ ID4gCj4gPiA+ID4gKwlpZiAocmV0KSB7Cj4gPiA+ID4gKwkJZGV2X2VycihwY2ktPmRldiwgIndh aXQgbGluayB1cCB0aW1lb3V0ISByZXQgPSAweCV4XG4iLCByZXQpOwo+ID4gPiAKPiA+ID4gZHdf cGNpZV93YWl0X2Zvcl9saW5rKCkgaXRzZWxmIHByaW50cyBlcnJvciBtZXNzYWdlIG9uIGZhaWx1 cmUuIFNvIG5vIG5lZWQgdG8gZG8KPiA+ID4gdGhlIHNhbWUgaGVyZS4KPiA+IAo+ID4gT2theQo+ ID4gCj4gPiA+IAo+ID4gPiAtIE1hbmkKPiA+ID4gCj4gPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ICt9Cj4gPiA+ ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGR3X3BjaWVfcmVzdW1lX25vaXJxKTsKPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmggYi9k cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUuaAo+ID4gPiA+IGluZGV4 IDc5NzEzY2UwNzVjYy4uZWZmYjA3YTUwNmU0IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oCj4gPiA+ID4gKysrIGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmgKPiA+ID4gPiBAQCAtMjg4LDEw ICsyODgsMjEgQEAgZW51bSBkd19wY2llX2NvcmVfcnN0IHsKPiA+ID4gPiAgCURXX1BDSUVfTlVN X0NPUkVfUlNUUwo+ID4gPiA+ICB9Owo+ID4gPiA+ICAKPiA+ID4gPiArZW51bSBkd19wY2llX2x0 c3NtIHsKPiA+ID4gPiArCURXX1BDSUVfTFRTU01fVU5LTk9XTiA9IDB4RkZGRkZGRkYsCj4gPiA+ ID4gKwkvKiBOZWVkIGFsaWduIFBDSUVfUE9SVF9ERUJVRzAgYml0MDo1ICovCj4gPiA+ID4gKwlE V19QQ0lFX0xUU1NNX0RFVEVDVF9RVUlFVCA9IDB4MCwKPiA+ID4gPiArCURXX1BDSUVfTFRTU01f REVURUNUX0FDVCA9IDB4MSwKPiA+ID4gPiArCURXX1BDSUVfTFRTU01fTDAgPSAweDExLAo+ID4g PiA+ICsJRFdfUENJRV9MVFNTTV9MMl9JRExFID0gMHgxNSwKPiA+ID4gPiArfTsKPiA+ID4gPiAr Cj4gPiA+ID4gIHN0cnVjdCBkd19wY2llX2hvc3Rfb3BzIHsKPiA+ID4gPiAgCWludCAoKmhvc3Rf aW5pdCkoc3RydWN0IGR3X3BjaWVfcnAgKnBwKTsKPiA+ID4gPiAgCXZvaWQgKCpob3N0X2RlaW5p dCkoc3RydWN0IGR3X3BjaWVfcnAgKnBwKTsKPiA+ID4gPiAgCWludCAoKm1zaV9ob3N0X2luaXQp KHN0cnVjdCBkd19wY2llX3JwICpwcCk7Cj4gPiA+ID4gKwl2b2lkICgqcG1lX3R1cm5fb2ZmKShz dHJ1Y3QgZHdfcGNpZV9ycCAqcHApOwo+ID4gPiA+ICsJdm9pZCAoKmV4aXRfZnJvbV9sMikoc3Ry dWN0IGR3X3BjaWVfcnAgKnBwKTsKPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4gIHN0cnVj dCBkd19wY2llX3JwIHsKPiA+ID4gPiBAQCAtMzY0LDYgKzM3NSw3IEBAIHN0cnVjdCBkd19wY2ll X29wcyB7Cj4gPiA+ID4gIAl2b2lkICAgICgqd3JpdGVfZGJpMikoc3RydWN0IGR3X3BjaWUgKnBj aWUsIHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHJlZywKPiA+ID4gPiAgCQkJICAgICAgc2l6ZV90 IHNpemUsIHUzMiB2YWwpOwo+ID4gPiA+ICAJaW50CSgqbGlua191cCkoc3RydWN0IGR3X3BjaWUg KnBjaWUpOwo+ID4gPiA+ICsJZW51bSBkd19wY2llX2x0c3NtICgqZ2V0X2x0c3NtKShzdHJ1Y3Qg ZHdfcGNpZSAqcGNpZSk7Cj4gPiA+ID4gIAlpbnQJKCpzdGFydF9saW5rKShzdHJ1Y3QgZHdfcGNp ZSAqcGNpZSk7Cj4gPiA+ID4gIAl2b2lkCSgqc3RvcF9saW5rKShzdHJ1Y3QgZHdfcGNpZSAqcGNp ZSk7Cj4gPiA+ID4gIH07Cj4gPiA+ID4gQEAgLTM5Myw2ICs0MDUsNyBAQCBzdHJ1Y3QgZHdfcGNp ZSB7Cj4gPiA+ID4gIAlzdHJ1Y3QgcmVzZXRfY29udHJvbF9idWxrX2RhdGEJYXBwX3JzdHNbRFdf UENJRV9OVU1fQVBQX1JTVFNdOwo+ID4gPiA+ICAJc3RydWN0IHJlc2V0X2NvbnRyb2xfYnVsa19k YXRhCWNvcmVfcnN0c1tEV19QQ0lFX05VTV9DT1JFX1JTVFNdOwo+ID4gPiA+ICAJc3RydWN0IGdw aW9fZGVzYwkJKnBlX3JzdDsKPiA+ID4gPiArCWJvb2wJCQlzdXNwZW5kZWQ7Cj4gPiA+ID4gIH07 Cj4gPiA+ID4gIAo+ID4gPiA+ICAjZGVmaW5lIHRvX2R3X3BjaWVfZnJvbV9wcChwb3J0KSBjb250 YWluZXJfb2YoKHBvcnQpLCBzdHJ1Y3QgZHdfcGNpZSwgcHApCj4gPiA+ID4gQEAgLTQzMCw2ICs0 NDMsOSBAQCB2b2lkIGR3X3BjaWVfaWF0dV9kZXRlY3Qoc3RydWN0IGR3X3BjaWUgKnBjaSk7Cj4g PiA+ID4gIGludCBkd19wY2llX2VkbWFfZGV0ZWN0KHN0cnVjdCBkd19wY2llICpwY2kpOwo+ID4g PiA+ICB2b2lkIGR3X3BjaWVfZWRtYV9yZW1vdmUoc3RydWN0IGR3X3BjaWUgKnBjaSk7Cj4gPiA+ ID4gIAo+ID4gPiA+ICtpbnQgZHdfcGNpZV9zdXNwZW5kX25vaXJxKHN0cnVjdCBkd19wY2llICpw Y2kpOwo+ID4gPiA+ICtpbnQgZHdfcGNpZV9yZXN1bWVfbm9pcnEoc3RydWN0IGR3X3BjaWUgKnBj aSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICBzdGF0aWMgaW5saW5lIHZvaWQgZHdfcGNpZV93cml0ZWxf ZGJpKHN0cnVjdCBkd19wY2llICpwY2ksIHUzMiByZWcsIHUzMiB2YWwpCj4gPiA+ID4gIHsKPiA+ ID4gPiAgCWR3X3BjaWVfd3JpdGVfZGJpKHBjaSwgcmVnLCAweDQsIHZhbCk7Cj4gPiA+ID4gQEAg LTUwMSw2ICs1MTcsMTggQEAgc3RhdGljIGlubGluZSB2b2lkIGR3X3BjaWVfc3RvcF9saW5rKHN0 cnVjdCBkd19wY2llICpwY2kpCj4gPiA+ID4gIAkJcGNpLT5vcHMtPnN0b3BfbGluayhwY2kpOwo+ ID4gPiA+ICB9Cj4gPiA+ID4gIAo+ID4gPiA+ICtzdGF0aWMgaW5saW5lIGVudW0gZHdfcGNpZV9s dHNzbSBkd19wY2llX2dldF9sdHNzbShzdHJ1Y3QgZHdfcGNpZSAqcGNpKQo+ID4gPiA+ICt7Cj4g PiA+ID4gKwl1MzIgdmFsOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChwY2ktPm9wcyAmJiBwY2kt Pm9wcy0+Z2V0X2x0c3NtKQo+ID4gPiA+ICsJCXJldHVybiBwY2ktPm9wcy0+Z2V0X2x0c3NtKHBj aSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCBQQ0lF X1BPUlRfREVCVUcwKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gKGVudW0gZHdfcGNpZV9s dHNzbSlGSUVMRF9HRVQoUE9SVF9MT0dJQ19MVFNTTV9TVEFURV9NQVNLLCB2YWwpOwo+ID4gPiA+ ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICAjaWZkZWYgQ09ORklHX1BDSUVfRFdfSE9TVAo+ID4gPiA+ ICBpcnFyZXR1cm5fdCBkd19oYW5kbGVfbXNpX2lycShzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApOwo+ ID4gPiA+ICBpbnQgZHdfcGNpZV9zZXR1cF9yYyhzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApOwo+ID4g PiA+IC0tIAo+ID4gPiA+IDIuMzQuMQo+ID4gPiA+IAo+ID4gPiAKPiA+ID4gLS0gCj4gPiA+IOCu ruCuo+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KPiAKPiAt LSAKPiDgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+N CgotLSAK4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCv jQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=