From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kishon Vijay Abraham I Subject: Re: [PATCH 5/6] pci: layerscape: Add the EP mode support. Date: Tue, 6 Nov 2018 11:36:42 +0530 Message-ID: References: <20181025110901.5680-1-xiaowei.bao@nxp.com> <20181025110901.5680-5-xiaowei.bao@nxp.com> <8ec7f502-e058-2c28-9140-5d125e4af6ff@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Xiaowei Bao , "bhelgaas@google.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , Leo Li , "lorenzo.pieralisi@arm.com" , "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "M.h. Lian" , Mingkai Hu , Roy Zang , "kstewart@linuxfoundation.org" , "cyrille.pitchen@free-electrons.com" , "pombredanne@nexb.com" , "shawn.lin@rock-chips.com" , "linux-pci@vger.kernel.org" , "devicetree@vger.kernel.org" "linux-kernel@vger.kernel.org"
  • Cc: Jiafei Pan List-Id: devicetree@vger.kernel.org KFJlbW92ZWQgTmlrbGFzIGFzIG1haWxzIHRvIGhpbSBpcyBib3VuY2luZykKCkhpLAoKUGxlYXNl IGZpeCB5b3VyIGVtYWlsIGNsaWVudC4gUmVmZXIgRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2VtYWls LWNsaWVudHMucnN0CgpPbiAwNS8xMS8xOCAyOjQ1IFBNLCBYaWFvd2VpIEJhbyB3cm90ZToKPiAK PiAKPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEtpc2hvbiBWaWpheSBBYnJh aGFtIEkgPGtpc2hvbkB0aS5jb20+IAo+IFNlbnQ6IDIwMTjlubQxMeaciDXml6UgMTY6NTcKPiBU bzogWGlhb3dlaSBCYW8gPHhpYW93ZWkuYmFvQG54cC5jb20+OyBiaGVsZ2Fhc0Bnb29nbGUuY29t OyByb2JoK2R0QGtlcm5lbC5vcmc7IG1hcmsucnV0bGFuZEBhcm0uY29tOyBzaGF3bmd1b0BrZXJu ZWwub3JnOyBMZW8gTGkgPGxlb3lhbmcubGlAbnhwLmNvbT47IGxvcmVuem8ucGllcmFsaXNpQGFy bS5jb207IGFybmRAYXJuZGIuZGU7IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBNLmguIExp YW4gPG1pbmdodWFuLmxpYW5AbnhwLmNvbT47IE1pbmdrYWkgSHUgPG1pbmdrYWkuaHVAbnhwLmNv bT47IFJveSBaYW5nIDxyb3kuemFuZ0BueHAuY29tPjsga3N0ZXdhcnRAbGludXhmb3VuZGF0aW9u Lm9yZzsgY3lyaWxsZS5waXRjaGVuQGZyZWUtZWxlY3Ryb25zLmNvbTsgcG9tYnJlZGFubmVAbmV4 Yi5jb207IHNoYXduLmxpbkByb2NrLWNoaXBzLmNvbTsgbmlrbGFzLmNhc3NlbEBheGlzLmNvbTsg bGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7IGxp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZzsgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKPiBDYzogSmlhZmVpIFBhbiA8 amlhZmVpLnBhbkBueHAuY29tPgo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggNS82XSBwY2k6IGxheWVy c2NhcGU6IEFkZCB0aGUgRVAgbW9kZSBzdXBwb3J0Lgo+IAo+IEhpLAo+IAo+IE9uIDMxLzEwLzE4 IDQ6MDggUE0sIFhpYW93ZWkgQmFvIHdyb3RlOgo+Pgo+Pgo+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQo+PiBGcm9tOiBLaXNob24gVmlqYXkgQWJyYWhhbSBJIDxraXNob25AdGkuY29tPgo+ PiBTZW50OiAyMDE45bm0MTDmnIgzMeaXpSAxMjoxNQo+PiBUbzogWGlhb3dlaSBCYW8gPHhpYW93 ZWkuYmFvQG54cC5jb20+OyBiaGVsZ2Fhc0Bnb29nbGUuY29tOyAKPj4gcm9iaCtkdEBrZXJuZWwu b3JnOyBtYXJrLnJ1dGxhbmRAYXJtLmNvbTsgc2hhd25ndW9Aa2VybmVsLm9yZzsgTGVvIExpIAo+ PiA8bGVveWFuZy5saUBueHAuY29tPjsgbG9yZW56by5waWVyYWxpc2lAYXJtLmNvbTsgYXJuZEBh cm5kYi5kZTsgCj4+IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBNLmguIExpYW4gPG1pbmdo dWFuLmxpYW5AbnhwLmNvbT47IE1pbmdrYWkgCj4+IEh1IDxtaW5na2FpLmh1QG54cC5jb20+OyBS b3kgWmFuZyA8cm95LnphbmdAbnhwLmNvbT47IAo+PiBrc3Rld2FydEBsaW51eGZvdW5kYXRpb24u b3JnOyBjeXJpbGxlLnBpdGNoZW5AZnJlZS1lbGVjdHJvbnMuY29tOyAKPj4gcG9tYnJlZGFubmVA bmV4Yi5jb207IHNoYXduLmxpbkByb2NrLWNoaXBzLmNvbTsgCj4+IG5pa2xhcy5jYXNzZWxAYXhp cy5jb207IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IAo+PiBkZXZpY2V0cmVlQHZnZXIua2Vy bmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgCj4+IGxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKPj4g Q2M6IEppYWZlaSBQYW4gPGppYWZlaS5wYW5AbnhwLmNvbT4KPj4gU3ViamVjdDogUmU6IFtQQVRD SCA1LzZdIHBjaTogbGF5ZXJzY2FwZTogQWRkIHRoZSBFUCBtb2RlIHN1cHBvcnQuCj4+Cj4+IEhp LAo+Pgo+PiBPbiAzMS8xMC8xOCA4OjAzIEFNLCBYaWFvd2VpIEJhbyB3cm90ZToKPj4+Cj4+Pgo+ Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+IEZyb206IFhpYW93ZWkgQmFvCj4+PiBT ZW50OiAyMDE45bm0MTDmnIgyNuaXpSAxNzoxOQo+Pj4gVG86ICdLaXNob24gVmlqYXkgQWJyYWhh bSBJJyA8a2lzaG9uQHRpLmNvbT47IGJoZWxnYWFzQGdvb2dsZS5jb207Cj4+PiByb2JoK2R0QGtl cm5lbC5vcmc7IG1hcmsucnV0bGFuZEBhcm0uY29tOyBzaGF3bmd1b0BrZXJuZWwub3JnOyBMZW8g TGkKPj4+IDxsZW95YW5nLmxpQG54cC5jb20+OyBsb3JlbnpvLnBpZXJhbGlzaUBhcm0uY29tOyBh cm5kQGFybmRiLmRlOyAKPj4+IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBNLmguIExpYW4g PG1pbmdodWFuLmxpYW5AbnhwLmNvbT47IAo+Pj4gTWluZ2thaSBIdSA8bWluZ2thaS5odUBueHAu Y29tPjsgUm95IFphbmcgPHJveS56YW5nQG54cC5jb20+OyAKPj4+IGtzdGV3YXJ0QGxpbnV4Zm91 bmRhdGlvbi5vcmc7IGN5cmlsbGUucGl0Y2hlbkBmcmVlLWVsZWN0cm9ucy5jb207Cj4+PiBwb21i cmVkYW5uZUBuZXhiLmNvbTsgc2hhd24ubGluQHJvY2stY2hpcHMuY29tOyAKPj4+IG5pa2xhcy5j YXNzZWxAYXhpcy5jb207IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IAo+Pj4gZGV2aWNldHJl ZUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IAo+Pj4gbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eHBwYy1kZXZAbGlzdHMub3ps YWJzLm9yZwo+Pj4gQ2M6IEppYWZlaSBQYW4gPGppYWZlaS5wYW5AbnhwLmNvbT4KPj4+IFN1Ympl Y3Q6IFJFOiBbUEFUQ0ggNS82XSBwY2k6IGxheWVyc2NhcGU6IEFkZCB0aGUgRVAgbW9kZSBzdXBw b3J0Lgo+Pj4KPj4+Cj4+Pgo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+IEZyb206 IEtpc2hvbiBWaWpheSBBYnJhaGFtIEkgPGtpc2hvbkB0aS5jb20+Cj4+PiBTZW50OiAyMDE45bm0 MTDmnIgyNuaXpSAxMzoyOQo+Pj4gVG86IFhpYW93ZWkgQmFvIDx4aWFvd2VpLmJhb0BueHAuY29t PjsgYmhlbGdhYXNAZ29vZ2xlLmNvbTsKPj4+IHJvYmgrZHRAa2VybmVsLm9yZzsgbWFyay5ydXRs YW5kQGFybS5jb207IHNoYXduZ3VvQGtlcm5lbC5vcmc7IExlbyBMaQo+Pj4gPGxlb3lhbmcubGlA bnhwLmNvbT47IGxvcmVuem8ucGllcmFsaXNpQGFybS5jb207IGFybmRAYXJuZGIuZGU7IAo+Pj4g Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IE0uaC4gTGlhbiA8bWluZ2h1YW4ubGlhbkBueHAu Y29tPjsgCj4+PiBNaW5na2FpIEh1IDxtaW5na2FpLmh1QG54cC5jb20+OyBSb3kgWmFuZyA8cm95 LnphbmdAbnhwLmNvbT47IAo+Pj4ga3N0ZXdhcnRAbGludXhmb3VuZGF0aW9uLm9yZzsgY3lyaWxs ZS5waXRjaGVuQGZyZWUtZWxlY3Ryb25zLmNvbTsKPj4+IHBvbWJyZWRhbm5lQG5leGIuY29tOyBz aGF3bi5saW5Acm9jay1jaGlwcy5jb207IAo+Pj4gbmlrbGFzLmNhc3NlbEBheGlzLmNvbTsgbGlu dXgtcGNpQHZnZXIua2VybmVsLm9yZzsgCj4+PiBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZzsg bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgCj4+PiBsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmc7IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCj4+PiBTdWJqZWN0 OiBSZTogW1BBVENIIDUvNl0gcGNpOiBsYXllcnNjYXBlOiBBZGQgdGhlIEVQIG1vZGUgc3VwcG9y dC4KPj4+Cj4+PiBIaSwKPj4+Cj4+PiBPbiBUaHVyc2RheSAyNSBPY3RvYmVyIDIwMTggMDQ6Mzkg UE0sIFhpYW93ZWkgQmFvIHdyb3RlOgo+Pj4+IEFkZCB0aGUgUENJZSBFUCBtb2RlIHN1cHBvcnQg Zm9yIGxheWVyc2NhcGUgcGxhdGZvcm0uCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBYaWFvd2Vp IEJhbyA8eGlhb3dlaS5iYW9AbnhwLmNvbT4KPj4+PiAtLS0KPj4+PiAgZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvTWFrZWZpbGUgICAgICAgICAgICB8ICAgIDIgKy0KPj4+PiAgZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpLWxheWVyc2NhcGUtZXAuYyB8ICAxNjEKPj4+PiArKysrKysr KysrKysrKysrKysrKysrKysKPj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCAxNjIgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlCj4+Pj4gMTAwNjQ0IGRyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvZHdjL3BjaS1sYXllcnNjYXBlLWVwLmMKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9NYWtlZmlsZQo+Pj4+IGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvTWFrZWZpbGUKPj4+PiBpbmRleCA1ZDJjZTcyLi5iMjZkNjE3IDEwMDY0NAo+ Pj4+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL01ha2VmaWxlCj4+Pj4gKysrIGIv ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvTWFrZWZpbGUKPj4+PiBAQCAtOCw3ICs4LDcgQEAg b2JqLSQoQ09ORklHX1BDSV9FWFlOT1MpICs9IHBjaS1leHlub3Mubwo+Pj4+ICBvYmotJChDT05G SUdfUENJX0lNWDYpICs9IHBjaS1pbXg2Lm8KPj4+PiAgb2JqLSQoQ09ORklHX1BDSUVfU1BFQVIx M1hYKSArPSBwY2llLXNwZWFyMTN4eC5vCj4+Pj4gIG9iai0kKENPTkZJR19QQ0lfS0VZU1RPTkUp ICs9IHBjaS1rZXlzdG9uZS1kdy5vIHBjaS1rZXlzdG9uZS5vCj4+Pj4gLW9iai0kKENPTkZJR19Q Q0lfTEFZRVJTQ0FQRSkgKz0gcGNpLWxheWVyc2NhcGUubwo+Pj4+ICtvYmotJChDT05GSUdfUENJ X0xBWUVSU0NBUEUpICs9IHBjaS1sYXllcnNjYXBlLm8gCj4+Pj4gK3BjaS1sYXllcnNjYXBlLWVw Lm8KPj4+PiAgb2JqLSQoQ09ORklHX1BDSUVfUUNPTSkgKz0gcGNpZS1xY29tLm8KPj4+PiAgb2Jq LSQoQ09ORklHX1BDSUVfQVJNQURBXzhLKSArPSBwY2llLWFybWFkYThrLm8KPj4+PiAgb2JqLSQo Q09ORklHX1BDSUVfQVJUUEVDNikgKz0gcGNpZS1hcnRwZWM2Lm8gZGlmZiAtLWdpdCAKPj4+PiBh L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1sYXllcnNjYXBlLWVwLmMKPj4+PiBiL2Ry aXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1sYXllcnNjYXBlLWVwLmMKPj4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAuLjNiMzNiYmMKPj4+PiAtLS0gL2Rldi9u dWxsCj4+Pj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWxheWVyc2NhcGUt ZXAuYwo+Pj4+IEBAIC0wLDAgKzEsMTYxIEBACj4+Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCj4+Pj4gKy8qCj4+Pj4gKyAqIFBDSWUgY29udHJvbGxlciBFUCBkcml2ZXIg Zm9yIEZyZWVzY2FsZSBMYXllcnNjYXBlIFNvQ3MKPj4+PiArICoKPj4+PiArICogQ29weXJpZ2h0 IChDKSAyMDE4IE5YUCBTZW1pY29uZHVjdG9yLgo+Pj4+ICsgKgo+Pj4+ICsgKiBBdXRob3I6IFhp YW93ZWkgQmFvIDx4aWFvd2VpLmJhb0BueHAuY29tPiAgKi8KPj4+PiArCj4+Pj4gKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KPj4+PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPj4+PiArI2lu Y2x1ZGUgPGxpbnV4L29mX3BjaS5oPgo+Pj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0u aD4KPj4+PiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPj4+PiArI2luY2x1ZGUgPGxp bnV4L3BjaS5oPgo+Pj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+Pj4g KyNpbmNsdWRlIDxsaW51eC9yZXNvdXJjZS5oPgo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgInBjaWUt ZGVzaWdud2FyZS5oIgo+Pj4+ICsKPj4+PiArI2RlZmluZSBQQ0lFX0RCSTJfT0ZGU0VUCQkweDEw MDAJLyogREJJMiBiYXNlIGFkZHJlc3MqLwo+Pj4KPj4+IFRoZSBiYXNlIGFkZHJlc3Mgc2hvdWxk IGNvbWUgZnJvbSBkdC4KPj4+PiArCj4+Pj4gK3N0cnVjdCBsc19wY2llX2VwIHsKPj4+PiArCXN0 cnVjdCBkd19wY2llCQkqcGNpOwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArI2RlZmluZSB0b19sc19w Y2llX2VwKHgpCWRldl9nZXRfZHJ2ZGF0YSgoeCktPmRldikKPj4+PiArCj4+Pj4gK3N0YXRpYyBi b29sIGxzX3BjaWVfaXNfYnJpZGdlKHN0cnVjdCBsc19wY2llX2VwICpwY2llKSB7Cj4+Pj4gKwlz dHJ1Y3QgZHdfcGNpZSAqcGNpID0gcGNpZS0+cGNpOwo+Pj4+ICsJdTMyIGhlYWRlcl90eXBlOwo+ Pj4+ICsKPj4+PiArCWhlYWRlcl90eXBlID0gaW9yZWFkOChwY2ktPmRiaV9iYXNlICsgUENJX0hF QURFUl9UWVBFKTsKPj4+PiArCWhlYWRlcl90eXBlICY9IDB4N2Y7Cj4+Pj4gKwo+Pj4+ICsJcmV0 dXJuIGhlYWRlcl90eXBlID09IFBDSV9IRUFERVJfVFlQRV9CUklER0U7IH0KPj4+PiArCj4+Pj4g K3N0YXRpYyBpbnQgbHNfcGNpZV9lc3RhYmxpc2hfbGluayhzdHJ1Y3QgZHdfcGNpZSAqcGNpKSB7 Cj4+Pj4gKwlyZXR1cm4gMDsKPj4+PiArfQo+Pj4KPj4+IFRoZXJlIHNob3VsZCBiZSBzb21lIHdh eSBieSB3aGljaCBFUCBzaG91bGQgdGVsbCBSQyB0aGF0IGl0IGlzIG5vdCBjb25maWd1cmVkIHll dC4gQXJlIHRoZXJlIG5vIGJpdHMgdG8gY29udHJvbCBMVFNTTSBzdGF0ZSBpbml0aWFsaXphdGlv biBvciBDb25maWd1cmF0aW9uIHJldHJ5IHN0YXR1cyBlbmFibGluZz8KPj4+IFtYaWFvd2VpIEJh b10gVGhlcmUgaGF2ZSBub3QgYml0cyB0byBjb250cm9sIExUU1NNIHN0YXRlIHRvIHRlbGwgdGhl IFJDIGl0IGlzIGNvbmZpZ3VyZWQuIFRoZSBzdGFydCBsaW5rIGlzIGF1dG8gY29tcGxldGVkLgo+ Pj4gW1hpYW93ZWkgQmFvXSBIaSBLaXNob24sIGlzIHRoZXJlIGFueSBhZHZpY2U/Cj4+Cj4+IElm IHRoZXJlIGlzIG5vIEhXIHN1cHBvcnQsIEkgZG9uJ3QgdGhpbmsgYW55dGhpbmcgY291bGQgYmUg ZG9uZSBoZXJlLiBUaGlzIGNvdWxkIHJlc3VsdCBpbiBSQyByZWFkaW5nIGNvbmZpZ3VyYXRpb24g c3BhY2UgZXZlbiBiZWZvcmUgRVAgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuCj4+IFtYaWFvd2VpIEJh b10gVGhlIGJvb3Rsb2FkZXIgaGF2ZSBpbml0aWFsaXplZCB0aGUgRVAgZGV2aWNlIGFuZCBzZXQg dGhlIGNvbmZpZyByZWFkeSBiaXQsIGFuZCB0aGUga2VybmVsIGRvbid0IG5lZWQgdG8gZG8gYW55 dGhpbmcuCj4gCj4gV2hhdCBkb2VzIGJvb3Rsb2FkZXIgaW5pdGFsaXplPyBUaGUgRVAgZHJpdmVy IGhlcmUgd2lsbCByZWluaXRpYWxpemUgZXZlcnl0aGluZyByaWdodD8KPiBbWGlhb3dlaSBCYW9d IFRoZSBib290bG9hZGVyIGluaXRpYWxpemUgQkFSIHNpemUsIG91dGJvdW5kIHdpbmRvdywgaW5i b3VuZCB3aW5kb3cgYW5kIHNldCB0aGUgY29uZmlnIHJlYWR5IGJpdC4KCkhvdyB3aWxsIGJvb3Rs b2FkZXIga25vdyB0aGUgQkFSIHNpemU/IFRoZSBCQVIgc2l6ZSBpcyBiYXNlZCBvbiB0aGUgZnVu Y3Rpb24KZHJpdmVyLiBIb3cgZG9lcyBib290bG9hZGVyIGNvbmZpZ3VyZSB0aGUgT0Igd2luZG93 PyBUaGUgT0Igd2luZG93IGlzCmNvbmZpZ3VyZWQgYmFzZWQgb24gdGhlIHNpemUgYW5kIGFkZHJl c3MgZ2l2ZW4gYnkgdGhlIGhvc3QgZHluYW1pY2FsbHkgYXQgcnVudGltZS4KClRoYW5rcwpLaXNo b24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFy bS1rZXJuZWwK