From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 6/7] drm/i915: Use wait_until_reg macros Date: Wed, 18 May 2016 10:40:51 +0200 Message-ID: <20160518084051.GC27098@phenom.ffwll.local> References: <1463499808-3335-1-git-send-email-mika.kuoppala@intel.com> <1463499808-3335-7-git-send-email-mika.kuoppala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0DF1D6E568 for ; Wed, 18 May 2016 08:40:53 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id g17so4332863wme.2 for ; Wed, 18 May 2016 01:40:52 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1463499808-3335-7-git-send-email-mika.kuoppala@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kuoppala Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXkgMTcsIDIwMTYgYXQgMDY6NDM6MjdQTSArMDMwMCwgTWlrYSBLdW9wcGFsYSB3 cm90ZToKPiBVc2Ugd2FpdF91bnRpbF9yZWcgaW5zdGVhZCBvZiBnZW5lcmljIHdhaXRfZm9yIG1h Y3JvIG9uCj4gdGhlIHJlbGV2YW50IGNhbGxzaXRlcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNaWth IEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KClF1aWNrIG51bWJlcnMgb24gaG93 IG11Y2ggdGhpcyBzaHJpbmtzIG9iamVjdCBzaXplIHdvdWxkIGJlIG5lYXQuCgpJIGNoZWNrZWQg YWxsIHRoZSBjYWxsZXJzIGFuZCBkaWRuJ3Qgc3BvdCBhIG1peHVwLiBNaWdodCBoYXZlIGJlZW4K c29tZXRoaW5nIGNvY2NpIHdvdWxkIGhhdmUgYmVlbiBiZXR0ZXIgYXQsIGJ1dCB0aGVyZSdzIGEg ZmV3IGNhc2VzIHNvCndvdWxkIGJlIHNvbWUgd29yayB0byBnZXQgdGhlbSBhbGwuCgpSZXZpZXdl ZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8IDE5ICsrKysrKy0tLS0tLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICB8ICAyICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jICAgICAgICB8IDE1ICsrKysrKystLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgIHwgIDggKysrKy0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAzOCArKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYyAgICAgICAgIHwgIDYgKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw X21zdC5jICAgICB8ICAzICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21n ci5jICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyAgICAgICAg fCAxOSArKysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lf cGxsLmMgICAgfCAgNSArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAg ICAgICAgfCAgMyArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAg IHwgIDMgKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyAgICAgICB8ICA0 ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgIDYgKyst LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICB8IDE5ICsrKysr KysrKy0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8 IDEyICsrKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0u YyB8IDI1ICsrKysrKysrKysrKy0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc2lkZWJhbmQuYyAgIHwgMjAgKysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdW5jb3JlLmMgICAgIHwgIDYgKystLS0tCj4gIDE5IGZpbGVzIGNoYW5nZWQs IDEwMCBpbnNlcnRpb25zKCspLCAxMTUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4gaW5kZXggZGJhMDNjMDI2MTUxLi40YmQ0MGVmM2M5YjggMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKPiBAQCAtMTM1Nyw4ICsxMzU3LDYgQEAgaW50IHZsdl9mb3JjZV9nZnhf Y2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGZvcmNlX29uKQo+ ICAJdTMyIHZhbDsKPiAgCWludCBlcnI7Cj4gIAo+IC0jZGVmaW5lIENPTkQgKEk5MTVfUkVBRChW TFZfR1RMQ19TVVJWSVZBQklMSVRZX1JFRykgJiBWTFZfR0ZYX0NMS19TVEFUVVNfQklUKQo+IC0K PiAgCXZhbCA9IEk5MTVfUkVBRChWTFZfR1RMQ19TVVJWSVZBQklMSVRZX1JFRyk7Cj4gIAl2YWwg Jj0gflZMVl9HRlhfQ0xLX0ZPUkNFX09OX0JJVDsKPiAgCWlmIChmb3JjZV9vbikKPiBAQCAtMTM2 OCwxMyArMTM2NiwxMyBAQCBpbnQgdmx2X2ZvcmNlX2dmeF9jbG9jayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZm9yY2Vfb24pCj4gIAlpZiAoIWZvcmNlX29uKQo+ICAJ CXJldHVybiAwOwo+ICAKPiAtCWVyciA9IHdhaXRfZm9yKENPTkQsIDIwKTsKPiArCWVyciA9IHdh aXRfdW50aWxfcmVnX3NldChWTFZfR1RMQ19TVVJWSVZBQklMSVRZX1JFRywKPiArCQkJCSBWTFZf R0ZYX0NMS19TVEFUVVNfQklULCAyMCk7Cj4gIAlpZiAoZXJyKQo+ICAJCURSTV9FUlJPUigidGlt ZW91dCB3YWl0aW5nIGZvciBHRlggY2xvY2sgZm9yY2Utb24gKCUwOHgpXG4iLAo+ICAJCQkgIEk5 MTVfUkVBRChWTFZfR1RMQ19TVVJWSVZBQklMSVRZX1JFRykpOwo+ICAKPiAgCXJldHVybiBlcnI7 Cj4gLSN1bmRlZiBDT05ECj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgdmx2X2FsbG93X2d0X3dha2Uo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGFsbG93KQo+IEBAIC0xMzg5 LDEzICsxMzg3LDEyIEBAIHN0YXRpYyBpbnQgdmx2X2FsbG93X2d0X3dha2Uoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGFsbG93KQo+ICAJSTkxNV9XUklURShWTFZfR1RM Q19XQUtFX0NUUkwsIHZhbCk7Cj4gIAlQT1NUSU5HX1JFQUQoVkxWX0dUTENfV0FLRV9DVFJMKTsK PiAgCj4gLSNkZWZpbmUgQ09ORCAoISEoSTkxNV9SRUFEKFZMVl9HVExDX1BXX1NUQVRVUykgJiBW TFZfR1RMQ19BTExPV1dBS0VBQ0spID09IFwKPiAtCSAgICAgIGFsbG93KQo+IC0JZXJyID0gd2Fp dF9mb3IoQ09ORCwgMSk7Cj4gKwllcnIgPSB3YWl0X3VudGlsX3JlZyhWTFZfR1RMQ19QV19TVEFU VVMsCj4gKwkJCSAgICAgVkxWX0dUTENfQUxMT1dXQUtFQUNLLCBhbGxvdywgMSk7Cj4gIAlpZiAo ZXJyKQo+ICAJCURSTV9FUlJPUigidGltZW91dCBkaXNhYmxpbmcgR1Qgd2FraW5nXG4iKTsKPiAr Cj4gIAlyZXR1cm4gZXJyOwo+IC0jdW5kZWYgQ09ORAo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHZs dl93YWl0X2Zvcl9ndF93ZWxscyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g QEAgLTE0MDcsOSArMTQwNCw2IEBAIHN0YXRpYyBpbnQgdmx2X3dhaXRfZm9yX2d0X3dlbGxzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAltYXNrID0gVkxWX0dUTENf UFdfTUVESUFfU1RBVFVTX01BU0sgfCBWTFZfR1RMQ19QV19SRU5ERVJfU1RBVFVTX01BU0s7Cj4g IAl2YWwgPSB3YWl0X2Zvcl9vbiA/IG1hc2sgOiAwOwo+IC0jZGVmaW5lIENPTkQgKChJOTE1X1JF QUQoVkxWX0dUTENfUFdfU1RBVFVTKSAmIG1hc2spID09IHZhbCkKPiAtCWlmIChDT05EKQo+IC0J CXJldHVybiAwOwo+ICAKPiAgCURSTV9ERUJVR19LTVMoIndhaXRpbmcgZm9yIEdUIHdlbGxzIHRv IGdvICVzICglMDh4KVxuIiwKPiAgCQkgICAgICBvbm9mZih3YWl0X2Zvcl9vbiksCj4gQEAgLTE0 MTksMTMgKzE0MTMsMTIgQEAgc3RhdGljIGludCB2bHZfd2FpdF9mb3JfZ3Rfd2VsbHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICogUkM2IHRyYW5zaXRpb25pbmcgY2Fu IGJlIGRlbGF5ZWQgdXAgdG8gMiBtc2VjIChzZWUKPiAgCSAqIHZhbGxleXZpZXdfZW5hYmxlX3Jw cyksIHVzZSAzIG1zZWMgZm9yIHNhZmV0eS4KPiAgCSAqLwo+IC0JZXJyID0gd2FpdF9mb3IoQ09O RCwgMyk7Cj4gKwllcnIgPSB3YWl0X3VudGlsX3JlZyhWTFZfR1RMQ19QV19TVEFUVVMsIG1hc2ss IHZhbCwgMyk7Cj4gIAlpZiAoZXJyKQo+ICAJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZv ciBHVCB3ZWxscyB0byBnbyAlc1xuIiwKPiAgCQkJICBvbm9mZih3YWl0X2Zvcl9vbikpOwo+ICAK PiAgCXJldHVybiBlcnI7Cj4gLSN1bmRlZiBDT05ECj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHZs dl9jaGVja19ub19ndF9hY2Nlc3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDg2ZmJmNzIzZWNhNy4uNTM1NWQ1MjcyYWQx IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTIyMjIsNyArMjIyMiw3IEBAIGVu dW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAjZGVmaW5lIElWQl9GQkNfUlRfQkFTRQkJCV9N TUlPKDB4NzAyMCkKPiAgCj4gICNkZWZpbmUgSVBTX0NUTAkJX01NSU8oMHg0MzQwOCkKPiAtI2Rl ZmluZSAgIElQU19FTkFCTEUJKDEgPDwgMzEpCj4gKyNkZWZpbmUgICBJUFNfRU5BQkxFCSgxVUxM IDw8IDMxKQo+ICAKPiAgI2RlZmluZSBNU0dfRkJDX1JFTkRfU1RBVEUJX01NSU8oMHg1MDM4MCkK PiAgI2RlZmluZSAgIEZCQ19SRU5EX05VS0UJCSgxPDwyKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ny dC5jCj4gaW5kZXggM2ZiYjZmYzY2NDUxLi5jMWM2MTk1MDUzOTMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jcnQuYwo+IEBAIC0zMDEsOCArMzAxLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfaXJv bmxha2VfY3J0X2RldGVjdF9ob3RwbHVnKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Cj4gIAo+ICAJCUk5MTVfV1JJVEUoY3J0LT5hZHBhX3JlZywgYWRwYSk7Cj4gIAo+IC0JCWlmICh3 YWl0X2ZvcigoSTkxNV9SRUFEKGNydC0+YWRwYV9yZWcpICYgQURQQV9DUlRfSE9UUExVR19GT1JD RV9UUklHR0VSKSA9PSAwLAo+IC0JCQkgICAgIDEwMDApKQo+ICsJCWlmICh3YWl0X3VudGlsX3Jl Z19jbHIoY3J0LT5hZHBhX3JlZywKPiArCQkJCSAgICAgICBBRFBBX0NSVF9IT1RQTFVHX0ZPUkNF X1RSSUdHRVIsIDEwMDApKQo+ICAJCQlEUk1fREVCVUdfS01TKCJ0aW1lZCBvdXQgd2FpdGluZyBm b3IgRk9SQ0VfVFJJR0dFUiIpOwo+ICAKPiAgCQlpZiAodHVybl9vZmZfZGFjKSB7Cj4gQEAgLTMz OCw4ICszMzgsOSBAQCBzdGF0aWMgYm9vbCB2YWxsZXl2aWV3X2NydF9kZXRlY3RfaG90cGx1Zyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAKPiAgCUk5MTVfV1JJVEUoY3J0LT5h ZHBhX3JlZywgYWRwYSk7Cj4gIAo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoY3J0LT5hZHBh X3JlZykgJiBBRFBBX0NSVF9IT1RQTFVHX0ZPUkNFX1RSSUdHRVIpID09IDAsCj4gLQkJICAgICAx MDAwKSkgewo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX2NscihjcnQtPmFkcGFfcmVnLAo+ICsJCQkg ICAgICAgQURQQV9DUlRfSE9UUExVR19GT1JDRV9UUklHR0VSLAo+ICsJCQkgICAgICAgMTAwMCkp IHsKPiAgCQlEUk1fREVCVUdfS01TKCJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgRk9SQ0VfVFJJR0dF UiIpOwo+ICAJCUk5MTVfV1JJVEUoY3J0LT5hZHBhX3JlZywgc2F2ZV9hZHBhKTsKPiAgCX0KPiBA QCAtMzk0LDkgKzM5NSw5IEBAIHN0YXRpYyBib29sIGludGVsX2NydF9kZXRlY3RfaG90cGx1Zyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCQkJCSAgICAgIENSVF9IT1RQTFVH X0ZPUkNFX0RFVEVDVCwKPiAgCQkJCQkgICAgICBDUlRfSE9UUExVR19GT1JDRV9ERVRFQ1QpOwo+ ICAJCS8qIHdhaXQgZm9yIEZPUkNFX0RFVEVDVCB0byBnbyBvZmYgKi8KPiAtCQlpZiAod2FpdF9m b3IoKEk5MTVfUkVBRChQT1JUX0hPVFBMVUdfRU4pICYKPiAtCQkJICAgICAgQ1JUX0hPVFBMVUdf Rk9SQ0VfREVURUNUKSA9PSAwLAo+IC0JCQkgICAgIDEwMDApKQo+ICsJCWlmICh3YWl0X3VudGls X3JlZ19jbHIoUE9SVF9IT1RQTFVHX0VOLAo+ICsJCQkJICAgICAgIENSVF9IT1RQTFVHX0ZPUkNF X0RFVEVDVCwKPiArCQkJCSAgICAgICAxMDAwKSkKPiAgCQkJRFJNX0RFQlVHX0tNUygidGltZWQg b3V0IHdhaXRpbmcgZm9yIEZPUkNFX0RFVEVDVCB0byBnbyBvZmYiKTsKPiAgCX0KPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRleCBhNjJjNjBjNmZiMGIuLjcyMzRhZjkwZTBlNyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTE3ODMsNyArMTc4Myw3IEBAIHN0 YXRpYyB1MzIgYnJveHRvbl9nZXRfZ3JjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgZW51bSBkcGlvX3BoeSBwaHkpCj4gIHN0YXRpYyB2b2lkIGJyb3h0b25fcGh5X3dhaXRfZ3Jj X2RvbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICAgZW51 bSBkcGlvX3BoeSBwaHkpCj4gIHsKPiAtCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoQlhUX1BPUlRf UkVGX0RXMyhwaHkpKSAmIEdSQ19ET05FLCAxMCkpCj4gKwlpZiAod2FpdF91bnRpbF9yZWdfc2V0 KEJYVF9QT1JUX1JFRl9EVzMocGh5KSwgR1JDX0RPTkUsIDEwKSkKPiAgCQlEUk1fRVJST1IoInRp bWVvdXQgd2FpdGluZyBmb3IgUEhZJWQgR1JDXG4iLCBwaHkpOwo+ICB9Cj4gIAo+IEBAIC0xODI2 LDggKzE4MjYsOSBAQCBzdGF0aWMgdm9pZCBicm94dG9uX3BoeV9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCSAqIEhXIHRlYW0gY29uZmlybWVkIHRoYXQgdGhlIHRp bWUgdG8gcmVhY2ggcGh5cG93ZXJnb29kIHN0YXR1cyBpcwo+ICAJICogYW55d2hlcmUgYmV0d2Vl biA1MCB1cyBhbmQgMTAwdXMuCj4gIAkgKi8KPiAtCWlmICh3YWl0X2ZvcigoKEk5MTVfUkVBRChC WFRfUE9SVF9DTDFDTV9EVzAocGh5KSkgJgo+IC0JCShQSFlfUkVTRVJWRUQgfCBQSFlfUE9XRVJf R09PRCkpID09IFBIWV9QT1dFUl9HT09EKSwgMSkpIHsKPiArCWlmICh3YWl0X3VudGlsX3JlZyhC WFRfUE9SVF9DTDFDTV9EVzAocGh5KSwKPiArCQkJICAgKFBIWV9SRVNFUlZFRCB8IFBIWV9QT1dF Ul9HT09EKSwKPiArCQkJICAgUEhZX1BPV0VSX0dPT0QsIDEpKSB7Cj4gIAkJRFJNX0VSUk9SKCJ0 aW1lb3V0IGR1cmluZyBQSFklZCBwb3dlciBvblxuIiwgcGh5KTsKPiAgCX0KPiAgCj4gQEAgLTE4 OTksNiArMTkwMCw3IEBAIHN0YXRpYyB2b2lkIGJyb3h0b25fcGh5X2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCSAqIHRoZSBjb3JyZXNwb25kaW5nIGNhbGlicmF0 ZWQgdmFsdWUgZnJvbSBQSFkxLCBhbmQgZGlzYWJsZQo+ICAJCSAqIHRoZSBhdXRvbWF0aWMgY2Fs aWJyYXRpb24gb24gUEhZMC4KPiAgCQkgKi8KPiArCj4gIAkJYnJveHRvbl9waHlfd2FpdF9ncmNf ZG9uZShkZXZfcHJpdiwgRFBJT19QSFkxKTsKPiAgCj4gIAkJdmFsID0gZGV2X3ByaXYtPmJ4dF9w aHlfZ3JjID0gYnJveHRvbl9nZXRfZ3JjKGRldl9wcml2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPiBpbmRleCAwNWQ0YTJiMzY1ZjguLmI5NTUxOTY0MmU5NCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTExOCw4ICsxMTE4LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfd2FpdF9mb3JfcGlwZV9vZmYoc3RydWN0IGludGVsX2NydGMgKmNydGMp Cj4gIAkJaTkxNV9yZWdfdCByZWcgPSBQSVBFQ09ORihjcHVfdHJhbnNjb2Rlcik7Cj4gIAo+ICAJ CS8qIFdhaXQgZm9yIHRoZSBQaXBlIFN0YXRlIHRvIGdvIG9mZiAqLwo+IC0JCWlmICh3YWl0X2Zv cigoSTkxNV9SRUFEKHJlZykgJiBJOTY1X1BJUEVDT05GX0FDVElWRSkgPT0gMCwKPiAtCQkJICAg ICAxMDApKQo+ICsJCWlmICh3YWl0X3VudGlsX3JlZ19jbHIocmVnLCBJOTY1X1BJUEVDT05GX0FD VElWRSwgMTAwKSkKPiAgCQkJV0FSTigxLCAicGlwZV9vZmYgd2FpdCB0aW1lZCBvdXRcbiIpOwo+ ICAJfSBlbHNlIHsKPiAgCQkvKiBXYWl0IGZvciB0aGUgZGlzcGxheSBsaW5lIHRvIHNldHRsZSAq Lwo+IEBAIC0xNTM4LDcgKzE1MzcsNyBAQCBzdGF0aWMgdm9pZCBfdmx2X2VuYWJsZV9wbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlQT1NUSU5HX1JFQUQoRFBMTChwaXBlKSk7Cj4gIAl1 ZGVsYXkoMTUwKTsKPiAgCj4gLQlpZiAod2FpdF9mb3IoKChJOTE1X1JFQUQoRFBMTChwaXBlKSkg JiBEUExMX0xPQ0tfVkxWKSA9PSBEUExMX0xPQ0tfVkxWKSwgMSkpCj4gKwlpZiAod2FpdF91bnRp bF9yZWdfc2V0KERQTEwocGlwZSksIERQTExfTE9DS19WTFYsIDEpKQo+ICAJCURSTV9FUlJPUigi RFBMTCAlZCBmYWlsZWQgdG8gbG9ja1xuIiwgcGlwZSk7Cj4gIH0KPiAgCj4gQEAgLTE1ODcsNyAr MTU4Niw3IEBAIHN0YXRpYyB2b2lkIF9jaHZfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgCUk5MTVfV1JJVEUoRFBMTChwaXBlKSwgcGlwZV9jb25maWctPmRwbGxfaHdfc3Rh dGUuZHBsbCk7Cj4gIAo+ICAJLyogQ2hlY2sgUExMIGlzIGxvY2tlZCAqLwo+IC0JaWYgKHdhaXRf Zm9yKCgoSTkxNV9SRUFEKERQTEwocGlwZSkpICYgRFBMTF9MT0NLX1ZMVikgPT0gRFBMTF9MT0NL X1ZMViksIDEpKQo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX3NldChEUExMKHBpcGUpLCBEUExMX0xP Q0tfVkxWLCAxKSkKPiAgCQlEUk1fRVJST1IoIlBMTCAlZCBmYWlsZWQgdG8gbG9ja1xuIiwgcGlw ZSk7Cj4gIH0KPiAgCj4gQEAgLTE4MDcsNyArMTgwNiw3IEBAIHZvaWQgdmx2X3dhaXRfcG9ydF9y ZWFkeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJQlVHKCk7Cj4gIAl9 Cj4gIAo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoZHBsbF9yZWcpICYgcG9ydF9tYXNrKSA9 PSBleHBlY3RlZF9tYXNrLCAxMDAwKSkKPiArCWlmICh3YWl0X3VudGlsX3JlZyhkcGxsX3JlZywg cG9ydF9tYXNrLCBleHBlY3RlZF9tYXNrLCAxMDAwKSkKPiAgCQlXQVJOKDEsICJ0aW1lZCBvdXQg d2FpdGluZyBmb3IgcG9ydCAlYyByZWFkeTogZ290IDB4JXgsIGV4cGVjdGVkIDB4JXhcbiIsCj4g IAkJICAgICBwb3J0X25hbWUoZHBvcnQtPnBvcnQpLCBJOTE1X1JFQUQoZHBsbF9yZWcpICYgcG9y dF9tYXNrLCBleHBlY3RlZF9tYXNrKTsKPiAgfQo+IEBAIC0xODY1LDcgKzE4NjQsNyBAQCBzdGF0 aWMgdm9pZCBpcm9ubGFrZV9lbmFibGVfcGNoX3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJCXZhbCB8PSBUUkFOU19QUk9HUkVTU0lWRTsKPiAgCj4gIAlJ OTE1X1dSSVRFKHJlZywgdmFsIHwgVFJBTlNfRU5BQkxFKTsKPiAtCWlmICh3YWl0X2ZvcihJOTE1 X1JFQUQocmVnKSAmIFRSQU5TX1NUQVRFX0VOQUJMRSwgMTAwKSkKPiArCWlmICh3YWl0X3VudGls X3JlZ19zZXQocmVnLCBUUkFOU19TVEFURV9FTkFCTEUsIDEwMCkpCj4gIAkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gZW5hYmxlIHRyYW5zY29kZXIgJWNcbiIsIHBpcGVfbmFtZShwaXBlKSk7Cj4gIH0K PiAgCj4gQEAgLTE4OTMsNyArMTg5Miw3IEBAIHN0YXRpYyB2b2lkIGxwdF9lbmFibGVfcGNoX3Ry YW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXZhbCB8PSBU UkFOU19QUk9HUkVTU0lWRTsKPiAgCj4gIAlJOTE1X1dSSVRFKExQVF9UUkFOU0NPTkYsIHZhbCk7 Cj4gLQlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKExQVF9UUkFOU0NPTkYpICYgVFJBTlNfU1RBVEVf RU5BQkxFLCAxMDApKQo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX3NldChMUFRfVFJBTlNDT05GLCBU UkFOU19TVEFURV9FTkFCTEUsIDEwMCkpCj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxl IFBDSCB0cmFuc2NvZGVyXG4iKTsKPiAgfQo+ICAKPiBAQCAtMTkxNiw3ICsxOTE1LDcgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl2YWwgJj0gflRSQU5TX0VOQUJMRTsKPiAgCUk5MTVfV1JJ VEUocmVnLCB2YWwpOwo+ICAJLyogd2FpdCBmb3IgUENIIHRyYW5zY29kZXIgb2ZmLCB0cmFuc2Nv ZGVyIHN0YXRlICovCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChyZWcpICYgVFJBTlNfU1RB VEVfRU5BQkxFKSA9PSAwLCA1MCkpCj4gKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKHJlZywgVFJB TlNfU1RBVEVfRU5BQkxFLCA1MCkpCj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZGlzYWJsZSB0 cmFuc2NvZGVyICVjXG4iLCBwaXBlX25hbWUocGlwZSkpOwo+ICAKPiAgCWlmIChIQVNfUENIX0NQ VChkZXYpKSB7Cj4gQEAgLTE5MzYsNyArMTkzNSw3IEBAIHN0YXRpYyB2b2lkIGxwdF9kaXNhYmxl X3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXZh bCAmPSB+VFJBTlNfRU5BQkxFOwo+ICAJSTkxNV9XUklURShMUFRfVFJBTlNDT05GLCB2YWwpOwo+ ICAJLyogd2FpdCBmb3IgUENIIHRyYW5zY29kZXIgb2ZmLCB0cmFuc2NvZGVyIHN0YXRlICovCj4g LQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChMUFRfVFJBTlNDT05GKSAmIFRSQU5TX1NUQVRFX0VO QUJMRSkgPT0gMCwgNTApKQo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX2NscihMUFRfVFJBTlNDT05G LCBUUkFOU19TVEFURV9FTkFCTEUsIDUwKSkKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBkaXNh YmxlIFBDSCB0cmFuc2NvZGVyXG4iKTsKPiAgCj4gIAkvKiBXb3JrYXJvdW5kOiBjbGVhciB0aW1p bmcgb3ZlcnJpZGUgYml0LiAqLwo+IEBAIC00NDYxLDcgKzQ0NjAsNyBAQCB2b2lkIGhzd19kaXNh YmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCQlXQVJOX09OKHNhbmR5YnJpZGdl X3Bjb2RlX3dyaXRlKGRldl9wcml2LCBESVNQTEFZX0lQU19DT05UUk9MLCAwKSk7Cj4gIAkJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ICAJCS8qIHdhaXQgZm9yIHBjb2Rl IHRvIGZpbmlzaCBkaXNhYmxpbmcgSVBTLCB3aGljaCBtYXkgdGFrZSB1cCB0byA0Mm1zICovCj4g LQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoSVBTX0NUTCkgJiBJUFNfRU5BQkxFKSA9PSAwLCA0 MikpCj4gKwkJaWYgKHdhaXRfdW50aWxfcmVnX2NscihJUFNfQ1RMLCBJUFNfRU5BQkxFLCA0Mikp Cj4gIAkJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIElQUyBkaXNhYmxlXG4iKTsK PiAgCX0gZWxzZSB7Cj4gIAkJSTkxNV9XUklURShJUFNfQ1RMLCAwKTsKPiBAQCAtNTQxMSw4ICs1 NDEwLDcgQEAgc3RhdGljIHZvaWQgYnJveHRvbl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgY2RjbGspCj4gIAkgICAgY3VycmVudF9jZGNsayA9PSA2MjQw MDApIHsKPiAgCQlJOTE1X1dSSVRFKEJYVF9ERV9QTExfRU5BQkxFLCB+QlhUX0RFX1BMTF9QTExf RU5BQkxFKTsKPiAgCQkvKiBUaW1lb3V0IDIwMHVzICovCj4gLQkJaWYgKHdhaXRfZm9yKCEoSTkx NV9SRUFEKEJYVF9ERV9QTExfRU5BQkxFKSAmIEJYVF9ERV9QTExfTE9DSyksCj4gLQkJCSAgICAg MSkpCj4gKwkJaWYgKHdhaXRfdW50aWxfcmVnX2NscihCWFRfREVfUExMX0VOQUJMRSwgQlhUX0RF X1BMTF9MT0NLLCAxKSkKPiAgCQkJRFJNX0VSUk9SKCJ0aW1vdXQgd2FpdGluZyBmb3IgREUgUExM IHVubG9ja1xuIik7Cj4gIAl9Cj4gIAo+IEBAIC01NDI2LDcgKzU0MjQsNyBAQCBzdGF0aWMgdm9p ZCBicm94dG9uX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGlu dCBjZGNsaykKPiAgCj4gIAkJSTkxNV9XUklURShCWFRfREVfUExMX0VOQUJMRSwgQlhUX0RFX1BM TF9QTExfRU5BQkxFKTsKPiAgCQkvKiBUaW1lb3V0IDIwMHVzICovCj4gLQkJaWYgKHdhaXRfZm9y KEk5MTVfUkVBRChCWFRfREVfUExMX0VOQUJMRSkgJiBCWFRfREVfUExMX0xPQ0ssIDEpKQo+ICsJ CWlmICh3YWl0X3VudGlsX3JlZ19zZXQoQlhUX0RFX1BMTF9FTkFCTEUsIEJYVF9ERV9QTExfTE9D SywgMSkpCj4gIAkJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBERSBQTEwgbG9ja1xu Iik7Cj4gIAo+ICAJCXZhbCA9IGRpdmlkZXIgfCBza2xfY2RjbGtfZGVjaW1hbChjZGNsayk7Cj4g QEAgLTU1OTYsNyArNTU5NCw3IEBAIHNrbF9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgdmNvKQo+ICAKPiAgCUk5MTVfV1JJVEUoTENQTEwxX0NUTCwg STkxNV9SRUFEKExDUExMMV9DVEwpIHwgTENQTExfUExMX0VOQUJMRSk7Cj4gIAo+IC0JaWYgKHdh aXRfZm9yKEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9MT0NLLCA1KSkKPiArCWlm ICh3YWl0X3VudGlsX3JlZ19zZXQoTENQTEwxX0NUTCwgTENQTExfUExMX0xPQ0ssIDUpKQo+ICAJ CURSTV9FUlJPUigiRFBMTDAgbm90IGxvY2tlZFxuIik7Cj4gIH0KPiAgCj4gQEAgLTU2MDQsNyAr NTYwMiw3IEBAIHN0YXRpYyB2b2lkCj4gIHNrbF9kcGxsMF9kaXNhYmxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJSTkxNV9XUklURShMQ1BMTDFfQ1RMLCBJOTE1 X1JFQUQoTENQTEwxX0NUTCkgJiB+TENQTExfUExMX0VOQUJMRSk7Cj4gLQlpZiAod2FpdF9mb3Io IShJOTE1X1JFQUQoTENQTEwxX0NUTCkgJiBMQ1BMTF9QTExfTE9DSyksIDEpKQo+ICsJaWYgKHdh aXRfdW50aWxfcmVnX2NscihMQ1BMTDFfQ1RMLCBMQ1BMTF9QTExfTE9DSywgMSkpCj4gIAkJRFJN X0VSUk9SKCJDb3VsZG4ndCBkaXNhYmxlIERQTEwwXG4iKTsKPiAgfQo+ICAKPiBAQCAtOTQxNSw3 ICs5NDEzLDcgQEAgc3RhdGljIHZvaWQgaHN3X2Rpc2FibGVfbGNwbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJSTkxNV9XUklURShMQ1BMTF9DVEwsIHZhbCk7Cj4gIAlQ T1NUSU5HX1JFQUQoTENQTExfQ1RMKTsKPiAgCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChM Q1BMTF9DVEwpICYgTENQTExfUExMX0xPQ0spID09IDAsIDEpKQo+ICsJaWYgKHdhaXRfdW50aWxf cmVnX2NscihMQ1BMTF9DVEwsIExDUExMX1BMTF9MT0NLLCAxKSkKPiAgCQlEUk1fRVJST1IoIkxD UExMIHN0aWxsIGxvY2tlZFxuIik7Cj4gIAo+ICAJdmFsID0gaHN3X3JlYWRfZGNvbXAoZGV2X3By aXYpOwo+IEBAIC05NDcwLDcgKzk0NjgsNyBAQCBzdGF0aWMgdm9pZCBoc3dfcmVzdG9yZV9sY3Bs bChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAl2YWwgJj0gfkxDUExMX1BM TF9ESVNBQkxFOwo+ICAJSTkxNV9XUklURShMQ1BMTF9DVEwsIHZhbCk7Cj4gIAo+IC0JaWYgKHdh aXRfZm9yKEk5MTVfUkVBRChMQ1BMTF9DVEwpICYgTENQTExfUExMX0xPQ0ssIDUpKQo+ICsJaWYg KHdhaXRfdW50aWxfcmVnX3NldChMQ1BMTF9DVEwsIExDUExMX1BMTF9MT0NLLCA1KSkKPiAgCQlE Uk1fRVJST1IoIkxDUExMIG5vdCBsb2NrZWQgeWV0XG4iKTsKPiAgCj4gIAlpZiAodmFsICYgTENQ TExfQ0RfU09VUkNFX0ZDTEspIHsKPiBAQCAtOTYxOSw4ICs5NjE3LDcgQEAgc3RhdGljIHZvaWQg YnJvYWR3ZWxsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY2RjbGspCj4g IAl2YWwgfD0gTENQTExfQ0RfU09VUkNFX0ZDTEs7Cj4gIAlJOTE1X1dSSVRFKExDUExMX0NUTCwg dmFsKTsKPiAgCj4gLQlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKExDUExMX0NUTCkgJgo+IC0JCSAg ICAgTENQTExfQ0RfU09VUkNFX0ZDTEtfRE9ORSwgMSkpCj4gKwlpZiAod2FpdF91bnRpbF9yZWdf c2V0KExDUExMX0NUTCwgTENQTExfQ0RfU09VUkNFX0ZDTEtfRE9ORSwgMSkpCj4gIAkJRFJNX0VS Uk9SKCJTd2l0Y2hpbmcgdG8gRkNMSyBmYWlsZWRcbiIpOwo+ICAKPiAgCXZhbCA9IEk5MTVfUkVB RChMQ1BMTF9DVEwpOwo+IEBAIC05NjU0LDggKzk2NTEsNyBAQCBzdGF0aWMgdm9pZCBicm9hZHdl bGxfc2V0X2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjZGNsaykKPiAgCXZhbCAm PSB+TENQTExfQ0RfU09VUkNFX0ZDTEs7Cj4gIAlJOTE1X1dSSVRFKExDUExMX0NUTCwgdmFsKTsK PiAgCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChMQ1BMTF9DVEwpICYKPiAtCQkgICAgICBM Q1BMTF9DRF9TT1VSQ0VfRkNMS19ET05FKSA9PSAwLCAxKSkKPiArCWlmICh3YWl0X3VudGlsX3Jl Z19jbHIoTENQTExfQ1RMLCBMQ1BMTF9DRF9TT1VSQ0VfRkNMS19ET05FLCAxKSkKPiAgCQlEUk1f RVJST1IoIlN3aXRjaGluZyBiYWNrIHRvIExDUExMIGZhaWxlZFxuIik7Cj4gIAo+ICAJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBp bmRleCBiMTQ3NjFmNTg1ZTkuLmYzMmU1ZDBhOTcxZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+IEBAIC0xNjk5LDggKzE2OTksNyBAQCBzdGF0aWMgdm9pZCB3YWl0X3BhbmVsX3N0YXR1 cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQlJOTE1X1JFQUQocHBfc3RhdF9yZWcp LAo+ICAJCQlJOTE1X1JFQUQocHBfY3RybF9yZWcpKTsKPiAgCj4gLQlpZiAod2FpdF9mb3IoKEk5 MTVfUkVBRChwcF9zdGF0X3JlZykgJiBtYXNrKSA9PSB2YWx1ZSwKPiAtCQkgICAgIDUgKiBNU0VD X1BFUl9TRUMpKQo+ICsJaWYgKHdhaXRfdW50aWxfcmVnKHBwX3N0YXRfcmVnLCBtYXNrLCB2YWx1 ZSwgNSAqIE1TRUNfUEVSX1NFQykpCj4gIAkJRFJNX0VSUk9SKCJQYW5lbCBzdGF0dXMgdGltZW91 dDogc3RhdHVzICUwOHggY29udHJvbCAlMDh4XG4iLAo+ICAJCQkJSTkxNV9SRUFEKHBwX3N0YXRf cmVnKSwKPiAgCQkJCUk5MTVfUkVBRChwcF9jdHJsX3JlZykpOwo+IEBAIC0zMjUyLDggKzMyNTEs NyBAQCB2b2lkIGludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiAgCWlmIChwb3J0ID09IFBPUlRfQSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYg KHdhaXRfZm9yKChJOTE1X1JFQUQoRFBfVFBfU1RBVFVTKHBvcnQpKSAmIERQX1RQX1NUQVRVU19J RExFX0RPTkUpLAo+IC0JCSAgICAgMSkpCj4gKwlpZiAod2FpdF91bnRpbF9yZWdfc2V0KERQX1RQ X1NUQVRVUyhwb3J0KSwgRFBfVFBfU1RBVFVTX0lETEVfRE9ORSwgMSkpCj4gIAkJRFJNX0VSUk9S KCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgRFAgaWRsZSBwYXR0ZXJuc1xuIik7Cj4gIH0KPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiBpbmRleCA3YTM0MDkwY2VmMzQuLjhhMDY2 ZGQ2NzBjNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3Qu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gQEAgLTIxMyw4 ICsyMTMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tc3RfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCURSTV9ERUJVR19LTVMoIiVkXG4iLCBpbnRlbF9kcC0+ YWN0aXZlX21zdF9saW5rcyk7Cj4gIAo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoRFBfVFBf U1RBVFVTKHBvcnQpKSAmIERQX1RQX1NUQVRVU19BQ1RfU0VOVCksCj4gLQkJICAgICAxKSkKPiAr CWlmICh3YWl0X3VudGlsX3JlZ19zZXQoRFBfVFBfU1RBVFVTKHBvcnQpLCBEUF9UUF9TVEFUVVNf QUNUX1NFTlQsIDEpKQo+ICAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIEFDVCBz ZW50XG4iKTsKPiAgCj4gIAlyZXQgPSBkcm1fZHBfY2hlY2tfYWN0X3N0YXR1cygmaW50ZWxfZHAt Pm1zdF9tZ3IpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxs X21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IGluZGV4IGMy ODNiYTRiYWJlOC4uOTY5OWNiY2RlZjE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwbGxfbWdyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cGxsX21nci5jCj4gQEAgLTg1Myw3ICs4NTMsNyBAQCBzdGF0aWMgdm9pZCBza2xfZGRpX3BsbF9l bmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJSTkxNV9XUklURShy ZWdzW3BsbC0+aWRdLmN0bCwKPiAgCQkgICBJOTE1X1JFQUQocmVnc1twbGwtPmlkXS5jdGwpIHwg TENQTExfUExMX0VOQUJMRSk7Cj4gIAo+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChEUExMX1NU QVRVUykgJiBEUExMX0xPQ0socGxsLT5pZCksIDUpKQo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX3Nl dChEUExMX1NUQVRVUywgRFBMTF9MT0NLKHBsbC0+aWQpLCA1KSkKPiAgCQlEUk1fRVJST1IoIkRQ TEwgJWQgbm90IGxvY2tlZFxuIiwgcGxsLT5pZCk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHNpLmMKPiBpbmRleCA0MDA5NjE4YTViMzQuLjYwZDJmNzNkNjhkMiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RzaS5jCj4gQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgd2FpdF9m b3JfZHNpX2ZpZm9fZW1wdHkoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCBlbnVtIHBvcnQg cG9ydCkKPiAgCW1hc2sgPSBMUF9DVFJMX0ZJRk9fRU1QVFkgfCBIU19DVFJMX0ZJRk9fRU1QVFkg fAo+ICAJCUxQX0RBVEFfRklGT19FTVBUWSB8IEhTX0RBVEFfRklGT19FTVBUWTsKPiAgCj4gLQlp ZiAod2FpdF9mb3IoKEk5MTVfUkVBRChNSVBJX0dFTl9GSUZPX1NUQVQocG9ydCkpICYgbWFzaykg PT0gbWFzaywgMTAwKSkKPiArCWlmICh3YWl0X3VudGlsX3JlZyhNSVBJX0dFTl9GSUZPX1NUQVQo cG9ydCksIG1hc2ssIG1hc2ssIDEwMCkpCj4gIAkJRFJNX0VSUk9SKCJEUEkgRklGT3MgYXJlIG5v dCBlbXB0eVxuIik7Cj4gIH0KPiAgCj4gQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgc3NpemVf dCBpbnRlbF9kc2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPiAg CS8qIG5vdGU6IHRoaXMgaXMgbmV2ZXIgdHJ1ZSBmb3IgcmVhZHMgKi8KPiAgCWlmIChwYWNrZXQu cGF5bG9hZF9sZW5ndGgpIHsKPiAgCj4gLQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTUlQSV9H RU5fRklGT19TVEFUKHBvcnQpKSAmIGRhdGFfbWFzaykgPT0gMCwgNTApKQo+ICsJCWlmICh3YWl0 X3VudGlsX3JlZ19jbHIoTUlQSV9HRU5fRklGT19TVEFUKHBvcnQpLCBkYXRhX21hc2ssIDUwKSkK PiAgCQkJRFJNX0VSUk9SKCJUaW1lb3V0IHdhaXRpbmcgZm9yIEhTL0xQIERBVEEgRklGTyAhZnVs bFxuIik7Cj4gIAo+ICAJCXdyaXRlX2RhdGEoZGV2X3ByaXYsIGRhdGFfcmVnLCBwYWNrZXQucGF5 bG9hZCwKPiBAQCAtMTcwLDE2ICsxNzAsMTUgQEAgc3RhdGljIHNzaXplX3QgaW50ZWxfZHNpX2hv c3RfdHJhbnNmZXIoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCj4gIAkJSTkxNV9XUklURShN SVBJX0lOVFJfU1RBVChwb3J0KSwgR0VOX1JFQURfREFUQV9BVkFJTCk7Cj4gIAl9Cj4gIAo+IC0J aWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTUlQSV9HRU5fRklGT19TVEFUKHBvcnQpKSAmIGN0cmxf bWFzaykgPT0gMCwgNTApKSB7Cj4gKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKE1JUElfR0VOX0ZJ Rk9fU1RBVChwb3J0KSwgY3RybF9tYXNrLCA1MCkpCj4gIAkJRFJNX0VSUk9SKCJUaW1lb3V0IHdh aXRpbmcgZm9yIEhTL0xQIENUUkwgRklGTyAhZnVsbFxuIik7Cj4gLQl9Cj4gIAo+ICAJSTkxNV9X UklURShjdHJsX3JlZywgaGVhZGVyWzJdIDw8IDE2IHwgaGVhZGVyWzFdIDw8IDggfCBoZWFkZXJb MF0pOwo+ICAKPiAgCS8qIC0+cnhfbGVuIGlzIHNldCBvbmx5IGZvciByZWFkcyAqLwo+ICAJaWYg KG1zZy0+cnhfbGVuKSB7Cj4gLQkJZGF0YV9tYXNrID0gR0VOX1JFQURfREFUQV9BVkFJTDsKPiAt CQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChNSVBJX0lOVFJfU1RBVChwb3J0KSkgJiBkYXRhX21h c2spID09IGRhdGFfbWFzaywgNTApKQo+ICsJCWlmICh3YWl0X3VudGlsX3JlZ19zZXQoTUlQSV9J TlRSX1NUQVQocG9ydCksCj4gKwkJCQkgICAgICAgR0VOX1JFQURfREFUQV9BVkFJTCwgNTApKQo+ ICAJCQlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3IgcmVhZCBkYXRhLlxuIik7Cj4gIAo+ ICAJCXJlYWRfZGF0YShkZXZfcHJpdiwgZGF0YV9yZWcsIG1zZy0+cnhfYnVmLCBtc2ctPnJ4X2xl bik7Cj4gQEAgLTI1MSw3ICsyNTAsNiBAQCBzdGF0aWMgaW50IGRwaV9zZW5kX2NtZChzdHJ1Y3Qg aW50ZWxfZHNpICppbnRlbF9kc2ksIHUzMiBjbWQsIGJvb2wgaHMsCj4gIAlzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZHNpLT5iYXNlLmJhc2U7Cj4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXUzMiBtYXNrOwo+ICAKPiAgCS8qIFhYWDog cGlwZSwgaHMgKi8KPiAgCWlmIChocykKPiBAQCAtMjY4LDggKzI2Niw4IEBAIHN0YXRpYyBpbnQg ZHBpX3NlbmRfY21kKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgdTMyIGNtZCwgYm9vbCBo cywKPiAgCj4gIAlJOTE1X1dSSVRFKE1JUElfRFBJX0NPTlRST0wocG9ydCksIGNtZCk7Cj4gIAo+ IC0JbWFzayA9IFNQTF9QS1RfU0VOVF9JTlRFUlJVUFQ7Cj4gLQlpZiAod2FpdF9mb3IoKEk5MTVf UkVBRChNSVBJX0lOVFJfU1RBVChwb3J0KSkgJiBtYXNrKSA9PSBtYXNrLCAxMDApKQo+ICsJaWYg KHdhaXRfdW50aWxfcmVnX3NldChNSVBJX0lOVFJfU1RBVChwb3J0KSwgU1BMX1BLVF9TRU5UX0lO VEVSUlVQVCwKPiArCQkJICAgICAgIDEwMCkpCj4gIAkJRFJNX0VSUk9SKCJWaWRlbyBtb2RlIGNv bW1hbmQgMHglMDh4IHNlbmQgZmFpbGVkLlxuIiwgY21kKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiBA QCAtNjY3LDggKzY2NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9jbGVhcl9kZXZpY2VfcmVh ZHkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJLyogV2FpdCB0aWxsIENsb2Nr IGxhbmVzIGFyZSBpbiBMUC0wMCBzdGF0ZSBmb3IgTUlQSSBQb3J0IEEKPiAgCQkgKiBvbmx5LiBN SVBJIFBvcnQgQyBoYXMgbm8gc2ltaWxhciBiaXQgZm9yIGNoZWNraW5nCj4gIAkJICovCj4gLQkJ aWYgKHdhaXRfZm9yKCgoSTkxNV9SRUFEKHBvcnRfY3RybCkgJiBBRkVfTEFUQ0hPVVQpCj4gLQkJ CQkJCT09IDB4MDAwMDApLCAzMCkpCj4gKwkJaWYgKHdhaXRfdW50aWxfcmVnX2Nscihwb3J0X2N0 cmwsIEFGRV9MQVRDSE9VVCwgMzApKQo+ICAJCQlEUk1fRVJST1IoIkRTSSBMUCBub3QgZ29pbmcg TG93XG4iKTsKPiAgCj4gIAkJLyogRGlzYWJsZSBNSVBJIFBIWSB0cmFuc3BhcmVudCBsYXRjaCAq Lwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKPiBpbmRleCAxNzY1ZTZlMThmMmMu LjJmZWJhODM2ZWUzOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2lfcGxsLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKPiBA QCAtMjM0LDggKzIzNCw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9kaXNhYmxlX2RzaV9wbGwoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkgKiBQTEwgbG9jayBzaG91bGQgZGVhc3NlcnQg d2l0aGluIDIwMHVzLgo+ICAJICogV2FpdCB1cCB0byAxbXMgYmVmb3JlIHRpbWluZyBvdXQuCj4g IAkgKi8KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKEJYVF9EU0lfUExMX0VOQUJMRSkKPiAt CQkJCQkmIEJYVF9EU0lfUExMX0xPQ0tFRCkgPT0gMCwgMSkpCj4gKwlpZiAod2FpdF91bnRpbF9y ZWdfY2xyKEJYVF9EU0lfUExMX0VOQUJMRSwgQlhUX0RTSV9QTExfTE9DS0VELCAxKSkKPiAgCQlE Uk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3IgUExMIGxvY2sgZGVhc3NlcnRpb25cbiIpOwo+ ICB9Cj4gIAo+IEBAIC00ODYsNyArNDg1LDcgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9kc2lf cGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJSTkxNV9XUklURShCWFRfRFNJ X1BMTF9FTkFCTEUsIHZhbCk7Cj4gIAo+ICAJLyogVGltZW91dCBhbmQgZmFpbCBpZiBQTEwgbm90 IGxvY2tlZCAqLwo+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChCWFRfRFNJX1BMTF9FTkFCTEUp ICYgQlhUX0RTSV9QTExfTE9DS0VELCAxKSkgewo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX3NldChC WFRfRFNJX1BMTF9FTkFCTEUsIEJYVF9EU0lfUExMX0xPQ0tFRCwgMSkpIHsKPiAgCQlEUk1fRVJS T1IoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBEU0kgUExMIHRvIGxvY2tcbiIpOwo+ICAJCXJldHVy bjsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+IGluZGV4IDBkZWE1ZmJjZDhhYS4u MTljYTc5OWY0NzkzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zi Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtMTIzLDgg KzEyMyw3IEBAIHN0YXRpYyB2b2lkIGk4eHhfZmJjX2RlYWN0aXZhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJZmJjX2N0bCAmPSB+RkJDX0NUTF9FTjsKPiAgCUk5MTVf V1JJVEUoRkJDX0NPTlRST0wsIGZiY19jdGwpOwo+ICAKPiAtCS8qIFdhaXQgZm9yIGNvbXByZXNz aW5nIGJpdCB0byBjbGVhciAqLwo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoRkJDX1NUQVRV UykgJiBGQkNfU1RBVF9DT01QUkVTU0lORykgPT0gMCwgMTApKSB7Cj4gKwlpZiAod2FpdF91bnRp bF9yZWdfY2xyKEZCQ19TVEFUVVMsIEZCQ19TVEFUX0NPTVBSRVNTSU5HLCAxMCkpIHsKPiAgCQlE Uk1fREVCVUdfS01TKCJGQkMgaWRsZSB0aW1lZCBvdXRcbiIpOwo+ICAJCXJldHVybjsKPiAgCX0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGRiMTBjOTYxZTBmNC4uNjJhZTJlOTM4 MDg1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtOTExLDcgKzkxMSw4IEBA IHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX3N0b3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICAKPiAgCS8qIFRPRE86IElzIHRoaXMgY29ycmVjdCB3aXRoIEV4ZWNsaXN0cyBlbmFi bGVkPyAqLwo+ICAJSTkxNV9XUklURV9NT0RFKGVuZ2luZSwgX01BU0tFRF9CSVRfRU5BQkxFKFNU T1BfUklORykpOwo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQURfTU9ERShlbmdpbmUpICYgTU9E RV9JRExFKSAhPSAwLCAxMDAwKSkgewo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX3NldChSSU5HX01J X01PREUoZW5naW5lLT5tbWlvX2Jhc2UpLCBNT0RFX0lETEUsCj4gKwkJCSAgICAgICAxMDAwKSkg ewo+ICAJCURSTV9FUlJPUigiJXMgOnRpbWVkIG91dCB0cnlpbmcgdG8gc3RvcCByaW5nXG4iLCBl bmdpbmUtPm5hbWUpOwo+ICAJCXJldHVybjsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZk cy5jCj4gaW5kZXggZDY1ZmQ5NDU2MDdhLi44NzU0ZjhiZjVlMDAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHZkcy5jCj4gQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9l bmFibGVfbHZkcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCj4gIAlJOTE1X1dS SVRFKGN0bF9yZWcsIEk5MTVfUkVBRChjdGxfcmVnKSB8IFBPV0VSX1RBUkdFVF9PTik7Cj4gIAlQ T1NUSU5HX1JFQUQobHZkc19lbmNvZGVyLT5yZWcpOwo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JF QUQoc3RhdF9yZWcpICYgUFBfT04pICE9IDAsIDEwMDApKQo+ICsJaWYgKHdhaXRfdW50aWxfcmVn X3NldChzdGF0X3JlZywgUFBfT04sIDEwMDApKQo+ICAJCURSTV9FUlJPUigidGltZWQgb3V0IHdh aXRpbmcgZm9yIHBhbmVsIHRvIHBvd2VyIG9uXG4iKTsKPiAgCj4gIAlpbnRlbF9wYW5lbF9lbmFi bGVfYmFja2xpZ2h0KGludGVsX2Nvbm5lY3Rvcik7Cj4gQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2x2ZHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp Cj4gIAl9Cj4gIAo+ICAJSTkxNV9XUklURShjdGxfcmVnLCBJOTE1X1JFQUQoY3RsX3JlZykgJiB+ UE9XRVJfVEFSR0VUX09OKTsKPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKHN0YXRfcmVnKSAm IFBQX09OKSA9PSAwLCAxMDAwKSkKPiArCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoc3RhdF9yZWcs IFBQX09OLCAxMDAwKSkKPiAgCQlEUk1fRVJST1IoInRpbWVkIG91dCB3YWl0aW5nIGZvciBwYW5l bCB0byBwb3dlciBvZmZcbiIpOwo+ICAKPiAgCUk5MTVfV1JJVEUobHZkc19lbmNvZGVyLT5yZWcs IEk5MTVfUkVBRChsdmRzX2VuY29kZXItPnJlZykgJiB+TFZEU19QT1JUX0VOKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiBpbmRleCBhZGI2NDYzOGY1OTUuLmU3Mjg5MDIxMGE2ZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC03NDMxLDggKzc0MzEsNyBAQCBpbnQgc2FuZHli cmlkZ2VfcGNvZGVfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBt Ym94LCB1MzIgKnZhbAo+ICAJSTkxNV9XUklURShHRU42X1BDT0RFX0RBVEExLCAwKTsKPiAgCUk5 MTVfV1JJVEUoR0VONl9QQ09ERV9NQUlMQk9YLCBHRU42X1BDT0RFX1JFQURZIHwgbWJveCk7Cj4g IAo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoR0VONl9QQ09ERV9NQUlMQk9YKSAmIEdFTjZf UENPREVfUkVBRFkpID09IDAsCj4gLQkJICAgICA1MDApKSB7Cj4gKwlpZiAod2FpdF91bnRpbF9y ZWdfY2xyKEdFTjZfUENPREVfTUFJTEJPWCwgR0VONl9QQ09ERV9SRUFEWSwgNTAwKSkgewo+ICAJ CURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBwY29kZSByZWFkICglZCkgdG8gZmluaXNo XG4iLCBtYm94KTsKPiAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiAgCX0KPiBAQCAtNzQ1NSw4ICs3 NDU0LDcgQEAgaW50IHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIG1ib3gsIHUzMiB2YWwKPiAgCUk5MTVfV1JJVEUoR0VONl9QQ09E RV9EQVRBLCB2YWwpOwo+ICAJSTkxNV9XUklURShHRU42X1BDT0RFX01BSUxCT1gsIEdFTjZfUENP REVfUkVBRFkgfCBtYm94KTsKPiAgCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChHRU42X1BD T0RFX01BSUxCT1gpICYgR0VONl9QQ09ERV9SRUFEWSkgPT0gMCwKPiAtCQkgICAgIDUwMCkpIHsK PiArCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoR0VONl9QQ09ERV9NQUlMQk9YLCBHRU42X1BDT0RF X1JFQURZLCA1MDApKSB7Cj4gIAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIHBjb2Rl IHdyaXRlICglZCkgdG8gZmluaXNoXG4iLCBtYm94KTsKPiAgCQlyZXR1cm4gLUVUSU1FRE9VVDsK PiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+IGluZGV4IDkxMjMxMmI3OWVkYS4uYmIx YWIwZDEzZWU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBAQCAtNDc5LDggKzQ3 OSw4IEBAIHN0YXRpYyB2b2lkIHZsdl9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICAKPiAgCWlmIChkZXZfcHJpdi0+cHNyLmFjdGl2ZSkgewo+ICAJCS8qIFB1dCBWTFYg UFNSIGJhY2sgdG8gUFNSX3N0YXRlIDAgdGhhdCBpcyBQU1IgRGlzYWJsZWQuICovCj4gLQkJaWYg KHdhaXRfZm9yKChJOTE1X1JFQUQoVkxWX1BTUlNUQVQoaW50ZWxfY3J0Yy0+cGlwZSkpICYKPiAt CQkJICAgICAgVkxWX0VEUF9QU1JfSU5fVFJBTlMpID09IDAsIDEpKQo+ICsJCWlmICh3YWl0X3Vu dGlsX3JlZ19jbHIoVkxWX1BTUlNUQVQoaW50ZWxfY3J0Yy0+cGlwZSksCj4gKwkJCQkgICAgICAg VkxWX0VEUF9QU1JfSU5fVFJBTlMsIDEpKQo+ICAJCQlXQVJOKDEsICJQU1IgdHJhbnNpdGlvbiB0 b29rIGxvbmdlciB0aGFuIGV4cGVjdGVkXG4iKTsKPiAgCj4gIAkJdmFsID0gSTkxNV9SRUFEKFZM Vl9QU1JDVEwoaW50ZWxfY3J0Yy0+cGlwZSkpOwo+IEBAIC01MDYsOSArNTA2LDkgQEAgc3RhdGlj IHZvaWQgaHN3X3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJCSAg IEk5MTVfUkVBRChFRFBfUFNSX0NUTCkgJiB+RURQX1BTUl9FTkFCTEUpOwo+ICAKPiAgCQkvKiBX YWl0IHRpbGwgUFNSIGlzIGlkbGUgKi8KPiAtCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChFRFBf UFNSX1NUQVRVU19DVEwpICYKPiAtCQkJICAgICAgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykg PT0gMCwKPiAtCQkJICAgICAyICogTVNFQ19QRVJfU0VDKSkKPiArCQlpZiAod2FpdF91bnRpbF9y ZWcoRURQX1BTUl9TVEFUVVNfQ1RMLAo+ICsJCQkJICAgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFT SywgMCwKPiArCQkJCSAgIDIgKiBNU0VDX1BFUl9TRUMpKQo+ICAJCQlEUk1fRVJST1IoIlRpbWVk IG91dCB3YWl0aW5nIGZvciBQU1IgSWRsZSBTdGF0ZVxuIik7Cj4gIAo+ICAJCWRldl9wcml2LT5w c3IuYWN0aXZlID0gZmFsc2U7Cj4gQEAgLTU2MywxNSArNTYzLDE2IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgCSAqIFBTUiBtaWdodCB0 YWtlIHNvbWUgdGltZSB0byBnZXQgZnVsbHkgZGlzYWJsZWQKPiAgCSAqIGFuZCBiZSByZWFkeSBm b3IgcmUtZW5hYmxlLgo+ICAJICovCj4gKwo+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYpKSB7Cj4g LQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoRURQX1BTUl9TVEFUVVNfQ1RMKSAmCj4gLQkJCSAg ICAgIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0spID09IDAsIDUwKSkgewo+ICsJCWlmICh3YWl0 X3VudGlsX3JlZyhFRFBfUFNSX1NUQVRVU19DVEwsCj4gKwkJCQkgICBFRFBfUFNSX1NUQVRVU19T VEFURV9NQVNLLCAwLCA1MCkpIHsKPiAgCQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBm b3IgUFNSIElkbGUgZm9yIHJlLWVuYWJsZVxuIik7Cj4gIAkJCXJldHVybjsKPiAgCQl9Cj4gIAl9 IGVsc2Ugewo+IC0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFZMVl9QU1JTVEFUKHBpcGUpKSAm Cj4gLQkJCSAgICAgIFZMVl9FRFBfUFNSX0lOX1RSQU5TKSA9PSAwLCAxKSkgewo+ICsJCWlmICh3 YWl0X3VudGlsX3JlZ19jbHIoVkxWX1BTUlNUQVQocGlwZSksCj4gKwkJCQkgICAgICAgVkxWX0VE UF9QU1JfSU5fVFJBTlMsIDEpKSB7Cj4gIAkJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcg Zm9yIFBTUiBJZGxlIGZvciByZS1lbmFibGVcbiIpOwo+ICAJCQlyZXR1cm47Cj4gIAkJfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCA4ZDM1YTM5NzhmOWIu LjQ2NzAyNTk0ZjkzYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKPiBAQCAtNTE1LDggKzUxNSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jpbmdfc2V0dXBfc3Rh dHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCUk5MTVfV1JJVEUo cmVnLAo+ICAJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoSU5TVFBNX1RMQl9JTlZBTElEQVRFIHwK PiAgCQkJCQkgICAgICBJTlNUUE1fU1lOQ19GTFVTSCkpOwo+IC0JCWlmICh3YWl0X2ZvcigoSTkx NV9SRUFEKHJlZykgJiBJTlNUUE1fU1lOQ19GTFVTSCkgPT0gMCwKPiAtCQkJICAgICAxMDAwKSkK PiArCQlpZiAod2FpdF91bnRpbF9yZWdfY2xyKHJlZywgSU5TVFBNX1NZTkNfRkxVU0gsIDEwMDAp KQo+ICAJCQlEUk1fRVJST1IoIiVzOiB3YWl0IGZvciBTeW5jRmx1c2ggdG8gY29tcGxldGUgZm9y IFRMQiBpbnZhbGlkYXRpb24gdGltZWQgb3V0XG4iLAo+ICAJCQkJICBlbmdpbmUtPm5hbWUpOwo+ ICAJfQo+IEBAIC01MjgsNyArNTI3LDggQEAgc3RhdGljIGJvb2wgc3RvcF9yaW5nKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCj4gIAlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKSB7 Cj4gIAkJSTkxNV9XUklURV9NT0RFKGVuZ2luZSwgX01BU0tFRF9CSVRfRU5BQkxFKFNUT1BfUklO RykpOwo+IC0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURM RSkgIT0gMCwgMTAwMCkpIHsKPiArCQlpZiAod2FpdF91bnRpbF9yZWdfc2V0KFJJTkdfTUlfTU9E RShlbmdpbmUtPm1taW9fYmFzZSksCj4gKwkJCQkgICAgICAgTU9ERV9JRExFLCAxMDAwKSkgewo+ ICAJCQlEUk1fRVJST1IoIiVzIDogdGltZWQgb3V0IHRyeWluZyB0byBzdG9wIHJpbmdcbiIsCj4g IAkJCQkgIGVuZ2luZS0+bmFtZSk7Cj4gIAkJCS8qIFNvbWV0aW1lcyB3ZSBvYnNlcnZlIHRoYXQg dGhlIGlkbGUgZmxhZyBpcyBub3QKPiBAQCAtMjU0NSw5ICsyNTQ1LDkgQEAgc3RhdGljIHZvaWQg Z2VuNl9ic2RfcmluZ193cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAgCUk5MTVfV1JJVEU2NChHRU42X0JTRF9STkNJRCwgMHgwKTsKPiAgCj4gIAkvKiBXYWl0IGZv ciB0aGUgcmluZyBub3QgdG8gYmUgaWRsZSwgaS5lLiBmb3IgaXQgdG8gd2FrZSB1cC4gKi8KPiAt CWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKEdFTjZfQlNEX1NMRUVQX1BTTUlfQ09OVFJPTCkgJgo+ IC0JCSAgICAgIEdFTjZfQlNEX1NMRUVQX0lORElDQVRPUikgPT0gMCwKPiAtCQkgICAgIDUwKSkK PiArCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoR0VONl9CU0RfU0xFRVBfUFNNSV9DT05UUk9MLAo+ ICsJCQkgICAgICAgR0VONl9CU0RfU0xFRVBfSU5ESUNBVE9SLAo+ICsJCQkgICAgICAgNTApKQo+ ICAJCURSTV9FUlJPUigidGltZWQgb3V0IHdhaXRpbmcgZm9yIHRoZSBCU0QgcmluZyB0byB3YWtl IHVwXG4iKTsKPiAgCj4gIAkvKiBOb3cgdGhhdCB0aGUgcmluZyBpcyBmdWxseSBwb3dlcmVkIHVw LCB1cGRhdGUgdGhlIHRhaWwgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jCj4gaW5kZXggYjY5YjkzNTUxNmZiLi5hMTEzNDJjOWRkZDQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gQEAgLTM0NSw4ICszNDUsOCBAQCBzdGF0aWMg dm9pZCBoc3dfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAKPiAgCQlpZiAoIWlzX2VuYWJsZWQpIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiRW5hYmxp bmcgcG93ZXIgd2VsbFxuIik7Cj4gLQkJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKEhTV19QV1Jf V0VMTF9EUklWRVIpICYKPiAtCQkJCSAgICAgIEhTV19QV1JfV0VMTF9TVEFURV9FTkFCTEVEKSwg MjApKQo+ICsJCQlpZiAod2FpdF91bnRpbF9yZWdfc2V0KEhTV19QV1JfV0VMTF9EUklWRVIsCj4g KwkJCQkJICAgICAgIEhTV19QV1JfV0VMTF9TVEFURV9FTkFCTEVELCAyMCkpCj4gIAkJCQlEUk1f RVJST1IoIlRpbWVvdXQgZW5hYmxpbmcgcG93ZXIgd2VsbFxuIik7Cj4gIAkJCWhzd19wb3dlcl93 ZWxsX3Bvc3RfZW5hYmxlKGRldl9wcml2KTsKPiAgCQl9Cj4gQEAgLTY2OSw4ICs2NjksOCBAQCBz dGF0aWMgdm9pZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAKPiAgCXN3aXRjaCAocG93ZXJfd2VsbC0+ZGF0YSkgewo+ICAJY2FzZSBTS0xf RElTUF9QV18xOgo+IC0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNLTF9GVVNFX1NUQVRVUykg Jgo+IC0JCQlTS0xfRlVTRV9QRzBfRElTVF9TVEFUVVMpLCAxKSkgewo+ICsJCWlmICh3YWl0X3Vu dGlsX3JlZ19zZXQoU0tMX0ZVU0VfU1RBVFVTLAo+ICsJCQkJICAgICAgIFNLTF9GVVNFX1BHMF9E SVNUX1NUQVRVUywgMSkpIHsKPiAgCQkJRFJNX0VSUk9SKCJQRzAgbm90IGVuYWJsZWRcbiIpOwo+ ICAJCQlyZXR1cm47Cj4gIAkJfQo+IEBAIC03MzEsMTIgKzczMSwxMiBAQCBzdGF0aWMgdm9pZCBz a2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAK PiAgCWlmIChjaGVja19mdXNlX3N0YXR1cykgewo+ICAJCWlmIChwb3dlcl93ZWxsLT5kYXRhID09 IFNLTF9ESVNQX1BXXzEpIHsKPiAtCQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoU0tMX0ZVU0Vf U1RBVFVTKSAmCj4gLQkJCQlTS0xfRlVTRV9QRzFfRElTVF9TVEFUVVMpLCAxKSkKPiArCQkJaWYg KHdhaXRfdW50aWxfcmVnX3NldChTS0xfRlVTRV9TVEFUVVMsCj4gKwkJCQkJICAgICAgIFNLTF9G VVNFX1BHMV9ESVNUX1NUQVRVUywgMSkpCj4gIAkJCQlEUk1fRVJST1IoIlBHMSBkaXN0cmlidXRp bmcgc3RhdHVzIHRpbWVvdXRcbiIpOwo+ICAJCX0gZWxzZSBpZiAocG93ZXJfd2VsbC0+ZGF0YSA9 PSBTS0xfRElTUF9QV18yKSB7Cj4gLQkJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNLTF9GVVNF X1NUQVRVUykgJgo+IC0JCQkJU0tMX0ZVU0VfUEcyX0RJU1RfU1RBVFVTKSwgMSkpCj4gKwkJCWlm ICh3YWl0X3VudGlsX3JlZ19zZXQoU0tMX0ZVU0VfU1RBVFVTLAo+ICsJCQkJCSAgICAgICBTS0xf RlVTRV9QRzJfRElTVF9TVEFUVVMsIDEpKQo+ICAJCQkJRFJNX0VSUk9SKCJQRzIgZGlzdHJpYnV0 aW5nIHN0YXR1cyB0aW1lb3V0XG4iKTsKPiAgCQl9Cj4gIAl9Cj4gQEAgLTEwOTcsNyArMTA5Nyw2 IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9jaHZfcGh5X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAl1MzIgcGh5X2NvbnRyb2wgPSBkZXZfcHJpdi0+Y2h2X3BoeV9j b250cm9sOwo+ICAJdTMyIHBoeV9zdGF0dXMgPSAwOwo+ICAJdTMyIHBoeV9zdGF0dXNfbWFzayA9 IDB4ZmZmZmZmZmY7Cj4gLQl1MzIgdG1wOwo+ICAKPiAgCS8qCj4gIAkgKiBUaGUgQklPUyBjYW4g bGVhdmUgdGhlIFBIWSBpcyBzb21lIHdlaXJkIHN0YXRlCj4gQEAgLTExODUsMTAgKzExODQsMTQg QEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nodl9waHlfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCSAqIFRoZSBQSFkgbWF5IGJlIGJ1c3kgd2l0aCBzb21lIGluaXRp YWwgY2FsaWJyYXRpb24gYW5kIHdoYXRub3QsCj4gIAkgKiBzbyB0aGUgcG93ZXIgc3RhdGUgY2Fu IHRha2UgYSB3aGlsZSB0byBhY3R1YWxseSBjaGFuZ2UuCj4gIAkgKi8KPiAtCWlmICh3YWl0X2Zv cigodG1wID0gSTkxNV9SRUFEKERJU1BMQVlfUEhZX1NUQVRVUykgJiBwaHlfc3RhdHVzX21hc2sp ID09IHBoeV9zdGF0dXMsIDEwKSkKPiArCWlmICh3YWl0X3VudGlsX3JlZyhESVNQTEFZX1BIWV9T VEFUVVMsCj4gKwkJCSAgIHBoeV9zdGF0dXNfbWFzaywgcGh5X3N0YXR1cywgMTApKSB7Cj4gKwkJ dTMyIHRtcCA9IEk5MTVfUkVBRChESVNQTEFZX1BIWV9TVEFUVVMpOwo+ICsKPiAgCQlXQVJOKHBo eV9zdGF0dXMgIT0gdG1wLAo+ICAJCSAgICAgIlVuZXhwZWN0ZWQgUEhZX1NUQVRVUyAweCUwOHgs IGV4cGVjdGVkIDB4JTA4eCAoUEhZX0NPTlRST0w9MHglMDh4KVxuIiwKPiAgCQkgICAgIHRtcCwg cGh5X3N0YXR1cywgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7Cj4gKwl9Cj4gIH0KPiAgCj4g ICN1bmRlZiBCSVRTX1NFVAo+IEBAIC0xMjE2LDcgKzEyMTksNyBAQCBzdGF0aWMgdm9pZCBjaHZf ZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJdmx2X3NldF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsLCB0cnVlKTsK PiAgCj4gIAkvKiBQb2xsIGZvciBwaHlwd3Jnb29kIHNpZ25hbCAqLwo+IC0JaWYgKHdhaXRfZm9y KEk5MTVfUkVBRChESVNQTEFZX1BIWV9TVEFUVVMpICYgUEhZX1BPV0VSR09PRChwaHkpLCAxKSkK PiArCWlmICh3YWl0X3VudGlsX3JlZ19zZXQoRElTUExBWV9QSFlfU1RBVFVTLCBQSFlfUE9XRVJH T09EKHBoeSksIDEpKQo+ICAJCURSTV9FUlJPUigiRGlzcGxheSBQSFkgJWQgaXMgbm90IHBvd2Vy IHVwXG4iLCBwaHkpOwo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKPiBpbmRleCBjMzk5ODE4OGNmMzUuLjJi NWJiOWJhMTYwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRl YmFuZC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+IEBA IC01MSw3ICs1MSw3IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGRldmZuLAo+ICAKPiAgCVdBUk5fT04oIW11dGV4X2lz X2xvY2tlZCgmZGV2X3ByaXYtPnNiX2xvY2spKTsKPiAgCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVf UkVBRChWTFZfSU9TRl9ET09SQkVMTF9SRVEpICYgSU9TRl9TQl9CVVNZKSA9PSAwLCA1KSkgewo+ ICsJaWYgKHdhaXRfdW50aWxfcmVnX2NscihWTFZfSU9TRl9ET09SQkVMTF9SRVEsIElPU0ZfU0Jf QlVTWSwgNSkpIHsKPiAgCQlEUk1fREVCVUdfRFJJVkVSKCJJT1NGIHNpZGViYW5kIGlkbGUgd2Fp dCAoJXMpIHRpbWVkIG91dFxuIiwKPiAgCQkJCSBpc19yZWFkID8gInJlYWQiIDogIndyaXRlIik7 Cj4gIAkJcmV0dXJuIC1FQUdBSU47Cj4gQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGludCB2bHZf c2lkZWJhbmRfcncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgZGV2Zm4s Cj4gIAkJSTkxNV9XUklURShWTFZfSU9TRl9EQVRBLCAqdmFsKTsKPiAgCUk5MTVfV1JJVEUoVkxW X0lPU0ZfRE9PUkJFTExfUkVRLCBjbWQpOwo+ICAKPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KFZMVl9JT1NGX0RPT1JCRUxMX1JFUSkgJiBJT1NGX1NCX0JVU1kpID09IDAsIDUpKSB7Cj4gKwlp ZiAod2FpdF91bnRpbF9yZWdfY2xyKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgSU9TRl9TQl9CVVNZ LCA1KSkgewo+ICAJCURSTV9ERUJVR19EUklWRVIoIklPU0Ygc2lkZWJhbmQgZmluaXNoIHdhaXQg KCVzKSB0aW1lZCBvdXRcbiIsCj4gIAkJCQkgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwo+ ICAJCXJldHVybiAtRVRJTUVET1VUOwo+IEBAIC0yMDIsOCArMjAyLDcgQEAgdTMyIGludGVsX3Ni aV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywKPiAgCXUz MiB2YWx1ZSA9IDA7Cj4gIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5zYl9s b2NrKSk7Cj4gIAo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoU0JJX0NUTF9TVEFUKSAmIFNC SV9CVVNZKSA9PSAwLAo+IC0JCQkJMTAwKSkgewo+ICsJaWYgKHdhaXRfdW50aWxfcmVnX2NscihT QklfQ1RMX1NUQVQsIFNCSV9CVVNZLCAxMDApKSB7Cj4gIAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdh aXRpbmcgZm9yIFNCSSB0byBiZWNvbWUgcmVhZHlcbiIpOwo+ICAJCXJldHVybiAwOwo+ICAJfQo+ IEBAIC0yMTYsOCArMjE1LDkgQEAgdTMyIGludGVsX3NiaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywKPiAgCQl2YWx1ZSA9IFNCSV9DVExfREVTVF9NUEhZ IHwgU0JJX0NUTF9PUF9JT1JEOwo+ICAJSTkxNV9XUklURShTQklfQ1RMX1NUQVQsIHZhbHVlIHwg U0JJX0JVU1kpOwo+ICAKPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNCSV9DVExfU1RBVCkg JiAoU0JJX0JVU1kgfCBTQklfUkVTUE9OU0VfRkFJTCkpID09IDAsCj4gLQkJCQkxMDApKSB7Cj4g KwlpZiAod2FpdF91bnRpbF9yZWcoU0JJX0NUTF9TVEFULAo+ICsJCQkgICAoU0JJX0JVU1kgfCBT QklfUkVTUE9OU0VfRkFJTCksIDAsCj4gKwkJCSAgIDEwMCkpIHsKPiAgCQlEUk1fRVJST1IoInRp bWVvdXQgd2FpdGluZyBmb3IgU0JJIHRvIGNvbXBsZXRlIHJlYWQgdHJhbnNhY3Rpb25cbiIpOwo+ ICAJCXJldHVybiAwOwo+ICAJfQo+IEBAIC0yMzIsOCArMjMyLDcgQEAgdm9pZCBpbnRlbF9zYmlf d3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MTYgcmVnLCB1MzIgdmFs dWUsCj4gIAo+ICAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+c2JfbG9jaykp Owo+ICAKPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNCSV9DVExfU1RBVCkgJiBTQklfQlVT WSkgPT0gMCwKPiAtCQkJCTEwMCkpIHsKPiArCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoU0JJX0NU TF9TVEFULCBTQklfQlVTWSwgMTAwKSkgewo+ICAJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5n IGZvciBTQkkgdG8gYmVjb21lIHJlYWR5XG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gQEAgLTI0 Nyw4ICsyNDYsOSBAQCB2b2lkIGludGVsX3NiaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHUxNiByZWcsIHUzMiB2YWx1ZSwKPiAgCQl0bXAgPSBTQklfQ1RMX0RFU1Rf TVBIWSB8IFNCSV9DVExfT1BfSU9XUjsKPiAgCUk5MTVfV1JJVEUoU0JJX0NUTF9TVEFULCBTQklf QlVTWSB8IHRtcCk7Cj4gIAo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoU0JJX0NUTF9TVEFU KSAmIChTQklfQlVTWSB8IFNCSV9SRVNQT05TRV9GQUlMKSkgPT0gMCwKPiAtCQkJCTEwMCkpIHsK PiArCWlmICh3YWl0X3VudGlsX3JlZyhTQklfQ1RMX1NUQVQsCj4gKwkJCSAgIChTQklfQlVTWSB8 IFNCSV9SRVNQT05TRV9GQUlMKSwgMCwKPiArCQkJICAgMTAwKSkgewo+ICAJCURSTV9FUlJPUigi dGltZW91dCB3YWl0aW5nIGZvciBTQkkgdG8gY29tcGxldGUgd3JpdGUgdHJhbnNhY3Rpb25cbiIp Owo+ICAJCXJldHVybjsKPiAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGlu ZGV4IGUyMTc5OTdhOWZhMC4uZjcyNDIwZTAwNjIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMKPiBAQCAtMTUzMCwxNSArMTUzMCwxMyBAQCBzdGF0aWMgaW50IGlyb25sYWtl X2RvX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlJOTE1 X1dSSVRFKElMS19HRFNSLAo+ICAJCSAgIElMS19HUkRPTV9SRU5ERVIgfCBJTEtfR1JET01fUkVT RVRfRU5BQkxFKTsKPiAtCXJldCA9IHdhaXRfZm9yKChJOTE1X1JFQUQoSUxLX0dEU1IpICYKPiAt CQkJSUxLX0dSRE9NX1JFU0VUX0VOQUJMRSkgPT0gMCwgNTAwKTsKPiArCXJldCA9IHdhaXRfdW50 aWxfcmVnX2NscihJTEtfR0RTUiwgSUxLX0dSRE9NX1JFU0VUX0VOQUJMRSwgNTAwKTsKPiAgCWlm IChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAlJOTE1X1dSSVRFKElMS19HRFNSLAo+ICAJ CSAgIElMS19HUkRPTV9NRURJQSB8IElMS19HUkRPTV9SRVNFVF9FTkFCTEUpOwo+IC0JcmV0ID0g d2FpdF9mb3IoKEk5MTVfUkVBRChJTEtfR0RTUikgJgo+IC0JCQlJTEtfR1JET01fUkVTRVRfRU5B QkxFKSA9PSAwLCA1MDApOwo+ICsJcmV0ID0gd2FpdF91bnRpbF9yZWdfY2xyKElMS19HRFNSLCBJ TEtfR1JET01fUkVTRVRfRU5BQkxFLCA1MDApOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0 Owo+ICAKPiAtLSAKPiAyLjUuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=