From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandre Courbot Subject: Re: [PATCH] pmu/gk20a: PMU boot support. Date: Fri, 13 Mar 2015 19:12:01 +0900 Message-ID: <5502B7F1.7030700@nvidia.com> References: <1426055631-1166-1-git-send-email-dgoyal@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1426055631-1166-1-git-send-email-dgoyal-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Deepak Goyal , bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-tegra@vger.kernel.org RHVlIHRvIHRoZSBsZW5ndGggb2YgdGhlIHBhdGNoIHRoZXJlIGFyZSBtYW55IHRoaW5ncyB0byBm aXguIFRoaXMgcmV2aWV3IAphbG9uZSB3b24ndCBjb3ZlciBhbGwgb2YgdGhlbSwgYnV0IGlzIG1h aW5seSBhbiBhdHRlbXB0IHRvIHJlZHVjZSB0aGUgCmFtb3VudCBvZiBjb2RlIGFuZCB0byBzcGxp dCB0aGlzLgoKT24gV2VkLCBNYXIgMTEsIDIwMTUgYXQgMzozMyBQTSwgRGVlcGFrIEdveWFsIDxk Z295YWxAbnZpZGlhLmNvbT4gd3JvdGU6CiA+IEl0IGFkZHMgUE1VIGJvb3Qgc3VwcG9ydC5JdCBs b2FkcyBQTVUKID4gZmlybXdhcmUgaW50byBQTVUgZmFsY29uLlJNL0tlcm5lbCBkcml2ZXIKID4g cmVjZWl2ZXMgSU5JVCBhY2sgKHRocm91Z2ggaW50ZXJydXB0IG1lY2hhbmlzbSkKID4gZnJvbSBQ TVUgd2hlbiBQTVUgYm9vdHMgd2l0aCBzdWNjZXNzLgoKVGhpcyBjb21taXQgbG9nIGlzIHN0cmFu Z2VseSBmb3JtYXR0ZWQuIFlvdSB3YW50IHRvIGJyZWFrIGxpbmVzIG9mIGdpdCAKY29tbWl0IGxv dHMgYXJvdW5kIGNvbHVtbiA3MCwgbm90IDUwLiBBbHNvIGRvbid0IGZvcmdldCB0aGUgc3BhY2Ug YWZ0ZXIgCnRoZSBlbmQgb2YgeW91ciBzZW50ZW5jZXMuCgpUaGUgbG9nIGl0c2VsZiBhbHNvIGxh Y2tzIGluZm9ybWF0aXZlIHZhbHVlLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoZSAKbGVuZ3Ro IG9mIHRoaXMgcGF0Y2guIFBsZWFzZSBhc3N1bWUgeW91ciByZWFkZXIgaXMgY29tcGxldGVseSB1 bmZhbWlsaWFyIAp3aXRoIHlvdXIgd29yaywgYW5kIGV4cGxhaW4gaW4gZGV0YWlsIHdoYXQgeW91 ciBwYXRjaCBkb2VzLCBldmVuIHRoZSAKcGFydHMgdGhhdCBzZWVtIG9idmlvdXMuIFNvbWUgcXVl c3Rpb25zIHRoYXQgY29tZSB0byBtaW5kIHdoZW4gcmVhZGluZyAKdGhlIGxvZzoKCi0gV2hhdCBp cyB0aGUgUE1VIGZpcm13YXJlIGRvPwotIFdoYXQgaXMgUk0/ICh0aGlzIGlzIG5vdCB0aGUgdGVy bWlub2xvZ3kgdXNlZCBieSBOb3V2ZWF1LCBzbyBiZXR0ZXIgdG8gCmF2b2lkIHVzaW5nIGl0IGFs dG9nZXRoZXIpCi0gV2hhdCB2YWx1ZSBkb2VzIHRoaXMgcGF0Y2ggYWRkIHRvIHRoZSBwcm9qZWN0 PwoKSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwYXRjaCBjbGVhcnMgdGhlIHdheSBmb3IgZm9sbG93 LXVwIHBhdGNoZXMgdGhhdCAKd2lsbCBhY3R1YWxseSBhZGQgZmVhdHVyZXMuIFBsZWFzZSBzdGF0 ZSB0aGlzIGNsZWFybHkgaW4gdGhlIGxvZywgYW5kIApleHBsYWluIHdoYXQgdGhlc2UgZmVhdHVy ZXMgYXJlLiBObyBjb2RlIGNhbiBiZSBtZXJnZWQgdXBzdHJlYW0gdW50aWwgCml0cyBiZW5lZml0 cyBhcmUgY2xlYXJseSB1bmRlcnN0b29kLgoKUmV2aWV3IGZvbGxvd3MsIEkgaGF2ZSBjaGFuZ2Vk IHRoZSBvcmRlciBvZiBmaWxlcyB0byBjb21tZW50IG9uIHRoZSAKc3RydWN0dXJlcyBiZWZvcmUg dGhlIGNvZGUuCgogPiBkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvcG11L3By aXYuaCAKYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9wbXUvcHJpdi5oCiA+IGluZGV4IDk5ODQx MDU2M2JmZC4uYzQ2ODZlNDE4NTgyIDEwMDY0NAogPiAtLS0gYS9kcm0vbm91dmVhdS9udmttL3N1 YmRldi9wbXUvcHJpdi5oCiA+ICsrKyBiL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3BtdS9wcml2 LmgKID4gQEAgLTIsNyArMiw5MSBAQAogPiAgI2RlZmluZSBfX05WS01fUE1VX1BSSVZfSF9fCiA+ ICAjaW5jbHVkZSA8c3ViZGV2L3BtdS5oPgogPiAgI2luY2x1ZGUgPHN1YmRldi9wbXUvZnVjL29z Lmg+CiA+ICsjaW5jbHVkZSA8Y29yZS9vYmplY3QuaD4KID4gKyNpbmNsdWRlIDxjb3JlL2Rldmlj ZS5oPgogPiArI2luY2x1ZGUgPGNvcmUvcGFyZW50Lmg+CiA+ICsjaW5jbHVkZSA8Y29yZS9tbS5o PgogPiArI2luY2x1ZGUgPGxpbnV4L3J3c2VtLmg+CiA+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5o PgogPiArI2luY2x1ZGUgPHN1YmRldi9tbXUuaD4KID4gKyNpbmNsdWRlIDxjb3JlL2dwdW9iai5o PgogPgogPiArc3RhdGljIGlubGluZSB1MzIgdTY0X2hpMzIodTY0IG4pCiA+ICt7CiA+ICsgICAg ICAgcmV0dXJuICh1MzIpKChuID4+IDMyKSAmIH4odTMyKTApOwogPiArfQogPiArCiA+ICtzdGF0 aWMgaW5saW5lIHUzMiB1NjRfbG8zMih1NjQgbikKID4gK3sKID4gKyAgICAgICByZXR1cm4gKHUz MikobiAmIH4odTMyKTApOwogPiArfQoKVXNlIHRoZSBsb3dlcl8zMl9iaXRzKCkgYW5kIHVwcGVy XzMyX2JpdHMoKSBtYWNyb3MgaW5zdGVhZC4KCiA+ICsKID4gKy8qICNkZWZpbmUgQUxMT0NBVE9S X0RFQlVHICovCgpUaGlzIGxpbmUgaXMgdXNlbGVzcy4uLgoKID4gKwogPiArLyogbWFpbiBzdHJ1 Y3QgKi8KCi4uLiBhbmQgdGhpcyBjb21tZW50IHVuaW5mb3JtYXRpdmUuCgogPiArc3RydWN0IG52 a21fcG11X2FsbG9jYXRvciB7CiA+ICsKID4gKyAgICAgICBjaGFyIG5hbWVbMzJdOyAgICAgICAg ICAgICAgICAgIC8qIG5hbWUgZm9yIGFsbG9jYXRvciAqLwogPiArLypzdHJ1Y3QgcmJfcm9vdCBy Yl9yb290OyovICAgICAgICAgICAgLyogcmIgdHJlZSByb290IGZvciBibG9ja3MgKi8KCkRvIG5v dCBjb21tZW50IG91dCBtZW1iZXJzIHRoYXQgd2UgZG9uJ3QgbmVlZC4gSWYgaXQncyB1bm5lZWRl ZCwganVzdCAKcmVtb3ZlIGl0LgoKID4gKwogPiArICAgICAgIHUzMiBiYXNlOyAgICAgICAgICAg ICAgICAgICAgICAgLyogbWluIHZhbHVlIG9mIHRoaXMgbGluZWFyIApzcGFjZSAqLwogPiArICAg ICAgIHUzMiBsaW1pdDsgICAgICAgICAgICAgICAgICAgICAgLyogbWF4IHZhbHVlID0gbGltaXQg LSAxICovCiA+ICsKID4gKyAgICAgICB1bnNpZ25lZCBsb25nICpiaXRtYXA7ICAgICAgICAgIC8q IGJpdG1hcCAqLwogPiArCiA+ICsgICAgICAgc3RydWN0IGdrMjBhX2FsbG9jX2Jsb2NrICpibG9j a19maXJzdDsgIC8qIGZpcnN0IGJsb2NrIGluIGxpc3QgKi8KID4gKyAgICAgICBzdHJ1Y3QgZ2sy MGFfYWxsb2NfYmxvY2sgKmJsb2NrX3JlY2VudDsgLyogbGFzdCB2aXNpdGVkIGJsb2NrICovCiA+ ICsKID4gKyAgICAgICB1MzIgZmlyc3RfZnJlZV9hZGRyOyAgICAgICAgICAgIC8qIGZpcnN0IGZy ZWUgYWRkciwgbm9uLWNvbnRpZ291cwogPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxsb2NhdGlvbiBwcmVmZXJyZWQgc3RhcnQsCiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBwaWNrIHVwIHNtYWxsIApo b2xlcyAqLwogPiArICAgICAgIHUzMiBsYXN0X2ZyZWVfYWRkcjsgICAgICAgICAgICAgLyogbGFz dCBmcmVlIGFkZHIsIGNvbnRpZ3VvdXMKID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFsbG9jYXRpb24gcHJlZmVycmVkIHN0YXJ0ICovCiA+ICsgICAgICAgdTMy IGNhY2hlZF9ob2xlX3NpemU7ICAgICAgICAgICAvKiBtYXggZnJlZSBob2xlIHNpemUgdXAgdG8K ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZnJlZV9h ZGRyICovCiA+ICsgICAgICAgdTMyIGJsb2NrX2NvdW50OyAgICAgICAgICAgICAgICAvKiBudW1i ZXIgb2YgYmxvY2tzICovCiA+ICsKID4gKyAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHJ3X3Nl bWE7ICAgIC8qIGxvY2sgKi8KID4gKyAgICAgICBzdHJ1Y3Qga21lbV9jYWNoZSAqYmxvY2tfY2Fj aGU7IC8qIHNsYWIgY2FjaGUgKi8KID4gKwogPiArICAgICAgIC8qIGlmIGVuYWJsZWQsIGNvbnN0 cmFpbiB0byBbYmFzZSwgbGltaXQpICovCiA+ICsgICAgICAgc3RydWN0IHsKID4gKyAgICAgICAg ICAgICAgIGJvb2wgZW5hYmxlOwogPiArICAgICAgICAgICAgICAgdTMyIGJhc2U7CiA+ICsgICAg ICAgICAgICAgICB1MzIgbGltaXQ7CiA+ICsgICAgICAgfSBjb25zdHJhaW50OwogPiArCiA+ICsg ICAgICAgaW50ICgqYWxsb2MpKHN0cnVjdCBudmttX3BtdV9hbGxvY2F0b3IgKmFsbG9jYXRvciwK ID4gKyAgICAgICAgICAgICAgIHUzMiAqYWRkciwgdTMyIGxlbiwgdTMyIGFsaWduKTsKID4gKyAg ICAgICBpbnQgKCpmcmVlKShzdHJ1Y3QgbnZrbV9wbXVfYWxsb2NhdG9yICphbGxvY2F0b3IsCiA+ ICsgICAgICAgICAgICAgICB1MzIgYWRkciwgdTMyIGxlbiwgdTMyIGFsaWduKTsKID4gKwogPiAr fTsKID4gKwogPiAraW50IG52a21fcG11X2FsbG9jYXRvcl9pbml0KHN0cnVjdCBudmttX3BtdV9h bGxvY2F0b3IgKmFsbG9jYXRvciwKID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSwgdTMyIGJhc2UsIHUzMiBzaXplKTsKID4gK3ZvaWQgbnZrbV9wbXVfYWxsb2NhdG9y X2Rlc3Ryb3koc3RydWN0IG52a21fcG11X2FsbG9jYXRvciAqYWxsb2NhdG9yKTsKID4gKwogPiAr aW50IG52a21fcG11X2FsbG9jYXRvcl9ibG9ja19hbGxvYyhzdHJ1Y3QgbnZrbV9wbXVfYWxsb2Nh dG9yICphbGxvY2F0b3IsCiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHUzMiAqYWRkciwgdTMy IGxlbiwgdTMyIGFsaWduKTsKID4gKwogPiAraW50IG52a21fcG11X2FsbG9jYXRvcl9ibG9ja19m cmVlKHN0cnVjdCBudmttX3BtdV9hbGxvY2F0b3IgKmFsbG9jYXRvciwKID4gKyAgICAgICAgICAg ICAgICAgICAgICAgdTMyIGFkZHIsIHUzMiBsZW4sIHUzMiBhbGlnbik7CgpTbyBmcm9tIHRoZSBu dmttX3BtdV9hbGxvY2F0b3Igc3RydWN0IGFuZCB0aGVzZSBmdW5jdGlvbiBwcm90b3R5cGVzLCAK dGhpcyBsb29rcyBsaWtlIGEgcHJldHR5IGNhc3VhbCBhZGRyZXNzIHNwYWNlIGFsbG9jYXRvci4g Tm91dmVhdSBhbHJlYWR5IApoYXMgc3VjaCBhbiBhbGxvY2F0b3I6IG52a21fbW0uIENoZWNrIGl0 IG91dCwgaXQgd2lsbCBkbyBhbGwgdGhhdCB5b3UgCm5lZWQgYW5kIHlvdSBjYW4gcmVtb3ZlIGEg bG90IG9mIGNvZGUgZnJvbSB0aGlzIHBhdGNoLgoKID4gKwogPiArI2lmIGRlZmluZWQoQUxMT0NB VE9SX0RFQlVHKQogPiArCiA+ICsjZGVmaW5lIGFsbG9jYXRvcl9kYmcoYWxsb2N0b3IsIGZvcm1h dCwgYXJnLi4uKSAKICAgICAgICAgICAgXAogPiArZG8geyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogPiArICAgICAgIGlmICgxKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogPiArICAg ICAgICAgICAgICAgcHJfZGVidWcoIm52a21fcG11X2FsbG9jYXRvciAoJXMpICVzOiAiIGZvcm1h dCAiXG4iLFwKID4gKyAgICAgICAgICAgICAgICAgICAgICAgYWxsb2N0b3ItPm5hbWUsIF9fZnVu Y19fLCAjI2FyZyk7XAogPiArfSB3aGlsZSAoMCkKID4gKwogPiArI2Vsc2UgLyogQUxMT0NBVE9S X0RFQlVHICovCiA+ICsKID4gKyNkZWZpbmUgYWxsb2NhdG9yX2RiZyhmb3JtYXQsIGFyZy4uLikK CkknZCBwcmVmZXIgaWYgeW91IHVzZSB0aGUgbnZfZGVidWcoKSBtYWNybyBpbiBwbGFjZSBvZiB0 aGlzIG9uZSwgYnV0IGl0IAp3aWxsIGdvIGF3YXkgd2l0aCB0aGUgYWxsb2NhdG9yIGFueXdheS4u LgoKID4gKwogPiArI2VuZGlmIC8qIEFMTE9DQVRPUl9ERUJVRyAqLwogPiAgI2RlZmluZSBudmtt X3BtdV9jcmVhdGUocCwgZSwgbywgZCkgCiAgICAgICAgIFwKID4gICAgICAgICBudmttX3BtdV9j cmVhdGVfKChwKSwgKGUpLCAobyksIHNpemVvZigqKmQpLCAodm9pZCAqKilkKQogPiAgI2RlZmlu ZSBudmttX3BtdV9kZXN0cm95KHApIAogICAgICAgICBcCiA+IEBAIC0yNiw2ICsxMTAsMTc5IEBA IGludCBfbnZrbV9wbXVfY3RvcihzdHJ1Y3QgbnZrbV9vYmplY3QgKiwgc3RydWN0IApudmttX29i amVjdCAqLAogPiAgaW50IF9udmttX3BtdV9pbml0KHN0cnVjdCBudmttX29iamVjdCAqKTsKID4g IGludCBfbnZrbV9wbXVfZmluaShzdHJ1Y3QgbnZrbV9vYmplY3QgKiwgYm9vbCk7CiA+ICB2b2lk IG52a21fcG11X3Bnb2Ioc3RydWN0IG52a21fcG11ICpwbXUsIGJvb2wgZW5hYmxlKTsKID4gKyNk ZWZpbmUgUE1VX1BHX0lETEVfVEhSRVNIT0xEICAgICAgICAgICAgICAgICAgMTUwMDAKID4gKyNk ZWZpbmUgUE1VX1BHX1BPU1RfUE9XRVJVUF9JRExFX1RIUkVTSE9MRCAgICAgMTAwMDAwMAoKSSBk byBub3Qgc2VlIHRoZXNlIG1hY3JvcyBiZWluZyB1c2VkIGFueXdoZXJlIGluIHlvdXIgY29kZS4K CiA+ICsKID4gKy8qIHN0YXRlIHRyYW5zaXRpb24gOgogPiArICAgIE9GRiA9PiBbT0ZGX09OX1BF TkRJTkcgb3B0aW9uYWxdID0+IE9OX1BFTkRJTkcgPT4gT04gPT4gT0ZGCiA+ICsgICAgT04gPT4g T0ZGIGlzIGFsd2F5cyBzeW5jaHJvbml6ZWQgKi8KID4gKyNkZWZpbmUgUE1VX0VMUEdfU1RBVF9P RkYgICAgICAgICAgICAgIDAgICAvKiBlbHBnIGlzIG9mZiAqLwogPiArI2RlZmluZSBQTVVfRUxQ R19TVEFUX09OICAgICAgICAgICAgICAgMSAgIC8qIGVscGcgaXMgb24gKi8KID4gKy8qIGVscGcg aXMgb2ZmLCBBTExPVyBjbWQgaGFzIGJlZW4gc2VudCwgd2FpdCBmb3IgYWNrICovCiA+ICsjZGVm aW5lIFBNVV9FTFBHX1NUQVRfT05fUEVORElORyAgICAgICAyCiA+ICsvKiBlbHBnIGlzIG9uLCBE SVNBTExPVyBjbWQgaGFzIGJlZW4gc2VudCwgd2FpdCBmb3IgYWNrICovCiA+ICsjZGVmaW5lIFBN VV9FTFBHX1NUQVRfT0ZGX1BFTkRJTkcgICAgICAzCiA+ICsvKiBlbHBnIGlzIG9mZiwgY2FsbGVy IGhhcyByZXF1ZXN0ZWQgb24sIGJ1dCBBTExPVwogPiArY21kIGhhc24ndCBiZWVuIHNlbnQgZHVl IHRvIEVOQUJMRV9BTExPVyBkZWxheSAqLwogPiArI2RlZmluZSBQTVVfRUxQR19TVEFUX09GRl9P Tl9QRU5ESU5HICAgNAoKU2FtZSBoZXJlLiBJZiB0aGV5IGFyZSB1c2VkIGJ5IGEgZnV0dXJlIHBh dGNoLCBpbnRyb2R1Y2UgdGhlbSBhdCB0aGUgCnRpbWUgdGhleSBhY3R1YWxseSBiZWNvbWUgdXNl ZnVsLgoKID4gKwogPiArLyogRmFsY29uIFJlZ2lzdGVyIGluZGV4ICovCiA+ICsjZGVmaW5lIFBN VV9GQUxDT05fUkVHX1IwICAgICAgICAgICAgICAoMCkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9S RUdfUjEgICAgICAgICAgICAgICgxKQogPiArI2RlZmluZSBQTVVfRkFMQ09OX1JFR19SMiAgICAg ICAgICAgICAgKDIpCiA+ICsjZGVmaW5lIFBNVV9GQUxDT05fUkVHX1IzICAgICAgICAgICAgICAo MykKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfUjQgICAgICAgICAgICAgICg0KQogPiArI2Rl ZmluZSBQTVVfRkFMQ09OX1JFR19SNSAgICAgICAgICAgICAgKDUpCiA+ICsjZGVmaW5lIFBNVV9G QUxDT05fUkVHX1I2ICAgICAgICAgICAgICAoNikKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdf UjcgICAgICAgICAgICAgICg3KQogPiArI2RlZmluZSBQTVVfRkFMQ09OX1JFR19SOCAgICAgICAg ICAgICAgKDgpCiA+ICsjZGVmaW5lIFBNVV9GQUxDT05fUkVHX1I5ICAgICAgICAgICAgICAoOSkK ID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfUjEwICAgICAgICAgICAgICgxMCkKID4gKyNkZWZp bmUgUE1VX0ZBTENPTl9SRUdfUjExICAgICAgICAgICAgICgxMSkKID4gKyNkZWZpbmUgUE1VX0ZB TENPTl9SRUdfUjEyICAgICAgICAgICAgICgxMikKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdf UjEzICAgICAgICAgICAgICgxMykKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfUjE0ICAgICAg ICAgICAgICgxNCkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfUjE1ICAgICAgICAgICAgICgx NSkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfSVYwICAgICAgICAgICAgICgxNikKID4gKyNk ZWZpbmUgUE1VX0ZBTENPTl9SRUdfSVYxICAgICAgICAgICAgICgxNykKID4gKyNkZWZpbmUgUE1V X0ZBTENPTl9SRUdfVU5ERUZJTkVEICAgICAgICgxOCkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9S RUdfRVYgICAgICAgICAgICAgICgxOSkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfU1AgICAg ICAgICAgICAgICgyMCkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfUEMgICAgICAgICAgICAg ICgyMSkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfSU1CICAgICAgICAgICAgICgyMikKID4g KyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfRE1CICAgICAgICAgICAgICgyMykKID4gKyNkZWZpbmUg UE1VX0ZBTENPTl9SRUdfQ1NXICAgICAgICAgICAgICgyNCkKID4gKyNkZWZpbmUgUE1VX0ZBTENP Tl9SRUdfQ0NSICAgICAgICAgICAgICgyNSkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfU0VD ICAgICAgICAgICAgICgyNikKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfQ1RYICAgICAgICAg ICAgICgyNykKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfRVhDSSAgICAgICAgICAgICgyOCkK ID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdfUlNWRDAgICAgICAgICAgICgyOSkKID4gKyNkZWZp bmUgUE1VX0ZBTENPTl9SRUdfUlNWRDEgICAgICAgICAgICgzMCkKID4gKyNkZWZpbmUgUE1VX0ZB TENPTl9SRUdfUlNWRDIgICAgICAgICAgICgzMSkKID4gKyNkZWZpbmUgUE1VX0ZBTENPTl9SRUdf U0laRSAgICAgICAgICAgICgzMikKClRoZXNlIG9uZXMgYXJlIG9rIHNpbmNlIGl0IHdvdWxkIG5v dCBtYWtlIHNlbnNlIHRvIGRlZmluZSBvbmx5IHBhcnQgb2YgCnRoZSByZWdzLi4uCgogPiArCiA+ ICsvKiBDaG9pY2VzIGZvciBwbXVfc3RhdGUgKi8KID4gKyNkZWZpbmUgUE1VX1NUQVRFX09GRiAg ICAgICAgICAgICAgICAgIDAgLyogUE1VIGlzIG9mZiAqLwogPiArI2RlZmluZSBQTVVfU1RBVEVf U1RBUlRJTkcgICAgICAgICAgICAgMSAvKiBQTVUgaXMgb24sIGJ1dCBub3QgYm9vdGVkICovCiA+ ICsjZGVmaW5lIFBNVV9TVEFURV9JTklUX1JFQ0VJVkVEICAgICAgICAgICAgICAgIDIgLyogUE1V IGluaXQgbWVzc2FnZSAKcmVjZWl2ZWQgKi8KID4gKyNkZWZpbmUgUE1VX1NUQVRFX0VMUEdfQk9P VElORyAgICAgICAgIDMgLyogUE1VIGlzIGJvb3RpbmcgKi8KID4gKyNkZWZpbmUgUE1VX1NUQVRF X0VMUEdfQk9PVEVEICAgICAgICAgIDQgLyogRUxQRyBpcyBpbml0aWFsaXplZCAqLwogPiArI2Rl ZmluZSBQTVVfU1RBVEVfTE9BRElOR19QR19CVUYgICAgICAgNSAvKiBMb2FkaW5nIFBHIGJ1ZiAq LwogPiArI2RlZmluZSBQTVVfU1RBVEVfTE9BRElOR19aQkMgICAgICAgICAgNiAvKiBMb2FkaW5n IFpCQyBidWYgKi8KID4gKyNkZWZpbmUgUE1VX1NUQVRFX1NUQVJURUQgICAgICAgICAgICAgIDcg LyogRnVsbHkgdW5pdGlhbGl6ZWQgKi8KCkJ1dCBoZXJlIGFnYWluLCB0aGUgbGFzdCA1IHN0YXRl cyBhcmUgbm90IHVzZWQgeWV0LCBzbyBwbGVhc2UgaW50cm9kdWNlIAp0aGVtIGFzIHRoZXkgYmVj b21lIG5lZWRlZC4KCiA+ICsKID4gKyNkZWZpbmUgUE1VX1FVRVVFX0NPVU5UICAgICAgICAgICAg ICAgIDUKID4gKwogPiArI2RlZmluZSBQTVVfTUFYX05VTV9TRVFVRU5DRVMgICAgICAgICAgKDI1 NikKID4gKyNkZWZpbmUgUE1VX1NFUV9CSVRfU0hJRlQgICAgICAgICAgICAgICg1KQogPiArI2Rl ZmluZSBQTVVfU0VRX1RCTF9TSVpFICAgICAgIFwKID4gKyAgICAgICAgICAgICAgIChQTVVfTUFY X05VTV9TRVFVRU5DRVMgPj4gUE1VX1NFUV9CSVRfU0hJRlQpCiA+ICsKID4gKyNkZWZpbmUgUE1V X1NIQTFfR0lEX1NJR05BVFVSRSAgICAgICAgIDB4QTdDNjZBRDIKID4gKyNkZWZpbmUgUE1VX1NI QTFfR0lEX1NJR05BVFVSRV9TSVpFICAgIDQKID4gKwogPiArI2RlZmluZSBQTVVfU0hBMV9HSURf U0laRSAgICAgIDE2CiA+ICsKID4gK3N0cnVjdCBwbXVfcXVldWUgewogPiArCgpFbXB0eSBibGFu ayBsaW5lLgoKID4gKyAgICAgICAvKiB1c2VkIGJ5IGh3LCBmb3IgQklPUy9TTUkgcXVldWUgKi8K ID4gKyAgICAgICB1MzIgbXV0ZXhfaWQ7CiA+ICsgICAgICAgdTMyIG11dGV4X2xvY2s7CiA+ICsg ICAgICAgLyogdXNlZCBieSBzdywgZm9yIExQUS9IUFEgcXVldWUgKi8KID4gKyAgICAgICBzdHJ1 Y3QgbXV0ZXggbXV0ZXg7CiA+ICsKID4gKyAgICAgICAvKiBjdXJyZW50IHdyaXRlIHBvc2l0aW9u ICovCiA+ICsgICAgICAgdTMyIHBvc2l0aW9uOwogPiArICAgICAgIC8qIHBoeXNpY2FsIGRtZW0g b2Zmc2V0IHdoZXJlIHRoaXMgcXVldWUgYmVnaW5zICovCiA+ICsgICAgICAgdTMyIG9mZnNldDsK ID4gKyAgICAgICAvKiBsb2dpY2FsIHF1ZXVlIGlkZW50aWZpZXIgKi8KID4gKyAgICAgICB1MzIg aWQ7CiA+ICsgICAgICAgLyogcGh5c2ljYWwgcXVldWUgaW5kZXggKi8KID4gKyAgICAgICB1MzIg aW5kZXg7CiA+ICsgICAgICAgLyogaW4gYnl0ZXMgKi8KID4gKyAgICAgICB1MzIgc2l6ZTsKID4g KwogPiArICAgICAgIC8qIG9wZW4tZmxhZyAqLwogPiArICAgICAgIHUzMiBvZmxhZzsKID4gKyAg ICAgICBib29sIG9wZW5lZDsgLyogb3BlbmVkIGltcGxpZXMgbG9ja2VkICovCiA+ICt9OwogPiAr CiA+ICtzdHJ1Y3QgcG11X3NoYTFfZ2lkIHsKID4gKyAgICAgICBib29sIHZhbGlkOwogPiArICAg ICAgIHU4IGdpZFtQTVVfU0hBMV9HSURfU0laRV07CiA+ICt9OwogPiArCiA+ICtzdHJ1Y3QgcG11 X3NoYTFfZ2lkX2RhdGEgewogPiArICAgICAgIHU4IHNpZ25hdHVyZVtQTVVfU0hBMV9HSURfU0lH TkFUVVJFX1NJWkVdOwogPiArICAgICAgIHU4IGdpZFtQTVVfU0hBMV9HSURfU0laRV07CiA+ICt9 OwogPiArCiA+ICtzdHJ1Y3QgcG11X2Rlc2MgewogPiArCgpFbXB0eSBibGFuayBsaW5lLgoKID4g KyAgICAgICBzdHJ1Y3QgcG11X3Vjb2RlX2Rlc2MgKmRlc2M7CiA+ICsgICAgICAgc3RydWN0IHBt dV9idWZfZGVzYyB1Y29kZTsKID4gKwogPiArICAgICAgIHN0cnVjdCBwbXVfYnVmX2Rlc2MgcGdf YnVmOwoKVGhpcyBtZW1iZXIgZG9lc24ndCBzZWVtIHRvIGJlIG5lZWRlZCBub3cuCgogPiArICAg ICAgIC8qIFRCRDogcmVtb3ZlIHRoaXMgaWYgWkJDIHNlcSBpcyBmaXhlZCAqLwogPiArICAgICAg IHN0cnVjdCBwbXVfYnVmX2Rlc2Mgc2VxX2J1ZjsKID4gKyAgICAgICBzdHJ1Y3QgcG11X2J1Zl9k ZXNjIHRyYWNlX2J1ZjsKID4gKyAgICAgICBib29sIGJ1Zl9sb2FkZWQ7CgpidWZfbG9hZGVkIGlz IG5ldmVyIHJlZmVyZW5jZWQgaW4gdGhpcyBjb2RlLgoKID4gKwogPiArICAgICAgIHN0cnVjdCBw bXVfc2hhMV9naWQgZ2lkX2luZm87CiA+ICsKID4gKyAgICAgICBzdHJ1Y3QgcG11X3F1ZXVlIHF1 ZXVlW1BNVV9RVUVVRV9DT1VOVF07CiA+ICsKID4gKyAgICAgICBzdHJ1Y3QgcG11X3NlcXVlbmNl ICpzZXE7CgpXcm9uZy4gcG11X3NlcXVlbmNlIGlzIGRlZmluZWQgaW4gZ2syMGEuaC4gVGhpcyBm aWxlIGlzIGEgZ2VuZXJpYyBvbmUuIApXaHkgd291bGQgUE1VcyBmb3Igb3RoZXIgR1BVcyBlbWJl ZCBHSzIwQS1zcGVjaWZpYyBzdHJ1Y3R1cmVzPwoKQWN0dWFsbHkgaXQgc2VlbXMgbGlrZSB0aGUg d2hvbGUgcG11X2Rlc2Mgc2hvdWxkIGJlIG1vdmVkIHRvIApHSzIwQS1zcGVjaWZpYyBmaWxlcywg c2luY2UgaXQgaXMgbm90IHVzZWQgZWxzZXdoZXJlIGZvciBub3cuCgogPiArICAgICAgIHVuc2ln bmVkIGxvbmcgcG11X3NlcV90YmxbUE1VX1NFUV9UQkxfU0laRV07CiA+ICsgICAgICAgdTMyIG5l eHRfc2VxX2Rlc2M7CiA+ICsKID4gKyAgICAgICBzdHJ1Y3QgcG11X211dGV4ICptdXRleDsKID4g KyAgICAgICB1MzIgbXV0ZXhfY250OwogPiArCiA+ICsgICAgICAgc3RydWN0IG11dGV4IHBtdV9j b3B5X2xvY2s7CiA+ICsgICAgICAgc3RydWN0IG11dGV4IHBtdV9zZXFfbG9jazsKID4gKwogPiAr ICAgICAgIHN0cnVjdCBudmttX3BtdV9hbGxvY2F0b3IgZG1lbTsKClNvIGFzIGV4cGxhaW5lZCBh Ym92ZSwgdGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBudmttX21tLgoKID4gKwogPiArICAg ICAgIHUzMiAqdWNvZGVfaW1hZ2U7CiA+ICsgICAgICAgYm9vbCBwbXVfcmVhZHk7CiA+ICsKID4g KyAgICAgICB1MzIgemJjX3NhdmVfZG9uZTsKCllldCBhbm90aGVyIHVucmVmZXJlbmNlZCBtZW1i ZXIuLi4KCiA+ICsKID4gKyAgICAgICB1MzIgc3RhdF9kbWVtX29mZnNldDsKCkFuZCBhbm90aGVy IG9uZS4KCiA+ICsKID4gKyAgICAgICB1MzIgZWxwZ19zdGF0OwoKQW5kIGFub3RoZXIgb25lLgoK ID4gKwogPiArICAgICAgIGludCBwbXVfc3RhdGU7CiA+ICsKID4gKyNkZWZpbmUgUE1VX0VMUEdf RU5BQkxFX0FMTE9XX0RFTEFZX01TRUMgICAgICAgMSAvKiBtc2VjICovCgpBbmQgYW5vdGhlciBv bmUuCgogPiArICAgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCBpc3Jfd29ya3E7CiA+ICsgICAgICAg c3RydWN0IG11dGV4IGVscGdfbXV0ZXg7IC8qIHByb3RlY3QgZWxwZyBlbmFibGUvZGlzYWJsZSAq LwoKQW5kIGFub3RoZXIgb25lLgoKID4gKy8qIGRpc2FibGUgLTEsIGVuYWJsZSArMSwgPD0wIGVs cGcgZGlzYWJsZWQsID4gMCBlbHBnIGVuYWJsZWQgKi8KID4gKyAgICAgICBpbnQgZWxwZ19yZWZj bnQ7CgpIZXJlIHRvby4KCiA+ICsKID4gKyAgICAgICBib29sIGluaXRpYWxpemVkOwogPiArCiA+ ICsgICAgICAgdm9pZCAoKnJlbW92ZV9zdXBwb3J0KShzdHJ1Y3QgcG11X2Rlc2MgKnBtdSk7CgpT byB0aGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgc2V0LCBidXQgbmV2ZXIgY2FsbGVkISBJcyBpdCB1 bm5lZWRlZCwgb3IgCmhhdmUgeW91IGZvcmdvdCB0byBjYWxsIGl0IHdoZW4geW91IHNob3VsZCBo YXZlPwoKID4gKyAgICAgICBib29sIHN3X3JlYWR5OwogPiArICAgICAgIGJvb2wgcGVyZm1vbl9y ZWFkeTsKClVubmVlZGVkIG1lbWJlciBhZ2Fpbi4KCiA+ICsKID4gKyAgICAgICB1MzIgc2FtcGxl X2J1ZmZlcjsKID4gKyAgICAgICB1MzIgbG9hZF9zaGFkb3c7CiA+ICsgICAgICAgdTMyIGxvYWRf YXZnOwogPiArCiA+ICsgICAgICAgc3RydWN0IG11dGV4IGlzcl9tdXRleDsKID4gKyAgICAgICBi b29sIGlzcl9lbmFibGVkOwogPiArCiA+ICsgICAgICAgYm9vbCB6YmNfcmVhZHk7CgpUaGlzIGlz IG9ubHkgc2V0IHRvIGZhbHNlIGluIHRoZSBkZXN0cm95KCkgZnVuY3Rpb24sIHNvIEkgZ3Vlc3Mg eW91IApkb24ndCBuZWVkIHRoaXMgbm93Li4uCgogPiArICAgICAgIHVuc2lnbmVkIGxvbmcgcGVy Zm1vbl9ldmVudHNfY250OwogPiArICAgICAgIGJvb2wgcGVyZm1vbl9zYW1wbGluZ19lbmFibGVk OwogPiArICAgICAgIHU4IHBtdV9tb2RlOwogPiArICAgICAgIHUzMiBmYWxjb25faWQ7CiA+ICsg ICAgICAgdTMyIGFlbHBnX3BhcmFtWzVdOwoKQW5kIGFsbCB0aGVzZSA1IG1lbWJlcnMgYXJlIGFs c28gbm90IG5lZWRlZCBub3cgaXQgc2VlbXMuCgogPiArICAgICAgIHZvaWQgKnBtdV9jaGlwX2Rh dGE7CgogRnJvbSBob3cgeW91IGFyZSB1c2luZyB0aGlzIG1lbWJlciAodG8gc3RvcmUgYSBwb2lu dGVyIHRvIGEga3phbGxvYydkIApwbXVfZ2syMGFfZGF0YSksIGl0IHNlZW1zIHRvIGJlIHVubmVl ZGVkLiBQdXQgdGhlIGNvbnRlbnQgb2YgCnBtdV9nazIwYV9kYXRhIGludG8gZ2syMGFfcG11X3By aXYsIGFuZCBnZXQgcmlkIG9mIGJvdGggdGhpcyBtZW1iZXIgYW5kIApwbXVfZ2syMGFfZGF0YS4K CkFuZCBhY3R1YWxseSBzaW5jZSBib3RoIG1lbWJlcnMgb2YgcG11X2drMjBhX2RhdGEgYXJlIGNv bXBsZXRlbHkgCnVucmVmZXJlbmNlZCwgdGhleSBjYW4gYmUgYWRkZWQgaW4gYSBsYXRlciBwYXRj aCBhbnl3YXksIHdoZW4gdGhleSAKYWN0dWFsbHkgYmVjb21lIHVzZWZ1bC4KCiA+ICsgICAgICAg c3RydWN0IG52a21fcG11ICpwbXU7CiA+ICt9OwogPgogPiAgc3RydWN0IG52a21fcG11X2ltcGwg ewogPiAgICAgICAgIHN0cnVjdCBudmttX29jbGFzcyBiYXNlOwogPiBAQCAtMzksNSArMjk2LDEy IEBAIHN0cnVjdCBudmttX3BtdV9pbXBsIHsKID4gICAgICAgICB9IGRhdGE7CiA+CiA+ICAgICAg ICAgdm9pZCAoKnBnb2IpKHN0cnVjdCBudmttX3BtdSAqLCBib29sKTsKID4gKyAgICAgICBzdHJ1 Y3QgcG11X2Rlc2MgcG11ZGF0YTsKID4gIH07CiA+ICsKID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IG52a21fcG11ICppbXBsX2Zyb21fcG11KHN0cnVjdCBwbXVfZGVzYyAqcG11KQogPiArewogPiAr ICAgICAgIHJldHVybiBwbXUtPnBtdTsKID4gK30KID4gKwogPiAgI2VuZGlmCiA+IGRpZmYgLS1n aXQgYS9kcm0vbm91dmVhdS9pbmNsdWRlL252a20vc3ViZGV2L3BtdS5oIApiL2RybS9ub3V2ZWF1 L2luY2x1ZGUvbnZrbS9zdWJkZXYvcG11LmgKID4gaW5kZXggN2I4NmFjYzYzNGEwLi42NTliNGUw YmEwMmIgMTAwNjQ0CiA+IC0tLSBhL2RybS9ub3V2ZWF1L2luY2x1ZGUvbnZrbS9zdWJkZXYvcG11 LmgKID4gKysrIGIvZHJtL25vdXZlYXUvaW5jbHVkZS9udmttL3N1YmRldi9wbXUuaAogPiBAQCAt MSw3ICsxLDIwIEBACiA+ICAjaWZuZGVmIF9fTlZLTV9QTVVfSF9fCiA+ICAjZGVmaW5lIF9fTlZL TV9QTVVfSF9fCiA+ICAjaW5jbHVkZSA8Y29yZS9zdWJkZXYuaD4KID4gKyNpbmNsdWRlIDxjb3Jl L2RldmljZS5oPgogPiArI2luY2x1ZGUgPHN1YmRldi9tbXUuaD4KID4gKyNpbmNsdWRlIDxsaW51 eC9kZWJ1Z2ZzLmg+CiA+CiA+ICtzdHJ1Y3QgcG11X2J1Zl9kZXNjIHsKID4gKyAgICAgICBzdHJ1 Y3QgbnZrbV9ncHVvYmogKnBtdWJ1Zm9iajsKID4gKyAgICAgICBzdHJ1Y3QgbnZrbV92bWEgcG11 YnVmdm1hOwoKWW91ciBzdHJ1Y3QgaXMgYWxyZWFkeSBjYWxsZWQgInBtdV9idWYiLCBzbyBtYXli ZSBjYWxsIHRoZXNlIG1lbWJlcnMgCiJvYmoiIGFuZCAidm1hIiBzaW1wbHkuCgogPiArICAgICAg IHNpemVfdCBzaXplOwogPiArfTsKID4gK3N0cnVjdCBwbXVfcHJpdl92bSB7CiA+ICsgICAgICAg c3RydWN0IG52a21fZ3B1b2JqICptZW07CiA+ICsgICAgICAgc3RydWN0IG52a21fZ3B1b2JqICpw Z2Q7CiA+ICsgICAgICAgc3RydWN0IG52a21fdm0gKnZtOwogPiArfTsKID4gIHN0cnVjdCBudmtt X3BtdSB7CiA+ICAgICAgICAgc3RydWN0IG52a21fc3ViZGV2IGJhc2U7CiA+CiA+IEBAIC0yMCw5 ICszMywyMCBAQCBzdHJ1Y3QgbnZrbV9wbXUgewogPiAgICAgICAgICAgICAgICAgdTMyIG1lc3Nh Z2U7CiA+ICAgICAgICAgICAgICAgICB1MzIgZGF0YVsyXTsKID4gICAgICAgICB9IHJlY3Y7CiA+ IC0KID4gKyAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBpbml0X3dxOwoKVGhpcyB3cSBpcyBpbml0 aWFsaXplZCBhbmQgbmV2ZXIgdXNlZC4KCiA+ICsgICAgICAgYm9vbCBncl9pbml0aWFsaXNlZDsK Ck1lbWJlciBvbmx5IHdyaXR0ZW4gb25jZS4KCiA+ICsgICAgICAgc3RydWN0IGRlbnRyeSAqZGVi dWdmczsKID4gKyAgICAgICBzdHJ1Y3QgcG11X2J1Zl9kZXNjICpwZ19idWY7CgpUaGlzIG1lbWJl ciBpcyBuZXZlciB1c2VkLCBhbmQgYnkgdHJhbnNpdGlvbiBuZWl0aGVyIGlzIHRoZSBwZ19idWYg b2YgCnN0cnVjdCBwbXVfZGVzYy4KCiA+ICsgICAgICAgc3RydWN0IHBtdV9wcml2X3ZtICpwbXV2 bTsKID4gICAgICAgICBpbnQgICgqbWVzc2FnZSkoc3RydWN0IG52a21fcG11ICosIHUzMlsyXSwg dTMyLCB1MzIsIHUzMiwgdTMyKTsKID4gICAgICAgICB2b2lkICgqcGdvYikoc3RydWN0IG52a21f cG11ICosIGJvb2wpOwogPiArICAgICAgIGludCAoKnBtdV9tdXRleF9hY3F1aXJlKShzdHJ1Y3Qg bnZrbV9wbXUgKiwgdTMyIGlkLCB1MzIgKnRva2VuKTsKCk5ldmVyIHVzZWQgYmVjYXVzZSB5b3Ug YXJlIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHlvdSBhZmZlY3QgdG8gdGhlIApwb2ludGVyIGRpcmVj dGx5IGluIHRoZSBjb2RlICh3aGljaCBoYXBwZW5zIHRvIGFsc28gYmUgY2FsbGVkIApwbXVfbXV0 ZXhfYWNxdWlyZSEpCgogPiArICAgICAgIGludCAoKnBtdV9tdXRleF9yZWxlYXNlKShzdHJ1Y3Qg bnZrbV9wbXUgKiwgdTMyIGlkLCB1MzIgKnRva2VuKTsKClNhbWUgaGVyZS4KCiA+ICsgICAgICAg aW50ICgqcG11X2xvYWRfbm9ybSkoc3RydWN0IG52a21fcG11ICpwbXUsIHUzMiAqbG9hZCk7CiA+ ICsgICAgICAgaW50ICgqcG11X2xvYWRfdXBkYXRlKShzdHJ1Y3QgbnZrbV9wbXUgKnBtdSk7CiA+ ICsgICAgICAgdm9pZCAoKnBtdV9yZXNldF9sb2FkX2NvdW50ZXJzKShzdHJ1Y3QgbnZrbV9wbXUg KnBtdSk7CiA+ICsgICAgICAgdm9pZCAoKnBtdV9nZXRfbG9hZF9jb3VudGVycykoc3RydWN0IG52 a21fcG11ICpwbXUsIHUzMiAKKmJ1c3lfY3ljbGVzLAogPiArICAgICAgICAgICAgICAgdTMyICp0 b3RhbF9jeWNsZXMpOwoKVGhlc2UgZm91ciBvbmVzIGFyZSBuZXZlciBjYWxsZWQuIEludHJvZHVj ZSBtZW1iZXJzIGFuZCBmdW5jdGlvbnMgb25seSAKd2hlbiB0aGV5IGJlY29tZSBuZWVkZWQuCgog PiAgfTsKID4KID4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IG52a21fcG11ICoKID4gZGlmZiAtLWdp dCBhL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3BtdS9iYXNlLmMgCmIvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvcG11L2Jhc2UuYwogPiBpbmRleCAwNTRiMmQyZWVjMzUuLjZhZmQzODliOTc2NCAx MDA2NDQKID4gLS0tIGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvcG11L2Jhc2UuYwogPiArKysg Yi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9wbXUvYmFzZS5jCiA+IEBAIC0yNSw2ICsyNSwxMTQg QEAKID4KID4gICNpbmNsdWRlIDxzdWJkZXYvdGltZXIuaD4KCgogPgogPiArLyogaW5pdCBhbGxv Y2F0b3Igc3RydWN0ICovCiA+ICtpbnQgbnZrbV9wbXVfYWxsb2NhdG9yX2luaXQoc3RydWN0IG52 a21fcG11X2FsbG9jYXRvciAqYWxsb2NhdG9yLAogPiArICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSwgdTMyIHN0YXJ0LCB1MzIgbGVuKQogPiArewogPiArICAgICAgIG1lbXNldChhbGxv Y2F0b3IsIDAsIHNpemVvZihzdHJ1Y3QgbnZrbV9wbXVfYWxsb2NhdG9yKSk7CiA+ICsKID4gKyAg ICAgICBzdHJuY3B5KGFsbG9jYXRvci0+bmFtZSwgbmFtZSwgMzIpOwogPiArCiA+ICsgICAgICAg YWxsb2NhdG9yLT5iYXNlID0gc3RhcnQ7CiA+ICsgICAgICAgYWxsb2NhdG9yLT5saW1pdCA9IHN0 YXJ0ICsgbGVuIC0gMTsKID4gKwogPiArICAgICAgIGFsbG9jYXRvci0+Yml0bWFwID0ga2NhbGxv YyhCSVRTX1RPX0xPTkdTKGxlbiksIHNpemVvZihsb25nKSwKID4gKyAgICAgICAgICAgICAgICAg ICAgICAgR0ZQX0tFUk5FTCk7CiA+ICsgICAgICAgaWYgKCFhbGxvY2F0b3ItPmJpdG1hcCkKID4g KyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwogPiArCiA+ICsgICAgICAgYWxsb2NhdG9y X2RiZyhhbGxvY2F0b3IsICIlcyA6IGJhc2UgJWQsIGxpbWl0ICVkIiwKID4gKyAgICAgICAgICAg ICAgIGFsbG9jYXRvci0+bmFtZSwgYWxsb2NhdG9yLT5iYXNlKTsKID4gKwogPiArICAgICAgIGlu aXRfcndzZW0oJmFsbG9jYXRvci0+cndfc2VtYSk7CiA+ICsKID4gKyAgICAgICBhbGxvY2F0b3It PmFsbG9jID0gbnZrbV9wbXVfYWxsb2NhdG9yX2Jsb2NrX2FsbG9jOwogPiArICAgICAgIGFsbG9j YXRvci0+ZnJlZSA9IG52a21fcG11X2FsbG9jYXRvcl9ibG9ja19mcmVlOwogPiArCiA+ICsgICAg ICAgcmV0dXJuIDA7CiA+ICt9CiA+ICsKID4gKy8qIGRlc3Ryb3kgYWxsb2NhdG9yLCBmcmVlIGFs bCByZW1haW5pbmcgYmxvY2tzIGlmIGFueSAqLwogPiArdm9pZCBudmttX3BtdV9hbGxvY2F0b3Jf ZGVzdHJveShzdHJ1Y3QgbnZrbV9wbXVfYWxsb2NhdG9yICphbGxvY2F0b3IpCiA+ICt7CiA+ICsg ICAgICAgZG93bl93cml0ZSgmYWxsb2NhdG9yLT5yd19zZW1hKTsKID4gKwogPiArICAgICAgIGtm cmVlKGFsbG9jYXRvci0+Yml0bWFwKTsKID4gKwogPiArICAgICAgIG1lbXNldChhbGxvY2F0b3Is IDAsIHNpemVvZihzdHJ1Y3QgbnZrbV9wbXVfYWxsb2NhdG9yKSk7CiA+ICt9CiA+ICsKID4gKy8q CiA+ICsgKiAqYWRkciAhPSB+MCBmb3IgZml4ZWQgYWRkcmVzcyBhbGxvY2F0aW9uLiBpZiAqYWRk ciA9PSAwLCBiYXNlIGFkZHIgaXMKID4gKyAqIHJldHVybmVkIHRvIGNhbGxlciBpbiAqYWRkci4K ID4gKyAqCiA+ICsgKiBjb250aWd1b3VzIGFsbG9jYXRpb24sIHdoaWNoIGFsbG9jYXRlcyBvbmUg YmxvY2sgb2YKID4gKyAqIGNvbnRpZ3VvdXMgYWRkcmVzcy4KID4gKyovCiA+ICtpbnQgbnZrbV9w bXVfYWxsb2NhdG9yX2Jsb2NrX2FsbG9jKHN0cnVjdCBudmttX3BtdV9hbGxvY2F0b3IgKmFsbG9j YXRvciwKID4gKyAgICAgICAgICAgICAgIHUzMiAqYWRkciwgdTMyIGxlbiwgdTMyIGFsaWduKQog PiArewogPiArICAgICAgIHVuc2lnbmVkIGxvbmcgX2FkZHI7CiA+ICsKID4gKyAgICAgICBhbGxv Y2F0b3JfZGJnKGFsbG9jYXRvciwgIltpbl0gYWRkciAlZCwgbGVuICVkIiwgKmFkZHIsIGxlbik7 CiA+ICsKID4gKyAgICAgICBpZiAoKCphZGRyICE9IDAgJiYgKmFkZHIgPCBhbGxvY2F0b3ItPmJh c2UpIHx8IC8qIGNoZWNrIGFkZHIgCnJhbmdlICovCiA+ICsgICAgICAgICAgICphZGRyICsgbGVu ID4gYWxsb2NhdG9yLT5saW1pdCB8fCAvKiBjaGVjayBhZGRyIHJhbmdlICovCiA+ICsgICAgICAg ICAgICphZGRyICYgKGFsaWduIC0gMSkgfHwgLyogY2hlY2sgYWRkciBhbGlnbm1lbnQgKi8KID4g KyAgICAgICAgICAgIGxlbiA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGxl biAqLwogPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiA+ICsKID4gKyAgICAgICBs ZW4gPSBBTElHTihsZW4sIGFsaWduKTsKID4gKyAgICAgICBpZiAoIWxlbikKID4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwogPiArCiA+ICsgICAgICAgZG93bl93cml0ZSgmYWxsb2Nh dG9yLT5yd19zZW1hKTsKID4gKwogPiArICAgICAgIF9hZGRyID0gYml0bWFwX2ZpbmRfbmV4dF96 ZXJvX2FyZWEoYWxsb2NhdG9yLT5iaXRtYXAsCiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGFs bG9jYXRvci0+bGltaXQgLSBhbGxvY2F0b3ItPmJhc2UgKyAxLAogPiArICAgICAgICAgICAgICAg ICAgICAgICAqYWRkciA/ICgqYWRkciAtIGFsbG9jYXRvci0+YmFzZSkgOiAwLAogPiArICAgICAg ICAgICAgICAgICAgICAgICBsZW4sCiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGFsaWduIC0g MSk7CiA+ICsgICAgICAgaWYgKChfYWRkciA+IGFsbG9jYXRvci0+bGltaXQgLSBhbGxvY2F0b3It PmJhc2UgKyAxKSB8fAogPiArICAgICAgICAgICAoKmFkZHIgJiYgKmFkZHIgIT0gKF9hZGRyICsg YWxsb2NhdG9yLT5iYXNlKSkpIHsKID4gKyAgICAgICAgICAgICAgIHVwX3dyaXRlKCZhbGxvY2F0 b3ItPnJ3X3NlbWEpOwogPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiA+ICsgICAg ICAgfQogPiArCiA+ICsgICAgICAgYml0bWFwX3NldChhbGxvY2F0b3ItPmJpdG1hcCwgX2FkZHIs IGxlbik7CiA+ICsgICAgICAgKmFkZHIgPSBhbGxvY2F0b3ItPmJhc2UgKyBfYWRkcjsKID4gKwog PiArICAgICAgIHVwX3dyaXRlKCZhbGxvY2F0b3ItPnJ3X3NlbWEpOwogPiArCiA+ICsgICAgICAg YWxsb2NhdG9yX2RiZyhhbGxvY2F0b3IsICJbb3V0XSBhZGRyICVkLCBsZW4gJWQiLCAqYWRkciwg bGVuKTsKID4gKwogPiArICAgICAgIHJldHVybiAwOwogPiArfQogPiArCiA+ICsvKiBmcmVlIGFs bCBibG9ja3MgYmV0d2VlbiBzdGFydCBhbmQgZW5kICovCiA+ICtpbnQgbnZrbV9wbXVfYWxsb2Nh dG9yX2Jsb2NrX2ZyZWUoc3RydWN0IG52a21fcG11X2FsbG9jYXRvciAqYWxsb2NhdG9yLAogPiAr ICAgICAgICAgICAgICAgdTMyIGFkZHIsIHUzMiBsZW4sIHUzMiBhbGlnbikKID4gK3sKID4gKyAg ICAgICBhbGxvY2F0b3JfZGJnKGFsbG9jYXRvciwgIltpbl0gYWRkciAlZCwgbGVuICVkIiwgYWRk ciwgbGVuKTsKID4gKwogPiArICAgICAgIGlmIChhZGRyICsgbGVuID4gYWxsb2NhdG9yLT5saW1p dCB8fCAvKiBjaGVjayBhZGRyIHJhbmdlICovCiA+ICsgICAgICAgICAgIGFkZHIgPCBhbGxvY2F0 b3ItPmJhc2UgfHwKID4gKyAgICAgICAgICAgYWRkciAmIChhbGlnbiAtIDEpKSAgIC8qIGNoZWNr IGFkZHIgYWxpZ25tZW50ICovCiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKID4g KwogPiArICAgICAgIGxlbiA9IEFMSUdOKGxlbiwgYWxpZ24pOwogPiArICAgICAgIGlmICghbGVu KQogPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiA+ICsKID4gKyAgICAgICBkb3du X3dyaXRlKCZhbGxvY2F0b3ItPnJ3X3NlbWEpOwogPiArICAgICAgIGJpdG1hcF9jbGVhcihhbGxv Y2F0b3ItPmJpdG1hcCwgYWRkciAtIGFsbG9jYXRvci0+YmFzZSwgbGVuKTsKID4gKyAgICAgICB1 cF93cml0ZSgmYWxsb2NhdG9yLT5yd19zZW1hKTsKID4gKwogPiArICAgICAgIGFsbG9jYXRvcl9k YmcoYWxsb2NhdG9yLCAiW291dF0gYWRkciAlZCwgbGVuICVkIiwgYWRkciwgbGVuKTsKID4gKwog PiArICAgICAgIHJldHVybiAwOwogPiArfQogPiArCgpTbyBhbGwgdGhpcyBjb2RlIHNob3VsZCBn byBhd2F5IHdoZW4geW91IHN3aXRjaCB0byBudmttX21tLiBJdCB3YXMgCm91dC1vZi1wbGFjZSBh bnl3YXk6IHRoaXMgaXMgYSBzdGFuZGFyZCBhZGRyZXNzIHNwYWNlIGFsbG9jYXRvciBhbmQgaGFz IApub3RoaW5nIHNwZWNpZmljIHRvIFBNVS4KClRoYXQncyBhIGxvdCBvZiB0aGluZ3MgdG8gZml4 IGFscmVhZHksIHNvIEkgd2lsbCBob2xkIG15IHJldmlldyBvZiAKcG11L2drMjBhLmMgZm9yIG5l eHQgdGltZS4gSnVzdCBhIGZldyByZW1hcmtzIGFib3V0IHRoZSBtb3N0IG9idmlvdXMgCnByb2Js ZW1zIHRob3VnaDoKClRoZSBmaWxlIGlzIGEgbWVzcy4gRnVuY3Rpb25zIGFwcGVhciB3aXRob3V0 IGFueSBsb2dpY2FsIG9yZGVyLCBzbyB5b3UgCmVuZCB1cCBtYWtpbmcgZGVjbGFyYXRpb25zIHRo YXQgY291bGQgYmUgYXZvaWRlZCBpZiB0aGluZ3Mgd2VyZSBvcmRlcmVkIAphIGJpdCBiZXR0ZXIu IEZvciBpbnN0YW5jZSwgcG11X3JlYWRfbWVzc2FnZSgpIGlzIG9ubHkgdXNlZCBieSAKcG11X3By b2Nlc3NfbWVzc2FnZSgpLCBidXQgeW91IGhhdmUgMyBmdW5jdGlvbnMgYmV0d2VlbiB0aGVzZSB0 d28uIEEgCmxvZ2ljYWwgb3JkZXJpbmcgb2YgdGhlIGNvZGUgbWFrZXMgaXQgbXVjaCBlYXNpZXIg dG8gcmVhZDogImJ1aWxkaW5nIApibG9ja3MiIGZ1bmN0aW9ucyBmaXJzdCwgbW9yZSBjb21wbGV4 IGZ1bmN0aW9ucyBsYXRlci4gSWRlYWxseSB5b3Ugd291bGQgCmVuZCB1cCB3aXRoIGEgQyBmaWxl IHRoYXQgaGFzIG5vIGZvcndhcmQtZGVjbGFyYXRpb25zLgoKQWdhaW4sIHNvbWUgZnVuY3Rpb25z IGFyZSBhYnNvbHV0ZWx5IG5vdCB1c2VkLCBzb21ldGltZXMgaW4gd29ycnlpbmcgCndheXMuIEV4 YW1wbGVzIGFyZSBnazIwYV9wbXVfZGVzdHJveSBhbmQgZ2syMGFfcG11X2NyZWF0ZV8sIGJ1dCBJ IApzdXNwZWN0IHRoZXJlIGFyZSBvdGhlcnMuCgpGb3IgZ2syMGFfcG11X2NyZWF0ZV8sIEkgZG9u J3QgZXZlbiBrbm93IHdoeSBpdCBpcyBoZXJlIGluIHRoZSBmaXJzdCAKcGxhY2UuIEl0IHNlZW1z IGxpa2UgaXRzIGNvZGUgc2hvdWxkIGJlIGdrMjBhX3BtdV9jdG9yKCkgaW5zdGVhZCwgYW5kIGl0 IApzZXRzIGZ1bmN0aW9uIHBvaW50ZXJzIHRoYXQgYXJlIGFwcGFyZW50bHkgbmV2ZXIgY2FsbGVk IGJlY2F1c2UgdGhleSBhcmUgCnJlbWFpbmluZyBOVUxMIGFuZCB0aGluZ3Mgc2VlbSB0byBnbyBq dXN0IGZpbmU/CgpUaGlzIHBhdGNoIHNob3VsZCBkZWZpbml0ZWx5IGJlIHNwbGl0IGludG8gZGlm ZmVyZW50IGJpdHMgdG8gYWxsb3cgYSAKbW9yZSBwbGVhc2FudCByZXZpZXcuIFJpZ2h0IG5vdyBp dCBpcyBhbG1vc3QgaW1wb3NzaWJsZSB0byB1bmRlcnN0YW5kIAp3aGF0IGl0IGRvZXMuIFN1Z2dl c3Rpb24gZm9yIHNwbGl0dGluZzoKCjEpIEFkZCBmaXJtd2FyZSBsb2FkaW5nIGFiaWxpdHksIGJv b3RzdHJhcCBQTVUgKHNpbmNlIHRoZXNlIHR3byB0YXNrcyAKY2Fubm90IGJlIHNlcGFyYXRlZCBJ IGd1ZXNzKQoyKSBBZGQgbWVzc2FnZSByZWNlaXZpbmcvcG9zdGluZyBhYmlsaXR5CjMpIERlYnVn RlMgc3VwcG9ydAoKVGhpcyBzaG91bGQgYmUgYSBnb29kIGJlZ2lubmluZyB0byBtYWtlIHRoaW5n cyBtb3JlIHJlYWRhYmxlLiBUaGVyZSBhcmUgCm90aGVyIHRoaW5ncyB0byBjb21tZW50IG9uLCBi dXQgbGV0J3Mgc3RhcnQgd2l0aCB0aGlzLgoKS2VlcCBpbiBtaW5kIHRoYXQgdXBzdHJlYW1pbmcg aXMgbW9yZSB0aGFuIGp1c3QgdHJ5aW5nIHRvIG1ha2UgdGhlIApkb3duc3RyZWFtIGNvZGUgZml0 IGFzLWlzIGluIHRoZSB1cHN0cmVhbSBrZXJuZWwuIFlvdSBuZWVkIHRvIHJlc2hhcGUgCnRoaW5n cyB3aGVuIGl0IG1ha2VzIHNlbnNlLCBhbmQgcmVwbGFjZSBjdXN0b20tYnVpbHQgc29sdXRpb25z IHdpdGggdGhlIApvbmVzIHRoYXQgYWxyZWFkeSBleGlzdC4gQWxzbyBpbXBvcnRhbnQgaXMgdG8g bWFrZSBzdXJlIHlvdSB1bmNvdmVyIAp0aGluZ3MgaW4gYSBsb2dpY2FsIHdheSwgaW4gY2h1bmtz IGFzIHNtYWxsIGFzIHBvc3NpYmxlIHRvIHRoZSAKdW5mYW1pbGlhciByZWFkZXIgY2FuIHVuZGVy c3RhbmQgdGhlbSAoZm9yIHRoaXMgcGFydGljdWxhciBzZXJpZXMgSSAKZG9uJ3QgdGhpbmsgd2Ug Y2FuIGdvIHdpdGggbGVzcy10aGFuLTMwMC1saW5lcyBwYXRjaGVzIHRob3VnaCkuIEluIG90aGVy IAp3b3JkcywgaXQgaXMgb2sgdG8gc2VuZCBhIDMwMDAgbGluZXMgcGF0Y2ggc2VyaWVzLCBpZiBl dmVyeXRoaW5nIGFwcGVhcnMgCnByb2dyZXNzaXZlbHkgYW5kIGxvZ2ljYWxseS4gQSAzMDAwIGxp bmVzIHBhdGNoIGhvd2V2ZXIgaXMgbGlrZWx5IHRvIGJlIApmcm93biB1cG9uLgoKTG9va2luZyBm b3J3YXJkIHRvIHNlZWluZyB2MiBhbmQgaG9wZWZ1bGx5IGRpdmluZyBkZWVwZXIgaW50byB0aGlz IC0gCmdvb2QgbHVjayEKCkFsZXguCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2 ZWF1Cg==