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 19CCDC001DB for ; Mon, 7 Aug 2023 13:36:13 +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=iiV0PA46Bn8FCrli7mmc0L+4PkjNzjBqt/7x8vh5/AU=; b=DPl81i8/mhejTz g3Dao+hh2dwZ0XALviqmw2kDmHTTzs6spH8PXVc/UDv6tSaC3nqLjfiFoaQjb9KVamZpEFMbfc69j 6jKYYS55kZiOfQFU7x2PGErZFmY+odDmFsFVUC83d4Wz0WW0bgGasmGVaBWnZa7fenmG6wQTM5Uli EtLZHH2GWc8YyQYQl8zsJbyg2zRE6YIY0XoD8WY5/PUM5SaVSiQukzOcyPEzHw/99rQopAEK32Ing bM4Eaxl0df8I7/g3J85h9JgMSx6FdA6lQU1m74+ZIspByhylLHcFy9KBGXcpsBJBd8ie6PjNLGEyk MqBpox19mDoqycxoFCtw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qT0Ol-00HPMt-30; Mon, 07 Aug 2023 13:35:51 +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 1qT0Oj-00HPMO-07 for linux-arm-kernel@lists.infradead.org; Mon, 07 Aug 2023 13:35:51 +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 59CA061985; Mon, 7 Aug 2023 13:35:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9428CC433C7; Mon, 7 Aug 2023 13:35:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691415347; bh=gJOtkQtXecuWCK12Nmw1Cjef3JhnXue4TG090jJoSqg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=G0PRBms6EYNMfwVzMVUT85wVaExvcHx+XMI+gUXLWXcm0YPLUb5Fnm9rLukXHzMDl 6APb7WyPqAS+WiIApmlSgZfaIkQ28OyB2P/d0J7LZDyBmVzTQweIDYb62nAhvlf2TY HAp7IPkJYRZ5cqtL6f69ftV6wlLRjrohU1n90CYfuuJ1mNDUH/OjJBWrqZui6+CyCP lwPlI8JOQkVi7VZhsnFLKlPyddz20Kn6+AGXt+CekGfQVe/OOgPjINBQptDsZ5E8fh YBWF2+JV5YJNvRUbSI0ElaALiKvorvRP7naVf9GpyAVaVaAgdWbqaH83vrkl4FY4cZ nOgMnWQpv3SpQ== Date: Mon, 7 Aug 2023 19:05:29 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: helgaas@kernel.org, bhelgaas@google.com, devicetree@vger.kernel.org, gustavo.pimentel@synopsys.com, imx@lists.linux.dev, 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, lpieralisi@kernel.org, manivannan.sadhasivam@linaro.org, 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 v9 2/3] PCI: dwc: Implement general suspend/resume functionality for L2/L3 transitions Message-ID: <20230807133529.GD18257@thinkpad> References: <20230804180637.462573-1-Frank.Li@nxp.com> <20230804180637.462573-3-Frank.Li@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20230804180637.462573-3-Frank.Li@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230807_063549_437038_7D88DA0F X-CRM114-Status: GOOD ( 24.88 ) 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 T24gRnJpLCBBdWcgMDQsIDIwMjMgYXQgMDI6MDY6MzZQTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gSW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbiBkd19wY2llX2dldF9sdHNzbSgpIHRvIHJldHJp ZXZlIFNNTEhfTFRTU19TVEFURS4KPiAKPiBBZGQgY2FsbGJhY2sgLnBtZV90dXJuX29mZiBhbmQg LmV4aXRfZnJvbV9sMiBmb3IgcGxhdGZvcm0gc3BlY2lmaWMgUE1FCj4gaGFuZGxpbmcuCj4gCj4g QWRkIGNvbW1vbiBkd19wY2llX3N1c3BlbmQocmVzdW1lKV9ub2lycSgpIEFQSSB0byBhdm9pZCBk dXBsaWNhdGVkIGNvZGUKPiBpbiBkd2MgcGNpIGhvc3QgY29udHJvbGxlciBwbGF0Zm9ybSBkcml2 ZXIuCj4gCj4gVHlwaWNhbCBMMiBlbnRyeSB3b3JrZmxvdy9kd19wY2llX3N1c3BlbmRfbm9pcnEo KQo+IAo+IDEuIFRyYW5zbWl0IFBNRSB0dXJuIG9mZiBzaWduYWwgdG8gUENJIGRldmljZXMgYW5k IHdhaXQgZm9yIFBNRV9Ub19BY2suCj4gMi4gQXdhaXQgbGluayBlbnRlcmluZyBMMl9JRExFIHN0 YXRlLgo+IAo+IFR5cGljYWwgTDIgZXhpdCB3b3JrZmxvdy9kd19wY2llX3Jlc3VtZV9ub2lycSgp Cj4gCj4gMS4gSXNzdWUgZXhpdCBmcm9tIEwyIGNvbW1hbmQuCj4gMi4gUmVpbml0aWFsaXplIFBD SSBob3N0Lgo+IDMuIFdhaXQgZm9yIGxpbmsgdG8gYmVjb21lIGFjdGl2ZS4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBGcmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KCk1pbm9yIG5pdHMgYmVsb3cuIFdp dGggdGhhdCwKCkFja2VkLWJ5OiBNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbmlAa2VybmVsLm9y Zz4KCi0gTWFuaQoKPiAtLS0KPiAgLi4uL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndh cmUtaG9zdC5jIHwgNzYgKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9wY2llLWRlc2lnbndhcmUuaCAgfCAyOCArKysrKysrCj4gIDIgZmlsZXMgY2hhbmdl ZCwgMTA0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWhvc3QuYyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv ZHdjL3BjaWUtZGVzaWdud2FyZS1ob3N0LmMKPiBpbmRleCA5OTUyMDU3Yzg4MTljLi43ZDg3ZWQ2 MWUyYmY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVz aWdud2FyZS1ob3N0LmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRl c2lnbndhcmUtaG9zdC5jCj4gQEAgLTgsNiArOCw3IEBACj4gICAqIEF1dGhvcjogSmluZ29vIEhh biA8amcxLmhhbkBzYW1zdW5nLmNvbT4KPiAgICovCj4gIAo+ICsjaW5jbHVkZSA8bGludXgvaW9w b2xsLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9pcnFjaGlwL2NoYWluZWRfaXJxLmg+Cj4gICNpbmNs dWRlIDxsaW51eC9pcnFkb21haW4uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21zaS5oPgo+IEBAIC0x Niw2ICsxNyw3IEBACj4gICNpbmNsdWRlIDxsaW51eC9wY2lfcmVncy5oPgo+ICAjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gIAo+ICsjaW5jbHVkZSAiLi4vLi4vcGNpLmgiCj4g ICNpbmNsdWRlICJwY2llLWRlc2lnbndhcmUuaCIKPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgcGNpX29w cyBkd19wY2llX29wczsKPiBAQCAtODA3LDMgKzgwOSw3NyBAQCBpbnQgZHdfcGNpZV9zZXR1cF9y YyhzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICBFWFBPUlRfU1lN Qk9MX0dQTChkd19wY2llX3NldHVwX3JjKTsKPiArCj4gK2ludCBkd19wY2llX3N1c3BlbmRfbm9p cnEoc3RydWN0IGR3X3BjaWUgKnBjaSkKPiArewo+ICsJdTggb2Zmc2V0ID0gZHdfcGNpZV9maW5k X2NhcGFiaWxpdHkocGNpLCBQQ0lfQ0FQX0lEX0VYUCk7Cj4gKwl1MzIgdmFsOwo+ICsJaW50IHJl dDsKPiArCj4gKwkvKgo+ICsJICogSWYgTDFTUyBpcyBzdXBwb3J0ZWQsIHRoZW4gZG8gbm90IHB1 dCB0aGUgbGluayBpbnRvIEwyIGFzIHNvbWUKPiArCSAqIGRldmljZXMgc3VjaCBhcyBOVk1lIGV4 cGVjdCBsb3cgcmVzdW1lIGxhdGVuY3kuCj4gKwkgKi8KPiArCWlmIChkd19wY2llX3JlYWR3X2Ri aShwY2ksIG9mZnNldCArIFBDSV9FWFBfTE5LQ1RMKSAmIFBDSV9FWFBfTE5LQ1RMX0FTUE1fTDEp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKGR3X3BjaWVfZ2V0X2x0c3NtKHBjaSkgPD0gRFdf UENJRV9MVFNTTV9ERVRFQ1RfQUNUKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmICghcGNpLT5w cC5vcHMtPnBtZV90dXJuX29mZikKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlwY2ktPnBwLm9wcy0+ cG1lX3R1cm5fb2ZmKCZwY2ktPnBwKTsKPiArCj4gKwlyZXQgPSByZWFkX3BvbGxfdGltZW91dChk d19wY2llX2dldF9sdHNzbSwgdmFsLCB2YWwgPT0gRFdfUENJRV9MVFNTTV9MMl9JRExFLAo+ICsJ CQkJUENJRV9QTUVfVE9fTDJfVElNRU9VVF9VUy8xMCwKPiArCQkJCVBDSUVfUE1FX1RPX0wyX1RJ TUVPVVRfVVMsIGZhbHNlLCBwY2kpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIocGNpLT5k ZXYsICJUaW1lb3V0IHdhaXRpbmcgZm9yIEwyIGVudHJ5ISBMVFNTTTogMHgleFxuIiwgdmFsKTsK PiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWlmIChwY2ktPnBwLm9wcy0+aG9zdF9kZWlu aXQpCj4gKwkJcGNpLT5wcC5vcHMtPmhvc3RfZGVpbml0KCZwY2ktPnBwKTsKPiArCj4gKwlwY2kt PnN1c3BlbmRlZCA9IHRydWU7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICtFWFBPUlRfU1lN Qk9MX0dQTChkd19wY2llX3N1c3BlbmRfbm9pcnEpOwo+ICsKPiAraW50IGR3X3BjaWVfcmVzdW1l X25vaXJxKHN0cnVjdCBkd19wY2llICpwY2kpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYg KCFwY2ktPnN1c3BlbmRlZCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlwY2ktPnN1c3BlbmRlZCA9 IGZhbHNlOwo+ICsKPiArCWlmICghcGNpLT5wcC5vcHMtPmV4aXRfZnJvbV9sMikKPiArCQlyZXR1 cm4gMDsKPiArCj4gKwlwY2ktPnBwLm9wcy0+ZXhpdF9mcm9tX2wyKCZwY2ktPnBwKTsKPiArCj4g KwlpZiAocGNpLT5wcC5vcHMtPmhvc3RfaW5pdCkgewo+ICsJCXJldCA9IHBjaS0+cHAub3BzLT5o b3N0X2luaXQoJnBjaS0+cHApOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2VycihwY2ktPmRl diwgIkhvc3QgaW5pdCBmYWlsZWQhIHJldCA9ICVkXG4iLCByZXQpOwoKUGxlYXNlIHJlbW92ZSAi cmV0ID0gIiBhbmQganVzdCBwcmludCwgIkhvc3QgaW5pdCBmYWlsZWQ6ICVkIgoKPiArCQkJcmV0 dXJuIHJldDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZHdfcGNpZV9zZXR1cF9yYygmcGNpLT5wcCk7 Cj4gKwo+ICsJcmV0ID0gZHdfcGNpZV9zdGFydF9saW5rKHBjaSk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gZHdfcGNpZV93YWl0X2Zvcl9saW5rKHBjaSk7Cj4g KwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICtF WFBPUlRfU1lNQk9MX0dQTChkd19wY2llX3Jlc3VtZV9ub2lycSk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS5oIGIvZHJpdmVycy9wY2kv Y29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLmgKPiBpbmRleCA3OTcxM2NlMDc1Y2MxLi5j YmJhM2VkMTliM2MwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aWUtZGVzaWdud2FyZS5oCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1k ZXNpZ253YXJlLmgKPiBAQCAtMjg4LDEwICsyODgsMjEgQEAgZW51bSBkd19wY2llX2NvcmVfcnN0 IHsKPiAgCURXX1BDSUVfTlVNX0NPUkVfUlNUUwo+ICB9Owo+ICAKPiArZW51bSBkd19wY2llX2x0 c3NtIHsKPiArCURXX1BDSUVfTFRTU01fVU5LTk9XTiA9IDB4RkZGRkZGRkYsCgpNb3ZlIHRoaXMg dG8gdGhlIGVuZCBhcyBVTktOT1dOIGRvZXNuJ3QgaGF2ZSB0aGUgdmFsdWUgb2YgMC4KCi0gTWFu aQoKPiArCS8qIE5lZWQgdG8gYWxpZ24gd2l0aCBQQ0lFX1BPUlRfREVCVUcwIGJpdHMgMDo1ICov Cj4gKwlEV19QQ0lFX0xUU1NNX0RFVEVDVF9RVUlFVCA9IDB4MCwKPiArCURXX1BDSUVfTFRTU01f REVURUNUX0FDVCA9IDB4MSwKPiArCURXX1BDSUVfTFRTU01fTDAgPSAweDExLAo+ICsJRFdfUENJ RV9MVFNTTV9MMl9JRExFID0gMHgxNSwKPiArfTsKPiArCj4gIHN0cnVjdCBkd19wY2llX2hvc3Rf b3BzIHsKPiAgCWludCAoKmhvc3RfaW5pdCkoc3RydWN0IGR3X3BjaWVfcnAgKnBwKTsKPiAgCXZv aWQgKCpob3N0X2RlaW5pdCkoc3RydWN0IGR3X3BjaWVfcnAgKnBwKTsKPiAgCWludCAoKm1zaV9o b3N0X2luaXQpKHN0cnVjdCBkd19wY2llX3JwICpwcCk7Cj4gKwl2b2lkICgqcG1lX3R1cm5fb2Zm KShzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApOwo+ICsJdm9pZCAoKmV4aXRfZnJvbV9sMikoc3RydWN0 IGR3X3BjaWVfcnAgKnBwKTsKPiAgfTsKPiAgCj4gIHN0cnVjdCBkd19wY2llX3JwIHsKPiBAQCAt MzY0LDYgKzM3NSw3IEBAIHN0cnVjdCBkd19wY2llX29wcyB7Cj4gIAl2b2lkICAgICgqd3JpdGVf ZGJpMikoc3RydWN0IGR3X3BjaWUgKnBjaWUsIHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHJlZywK PiAgCQkJICAgICAgc2l6ZV90IHNpemUsIHUzMiB2YWwpOwo+ICAJaW50CSgqbGlua191cCkoc3Ry dWN0IGR3X3BjaWUgKnBjaWUpOwo+ICsJZW51bSBkd19wY2llX2x0c3NtICgqZ2V0X2x0c3NtKShz dHJ1Y3QgZHdfcGNpZSAqcGNpZSk7Cj4gIAlpbnQJKCpzdGFydF9saW5rKShzdHJ1Y3QgZHdfcGNp ZSAqcGNpZSk7Cj4gIAl2b2lkCSgqc3RvcF9saW5rKShzdHJ1Y3QgZHdfcGNpZSAqcGNpZSk7Cj4g IH07Cj4gQEAgLTM5Myw2ICs0MDUsNyBAQCBzdHJ1Y3QgZHdfcGNpZSB7Cj4gIAlzdHJ1Y3QgcmVz ZXRfY29udHJvbF9idWxrX2RhdGEJYXBwX3JzdHNbRFdfUENJRV9OVU1fQVBQX1JTVFNdOwo+ICAJ c3RydWN0IHJlc2V0X2NvbnRyb2xfYnVsa19kYXRhCWNvcmVfcnN0c1tEV19QQ0lFX05VTV9DT1JF X1JTVFNdOwo+ICAJc3RydWN0IGdwaW9fZGVzYwkJKnBlX3JzdDsKPiArCWJvb2wJCQlzdXNwZW5k ZWQ7Cj4gIH07Cj4gIAo+ICAjZGVmaW5lIHRvX2R3X3BjaWVfZnJvbV9wcChwb3J0KSBjb250YWlu ZXJfb2YoKHBvcnQpLCBzdHJ1Y3QgZHdfcGNpZSwgcHApCj4gQEAgLTQzMCw2ICs0NDMsOSBAQCB2 b2lkIGR3X3BjaWVfaWF0dV9kZXRlY3Qoc3RydWN0IGR3X3BjaWUgKnBjaSk7Cj4gIGludCBkd19w Y2llX2VkbWFfZGV0ZWN0KHN0cnVjdCBkd19wY2llICpwY2kpOwo+ICB2b2lkIGR3X3BjaWVfZWRt YV9yZW1vdmUoc3RydWN0IGR3X3BjaWUgKnBjaSk7Cj4gIAo+ICtpbnQgZHdfcGNpZV9zdXNwZW5k X25vaXJxKHN0cnVjdCBkd19wY2llICpwY2kpOwo+ICtpbnQgZHdfcGNpZV9yZXN1bWVfbm9pcnEo c3RydWN0IGR3X3BjaWUgKnBjaSk7Cj4gKwo+ICBzdGF0aWMgaW5saW5lIHZvaWQgZHdfcGNpZV93 cml0ZWxfZGJpKHN0cnVjdCBkd19wY2llICpwY2ksIHUzMiByZWcsIHUzMiB2YWwpCj4gIHsKPiAg CWR3X3BjaWVfd3JpdGVfZGJpKHBjaSwgcmVnLCAweDQsIHZhbCk7Cj4gQEAgLTUwMSw2ICs1MTcs MTggQEAgc3RhdGljIGlubGluZSB2b2lkIGR3X3BjaWVfc3RvcF9saW5rKHN0cnVjdCBkd19wY2ll ICpwY2kpCj4gIAkJcGNpLT5vcHMtPnN0b3BfbGluayhwY2kpOwo+ICB9Cj4gIAo+ICtzdGF0aWMg aW5saW5lIGVudW0gZHdfcGNpZV9sdHNzbSBkd19wY2llX2dldF9sdHNzbShzdHJ1Y3QgZHdfcGNp ZSAqcGNpKQo+ICt7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCWlmIChwY2ktPm9wcyAmJiBwY2ktPm9w cy0+Z2V0X2x0c3NtKQo+ICsJCXJldHVybiBwY2ktPm9wcy0+Z2V0X2x0c3NtKHBjaSk7Cj4gKwo+ ICsJdmFsID0gZHdfcGNpZV9yZWFkbF9kYmkocGNpLCBQQ0lFX1BPUlRfREVCVUcwKTsKPiArCj4g KwlyZXR1cm4gKGVudW0gZHdfcGNpZV9sdHNzbSlGSUVMRF9HRVQoUE9SVF9MT0dJQ19MVFNTTV9T VEFURV9NQVNLLCB2YWwpOwo+ICt9Cj4gKwo+ICAjaWZkZWYgQ09ORklHX1BDSUVfRFdfSE9TVAo+ ICBpcnFyZXR1cm5fdCBkd19oYW5kbGVfbXNpX2lycShzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApOwo+ ICBpbnQgZHdfcGNpZV9zZXR1cF9yYyhzdHJ1Y3QgZHdfcGNpZV9ycCAqcHApOwo+IC0tIAo+IDIu MzQuMQo+IAoKLS0gCuCuruCuo+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/g rrXgrq7gr40KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK