From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from azure-sdnproxy.icoremail.net (l-sdnproxy.icoremail.net [20.188.111.126]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BAA5B3277AF; Wed, 26 Nov 2025 12:23:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=20.188.111.126 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764159827; cv=none; b=pUZr94lRHx8vkUoI3juZWZf3kGX9CZLdat9DY0+0tRSka0KD88pUXH2rmmfP9HW4KspvORi4j5Oq9h/eKY6LKkthcGVWwBZY3gCssz3tlK11QsnRy98QEhQdJu+PFX+ua/dStgIcRcar4u7FeNEXwxzJfXOVj3fFjVTr3MAVOJU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764159827; c=relaxed/simple; bh=4IVzDH3vDYwxKn5QacTZd+f1dke2NWIDEzhYAQ00CuI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Content-Type: MIME-Version:Message-ID; b=dKX9xMng8E36R7yia+u7wH3eYwYgcZHl3rzlL6nJWVa06u/GKmtk1hUPQaBbyYOixQcshLmZLKJOq4KOUNON3T8ANzdbShjd8n4+JT5ye1rmF+MYarJ6FHkeY9oFIIfIDbBWOaS60rD0EgQnYTHqybD+xC4VOoKIuDouEOtxU2M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com; spf=pass smtp.mailfrom=eswincomputing.com; arc=none smtp.client-ip=20.188.111.126 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=eswincomputing.com Received: from zhangsenchuan$eswincomputing.com ( [10.12.96.83] ) by ajax-webmail-app2 (Coremail) ; Wed, 26 Nov 2025 20:23:08 +0800 (GMT+08:00) Date: Wed, 26 Nov 2025 20:23:08 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: zhangsenchuan To: "Shawn Lin" Cc: bhelgaas@google.com, mani@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, p.zabel@pengutronix.de, jingoohan1@gmail.com, gustavo.pimentel@synopsys.com, linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, christian.bruel@foss.st.com, mayank.rana@oss.qualcomm.com, shradha.t@samsung.com, krishna.chundru@oss.qualcomm.com, thippeswamy.havalige@amd.com, inochiama@gmail.com, ningyu@eswincomputing.com, linmin@eswincomputing.com, pinkesh.vaghela@einfochips.com, ouyanghui@eswincomputing.com, Frank.li@nxp.com Subject: Re: Re: [PATCH v6 2/3] PCI: eic7700: Add Eswin PCIe host controller driver X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2024.2-cmXT6 build 20241203(6b039d88) Copyright (c) 2002-2025 www.mailtech.cn mispb-72143050-eaf5-4703-89e0-86624513b4ce-eswincomputing.com In-Reply-To: References: <20251120101018.1477-1-zhangsenchuan@eswincomputing.com> <20251120101206.1518-1-zhangsenchuan@eswincomputing.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <4e3a959c.9ca.19ac01e156f.Coremail.zhangsenchuan@eswincomputing.com> X-Coremail-Locale: en_US X-CM-TRANSID:TQJkCgC3+q0s8SZpypF+AA--.1902W X-CM-SenderInfo: x2kd0wpvhquxxxdqqvxvzl0uprps33xlqjhudrp/1tbiAgESBmkl2 ngpgQAAsR X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= CgoKPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2VzLS0tLS0KPiBGcm9tOiAiU2hhd24gTGluIiA8c2hh d24ubGluQHJvY2stY2hpcHMuY29tPgo+IFNlbmQgdGltZTpUaHVyc2RheSwgMjAvMTEvMjAyNSAy MToxOTo0MAo+IFRvOiB6aGFuZ3NlbmNodWFuQGVzd2luY29tcHV0aW5nLmNvbSwgYmhlbGdhYXNA Z29vZ2xlLmNvbSwgbWFuaUBrZXJuZWwub3JnLCBrcnprK2R0QGtlcm5lbC5vcmcsIGNvbm9yK2R0 QGtlcm5lbC5vcmcsIGxwaWVyYWxpc2lAa2VybmVsLm9yZywga3dpbGN6eW5za2lAa2VybmVsLm9y Zywgcm9iaEBrZXJuZWwub3JnLCBwLnphYmVsQHBlbmd1dHJvbml4LmRlLCBqaW5nb29oYW4xQGdt YWlsLmNvbSwgZ3VzdGF2by5waW1lbnRlbEBzeW5vcHN5cy5jb20sIGxpbnV4LXBjaUB2Z2VyLmtl cm5lbC5vcmcsIGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnLCBsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnLCBjaHJpc3RpYW4uYnJ1ZWxAZm9zcy5zdC5jb20sIG1heWFuay5yYW5hQG9zcy5x dWFsY29tbS5jb20sIHNocmFkaGEudEBzYW1zdW5nLmNvbSwga3Jpc2huYS5jaHVuZHJ1QG9zcy5x dWFsY29tbS5jb20sIHRoaXBwZXN3YW15LmhhdmFsaWdlQGFtZC5jb20sIGlub2NoaWFtYUBnbWFp bC5jb20KPiBDYzogc2hhd24ubGluQHJvY2stY2hpcHMuY29tLCBuaW5neXVAZXN3aW5jb21wdXRp bmcuY29tLCBsaW5taW5AZXN3aW5jb21wdXRpbmcuY29tLCBwaW5rZXNoLnZhZ2hlbGFAZWluZm9j aGlwcy5jb20sIG91eWFuZ2h1aUBlc3dpbmNvbXB1dGluZy5jb20sIEZyYW5rLmxpQG54cC5jb20K PiBTdWJqZWN0OiBSZTogW1BBVENIIHY2IDIvM10gUENJOiBlaWM3NzAwOiBBZGQgRXN3aW4gUENJ ZSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyCj4gCj4g5ZyoIDIwMjUvMTEvMjAg5pif5pyf5ZubIDE4 OjEyLCB6aGFuZ3NlbmNodWFuQGVzd2luY29tcHV0aW5nLmNvbSDlhpnpgZM6Cj4gPiBGcm9tOiBT ZW5jaHVhbiBaaGFuZyA8emhhbmdzZW5jaHVhbkBlc3dpbmNvbXB1dGluZy5jb20+Cj4gPiAKPiA+ IEFkZCBkcml2ZXIgZm9yIHRoZSBFc3dpbiBFSUM3NzAwIFBDSWUgaG9zdCBjb250cm9sbGVyLCB3 aGljaCBpcyBiYXNlZCBvbgo+ID4gdGhlIERlc2lnbldhcmUgUENJZSBjb3JlLCBJUCByZXZpc2lv biA2LjAwYS4gVGhlIFBDSWUgR2VuLjMgY29udHJvbGxlcgo+ID4gc3VwcG9ydHMgYSBkYXRhIHJh dGUgb2YgOCBHVC9zIGFuZCA0IGNoYW5uZWxzLCBzdXBwb3J0IElOVHggYW5kIE1TSQo+ID4gaW50 ZXJydXB0cy4KPiA+IAo+IAo+IERvbid0IG5lZWQgYW55IHN0dWZmIHJlZ2FyZGluZyB0byBQSFkg aW4gdGhlIGRyaXZlcj8KClRoYW5rIHlvdSBmb3IgeW91ciBjb21tZW50LCBTaGF3bgoKQ2xhcmlm aWNhdGlvbgpUaGUgcGh5IGlzIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCBieSB0aGUgaGFyZHdh cmUsIGFuZCB0aGVyZSBhcmUgcHJvY2Vzc2VzIAppbiB0aGUgY29kZSB3YWl0aW5nIGZvciB0aGUg cGh5IHRvIGJlIGluaXRpYWxpemVkLgoKPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFl1IE5pbmcgPG5p bmd5dUBlc3dpbmNvbXB1dGluZy5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBZYW5naHVpIE91IDxv dXlhbmdodWlAZXN3aW5jb21wdXRpbmcuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogU2VuY2h1YW4g WmhhbmcgPHpoYW5nc2VuY2h1YW5AZXN3aW5jb21wdXRpbmcuY29tPgo+ID4gLS0tCj4gPiAgIGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL0tjb25maWcgICAgICAgIHwgIDExICsKPiA+ICAgZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvTWFrZWZpbGUgICAgICAgfCAgIDEgKwo+ID4gICBkcml2 ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWVpYzc3MDAuYyB8IDM4NyArKysrKysrKysrKysr KysrKysrKysrCj4gPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzk5IGluc2VydGlvbnMoKykKPiA+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZWljNzcw MC5jCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29u ZmlnIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZwo+ID4gaW5kZXggMzQ5ZDQ2 NTczOTNjLi42NjU2OGVmYjMyNGYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9LY29uZmlnCj4gPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29u ZmlnCj4gPiBAQCAtOTMsNiArOTMsMTcgQEAgY29uZmlnIFBDSUVfQlQxCj4gPiAgIAkgIEVuYWJs ZXMgc3VwcG9ydCBmb3IgdGhlIFBDSWUgY29udHJvbGxlciBpbiB0aGUgQmFpa2FsLVQxIFNvQyB0 byB3b3JrCj4gPiAgIAkgIGluIGhvc3QgbW9kZS4gSXQncyBiYXNlZCBvbiB0aGUgU3lub3BzeXMg RFdDIFBDSWUgdjQuNjBhIElQLWNvcmUuCj4gPiAgIAo+ID4gK2NvbmZpZyBQQ0lFX0VJQzc3MDAK PiA+ICsJYm9vbCAiRXN3aW4gRUlDNzcwMCBQQ0llIGNvbnRyb2xsZXIiCj4gPiArCWRlcGVuZHMg b24gQVJDSF9FU1dJTiB8fCBDT01QSUxFX1RFU1QKPiA+ICsJZGVwZW5kcyBvbiBQQ0lfTVNJCj4g PiArCXNlbGVjdCBQQ0lFX0RXX0hPU1QKPiA+ICsJaGVscAo+ID4gKwkgIFNheSBZIGhlcmUgaWYg eW91IHdhbnQgUENJZSBjb250cm9sbGVyIHN1cHBvcnQgZm9yIHRoZSBFc3dpbiBFSUM3NzAwLgo+ ID4gKwkgIFRoZSBQQ0llIGNvbnRyb2xsZXIgb24gRUlDNzcwMCBpcyBiYXNlZCBvbiBEZXNpZ25X YXJlIGhhcmR3YXJlLAo+ID4gKwkgIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFBDSWUgY29udHJv bGxlciBpbiB0aGUgRUlDNzcwMCBTb0MgdG8gd29yayBpbgo+ID4gKwkgIGhvc3QgbW9kZS4KPiA+ ICsKPiA+ICAgY29uZmlnIFBDSV9JTVg2Cj4gPiAgIAlib29sCj4gPiAgIAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL01ha2VmaWxlIGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvTWFrZWZpbGUKPiA+IGluZGV4IDdhZTI4ZjNiMGZiMy4uMDRmNzUxYzQ5ZWJh IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvTWFrZWZpbGUKPiA+ ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL01ha2VmaWxlCj4gPiBAQCAtNiw2ICs2 LDcgQEAgb2JqLSQoQ09ORklHX1BDSUVfRFdfRVApICs9IHBjaWUtZGVzaWdud2FyZS1lcC5vCj4g PiAgIG9iai0kKENPTkZJR19QQ0lFX0RXX1BMQVQpICs9IHBjaWUtZGVzaWdud2FyZS1wbGF0Lm8K PiA+ICAgb2JqLSQoQ09ORklHX1BDSUVfQU1EX01EQikgKz0gcGNpZS1hbWQtbWRiLm8KPiA+ICAg b2JqLSQoQ09ORklHX1BDSUVfQlQxKSArPSBwY2llLWJ0MS5vCj4gPiArb2JqLSQoQ09ORklHX1BD SUVfRUlDNzcwMCkgKz0gcGNpZS1laWM3NzAwLm8KPiA+ICAgb2JqLSQoQ09ORklHX1BDSV9EUkE3 WFgpICs9IHBjaS1kcmE3eHgubwo+ID4gICBvYmotJChDT05GSUdfUENJX0VYWU5PUykgKz0gcGNp LWV4eW5vcy5vCj4gPiAgIG9iai0kKENPTkZJR19QQ0lFX0ZVNzQwKSArPSBwY2llLWZ1NzQwLm8K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWVpYzc3MDAu YyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZWljNzcwMC5jCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yMzlmZGJjNTAxZmUKPiA+IC0t LSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZWlj NzcwMC5jCj4gPiBAQCAtMCwwICsxLDM4NyBAQAo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCj4gPiArLyoKPiA+ICsgKiBFU1dJTiBFSUM3NzAwIFBDSWUgcm9vdCBjb21w bGV4IGRyaXZlcgo+ID4gKyAqCj4gPiArICogQ29weXJpZ2h0IDIwMjUsIEJlaWppbmcgRVNXSU4g Q29tcHV0aW5nIFRlY2hub2xvZ3kgQ28uLCBMdGQuCj4gPiArICoKPiA+ICsgKiBBdXRob3JzOiBZ dSBOaW5nIDxuaW5neXVAZXN3aW5jb21wdXRpbmcuY29tPgo+ID4gKyAqICAgICAgICAgIFNlbmNo dWFuIFpoYW5nIDx6aGFuZ3NlbmNodWFuQGVzd2luY29tcHV0aW5nLmNvbT4KPiA+ICsgKiAgICAg ICAgICBZYW5naHVpIE91IDxvdXlhbmdodWlAZXN3aW5jb21wdXRpbmcuY29tPgo+ID4gKyAqLwo+ ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiA+ICsjaW5jbHVkZSA8bGlu dXgvaW9wb2xsLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gKyNpbmNsdWRl IDxsaW51eC9vZi5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiA+ICsjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3Jlc291cmNlLmg+ Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgInBjaWUtZGVzaWdud2FyZS5oIgo+ID4gKwo+ID4gKy8q IEVMQkkgcmVnaXN0ZXJzICovCj4gPiArI2RlZmluZSBQQ0lFRUxCSV9DVFJMMF9PRkZTRVQJCTB4 MAo+ID4gKyNkZWZpbmUgUENJRUVMQklfU1RBVFVTMF9PRkZTRVQJCTB4MTAwCj4gPiArCj4gPiAr LyogTFRTU00gcmVnaXN0ZXIgZmllbGRzICovCj4gPiArI2RlZmluZSBQQ0lFRUxCSV9BUFBfTFRT U01fRU5BQkxFCUJJVCg1KQo+ID4gKwo+ID4gKy8qIEFQUF9IT0xEX1BIWV9SU1QgcmVnaXN0ZXIg ZmllbGRzICovCj4gPiArI2RlZmluZSBQQ0lFRUxCSV9BUFBfSE9MRF9QSFlfUlNUCUJJVCg2KQo+ ID4gKwo+ID4gKy8qIFBNX1NFTF9BVVhfQ0xLIHJlZ2lzdGVyIGZpZWxkcyAqLwo+ID4gKyNkZWZp bmUgUENJRUVMQklfUE1fU0VMX0FVWF9DTEsJCUJJVCgxNikKPiA+ICsKPiA+ICsvKiBERVZfVFlQ RSByZWdpc3RlciBmaWVsZHMgKi8KPiA+ICsjZGVmaW5lIFBDSUVFTEJJX0NUUkwwX0RFVl9UWVBF CQlHRU5NQVNLKDMsIDApCj4gPiArCj4gPiArLyogVmVuZG9yIGFuZCBkZXZpY2UgSUQgdmFsdWUg Ki8KPiA+ICsjZGVmaW5lIFBDSV9WRU5ET1JfSURfRVNXSU4JCTB4MWZlMQo+ID4gKyNkZWZpbmUg UENJX0RFVklDRV9JRF9FU1dJTgkJMHgyMDMwCj4gCj4gSXQgd291bGQgYmUgYmV0dGVyIHRvIGJl IG1vdmVkIHRvIHBjaV9pZHMuaCA/CgpObyB2ZW5kb3IgdXNpbmcgU3lub3BzeXMgSVAgd2FzIGZv dW5kIGluIHRoZSBwY2lfaWRzLmggZmlsZSB0byBoYXZlIAp0aGVpciBWRU5ET1JfSUQgYW5kIERF VklDRV9JRC4gTWFuaSBhbmQgYmpvcm4gbWF5IGhhdmUgYWdyZWVkIHRvIGtlZXAgCnRoZSBWRU5E T1JfSUQgYW5kIERFVklDRV9JRCBpbiBvdXIgb3duIGZpbGUuCgo+IAo+ID4gKwo+ID4gKyNkZWZp bmUgRUlDNzcwMF9OVU1fUlNUUwkJQVJSQVlfU0laRShlaWM3NzAwX3BjaWVfcnN0cykKPiAKPiBJ ZiB1c2luZyBkZXZtX3Jlc2V0X2NvbnRyb2xfYXJyYXlfZ2V0X2V4Y2x1c2l2ZSwgeW91IGRvbid0 IG5lZWQgdGhpcwo+IGF0IGFsbC4KClRoZSBtYWludGFpbmVyIG9mIHRoZSByZXNldCBtb2R1bGUs IFBoaWxpcHAsIHJlY29tbWVuZGVkIApkZXZtX3Jlc2V0X2NvbnRyb2xfYnVsa19nZXRfZXhjbHVz aXZlKCkgdG8gbWUgaW4gdGhlIHY0IHBhdGNoLiBNYXliZSAKaGUgaGFkIG90aGVyIGNvbnNpZGVy YXRpb25zLgoKPiAKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGVpYzc3MDBf cGNpZV9yc3RzW10gPSB7Cj4gPiArCSJwd3IiLAo+ID4gKwkiZGJpIiwKPiA+ICt9Owo+ID4gKwo+ IAo+IERpdHRvLgo+IAo+ID4gK3N0cnVjdCBlaWM3NzAwX3BjaWVfZGF0YSB7Cj4gPiArCWJvb2wg bXNpeF9jYXA7Cj4gPiArCWJvb2wgbm9fc3VzcHBvcnRfTDI7Cj4gPiArfTsKPiA+ICsKPiA+ICtz dHJ1Y3QgZWljNzcwMF9wY2llX3BvcnQgewo+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4g PiArCXN0cnVjdCByZXNldF9jb250cm9sICpwZXJzdDsKPiA+ICsJaW50IG51bV9sYW5lczsKPiA+ ICt9Owo+ID4gKwo+ID4gK3N0cnVjdCBlaWM3NzAwX3BjaWUgewo+ID4gKwlzdHJ1Y3QgZHdfcGNp ZSBwY2k7Cj4gPiArCXN0cnVjdCBjbGtfYnVsa19kYXRhICpjbGtzOwo+ID4gKwlzdHJ1Y3QgcmVz ZXRfY29udHJvbF9idWxrX2RhdGEgcmVzZXRzW0VJQzc3MDBfTlVNX1JTVFNdOwo+ID4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIHBvcnRzOwo+ID4gKwljb25zdCBzdHJ1Y3QgZWljNzcwMF9wY2llX2RhdGEg KmRhdGE7Cj4gPiArCWludCBudW1fY2xrczsKPiA+ICt9Owo+ID4gKwo+ID4gKyNkZWZpbmUgdG9f ZWljNzcwMF9wY2llKHgpIGRldl9nZXRfZHJ2ZGF0YSgoeCktPmRldikKPiA+ICsKPiA+ICtzdGF0 aWMgaW50IGVpYzc3MDBfcGNpZV9zdGFydF9saW5rKHN0cnVjdCBkd19wY2llICpwY2kpCj4gPiAr ewo+ID4gKwl1MzIgdmFsOwo+ID4gKwo+ID4gKwkvKiBFbmFibGUgTFRTU00gKi8KPiA+ICsJdmFs ID0gcmVhZGxfcmVsYXhlZChwY2ktPmVsYmlfYmFzZSArIFBDSUVFTEJJX0NUUkwwX09GRlNFVCk7 Cj4gPiArCXZhbCB8PSBQQ0lFRUxCSV9BUFBfTFRTU01fRU5BQkxFOwo+ID4gKwl3cml0ZWxfcmVs YXhlZCh2YWwsIHBjaS0+ZWxiaV9iYXNlICsgUENJRUVMQklfQ1RSTDBfT0ZGU0VUKTsKPiA+ICsK PiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBib29sIGVpYzc3MDBfcGNp ZV9saW5rX3VwKHN0cnVjdCBkd19wY2llICpwY2kpCj4gPiArewo+ID4gKwl1MTYgb2Zmc2V0ID0g ZHdfcGNpZV9maW5kX2NhcGFiaWxpdHkocGNpLCBQQ0lfQ0FQX0lEX0VYUCk7Cj4gPiArCXUxNiB2 YWwgPSByZWFkdyhwY2ktPmRiaV9iYXNlICsgb2Zmc2V0ICsgUENJX0VYUF9MTktTVEEpOwo+IAo+ IGR3X3BjaWVfcmVhZGxfZGJpKCk/CgpPa2V5LCB0aGFua3M6KQoKPiAKPiA+ICsKPiA+ICsJcmV0 dXJuIHZhbCAmIFBDSV9FWFBfTE5LU1RBX0RMTExBOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg aW50IGVpYzc3MDBfcGNpZV9wZXJzdF9kZWFzc2VydChzdHJ1Y3QgZWljNzcwMF9wY2llX3BvcnQg KnBvcnQsCj4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZWljNzcwMF9wY2llICpwY2llKQo+ID4gK3sK PiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJcmV0ID0gcmVzZXRfY29udHJvbF9hc3NlcnQocG9y dC0+cGVyc3QpOwo+ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlkZXZfZXJyKHBjaWUtPnBjaS5kZXYs ICJGYWlsZWQgdG8gYXNzZXJ0IFBFUlNUI1xuIik7Cj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gKwl9 Cj4gPiArCj4gPiArCS8qIEVuc3VyZSB0aGF0IFBFUlNUIyBoYXMgYmVlbiBhc3NlcnRlZCBmb3Ig YXQgbGVhc3QgMTAwIG1zICovCj4gPiArCW1zbGVlcChQQ0lFX1RfUFZQRVJMX01TKTsKPiA+ICsK PiA+ICsJcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChwb3J0LT5wZXJzdCk7Cj4gPiArCWlm IChyZXQpIHsKPiA+ICsJCWRldl9lcnIocGNpZS0+cGNpLmRldiwgIkZhaWxlZCB0byBkZWFzc2Vy dCBQRVJTVCNcbiIpOwo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1 cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBlaWM3NzAwX3BjaWVfcGFyc2VfcG9y dChzdHJ1Y3QgZWljNzcwMF9wY2llICpwY2llLAo+ID4gKwkJCQkgICBzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5vZGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwY2llLT5wY2kuZGV2 Owo+ID4gKwlzdHJ1Y3QgZWljNzcwMF9wY2llX3BvcnQgKnBvcnQ7Cj4gPiArCj4gPiArCXBvcnQg PSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBvcnQpLCBHRlBfS0VSTkVMKTsKPiA+ICsJaWYg KCFwb3J0KQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiArCj4gPiArCXBvcnQtPnBlcnN0ID0g b2ZfcmVzZXRfY29udHJvbF9nZXRfZXhjbHVzaXZlKG5vZGUsICJwZXJzdCIpOwo+ID4gKwlpZiAo SVNfRVJSKHBvcnQtPnBlcnN0KSkgewo+ID4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0 IFBFUlNUIyByZXNldFxuIik7Cj4gPiArCQlyZXR1cm4gUFRSX0VSUihwb3J0LT5wZXJzdCk7Cj4g PiArCX0KPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogVE9ETzogU2luY2UgdGhlIFJvb3QgUG9ydCBu b2RlIGlzIHNlcGFyYXRlZCBvdXQgYnkgcGNpZSBkZXZpY2V0cmVlLAo+ID4gKwkgKiB0aGUgRFdD IGNvcmUgaW5pdGlhbGl6YXRpb24gY29kZSBjYW4ndCBwYXJzZSB0aGUgbnVtLWxhbmVzIGF0dHJp YnV0ZQo+ID4gKwkgKiBpbiB0aGUgUm9vdCBQb3J0LiBCZWZvcmUgZW50ZXJpbmcgdGhlIERXQyBj b3JlIGluaXRpYWxpemF0aW9uIGNvZGUsCj4gPiArCSAqIHRoZSBwbGF0Zm9ybSBkcml2ZXIgY29k ZSBwYXJzZXMgdGhlIFJvb3QgUG9ydCBub2RlLiBUaGUgRUlDNzcwMCBvbmx5Cj4gPiArCSAqIHN1 cHBvcnRzIG9uZSBSb290IFBvcnQgbm9kZSwgYW5kIHRoZSBudW0tbGFuZXMgYXR0cmlidXRlIGlz IHN1aXRhYmxlCj4gPiArCSAqIGZvciB0aGUgY2FzZSBvZiBvbmUgUm9vdCBSb3J0Lgo+ID4gKwkg Ki8KPiA+ICsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAibnVtLWxhbmVzIiwgJnBv cnQtPm51bV9sYW5lcykpCj4gPiArCQlwY2llLT5wY2kubnVtX2xhbmVzID0gcG9ydC0+bnVtX2xh bmVzOwo+ID4gKwo+IAo+IGR3X3BjaWVfZ2V0X3Jlc291cmNlcygpIGtub3dzIGl0LgoKVGhlIG51 bS1sYW5lcyBvZiB0aGUgcm9vdCBwb3J0IG5vZGUgY2Fubm90IGJlIHBhcnNlZCBpbiBkd19wY2ll X2dldF9yZXNvdXJjZXMuCk91ciBkZXZpY2UgdHJlZSBoYXMgc2VwYXJhdGVkIHRoZSByb290IHBv cnQgbm9kZS4KCktpbmQgcmVnYXJkcywKU2VuY2h1YW4gWmhhbmcKCg==