Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Tue, 9 Oct 2001 13:38:27 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Tue, 9 Oct 2001 13:38:14 -0400 Received: from cnxt10002.conexant.com ([198.62.10.2]:60838 "EHLO sophia-sousar3.nice.mindpseed.com") by vger.kernel.org with ESMTP id ; Tue, 9 Oct 2001 13:37:59 -0400 Date: Tue, 9 Oct 2001 21:34:24 +0200 (CEST) From: Rui Sousa X-X-Sender: To: Linus Torvalds cc: Alan Cox , , Subject: Emu10k1 driver update Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="17496956-450392075-1002656064=:12595" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --17496956-450392075-1002656064=:12595 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi, Attached a patch for the emu10k1 kernel driver against 2.4.11pre6. Changes: Mixer improvements. Fixed a dead lock in emu10k1_volxxx_irqhandler. Small code cleanup. The patch against 2.4.10-ac10 can be found at: ftp://opensource.creative.com/pub/dist/emu10k1-2.4.10-ac10-2.patch (it's basically the same except for the Configure.help file) Please apply, Rui Sousa --17496956-450392075-1002656064=:12595 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="emu10k1-2.4.11-pre6-1.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: emu10k1 patch Content-Disposition: attachment; filename="emu10k1-2.4.11-pre6-1.patch" ZGlmZiAtdXIgbGludXgtMi40LjExcHJlNi5vcmlnL0RvY3VtZW50YXRpb24v Q29uZmlndXJlLmhlbHAgbGludXgtMi40LjExcHJlNi5lbXUxMGsxL0RvY3Vt ZW50YXRpb24vQ29uZmlndXJlLmhlbHANCi0tLSBsaW51eC0yLjQuMTFwcmU2 Lm9yaWcvRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAlUdWUgT2N0ICA5 IDIwOjQ4OjU5IDIwMDENCisrKyBsaW51eC0yLjQuMTFwcmU2LmVtdTEwazEv RG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAlUdWUgT2N0ICA5IDIwOjUz OjM1IDIwMDENCkBAIC0xNTc1MiwyNSArMTU3NTIsMTggQEANCiBDcmVhdGl2 ZSBFTVUxMEsxIGJhc2VkIFBDSSBzb3VuZCBjYXJkcw0KIENPTkZJR19TT1VO RF9FTVUxMEsxDQogICBTYXkgWSBvciBNIGlmIHlvdSBoYXZlIGEgUENJIHNv dW5kIGNhcmQgdXNpbmcgdGhlIEVNVTEwSzEgY2hpcHNldCwNCi0gIHN1Y2gg YXMgdGhlIENyZWF0aXZlIFNCTGl2ZSEsIFNCIFBDSTUxMiBvciBFbXUtQVBT Lg0KKyAgc3VjaCBhcyB0aGUgdmFyaW91cyBDcmVhdGl2ZSBTQkxpdmUhLCBT QiBQQ0k1MTIgb3IgRW11LUFQUy4NCiANCi0gIEZvciBtb3JlIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBkZWdyZWUgb2Ygc3VwcG9ydCBmb3IgdGhlIGRpZmZl cmVudA0KLSAgY2FyZCBtb2RlbHMgcGxlYXNlIGNoZWNrOg0KLQ0KLSAgICAg ICBodHRwOi8vb3BlbnNvdXJjZS5jcmVhdGl2ZS5jb20NCisgIEZvciBtb3Jl IGluZm9ybWF0aW9uIG9uIHRoaXMgZHJpdmVyIGFuZCB0aGUgZGVncmVlIG9m IHN1cHBvcnQgZm9yIHRoZQ0KKyAgZGlmZmVyZW50IGNhcmQgbW9kZWxzIHBs ZWFzZSBjaGVjayA8aHR0cDovL29wZW5zb3VyY2UuY3JlYXRpdmUuY29tPi4N CiANCiAgIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBsb2FkIGRzcCBtaWNyb2Nv ZGUgcGF0Y2hlcyBpbnRvIHRoZSBFTVUxMEsxDQogICBjaGlwLiAgVGhlc2Ug cGF0Y2hlcyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgcmVhbCB0aW1lIHNvdW5k IHByb2Nlc3NpbmcNCi0gIGVmZmVjdHMgd2hpY2ggaW5jbHVkZSBmb3IgZXhh bXBsZTogc2lnbmFsIHJvdXRpbmcsIGJhc3MvdHJlYmxlIGNvbnRyb2wsDQot ICBBQzMgcGFzc3Rocm91Z2gsIC4uLg0KLSAgVXNlcnNwYWNlIHRvb2xzIHRv IGNyZWF0ZSBuZXcgcGF0Y2hlcyBhbmQgbG9hZC91bmxvYWQgdGhlbSBjYW4g YmUgZm91bmQNCi0gIGF0IHRoZSBhYm92ZSBsaW5rLiBZb3UgbmVlZCB0byBn ZXQgdGhlIHNvdXJjZSBzbmFwc2hvdCBhbmQgdGhlbiB0eXBlOg0KLQ0KLQkl IG1ha2UgdG9vbHMNCi0JJSBtYWtlIGluc3RhbGwtdG9vbHMNCi0NCi0gIGlu IHRoZSB0b3AgZGlyZWN0b3J5Lg0KLQ0KKyAgZWZmZWN0cyB3aGljaCBpbmNs dWRlIGZvciBleGFtcGxlOiBzaWduYWwgcm91dGluZywgYmFzcy90cmVibGUN CisgIGNvbnRyb2wsIEFDMyBwYXNzdGhyb3VnaCwgLi4uDQorICBVc2Vyc3Bh Y2UgdG9vbHMgdG8gY3JlYXRlIG5ldyBwYXRjaGVzIGFuZCBsb2FkL3VubG9h ZCB0aGVtIGNhbiBiZQ0KKyAgZm91bmQgYXQgPGh0dHA6Ly9vcGVuc291cmNl LmNyZWF0aXZlLmNvbS9kaXN0Lmh0bWw+Lg0KKyANCiBDcmVhdGl2ZSBFTVUx MEsxIE1JREkNCiBDT05GSUdfTUlESV9FTVUxMEsxDQogICBTYXkgWSBpZiB5 b3Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgT1NTIC9kZXYvc2VxdWVu Y2VyIGludGVyZmFjZS4NCmRpZmYgLXVyIGxpbnV4LTIuNC4xMXByZTYub3Jp Zy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvYXVkaW8uYyBsaW51eC0yLjQuMTFw cmU2LmVtdTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2F1ZGlvLmMNCi0t LSBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsx L2F1ZGlvLmMJVGh1IE9jdCAgNCAyMjo1Nzo1OCAyMDAxDQorKysgbGludXgt Mi40LjExcHJlNi5lbXUxMGsxL2RyaXZlcnMvc291bmQvZW11MTBrMS9hdWRp by5jCVR1ZSBPY3QgIDkgMjA6NTM6MzUgMjAwMQ0KQEAgLTQ5LDcgKzQ5LDYg QEANCiAjaW5jbHVkZSAiaXJxbWdyLmgiDQogI2luY2x1ZGUgImF1ZGlvLmgi DQogI2luY2x1ZGUgIjgwMTAuaCINCi0jaW5jbHVkZSAicGFzc3Rocm91Z2gu aCINCiANCiBzdGF0aWMgdm9pZCBjYWxjdWxhdGVfb2ZyYWcoc3RydWN0IHdv aW5zdCAqKTsNCiBzdGF0aWMgdm9pZCBjYWxjdWxhdGVfaWZyYWcoc3RydWN0 IHdpaW5zdCAqKTsNCkBAIC05ODQsNiArOTgzLDkgQEANCiAJdW5zaWduZWQg bG9uZyBwZ29mZjsNCiAJaW50IHJkLCB3cjsNCiANCisJRFBGKDQsICJlbXUx MGsxX21tX25vcGFnZSgpXG4iKTsNCisJRFBEKDQsICJhZGRyOiAlI2x4XG4i LCBhZGRyZXNzKTsNCisNCiAJaWYgKGFkZHJlc3MgPiB2bWEtPnZtX2VuZCkg ew0KIAkJRFBGKDIsICJFWElULCByZXR1cm5pbmcgTk9QQUdFX1NJR0JVU1xu Iik7DQogCQlyZXR1cm4gTk9QQUdFX1NJR0JVUzsgLyogRGlzYWxsb3cgbXJl bWFwICovDQpAQCAtMTAxMyw2ICsxMDE1LDggQEANCiAJfQ0KIA0KIAlnZXRf cGFnZSAoZG1hcGFnZSk7DQorDQorCURQRCg0LCAicGFnZTogJSNseFxuIiwg ZG1hcGFnZSk7DQogCXJldHVybiBkbWFwYWdlOw0KIH0NCiANCkBAIC0xMDIz LDE0ICsxMDI3LDE0IEBADQogc3RhdGljIGludCBlbXUxMGsxX2F1ZGlvX21t YXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKQ0KIHsNCiAJc3RydWN0IGVtdTEwazFfd2F2ZWRldmljZSAqd2F2ZV9k ZXYgPSAoc3RydWN0IGVtdTEwazFfd2F2ZWRldmljZSAqKSBmaWxlLT5wcml2 YXRlX2RhdGE7DQotCXVuc2lnbmVkIGxvbmcgbWF4c2l6ZSwgc2l6ZSwgb2Zm c2V0LCBwZ29mZnNldDsNCisJdW5zaWduZWQgbG9uZyBtYXhfcGFnZXMsIG5f cGFnZXMsIHBnb2Zmc2V0Ow0KIAlzdHJ1Y3Qgd29pbnN0ICp3b2luc3QgPSBO VUxMOw0KIAlzdHJ1Y3Qgd2lpbnN0ICp3aWluc3QgPSBOVUxMOw0KIAl1bnNp Z25lZCBsb25nIGZsYWdzOw0KIA0KIAlEUEYoMiwgImVtdTEwazFfYXVkaW9f bW1hcCgpXG4iKTsNCiANCi0JbWF4c2l6ZSA9IDA7DQorCW1heF9wYWdlcyA9 IDA7DQogCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpIHsNCiAJCXdv aW5zdCA9IHdhdmVfZGV2LT53b2luc3Q7DQogDQpAQCAtMTA1Myw3ICsxMDU3 LDcgQEANCiAJCX0NCiANCiAJCXdvaW5zdC0+bW1hcHBlZCA9IDE7DQotCQlt YXhzaXplICs9IHdvaW5zdC0+YnVmZmVyLnBhZ2VzICogUEFHRV9TSVpFOw0K KwkJbWF4X3BhZ2VzICs9IHdvaW5zdC0+YnVmZmVyLnBhZ2VzOw0KIAkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmd29pbnN0LT5sb2NrLCBmbGFncyk7DQog CX0NCiANCkBAIC0xMDcyLDIxICsxMDc2LDIzIEBADQogCQl9DQogDQogCQl3 aWluc3QtPm1tYXBwZWQgPSAxOw0KLQkJbWF4c2l6ZSArPSB3aWluc3QtPmJ1 ZmZlci5wYWdlcyAqIFBBR0VfU0laRTsNCisJCW1heF9wYWdlcyArPSB3aWlu c3QtPmJ1ZmZlci5wYWdlczsNCiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JndpaW5zdC0+bG9jaywgZmxhZ3MpOw0KIAl9DQogDQotCXNpemUgPSB2bWEt PnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQ7DQorCW5fcGFnZXMgPSAoKHZtYS0+ dm1fZW5kIC0gdm1hLT52bV9zdGFydCkgKyBQQUdFX1NJWkUgLSAxKSA+PiBQ QUdFX1NISUZUOw0KIAlwZ29mZnNldCA9IHZtYS0+dm1fcGdvZmY7DQotCW9m ZnNldCA9IHBnb2Zmc2V0IDw8IFBBR0VfU0hJRlQ7DQogDQotCWlmIChvZmZz ZXQgKyBzaXplID4gbWF4c2l6ZSkNCisJRFBEKDMsICJ2bWFfc3RhcnQ6ICUj bHgsIHZtYV9lbmQ6ICUjbHgsIHZtYV9vZmZzZXQ6ICVkXG4iLCB2bWEtPnZt X3N0YXJ0LCB2bWEtPnZtX2VuZCwgcGdvZmZzZXQpOw0KKwlEUEQoMywgIm5f cGFnZXM6ICVkLCBtYXhfcGFnZXM6ICVkXG4iLCBuX3BhZ2VzLCBtYXhfcGFn ZXMpOw0KKw0KKwlpZiAocGdvZmZzZXQgKyBuX3BhZ2VzID4gbWF4X3BhZ2Vz KQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQogDQogCXZtYS0+dm1fZmxhZ3MgfD0g Vk1fUkVTRVJWRUQ7DQogCXZtYS0+dm1fb3BzID0gJmVtdTEwazFfbW1fb3Bz Ow0KIAl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IHdhdmVfZGV2Ow0KLQkNCisN CiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTEyNDAsOSArMTI0NiwxMSBAQA0K IA0KIAkJc3Bpbl9sb2NrX2lycXNhdmUoJndvaW5zdC0+bG9jaywgZmxhZ3Mp Ow0KIA0KLQkJaWYgKHdvaW5zdC0+Zm9ybWF0LnBhc3N0aHJvdWdoICYmIGNh cmQtPnB0LnN0YXRlICE9IFBUX1NUQVRFX0lOQUNUSVZFKQ0KKwkJaWYgKHdv aW5zdC0+Zm9ybWF0LnBhc3N0aHJvdWdoICYmIGNhcmQtPnB0LnN0YXRlICE9 IFBUX1NUQVRFX0lOQUNUSVZFKSB7DQorCQkJc3Bpbl9sb2NrKCZjYXJkLT5w dC5sb2NrKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICBlbXUxMGsxX3B0 X3N0b3AoY2FyZCk7DQotDQorCQkJc3Bpbl91bmxvY2soJmNhcmQtPnB0Lmxv Y2spOw0KKwkJfQ0KIAkJaWYgKHdvaW5zdC0+c3RhdGUgJiBXQVZFX1NUQVRF X09QRU4pIHsNCiAJCQlpZiAod29pbnN0LT5zdGF0ZSAmIFdBVkVfU1RBVEVf U1RBUlRFRCkgew0KIAkJCQlpZiAoIShmaWxlLT5mX2ZsYWdzICYgT19OT05C TE9DSykpIHsNCkBAIC0xMjU5LDcgKzEyNjcsNyBAQA0KIAkJfQ0KIA0KIAkJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmd29pbnN0LT5sb2NrLCBmbGFncyk7 DQotCQkvKiB3YWl0IGZvciB0aGUgdGFza2xldCAoYm90dG9tLWhhbGYpIHRv IGZpbmlzaCAqLw0KKwkJLyogcmVtb3ZlIHRoZSB0YXNrbGV0ICovDQogCQl0 YXNrbGV0X2tpbGwoJndvaW5zdC0+dGltZXIudGFza2xldCk7DQogCQlrZnJl ZSh3YXZlX2Rldi0+d29pbnN0KTsNCiAJfQ0KQEAgLTE1MDUsOSArMTUxMywx MCBAQA0KIA0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ3aWluc3QtPmxv Y2ssIGZsYWdzKTsNCiANCi0JaWYgKGJ5dGVzdG9jb3B5ID49IHdpaW5zdC0+ YnVmZmVyLmZyYWdtZW50X3NpemUgJiYgd2FpdHF1ZXVlX2FjdGl2ZSgmd2lp bnN0LT53YWl0X3F1ZXVlKSkNCi0JCXdha2VfdXBfaW50ZXJydXB0aWJsZSgm d2lpbnN0LT53YWl0X3F1ZXVlKTsNCi0JZWxzZQ0KKwlpZiAoYnl0ZXN0b2Nv cHkgPj0gd2lpbnN0LT5idWZmZXIuZnJhZ21lbnRfc2l6ZSkgew0KKwkgCWlm ICh3YWl0cXVldWVfYWN0aXZlKCZ3aWluc3QtPndhaXRfcXVldWUpKQ0KKwkJ CXdha2VfdXBfaW50ZXJydXB0aWJsZSgmd2lpbnN0LT53YWl0X3F1ZXVlKTsN CisJfSBlbHNlDQogCQlEUEQoMywgIk5vdCBlbm91Z2ggdHJhbnNmZXIgc2l6 ZSwgJWRcbiIsIGJ5dGVzdG9jb3B5KTsNCiANCiAJcmV0dXJuOw0KQEAgLTE1 MzksOSArMTU0OCwxMCBAQA0KIAl9IGVsc2UNCiAJCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJndvaW5zdC0+bG9jaywgZmxhZ3MpOw0KIA0KLQlpZiAoYnl0 ZXN0b2NvcHkgPj0gd29pbnN0LT5idWZmZXIuZnJhZ21lbnRfc2l6ZSAmJiB3 YWl0cXVldWVfYWN0aXZlKCZ3b2luc3QtPndhaXRfcXVldWUpKQ0KLQkJd2Fr ZV91cF9pbnRlcnJ1cHRpYmxlKCZ3b2luc3QtPndhaXRfcXVldWUpOw0KLQll bHNlDQorCWlmIChieXRlc3RvY29weSA+PSB3b2luc3QtPmJ1ZmZlci5mcmFn bWVudF9zaXplKSB7DQorCQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmd29pbnN0 LT53YWl0X3F1ZXVlKSkNCisJCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJndv aW5zdC0+d2FpdF9xdWV1ZSk7DQorCX0gZWxzZQ0KIAkJRFBEKDMsICJOb3Qg ZW5vdWdoIHRyYW5zZmVyIHNpemUgLT4gJWRcbiIsIGJ5dGVzdG9jb3B5KTsN CiANCiAJcmV0dXJuOw0KZGlmZiAtdXIgbGludXgtMi40LjExcHJlNi5vcmln L2RyaXZlcnMvc291bmQvZW11MTBrMS9lZnhtZ3IuYyBsaW51eC0yLjQuMTFw cmU2LmVtdTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2VmeG1nci5jDQot LS0gbGludXgtMi40LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQvZW11MTBr MS9lZnhtZ3IuYwlTYXQgQXVnIDExIDA2OjAyOjE4IDIwMDENCisrKyBsaW51 eC0yLjQuMTFwcmU2LmVtdTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2Vm eG1nci5jCVR1ZSBPY3QgIDkgMjA6NTM6MzUgMjAwMQ0KQEAgLTEsNCArMSw0 IEBADQotLyogICAgIA0KKy8qDQogICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioNCiAgKiAgICAgZWZ4bWdyLmMNCiAgKiAgICAgQ29weXJpZ2h0IDE5OTks IDIwMDAgQ3JlYXRpdmUgTGFicywgSW5jLiANCkBAIC00OSw3ICs0OSw3IEBA DQogCQlnb3RvIG1hdGNoOw0KIAl9DQogDQotCWZvcihpID0gMDsgaSA8IG1n ci0+Y3VycmVudF9wYWdlcyAqIFBBVENIRVNfUEVSX1BBR0U7IGkrKykgew0K Kwlmb3IgKGkgPSAwOyBpIDwgbWdyLT5jdXJyZW50X3BhZ2VzICogUEFUQ0hF U19QRVJfUEFHRTsgaSsrKSB7DQogCQlwYXRjaCA9IFBBVENIKG1nciwgaSk7 DQogCQkJc3ByaW50ZihzLCIlcyIsIHBhdGNoLT5uYW1lKTsNCiANCkBAIC05 Nyw3NyArOTcsODEgQEANCiANCiAvL0FuIGludGVybmFsIGZ1bmN0aW9uIGZv ciBzZXR0aW5nIE9TUyBtaXhlciBjb250cm9scy4NCiB2b2lkIGVtdTEwazFf c2V0X29zc192b2woc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCwgaW50IG9z c19taXhlciwNCi0JCQkgdW5zaWduZWQgaW50IGxlZnQsIHVuc2lnbmVkIGlu dCByaWdodCl7DQotDQotCWV4dGVybiBzdHJ1Y3Qgb3NzX3NjYWxpbmcgdm9s dW1lX3BhcmFtc1tTT1VORF9NSVhFUl9OUkRFVklDRVNdOw0KKwkJCSB1bnNp Z25lZCBpbnQgbGVmdCwgdW5zaWduZWQgaW50IHJpZ2h0KQ0KK3sNCisJZXh0 ZXJuIGNoYXIgdm9sdW1lX3BhcmFtc1tTT1VORF9NSVhFUl9OUkRFVklDRVNd Ow0KIA0KIAljYXJkLT5hYzk3Lm1peGVyX3N0YXRlW29zc19taXhlcl0gPSAo cmlnaHQgPDwgOCkgfCBsZWZ0Ow0KIA0KIAlpZiAoIWNhcmQtPmlzYXBzKQ0K IAkJY2FyZC0+YWM5Ny53cml0ZV9taXhlcigmY2FyZC0+YWM5Nywgb3NzX21p eGVyLCBsZWZ0LCByaWdodCk7DQotDQogCQ0KIAllbXUxMGsxX3NldF92b2x1 bWVfZ3ByKGNhcmQsIGNhcmQtPm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzBd LCBsZWZ0LA0KLQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW29zc19taXhlcl0u c2NhbGUsDQotCQkJICAgICAgIHZvbHVtZV9wYXJhbXNbb3NzX21peGVyXS5t dXRpbmcpOw0KLQllbXUxMGsxX3NldF92b2x1bWVfZ3ByKGNhcmQsIGNhcmQt Pm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzFdLCByaWdodCwNCi0JCQkgICAg ICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJdLnNjYWxlLA0KLQkJCSAgICAg ICB2b2x1bWVfcGFyYW1zW29zc19taXhlcl0ubXV0aW5nKTsNCisJCQkgICAg ICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJdKTsNCiANCisJZW11MTBrMV9z ZXRfdm9sdW1lX2dwcihjYXJkLCBjYXJkLT5tZ3IuY3RybF9ncHJbb3NzX21p eGVyXVsxXSwgcmlnaHQsDQorCQkJICAgICAgIHZvbHVtZV9wYXJhbXNbb3Nz X21peGVyXSk7DQogfQ0KIA0KLQ0KIC8vRklYTUU6IG11dGUgc2hvdWxkIHVu bXV0ZSB3aGVuIHByZXNzZWQgYSBzZWNvbmQgdGltZQ0KIHZvaWQgZW11MTBr MV9tdXRlX2lycWhhbmRsZXIoc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCkN CiB7DQotCXN0cnVjdCBwYXRjaF9tYW5hZ2VyICptZ3IgPSAmY2FyZC0+bWdy Ow0KLQl1bnNpZ25lZCBsb25nICBmbGFnczsNCisJaW50IG9zc19jaGFubmVs ID0gVk9MQ1RSTF9DSEFOTkVMOw0KKwlpbnQgbGVmdCwgcmlnaHQ7DQorCXN0 YXRpYyBpbnQgdmFsID0gMDsNCisNCisJaWYgKHZhbCkgew0KKwkJbGVmdCA9 IHZhbCAmIDB4ZmY7DQorCQlyaWdodCA9ICh2YWwgPj4gOCkgJiAweGZmOw0K KwkJdmFsID0gMDsNCisJfSBlbHNlIHsNCisJCXZhbCA9IGNhcmQtPmFjOTcu bWl4ZXJfc3RhdGVbb3NzX2NoYW5uZWxdOw0KKwkJbGVmdCA9IDA7DQorCQly aWdodCA9IDA7DQorCX0NCiANCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJm1nci0+ bG9jaywgZmxhZ3MpOw0KLQllbXUxMGsxX3NldF9vc3Nfdm9sKGNhcmQsVk9M Q1RSTF9DSEFOTkVMLDAsMCk7DQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo Jm1nci0+bG9jaywgZmxhZ3MpOw0KKwllbXUxMGsxX3NldF9vc3Nfdm9sKGNh cmQsIG9zc19jaGFubmVsLCBsZWZ0LCByaWdodCk7DQogfQ0KIA0KIHZvaWQg ZW11MTBrMV92b2xpbmNyX2lycWhhbmRsZXIoc3RydWN0IGVtdTEwazFfY2Fy ZCAqY2FyZCkNCiB7DQotCXN0cnVjdCBwYXRjaF9tYW5hZ2VyICptZ3IgPSAm Y2FyZC0+bWdyOw0KLQl1bnNpZ25lZCBsb25nICBmbGFnczsNCi0JdW5zaWdu ZWQgaW50IG9zc19jaGFubmVsPVZPTENUUkxfQ0hBTk5FTCwgbGVmdD0wLHJp Z2h0PTA7DQorCWludCBvc3NfY2hhbm5lbCA9IFZPTENUUkxfQ0hBTk5FTDsN CisJaW50IGxlZnQsIHJpZ2h0Ow0KIA0KLQlzcGluX2xvY2tfaXJxc2F2ZSgm bWdyLT5sb2NrLCBmbGFncyk7DQogCWxlZnQgPSBjYXJkLT5hYzk3Lm1peGVy X3N0YXRlW29zc19jaGFubmVsXSAmIDB4ZmY7DQogCXJpZ2h0ID0gKGNhcmQt PmFjOTcubWl4ZXJfc3RhdGVbb3NzX2NoYW5uZWxdID4+IDgpICYgMHhmZjsN CiANCi0JaWYoKGxlZnQrPVZPTENUUkxfU1RFUF9TSVpFICk+MTAwKQ0KLQkJ bGVmdD0xMDA7DQotCWlmKChyaWdodCs9Vk9MQ1RSTF9TVEVQX1NJWkUgKT4x MDApDQotCQlyaWdodD0xMDA7DQotCWVtdTEwazFfc2V0X29zc192b2woY2Fy ZCxvc3NfY2hhbm5lbCxsZWZ0LHJpZ2h0KTsNCi0Jc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmbWdyLT5sb2NrLCBmbGFncyk7CQ0KKwlpZiAoKGxlZnQgKz0g Vk9MQ1RSTF9TVEVQX1NJWkUpID4gMTAwKQ0KKwkJbGVmdCA9IDEwMDsNCisN CisJaWYgKChyaWdodCArPSBWT0xDVFJMX1NURVBfU0laRSkgPiAxMDApDQor CQlyaWdodCA9IDEwMDsNCisNCisJZW11MTBrMV9zZXRfb3NzX3ZvbChjYXJk LCBvc3NfY2hhbm5lbCwgbGVmdCwgcmlnaHQpOw0KIH0NCisNCiB2b2lkIGVt dTEwazFfdm9sZGVjcl9pcnFoYW5kbGVyKHN0cnVjdCBlbXUxMGsxX2NhcmQg KmNhcmQpDQogew0KLQlzdHJ1Y3QgcGF0Y2hfbWFuYWdlciAqbWdyID0gJmNh cmQtPm1ncjsNCi0JdW5zaWduZWQgbG9uZyAgZmxhZ3M7DQotCWludCBvc3Nf Y2hhbm5lbD1WT0xDVFJMX0NIQU5ORUwsIGxlZnQ9MCxyaWdodD0wOw0KKwlp bnQgb3NzX2NoYW5uZWwgPSBWT0xDVFJMX0NIQU5ORUw7DQorCWludCBsZWZ0 LCByaWdodDsNCiANCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJm1nci0+bG9jaywg ZmxhZ3MpOw0KIAlsZWZ0ID0gY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtvc3Nf Y2hhbm5lbF0gJiAweGZmOw0KIAlyaWdodCA9IChjYXJkLT5hYzk3Lm1peGVy X3N0YXRlW29zc19jaGFubmVsXSA+PiA4KSAmIDB4ZmY7DQogDQotCWlmKChs ZWZ0LT1WT0xDVFJMX1NURVBfU0laRSApPDApDQotCQlsZWZ0PTA7DQotCWlm KChyaWdodC09Vk9MQ1RSTF9TVEVQX1NJWkUgKTwwKQ0KLQkJcmlnaHQ9MDsN Ci0JZW11MTBrMV9zZXRfb3NzX3ZvbChjYXJkLG9zc19jaGFubmVsLGxlZnQs cmlnaHQpOw0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtZ3ItPmxvY2ss IGZsYWdzKTsNCi19DQorCWlmICgobGVmdCAtPSBWT0xDVFJMX1NURVBfU0la RSkgPCAwKQ0KKwkJbGVmdCA9IDA7DQogDQorCWlmICgocmlnaHQgLT0gVk9M Q1RSTF9TVEVQX1NJWkUpIDwgMCkNCisJCXJpZ2h0ID0gMDsNCiANCi12b2lk IGVtdTEwazFfc2V0X3ZvbHVtZV9ncHIoc3RydWN0IGVtdTEwazFfY2FyZCAq Y2FyZCwgaW50IGFkZHIsIHMzMiB2b2wsIGludCBzY2FsZSwgaW50IG11dGlu ZykNCisJZW11MTBrMV9zZXRfb3NzX3ZvbChjYXJkLCBvc3NfY2hhbm5lbCwg bGVmdCwgcmlnaHQpOw0KK30NCisNCit2b2lkIGVtdTEwazFfc2V0X3ZvbHVt ZV9ncHIoc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCwgaW50IGFkZHIsIHMz MiB2b2wsIGludCBzY2FsZSkNCiB7DQogCXN0cnVjdCBwYXRjaF9tYW5hZ2Vy ICptZ3IgPSAmY2FyZC0+bWdyOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0K KwlpbnQgbXV0aW5nOw0KIA0KIAljb25zdCBzMzIgbG9nMmxpbls1XSA9eyAg ICAgICAgICAgICAgICAgIC8vICBhdHRlbnVhdGlvbiAoZEIpDQogCQkweDdm ZmZmZmZmLCAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAwLjAgICAg ICAgICANCkBAIC0xNzksMTAgKzE4MywxMiBAQA0KIAlpZiAoYWRkciA8IDAp DQogCQlyZXR1cm47DQogDQorCW11dGluZyA9IChzY2FsZSA9PSAweDEwKSA/ IDB4N2Y6IHNjYWxlOw0KKwkNCiAJdm9sID0gKDEwMCAtIHZvbCApICogc2Nh bGUgLyAxMDA7DQogDQogCS8vIFRoYW5rcyB0byB0aGUgY29tcC5kc3AgbmV3 c2dyb3VwIGZvciB0aGlzIG5lYXQgdHJpY2s6DQotCXZvbCA9IHZvbCA+PSBt dXRpbmcgPyAwOiBsb2cybGluW3ZvbCYzXT4+KHZvbD4+Mik7DQorCXZvbCA9 ICh2b2wgPj0gbXV0aW5nKSA/IDAgOiAobG9nMmxpblt2b2wgJiAzXSA+PiAo dm9sID4+IDIpKTsNCiANCiAJc3Bpbl9sb2NrX2lycXNhdmUoJm1nci0+bG9j aywgZmxhZ3MpOw0KIAllbXUxMGsxX3NldF9jb250cm9sX2dwcihjYXJkLCBh ZGRyLCB2b2wsIDApOw0KQEAgLTE5NywxNSArMjAzLDE2IEBADQogCQl1MzIg YmM7DQogCQliYyA9IHNibGl2ZV9yZWFkcHRyKGNhcmQsIEdQUl9CQVNFICsg Y2FyZC0+cHQuaW50cl9ncHIsIDApOw0KIAkJaWYgKGJjICE9IDApIHsNCi0J CQlzcGluX2xvY2tfaXJxc2F2ZSgmY2FyZC0+bG9jaywgZmxhZ3MpOw0KKwkJ CURQRCgzLCAicHQgaW50ZXJydXB0LCBiYyA9ICVkXG4iLCBiYyk7DQorCQkJ c3Bpbl9sb2NrX2lycXNhdmUoJmNhcmQtPnB0LmxvY2ssIGZsYWdzKTsNCiAJ CQljYXJkLT5wdC5ibG9ja3NfcGxheWVkID0gYmM7DQogCQkJaWYgKGNhcmQt PnB0LmJsb2Nrc19wbGF5ZWQgPj0gY2FyZC0+cHQuYmxvY2tzX2NvcGllZCkg ew0KIAkJCQlEUEYoMSwgImJ1ZmZlciB1bmRlcnJ1biBpbiBwYXNzdGhyb3Vn aCBwbGF5YmFja1xuIik7DQogCQkJCWVtdTEwazFfcHRfc3RvcChjYXJkKTsN CiAJCQl9DQogCQkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZjYXJkLT5wdC53 YWl0KTsNCi0JCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjYXJkLT5sb2Nr LCBmbGFncyk7DQotCQkJRFBEKDMsICJwdCBpbnRlcnJ1cHQsIGJjID0gJWRc biIsIGJjKTsNCisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjYXJkLT5w dC5sb2NrLCBmbGFncyk7DQogCQl9DQogCX0NCiB9DQorDQpkaWZmIC11ciBs aW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsxL2Vm eG1nci5oIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2ZXJzL3NvdW5k L2VtdTEwazEvZWZ4bWdyLmgNCi0tLSBsaW51eC0yLjQuMTFwcmU2Lm9yaWcv ZHJpdmVycy9zb3VuZC9lbXUxMGsxL2VmeG1nci5oCVNhdCBBdWcgMTEgMDY6 MDI6MTggMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2 ZXJzL3NvdW5kL2VtdTEwazEvZWZ4bWdyLmgJVHVlIE9jdCAgOSAyMDo1Mzoz NSAyMDAxDQpAQCAtNjYsNyArNjYsOCBAQA0KIA0KICAgICAgICAgdTMyIGdw cl91c2VkW05VTV9HUFJTIC8gMzJdOyAgICAvKiBiaXRtYXAgb2YgdXNlZCBn cHJzICovDQogICAgICAgICB1MzIgZ3ByX2lucHV0W05VTV9HUFJTIC8gMzJd Ow0KLSAgICAgICAgdTggdHJhbWxfaXN0YXJ0OyAgLyogc3RhcnRpbmcgYWRk cmVzcyBvZiB0aGUgaW50ZXJuYWwgdHJhbSBsaW5lcyB1c2VkICovICAgICAg ICB1OCB0cmFtbF9pc2l6ZTsgICAvKiBudW1iZXIgb2YgaW50ZXJuYWwgdHJh bSBsaW5lcyB1c2VkICovDQorICAgICAgICB1OCB0cmFtbF9pc3RhcnQ7ICAv KiBzdGFydGluZyBhZGRyZXNzIG9mIHRoZSBpbnRlcm5hbCB0cmFtIGxpbmVz IHVzZWQgKi8NCisgICAgICAgIHU4IHRyYW1sX2lzaXplOyAgIC8qIG51bWJl ciBvZiBpbnRlcm5hbCB0cmFtIGxpbmVzIHVzZWQgKi8NCiANCiAgICAgICAg IHU4IHRyYW1sX2VzdGFydDsNCiAgICAgICAgIHU4IHRyYW1sX2VzaXplOw0K QEAgLTk3LDEwICs5OCw2IEBADQogI2RlZmluZSBHUFJfQkFTRSAweDEwMA0K ICNkZWZpbmUgT1VUUFVUX0JBU0UgMHgyMA0KIA0KLS8vV2UgY2FuIGdldCB0 aGlzIGluZm8gYnkgbG9va2luZyBhdCB0aGUgY29kZSBzdGFydA0KLS8vI2Rl ZmluZSBQQVRDSF9UWVBFX0lOUFVUICAgICAgICAweDENCi0vLyNkZWZpbmUg UEFUQ0hfVFlQRV9PVVRQVVQgICAgICAgMHgyDQotDQogI2RlZmluZSBNQVhf UEFUQ0hFU19QQUdFUyAzMg0KIA0KIHN0cnVjdCBwYXRjaF9tYW5hZ2VyIHsN CkBAIC0xMzksNiArMTM2LDE0IEBADQogDQogI2RlZmluZSBQQ00xX0lOX0wg ICAgICAgIDB4MDQNCiAjZGVmaW5lIFBDTTFfSU5fUiAgICAgICAgMHgwNQ0K Ky8vbXV0aWxjaGFubmVsIHBsYXliYWNrIHN0cmVhbSBhcHBlYXIgaGVyZToN CisNCisjZGVmaW5lIE1VTFRJX0ZST05UX0wJMHgwOA0KKyNkZWZpbmUgTVVM VElfRlJPTlRfUgkweDA5DQorI2RlZmluZSBNVUxUSV9SRUFSX0wJMHgwYQ0K KyNkZWZpbmUgTVVMVElfUkVBUl9SCTB4MGINCisjZGVmaW5lIE1VTFRJX0NF TlRFUgkweDBjDQorI2RlZmluZSBNVUxUSV9MRkUJMHgwZA0KIA0KICNkZWZp bmUgQUM5N19JTl9MCTB4MTANCiAjZGVmaW5lIEFDOTdfSU5fUgkweDExDQpA QCAtMTUwLDEwICsxNTUsMTcgQEANCiAjZGVmaW5lIEFDOTdfRlJPTlRfUgkw eDIxDQogI2RlZmluZSBESUdJVEFMX09VVF9MCTB4MjINCiAjZGVmaW5lIERJ R0lUQUxfT1VUX1IJMHgyMw0KKyNkZWZpbmUgRElHSVRBTF9DRU5URVIJMHgy NA0KKyNkZWZpbmUgRElHSVRBTF9MRkUJMHgyNQ0KKw0KICNkZWZpbmUgQU5B TE9HX1JFQVJfTAkweDI4DQogI2RlZmluZSBBTkFMT0dfUkVBUl9SCTB4MjkN CiAjZGVmaW5lIEFEQ19SRUNfTAkweDJhDQogI2RlZmluZSBBRENfUkVDX1IJ MHgyYg0KKw0KKyNkZWZpbmUgQU5BTE9HX0NFTlRFUgkweDMxDQorI2RlZmlu ZSBBTkFMT0dfTEZFCTB4MzINCisNCiANCiAjZGVmaW5lIElOUFVUX1BBVENI X1NUQVJUKHBhdGNoLCBubSwgbG4sIGkpCQlcDQogZG8gewkJCQkJCQlcDQpk aWZmIC11ciBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9l bXUxMGsxL2h3YWNjZXNzLmggbGludXgtMi40LjExcHJlNi5lbXUxMGsxL2Ry aXZlcnMvc291bmQvZW11MTBrMS9od2FjY2Vzcy5oDQotLS0gbGludXgtMi40 LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQvZW11MTBrMS9od2FjY2Vzcy5o CVdlZCBBdWcgMTUgMTA6MjI6MTYgMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXBy ZTYuZW11MTBrMS9kcml2ZXJzL3NvdW5kL2VtdTEwazEvaHdhY2Nlc3MuaAlU dWUgT2N0ICA5IDIwOjUzOjM1IDIwMDENCkBAIC0zOCw4ICszOCw4IEBADQog I2luY2x1ZGUgPGxpbnV4L2FjOTdfY29kZWMuaD4NCiAjaW5jbHVkZSA8bGlu dXgvcGNpLmg+DQogDQotI2luY2x1ZGUgInBhc3N0aHJvdWdoLmgiDQogI2lu Y2x1ZGUgImVmeG1nci5oIg0KKyNpbmNsdWRlICJwYXNzdGhyb3VnaC5oIg0K ICNpbmNsdWRlICJtaWRpLmgiDQogDQogI2RlZmluZSBFTVVQQUdFU0laRSAg ICAgNDA5NiAgICAgICAgICAgIC8qIGRvbid0IGNoYW5nZSAqLw0KQEAgLTEy MiwxMCArMTIyLDEwIEBADQogI2RlZmluZSBDTURfU0VUR1BSMk9TUwkJX0lP VygnRCcsIDE2LCBzdHJ1Y3QgbWl4ZXJfcHJpdmF0ZV9pb2N0bCkNCiAjZGVm aW5lIENNRF9TRVRNQ0hfRlgJCV9JT1coJ0QnLCAxNywgc3RydWN0IG1peGVy X3ByaXZhdGVfaW9jdGwpDQogI2RlZmluZSBDTURfU0VUUEFTU1RIUk9VR0gJ X0lPVygnRCcsIDE4LCBzdHJ1Y3QgbWl4ZXJfcHJpdmF0ZV9pb2N0bCkNCisj ZGVmaW5lIENNRF9QUklWQVRFM19WRVJTSU9OCV9JT1coJ0QnLCAxOSwgc3Ry dWN0IG1peGVyX3ByaXZhdGVfaW9jdGwpDQogDQotc3RydWN0IG9zc19zY2Fs aW5nIHsNCi0JY2hhciBzY2FsZSwgbXV0aW5nOw0KLX07IA0KKy8vdXAgdGhp cyBudW1iZXIgd2hlbiBicmVha2luZyBjb21wYXRpYmlsaXR5DQorI2RlZmlu ZSBQUklWQVRFM19WRVJTSU9OIDENCiANCiBzdHJ1Y3QgZW11MTBrMV9jYXJk IA0KIHsNCkBAIC0xOTIsMTIgKzE5MiwxMiBAQA0KIGludCBlbXUxMGsxX2Zp bmRfY29udHJvbF9ncHIoc3RydWN0IHBhdGNoX21hbmFnZXIgKiwgY29uc3Qg Y2hhciAqLCBjb25zdCBjaGFyICopOw0KIHZvaWQgZW11MTBrMV9zZXRfY29u dHJvbF9ncHIoc3RydWN0IGVtdTEwazFfY2FyZCAqLCBpbnQgLCBzMzIsIGlu dCApOw0KIA0KLXZvaWQgZW11MTBrMV9zZXRfdm9sdW1lX2dwcihzdHJ1Y3Qg ZW11MTBrMV9jYXJkICosIGludCwgczMyLCBpbnQsIGludCk7DQordm9pZCBl bXUxMGsxX3NldF92b2x1bWVfZ3ByKHN0cnVjdCBlbXUxMGsxX2NhcmQgKiwg aW50LCBzMzIsIGludCk7DQogDQogDQotI2RlZmluZSBWT0xfNkJJVCAweDQw LDB4NDANCi0jZGVmaW5lIFZPTF81QklUIDB4MjAsMHgyMA0KLSNkZWZpbmUg Vk9MXzRCSVQgMHgxMCwweDdmDQorI2RlZmluZSBWT0xfNkJJVCAweDQwDQor I2RlZmluZSBWT0xfNUJJVCAweDIwDQorI2RlZmluZSBWT0xfNEJJVCAweDEw DQogDQogI2RlZmluZSBUSU1FT1VUIAkJICAgIDE2Mzg0DQogDQpkaWZmIC11 ciBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsx L21haW4uYyBsaW51eC0yLjQuMTFwcmU2LmVtdTEwazEvZHJpdmVycy9zb3Vu ZC9lbXUxMGsxL21haW4uYw0KLS0tIGxpbnV4LTIuNC4xMXByZTYub3JpZy9k cml2ZXJzL3NvdW5kL2VtdTEwazEvbWFpbi5jCVR1ZSBPY3QgIDkgMjA6NDk6 MzAgMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2ZXJz L3NvdW5kL2VtdTEwazEvbWFpbi5jCVR1ZSBPY3QgIDkgMjA6NTM6MzUgMjAw MQ0KQEAgLTY2LDcgKzY2LDEwIEBADQogICogICAgICAgICAgQWRkZWQgU3Vw cG9ydCBmb3IgNS4xIGNhcmRzIChkaWdpdGFsIG91dCBhbmQgdGhlIHRoaXJk IGFuYWxvZyBvdXQpDQogICogICAgIDAuMTUgQWRkZWQgU2VxdWVuY2VyIFN1 cHBvcnQgKERhbmllbCBNYWNrKQ0KICAqICAgICAgICAgIFN1cHBvcnQgZm9y IG11bHRpY2hhbm5lbCBwY20gcGxheWJhY2sgKEVkdWFyZCBIYXNlbmxlaXRo bmVyKQ0KLSAqICAgICAgICAgIA0KKyAqICAgICAwLjE2IE1peGVyIGltcHJv dmVtZW50cywgYWRkZWQgb2xkIHRyZWJsZS9iYXNzIHN1cHBvcnQgKERhbmll bCBCZXJ0cmFuZCkNCisgKiAgICAgICAgICBTbWFsbCBjb2RlIGZvcm1hdCBj bGVhbnVwLg0KKyAqICAgICAgICAgIERlYWRsb2NrIGJ1ZyBmaXggZm9yIGVt dTEwazFfdm9seHh4X2lycWhhbmRsZXIoKS4NCisgKg0KICAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovDQogDQogLyogVGhlc2UgYXJlIG9ubHkgaW5jbHVk ZWQgb25jZSBwZXIgbW9kdWxlICovDQpAQCAtOTksNyArMTAyLDcgQEANCiAj ZGVmaW5lIFNORENBUkRfRU1VMTBLMSA0Ng0KICNlbmRpZg0KICANCi0jZGVm aW5lIERSSVZFUl9WRVJTSU9OICIwLjE1Ig0KKyNkZWZpbmUgRFJJVkVSX1ZF UlNJT04gIjAuMTYiDQogDQogLyogRklYTUU6IGlzIHRoaXMgcmlnaHQ/ICov DQogLyogZG9lcyB0aGUgY2FyZCBzdXBwb3J0IDMyIGJpdCBidXMgbWFzdGVy PyovDQpAQCAtMjE2LDcgKzIxOSw3IEBADQogDQogCWNhcmQtPmFjOTcucHJp dmF0ZV9kYXRhID0gY2FyZDsNCiANCi0JaWYoIWNhcmQtPmlzYXBzKSB7DQor CWlmICghY2FyZC0+aXNhcHMpIHsNCiAJCWNhcmQtPmFjOTcuaWQgPSAwOw0K IAkJY2FyZC0+YWM5Ny5jb2RlY19yZWFkID0gZW11MTBrMV9hYzk3X3JlYWQ7 DQogICAgICAgICAJY2FyZC0+YWM5Ny5jb2RlY193cml0ZSA9IGVtdTEwazFf YWM5N193cml0ZTsNCkBAIC0yMjcsOCArMjMwLDEwIEBADQogCQl9DQogCQkv KiA1LjE6IEVuYWJsZSB0aGUgYWRkaXRpb25hbCBBQzk3IFNsb3RzLiBJZiB0 aGUgZW11MTBrMSB2ZXJzaW9uDQogCQkJZG9lcyBub3Qgc3VwcG9ydCB0aGlz LCBpdCBzaG91bGRuJ3QgZG8gYW55IGhhcm0gKi8NCi0JCXNibGl2ZV93cml0 ZXB0cihjYXJkLCBBQzk3U0xPVCwgMCwgQUM5N1NMT1RfQ05UUnxBQzk3U0xP VF9MRkUpOw0KLQkJDQorCQlzYmxpdmVfd3JpdGVwdHIoY2FyZCwgQUM5N1NM T1QsIDAsIEFDOTdTTE9UX0NOVFIgfCBBQzk3U0xPVF9MRkUpOw0KKw0KKwkJ Ly8gRm9yY2UgNWJpdA0KKwkJLy9jYXJkLT5hYzk3LmJpdF9yZXNvbHV0aW9u PTU7DQogDQogCQlpZiAoIXByb2NfbWtkaXIgKCJkcml2ZXIvZW11MTBrMSIs IDApKSB7DQogCQkJcHJpbnRrKEtFUk5fRVJSICJlbXUxMGsxOiB1bmFibGUg dG8gY3JlYXRlIHByb2MgZGlyZWN0b3J5IGRyaXZlci9lbXUxMGsxXG4iKTsN CkBAIC0yNDcsNiArMjUyLDcgQEANCiAJCQlnb3RvIGVycl9hYzk3X3Byb2M7 DQogCQl9DQogDQorCQkvKiB0aGVzZSB3aWxsIHN0b3JlIHRoZSBvcmlnaW5h bCB2YWx1ZXMgYW5kIG5ldmVyIGJlIG1vZGlmaWVkICovDQogCQljYXJkLT5h Yzk3X3N1cHBvcnRlZF9taXhlcnMgPSBjYXJkLT5hYzk3LnN1cHBvcnRlZF9t aXhlcnM7DQogCQljYXJkLT5hYzk3X3N0ZXJlb19taXhlcnMgPSBjYXJkLT5h Yzk3LnN0ZXJlb19taXhlcnM7DQogCX0NCkBAIC0yNjgsNyArMjc0LDcgQEAN CiB7DQogCWNoYXIgc1szMl07DQogDQotCWlmKCFjYXJkLT5pc2Fwcykgew0K KwlpZiAoIWNhcmQtPmlzYXBzKSB7DQogCQlzcHJpbnRmKHMsICJkcml2ZXIv ZW11MTBrMS8lcy9hYzk3IiwgY2FyZC0+cGNpX2Rldi0+c2xvdF9uYW1lKTsN CiAJCXJlbW92ZV9wcm9jX2VudHJ5KHMsIE5VTEwpOw0KIA0KQEAgLTMzMyw3 ICszMzksNyBAQA0KIA0KICNpZmRlZiBFTVUxMEsxX1NFUVVFTkNFUg0KIAlj YXJkLT5zZXFfZGV2ID0gc291bmRfYWxsb2NfbWlkaWRldigpOw0KLQlpZihj YXJkLT5zZXFfZGV2ID09IC0xKQ0KKwlpZiAoY2FyZC0+c2VxX2RldiA9PSAt MSkNCiAJCQlwcmludGsoS0VSTl9XQVJOSU5HICJlbXUxMGsxOiB1bmFibGUg dG8gcmVnaXN0ZXIgc2VxdWVuY2VyIGRldmljZSEiKTsNCiAJZWxzZSB7DQog CQkJc3RkX21pZGlfc3ludGgubWlkaV9kZXYgPSBjYXJkLT5zZXFfZGV2Ow0K QEAgLTM0MSwyMiArMzQ3LDIxIEBADQogCQkJCQkoc3RydWN0IG1pZGlfb3Bl cmF0aW9ucyAqKQ0KIAkJCQkJa21hbGxvYyhzaXplb2Yoc3RydWN0IG1pZGlf b3BlcmF0aW9ucyksIEdGUF9LRVJORUwpOw0KIAkJCQ0KLQkJCWlmKG1pZGlf ZGV2c1tjYXJkLT5zZXFfZGV2XSA9PSBOVUxMKSB7DQotCQkJCQlwcmludGso S0VSTl9FUlIgImVtdTEwazE6IHVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkh Iik7DQotCQkJCQlzb3VuZF91bmxvYWRfbWlkaWRldihjYXJkLT5zZXFfZGV2 KTsNCi0JCQkJCWNhcmQtPnNlcV9kZXYgPSAtMTsNCi0JCQkJCXJldHVybiAw Ow0KKwkJCWlmIChtaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0gPT0gTlVMTCkg ew0KKwkJCQlwcmludGsoS0VSTl9FUlIgImVtdTEwazE6IHVuYWJsZSB0byBh bGxvY2F0ZSBtZW1vcnkhIik7DQorCQkJCXNvdW5kX3VubG9hZF9taWRpZGV2 KGNhcmQtPnNlcV9kZXYpOw0KKwkJCQljYXJkLT5zZXFfZGV2ID0gLTE7DQor CQkJCXJldHVybiAwOw0KIAkJCX0gZWxzZSB7DQotCQkJCQltZW1jcHkoKGNo YXIgKiltaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0sIA0KLQkJCQkJCSAgIChj aGFyICopJmVtdTEwazFfbWlkaV9vcGVyYXRpb25zLCANCi0JCQkJCQkgICBz aXplb2Yoc3RydWN0IG1pZGlfb3BlcmF0aW9ucykpOw0KLQkJCQkJbWlkaV9k ZXZzW2NhcmQtPnNlcV9kZXZdLT5kZXZjID0gY2FyZDsNCi0JCQkJCXNlcXVl bmNlcl9pbml0KCk7DQorCQkJCW1lbWNweSgoY2hhciAqKW1pZGlfZGV2c1tj YXJkLT5zZXFfZGV2XSwgDQorCQkJCQkoY2hhciAqKSZlbXUxMGsxX21pZGlf b3BlcmF0aW9ucywgDQorCQkJCQlzaXplb2Yoc3RydWN0IG1pZGlfb3BlcmF0 aW9ucykpOw0KKwkJCQltaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0tPmRldmMg PSBjYXJkOw0KKwkJCQlzZXF1ZW5jZXJfaW5pdCgpOw0KIAkJCX0NCiAJfQ0K IAljYXJkLT5zZXFfbWlkaWRldiA9IDA7DQogI2VuZGlmDQotDQogCXJldHVy biAwOw0KIA0KIGVycl9vdXQzOg0KQEAgLTM3MCwxOSArMzc1LDE5IEBADQog DQogc3RhdGljIHZvaWQgX19kZXZpbml0IGVtdTEwazFfbWlkaV9jbGVhbnVw KHN0cnVjdCBlbXUxMGsxX2NhcmQgKmNhcmQpDQogew0KLSAgICB0YXNrbGV0 X2tpbGwoJmNhcmQtPm1wdW91dC0+dGFza2xldCk7DQotICAgIGtmcmVlKGNh cmQtPm1wdW91dCk7DQorCXRhc2tsZXRfa2lsbCgmY2FyZC0+bXB1b3V0LT50 YXNrbGV0KTsNCisJa2ZyZWUoY2FyZC0+bXB1b3V0KTsNCiANCi0gICAgdGFz a2xldF9raWxsKCZjYXJkLT5tcHVpbi0+dGFza2xldCk7DQotICAgIGtmcmVl KGNhcmQtPm1wdWluKTsNCisJdGFza2xldF9raWxsKCZjYXJkLT5tcHVpbi0+ dGFza2xldCk7DQorCWtmcmVlKGNhcmQtPm1wdWluKTsNCiANCiAjaWZkZWYg RU1VMTBLMV9TRVFVRU5DRVINCi0gICAgaWYoY2FyZC0+c2VxX2RldiA+IC0x KSB7DQotCSAgICAgICAga2ZyZWUobWlkaV9kZXZzW2NhcmQtPnNlcV9kZXZd KTsNCi0JCQltaWRpX2RldnNbY2FyZC0+c2VxX2Rldl0gPSBOVUxMOw0KLSAg ICAgICAgICAgIHNvdW5kX3VubG9hZF9taWRpZGV2KGNhcmQtPnNlcV9kZXYp Ow0KLQkJCWNhcmQtPnNlcV9kZXYgPSAtMTsNCi0gICAgfQ0KKwlpZiAoY2Fy ZC0+c2VxX2RldiA+IC0xKSB7DQorCQlrZnJlZShtaWRpX2RldnNbY2FyZC0+ c2VxX2Rldl0pOw0KKwkJbWlkaV9kZXZzW2NhcmQtPnNlcV9kZXZdID0gTlVM TDsNCisJCXNvdW5kX3VubG9hZF9taWRpZGV2KGNhcmQtPnNlcV9kZXYpOw0K KwkJY2FyZC0+c2VxX2RldiA9IC0xOw0KKwl9DQogI2VuZGlmDQogDQogCXVu cmVnaXN0ZXJfc291bmRfbWlkaShjYXJkLT5taWRpX2Rldik7DQpAQCAtNDQ3 LDkxICs0NTIsMTUyIEBADQogCQkJCSAgICBUQU5LTUVNQUREUlJFR0JBU0Ug KyBpLCAwLA0KIAkJCQkgICAgVEFHTElTVF9FTkQpOw0KIA0KLQltZ3ItPmN1 cnJlbnRfcGFnZXMgPSA1IC8gUEFUQ0hFU19QRVJfUEFHRSArIDE7DQotICAg ICAgICBmb3IoaSA9IDA7IGkgPCBtZ3ItPmN1cnJlbnRfcGFnZXM7IGkrKykg ew0KLSAgICAgICAgICAgICAgICBtZ3ItPnBhdGNoW2ldID0gKHZvaWQgKilf X2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwsIDEpOw0KLSAgICAgICAgICAg ICAgICBpZiAobWdyLT5wYXRjaFtpXSA9PSBOVUxMKSB7DQotICAgICAgICAg ICAgICAgICAgICAgICAgbWdyLT5jdXJyZW50X3BhZ2VzID0gaTsNCi0gICAg ICAgICAgICAgICAgICAgICAgICBmeF9jbGVhbnVwKG1ncik7DQotICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQotICAgICAgICAg ICAgICAgIH0NCi0gICAgICAgICAgICAgICAgbWVtc2V0KG1nci0+cGF0Y2hb aV0sIDAsIFBBR0VfU0laRSk7DQotICAgICAgICB9DQorCS8qICEhIFRoZSBu dW1iZXIgYmVsbG93IG11c3QgZXF1YWwgdGhlIG51bWJlciBvZiBwYXRjaGVz LCBjdXJyZW50bHkgMTEgISEgKi8NCisJbWdyLT5jdXJyZW50X3BhZ2VzID0g KDExICsgUEFUQ0hFU19QRVJfUEFHRSAtIDEpIC8gUEFUQ0hFU19QRVJfUEFH RTsNCisJZm9yIChpID0gMDsgaSA8IG1nci0+Y3VycmVudF9wYWdlczsgaSsr KSB7DQorCQltZ3ItPnBhdGNoW2ldID0gKHZvaWQgKilfX2dldF9mcmVlX3Bh Z2UoR0ZQX0tFUk5FTCk7DQorCQlpZiAobWdyLT5wYXRjaFtpXSA9PSBOVUxM KSB7DQorCQkJbWdyLT5jdXJyZW50X3BhZ2VzID0gaTsNCisJCQlmeF9jbGVh bnVwKG1ncik7DQorCQkJcmV0dXJuIC1FTk9NRU07DQorCQl9DQorCQltZW1z ZXQobWdyLT5wYXRjaFtpXSwgMCwgUEFHRV9TSVpFKTsNCisJfQ0KIA0KIAlw YyA9IDA7DQogCXBhdGNoX24gPSAwOw0KKwkvL2ZpcnN0IGZyZWUgR1BSID0g MHgxMWINCiANCi0JLyogRlggdm9sdW1lIGNvcnJlY3Rpb24gKi8NCi0JSU5Q VVRfUEFUQ0hfU1RBUlQocGF0Y2gsICJQY20gTCB2b2wgY29ycmVjdGlvbiIs IDB4MCwgMCk7DQorCS8qIEZYIHZvbHVtZSBjb3JyZWN0aW9uIGFuZCBWb2x1 bWUgY29udHJvbCovDQorCUlOUFVUX1BBVENIX1NUQVJUKHBhdGNoLCAiUGNt IEwgdm9sIiwgMHgwLCAwKTsNCiAJR0VUX09VVFBVVF9HUFIocGF0Y2gsIDB4 MTAwLCAweDApOw0KLQkNCi0JT1AoNCwgMHgxMDAsIDB4NDAsIFBDTV9JTl9M LCAweDQ0KTsNCisJR0VUX0NPTlRST0xfR1BSKHBhdGNoLCAweDEwNiwgIlZv bCIsIDAsIDB4N2ZmZmZmZmYpOw0KKwlHRVRfRFlOQU1JQ19HUFIocGF0Y2gs IDB4MTEyKTsNCisNCisJT1AoNCwgMHgxMTIsIDB4NDAsIFBDTV9JTl9MLCAw eDQ0KTsgLy8qNA0KKwlPUCgwLCAweDEwMCwgMHgwNDAsIDB4MTEyLCAweDEw Nik7ICAvLyp2b2wNCiAJSU5QVVRfUEFUQ0hfRU5EKHBhdGNoKTsNCiANCiAN Ci0JSU5QVVRfUEFUQ0hfU1RBUlQocGF0Y2gsICJQY20gUiB2b2wgY29ycmVj dGlvbiIsIDB4MSwgMCk7DQorCUlOUFVUX1BBVENIX1NUQVJUKHBhdGNoLCAi UGNtIFIgdm9sIiwgMHgxLCAwKTsNCiAJR0VUX09VVFBVVF9HUFIocGF0Y2gs IDB4MTAxLCAweDEpOw0KKwlHRVRfQ09OVFJPTF9HUFIocGF0Y2gsIDB4MTA3 LCAiVm9sIiwgMCwgMHg3ZmZmZmZmZik7DQorCUdFVF9EWU5BTUlDX0dQUihw YXRjaCwgMHgxMTIpOw0KKw0KKwlPUCg0LCAweDExMiwgMHg0MCwgUENNX0lO X1IsIDB4NDQpOyANCisJT1AoMCwgMHgxMDEsIDB4MDQwLCAweDExMiwgMHgx MDcpOw0KIA0KLQlPUCg0LCAweDEwMSwgMHg0MCwgUENNX0lOX1IsIDB4NDQp Ow0KIAlJTlBVVF9QQVRDSF9FTkQocGF0Y2gpOw0KIA0KIA0KKwkvLyBDRC1E aWdpdGFsIEluIFZvbHVtZSBjb250cm9sDQorCUlOUFVUX1BBVENIX1NUQVJU KHBhdGNoLCAiQ0QtRGlnaXRhbCBWb2wgTCIsIDB4MTIsIDApOw0KKwlHRVRf T1VUUFVUX0dQUihwYXRjaCwgMHgxMGMsIDB4MTIpOw0KKwlHRVRfQ09OVFJP TF9HUFIocGF0Y2gsIDB4MTBkLCAiVm9sIiwgMCwgMHg3ZmZmZmZmZik7DQor DQorCU9QKDAsIDB4MTBjLCAweDA0MCwgU1BESUZfQ0RfTCwgMHgxMGQpOw0K KwlJTlBVVF9QQVRDSF9FTkQocGF0Y2gpOw0KKw0KKwlJTlBVVF9QQVRDSF9T VEFSVChwYXRjaCwgIkNELURpZ2l0YWwgVm9sIFIiLCAweDEzLCAwKTsNCisJ R0VUX09VVFBVVF9HUFIocGF0Y2gsIDB4MTBlLCAweDEzKTsNCisJR0VUX0NP TlRST0xfR1BSKHBhdGNoLCAweDEwZiwgIlZvbCIsIDAsIDB4N2ZmZmZmZmYp Ow0KKw0KKwlPUCgwLCAweDEwZSwgMHgwNDAsIFNQRElGX0NEX1IsIDB4MTBm KTsNCisJSU5QVVRfUEFUQ0hfRU5EKHBhdGNoKTsNCisNCisJLy9Wb2x1bWUg Q29ycmVjdGlvbiBmb3IgTXVsdGktY2hhbm5lbCBJbnB1dHMNCisJSU5QVVRf UEFUQ0hfU1RBUlQocGF0Y2gsICJNdWx0aS1DaGFubmVsIEdhaW4iLCAweDA4 LCAwKTsNCisJcGF0Y2gtPmlucHV0PXBhdGNoLT5vdXRwdXQ9MHgzRjAwOw0K Kw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTMsIE1VTFRJX0ZST05U X0wpOw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTQsIE1VTFRJX0ZS T05UX1IpOw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTUsIE1VTFRJ X1JFQVJfTCk7DQorCUdFVF9PVVRQVVRfR1BSKHBhdGNoLCAweDExNiwgTVVM VElfUkVBUl9SKTsNCisJR0VUX09VVFBVVF9HUFIocGF0Y2gsIDB4MTE3LCBN VUxUSV9DRU5URVIpOw0KKwlHRVRfT1VUUFVUX0dQUihwYXRjaCwgMHgxMTgs IE1VTFRJX0xGRSk7DQorDQorCU9QKDQsIDB4MTEzLCAweDQwLCBNVUxUSV9G Uk9OVF9MLCAweDQ0KTsNCisJT1AoNCwgMHgxMTQsIDB4NDAsIE1VTFRJX0ZS T05UX1IsIDB4NDQpOw0KKwlPUCg0LCAweDExNSwgMHg0MCwgTVVMVElfUkVB Ul9MLCAweDQ0KTsNCisJT1AoNCwgMHgxMTYsIDB4NDAsIE1VTFRJX1JFQVJf UiwgMHg0NCk7DQorCU9QKDQsIDB4MTE3LCAweDQwLCBNVUxUSV9DRU5URVIs IDB4NDQpOw0KKwlPUCg0LCAweDExOCwgMHg0MCwgTVVMVElfTEZFLCAweDQ0 KTsNCisJDQorCUlOUFVUX1BBVENIX0VORChwYXRjaCk7DQorDQorDQorCS8v Um91dGluZyBwYXRjaCBzdGFydA0KIAlST1VUSU5HX1BBVENIX1NUQVJUKHJw YXRjaCwgIlJvdXRpbmciKTsNCiAJR0VUX0lOUFVUX0dQUihycGF0Y2gsIDB4 MTAwLCAweDApOw0KIAlHRVRfSU5QVVRfR1BSKHJwYXRjaCwgMHgxMDEsIDB4 MSk7DQorCUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDEwYywgMHgxMik7DQor CUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDEwZSwgMHgxMyk7DQorCUdFVF9J TlBVVF9HUFIocnBhdGNoLCAweDExMywgTVVMVElfRlJPTlRfTCk7DQorCUdF VF9JTlBVVF9HUFIocnBhdGNoLCAweDExNCwgTVVMVElfRlJPTlRfUik7DQor CUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDExNSwgTVVMVElfUkVBUl9MKTsN CisJR0VUX0lOUFVUX0dQUihycGF0Y2gsIDB4MTE2LCBNVUxUSV9SRUFSX1Ip Ow0KKwlHRVRfSU5QVVRfR1BSKHJwYXRjaCwgMHgxMTcsIE1VTFRJX0NFTlRF Uik7DQorCUdFVF9JTlBVVF9HUFIocnBhdGNoLCAweDExOCwgTVVMVElfTEZF KTsNCiANCi0gICAgICAgIEdFVF9EWU5BTUlDX0dQUihycGF0Y2gsIDB4MTAy KTsNCi0gICAgICAgIEdFVF9EWU5BTUlDX0dQUihycGF0Y2gsIDB4MTAzKTsN CisJR0VUX0RZTkFNSUNfR1BSKHJwYXRjaCwgMHgxMDIpOw0KKwlHRVRfRFlO QU1JQ19HUFIocnBhdGNoLCAweDEwMyk7DQogDQogCUdFVF9PVVRQVVRfR1BS KHJwYXRjaCwgMHgxMDQsIDB4OCk7DQogCUdFVF9PVVRQVVRfR1BSKHJwYXRj aCwgMHgxMDUsIDB4OSk7DQogCUdFVF9PVVRQVVRfR1BSKHJwYXRjaCwgMHgx MGEsIDB4Mik7DQogCUdFVF9PVVRQVVRfR1BSKHJwYXRjaCwgMHgxMGIsIDB4 Myk7DQogDQotCUdFVF9DT05UUk9MX0dQUihycGF0Y2gsIDB4MTA2LCAiVm9s IFBjbSBMOlJlYXIgTCIsIDAsIDB4N2ZmZmZmZmYpOw0KLSAgICAgICAgR0VU X0NPTlRST0xfR1BSKHJwYXRjaCwgMHgxMDcsICJWb2wgUGNtIFI6UmVhciBS IiwgMCwgMHg3ZmZmZmZmZik7DQogDQogCS8qIGlucHV0IGJ1ZmZlciAqLw0K IAlPUCg2LCAweDEwMiwgQUM5N19JTl9MLCAweDQwLCAweDQwKTsNCiAJT1Ao NiwgMHgxMDMsIEFDOTdfSU5fUiwgMHg0MCwgMHg0MCk7DQogDQotCS8qIERp Z2l0YWwgSW4gKyBQQ00gLS0+IEFDOTcgb3V0IChmcm9udCBzcGVha2Vycykq Lw0KLQlPUCg2LCBBQzk3X0ZST05UX0wsIDB4MTAwLCBTUERJRl9DRF9MLCAw eDQwKTsNCiANCisJLyogRGlnaXRhbCBJbiArIFBDTSArIE1VTFRJX0ZST05U LT4gQUM5NyBvdXQgKGZyb250IHNwZWFrZXJzKSovDQorCU9QKDYsIEFDOTdf RlJPTlRfTCwgMHgxMDAsIDB4MTBjLCAweDExMyk7DQorDQorCUNPTk5FQ1Qo TVVMVElfRlJPTlRfTCwgQUM5N19GUk9OVF9MKTsNCiAJQ09OTkVDVChQQ01f SU5fTCwgQUM5N19GUk9OVF9MKTsNCi0gICAgICAgIENPTk5FQ1QoU1BESUZf Q0RfTCwgQUM5N19GUk9OVF9MKTsNCisJQ09OTkVDVChTUERJRl9DRF9MLCBB Qzk3X0ZST05UX0wpOw0KIA0KLQlPUCg2LCBBQzk3X0ZST05UX1IsIDB4MTAx LCBTUERJRl9DRF9SLCAweDQwKTsNCisJT1AoNiwgQUM5N19GUk9OVF9SLCAw eDEwMSwgMHgxMGUsIDB4MTE0KTsNCiANCisJQ09OTkVDVChNVUxUSV9GUk9O VF9SLCBBQzk3X0ZST05UX1IpOw0KIAlDT05ORUNUKFBDTV9JTl9SLCBBQzk3 X0ZST05UX1IpOw0KIAlDT05ORUNUKFNQRElGX0NEX1IsIEFDOTdfRlJPTlRf Uik7DQogDQotCS8qIERpZ2l0YWwgSW4gKyBQQ00gKyBBQzk3IEluICsgUENN MSAtLT4gUmVhciBDaGFubmVsICovIA0KLQlPUCgwLCAweDEwNCwgUENNMV9J Tl9MLCAweDEwMCwgMHgxMDYpOw0KLQlPUCg2LCAweDEwNCwgMHgxMDQsIFNQ RElGX0NEX0wsIDB4MTAyKTsNCisJLyogRGlnaXRhbCBJbiArIFBDTSArIEFD OTcgSW4gKyBQQ00xICsgTVVMVElfUkVBUiAtLT4gUmVhciBDaGFubmVsICov IA0KKwlPUCg2LCAweDEwNCwgUENNMV9JTl9MLCAweDEwMCwgMHgxMTUpOw0K KwlPUCg2LCAweDEwNCwgMHgxMDQsIDB4MTBjLCAweDEwMik7DQogDQorCUNP Tk5FQ1QoTVVMVElfUkVBUl9MLCBBTkFMT0dfUkVBUl9MKTsNCiAJQ09OTkVD VChBQzk3X0lOX0wsIEFOQUxPR19SRUFSX0wpOw0KLQlDT05ORUNUX1YoUENN X0lOX0wsIEFOQUxPR19SRUFSX0wpOw0KKwlDT05ORUNUKFBDTV9JTl9MLCBB TkFMT0dfUkVBUl9MKTsNCiAJQ09OTkVDVChTUERJRl9DRF9MLCBBTkFMT0df UkVBUl9MKTsNCiAJQ09OTkVDVChQQ00xX0lOX0wsIEFOQUxPR19SRUFSX0wp Ow0KIA0KLQlPUCgwLCAweDEwNSwgUENNMV9JTl9SLCAweDEwMSwgMHgxMDcp Ow0KLQlPUCg2LCAweDEwNSwgMHgxMDUsIFNQRElGX0NEX1IsIDB4MTAzKTsN CisJT1AoNiwgMHgxMDUsIFBDTTFfSU5fUiwgMHgxMDEsIDB4MTE2KTsNCisJ T1AoNiwgMHgxMDUsIDB4MTA1LCAweDEwZSwgMHgxMDMpOw0KIA0KKwlDT05O RUNUKE1VTFRJX1JFQVJfUiwgQU5BTE9HX1JFQVJfUik7DQogCUNPTk5FQ1Qo QUM5N19JTl9SLCBBTkFMT0dfUkVBUl9SKTsNCi0gICAgICAgIENPTk5FQ1Rf VihQQ01fSU5fUiwgQU5BTE9HX1JFQVJfUik7DQotICAgICAgICBDT05ORUNU KFNQRElGX0NEX1IsIEFOQUxPR19SRUFSX1IpOw0KKwlDT05ORUNUKFBDTV9J Tl9SLCBBTkFMT0dfUkVBUl9SKTsNCisJQ09OTkVDVChTUERJRl9DRF9SLCBB TkFMT0dfUkVBUl9SKTsNCiAJQ09OTkVDVChQQ00xX0lOX1IsIEFOQUxPR19S RUFSX1IpOw0KIA0KLQkvKiBEaWdpdGFsIEluICsgUENNICsgQUM5NyBJbiAt LT4gRGlnaXRhbCBvdXQgKi8NCi0JT1AoNiwgMHgxMGIsIDB4MTAwLCAweDEw MiwgU1BESUZfQ0RfTCk7DQorCS8qIERpZ2l0YWwgSW4gKyBQQ00gKyBBQzk3 IEluICsgTVVMVElfRlJPTlQgLS0+IERpZ2l0YWwgb3V0ICovDQorCU9QKDYs IDB4MTBiLCAweDEwMCwgMHgxMDIsIDB4MTBjKTsNCisJT1AoNiwgMHgxMGIs IDB4MTBiLCAweDExMywgMHg0MCk7DQogDQorCUNPTk5FQ1QoTVVMVElfRlJP TlRfTCwgRElHSVRBTF9PVVRfTCk7DQogCUNPTk5FQ1QoUENNX0lOX0wsIERJ R0lUQUxfT1VUX0wpOw0KLSAgICAgICAgQ09OTkVDVChBQzk3X0lOX0wsIERJ R0lUQUxfT1VUX0wpOw0KLSAgICAgICAgQ09OTkVDVChTUERJRl9DRF9MLCBE SUdJVEFMX09VVF9MKTsNCisJQ09OTkVDVChBQzk3X0lOX0wsIERJR0lUQUxf T1VUX0wpOw0KKwlDT05ORUNUKFNQRElGX0NEX0wsIERJR0lUQUxfT1VUX0wp Ow0KIA0KLQlPUCg2LCAweDEwYSwgMHgxMDEsIDB4MTAzLCBTUERJRl9DRF9S KTsNCisJT1AoNiwgMHgxMGEsIDB4MTAxLCAweDEwMywgMHgxMGUpOw0KKwlP UCg2LCAweDEwYiwgMHgxMGIsIDB4MTE0LCAweDQwKTsNCiANCisJQ09OTkVD VChNVUxUSV9GUk9OVF9SLCBESUdJVEFMX09VVF9SKTsNCiAJQ09OTkVDVChQ Q01fSU5fUiwgRElHSVRBTF9PVVRfUik7DQogCUNPTk5FQ1QoQUM5N19JTl9S LCBESUdJVEFMX09VVF9SKTsNCiAJQ09OTkVDVChTUERJRl9DRF9SLCBESUdJ VEFMX09VVF9SKTsNCkBAIC01NDUsMjMgKzYxMSw0MCBAQA0KIA0KIAlDT05O RUNUKEFDOTdfSU5fUiwgQURDX1JFQ19SKTsNCiANCisNCisJLyogZngxMjpB bmFsb2ctQ2VudGVyICovDQorCU9QKDYsIEFOQUxPR19DRU5URVIsIDB4MTE3 LCAweDQwLCAweDQwKTsNCisJQ09OTkVDVChNVUxUSV9DRU5URVIsIEFOQUxP R19DRU5URVIpOw0KKw0KKwkvKiBmeDExOkFuYWxvZy1MRkUgKi8NCisJT1Ao NiwgQU5BTE9HX0xGRSwgMHgxMTgsIDB4NDAsIDB4NDApOw0KKwlDT05ORUNU KE1VTFRJX0xGRSwgQU5BTE9HX0xGRSk7DQorDQorCS8qIGZ4MTI6RGlnaXRh bC1DZW50ZXIgKi8NCisJT1AoNiwgRElHSVRBTF9DRU5URVIsIDB4MTE3LCAw eDQwLCAweDQwKTsNCisJQ09OTkVDVChNVUxUSV9DRU5URVIsIERJR0lUQUxf Q0VOVEVSKTsNCisNCisJLyogZngxMTpBbmFsb2ctTEZFICovDQorCU9QKDYs IERJR0lUQUxfTEZFLCAweDExOCwgMHg0MCwgMHg0MCk7DQorCUNPTk5FQ1Qo TVVMVElfTEZFLCBESUdJVEFMX0xGRSk7DQorCQ0KIAlST1VUSU5HX1BBVENI X0VORChycGF0Y2gpOw0KIA0KIA0KLQkvLyBNYXN0ZXIgdm9sdW1lIGNvbnRy b2wgb24gcmVhcg0KLQlPVVRQVVRfUEFUQ0hfU1RBUlQocGF0Y2gsICJWb2wg TWFzdGVyIEwiLCAweDgsIDApOw0KKwkvLyBSZWFyIHZvbHVtZSBjb250cm9s DQorCU9VVFBVVF9QQVRDSF9TVEFSVChwYXRjaCwgIlZvbCBSZWFyIEwiLCAw eDgsIDApOw0KIAlHRVRfSU5QVVRfR1BSKHBhdGNoLCAweDEwNCwgMHg4KTsN Ci0JR0VUX0NPTlRST0xfR1BSKHBhdGNoLCAweDEwOCwgIlZvbCIsIDAsIDB4 N2ZmZmZmZmYpOw0KKwlHRVRfQ09OVFJPTF9HUFIocGF0Y2gsIDB4MTE5LCAi Vm9sIiwgMCwgMHg3ZmZmZmZmZik7DQogDQotCU9QKDAsIEFOQUxPR19SRUFS X0wsIDB4MDQwLCAweDEwNCwgMHgxMDgpOw0KKwlPUCgwLCBBTkFMT0dfUkVB Ul9MLCAweDA0MCwgMHgxMDQsIDB4MTE5KTsNCiAJT1VUUFVUX1BBVENIX0VO RChwYXRjaCk7DQogDQogDQotCU9VVFBVVF9QQVRDSF9TVEFSVChwYXRjaCwg IlZvbCBNYXN0ZXIgUiIsIDB4OSwgMCk7DQorCU9VVFBVVF9QQVRDSF9TVEFS VChwYXRjaCwgIlZvbCBSZWFyIFIiLCAweDksIDApOw0KIAlHRVRfSU5QVVRf R1BSKHBhdGNoLCAweDEwNSwgMHg5KTsNCi0JR0VUX0NPTlRST0xfR1BSKHBh dGNoLCAweDEwOSwgIlZvbCIsIDAsIDB4N2ZmZmZmZmYpOw0KKwlHRVRfQ09O VFJPTF9HUFIocGF0Y2gsIDB4MTFhLCAiVm9sIiwgMCwgMHg3ZmZmZmZmZik7 DQogDQotCU9QKDAsIEFOQUxPR19SRUFSX1IsIDB4MDQwLCAweDEwNSwgMHgx MDkpOw0KKwlPUCgwLCBBTkFMT0dfUkVBUl9SLCAweDA0MCwgMHgxMDUsIDB4 MTFhKTsNCiAJT1VUUFVUX1BBVENIX0VORChwYXRjaCk7DQogDQogDQpAQCAt NTczLDcgKzY1Niw3IEBADQogCU9QKDAsIERJR0lUQUxfT1VUX0wsIDB4MDQw LCAweDEwYSwgMHgxMDgpOw0KIAlPVVRQVVRfUEFUQ0hfRU5EKHBhdGNoKTsN CiANCi0JDQorDQogCU9VVFBVVF9QQVRDSF9TVEFSVChwYXRjaCwgIlZvbCBN YXN0ZXIgUiIsIDB4MywgMSk7DQogCUdFVF9JTlBVVF9HUFIocGF0Y2gsIDB4 MTBiLCAweDMpOw0KIAlHRVRfQ09OVFJPTF9HUFIocGF0Y2gsIDB4MTA5LCAi Vm9sIiwgMCwgMHg3ZmZmZmZmZik7DQpAQCAtNTkwLDI0ICs2NzMsNjIgQEAN CiANCiAJbWdyLT5sb2NrID0gU1BJTl9MT0NLX1VOTE9DS0VEOw0KIA0KKw0K KwkvL01hc3RlciB2b2x1bWUNCiAJbWdyLT5jdHJsX2dwcltTT1VORF9NSVhF Ul9WT0xVTUVdWzBdID0gODsNCiAJbWdyLT5jdHJsX2dwcltTT1VORF9NSVhF Ul9WT0xVTUVdWzFdID0gOTsNCiANCiAJbGVmdCA9IGNhcmQtPmFjOTcubWl4 ZXJfc3RhdGVbU09VTkRfTUlYRVJfVk9MVU1FXSAmIDB4ZmY7DQogCXJpZ2h0 ID0gKGNhcmQtPmFjOTcubWl4ZXJfc3RhdGVbU09VTkRfTUlYRVJfVk9MVU1F XSA+PiA4KSAmIDB4ZmY7DQogDQotCWVtdTEwazFfc2V0X3ZvbHVtZV9ncHIo Y2FyZCwgOCwgbGVmdCwgIFZPTF82QklUKTsNCi0JZW11MTBrMV9zZXRfdm9s dW1lX2dwcihjYXJkLCA5LCByaWdodCwgVk9MXzZCSVQpOw0KKwllbXUxMGsx X3NldF92b2x1bWVfZ3ByKGNhcmQsIDgsIGxlZnQsIDEgPDwgY2FyZC0+YWM5 Ny5iaXRfcmVzb2x1dGlvbik7DQorCWVtdTEwazFfc2V0X3ZvbHVtZV9ncHIo Y2FyZCwgOSwgcmlnaHQsIDEgPDwgY2FyZC0+YWM5Ny5iaXRfcmVzb2x1dGlv bik7DQorDQorCS8vUmVhciB2b2x1bWUNCisJbWdyLT5jdHJsX2dwclsgU09V TkRfTUlYRVJfT0dBSU4gXVswXSA9IDB4MTk7DQorCW1nci0+Y3RybF9ncHJb IFNPVU5EX01JWEVSX09HQUlOIF1bMV0gPSAweDFhOw0KKw0KKwlsZWZ0ID0g cmlnaHQgPSA2NzsNCisJY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtTT1VORF9N SVhFUl9PR0FJTl0gPSAocmlnaHQgPDwgOCkgfCBsZWZ0Ow0KIA0KKwljYXJk LT5hYzk3LnN1cHBvcnRlZF9taXhlcnMgfD0gU09VTkRfTUFTS19PR0FJTjsN CisJY2FyZC0+YWM5Ny5zdGVyZW9fbWl4ZXJzIHw9IFNPVU5EX01BU0tfT0dB SU47DQorDQorCWVtdTEwazFfc2V0X3ZvbHVtZV9ncHIoY2FyZCwgMHgxOSwg bGVmdCwgVk9MXzVCSVQpOw0KKwllbXUxMGsxX3NldF92b2x1bWVfZ3ByKGNh cmQsIDB4MWEsIHJpZ2h0LCBWT0xfNUJJVCk7DQorDQorCS8vUENNIFZvbHVt ZQ0KIAltZ3ItPmN0cmxfZ3ByW1NPVU5EX01JWEVSX1BDTV1bMF0gPSA2Ow0K IAltZ3ItPmN0cmxfZ3ByW1NPVU5EX01JWEVSX1BDTV1bMV0gPSA3Ow0KIA0K IAlsZWZ0ID0gY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtTT1VORF9NSVhFUl9Q Q01dICYgMHhmZjsNCiAJcmlnaHQgPSAoY2FyZC0+YWM5Ny5taXhlcl9zdGF0 ZVtTT1VORF9NSVhFUl9QQ01dID4+IDgpICYgMHhmZjsNCiANCi0JZW11MTBr MV9zZXRfdm9sdW1lX2dwcihjYXJkLCA2LCBsZWZ0LCAgVk9MXzVCSVQpOw0K KwllbXUxMGsxX3NldF92b2x1bWVfZ3ByKGNhcmQsIDYsIGxlZnQsIFZPTF81 QklUKTsNCiAJZW11MTBrMV9zZXRfdm9sdW1lX2dwcihjYXJkLCA3LCByaWdo dCwgVk9MXzVCSVQpOw0KIA0KKwkvL0NELURpZ2l0YWwgVm9sdW1lDQorCW1n ci0+Y3RybF9ncHJbU09VTkRfTUlYRVJfRElHSVRBTDFdWzBdID0gMHhkOw0K KwltZ3ItPmN0cmxfZ3ByW1NPVU5EX01JWEVSX0RJR0lUQUwxXVsxXSA9IDB4 ZjsNCisNCisJbGVmdCA9IHJpZ2h0ID0gNjc7DQorCWNhcmQtPmFjOTcubWl4 ZXJfc3RhdGVbU09VTkRfTUlYRVJfRElHSVRBTDFdID0gKHJpZ2h0IDw8IDgp IHwgbGVmdDsgDQorDQorCWNhcmQtPmFjOTcuc3VwcG9ydGVkX21peGVycyB8 PSBTT1VORF9NQVNLX0RJR0lUQUwxOw0KKwljYXJkLT5hYzk3LnN0ZXJlb19t aXhlcnMgfD0gU09VTkRfTUFTS19ESUdJVEFMMTsNCisNCisJZW11MTBrMV9z ZXRfdm9sdW1lX2dwcihjYXJkLCAweGQsIGxlZnQsIFZPTF81QklUKTsNCisJ ZW11MTBrMV9zZXRfdm9sdW1lX2dwcihjYXJkLCAweGYsIHJpZ2h0LCBWT0xf NUJJVCk7DQorDQorCS8vaGFyZCB3aXJlIHRoZSBhYzk3J3MgcGNtLCB3ZSds bCBkbyB0aGF0IGluIGRzcCBjb2RlIGluc3RlYWQuDQorCWVtdTEwazFfYWM5 N193cml0ZSgmY2FyZC0+YWM5NywgMHgxOCwgMHgwKTsNCisJY2FyZC0+YWM5 N19zdXBwb3J0ZWRfbWl4ZXJzICY9IH5TT1VORF9NQVNLX1BDTTsNCisJY2Fy ZC0+YWM5N19zdGVyZW9fbWl4ZXJzICY9IH5TT1VORF9NQVNLX1BDTTsNCisN CisJLy9zZXQgSWdhaW4gdG8gMGRCIGJ5IGRlZmF1bHQsIG1heWJlIGNvbnNp ZGVyIGhhcmR3aXJpbmcgaXQgaGVyZS4NCisJZW11MTBrMV9hYzk3X3dyaXRl KCZjYXJkLT5hYzk3LCBBQzk3X1JFQ09SRF9HQUlOLCAweDAwMDApOw0KKwlj YXJkLT5hYzk3Lm1peGVyX3N0YXRlW1NPVU5EX01JWEVSX0lHQUlOXSA9IDB4 MTAxOyANCisNCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAgLTc3NSw2ICs4OTYs NyBAQA0KIAljYXJkLT5wdC5pbnRyX2dwcl9uYW1lID0gImNvdW50IjsNCiAJ Y2FyZC0+cHQuZW5hYmxlX2dwcl9uYW1lID0gImVuYWJsZSI7DQogCWNhcmQt PnB0LnBvc19ncHJfbmFtZSA9ICJwdHIiOw0KKwlzcGluX2xvY2tfaW5pdCgm Y2FyZC0+cHQubG9jayk7DQogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmNhcmQt PnB0LndhaXQpOw0KIA0KIC8qCXRtcCA9IHNibGl2ZV9yZWFkZm4wKGNhcmQs IEhDRkcpOw0KQEAgLTEwNDAsOCArMTE2Miw4IEBADQogDQogc3RhdGljIHN0 cnVjdCBtaWRpX29wZXJhdGlvbnMgZW11MTBrMV9taWRpX29wZXJhdGlvbnMg PQ0KIHsNCi0gICAgVEhJU19NT0RVTEUsDQotICAgIHsiRU1VMTBLMSBNSURJ IiwgMCwgMCwgU05EQ0FSRF9FTVUxMEsxfSwNCisJVEhJU19NT0RVTEUsDQor CXsiRU1VMTBLMSBNSURJIiwgMCwgMCwgU05EQ0FSRF9FTVUxMEsxfSwNCiAJ JnN0ZF9taWRpX3N5bnRoLA0KIAl7MH0sDQogCWVtdTEwazFfc2VxX21pZGlf b3BlbiwNCkBAIC0xMDU3LDQgKzExNzksMyBAQA0KIH07DQogDQogI2VuZGlm DQotDQpkaWZmIC11ciBsaW51eC0yLjQuMTFwcmU2Lm9yaWcvZHJpdmVycy9z b3VuZC9lbXUxMGsxL21pZGkuYyBsaW51eC0yLjQuMTFwcmU2LmVtdTEwazEv ZHJpdmVycy9zb3VuZC9lbXUxMGsxL21pZGkuYw0KLS0tIGxpbnV4LTIuNC4x MXByZTYub3JpZy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvbWlkaS5jCVN1biBB dWcgMTIgMTk6MjU6MzEgMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11 MTBrMS9kcml2ZXJzL3NvdW5kL2VtdTEwazEvbWlkaS5jCVR1ZSBPY3QgIDkg MjA6NTM6MzUgMjAwMQ0KQEAgLTk0LDcgKzk0LDYgQEANCiANCiAJRFBGKDIs ICJlbXUxMGsxX21pZGlfb3BlbigpXG4iKTsNCiANCi0JDQogCS8qIENoZWNr IGZvciBjb3JyZWN0IGRldmljZSB0byBvcGVuICovDQogCWxpc3RfZm9yX2Vh Y2goZW50cnksICZlbXUxMGsxX2RldnMpIHsNCiAJCWNhcmQgPSBsaXN0X2Vu dHJ5KGVudHJ5LCBzdHJ1Y3QgZW11MTBrMV9jYXJkLCBsaXN0KTsNCkBAIC0x MDcsMTAgKzEwNiw5IEBADQogDQogbWF0Y2g6DQogI2lmZGVmIEVNVTEwSzFf U0VRVUVOQ0VSDQotCWlmKGNhcmQtPnNlcV9taWRpZGV2KQkvKiBjYXJkIGlz IG9wZW5lZCBieSBzZXF1ZW5jZXIgKi8NCi0JCQlyZXR1cm4gLUVCVVNZOw0K KwlpZiAoY2FyZC0+c2VxX21pZGlkZXYpCS8qIGNhcmQgaXMgb3BlbmVkIGJ5 IHNlcXVlbmNlciAqLw0KKwkJcmV0dXJuIC1FQlVTWTsNCiAjZW5kaWYNCi0J DQogDQogCS8qIFdhaXQgZm9yIGRldmljZSB0byBiZWNvbWUgZnJlZSAqLw0K IAlkb3duKCZjYXJkLT5vcGVuX3NlbSk7DQpAQCAtMTMwLDkgKzEyOCw4IEBA DQogCQlkb3duKCZjYXJkLT5vcGVuX3NlbSk7DQogCX0NCiANCi0JaWYgKCht aWRpX2RldiA9IChzdHJ1Y3QgZW11MTBrMV9taWRpZGV2aWNlICopIGttYWxs b2Moc2l6ZW9mKCptaWRpX2RldiksIEdGUF9LRVJORUwpKSA9PSBOVUxMKSB7 DQorCWlmICgobWlkaV9kZXYgPSAoc3RydWN0IGVtdTEwazFfbWlkaWRldmlj ZSAqKSBrbWFsbG9jKHNpemVvZigqbWlkaV9kZXYpLCBHRlBfS0VSTkVMKSkg PT0gTlVMTCkNCiAJCXJldHVybiAtRUlOVkFMOw0KLQl9DQogDQogCW1pZGlf ZGV2LT5jYXJkID0gY2FyZDsNCiAJbWlkaV9kZXYtPm1pc3RhdGUgPSBNSURJ SU5fU1RBVEVfU1RPUFBFRDsNCkBAIC0yNDQsNyArMjQxLDYgQEANCiAJd2Fr ZV91cF9pbnRlcnJ1cHRpYmxlKCZjYXJkLT5vcGVuX3dhaXQpOw0KIA0KIAl1 bmxvY2tfa2VybmVsKCk7DQotCQ0KIA0KIAlyZXR1cm4gMDsNCiB9DQpAQCAt NDYyLDI0ICs0NTgsMjIgQEANCiAJCQkJdm9pZCAoKmlucHV0KSAoaW50IGRl diwgdW5zaWduZWQgY2hhciBkYXRhKSwNCiAJCQkJdm9pZCAoKm91dHB1dCkg KGludCBkZXYpKQ0KIHsNCi0gICAgc3RydWN0IGVtdTEwazFfY2FyZCAqY2Fy ZDsNCi0gICAgc3RydWN0IG1pZGlfb3BlbmluZm8gZHNDYXJkTWlkaU9wZW5J bmZvOw0KKwlzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJkOw0KKwlzdHJ1Y3Qg bWlkaV9vcGVuaW5mbyBkc0NhcmRNaWRpT3BlbkluZm87DQogCXN0cnVjdCBl bXUxMGsxX21pZGlkZXZpY2UgKm1pZGlfZGV2Ow0KLQkJDQotCWlmKCAgICBt aWRpX2RldnNbZGV2XSA9PSBOVUxMDQotCQl8fCBtaWRpX2RldnNbZGV2XS0+ ZGV2YyA9PSBOVUxMKQ0KLQkJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlpZiAo bWlkaV9kZXZzW2Rldl0gPT0gTlVMTCB8fCBtaWRpX2RldnNbZGV2XS0+ZGV2 YyA9PSBOVUxMKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQogDQogCWNhcmQgPSBt aWRpX2RldnNbZGV2XS0+ZGV2YzsNCiANCi0JaWYoY2FyZC0+b3Blbl9tb2Rl KQkJLyogY2FyZCBpcyBvcGVuZWQgbmF0aXZlICovDQotCQkJcmV0dXJuIC1F QlVTWTsNCisJaWYgKGNhcmQtPm9wZW5fbW9kZSkJCS8qIGNhcmQgaXMgb3Bl bmVkIG5hdGl2ZSAqLw0KKwkJcmV0dXJuIC1FQlVTWTsNCiAJCQkNCiAJRFBG KDIsICJlbXUxMGsxX3NlcV9taWRpX29wZW4oKVxuIik7DQogCQ0KLQlpZiAo KG1pZGlfZGV2ID0gKHN0cnVjdCBlbXUxMGsxX21pZGlkZXZpY2UgKikga21h bGxvYyhzaXplb2YoKm1pZGlfZGV2KSwgR0ZQX0tFUk5FTCkpID09IE5VTEwp IHsNCisJaWYgKChtaWRpX2RldiA9IChzdHJ1Y3QgZW11MTBrMV9taWRpZGV2 aWNlICopIGttYWxsb2Moc2l6ZW9mKCptaWRpX2RldiksIEdGUF9LRVJORUwp KSA9PSBOVUxMKQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQotCX0NCiANCiAJbWlk aV9kZXYtPmNhcmQgPSBjYXJkOw0KIAltaWRpX2Rldi0+bWlzdGF0ZSA9IE1J RElJTl9TVEFURV9TVE9QUEVEOw0KQEAgLTQ5MiwxMCArNDg2LDEwIEBADQog DQogCWRzQ2FyZE1pZGlPcGVuSW5mby5yZWZkYXRhID0gKHVuc2lnbmVkIGxv bmcpIG1pZGlfZGV2Ow0KIA0KLSAgICBpZiAoZW11MTBrMV9tcHVvdXRfb3Bl bihjYXJkLCAmZHNDYXJkTWlkaU9wZW5JbmZvKSA8IDApIHsNCi0gICAgICAg IEVSUk9SKCk7DQotICAgICAgICByZXR1cm4gLUVOT0RFVjsNCi0gICAgfQ0K KwlpZiAoZW11MTBrMV9tcHVvdXRfb3BlbihjYXJkLCAmZHNDYXJkTWlkaU9w ZW5JbmZvKSA8IDApIHsNCisJCUVSUk9SKCk7DQorCQlyZXR1cm4gLUVOT0RF VjsNCisJfQ0KIA0KIAljYXJkLT5zZXFfbWlkaWRldiA9IG1pZGlfZGV2Ow0K IAkJDQpAQCAtNTA3LDI5ICs1MDEsMjYgQEANCiAJc3RydWN0IGVtdTEwazFf Y2FyZCAqY2FyZDsNCiANCiAJRFBGKDIsICJlbXUxMGsxX3NlcV9taWRpX2Ns b3NlKClcbiIpOw0KLSAgICBpZiggICAgbWlkaV9kZXZzW2Rldl0gPT0gTlVM TA0KLSAgICAgICAgfHwgbWlkaV9kZXZzW2Rldl0tPmRldmMgPT0gTlVMTCkN Ci0JCQlyZXR1cm47DQorCWlmIChtaWRpX2RldnNbZGV2XSA9PSBOVUxMIHx8 IG1pZGlfZGV2c1tkZXZdLT5kZXZjID09IE5VTEwpDQorCQlyZXR1cm47DQog DQogCWNhcmQgPSBtaWRpX2RldnNbZGV2XS0+ZGV2YzsNCiAJZW11MTBrMV9t cHVvdXRfY2xvc2UoY2FyZCk7DQogDQotCWlmKGNhcmQtPnNlcV9taWRpZGV2 KSB7DQotCQkJa2ZyZWUoY2FyZC0+c2VxX21pZGlkZXYpOw0KLQkJCWNhcmQt PnNlcV9taWRpZGV2ID0gMDsNCisJaWYgKGNhcmQtPnNlcV9taWRpZGV2KSB7 DQorCQlrZnJlZShjYXJkLT5zZXFfbWlkaWRldik7DQorCQljYXJkLT5zZXFf bWlkaWRldiA9IDA7DQogCX0NCiB9DQogDQogaW50IGVtdTEwazFfc2VxX21p ZGlfb3V0KGludCBkZXYsIHVuc2lnbmVkIGNoYXIgbWlkaV9ieXRlKQ0KIHsN Ci0NCiAJc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZDsNCiAJc3RydWN0IG1p ZGlfaGRyICptaWRpaGRyOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0K LQlpZiggICAgbWlkaV9kZXZzW2Rldl0gPT0gTlVMTA0KLSAgICAgICAgfHwg bWlkaV9kZXZzW2Rldl0tPmRldmMgPT0gTlVMTCkNCi0JCQlyZXR1cm4gLUVJ TlZBTDsNCisJaWYgKG1pZGlfZGV2c1tkZXZdID09IE5VTEwgfHwgbWlkaV9k ZXZzW2Rldl0tPmRldmMgPT0gTlVMTCkNCisJCXJldHVybiAtRUlOVkFMOw0K IA0KIAljYXJkID0gbWlkaV9kZXZzW2Rldl0tPmRldmM7DQogDQpAQCAtNTgz LDIxICs1NzQsMjIgQEANCiAJc3RydWN0IG1pZGlfcXVldWUgKnF1ZXVlOw0K IAlzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJkOw0KIA0KLQlpZiggICAgbWlk aV9kZXZzW2Rldl0gPT0gTlVMTA0KLSAgICAgICAgfHwgbWlkaV9kZXZzW2Rl dl0tPmRldmMgPT0gTlVMTCkNCi0JCQlyZXR1cm4gLUVJTlZBTDsNCisJaWYg KG1pZGlfZGV2c1tkZXZdID09IE5VTEwgfHwgbWlkaV9kZXZzW2Rldl0tPmRl dmMgPT0gTlVMTCkNCisJCXJldHVybiAtRUlOVkFMOw0KIA0KIAljb3VudCA9 IDA7DQotCQ0KKw0KIAljYXJkID0gbWlkaV9kZXZzW2Rldl0tPmRldmM7DQog CXF1ZXVlID0gY2FyZC0+bXB1b3V0LT5maXJzdG1pZGlxOw0KIA0KLQl3aGls ZShxdWV1ZSAhPSBOVUxMKSB7DQotCQkJY291bnQrKzsNCi0JCQlpZihxdWV1 ZSA9PSBjYXJkLT5tcHVvdXQtPmxhc3RtaWRpcSkNCi0JCQkJCWJyZWFrOw0K LQkJCXF1ZXVlID0gcXVldWUtPm5leHQ7DQorCXdoaWxlIChxdWV1ZSAhPSBO VUxMKSB7DQorCQljb3VudCsrOw0KKwkJaWYgKHF1ZXVlID09IGNhcmQtPm1w dW91dC0+bGFzdG1pZGlxKQ0KKwkJCWJyZWFrOw0KKw0KKwkJcXVldWUgPSBx dWV1ZS0+bmV4dDsNCiAJfQ0KKw0KIAlyZXR1cm4gY291bnQ7DQogfQ0KIA0K ZGlmZiAtdXIgbGludXgtMi40LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQv ZW11MTBrMS9taXhlci5jIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2 ZXJzL3NvdW5kL2VtdTEwazEvbWl4ZXIuYw0KLS0tIGxpbnV4LTIuNC4xMXBy ZTYub3JpZy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvbWl4ZXIuYwlTYXQgQXVn IDExIDA2OjAyOjE5IDIwMDENCisrKyBsaW51eC0yLjQuMTFwcmU2LmVtdTEw azEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL21peGVyLmMJVHVlIE9jdCAgOSAy MDo1MzozNSAyMDAxDQpAQCAtNDAsNDQgKzQwLDE0OSBAQA0KICNpbmNsdWRl ICI4MDEwLmgiDQogI2luY2x1ZGUgInJlY21nci5oIg0KIA0KLS8vRklYTUU6 IFNPVU5EX01JWEVSX1ZPTFVNRSBzaG91bGQgYmUgc2VsZWN0YWJsZSA1IG9y IDYgYml0DQotY29uc3Qgc3RydWN0IG9zc19zY2FsaW5nIHZvbHVtZV9wYXJh bXNbU09VTkRfTUlYRVJfTlJERVZJQ0VTXT0gew0KLS8qIFVzZWQgYnkgdGhl IGFjOTcgZHJpdmVyICovDQotCVtTT1VORF9NSVhFUl9WT0xVTUVdCT0Je1ZP TF82QklUfSwNCi0JW1NPVU5EX01JWEVSX0JBU1NdCT0Je1ZPTF80QklUfSwN Ci0JW1NPVU5EX01JWEVSX1RSRUJMRV0JPQl7Vk9MXzRCSVR9LA0KLQlbU09V TkRfTUlYRVJfUENNXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9T UEVBS0VSXQk9CXtWT0xfNEJJVH0sDQotCVtTT1VORF9NSVhFUl9MSU5FXQk9 CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9NSUNdCT0Je1ZPTF81QklU fSwNCi0JW1NPVU5EX01JWEVSX0NEXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VO RF9NSVhFUl9BTFRQQ01dCT0Je1ZPTF82QklUfSwNCi0JW1NPVU5EX01JWEVS X0lHQUlOXQk9CXtWT0xfNEJJVH0sDQotCVtTT1VORF9NSVhFUl9MSU5FMV0J PQl7Vk9MXzVCSVR9LA0KLQlbU09VTkRfTUlYRVJfUEhPTkVJTl0JPSAJe1ZP TF81QklUfSwNCi0JW1NPVU5EX01JWEVSX1BIT05FT1VUXQk9IAl7Vk9MXzZC SVR9LA0KLQlbU09VTkRfTUlYRVJfVklERU9dCT0Je1ZPTF81QklUfSwNCi0v KiBOb3QgdXNlZCBieSB0aGUgYWM5NyBkcml2ZXIgKi8NCi0JW1NPVU5EX01J WEVSX1NZTlRIXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9JTUlY XQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9SRUNMRVZdCT0Je1ZP TF81QklUfSwNCi0JW1NPVU5EX01JWEVSX09HQUlOXQk9CXtWT0xfNUJJVH0s DQotCVtTT1VORF9NSVhFUl9MSU5FMl0JPQl7Vk9MXzVCSVR9LA0KLQlbU09V TkRfTUlYRVJfTElORTNdCT0Je1ZPTF81QklUfSwNCi0JW1NPVU5EX01JWEVS X0RJR0lUQUwxXQk9CXtWT0xfNUJJVH0sDQotCVtTT1VORF9NSVhFUl9ESUdJ VEFMMl0JPQl7Vk9MXzVCSVR9LA0KLQlbU09VTkRfTUlYRVJfRElHSVRBTDNd CT0Je1ZPTF81QklUfSwNCi0JW1NPVU5EX01JWEVSX1JBRElPXQk9CXtWT0xf NUJJVH0sDQotCVtTT1VORF9NSVhFUl9NT05JVE9SXQk9CXtWT0xfNUJJVH0N CisNCitzdGF0aWMgY29uc3QgdTMyIGJhc3NfdGFibGVbNDFdWzVdID0gew0K Kwl7IDB4M2U0Zjg0NGYsIDB4ODRlZDRjYzMsIDB4M2NjNjk5MjcsIDB4N2Iw MzU1M2EsIDB4YzRkYTg0ODYgfSwNCisJeyAweDNlNjlhMTdhLCAweDg0YzI4 MGZiLCAweDNjZDc3Y2Q0LCAweDdiMmYyYTZmLCAweGM0YjA4ZDFkIH0sDQor CXsgMHgzZTgyZmY0MiwgMHg4NDk5OTFkNSwgMHgzY2U3NDY2YiwgMHg3YjU5 MTdjNiwgMHhjNDg4NjNlZSB9LA0KKwl7IDB4M2U5YmFiM2MsIDB4ODQ3MjY3 ZjAsIDB4M2NmNWZmZTgsIDB4N2I4MTM1NjAsIDB4YzQ2MWYyMmMgfSwNCisJ eyAweDNlYjNiMjc1LCAweDg0NGNlZDI5LCAweDNkMDNiMjk1LCAweDdiYTc5 YTFjLCAweGM0M2QyMjNiIH0sDQorCXsgMHgzZWNiMjE3NCwgMHg4NDI5MGM4 YiwgMHgzZDEwNjcxNCwgMHg3YmNjNWJhMywgMHhjNDE5ZGZhNSB9LA0KKwl7 IDB4M2VlMjA0NGIsIDB4ODQwNmIyNDQsIDB4M2QxYzI1NjEsIDB4N2JlZjhl NzcsIDB4YzNmODE3MGYgfSwNCisJeyAweDNlZjg2Njk4LCAweDgzZTVjYjk2 LCAweDNkMjZmNGQ4LCAweDdjMTE0NjAwLCAweGMzZDdiNjI1IH0sDQorCXsg MHgzZjBlNTM5MCwgMHg4M2M2NDZjOSwgMHgzZDMwZGMzOSwgMHg3YzMxOTQ5 OCwgMHhjM2I4YWI5NyB9LA0KKwl7IDB4M2YyM2Q2MGIsIDB4ODNhODEzMjEs IDB4M2QzOWUxYWYsIDB4N2M1MDhiOWMsIDB4YzM5YWU3MDQgfSwNCisJeyAw eDNmMzhmODg0LCAweDgzOGIyMGQyLCAweDNkNDIwYWQyLCAweDdjNmUzYjc1 LCAweGMzN2U1OGYxIH0sDQorCXsgMHgzZjRkYzUyYywgMHg4MzZmNjBlZiwg MHgzZDQ5NWNhYiwgMHg3YzhhYjNhNiwgMHhjMzYyZjJiZSB9LA0KKwl7IDB4 M2Y2MjQ1ZTgsIDB4ODM1NGM1NjUsIDB4M2Q0ZmRiYjgsIDB4N2NhNjAyZDYs IDB4YzM0OGE2OWIgfSwNCisJeyAweDNmNzY4NDVmLCAweDgzM2I0MGVjLCAw eDNkNTU4YmYwLCAweDdjYzAzNmRmLCAweGMzMmY2NzdjIH0sDQorCXsgMHgz ZjhhOGEwMywgMHg4MzIyYzZmYiwgMHgzZDVhNzBjNCwgMHg3Y2Q5NWNkNywg MHhjMzE3MjkwYiB9LA0KKwl7IDB4M2Y5ZTYwMTQsIDB4ODMwYjRiYzMsIDB4 M2Q1ZThkMjUsIDB4N2NmMTgxMWEsIDB4YzJmZmRmYTUgfSwNCisJeyAweDNm YjIwZmFlLCAweDgyZjRjNDIwLCAweDNkNjFlMzdmLCAweDdkMDhhZjU2LCAw eGMyZTk4MDRhIH0sDQorCXsgMHgzZmM1YTFjYywgMHg4MmRmMjU5MiwgMHgz ZDY0NzVjMywgMHg3ZDFlZjI5NCwgMHhjMmQ0MDA5NiB9LA0KKwl7IDB4M2Zk OTFmNTUsIDB4ODJjYTY2MzIsIDB4M2Q2NjQ1NjQsIDB4N2QzNDU1NDEsIDB4 YzJiZjU2YjkgfSwNCisJeyAweDNmZWM5MTIwLCAweDgyYjY3Y2FjLCAweDNk Njc1MzU2LCAweDdkNDhlMTM4LCAweGMyYWI3OTZlIH0sDQorCXsgMHg0MDAw MDAwMCwgMHg4MmEzNjAzNywgMHgzZDY3YTAxMiwgMHg3ZDVjOWZjOSwgMHhj Mjk4NWZlZSB9LA0KKwl7IDB4NDAxMzc0YzcsIDB4ODI5MTA4OGEsIDB4M2Q2 NzJiOTMsIDB4N2Q2Zjk5YzMsIDB4YzI4NjAxZjIgfSwNCisJeyAweDQwMjZm ODU3LCAweDgyN2Y2ZGQ3LCAweDNkNjVmNTU5LCAweDdkODFkNzdjLCAweGMy NzQ1N2EzIH0sDQorCXsgMHg0MDNhOTM5ZiwgMHg4MjZlODhjNSwgMHgzZDYz ZmM2MywgMHg3ZDkzNjBkNCwgMHhjMjYzNTk5NiB9LA0KKwl7IDB4NDA0ZTRm YWYsIDB4ODI1ZTUyNjYsIDB4M2Q2MTNmMzIsIDB4N2RhNDNkNDIsIDB4YzI1 MzAwYzYgfSwNCisJeyAweDQwNjIzNWJhLCAweDgyNGVjNDM0LCAweDNkNWRi YmMzLCAweDdkYjQ3M2Q3LCAweGMyNDM0NjhlIH0sDQorCXsgMHg0MDc2NGYx ZiwgMHg4MjNmZDgwYywgMHgzZDU5NmY4ZiwgMHg3ZGM0MGI0NCwgMHhjMjM0 MjRhMiB9LA0KKwl7IDB4NDA4YWE1NzYsIDB4ODIzMTg4MjQsIDB4M2Q1NDU3 ODcsIDB4N2RkMzA5ZTIsIDB4YzIyNTk1MDkgfSwNCisJeyAweDQwOWY0Mjk2 LCAweDgyMjNjZjBiLCAweDNkNGU3MDEyLCAweDdkZTE3NWI1LCAweGMyMTc5 MjE4IH0sDQorCXsgMHg0MGI0MzBhMCwgMHg4MjE2YTdhMSwgMHgzZDQ3YjUw NSwgMHg3ZGVmNTQ3NSwgMHhjMjBhMTY3MCB9LA0KKwl7IDB4NDBjOTdhMGEs IDB4ODIwYTBkMTIsIDB4M2Q0MDIxYTEsIDB4N2RmY2FiOGQsIDB4YzFmZDFj ZjUgfSwNCisJeyAweDQwZGYyOWE2LCAweDgxZmRmYWQ2LCAweDNkMzdiMDhk LCAweDdlMDk4MDI4LCAweGMxZjBhMGNhIH0sDQorCXsgMHg0MGY1NGFiMSwg MHg4MWYyNmNhOSwgMHgzZDJlNWJkMSwgMHg3ZTE1ZDcyYiwgMHhjMWU0OWQ1 MiB9LA0KKwl7IDB4NDEwYmU4ZGEsIDB4ODFlNzVlODksIDB4M2QyNDFjY2Us IDB4N2UyMWI1NDQsIDB4YzFkOTBlMjQgfSwNCisJeyAweDQxMjMxMDUxLCAw eDgxZGNjY2IzLCAweDNkMThlYzM3LCAweDdlMmQxZWU2LCAweGMxY2RlZjEw IH0sDQorCXsgMHg0MTNhY2RkMCwgMHg4MWQyYjM5ZSwgMHgzZDBjYzIwYSwg MHg3ZTM4MTg0ZSwgMHhjMWMzM2MxMyB9LA0KKwl7IDB4NDE1MzJlYTcsIDB4 ODFjOTBmZmIsIDB4M2NmZjk1ODUsIDB4N2U0MmE1OGIsIDB4YzFiOGYxNWEg fSwNCisJeyAweDQxNmM0MGNkLCAweDgxYmZkZWIyLCAweDNjZjE1ZDIxLCAw eDdlNGNjYTdjLCAweGMxYWYwYjNmIH0sDQorCXsgMHg0MTg2MTJlYSwgMHg4 MWI3MWNkYywgMHgzY2UyMGU4NSwgMHg3ZTU2OGFkMywgMHhjMWE1ODY0MCB9 LA0KKwl7IDB4NDFhMGI0NjUsIDB4ODFhZWM3YzUsIDB4M2NkMTllN2MsIDB4 N2U1ZmVhMWUsIDB4YzE5YzVmMDMgfSwNCisJeyAweDQxYmMzNTczLCAweDgx YTZkY2VhLCAweDNjYzAwMGU5LCAweDdlNjhlYmMyLCAweGMxOTM5MjUwIH0N Cit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1MzIgdHJlYmxlX3RhYmxlWzQxXVs1 XSA9IHsNCisJeyAweDAxMjVjYmE5LCAweGZlZDVkZWJkLCAweDAwNTk5YjZj LCAweDBkMjUwNmRhLCAweGZhODViMzU0IH0sDQorCXsgMHgwMTQyZjY3ZSwg MHhmZWIwMzE2MywgMHgwMDY2Y2QwZiwgMHgwZDE0YzY5ZCwgMHhmYTkxNDQ3 MyB9LA0KKwl7IDB4MDE2MzI4YmQsIDB4ZmU4NjAxNTgsIDB4MDA3NWI3ZjIs IDB4MGQwM2ViMjcsIDB4ZmE5ZDMyZDIgfSwNCisJeyAweDAxODZiNDM4LCAw eGZlNTZjOTgyLCAweDAwODY5MjM0LCAweDBjZjI3MDQ4LCAweGZhYTk3ZmNh IH0sDQorCXsgMHgwMWFkZjM1OCwgMHhmZTIxZjVmZSwgMHgwMDk5OTg0Miwg MHgwY2UwNTFjMiwgMHhmYWI2MmNhNSB9LA0KKwl7IDB4MDFkOTQ5ZmEsIDB4 ZmRlNmUyODcsIDB4MDBhZjBkOGQsIDB4MGNjZDhiNGEsIDB4ZmFjMzNhYTcg fSwNCisJeyAweDAyMDkyNjY5LCAweGZkYTRkOGJmLCAweDAwYzczZDRjLCAw eDBjYmExODg0LCAweGZhZDBhYjA3IH0sDQorCXsgMHgwMjNlMDI2OCwgMHhm ZDViMGU0YSwgMHgwMGUyN2I1NCwgMHgwY2E1ZjUwOSwgMHhmYWRlN2VmMiB9 LA0KKwl7IDB4MDI3ODY0NWMsIDB4ZmQwOGEyYjAsIDB4MDEwMTI1MDksIDB4 MGM5MTFjNjMsIDB4ZmFlY2I3ODggfSwNCisJeyAweDAyYjhlMDkxLCAweGZj YWM5ZDFhLCAweDAxMjNhMjYyLCAweDBjN2I4YTE0LCAweGZhZmI1NWRmIH0s DQorCXsgMHgwMzAwMWE5YSwgMHhmYzQ1ZTljZSwgMHgwMTRhNjcwOSwgMHgw YzY1Mzk4ZiwgMHhmYjBhNWFmZiB9LA0KKwl7IDB4MDM0ZWM2ZDcsIDB4ZmJk MzU3NmIsIDB4MDE3NWYzOTcsIDB4MGM0ZTI2NDMsIDB4ZmIxOWM3ZTQgfSwN CisJeyAweDAzYTVhYzE1LCAweGZiNTM5M2VlLCAweDAxYTZkNmVkLCAweDBj MzY0Yjk0LCAweGZiMjk5ZDdjIH0sDQorCXsgMHgwNDA1YTU2MiwgMHhmYWM1 Mjk2OCwgMHgwMWRkYWZhZSwgMHgwYzFkYTRlMiwgMHhmYjM5ZGNhNSB9LA0K Kwl7IDB4MDQ2ZmEzZmUsIDB4ZmEyNjdhNjYsIDB4MDIxYjJkZGQsIDB4MGMw NDJkOGQsIDB4ZmI0YTg2MzEgfSwNCisJeyAweDA0ZTRiMTdmLCAweGY5NzVi ZTBmLCAweDAyNjAxNDlmLCAweDBiZTllMGYyLCAweGZiNWI5YWUwIH0sDQor CXsgMHgwNTY1ZjIyMCwgMHhmOGIwZmJlNSwgMHgwMmFkM2MyOSwgMHgwYmNl YmE3MywgMHhmYjZkMWI2MCB9LA0KKwl7IDB4MDVmNGE3NDUsIDB4ZjdkNjA3 MjIsIDB4MDMwMzkzZDQsIDB4MGJiMmI1NzgsIDB4ZmI3ZjA4NGQgfSwNCisJ eyAweDA2OTIzMjM2LCAweGY2ZTI3OWJkLCAweDAzNjQyNDY1LCAweDBiOTVj ZDc1LCAweGZiOTE2MjMzIH0sDQorCXsgMHgwNzQwMTcxMywgMHhmNWQzYWVm OSwgMHgwM2QwMTI4MywgMHgwYjc3ZmRlZCwgMHhmYmE0Mjk4NCB9LA0KKwl7 IDB4MDgwMDAwMDAsIDB4ZjRhNmJkODgsIDB4MDQ0OGExNjEsIDB4MGI1OTQy NzgsIDB4ZmJiNzVlOWYgfSwNCisJeyAweDA4ZDNjMDk3LCAweGYzNTg3MTMx LCAweDA0Y2YzNWE0LCAweDBiMzk5NmM5LCAweGZiY2IwMWNiIH0sDQorCXsg MHgwOWJkNTlhMiwgMHhmMWU1NDNmOSwgMHgwNTY1NTg4MCwgMHgwYjE4ZjZi MiwgMHhmYmRmMTMzMyB9LA0KKwl7IDB4MGFiZWZkMGYsIDB4ZjA0OTU2Y2Es IDB4MDYwY2JiMTIsIDB4MGFmNzVlMmMsIDB4ZmJmMzkyZTggfSwNCisJeyAw eDBiZGIxMjNlLCAweGVlODA2OTg0LCAweDA2YzczOWZlLCAweDBhZDRjOTYy LCAweGZjMDg4MGRkIH0sDQorCXsgMHgwZDE0M2E5NCwgMHhlYzg1ZDI4Nywg MHgwNzk2ZTE1MCwgMHgwYWIxMzRiMCwgMHhmYzFkZGNlNSB9LA0KKwl7IDB4 MGU2ZDU2NjQsIDB4ZWE1NDc1OTgsIDB4MDg3ZGYwYTAsIDB4MGE4YzljYjYs IDB4ZmMzM2E2YWQgfSwNCisJeyAweDBmZTk4YTJhLCAweGU3ZTZiYTM1LCAw eDA5N2VkZjgzLCAweDBhNjZmZTViLCAweGZjNDlkZGMyIH0sDQorCXsgMHgx MThjNDQyMSwgMHhlNTM2ODEzYSwgMHgwYTljNjI0OCwgMHgwYTQwNTZkNywg MHhmYzYwODE4NSB9LA0KKwl7IDB4MTM1OTQyMmUsIDB4ZTIzZDE5ZWIsIDB4 MGJkOTZlZmIsIDB4MGExOGEzYmYsIDB4ZmM3NzkxMmMgfSwNCisJeyAweDE1 NTQ5ODJiLCAweGRlZjMzNjQ1LCAweDBkMzk0MmJkLCAweDA5ZWZlMzEyLCAw eGZjOGYwYmMxIH0sDQorCXsgMHgxNzgyYjY4YSwgMHhkYjUwZGViMSwgMHgw ZWJmNjc2ZCwgMHgwOWM2MTMzZiwgMHhmY2E2ZjAxOSB9LA0KKwl7IDB4MTll ODcxNWQsIDB4ZDc0ZDY0ZmQsIDB4MTA2ZmI5OTksIDB4MDk5YjMzMzcsIDB4 ZmNiZjNjZDYgfSwNCisJeyAweDFjOGIwN2I4LCAweGQyZGY1NmFiLCAweDEy NGU2ZWM4LCAweDA5NmY0Mjc0LCAweGZjZDdmMDYwIH0sDQorCXsgMHgxZjcw MmI2ZCwgMHhjZGZjNmU5MiwgMHgxNDYwMWMxMCwgMHgwOTQyNDEwYiwgMHhm Y2YxMDhlNSB9LA0KKwl7IDB4MjI5ZTA5MzMsIDB4Yzg5OTg1Y2QsIDB4MTZh OWJjZmEsIDB4MDkxNDJmYjUsIDB4ZmQwYTg0NTEgfSwNCisJeyAweDI2MWI1 MTE4LCAweGMyYWE4NDA5LCAweDE5MzBiYWI2LCAweDA4ZTUwZmRjLCAweGZk MjQ2MDRkIH0sDQorCXsgMHgyOWVmM2Y1ZCwgMHhiYzIyNGYyOCwgMHgxYmZh ZjM5NiwgMHgwOGI0ZTNhYSwgMHhmZDNlOWEzYiB9LA0KKwl7IDB4MmUyMWE1 OWIsIDB4YjRmMmJhNDYsIDB4MWYwZWMyZDYsIDB4MDg4M2FlMTUsIDB4ZmQ1 OTJmMzMgfSwNCisJeyAweDMyYmFmNDRiLCAweGFkMGM3NDI5LCAweDIyNzMw OGEzLCAweDA4NTE3MmViLCAweGZkNzQxYmZkIH0sDQorCXsgMHgzN2M0NDQ4 YiwgMHhhNDVlZjUxZCwgMHgyNjJmMzI2NywgMHgwODFlMzZkYywgMHhmZDhm NWQxNCB9DQogfTsNCi1zdGF0aWMgbG9mZl90IGVtdTEwazFfbWl4ZXJfbGxz ZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3Jp Z2luKQ0KKw0KKw0KK3N0YXRpYyB2b2lkIHNldF9iYXNzKHN0cnVjdCBlbXUx MGsxX2NhcmQgKmNhcmQsIGludCBsLCBpbnQgcikNCiB7DQotCURQRigyLCAi c2JsaXZlX21peGVyX2xsc2VlaygpIGNhbGxlZFxuIik7DQotCXJldHVybiAt RVNQSVBFOw0KKwlpbnQgaTsNCisNCisJbCA9IChsICogNDAgKyA1MCkgLyAx MDA7DQorCXIgPSAociAqIDQwICsgNTApIC8gMTAwOw0KKw0KKwlmb3IgKGkg PSAwOyBpIDwgNTsgaSsrKQ0KKwkJc2JsaXZlX3dyaXRlcHRyKGNhcmQsIEdQ Ul9CQVNFICsgY2FyZC0+bWdyLmN0cmxfZ3ByW1NPVU5EX01JWEVSX0JBU1Nd WzBdICsgaSwgMCwgYmFzc190YWJsZVtsXVtpXSk7DQogfQ0KIA0KLS8qIE1p eGVyIGZpbGUgb3BlcmF0aW9ucyAqLw0KK3N0YXRpYyB2b2lkIHNldF90cmVi bGUoc3RydWN0IGVtdTEwazFfY2FyZCAqY2FyZCwgaW50IGwsIGludCByKQ0K K3sNCisJaW50IGk7DQorDQorCWwgPSAobCAqIDQwICsgNTApIC8gMTAwOw0K KwlyID0gKHIgKiA0MCArIDUwKSAvIDEwMDsNCisNCisJZm9yIChpID0gMDsg aSA8IDU7IGkrKykNCisJCXNibGl2ZV93cml0ZXB0cihjYXJkLCBHUFJfQkFT RSArIGNhcmQtPm1nci5jdHJsX2dwcltTT1VORF9NSVhFUl9UUkVCTEVdWzBd ICsgaSAsIDAsIHRyZWJsZV90YWJsZVtsXVtpXSk7DQorfQ0KKw0KK2NvbnN0 IGNoYXIgdm9sdW1lX3BhcmFtc1tTT1VORF9NSVhFUl9OUkRFVklDRVNdPSB7 DQorLyogVXNlZCBieSB0aGUgYWM5NyBkcml2ZXIgKi8NCisJW1NPVU5EX01J WEVSX1ZPTFVNRV0JPQlWT0xfNkJJVCwNCisJW1NPVU5EX01JWEVSX0JBU1Nd CT0JVk9MXzRCSVQsDQorCVtTT1VORF9NSVhFUl9UUkVCTEVdCT0JVk9MXzRC SVQsDQorCVtTT1VORF9NSVhFUl9QQ01dCT0JVk9MXzVCSVQsDQorCVtTT1VO RF9NSVhFUl9TUEVBS0VSXQk9CVZPTF80QklULA0KKwlbU09VTkRfTUlYRVJf TElORV0JPQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX01JQ10JPQlWT0xf NUJJVCwNCisJW1NPVU5EX01JWEVSX0NEXQk9CVZPTF81QklULA0KKwlbU09V TkRfTUlYRVJfQUxUUENNXQk9CVZPTF82QklULA0KKwlbU09VTkRfTUlYRVJf SUdBSU5dCT0JVk9MXzRCSVQsDQorCVtTT1VORF9NSVhFUl9MSU5FMV0JPQlW T0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX1BIT05FSU5dCT0gCVZPTF81QklU LA0KKwlbU09VTkRfTUlYRVJfUEhPTkVPVVRdCT0gCVZPTF82QklULA0KKwlb U09VTkRfTUlYRVJfVklERU9dCT0JVk9MXzVCSVQsDQorLyogTm90IHVzZWQg YnkgdGhlIGFjOTcgZHJpdmVyICovDQorCVtTT1VORF9NSVhFUl9TWU5USF0J PQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX0lNSVhdCT0JVk9MXzVCSVQs DQorCVtTT1VORF9NSVhFUl9SRUNMRVZdCT0JVk9MXzVCSVQsDQorCVtTT1VO RF9NSVhFUl9PR0FJTl0JPQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX0xJ TkUyXQk9CVZPTF81QklULA0KKwlbU09VTkRfTUlYRVJfTElORTNdCT0JVk9M XzVCSVQsDQorCVtTT1VORF9NSVhFUl9ESUdJVEFMMV0JPQlWT0xfNUJJVCwN CisJW1NPVU5EX01JWEVSX0RJR0lUQUwyXQk9CVZPTF81QklULA0KKwlbU09V TkRfTUlYRVJfRElHSVRBTDNdCT0JVk9MXzVCSVQsDQorCVtTT1VORF9NSVhF Ul9SQURJT10JPQlWT0xfNUJJVCwNCisJW1NPVU5EX01JWEVSX01PTklUT1Jd CT0JVk9MXzVCSVQNCit9Ow0KIA0KKy8qIE1peGVyIGZpbGUgb3BlcmF0aW9u cyAqLw0KIHN0YXRpYyBpbnQgZW11MTBrMV9wcml2YXRlX21peGVyKHN0cnVj dCBlbXUxMGsxX2NhcmQgKmNhcmQsIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln bmVkIGxvbmcgYXJnKQ0KIHsNCiAJc3RydWN0IG1peGVyX3ByaXZhdGVfaW9j dGwgKmN0bDsNCkBAIC0xNTAsMTcgKzI1NSwyMyBAQA0KIAkJCQkJcmV0ID0g LUVJTlZBTDsNCiAJCQkJCWJyZWFrOw0KIAkJCQl9DQorDQogCQkJCWNhcmQt PndhdmVpbi5yZWNzcmMgPSBXQVZFUkVDT1JEX0FDOTc7DQogCQkJCWJyZWFr Ow0KKw0KIAkJCWNhc2UgV0FWRVJFQ09SRF9NSUM6DQogCQkJCWNhcmQtPndh dmVpbi5yZWNzcmMgPSBXQVZFUkVDT1JEX01JQzsNCiAJCQkJYnJlYWs7DQor DQogCQkJY2FzZSBXQVZFUkVDT1JEX0ZYOg0KIAkJCQljYXJkLT53YXZlaW4u cmVjc3JjID0gV0FWRVJFQ09SRF9GWDsNCiAJCQkJY2FyZC0+d2F2ZWluLmZ4 d2MgPSBjdGwtPnZhbFsxXSAmIDB4ZmZmZjsNCisNCiAJCQkJaWYgKCFjYXJk LT53YXZlaW4uZnh3YykNCiAJCQkJCXJldCA9IC1FSU5WQUw7DQorDQogCQkJ CWJyZWFrOw0KKw0KIAkJCWRlZmF1bHQ6DQogCQkJCXJldCA9IC1FSU5WQUw7 DQogCQkJCWJyZWFrOw0KQEAgLTI2Nyw4ICszNzgsOCBAQA0KIAkJCQl9DQog DQogCQkJCWlmIChwYWdlID49IGNhcmQtPm1nci5jdXJyZW50X3BhZ2VzKSB7 DQotCQkJCQlmb3IoaSA9IGNhcmQtPm1nci5jdXJyZW50X3BhZ2VzOyBpIDwg cGFnZSArIDE7IGkrKykgew0KLQkJCQkgICAgICAgICAgICAgICAgY2FyZC0+ bWdyLnBhdGNoW2ldID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2VzKEdGUF9L RVJORUwsIDEpOw0KKwkJCQkJZm9yIChpID0gY2FyZC0+bWdyLmN1cnJlbnRf cGFnZXM7IGkgPCBwYWdlICsgMTsgaSsrKSB7DQorCQkJCSAgICAgICAgICAg ICAgICBjYXJkLT5tZ3IucGF0Y2hbaV0gPSAodm9pZCAqKV9fZ2V0X2ZyZWVf cGFnZShHRlBfS0VSTkVMKTsNCiAJCQkJCQlpZihjYXJkLT5tZ3IucGF0Y2hb aV0gPT0gTlVMTCkgew0KIAkJCQkJCQljYXJkLT5tZ3IuY3VycmVudF9wYWdl cyA9IGk7DQogCQkJCQkJCXJldCA9IC1FTk9NRU07DQpAQCAtMjgzLDcgKzM5 NCw3IEBADQogDQogCQkJCW1lbWNweShwYXRjaCwgJmN0bC0+dmFsWzFdLCBz aXplb2Yoc3RydWN0IGRzcF9wYXRjaCkpOw0KIA0KLQkJCQlpZihwYXRjaC0+ Y29kZV9zaXplID09IDApIHsNCisJCQkJaWYgKHBhdGNoLT5jb2RlX3NpemUg PT0gMCkgew0KIAkJCQkJZm9yKGkgPSBwYWdlICsgMTsgaSA8IGNhcmQtPm1n ci5jdXJyZW50X3BhZ2VzOyBpKyspDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9wYWdlKCh1bnNpZ25l ZCBsb25nKSBjYXJkLT5tZ3IucGF0Y2hbaV0pOw0KIA0KQEAgLTMwNiwxMyAr NDE3LDEzIEBADQogCQkJZW11MTBrMV9zZXRfY29udHJvbF9ncHIoY2FyZCwg YWRkciwgKigoczMyICopKChjaGFyICopIGN0bC0+dmFsICsgMiAqIFBBVENI X05BTUVfU0laRSkpLCAwKTsNCiAJCQlicmVhazsNCiANCi0NCiAJCWNhc2Ug Q01EX1NFVEdQT1VUOg0KLQkJCWlmKCBjdGwtPnZhbFswXT4yIHx8IGN0bC0+ dmFsWzFdPjEpew0KKwkJCWlmIChjdGwtPnZhbFswXSA+IDIgfHwgY3RsLT52 YWxbMV0gPiAxKSB7DQogCQkJCXJldD0gLUVJTlZBTDsNCiAJCQkJYnJlYWs7 DQogCQkJfQ0KLQkJCWVtdTEwazFfd3JpdGVmbjAoY2FyZCwgKDE8PDI0KXwg KCgoY3RsLT52YWxbMF0pKzEwKTw8MTYgKSB8IEhDRkcgLGN0bC0+dmFsWzFd KTsNCisNCisJCQllbXUxMGsxX3dyaXRlZm4wKGNhcmQsICgxIDw8IDI0KSB8 ICgoKGN0bC0+dmFsWzBdKSArIDEwKSA8PCAxNikgfCBIQ0ZHLCBjdGwtPnZh bFsxXSk7DQogCQkJYnJlYWs7DQogDQogCQljYXNlIENNRF9HRVRHUFIyT1NT Og0KQEAgLTMyOCw2ICs0MzksNyBAQA0KIA0KIAkJCWlmIChjb3B5X3RvX3Vz ZXIoKHZvaWQgKikgYXJnLCBjdGwsIHNpemVvZihzdHJ1Y3QgbWl4ZXJfcHJp dmF0ZV9pb2N0bCkpKQ0KIAkJCQlyZXQgPSAtRUZBVUxUOw0KKw0KIAkJCWJy ZWFrOw0KIA0KIAkJY2FzZSBDTURfU0VUR1BSMk9TUzoNCkBAIC0zNTAsMzAg KzQ2Miw0MyBAQA0KIA0KIAkJCQlpZiAoY2gpIHsNCiAJCQkJCXN0YXRlID4+ PSA4Ow0KLQkJCQkJY2FyZC0+YWM5Ny5zdGVyZW9fbWl4ZXJzIHw9ICgxPDxp ZCk7DQorCQkJCQljYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMgfD0gKDEgPDwg aWQpOw0KIAkJCQl9IGVsc2Ugew0KLQkJCQkJY2FyZC0+YWM5Ny5zdXBwb3J0 ZWRfbWl4ZXJzIHw9ICgxPDxpZCk7DQorCQkJCQljYXJkLT5hYzk3LnN1cHBv cnRlZF9taXhlcnMgfD0gKDEgPDwgaWQpOw0KIAkJCQl9DQogDQotCQkJCWVt dTEwazFfc2V0X3ZvbHVtZV9ncHIoY2FyZCwgYWRkciwgc3RhdGUgJiAweGZm LA0KLQkJCQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW2lkXS5zY2FsZSwNCi0J CQkJCQkgICAgICAgdm9sdW1lX3BhcmFtc1tpZF0ubXV0aW5nKTsNCisJCQkJ aWYgKGlkID09IFNPVU5EX01JWEVSX1RSRUJMRSkgew0KKwkJCQkJc2V0X3Ry ZWJsZShjYXJkLCBjYXJkLT5hYzk3Lm1peGVyX3N0YXRlW2lkXSAmIDB4ZmYs IChjYXJkLT5hYzk3Lm1peGVyX3N0YXRlW2lkXSA+PiA4KSAmIDB4ZmYpOw0K KwkJCQl9IGVsc2UgaWYgKGlkID09IFNPVU5EX01JWEVSX0JBU1MpIHsNCisJ CQkJCXNldF9iYXNzKGNhcmQsIGNhcmQtPmFjOTcubWl4ZXJfc3RhdGVbaWRd ICYgMHhmZiwgKGNhcmQtPmFjOTcubWl4ZXJfc3RhdGVbaWRdID4+IDgpICYg MHhmZik7DQorCQkJCX0gZWxzZQ0KKwkJCQkJZW11MTBrMV9zZXRfdm9sdW1l X2dwcihjYXJkLCBhZGRyLCBzdGF0ZSAmIDB4ZmYsDQorCQkJCQkJCSAgICAg ICB2b2x1bWVfcGFyYW1zW2lkXSk7DQogCQkJfSBlbHNlIHsNCiAJCQkJaWYg KGNoKSB7DQotCQkJCQljYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMgJj0gfigx PDxpZCk7DQorCQkJCQljYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMgJj0gfigx IDw8IGlkKTsNCiAJCQkJCWNhcmQtPmFjOTcuc3RlcmVvX21peGVycyB8PSBj YXJkLT5hYzk3X3N0ZXJlb19taXhlcnM7DQogCQkJCX0gZWxzZSB7DQotCQkJ CQljYXJkLT5hYzk3LnN1cHBvcnRlZF9taXhlcnMgJj0gfigxPDxpZCk7DQor CQkJCQljYXJkLT5hYzk3LnN1cHBvcnRlZF9taXhlcnMgJj0gfigxIDw8IGlk KTsNCiAJCQkJCWNhcmQtPmFjOTcuc3VwcG9ydGVkX21peGVycyB8PSBjYXJk LT5hYzk3X3N1cHBvcnRlZF9taXhlcnM7DQogCQkJCX0NCiAJCQl9DQogCQkJ YnJlYWs7DQorDQogCQljYXNlIENNRF9TRVRQQVNTVEhST1VHSDoNCiAJCQlj YXJkLT5wdC5zZWxlY3RlZCA9IGN0bC0+dmFsWzBdID8gMSA6IDA7DQogCQkJ aWYgKGNhcmQtPnB0LnN0YXRlICE9IFBUX1NUQVRFX0lOQUNUSVZFKQ0KIAkJ CQlicmVhazsNCisNCiAJCQljYXJkLT5wdC5zcGNzX3RvX3VzZSA9IGN0bC0+ dmFsWzBdICYgMHgwNzsNCiAJCQlicmVhazsNCisNCisJCWNhc2UgQ01EX1BS SVZBVEUzX1ZFUlNJT046DQorCQkJY3RsLT52YWxbMF09UFJJVkFURTNfVkVS U0lPTjsNCisJCQlpZiAoY29weV90b191c2VyKCh2b2lkICopIGFyZywgY3Rs LCBzaXplb2Yoc3RydWN0IG1peGVyX3ByaXZhdGVfaW9jdGwpKSkNCisJCQkJ cmV0ID0gLUVGQVVMVDsNCisJCQlicmVhazsNCisNCiAJCWRlZmF1bHQ6DQog CQkJcmV0ID0gLUVJTlZBTDsNCiAJCQlicmVhazsNCkBAIC00NDEsNDIgKzU2 Niw3NSBAQA0KIAlyZXR1cm4gLUVJTlZBTDsNCiB9DQogDQorc3RhdGljIGlu dCBlbXUxMGsxX2RzcF9taXhlcihzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJk LCB1bnNpZ25lZCBpbnQgb3NzX21peGVyLCB1bnNpZ25lZCBsb25nIGFyZykN Cit7DQorCXVuc2lnbmVkIGludCBsZWZ0LCByaWdodDsNCisJaW50IHZhbDsN CisJaW50IHNjYWxlOw0KKw0KKwlpZiAoZ2V0X3VzZXIodmFsLCAoaW50ICop YXJnKSkNCisJCXJldHVybiAtRUZBVUxUOw0KKw0KKwkvKiBjbGVhbnNlIGlu cHV0IGEgbGl0dGxlICovDQorCXJpZ2h0ID0gKCh2YWwgPj4gOCkgICYgMHhm Zik7DQorCWxlZnQgPSAodmFsICAmIDB4ZmYpOw0KKw0KKwlpZiAocmlnaHQg PiAxMDApIHJpZ2h0ID0gMTAwOw0KKwlpZiAobGVmdCA+IDEwMCkgbGVmdCA9 IDEwMDsNCisNCisJY2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtvc3NfbWl4ZXJd ID0gKHJpZ2h0IDw8IDgpIHwgbGVmdDsNCisJaWYgKG9zc19taXhlciA9PSBT T1VORF9NSVhFUl9UUkVCTEUpIHsNCisJCXNldF90cmVibGUoY2FyZCwgbGVm dCwgcmlnaHQpOw0KKwkJcmV0dXJuIDA7DQorCX0gaWYgKG9zc19taXhlciA9 PSBTT1VORF9NSVhFUl9CQVNTKSB7DQorCQlzZXRfYmFzcyhjYXJkLCBsZWZ0 LCByaWdodCk7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlpZiAob3NzX21p eGVyID09IFNPVU5EX01JWEVSX1ZPTFVNRSkNCisJCXNjYWxlID0gMSA8PCBj YXJkLT5hYzk3LmJpdF9yZXNvbHV0aW9uOw0KKwllbHNlDQorCQlzY2FsZSA9 IHZvbHVtZV9wYXJhbXNbb3NzX21peGVyXTsNCisNCisJZW11MTBrMV9zZXRf dm9sdW1lX2dwcihjYXJkLCBjYXJkLT5tZ3IuY3RybF9ncHJbb3NzX21peGVy XVswXSwgbGVmdCwgc2NhbGUpOw0KKwllbXUxMGsxX3NldF92b2x1bWVfZ3By KGNhcmQsIGNhcmQtPm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzFdLCByaWdo dCwgc2NhbGUpOw0KKw0KKwlpZiAoY2FyZC0+YWM5N19zdXBwb3J0ZWRfbWl4 ZXJzICYgKDEgPDwgb3NzX21peGVyKSkNCisJCWNhcmQtPmFjOTcud3JpdGVf bWl4ZXIoJmNhcmQtPmFjOTcsIG9zc19taXhlciwgbGVmdCwgcmlnaHQpOw0K Kw0KKwlyZXR1cm4gMDsNCit9DQogDQotCQ0KIHN0YXRpYyBpbnQgZW11MTBr MV9taXhlcl9pb2N0bChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcp DQogew0KIAlpbnQgcmV0Ow0KIAlzdHJ1Y3QgZW11MTBrMV9jYXJkICpjYXJk ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOw0KLQ0KKwl1bnNpZ25lZCBpbnQgb3Nz X21peGVyID0gX0lPQ19OUihjbWQpOw0KKwkNCiAJcmV0ID0gLUVJTlZBTDsN Ci0JaWYgKCFjYXJkLT5pc2FwcykNCi0JCXJldCA9IGNhcmQtPmFjOTcubWl4 ZXJfaW9jdGwoJmNhcmQtPmFjOTcsIGNtZCwgYXJnKTsNCi0NCi0JaWYgKHJl dCA8IDApDQotCQlyZXQgPSBlbXUxMGsxX3ByaXZhdGVfbWl4ZXIoY2FyZCwg Y21kLCBhcmcpOw0KLQllbHNlew0KLQkJdW5zaWduZWQgaW50IG9zc19taXhl ciwgbGVmdCwgcmlnaHQ7DQotDQotCQlvc3NfbWl4ZXIgPSBfSU9DX05SKGNt ZCk7DQorCWlmICghY2FyZC0+aXNhcHMpIHsNCisJCWlmIChjbWQgPT0gU09V TkRfTUlYRVJfSU5GTykgew0KKwkJCW1peGVyX2luZm8gaW5mbzsNCisNCisJ CQlzdHJuY3B5KGluZm8uaWQsIGNhcmQtPmFjOTcubmFtZSwgc2l6ZW9mKGlu Zm8uaWQpKTsNCisJCQlzdHJuY3B5KGluZm8ubmFtZSwgIkNyZWF0aXZlIFNC TGl2ZSAtIEVtdTEwazEiLCBzaXplb2YoaW5mby5uYW1lKSk7DQorCQkJaW5m by5tb2RpZnlfY291bnRlciA9IGNhcmQtPmFjOTcubW9kY250Ow0KIA0KLQkJ aWYgKChfSU9DX0RJUihjbWQpID09IChfSU9DX1dSSVRFfF9JT0NfUkVBRCkp ICYmIG9zc19taXhlcjw9U09VTkRfTUlYRVJfTlJERVZJQ0VTICkgew0KKwkJ CWlmIChjb3B5X3RvX3VzZXIoKHZvaWQgKilhcmcsICZpbmZvLCBzaXplb2Yo aW5mbykpKQ0KKwkJCQlyZXR1cm4gLUVGQVVMVDsNCiANCi0JCQlsZWZ0ID0g Y2FyZC0+YWM5Ny5taXhlcl9zdGF0ZVtvc3NfbWl4ZXJdICYgMHhmZjsNCi0J CQlyaWdodCA9IChjYXJkLT5hYzk3Lm1peGVyX3N0YXRlW29zc19taXhlcl0g Pj4gOCkgJiAweGZmOw0KLQkJCWlmKGNhcmQtPmFjOTcuc3VwcG9ydGVkX21p eGVyc3woMTw8b3NzX21peGVyKSkNCi0JCQkJZW11MTBrMV9zZXRfdm9sdW1l X2dwcihjYXJkLCBjYXJkLT5tZ3IuY3RybF9ncHJbb3NzX21peGVyXVswXSwg bGVmdCwNCi0JCQkJCQkgICAgICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJd LnNjYWxlLA0KLQkJCQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW29zc19taXhl cl0ubXV0aW5nKTsNCi0JCQlpZihjYXJkLT5hYzk3LnN0ZXJlb19taXhlcnMg fCgxPDxvc3NfbWl4ZXIpKQ0KLQkJCQllbXUxMGsxX3NldF92b2x1bWVfZ3By KGNhcmQsIGNhcmQtPm1nci5jdHJsX2dwcltvc3NfbWl4ZXJdWzFdLCByaWdo dCwNCi0JCQkJCQkgICAgICAgdm9sdW1lX3BhcmFtc1tvc3NfbWl4ZXJdLnNj YWxlLA0KLQkJCQkJCSAgICAgICB2b2x1bWVfcGFyYW1zW29zc19taXhlcl0u bXV0aW5nKTsNCisJCQlyZXR1cm4gMDsNCiAJCX0NCi0JCQ0KKw0KKwkJaWYg KChfSU9DX0RJUihjbWQpID09IChfSU9DX1dSSVRFfF9JT0NfUkVBRCkpICYm IG9zc19taXhlciA8PSBTT1VORF9NSVhFUl9OUkRFVklDRVMpDQorCQkJcmV0 ID0gZW11MTBrMV9kc3BfbWl4ZXIoY2FyZCwgb3NzX21peGVyLCBhcmcpOw0K KwkJZWxzZQ0KKwkJCXJldCA9IGNhcmQtPmFjOTcubWl4ZXJfaW9jdGwoJmNh cmQtPmFjOTcsIGNtZCwgYXJnKTsNCiAJfQ0KIAkNCi0JDQotCQkNCisJaWYg KHJldCA8IDApDQorCQlyZXQgPSBlbXUxMGsxX3ByaXZhdGVfbWl4ZXIoY2Fy ZCwgY21kLCBhcmcpOw0KKw0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCkBAIC01 MTAsNyArNjY4LDcgQEANCiANCiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVt dTEwazFfbWl4ZXJfZm9wcyA9IHsNCiAJb3duZXI6CQlUSElTX01PRFVMRSwN Ci0JbGxzZWVrOgkJZW11MTBrMV9taXhlcl9sbHNlZWssDQorCWxsc2VlazoJ CW5vX2xsc2VlaywNCiAJaW9jdGw6CQllbXUxMGsxX21peGVyX2lvY3RsLA0K IAlvcGVuOgkJZW11MTBrMV9taXhlcl9vcGVuLA0KIAlyZWxlYXNlOgllbXUx MGsxX21peGVyX3JlbGVhc2UsDQpkaWZmIC11ciBsaW51eC0yLjQuMTFwcmU2 Lm9yaWcvZHJpdmVycy9zb3VuZC9lbXUxMGsxL3Bhc3N0aHJvdWdoLmMgbGlu dXgtMi40LjExcHJlNi5lbXUxMGsxL2RyaXZlcnMvc291bmQvZW11MTBrMS9w YXNzdGhyb3VnaC5jDQotLS0gbGludXgtMi40LjExcHJlNi5vcmlnL2RyaXZl cnMvc291bmQvZW11MTBrMS9wYXNzdGhyb3VnaC5jCVRodSBPY3QgIDQgMjI6 NTc6NTggMjAwMQ0KKysrIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2 ZXJzL3NvdW5kL2VtdTEwazEvcGFzc3Rocm91Z2guYwlUdWUgT2N0ICA5IDIw OjUzOjM1IDIwMDENCkBAIC00Nyw3ICs0Nyw2IEBADQogI2luY2x1ZGUgImly cW1nci5oIg0KICNpbmNsdWRlICJhdWRpby5oIg0KICNpbmNsdWRlICI4MDEw LmgiDQotI2luY2x1ZGUgInBhc3N0aHJvdWdoLmgiDQogDQogc3RhdGljIHZv aWQgcHRfcHV0c2FtcGxlcyhzdHJ1Y3QgcHRfZGF0YSAqcHQsIHUxNiAqcHRy LCB1MTYgbGVmdCwgdTE2IHJpZ2h0KQ0KIHsNCkBAIC0yMDksOSArMjA4LDcg QEANCiB7DQogCXN0cnVjdCBwdF9kYXRhICpwdCA9ICZjYXJkLT5wdDsNCiAJ aW50IGk7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQotCXNwaW5fbG9j a19pcnFzYXZlKCZjYXJkLT5wdC5sb2NrLCBmbGFncyk7DQogCWlmIChwdC0+ c3RhdGUgIT0gUFRfU1RBVEVfSU5BQ1RJVkUpIHsNCiAJCURQRigyLCAiZGln aXRhbCBwYXNzLXRocm91Z2ggc3RvcHBlZFxuIik7DQogCQlzYmxpdmVfd3Jp dGVwdHIoY2FyZCwgR1BSX0JBU0UgKyBwdC0+ZW5hYmxlX2dwciwgMCwgMCk7 DQpAQCAtMjIyLDcgKzIxOSw2IEBADQogCQlwdC0+c3RhdGUgPSBQVF9TVEFU RV9JTkFDVElWRTsNCiAJCWtmcmVlKHB0LT5idWYpOw0KIAl9DQotCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmNhcmQtPnB0LmxvY2ssIGZsYWdzKTsNCiB9 DQogDQogdm9pZCBlbXUxMGsxX3B0X3dhdmVvdXRfdXBkYXRlKHN0cnVjdCBl bXUxMGsxX3dhdmVkZXZpY2UgKndhdmVfZGV2KQ0KZGlmZiAtdXIgbGludXgt Mi40LjExcHJlNi5vcmlnL2RyaXZlcnMvc291bmQvZW11MTBrMS9wYXNzdGhy b3VnaC5oIGxpbnV4LTIuNC4xMXByZTYuZW11MTBrMS9kcml2ZXJzL3NvdW5k L2VtdTEwazEvcGFzc3Rocm91Z2guaA0KLS0tIGxpbnV4LTIuNC4xMXByZTYu b3JpZy9kcml2ZXJzL3NvdW5kL2VtdTEwazEvcGFzc3Rocm91Z2guaAlTdW4g QXVnIDEyIDE5OjI1OjMxIDIwMDENCisrKyBsaW51eC0yLjQuMTFwcmU2LmVt dTEwazEvZHJpdmVycy9zb3VuZC9lbXUxMGsxL3Bhc3N0aHJvdWdoLmgJVHVl IE9jdCAgOSAyMDo1MzozNSAyMDAxDQpAQCAtMzIsNyArMzIsNiBAQA0KICNp Zm5kZWYgX1BBU1NUSFJPVUdIX0gNCiAjZGVmaW5lIF9QQVNTVEhST1VHSF9I DQogDQotI2luY2x1ZGUgImh3YWNjZXNzLmgiDQogI2luY2x1ZGUgImF1ZGlv LmgiDQogDQogLyogbnVtYmVyIG9mIDE2LWJpdCBzdGVyZW8gc2FtcGxlcyBp biBYVFJBTSBidWZmZXIgKi8NCg== --17496956-450392075-1002656064=:12595-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/