From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v4] drm/i915: Fix port_clock and adjusted_mode.clock readout all over Date: Mon, 16 Sep 2013 14:16:44 +0300 Message-ID: <87r4cpdnj7.fsf@intel.com> References: <1378726461-15284-1-git-send-email-ville.syrjala@linux.intel.com> <1379077208-8154-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 0258EE70E0 for ; Mon, 16 Sep 2013 04:14:32 -0700 (PDT) In-Reply-To: <1379077208-8154-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAxMyBTZXAgMjAxMywgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3JvdGU6 Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K Pgo+IE5vdyB0aGF0IGFkanVzdGVkX21vZGUuY2xvY2sgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBw aXhlbF9tdWx0aXBsaWVyLCB3ZQo+IGNhbiBraWxsIHRoZSBnZXRfY2xvY2soKSBjYWxsYmFjayBh bmQgaW5zdGVhZCBkbyB0aGUgY2xvY2sgcmVhZG91dAo+IGluIGdldF9waXBlX2NvbmZpZygpLgo+ Cj4gQWxzbyBpOXh4X2NydGNfY2xvY2tfZ2V0KCkgY2FuIG5vdyBleHRyYWN0IHRoZSBmcmVxdWVu Y3kgb2YgdGhlIFBDSAo+IERQTEwsIHNvIHVzZSBpdCB0byBwb3B1bGF0ZSBwb3J0X2Nsb2NrIGFj Y3VyYXRlbHkgZm9yIFBDSCBlbmNvZGVycy4KPiBGb3IgRFAgaW4gcG9ydCBBIHRoZSBlbmNvZGVy IGlzIHN0aWxsIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nIGluCj4gcG9ydF9jbG9jay4gVGhlIEZE SSBhZGp1c3RlZF9tb2RlLmNsb2NrIGV4dHJhY3Rpb24gaXMga2VwdCBpbiBwbGFjZQo+IGZvciBz b21lIGV4dHJhIHNhbml0eSBjaGVja2luZywgYnV0IHdlIG5vIGxvbmdlciBuZWVkIHRvIHByZXRl bmQgaXQncwo+IGFsc28gdGhlIHBvcnRfY2xvY2suCj4KPiBJbiB0aGUgZW5jb2RlciBnZXRfY29u ZmlnKCkgZnVuY3Rpb25zIGZpbGwgb3V0IGFkanVzdGVkX21vZGUuY2xvY2sKPiBiYXNlZCBvbiBw b3J0X2Nsb2NrIGFuZCBvdGhlciBkZXRhaWxzIHN1Y2ggYXMgdGhlIERQIE0vTiB2YWx1ZXMsCj4g SERNSSAxMmJwYyBhbmQgU0RWTyBwaXhlbF9tdWx0aXBsaWVyLiBGb3IgUENIIGVuY29kZXJzIHdl IHdpbGwgdGhlbgo+IGRvIGFuIGV4dHJhIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIGRv dGNsb2NrIHdlIGRlcml2ZWQgZnJvbQo+IHRoZSBGREkgY29uZmlndXJhdGl1b24gbWF0Y2hlcyB0 aGUgb25lIHdlIGRlcml2ZSBmcm9tIHBvcnRfY2xvY2suCj4KPiBEVk8gZG9lc24ndCBleGlzdCBv biBQQ0ggcGxhdGZvcm1zLCBzbyBpdCBkb2Vzbid0IG5lZWQgdG8gYW55dGhpbmcKPiBidXQgYXNz aWduIGFkanVzdGVkX21vZGUuY2xvY2s9cG9ydF9jbG9jay4gQW5kIERESSBpcyBIU1cgb25seSwg c28KPiBub25lIG9mIHRoZSBjaGFuZ2VzIGFwcGx5IHRoZXJlLgo+Cj4gdjI6IFVzZSBoZG1pX3Jl ZyBjb2xvciBmb3JtYXQgdG8gZGV0ZWN0IDEyYnBjIEhETUkgY2FzZQo+IHYzOiBTZXQgYWRqdXN0 ZWRfbW9kZS5jbG9jayBmb3IgTFZEUyB0b28KPiB2NDogUmVuYW1lIGlyb25sYWtlX2NydGNfY2xv Y2tfZ2V0IHRvIGlyb25sYWtlX3BjaF9jbG9ja19nZXQsCj4gICAgIGVsaW1pbmF0ZSB0aGUgdXNl bGVzcyBsaW5rX2ZyZXEgdmFyaWFibGUuCj4KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rs w6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKRGFuaWVsLCBJIHRoaW5rIHRoZSBw YXRjaCBpcyByaWdodCwgYnV0IEkgZmVlbCBpdCBkZXNlcnZlcyBhbm90aGVyIHNldApvZiBleWVi YWxscy4KClJldmlld2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgoK Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAxIC0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgIDEgKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jcnQuYyAgICAgfCAgOCArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyB8IDc0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgfCAxMSArKysrKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDIgKwo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYyAgICAgfCAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkbWkuYyAgICB8IDExICsrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9sdmRzLmMgICAgfCAgOCArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nk dm8uYyAgICB8ICA4ICsrKysKPiAgMTAgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwg NDAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA3Y2FmNzFk Li44YjE2ZDQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTM3MSw3ICszNzEs NiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gIAkgKiBmaWxscyBvdXQgdGhl IHBpcGUtY29uZmlnIHdpdGggdGhlIGh3IHN0YXRlLiAqLwo+ICAJYm9vbCAoKmdldF9waXBlX2Nv bmZpZykoc3RydWN0IGludGVsX2NydGMgKiwKPiAgCQkJCXN0cnVjdCBpbnRlbF9jcnRjX2NvbmZp ZyAqKTsKPiAtCXZvaWQgKCpnZXRfY2xvY2spKHN0cnVjdCBpbnRlbF9jcnRjICosIHN0cnVjdCBp bnRlbF9jcnRjX2NvbmZpZyAqKTsKPiAgCWludCAoKmNydGNfbW9kZV9zZXQpKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAgCQkJICAgICBpbnQgeCwgaW50IHksCj4gIAkJCSAgICAgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqb2xkX2ZiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCBi Y2VlODliLi4zODRhZGZiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTIwNzEs NiArMjA3MSw3IEBACj4gIAo+ICAvKiBHZW4gNCBTRFZPL0hETUkgYml0czogKi8KPiAgI2RlZmlu ZSAgIFNEVk9fQ09MT1JfRk9STUFUXzhicGMJCSgwIDw8IDI2KQo+ICsjZGVmaW5lICAgU0RWT19D T0xPUl9GT1JNQVRfTUFTSwkJKDcgPDwgMjYpCj4gICNkZWZpbmUgICBTRFZPX0VOQ09ESU5HX1NE Vk8JCQkoMCA8PCAxMCkKPiAgI2RlZmluZSAgIFNEVk9fRU5DT0RJTkdfSERNSQkJCSgyIDw8IDEw KQo+ICAjZGVmaW5lICAgSERNSV9NT0RFX1NFTEVDVF9IRE1JCQkJKDEgPDwgOSkgLyogSERNSSBv bmx5ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBpbmRleCBmNWY4OWMzLi42ZjEwMWQ1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBAQCAtODksNiArODksNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jcnRfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuY29kZXItPmJhc2Uu ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29k ZXJfdG9fY3J0KGVuY29kZXIpOwo+ICAJdTMyIHRtcCwgZmxhZ3MgPSAwOwo+ICsJaW50IGRvdGNs b2NrOwo+ICAKPiAgCXRtcCA9IEk5MTVfUkVBRChjcnQtPmFkcGFfcmVnKTsKPiAgCj4gQEAgLTEw Myw2ICsxMDQsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0X2dldF9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7 Cj4gIAo+ICAJcGlwZV9jb25maWctPmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gKwo+ ICsJZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jazsKPiArCj4gKwlpZiAoSEFTX1BD SF9TUExJVChkZXZfcHJpdi0+ZGV2KSkKPiArCQlpcm9ubGFrZV9jaGVja19lbmNvZGVyX2RvdGNs b2NrKHBpcGVfY29uZmlnLCBkb3RjbG9jayk7Cj4gKwo+ICsJcGlwZV9jb25maWctPmFkanVzdGVk X21vZGUuY2xvY2sgPSBkb3RjbG9jazsKPiAgfQo+ICAKPiAgLyogTm90ZTogVGhlIGNhbGxlciBp cyByZXF1aXJlZCB0byBmaWx0ZXIgb3V0IGRwbXMgbW9kZXMgbm90IHN1cHBvcnRlZCBieSB0aGUK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZmVkMzgwNC4uNDJjN2Rj NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNDcsOCArNDcs OCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRj ICpjcnRjLCBib29sIG9uKTsKPiAgCj4gIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19jbG9ja19nZXQo c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19jb25maWcg KnBpcGVfY29uZmlnKTsKPiAtc3RhdGljIHZvaWQgaXJvbmxha2VfY3J0Y19jbG9ja19nZXQoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gLQkJCQkgICAgc3RydWN0IGludGVsX2NydGNfY29uZmln ICpwaXBlX2NvbmZpZyk7Cj4gK3N0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9jbG9ja19nZXQoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19jb25maWcg KnBpcGVfY29uZmlnKTsKPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxfc2V0X21vZGUoc3RydWN0IGRy bV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiAgCQkJICBpbnQg eCwgaW50IHksIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYik7Cj4gQEAgLTUwNDUsNiAr NTA0NSw4IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJCQkJCQkgICAgIERQTExfUE9SVEJfUkVBRFlfTUFTSyk7Cj4gIAl9Cj4g IAo+ICsJaTl4eF9jcnRjX2Nsb2NrX2dldChjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gKwo+ICAJcmV0 dXJuIHRydWU7Cj4gIH0KPiAgCj4gQEAgLTYwMDQsNiArNjAwNiw4IEBAIHN0YXRpYyBib29sIGly b25sYWtlX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlwaXBl X2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9Cj4gIAkJCSgodG1wICYgUExMX1JFRl9TRFZPX0hE TUlfTVVMVElQTElFUl9NQVNLKQo+ICAJCQkgPj4gUExMX1JFRl9TRFZPX0hETUlfTVVMVElQTElF Ul9TSElGVCkgKyAxOwo+ICsKPiArCQlpcm9ubGFrZV9wY2hfY2xvY2tfZ2V0KGNydGMsIHBpcGVf Y29uZmlnKTsKPiAgCX0gZWxzZSB7Cj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIg PSAxOwo+ICAJfQo+IEBAIC03NDExLDcgKzc0MTUsMTIgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRj X2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQlpOXh4X2Nsb2NrKHJlZmNs aywgJmNsb2NrKTsKPiAgCX0KPiAgCj4gLQlwaXBlX2NvbmZpZy0+YWRqdXN0ZWRfbW9kZS5jbG9j ayA9IGNsb2NrLmRvdDsKPiArCS8qCj4gKwkgKiBUaGlzIHZhbHVlIGluY2x1ZGVzIHBpeGVsX211 bHRpcGxpZXIuIFdlIHdpbGwgdXNlCj4gKwkgKiBwb3J0X2Nsb2NrIHRvIGNvbXB1dGUgYWRqdXN0 ZWRfbW9kZS5jbG9jayBpbiB0aGUKPiArCSAqIGVuY29kZXIncyBnZXRfY29uZmlnKCkgZnVuY3Rp b24uCj4gKwkgKi8KPiArCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gY2xvY2suZG90Owo+ICB9 Cj4gIAo+ICBpbnQgaW50ZWxfZG90Y2xvY2tfY2FsY3VsYXRlKGludCBsaW5rX2ZyZXEsCj4gQEAg LTc0MzMsMzEgKzc0NDIsMjMgQEAgaW50IGludGVsX2RvdGNsb2NrX2NhbGN1bGF0ZShpbnQgbGlu a19mcmVxLAo+ICAJcmV0dXJuIGRpdl91NjQoKHU2NCltX24tPmxpbmtfbSAqIGxpbmtfZnJlcSwg bV9uLT5saW5rX24pOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2Nsb2Nr X2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAtCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19jb25maWcgKnBpcGVfY29uZmlnKQo+ICtzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfY2xvY2tf Z2V0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJCQkJICAgc3RydWN0IGludGVsX2NydGNf Y29uZmlnICpwaXBlX2NvbmZpZykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmJhc2UuZGV2Owo+IC0JaW50IGxpbmtfZnJlcTsKPiArCj4gKwkvKiByZWFkIG91dCBwb3J0 X2Nsb2NrIGZyb20gdGhlIERQTEwgKi8KPiArCWk5eHhfY3J0Y19jbG9ja19nZXQoY3J0YywgcGlw ZV9jb25maWcpOwo+ICAKPiAgCS8qCj4gLQkgKiBXZSBuZWVkIHRvIGdldCB0aGUgRkRJIG9yIERQ IGxpbmsgY2xvY2sgaGVyZSB0byBkZXJpdmUKPiAtCSAqIHRoZSBNL04gZGl2aWRlcnMuCj4gLQkg Kgo+IC0JICogRm9yIEZESSwgd2UgcmVhZCBpdCBmcm9tIHRoZSBCSU9TIG9yIHVzZSBhIGZpeGVk IDIuN0dIei4KPiAtCSAqIEZvciBEUCwgaXQncyBlaXRoZXIgMS42MkdIeiBvciAyLjdHSHouCj4g LQkgKiBXZSBkbyBvdXIgY2FsY3VsYXRpb25zIGluIDEwKk1IeiBzaW5jZSB3ZSBkb24ndCBuZWVk IG11Y2ggcHJlY2lzb24uCj4gKwkgKiBUaGlzIHZhbHVlIGRvZXMgbm90IGluY2x1ZGUgcGl4ZWxf bXVsdGlwbGllci4KPiArCSAqIFdlIHdpbGwgY2hlY2sgdGhhdCBwb3J0X2Nsb2NrIGFuZCBhZGp1 c3RlZF9tb2RlLmNsb2NrCj4gKwkgKiBhZ3JlZSBvbmNlIHdlIGtub3cgdGhlaXIgcmVsYXRpb25z aGlwIGluIHRoZSBlbmNvZGVyJ3MKPiArCSAqIGdldF9jb25maWcoKSBmdW5jdGlvbi4KPiAgCSAq Lwo+IC0JaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKPiAtCQlsaW5rX2ZyZXEg PSBpbnRlbF9mZGlfbGlua19mcmVxKGRldikgKiAxMDAwMDsKPiAtCj4gLQkJcGlwZV9jb25maWct PmFkanVzdGVkX21vZGUuY2xvY2sgPQo+IC0JCQlpbnRlbF9kb3RjbG9ja19jYWxjdWxhdGUobGlu a19mcmVxLCAmcGlwZV9jb25maWctPmZkaV9tX24pOwo+IC0JfSBlbHNlIHsKPiAtCQlsaW5rX2Zy ZXEgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jazsKPiAtCj4gLQkJcGlwZV9jb25maWctPmFkanVz dGVkX21vZGUuY2xvY2sgPQo+IC0JCQlpbnRlbF9kb3RjbG9ja19jYWxjdWxhdGUobGlua19mcmVx LCAmcGlwZV9jb25maWctPmRwX21fbik7Cj4gLQl9Cj4gKwlwaXBlX2NvbmZpZy0+YWRqdXN0ZWRf bW9kZS5jbG9jayA9Cj4gKwkJaW50ZWxfZG90Y2xvY2tfY2FsY3VsYXRlKGludGVsX2ZkaV9saW5r X2ZyZXEoZGV2KSAqIDEwMDAwLAo+ICsJCQkJCSAmcGlwZV9jb25maWctPmZkaV9tX24pOwo+ICB9 Cj4gIAo+ICAvKiogUmV0dXJucyB0aGUgY3VycmVudGx5IHByb2dyYW1tZWQgbW9kZSBvZiB0aGUg Z2l2ZW4gcGlwZS4gKi8KPiBAQCAtODg3Myw5ICs4ODc0LDYgQEAgY2hlY2tfY3J0Y19zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkJZW5jb2Rlci0+Z2V0X2NvbmZpZyhlbmNvZGVy LCAmcGlwZV9jb25maWcpOwo+ICAJCX0KPiAgCj4gLQkJaWYgKGRldl9wcml2LT5kaXNwbGF5Lmdl dF9jbG9jaykKPiAtCQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Nsb2NrKGNydGMsICZwaXBlX2Nv bmZpZyk7Cj4gLQo+ICAJCVdBUk4oY3J0Yy0+YWN0aXZlICE9IGFjdGl2ZSwKPiAgCQkgICAgICJj cnRjIGFjdGl2ZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIHdpdGggaHcgc3RhdGUgIgo+ICAJCSAgICAg IihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBjcnRjLT5hY3RpdmUsIGFjdGl2ZSk7Cj4gQEAg LTg5NTAsNiArODk0OCwxOCBAQCBpbnRlbF9tb2Rlc2V0X2NoZWNrX3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIAljaGVja19zaGFyZWRfZHBsbF9zdGF0ZShkZXYpOwo+ICB9Cj4gIAo+ ICt2b2lkIGlyb25sYWtlX2NoZWNrX2VuY29kZXJfZG90Y2xvY2soY29uc3Qgc3RydWN0IGludGVs X2NydGNfY29uZmlnICpwaXBlX2NvbmZpZywKPiArCQkJCSAgICAgaW50IGRvdGNsb2NrKQo+ICt7 Cj4gKwkvKgo+ICsJICogRkRJIGFscmVhZHkgcHJvdmlkZWQgb25lIGlkZWEgZm9yIHRoZSBkb3Rj bG9jay4KPiArCSAqIFllbGwgaWYgdGhlIGVuY29kZXIgZGlzYWdyZWVzLgo+ICsJICovCj4gKwlX QVJOKCFpbnRlbF9mdXp6eV9jbG9ja19jaGVjayhwaXBlX2NvbmZpZy0+YWRqdXN0ZWRfbW9kZS5j bG9jaywgZG90Y2xvY2spLAo+ICsJICAgICAiRkRJIGRvdGNsb2NrIGFuZCBlbmNvZGVyIGRvdGNs b2NrIG1pc21hdGNoLCBmZGk6ICVpLCBlbmNvZGVyOiAlaVxuIiwKPiArCSAgICAgcGlwZV9jb25m aWctPmFkanVzdGVkX21vZGUuY2xvY2ssIGRvdGNsb2NrKTsKPiArfQo+ICsKPiAgc3RhdGljIGlu dCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICAJCQkgICAgaW50IHgsIGludCB5LCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYikKPiBAQCAtOTkwMSw3ICs5OTExLDYgQEAgc3RhdGljIHZvaWQg aW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYt PmRpc3BsYXkudXBkYXRlX3BsYW5lID0gaXJvbmxha2VfdXBkYXRlX3BsYW5lOwo+ICAJfSBlbHNl IGlmIChIQVNfUENIX1NQTElUKGRldikpIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlw ZV9jb25maWcgPSBpcm9ubGFrZV9nZXRfcGlwZV9jb25maWc7Cj4gLQkJZGV2X3ByaXYtPmRpc3Bs YXkuZ2V0X2Nsb2NrID0gaXJvbmxha2VfY3J0Y19jbG9ja19nZXQ7Cj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19tb2RlX3NldCA9IGlyb25sYWtlX2NydGNfbW9kZV9zZXQ7Cj4gIAkJZGV2X3By aXYtPmRpc3BsYXkuY3J0Y19lbmFibGUgPSBpcm9ubGFrZV9jcnRjX2VuYWJsZTsKPiAgCQlkZXZf cHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpcm9ubGFrZV9jcnRjX2Rpc2FibGU7Cj4gQEAg LTk5MDksNyArOTkxOCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wbGFuZSA9IGly b25sYWtlX3VwZGF0ZV9wbGFuZTsKPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7 Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnID0gaTl4eF9nZXRfcGlwZV9j b25maWc7Cj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Nsb2NrID0gaTl4eF9jcnRjX2Nsb2Nr X2dldDsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX21vZGVfc2V0ID0gaTl4eF9jcnRjX21v ZGVfc2V0Owo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZW5hYmxlID0gdmFsbGV5dmlld19j cnRjX2VuYWJsZTsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpOXh4X2Ny dGNfZGlzYWJsZTsKPiBAQCAtOTkxNyw3ICs5OTI1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5p dF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXku dXBkYXRlX3BsYW5lID0gaTl4eF91cGRhdGVfcGxhbmU7Cj4gIAl9IGVsc2Ugewo+ICAJCWRldl9w cml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyA9IGk5eHhfZ2V0X3BpcGVfY29uZmlnOwo+IC0J CWRldl9wcml2LT5kaXNwbGF5LmdldF9jbG9jayA9IGk5eHhfY3J0Y19jbG9ja19nZXQ7Cj4gIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19tb2RlX3NldCA9IGk5eHhfY3J0Y19tb2RlX3NldDsKPiAg CQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJsZSA9IGk5eHhfY3J0Y19lbmFibGU7Cj4gIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlID0gaTl4eF9jcnRjX2Rpc2FibGU7Cj4gQEAg LTEwNTM2LDE1ICsxMDU0Myw2IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkgICAgICBwaXBlKTsKPiAgCX0K PiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNf bGlzdCwKPiAtCQkJICAgIGJhc2UuaGVhZCkgewo+IC0JCWlmICghY3J0Yy0+YWN0aXZlKQo+IC0J CQljb250aW51ZTsKPiAtCQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Nsb2NrKQo+IC0JCQlk ZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2xvY2soY3J0YywKPiAtCQkJCQkJICAgICZjcnRjLT5jb25m aWcpOwo+IC0JfQo+IC0KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5t b2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwKPiAgCQkJICAgIGJhc2UuaGVhZCkgewo+ICAJCWlm IChjb25uZWN0b3ItPmdldF9od19zdGF0ZShjb25uZWN0b3IpKSB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCj4gaW5kZXggOWJhNjk3Yy4uYTdmYTZmZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+IEBAIC0xNDE3LDYgKzE0MTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWVudW0gcG9ydCBwb3J0ID0g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+ICAJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gKwlpbnQgZG90Y2xvY2s7 Cj4gIAo+ICAJaWYgKChwb3J0ID09IFBPUlRfQSkgfHwgIUhBU19QQ0hfQ1BUKGRldikpIHsKPiAg CQl0bXAgPSBJOTE1X1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOwo+IEBAIC0xNDQ4LDEyICsx NDQ5LDIwIEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAo+ICAJaW50ZWxfZHBfZ2V0X21fbihjcnRjLCBwaXBlX2NvbmZp Zyk7Cj4gIAo+IC0JaWYgKGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+cG9ydCA9PSBQT1JUX0Ep IHsKPiArCWlmIChwb3J0ID09IFBPUlRfQSkgewo+ICAJCWlmICgoSTkxNV9SRUFEKERQX0EpICYg RFBfUExMX0ZSRVFfTUFTSykgPT0gRFBfUExMX0ZSRVFfMTYwTUhaKQo+ICAJCQlwaXBlX2NvbmZp Zy0+cG9ydF9jbG9jayA9IDE2MjAwMDsKPiAgCQllbHNlCj4gIAkJCXBpcGVfY29uZmlnLT5wb3J0 X2Nsb2NrID0gMjcwMDAwOwo+ICAJfQo+ICsKPiArCWRvdGNsb2NrID0gaW50ZWxfZG90Y2xvY2tf Y2FsY3VsYXRlKHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ICsJCQkJCSAgICAmcGlwZV9jb25m aWctPmRwX21fbik7Cj4gKwo+ICsJaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYtPmRldikgJiYg cG9ydCAhPSBQT1JUX0EpCj4gKwkJaXJvbmxha2VfY2hlY2tfZW5jb2Rlcl9kb3RjbG9jayhwaXBl X2NvbmZpZywgZG90Y2xvY2spOwo+ICsKPiArCXBpcGVfY29uZmlnLT5hZGp1c3RlZF9tb2RlLmNs b2NrID0gZG90Y2xvY2s7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIGlzX2VkcF9wc3Ioc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDZi OTdhYzEuLjMzODIyMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC04MDcs NSArODA3LDcgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZHBfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19jb25maWcgKnBpcGVfY29uZmln KTsKPiAgZXh0ZXJuIGludCBpbnRlbF9kb3RjbG9ja19jYWxjdWxhdGUoaW50IGxpbmtfZnJlcSwK PiAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbik7Cj4gK2V4dGVybiB2 b2lkIGlyb25sYWtlX2NoZWNrX2VuY29kZXJfZG90Y2xvY2soY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfY29uZmlnICpwaXBlX2NvbmZpZywKPiArCQkJCQkgICAgaW50IGRvdGNsb2NrKTsKPiAgCj4g ICNlbmRpZiAvKiBfX0lOVEVMX0RSVl9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYwo+ IGluZGV4IDU1Y2VjMzguLmZmODZjMzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYwo+ IEBAIC0xNTMsNiArMTUzLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZHZvX2dldF9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19O VlNZTkM7Cj4gIAo+ICAJcGlwZV9jb25maWctPmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7 Cj4gKwo+ICsJcGlwZV9jb25maWctPmFkanVzdGVkX21vZGUuY2xvY2sgPSBwaXBlX2NvbmZpZy0+ cG9ydF9jbG9jazsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9kdm8oc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ IGluZGV4IDcwYzcxNmUuLjE3YjJkN2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5j Cj4gQEAgLTcxMyw2ICs3MTMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2dldF9jb25maWco c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50 ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuY29kZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgCXUzMiB0bXAsIGZsYWdzID0gMDsKPiArCWludCBkb3RjbG9jazsKPiAgCj4gIAl0bXAg PSBJOTE1X1JFQUQoaW50ZWxfaGRtaS0+aGRtaV9yZWcpOwo+ICAKPiBAQCAtNzI3LDYgKzcyOCwx NiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7Cj4gIAo+ICAJ cGlwZV9jb25maWctPmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gKwo+ICsJaWYgKCh0 bXAgJiBTRFZPX0NPTE9SX0ZPUk1BVF9NQVNLKSA9PSBIRE1JX0NPTE9SX0ZPUk1BVF8xMmJwYykK PiArCQlkb3RjbG9jayA9IHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrICogMiAvIDM7Cj4gKwllbHNl Cj4gKwkJZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jazsKPiArCj4gKwlpZiAoSEFT X1BDSF9TUExJVChkZXZfcHJpdi0+ZGV2KSkKPiArCQlpcm9ubGFrZV9jaGVja19lbmNvZGVyX2Rv dGNsb2NrKHBpcGVfY29uZmlnLCBkb3RjbG9jayk7Cj4gKwo+ICsJcGlwZV9jb25maWctPmFkanVz dGVkX21vZGUuY2xvY2sgPSBkb3RjbG9jazsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxf ZW5hYmxlX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2x2ZHMuYwo+IGluZGV4IDgzMWE1YzAuLjA1ZTU0ODUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHZkcy5jCj4gQEAgLTkyLDYgKzkyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbHZk c19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXUzMiBsdmRzX3JlZywgdG1w LCBmbGFncyA9IDA7Cj4gKwlpbnQgZG90Y2xvY2s7Cj4gIAo+ICAJaWYgKEhBU19QQ0hfU1BMSVQo ZGV2KSkKPiAgCQlsdmRzX3JlZyA9IFBDSF9MVkRTOwo+IEBAIC0xMTYsNiArMTE3LDEzIEBAIHN0 YXRpYyB2b2lkIGludGVsX2x2ZHNfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiAgCj4gIAkJcGlwZV9jb25maWctPmdtY2hfcGZpdC5jb250cm9sIHw9IHRtcCAmIFBB TkVMXzhUTzZfRElUSEVSX0VOQUJMRTsKPiAgCX0KPiArCj4gKwlkb3RjbG9jayA9IHBpcGVfY29u ZmlnLT5wb3J0X2Nsb2NrOwo+ICsKPiArCWlmIChIQVNfUENIX1NQTElUKGRldl9wcml2LT5kZXYp KQo+ICsJCWlyb25sYWtlX2NoZWNrX2VuY29kZXJfZG90Y2xvY2socGlwZV9jb25maWcsIGRvdGNs b2NrKTsKPiArCj4gKwlwaXBlX2NvbmZpZy0+YWRqdXN0ZWRfbW9kZS5jbG9jayA9IGRvdGNsb2Nr Owo+ICB9Cj4gIAo+ICAvKiBUaGUgTFZEUyBwaW4gcGFpciBuZWVkcyB0byBiZSBvbiBiZWZvcmUg dGhlIERQTExzIGFyZSBlbmFibGVkLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zZHZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMKPiBpbmRl eCBlYmZkNTEzLi45MWFlYTllIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nkdm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+IEBA IC0xMzI1LDYgKzEzMjUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX2dldF9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxf c2R2byA9IHRvX3Nkdm8oZW5jb2Rlcik7Cj4gIAlzdHJ1Y3QgaW50ZWxfc2R2b19kdGQgZHRkOwo+ ICAJaW50IGVuY29kZXJfcGl4ZWxfbXVsdGlwbGllciA9IDA7Cj4gKwlpbnQgZG90Y2xvY2s7Cj4g IAl1MzIgZmxhZ3MgPSAwLCBzZHZveDsKPiAgCXU4IHZhbDsKPiAgCWJvb2wgcmV0Owo+IEBAIC0x MzYzLDYgKzEzNjQsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19nZXRfY29uZmlnKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgPj4gU0RWT19QT1JUX01VTFRJUExZX1NI SUZUKSArIDE7Cj4gIAl9Cj4gIAo+ICsJZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9j ayAvIHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyOwo+ICsKPiArCWlmIChIQVNfUENIX1NQ TElUKGRldikpCj4gKwkJaXJvbmxha2VfY2hlY2tfZW5jb2Rlcl9kb3RjbG9jayhwaXBlX2NvbmZp ZywgZG90Y2xvY2spOwo+ICsKPiArCXBpcGVfY29uZmlnLT5hZGp1c3RlZF9tb2RlLmNsb2NrID0g ZG90Y2xvY2s7Cj4gKwo+ICAJLyogQ3Jvc3MgY2hlY2sgdGhlIHBvcnQgcGl4ZWwgbXVsdGlwbGll ciB3aXRoIHRoZSBzZHZvIGVuY29kZXIgc3RhdGUuICovCj4gIAlpZiAoaW50ZWxfc2R2b19nZXRf dmFsdWUoaW50ZWxfc2R2bywgU0RWT19DTURfR0VUX0NMT0NLX1JBVEVfTVVMVCwKPiAgCQkJCSAm dmFsLCAxKSkgewo+IC0tIAo+IDEuOC4xLjUKPgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVu IFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=