From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 12 Jan 2005 09:54:35 +0000 (GMT) Received: from host51-186.pool80204.interbusiness.it ([IPv6:::ffff:80.204.186.51]:1701 "EHLO gate.exadron.com") by linux-mips.org with ESMTP id ; Wed, 12 Jan 2005 09:54:31 +0000 Received: from 10.0.10.57 ([10.0.10.57]) by gate.exadron.com (8.12.7/8.12.7) with ESMTP id j0CAHIMM018528 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Wed, 12 Jan 2005 11:17:18 +0100 Subject: [PATCH] au1100fb.c ported from 2.4 to 2.6 From: Christian To: linux-mips@linux-mips.org Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-8sLkLDCYjQPksIkcCxx4" Date: Wed, 12 Jan 2005 10:50:07 +0100 Message-Id: <1105523407.5654.18.camel@absolute.ascensit.com> Mime-Version: 1.0 X-Mailer: Evolution 2.0.2 (2.0.2-3) Return-Path: X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0) X-Orcpt: rfc822;linux-mips@linux-mips.org Original-Recipient: rfc822;linux-mips@linux-mips.org X-archive-position: 6890 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: c.pellegrin@exadron.com Precedence: bulk X-list: linux-mips --=-8sLkLDCYjQPksIkcCxx4 Content-Type: multipart/mixed; boundary="=-IJQT9rIiG7FkQrqOha/h" --=-IJQT9rIiG7FkQrqOha/h Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, works in 16bpp, anyone with a system that works in 8bbp can give me a hand to test this mode? --=20 Christian --=-IJQT9rIiG7FkQrqOha/h Content-Disposition: attachment; filename=fb1 Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=fb1; charset=UTF-8 SW5kZXg6IGRyaXZlcnMvdmlkZW8vS2NvbmZpZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21l L2N2cy9saW51eC9kcml2ZXJzL3ZpZGVvL0tjb25maWcsdg0KcmV0cmlldmluZyByZXZpc2lvbiAx LjMxDQpkaWZmIC11IC1yMS4zMSBLY29uZmlnDQotLS0gZHJpdmVycy92aWRlby9LY29uZmlnCTI0 IE5vdiAyMDA0IDA5OjAzOjQwIC0wMDAwCTEuMzENCisrKyBkcml2ZXJzL3ZpZGVvL0tjb25maWcJ MTIgSmFuIDIwMDUgMDk6MDU6MTYgLTAwMDANCkBAIC05NzMsNyArOTczLDcgQEANCiANCiBjb25m aWcgRkJfQVUxMTAwDQogCWJvb2wgIkF1MTEwMCBMQ0QgRHJpdmVyIg0KLQlkZXBlbmRzIG9uIEZC ICYmIEVYUEVSSU1FTlRBTCAmJiBQQ0kgJiYgTUlQUyAmJiBNSVBTX1BCMTEwMD15DQorCWRlcGVu ZHMgb24gRkIgJiYgRVhQRVJJTUVOVEFMICYmIE1JUFMgJiYgU09DX0FVMVgwMA0KIA0KIGNvbmZp ZyBGQl9TQlVTDQogCWJvb2wgIlNCVVMgYW5kIFVQQSBmcmFtZWJ1ZmZlcnMiDQpJbmRleDogZHJp dmVycy92aWRlby9NYWtlZmlsZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL2N2cy9saW51 eC9kcml2ZXJzL3ZpZGVvL01ha2VmaWxlLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS44NQ0KZGlm ZiAtdSAtcjEuODUgTWFrZWZpbGUNCi0tLSBkcml2ZXJzL3ZpZGVvL01ha2VmaWxlCTE1IE5vdiAy MDA0IDExOjQ5OjM0IC0wMDAwCTEuODUNCisrKyBkcml2ZXJzL3ZpZGVvL01ha2VmaWxlCTEyIEph biAyMDA1IDA5OjA1OjIxIC0wMDAwDQpAQCAtOTQsNyArOTQsNyBAQA0KIG9iai0kKENPTkZJR19G Ql9QTUFHQl9CKQkgICs9IHBtYWdiLWItZmIubyAgY2ZiZmlsbHJlY3QubyBjZmJjb3B5YXJlYS5v IGNmYmltZ2JsdC5vDQogb2JqLSQoQ09ORklHX0ZCX01BWElORSkJCSAgKz0gbWF4aW5lZmIubyAg Y2ZiZmlsbHJlY3QubyBjZmJjb3B5YXJlYS5vIGNmYmltZ2JsdC5vDQogb2JqLSQoQ09ORklHX0ZC X1RYMzkxMikJCSAgKz0gdHgzOTEyZmIubyAgY2ZiZmlsbHJlY3QubyBjZmJjb3B5YXJlYS5vIGNm YmltZ2JsdC5vDQotb2JqLSQoQ09ORklHX0ZCX0FVMTEwMCkJCSAgKz0gYXUxMTAwZmIubyBmYmdl bi5vDQorb2JqLSQoQ09ORklHX0ZCX0FVMTEwMCkJCSAgKz0gYXUxMTAwZmIubyBjZmJmaWxscmVj dC5vIGNmYmNvcHlhcmVhLm8gY2ZiaW1nYmx0Lm8NCiANCiANCiAjIFBsYXRmb3JtIG9yIGZhbGxi YWNrIGRyaXZlcnMgZ28gaGVyZQ0KSW5kZXg6IGRyaXZlcnMvdmlkZW8vYXUxMTAwZmIuYw0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL2N2cy9saW51eC9kcml2ZXJzL3ZpZGVvL2F1MTEwMGZi LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjMNCmRpZmYgLXUgLXIxLjMgYXUxMTAwZmIuYw0K LS0tIGRyaXZlcnMvdmlkZW8vYXUxMTAwZmIuYwkyNiBPY3QgMjAwNCAwMjoyMzowOCAtMDAwMAkx LjMNCisrKyBkcml2ZXJzL3ZpZGVvL2F1MTEwMGZiLmMJMTIgSmFuIDIwMDUgMDk6MDU6MjYgLTAw MDANCkBAIC0yLDE2ICsyLDI4IEBADQogICogQlJJRUYgTU9EVUxFIERFU0NSSVBUSU9ODQogICoJ QXUxMTAwIExDRCBEcml2ZXIuDQogICoNCisgKiBBZGFwdGVkIGJ5IDxjLnBlbGxlZ3JpbkBleGFk cm9uLmNvbT4gZm9yIGtlcm5lbCAyLjYNCisgKg0KKyAqICBUT0RPOg0KKyAqICA4YnBwIHN1cHBv cnQgQVNBIEkgZ2V0IGhhcmR3YXJlIGZvciB0ZXN0aW5nDQorICoNCisgKiBiYXNlZCBvbiBjb2Rl Og0KKyAqKioqKiogMi40IGF1MTEwMGZiLmMNCiAgKiBDb3B5cmlnaHQgMjAwMiBNb250YVZpc3Rh IFNvZnR3YXJlDQogICogQXV0aG9yOiBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuDQogICoJCXBw b3BvdkBtdmlzdGEuY29tIG9yIHNvdXJjZUBtdmlzdGEuY29tDQogICoNCiAgKiBDb3B5cmlnaHQg MjAwMiBBbGNoZW15IFNlbWljb25kdWN0b3INCiAgKiBBdXRob3I6IEFsY2hlbXkgU2VtaWNvbmR1 Y3Rvcg0KKyAqKioqKiogMi42IHZlc2FmYi5jDQorICogZnJhbWVidWZmZXIgZHJpdmVyIGZvciBW QkUgMi4wIGNvbXBsaWFudCBncmFwaGljIGJvYXJkcw0KKyAqDQorICogc3dpdGNoaW5nIHRvIGdy YXBoaWNzIG1vZGUgaGFwcGVucyBhdCBib290IHRpbWUgKHdoaWxlDQorICogcnVubmluZyBpbiBy ZWFsIG1vZGUsIHNlZSBhcmNoL2kzODYvYm9vdC92aWRlby5TKS4NCisgKg0KKyAqIChjKSAxOTk4 IEdlcmQgS25vcnIgPGtyYXhlbEBnb2xkYmFjaC5pbi1iZXJsaW4uZGU+DQogICoNCi0gKiBCYXNl ZCBvbjoNCi0gKiBsaW51eC9kcml2ZXJzL3ZpZGVvL3NrZWxldG9uZmIuYyAtLSBTa2VsZXRvbiBm b3IgYSBmcmFtZSBidWZmZXIgZGV2aWNlDQotICogIENyZWF0ZWQgMjggRGVjIDE5OTcgYnkgR2Vl cnQgVXl0dGVyaG9ldmVuDQorICoqKioqKg0KICAqDQogICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZQkgaXQgYW5kL29yIG1vZGlmeSBpdA0KICAq ICB1bmRlciAgdGhlIHRlcm1zIG9mCSB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUNCkBAIC00MywzNyArNTUsMTggQEANCiAjaW5jbHVkZSA8bGludXgv c2xhYi5oPg0KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KICNpbmNsdWRlIDxsaW51eC9mYi5o Pg0KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4NCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0K LSNpbmNsdWRlIDxsaW51eC9wY2kuaD4NCiANCi0jaW5jbHVkZSA8YXNtL2F1MTAwMC5oPg0KLSNp bmNsdWRlIDxhc20vcGIxMTAwLmg+DQorI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTEwMDAu aD4NCisjaW5jbHVkZSA8YXNtL21hY2gtcGIxeDAwL3BiMTEwMC5oPg0KICNpbmNsdWRlICJhdTEx MDBmYi5oIg0KIA0KLSNpbmNsdWRlIDx2aWRlby9mYmNvbi5oPg0KLSNpbmNsdWRlIDx2aWRlby9m YmNvbi1tZmIuaD4NCi0jaW5jbHVkZSA8dmlkZW8vZmJjb24tY2ZiMi5oPg0KLSNpbmNsdWRlIDx2 aWRlby9mYmNvbi1jZmI0Lmg+DQotI2luY2x1ZGUgPHZpZGVvL2ZiY29uLWNmYjguaD4NCi0jaW5j bHVkZSA8dmlkZW8vZmJjb24tY2ZiMTYuaD4NCi0NCi0vKiANCi0gKiBTYW5pdHkgY2hlY2suIElm IHRoaXMgaXMgYSBuZXcgQXUxMTAwIGJhc2VkIGJvYXJkLCBzZWFyY2ggZm9yDQotICogdGhlIFBC MTEwMCBpZmRlZnMgdG8gbWFrZSBzdXJlIHlvdSBtb2RpZnkgdGhlIGNvZGUgYWNjb3JkaW5nbHku DQotICovDQotI2lmIGRlZmluZWQoQ09ORklHX01JUFNfUEIxMTAwKSB8fCBkZWZpbmVkKENPTkZJ R19NSVBTX0RCMTEwMCkgfHwgZGVmaW5lZChDT05GSUdfTUlQU19IWURST0dFTjMpDQotI2Vsc2UN Ci1lcnJvciBVbmtub3duIEF1MTEwMCBib2FyZA0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgQ01BUFNJ WkUgMTYNCiANCi1zdGF0aWMgaW50IG15X2xjZF9pbmRleDsgLyogZGVmYXVsdCBpcyB6ZXJvICov DQotc3RydWN0IGtub3duX2xjZF9wYW5lbHMgKnBfbGNkOw0KLUFVMTEwMF9MQ0QgKnBfbGNkX3Jl ZyA9IChBVTExMDBfTENEICopQVUxMTAwX0xDRF9BRERSOw0KKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0K IA0KIHN0cnVjdCBhdTExMDBmYl9pbmZvIHsNCi0Jc3RydWN0IGZiX2luZm9fZ2VuIGdlbjsNCisJ c3RydWN0IGZiX2luZm8gZ2VuOw0KIAl1bnNpZ25lZCBsb25nIGZiX3ZpcnRfc3RhcnQ7DQogCXVu c2lnbmVkIGxvbmcgZmJfc2l6ZTsNCiAJdW5zaWduZWQgbG9uZyBmYl9waHlzOw0KQEAgLTg4LDE5 MiArODEsNTMgQEANCiB9Ow0KIA0KIA0KLXN0cnVjdCBhdTExMDBmYl9wYXIgew0KLSAgICAgICAg c3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvIHZhcjsNCi0JDQotCWludCBsaW5lX2xlbmd0aDsgIC8v IGluIGJ5dGVzDQotCWludCBjbWFwX2xlbjsgICAgIC8vIGNvbG9yLW1hcCBsZW5ndGgNCi19Ow0K LQ0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KIA0KLXN0YXRpYyBzdHJ1Y3QgYXUxMTAwZmJfaW5mbyBm Yl9pbmZvOw0KLXN0YXRpYyBzdHJ1Y3QgYXUxMTAwZmJfcGFyIGN1cnJlbnRfcGFyOw0KLXN0YXRp YyBzdHJ1Y3QgZGlzcGxheSBkaXNwOw0KLQ0KLWludCBhdTExMDBmYl9pbml0KHZvaWQpOw0KLXZv aWQgYXUxMTAwZmJfc2V0dXAoY2hhciAqb3B0aW9ucywgaW50ICppbnRzKTsNCi1zdGF0aWMgaW50 IGF1MTEwMGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmZiLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgDQot CQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7DQotc3RhdGljIGludCBhdTExMDBfYmxhbmso aW50IGJsYW5rX21vZGUsIHN0cnVjdCBmYl9pbmZvX2dlbiAqaW5mbyk7DQotc3RhdGljIGludCBh dTExMDBmYl9pb2N0bChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdV9p bnQgY21kLA0KLQkJCSAgdV9sb25nIGFyZywgaW50IGNvbiwgc3RydWN0IGZiX2luZm8gKmluZm8p Ow0KK3N0YXRpYyBpbnQgbXlfbGNkX2luZGV4OyAvKiBkZWZhdWx0IGlzIHplcm8gKi8NCitzdHJ1 Y3Qga25vd25fbGNkX3BhbmVscyAqcF9sY2Q7DQorQVUxMTAwX0xDRCAqcF9sY2RfcmVnID0gKEFV MTEwMF9MQ0QgKilBVTExMDBfTENEX0FERFI7DQorc3RhdGljIGludCAgICAgICAgICAgICBkZXB0 aDsNCitzdGF0aWMgaW50IG5vaHdjdXJzb3I7DQogDQotdm9pZCBhdTExMDBfbm9jdXJzb3Ioc3Ry dWN0IGRpc3BsYXkgKnAsIGludCBtb2RlLCBpbnQgeHgsIGludCB5eSl7fTsNCitzdGF0aWMgc3Ry dWN0IGF1MTEwMGZiX2luZm8gKm15X2ZiX2luZm87IC8qIHRoZSBpbmZvIGZvciB0aGUgY3VycmVu dCBkcml2ZXIgKi8NCiANCi1zdGF0aWMgc3RydWN0IGZiX29wcyBhdTExMDBmYl9vcHMgPSB7DQot CW93bmVyOgkJVEhJU19NT0RVTEUsDQotCWZiX2dldF9maXg6CWZiZ2VuX2dldF9maXgsDQotCWZi X2dldF92YXI6CWZiZ2VuX2dldF92YXIsDQotCWZiX3NldF92YXI6CWZiZ2VuX3NldF92YXIsDQot CWZiX2dldF9jbWFwOglmYmdlbl9nZXRfY21hcCwNCi0JZmJfc2V0X2NtYXA6CWZiZ2VuX3NldF9j bWFwLA0KLQlmYl9wYW5fZGlzcGxheTogZmJnZW5fcGFuX2Rpc3BsYXksDQotICAgICAgICBmYl9p b2N0bDogICAgICAgYXUxMTAwZmJfaW9jdGwsDQotCWZiX21tYXA6ICAgICAgICBhdTExMDBmYl9t bWFwLA0KK3N0YXRpYyBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gYXUxMTAwZmJfZGVmaW5lZCBf X2luaXRkYXRhID0gew0KKwkuYWN0aXZhdGUJPSBGQl9BQ1RJVkFURV9OT1csDQorCS5oZWlnaHQJ CT0gLTEsDQorCS53aWR0aAkJPSAtMSwNCisJLnJpZ2h0X21hcmdpbgk9IDMyLA0KKwkudXBwZXJf bWFyZ2luCT0gMTYsDQorCS5sb3dlcl9tYXJnaW4JPSA0LA0KKwkudnN5bmNfbGVuCT0gNCwNCisJ LnZtb2RlCQk9IEZCX1ZNT0RFX05PTklOVEVSTEFDRUQsDQogfTsNCiANCi1zdGF0aWMgdm9pZCBh dTExMDBfZGV0ZWN0KHZvaWQpDQotew0KLQkvKg0KLQkgKiAgVGhpcyBmdW5jdGlvbiBzaG91bGQg ZGV0ZWN0IHRoZSBjdXJyZW50IHZpZGVvIG1vZGUgc2V0dGluZ3MgDQotCSAqICBhbmQgc3RvcmUg aXQgYXMgdGhlIGRlZmF1bHQgdmlkZW8gbW9kZQ0KLQkgKi8NCi0NCi0JLyoNCi0JICogWWVoLCB3 ZWxsLCB3ZSdyZSBub3QgZ29pbmcgdG8gY2hhbmdlIGFueSBzZXR0aW5ncyBzbyB3ZSdyZQ0KLQkg KiBhbHdheXMgc3R1Y2sgd2l0aCB0aGUgZGVmYXVsdCAuLi4NCi0JICovDQorc3RhdGljIHN0cnVj dCBmYl9maXhfc2NyZWVuaW5mbyBhdTExMDBmYl9maXggX19pbml0ZGF0YSA9IHsNCisJLmlkCT0g IkFVMTEwMCBGQiIsDQorCS50eXBlCT0gRkJfVFlQRV9QQUNLRURfUElYRUxTLA0KKwkuYWNjZWwJ PSBGQl9BQ0NFTF9OT05FLA0KK307DQogDQotfQ0KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KIA0KLXN0 YXRpYyBpbnQgYXUxMTAwX2VuY29kZV9maXgoc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvICpmaXgs IA0KLQkJY29uc3Qgdm9pZCAqX3Bhciwgc3RydWN0IGZiX2luZm9fZ2VuICpfaW5mbykNCitzdGF0 aWMgaW50IGF1MTEwMGZiX3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFy LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmYl9pbmZvICppbmZvKQ0K IHsNCi0gICAgICAgIHN0cnVjdCBhdTExMDBmYl9pbmZvICppbmZvID0gKHN0cnVjdCBhdTExMDBm Yl9pbmZvICopIF9pbmZvOw0KLSAgICAgICAgc3RydWN0IGF1MTEwMGZiX3BhciAqcGFyID0gKHN0 cnVjdCBhdTExMDBmYl9wYXIgKikgX3BhcjsNCi0Jc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2 YXIgPSAmcGFyLT52YXI7DQotDQotCW1lbXNldChmaXgsIDAsIHNpemVvZihzdHJ1Y3QgZmJfZml4 X3NjcmVlbmluZm8pKTsNCi0NCi0JZml4LT5zbWVtX3N0YXJ0ID0gaW5mby0+ZmJfcGh5czsNCi0J Zml4LT5zbWVtX2xlbiA9IGluZm8tPmZiX3NpemU7DQotCWZpeC0+dHlwZSA9IEZCX1RZUEVfUEFD S0VEX1BJWEVMUzsNCi0JZml4LT50eXBlX2F1eCA9IDA7DQotICAgICAgICBmaXgtPnZpc3VhbCA9 ICh2YXItPmJpdHNfcGVyX3BpeGVsID09IDgpID8NCi0JICAgICAgIAlGQl9WSVNVQUxfUFNFVURP Q09MT1IJOiBGQl9WSVNVQUxfVFJVRUNPTE9SOw0KLQlmaXgtPnl3cmFwc3RlcCA9IDA7DQotCWZp eC0+eHBhbnN0ZXAgPSAxOw0KLQlmaXgtPnlwYW5zdGVwID0gMTsNCi0JZml4LT5saW5lX2xlbmd0 aCA9IGN1cnJlbnRfcGFyLmxpbmVfbGVuZ3RoOw0KIAlyZXR1cm4gMDsNCiB9DQogDQotc3RhdGlj IHZvaWQgc2V0X2NvbG9yX2JpdGZpZWxkcyhzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcikN CitzdGF0aWMgaW50IGF1MTEwMGZiX3NldGNvbHJlZyh1bnNpZ25lZCByZWdubywgdW5zaWduZWQg cmVkLCB1bnNpZ25lZCBncmVlbiwNCisJCQkgICAgdW5zaWduZWQgYmx1ZSwgdW5zaWduZWQgdHJh bnNwLA0KKwkJCSAgICBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykNCiB7DQotCXN3aXRjaCAodmFyLT5i aXRzX3Blcl9waXhlbCkgew0KLQljYXNlIDg6DQotCQl2YXItPnJlZC5vZmZzZXQgPSAwOw0KLQkJ dmFyLT5yZWQubGVuZ3RoID0gODsNCi0JCXZhci0+Z3JlZW4ub2Zmc2V0ID0gMDsNCi0JCXZhci0+ Z3JlZW4ubGVuZ3RoID0gODsNCi0JCXZhci0+Ymx1ZS5vZmZzZXQgPSAwOw0KLQkJdmFyLT5ibHVl Lmxlbmd0aCA9IDg7DQotCQl2YXItPnRyYW5zcC5vZmZzZXQgPSAwOw0KLQkJdmFyLT50cmFuc3Au bGVuZ3RoID0gMDsNCi0JCWJyZWFrOw0KLQljYXNlIDE2OgkvKiBSR0IgNTY1ICovDQotCQl2YXIt PnJlZC5vZmZzZXQgPSAxMTsNCi0JCXZhci0+cmVkLmxlbmd0aCA9IDU7DQotCQl2YXItPmdyZWVu Lm9mZnNldCA9IDU7DQotCQl2YXItPmdyZWVuLmxlbmd0aCA9IDY7DQotCQl2YXItPmJsdWUub2Zm c2V0ID0gMDsNCi0JCXZhci0+Ymx1ZS5sZW5ndGggPSA1Ow0KLQkJdmFyLT50cmFuc3Aub2Zmc2V0 ID0gMDsNCi0JCXZhci0+dHJhbnNwLmxlbmd0aCA9IDA7DQotCQlicmVhazsNCi0JfQ0KLQ0KLQl2 YXItPnJlZC5tc2JfcmlnaHQgPSAwOw0KLQl2YXItPmdyZWVuLm1zYl9yaWdodCA9IDA7DQotCXZh ci0+Ymx1ZS5tc2JfcmlnaHQgPSAwOw0KLQl2YXItPnRyYW5zcC5tc2JfcmlnaHQgPSAwOw0KLX0N Ci0NCi1zdGF0aWMgaW50IGF1MTEwMF9kZWNvZGVfdmFyKGNvbnN0IHN0cnVjdCBmYl92YXJfc2Ny ZWVuaW5mbyAqdmFyLCANCi0JCXZvaWQgKl9wYXIsIHN0cnVjdCBmYl9pbmZvX2dlbiAqX2luZm8p DQotew0KLQ0KLQlzdHJ1Y3QgYXUxMTAwZmJfcGFyICpwYXIgPSAoc3RydWN0IGF1MTEwMGZiX3Bh ciAqKV9wYXI7DQotDQogCS8qDQotCSAqIERvbid0IGFsbG93IHNldHRpbmcgYW55IG9mIHRoZXNl IHlldDogeHJlcyBhbmQgeXJlcyBkb24ndA0KLQkgKiBtYWtlIHNlbnNlIGZvciBMQ0QgcGFuZWxz Lg0KKwkgKiAgU2V0IGEgc2luZ2xlIGNvbG9yIHJlZ2lzdGVyLiBUaGUgdmFsdWVzIHN1cHBsaWVk IGFyZQ0KKwkgKiAgYWxyZWFkeSByb3VuZGVkIGRvd24gdG8gdGhlIGhhcmR3YXJlJ3MgY2FwYWJp bGl0aWVzDQorCSAqICAoYWNjb3JkaW5nIHRvIHRoZSBlbnRyaWVzIGluIHRoZSBgdmFyJyBzdHJ1 Y3R1cmUpLiBSZXR1cm4NCisJICogICE9IDAgZm9yIGludmFsaWQgcmVnbm8uDQogCSAqLw0KLQlp ZiAodmFyLT54cmVzICE9IHBfbGNkLT54cmVzIHx8DQotCSAgICB2YXItPnlyZXMgIT0gcF9sY2Qt PnlyZXMgfHwNCi0JICAgIHZhci0+eHJlcyAhPSBwX2xjZC0+eHJlcyB8fA0KLQkgICAgdmFyLT55 cmVzICE9IHBfbGNkLT55cmVzKSB7DQotCQlyZXR1cm4gLUVJTlZBTDsNCi0JfQ0KLQlpZih2YXIt PmJpdHNfcGVyX3BpeGVsICE9IHBfbGNkLT5icHApIHsNCi0JCXJldHVybiAtRUlOVkFMOw0KLQl9 DQotDQotCW1lbXNldChwYXIsIDAsIHNpemVvZihzdHJ1Y3QgYXUxMTAwZmJfcGFyKSk7DQotCXBh ci0+dmFyID0gKnZhcjsNCiAJDQotCS8qIEZJWE1FICovDQotCXN3aXRjaCAodmFyLT5iaXRzX3Bl cl9waXhlbCkgew0KLQkJY2FzZSA4Og0KLQkJCXBhci0+dmFyLmJpdHNfcGVyX3BpeGVsID0gODsN Ci0JCQlicmVhazsNCi0JCWNhc2UgMTY6DQotCQkJcGFyLT52YXIuYml0c19wZXJfcGl4ZWwgPSAx NjsNCi0JCQlicmVhazsNCi0JCWRlZmF1bHQ6DQotCQkJcHJpbnRrKCJjb2xvciBkZXB0aCAlZCBi cHAgbm90IHN1cHBvcnRlZFxuIiwNCi0JCQkJCXZhci0+Yml0c19wZXJfcGl4ZWwpOw0KLQkJCXJl dHVybiAtRUlOVkFMOw0KLQ0KLQl9DQotCXNldF9jb2xvcl9iaXRmaWVsZHMoJnBhci0+dmFyKTsN Ci0JcGFyLT5jbWFwX2xlbiA9IChwYXItPnZhci5iaXRzX3Blcl9waXhlbCA9PSA4KSA/IDI1NiA6 IDE2Ow0KLQlyZXR1cm4gMDsNCi19DQotDQotc3RhdGljIGludCBhdTExMDBfZW5jb2RlX3Zhcihz dHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgDQotCQljb25zdCB2b2lkICpwYXIsIHN0cnVj dCBmYl9pbmZvX2dlbiAqX2luZm8pDQotew0KLQ0KLQkqdmFyID0gKChzdHJ1Y3QgYXUxMTAwZmJf cGFyICopcGFyKS0+dmFyOw0KLQlyZXR1cm4gMDsNCi19DQotDQotc3RhdGljIHZvaWQgDQotYXUx MTAwX2dldF9wYXIodm9pZCAqX3Bhciwgc3RydWN0IGZiX2luZm9fZ2VuICpfaW5mbykNCi17DQot CSooc3RydWN0IGF1MTEwMGZiX3BhciAqKV9wYXIgPSBjdXJyZW50X3BhcjsNCi19DQotDQotc3Rh dGljIHZvaWQgYXUxMTAwX3NldF9wYXIoY29uc3Qgdm9pZCAqcGFyLCBzdHJ1Y3QgZmJfaW5mb19n ZW4gKmluZm8pDQotew0KLQkvKiBub3RoaW5nIHRvIGRvOiB3ZSBkb24ndCBjaGFuZ2UgYW55IHNl dHRpbmdzICovDQotfQ0KLQ0KLXN0YXRpYyBpbnQgYXUxMTAwX2dldGNvbHJlZyh1bnNpZ25lZCBy ZWdubywgdW5zaWduZWQgKnJlZCwgdW5zaWduZWQgKmdyZWVuLA0KLQkJCSB1bnNpZ25lZCAqYmx1 ZSwgdW5zaWduZWQgKnRyYW5zcCwNCi0JCQkgc3RydWN0IGZiX2luZm8gKmluZm8pDQotew0KLQ0K LQlzdHJ1Y3QgYXUxMTAwZmJfaW5mbyogaSA9IChzdHJ1Y3QgYXUxMTAwZmJfaW5mbyopaW5mbzsN Ci0NCi0JaWYgKHJlZ25vID4gMjU1KQ0KLQkJcmV0dXJuIDE7DQotICAgDQotCSpyZWQgICAgPSBp LT5wYWxldHRlW3JlZ25vXS5yZWQ7IA0KLQkqZ3JlZW4gID0gaS0+cGFsZXR0ZVtyZWdub10uZ3Jl ZW47IA0KLQkqYmx1ZSAgID0gaS0+cGFsZXR0ZVtyZWdub10uYmx1ZTsgDQotCSp0cmFuc3AgPSAw Ow0KLQ0KLQlyZXR1cm4gMDsNCi19DQotDQotc3RhdGljIGludCBhdTExMDBfc2V0Y29scmVnKHVu c2lnbmVkIHJlZ25vLCB1bnNpZ25lZCByZWQsIHVuc2lnbmVkIGdyZWVuLA0KLQkJCSB1bnNpZ25l ZCBibHVlLCB1bnNpZ25lZCB0cmFuc3AsDQotCQkJIHN0cnVjdCBmYl9pbmZvICppbmZvKQ0KLXsN CiAJc3RydWN0IGF1MTEwMGZiX2luZm8qIGkgPSAoc3RydWN0IGF1MTEwMGZiX2luZm8gKilpbmZv Ow0KLQl1MzIgcmdiY29sOw0KIA0KIAlpZiAocmVnbm8gPiAyNTUpDQogCQlyZXR1cm4gMTsNCkBA IC0zMDcsNzUgKzE2MSw2IEBADQogCXJldHVybiAwOw0KIH0NCiANCi0NCi1zdGF0aWMgaW50ICBh dTExMDBfYmxhbmsoaW50IGJsYW5rX21vZGUsIHN0cnVjdCBmYl9pbmZvX2dlbiAqX2luZm8pDQot ew0KLQ0KLQlzd2l0Y2ggKGJsYW5rX21vZGUpIHsNCi0JY2FzZSBWRVNBX05PX0JMQU5LSU5HOg0K LQkJLyogdHVybiBvbiBwYW5lbCAqLw0KLQkJLy9wcmludGsoInR1cm4gb24gcGFuZWxcbiIpOw0K LSNpZmRlZiBDT05GSUdfTUlQU19QQjExMDANCi0JCXBfbGNkX3JlZy0+bGNkX2NvbnRyb2wgfD0g TENEX0NPTlRST0xfR087DQotCQlhdV93cml0ZXcoYXVfcmVhZHcoUEIxMTAwX0dfQ09OVFJPTCkg fCBwX2xjZC0+bW9kZV9iYWNrbGlnaHQsIA0KLQkJCVBCMTEwMF9HX0NPTlRST0wpOw0KLSNlbmRp Zg0KLSNpZmRlZiBDT05GSUdfTUlQU19IWURST0dFTjMNCi0JCS8qICBUdXJuIGNvbnRyb2xsZXIg JiBwb3dlciBzdXBwbHkgb24sICBHUElPMjEzICovDQotCQlhdV93cml0ZWwoMHgyMDAwMjAwMCwg MHhCMTcwMDAwOCk7DQotCQlhdV93cml0ZWwoMHgwMDA0MDAwMCwgMHhCMTkwMDEwOCk7DQotCQlh dV93cml0ZWwoMHgwMTAwMDEwMCwgMHhCMTcwMDAwOCk7DQotI2VuZGlmDQotCQlhdV9zeW5jKCk7 DQotCQlicmVhazsNCi0NCi0JY2FzZSBWRVNBX1ZTWU5DX1NVU1BFTkQ6DQotCWNhc2UgVkVTQV9I U1lOQ19TVVNQRU5EOg0KLQljYXNlIFZFU0FfUE9XRVJET1dOOg0KLQkJLyogdHVybiBvZmYgcGFu ZWwgKi8NCi0JCS8vcHJpbnRrKCJ0dXJuIG9mZiBwYW5lbFxuIik7DQotI2lmZGVmIENPTkZJR19N SVBTX1BCMTEwMA0KLQkJYXVfd3JpdGV3KGF1X3JlYWR3KFBCMTEwMF9HX0NPTlRST0wpICYgfnBf bGNkLT5tb2RlX2JhY2tsaWdodCwgDQotCQkJUEIxMTAwX0dfQ09OVFJPTCk7DQotCQlwX2xjZF9y ZWctPmxjZF9jb250cm9sICY9IH5MQ0RfQ09OVFJPTF9HTzsNCi0jZW5kaWYNCi0JCWF1X3N5bmMo KTsNCi0JCWJyZWFrOw0KLQlkZWZhdWx0OiANCi0JCWJyZWFrOw0KLQ0KLQl9DQotCXJldHVybiAw Ow0KLX0NCi0NCi1zdGF0aWMgdm9pZCBhdTExMDBfc2V0X2Rpc3AoY29uc3Qgdm9pZCAqdW51c2Vk LCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCwNCi0JCQkgc3RydWN0IGZiX2luZm9fZ2VuICppbmZvKQ0K LXsNCi0JZGlzcC0+c2NyZWVuX2Jhc2UgPSAoY2hhciAqKWZiX2luZm8uZmJfdmlydF9zdGFydDsN Ci0NCi0Jc3dpdGNoIChkaXNwLT52YXIuYml0c19wZXJfcGl4ZWwpIHsNCi0jaWZkZWYgRkJDT05f SEFTX0NGQjgNCi0JY2FzZSA4Og0KLQkJZGlzcC0+ZGlzcHN3ID0gJmZiY29uX2NmYjg7DQotCQlp ZiAoZmJfaW5mby5ub2h3Y3Vyc29yKQ0KLQkJCWZiY29uX2NmYjguY3Vyc29yID0gYXUxMTAwX25v Y3Vyc29yOw0KLQkJYnJlYWs7DQotI2VuZGlmDQotI2lmZGVmIEZCQ09OX0hBU19DRkIxNg0KLQlj YXNlIDE2Og0KLQkJZGlzcC0+ZGlzcHN3ID0gJmZiY29uX2NmYjE2Ow0KLQkJZGlzcC0+ZGlzcHN3 X2RhdGEgPSBmYl9pbmZvLmZiY29uX2NtYXAxNjsNCi0JCWlmIChmYl9pbmZvLm5vaHdjdXJzb3Ip DQotCQkJZmJjb25fY2ZiMTYuY3Vyc29yID0gYXUxMTAwX25vY3Vyc29yOw0KLQkJYnJlYWs7DQot I2VuZGlmDQotCWRlZmF1bHQ6DQotCQlkaXNwLT5kaXNwc3cgPSAmZmJjb25fZHVtbXk7DQotCQlk aXNwLT5kaXNwc3dfZGF0YSA9IE5VTEw7DQotCQlicmVhazsNCi0JfQ0KLX0NCi0NCiBzdGF0aWMg aW50DQogYXUxMTAwZmJfbW1hcChzdHJ1Y3QgZmJfaW5mbyAqX2ZiLA0KIAkgICAgIHN0cnVjdCBm aWxlICpmaWxlLA0KQEAgLTM4OSw4ICsxNzQsOCBAQA0KIAkJcmV0dXJuIC1FSU5WQUw7DQogCX0N CiAgICAgDQotCXN0YXJ0ID0gZmJfaW5mby5mYl9waHlzICYgUEFHRV9NQVNLOw0KLQlsZW4gPSBQ QUdFX0FMSUdOKChzdGFydCAmIH5QQUdFX01BU0spICsgZmJfaW5mby5mYl9zaXplKTsNCisJc3Rh cnQgPSBteV9mYl9pbmZvLT5mYl9waHlzICYgUEFHRV9NQVNLOw0KKwlsZW4gPSBQQUdFX0FMSUdO KChzdGFydCAmIH5QQUdFX01BU0spICsgbXlfZmJfaW5mby0+ZmJfc2l6ZSk7DQogDQogCW9mZiA9 IHZtYS0+dm1fcGdvZmYgPDwgUEFHRV9TSElGVDsNCiANCkBAIC00MDgsNyArMTkzLDcgQEANCiAJ LyogVGhpcyBpcyBhbiBJTyBtYXAgLSB0ZWxsIG1heWR1bXAgdG8gc2tpcCB0aGlzIFZNQSAqLw0K IAl2bWEtPnZtX2ZsYWdzIHw9IFZNX0lPOw0KICAgICANCi0JaWYgKGlvX3JlbWFwX3BhZ2VfcmFu Z2Uodm1hLT52bV9zdGFydCwgb2ZmLA0KKwlpZiAoaW9fcmVtYXBfcGFnZV9yYW5nZSh2bWEsIHZt YS0+dm1fc3RhcnQsIG9mZiwNCiAJCQkJdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0LA0KIAkJ CQl2bWEtPnZtX3BhZ2VfcHJvdCkpIHsNCiAJCXJldHVybiAtRUFHQUlOOw0KQEAgLTQxOCwzMyAr MjAzLDY4IEBADQogCXJldHVybiAwOw0KIH0NCiANCi1pbnQgYXUxMTAwX3Bhbl9kaXNwbGF5KGNv bnN0IHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLA0KLQkJICAgICAgIHN0cnVjdCBmYl9p bmZvX2dlbiAqaW5mbykNCi17DQotCXJldHVybiAwOw0KLX0NCitzdGF0aWMgc3RydWN0IGZiX29w cyBhdTExMDBmYl9vcHMgPSB7DQorCS5vd25lcgkJPSBUSElTX01PRFVMRSwNCisJLmZiX3NldGNv bHJlZwk9IGF1MTEwMGZiX3NldGNvbHJlZywNCisJLmZiX3Bhbl9kaXNwbGF5CT0gYXUxMTAwZmJf cGFuX2Rpc3BsYXksDQorCS5mYl9maWxscmVjdAk9IGNmYl9maWxscmVjdCwNCisJLmZiX2NvcHlh cmVhCT0gY2ZiX2NvcHlhcmVhLA0KKwkuZmJfaW1hZ2VibGl0CT0gY2ZiX2ltYWdlYmxpdCwNCisJ LmZiX2N1cnNvcgk9IHNvZnRfY3Vyc29yLA0KKwkuZmJfbW1hcCAgICAgICAgPSBhdTExMDBmYl9t bWFwLA0KK307DQogDQotc3RhdGljIGludCBhdTExMDBmYl9pb2N0bChzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdV9pbnQgY21kLA0KLQkJCSAgdV9sb25nIGFyZywgaW50 IGNvbiwgc3RydWN0IGZiX2luZm8gKmluZm8pDQordm9pZCBhdTExMDBmYl9zZXR1cChjaGFyICpv cHRpb25zKQ0KIHsNCi0JLyogbm90aGluZyB0byBkbyB5ZXQgKi8NCi0JcmV0dXJuIC1FSU5WQUw7 DQotfQ0KKwljaGFyKiB0aGlzX29wdDsNCisjaWZuZGVmIENPTkZJR19XV1BDDQorCWludCBpOw0K KwlpbnQgbnVtX3BhbmVscyA9IHNpemVvZihwYW5lbHMpL3NpemVvZihzdHJ1Y3Qga25vd25fbGNk X3BhbmVscyk7DQorI2VuZGlmDQogDQotc3RhdGljIHN0cnVjdCBmYmdlbl9od3N3aXRjaCBhdTEx MDBfc3dpdGNoID0gew0KLQlhdTExMDBfZGV0ZWN0LCANCi0JYXUxMTAwX2VuY29kZV9maXgsIA0K LQlhdTExMDBfZGVjb2RlX3ZhciwgDQotCWF1MTEwMF9lbmNvZGVfdmFyLCANCi0JYXUxMTAwX2dl dF9wYXIsIA0KLQlhdTExMDBfc2V0X3BhciwgDQotCWF1MTEwMF9nZXRjb2xyZWcsIA0KLQlhdTEx MDBfc2V0Y29scmVnLCANCi0JYXUxMTAwX3Bhbl9kaXNwbGF5LCANCi0JYXUxMTAwX2JsYW5rLCAN Ci0JYXUxMTAwX3NldF9kaXNwDQotfTsNCisgICAgDQorCWlmICghb3B0aW9ucyB8fCAhKm9wdGlv bnMpDQorCQlyZXR1cm47DQorDQorCXdoaWxlICgodGhpc19vcHQgPSBzdHJzZXAoJm9wdGlvbnMs ICIsIikpICE9IE5VTEwpIHsNCisJCWlmICghc3RybmNtcCh0aGlzX29wdCwgInBhbmVsOiIsIDYp KSB7DQorI2lmZGVmIENPTkZJR19XV1BDDQorCQkgIC8qIHdlIGhhdmUganVzdCBvbmUgZml4ZWQg TENEICovDQorCQkgIG15X2xjZF9pbmRleCA9IDA7DQorI2Vsc2UNCisjaWYgZGVmaW5lZChDT05G SUdfTUlQU19QQjExMDApIHx8IGRlZmluZWQoQ09ORklHX01JUFNfREIxMTAwKQ0KKwkJICAvKiBS ZWFkIFBiMTEwMCBTd2l0Y2ggUzEwID8gKi8NCisJCQlpZiAoIXN0cm5jbXAodGhpc19vcHQrNiwg InMxMCIsIDMpKQ0KKwkJCXsNCisJCQkJaW50IHBhbmVsOw0KKwkJCQlwYW5lbCA9ICoodm9sYXRp bGUgaW50ICopMHhBRTAwMDAwODsgLyogQkNTUiBTV0lUQ0hFUyAqLw0KKwkJCQlwYW5lbCA+Pj0g ODsNCisJCQkJcGFuZWwgJj0gMHgwRjsNCisJCQkJaWYgKHBhbmVsID49IG51bV9wYW5lbHMpIHBh bmVsID0gMDsNCisJCQkJbXlfbGNkX2luZGV4ID0gcGFuZWw7DQorCQkJfQ0KKwkJCWVsc2UNCisj ZW5kaWYNCisJCQkvKiBHZXQgdGhlIHBhbmVsIG5hbWUsIGV2ZXJ5dGhpbmcgZWxzZSBpZiBmaXhl ZCAqLw0KKwkJCWZvciAoaT0wOyBpPG51bV9wYW5lbHM7IGkrKykgew0KKwkJCQlpZiAoIXN0cm5j bXAodGhpc19vcHQrNiwgcGFuZWxzW2ldLnBhbmVsX25hbWUsIA0KKwkJCQkJCQlzdHJsZW4odGhp c19vcHQpKSkgew0KKwkJCQkJbXlfbGNkX2luZGV4ID0gaTsNCisJCQkJCWJyZWFrOw0KKwkJCQl9 DQorCQkJfQ0KKyNlbmRpZiAvKiBDT05GSUdfV1dQQyAqLw0KKwkJfQ0KKwkJZWxzZSBpZiAoIXN0 cm5jbXAodGhpc19vcHQsICJub2h3Y3Vyc29yIiwgMTApKSB7DQorCQkJcHJpbnRrKCJub2h3Y3Vy c29yXG4iKTsNCisJCQlub2h3Y3Vyc29yID0gMTsNCisJCX0NCisJfSANCiANCisJcHJpbnRrKCJh dTExMDBmYjogUGFuZWwgJWQgJXNcbiIsIG15X2xjZF9pbmRleCwNCisJCXBhbmVsc1tteV9sY2Rf aW5kZXhdLnBhbmVsX25hbWUpOw0KKwlwX2xjZCA9ICZwYW5lbHNbbXlfbGNkX2luZGV4XTsNCit9 DQogDQogaW50IGF1MTEwMF9zZXRtb2RlKHZvaWQpIA0KIHsNCkBAIC00NzgsNyArMjk4LDcgQEAN CiAJcF9sY2RfcmVnLT5sY2RfdmVydHRpbWluZyA9IHBfbGNkLT5tb2RlX3ZlcnR0aW1pbmc7DQog CXBfbGNkX3JlZy0+bGNkX2Nsa2NvbnRyb2wgPSBwX2xjZC0+bW9kZV9jbGtjb250cm9sOw0KIAlw X2xjZF9yZWctPmxjZF93b3JkcyA9IHdvcmRzIC0gMTsNCi0JcF9sY2RfcmVnLT5sY2RfZG1hYWRk cjAgPSBmYl9pbmZvLmZiX3BoeXM7DQorCXBfbGNkX3JlZy0+bGNkX2RtYWFkZHIwID0gbXlfZmJf aW5mby0+ZmJfcGh5czsNCiANCiAJLyogdHVybiBvbiBwYW5lbCAqLw0KICNpZmRlZiBDT05GSUdf TUlQU19QQjExMDANCkBAIC00OTEsMjMgKzMxMSw0OSBAQA0KIAlhdV93cml0ZWwoMHgwMDA0MDAw MCwgMHhCMTkwMDEwOCk7DQogCWF1X3dyaXRlbCgweDAxMDAwMTAwLCAweEIxNzAwMDA4KTsNCiAj ZW5kaWYNCisjaWZkZWYgQ09ORklHX1dXUEMNCisJYXVfd3JpdGVsKDB4MDAwMjIxQTEsIDB4QjE5 MDAwMkMpOw0KKw0KKwlhdV93cml0ZWwoMHg0MDIyODAwMCwgMHhCMTkwMDEwOCk7DQorCWF1X3dy aXRlbCgweDAwMUQwMDAwLCAweEIxOTAwMTBDKTsNCisJYXVfd3JpdGVsKDB4NDAzRjgwMDAsIDB4 QjE5MDAxMDApOw0KKw0KKwkvKiBUT0RPOiBtb3ZlIGluIHRoZSByaWdodCBwbGFjZSAqLw0KKw0K KwlhdV93cml0ZWwoMHgwMDAwMDAwMSwgMHhCMTcwMDAxNCk7DQorCWF1X3dyaXRlbCgweDAwMDAw NjBGLCAweEIxNzAwMDAwKTsNCisJYXVfd3JpdGVsKDB4MDYwRjA0MDAsIDB4QjE3MDAwMDgpOw0K Kw0KKwkvKiB0dXJuIG9uIExDRCAqLw0KKwl7DQorCSAgdW5zaWduZWQgbG9uZyB0Ow0KKw0KKwkg IHQgPSBhdV9yZWFkbCgweEIxOTAwMTA4KTsgDQorCSAgdCB8PSAoMSA8PCAyMCk7DQorCSAgYXVf d3JpdGVsKHQsIDB4QjE5MDAxMDgpOw0KKwkgIHVkZWxheSgxMDAwKTsNCisgICAgICAgICAgdCB8 PSAoMSA8PCAxOSk7DQorICAgICAgICAgIGF1X3dyaXRlbCh0LCAweEIxOTAwMTA4KTsNCisJICBw cmludGsoIkxDRCBPTjogMHhCMTkwMDEwOCBpcyAlMDhseFxuIiwgdCk7DQorCX0NCisNCisjZW5k aWYNCiANCiAJcF9sY2RfcmVnLT5sY2RfY29udHJvbCB8PSBMQ0RfQ09OVFJPTF9HTzsNCiANCiAJ cmV0dXJuIDA7DQogfQ0KIA0KLQ0KLWludCBfX2luaXQgYXUxMTAwZmJfaW5pdCh2b2lkKQ0KK3N0 YXRpYyBpbnQgX19pbml0IGF1MTEwMGZiX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSkNCiB7 DQotCXVpbnQzMiBzeXNfY2xrc3JjOw0KKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYgPSB0 b19wbGF0Zm9ybV9kZXZpY2UoZGV2aWNlKTsNCisJc3RydWN0IGZiX2luZm8gKmluZm87DQorCWlu dCBlcnI7DQogCXVuc2lnbmVkIGxvbmcgcGFnZTsNCisJdW5zaWduZWQgaW50IHNpemVfdm1vZGU7 DQorCXVpbnQzMiBzeXNfY2xrc3JjOw0KIA0KLQkvKg0KLQkqIEdldCB0aGUgcGFuZWwgaW5mb3Jt YXRpb24vZGlzcGxheSBtb2RlIGFuZCB1cGRhdGUgdGhlIHJlZ2lzdHJ5DQotCSovDQotCXBfbGNk ID0gJnBhbmVsc1tteV9sY2RfaW5kZXhdOw0KLQ0KKwkvKiB2ZXJpZnkgTENEIHJvdGF0aW9uICov DQogCXN3aXRjaCAocF9sY2QtPm1vZGVfY29udHJvbCAmIExDRF9DT05UUk9MX1NNKQ0KIAl7DQog CQljYXNlIExDRF9DT05UUk9MX1NNXzA6DQpAQCAtNTI2LDYgKzM3MiwxNyBAQA0KIAkJCWJyZWFr Ow0KIAl9DQogDQorCS8qIGFsbG9jIGluZm8gc3RydWN0ICovDQorCWluZm8gPSBmcmFtZWJ1ZmZl cl9hbGxvYyhzaXplb2Yoc3RydWN0IGF1MTEwMGZiX2luZm8pLCAmZGV2LT5kZXYpOw0KKwlpZiAo IWluZm8pIHsNCisJCXByaW50aygiQ2Fubm90IGFsbG9jYXRlIEZCXG4iKTsNCisJCXJldHVybiAt RU5PTUVNOw0KKwl9DQorCW15X2ZiX2luZm8gPSAoc3RydWN0IGF1MTEwMGZiX2luZm8gKikgaW5m bzsNCisJaW5mby0+cHNldWRvX3BhbGV0dGUgPSBpbmZvLT5wYXI7DQorCWluZm8tPnBhciA9IE5V TEw7DQorCW15X2ZiX2luZm8tPm5vaHdjdXJzb3IgPSBub2h3Y3Vyc29yOw0KKw0KIAkvKg0KIAkg KiBQYW5lbCBkaW1lbnNpb25zIHggYnBwIG11c3QgYmUgZGl2aXNpYmxlIGJ5IDMyDQogCSAqLw0K QEAgLTUzNCwxNDMgKzM5MSwyMjUgQEANCiAJaWYgKCgocF9sY2QtPnhyZXMgKiBwX2xjZC0+YnBw KSAlIDMyKSAhPSAwKSANCiAJCXByaW50aygiSE9SWiAlJSAzMlxuIik7DQogDQotCS8qDQotCSAq IEFsbG9jYXRlIExDRCBmcmFtZWJ1ZmZlciBmcm9tIHN5c3RlbSBtZW1vcnkNCi0JICovDQotCWZi X2luZm8uZmJfc2l6ZSA9IChwX2xjZC0+eHJlcyAqIHBfbGNkLT55cmVzICogcF9sY2QtPmJwcCkg LyA4Ow0KLQkNCi0JY3VycmVudF9wYXIudmFyLnhyZXMgPSBwX2xjZC0+eHJlczsNCi0JY3VycmVu dF9wYXIudmFyLnhyZXNfdmlydHVhbCA9IHBfbGNkLT54cmVzOw0KLQljdXJyZW50X3Bhci52YXIu eXJlcyA9IHBfbGNkLT55cmVzOw0KLQljdXJyZW50X3Bhci52YXIueXJlc192aXJ0dWFsID0gcF9s Y2QtPnlyZXM7DQotCWN1cnJlbnRfcGFyLnZhci5iaXRzX3Blcl9waXhlbCA9IHBfbGNkLT5icHA7 DQotDQotCS8qIEZJWCEhISBvbmx5IHdvcmtzIGZvciA4LzE2IGJwcCAqLw0KLQljdXJyZW50X3Bh ci5saW5lX2xlbmd0aCA9IHBfbGNkLT54cmVzICogcF9sY2QtPmJwcCAvIDg7IC8qIGluIGJ5dGVz ICovDQotCWZiX2luZm8uZmJfdmlydF9zdGFydCA9ICh1bnNpZ25lZCBsb25nICkNCisJLyogZGV0 ZXJtaW5lIHN0YXJ0IGFkZHJlc3Mgb2YgdGhlIEZCICovDQorCW15X2ZiX2luZm8tPmZiX3NpemUg PSAocF9sY2QtPnhyZXMgKiBwX2xjZC0+eXJlcyAqIHBfbGNkLT5icHApIC8gODsNCisJbXlfZmJf aW5mby0+ZmJfdmlydF9zdGFydCA9ICh1bnNpZ25lZCBsb25nICkNCiAJCV9fZ2V0X2ZyZWVfcGFn ZXMoR0ZQX0FUT01JQyB8IEdGUF9ETUEsIA0KLQkJCQlnZXRfb3JkZXIoZmJfaW5mby5mYl9zaXpl ICsgMHgxMDAwKSk7DQotCWlmICghZmJfaW5mby5mYl92aXJ0X3N0YXJ0KSB7DQorCQkJCSBnZXRf b3JkZXIobXlfZmJfaW5mby0+ZmJfc2l6ZSArIDB4MTAwMCkpOw0KKwlpZiAoIW15X2ZiX2luZm8t PmZiX3ZpcnRfc3RhcnQpIHsNCiAJCXByaW50aygiVW5hYmxlIHRvIGFsbG9jYXRlIGZiIG1lbW9y eVxuIik7DQogCQlyZXR1cm4gLUVOT01FTTsNCiAJfQ0KLQlmYl9pbmZvLmZiX3BoeXMgPSB2aXJ0 X3RvX2J1cygodm9pZCAqKWZiX2luZm8uZmJfdmlydF9zdGFydCk7DQotDQorCWluZm8tPnNjcmVl bl9iYXNlID0gbXlfZmJfaW5mby0+ZmJfdmlydF9zdGFydDsNCisJbXlfZmJfaW5mby0+ZmJfcGh5 cyA9IHZpcnRfdG9fYnVzKCh2b2lkICopbXlfZmJfaW5mby0+ZmJfdmlydF9zdGFydCk7DQorCWF1 MTEwMGZiX2ZpeC5zbWVtX3N0YXJ0ID0gbXlfZmJfaW5mby0+ZmJfdmlydF9zdGFydDsNCiAJLyoN CiAJICogU2V0IHBhZ2UgcmVzZXJ2ZWQgc28gdGhhdCBtbWFwIHdpbGwgd29yay4gVGhpcyBpcyBu ZWNlc3NhcnkNCiAJICogc2luY2Ugd2UnbGwgYmUgcmVtYXBwaW5nIG5vcm1hbCBtZW1vcnkuDQog CSAqLw0KLQlmb3IgKHBhZ2UgPSBmYl9pbmZvLmZiX3ZpcnRfc3RhcnQ7DQotCSAgICAgcGFnZSA8 IFBBR0VfQUxJR04oZmJfaW5mby5mYl92aXJ0X3N0YXJ0ICsgZmJfaW5mby5mYl9zaXplKTsgDQor CWZvciAocGFnZSA9IG15X2ZiX2luZm8tPmZiX3ZpcnRfc3RhcnQ7DQorCSAgICAgcGFnZSA8IFBB R0VfQUxJR04obXlfZmJfaW5mby0+ZmJfdmlydF9zdGFydCArIG15X2ZiX2luZm8tPmZiX3NpemUp OyANCiAJICAgICBwYWdlICs9IFBBR0VfU0laRSkgew0KIAkJU2V0UGFnZVJlc2VydmVkKHZpcnRf dG9fcGFnZShwYWdlKSk7DQogCX0NCiANCi0JbWVtc2V0KCh2b2lkICopZmJfaW5mby5mYl92aXJ0 X3N0YXJ0LCAwLCBmYl9pbmZvLmZiX3NpemUpOw0KKwkvKiBzZXR1cCBicHAgKi8NCisJYXUxMTAw ZmJfZGVmaW5lZC5iaXRzX3Blcl9waXhlbCA9IHBfbGNkLT5icHA7DQorCWlmICgxNSA9PSBhdTEx MDBmYl9kZWZpbmVkLmJpdHNfcGVyX3BpeGVsKQ0KKwkJYXUxMTAwZmJfZGVmaW5lZC5iaXRzX3Bl cl9waXhlbCA9IDE2Ow0KKwlhdTExMDBmYl9maXgudmlzdWFsICAgPSAoYXUxMTAwZmJfZGVmaW5l ZC5iaXRzX3Blcl9waXhlbCA9PSA4KSA/DQorCQlGQl9WSVNVQUxfUFNFVURPQ09MT1IgOiBGQl9W SVNVQUxfVFJVRUNPTE9SOw0KKw0KKwkvKiBzZXR1cCBnZW9tZXRyeSAqLw0KKwlhdTExMDBmYl9k ZWZpbmVkLnhyZXMgPSBwX2xjZC0+eHJlczsNCisJYXUxMTAwZmJfZGVmaW5lZC55cmVzID0gcF9s Y2QtPnlyZXM7DQorCWF1MTEwMGZiX2ZpeC5saW5lX2xlbmd0aCA9IHBfbGNkLT54cmVzICogcF9s Y2QtPmJwcCAvIDg7DQorDQorCS8qICAgc2l6ZV92bW9kZSAtLSB0aGF0IGlzIHRoZSBhbW91bnQg b2YgbWVtb3J5IG5lZWRlZCBmb3IgdGhlDQorCSAqICAgICAgICAgICAgICAgICB1c2VkIHZpZGVv IG1vZGUsIGkuZS4gdGhlIG1pbmltdW0gYW1vdW50IG9mDQorCSAqICAgICAgICAgICAgICAgICBt ZW1vcnkgd2UgbmVlZC4gKi8NCisJc2l6ZV92bW9kZSA9IGF1MTEwMGZiX2RlZmluZWQueXJlcyAq IGF1MTEwMGZiX2ZpeC5saW5lX2xlbmd0aDsNCisNCisJYXUxMTAwZmJfZml4LnNtZW1fbGVuID0g bXlfZmJfaW5mby0+ZmJfc2l6ZTsNCisNCisJcHJpbnRrKEtFUk5fSU5GTyAiYXUxMTAwZmI6IGZy YW1lYnVmZmVyIGF0IDB4JWx4LCBtYXBwZWQgdG8gMHglcFxuIiwNCisJICAgICAgIGF1MTEwMGZi X2ZpeC5zbWVtX3N0YXJ0LCBpbmZvLT5zY3JlZW5fYmFzZSk7DQorCXByaW50ayhLRVJOX0lORk8g ImF1MTEwMGZiOiBtb2RlIGlzICVkeCVkeCVkLCBsaW5lbGVuZ3RoPSVkXG4iLA0KKwkgICAgICAg YXUxMTAwZmJfZGVmaW5lZC54cmVzLCBhdTExMDBmYl9kZWZpbmVkLnlyZXMsIGF1MTEwMGZiX2Rl ZmluZWQuYml0c19wZXJfcGl4ZWwsIGF1MTEwMGZiX2ZpeC5saW5lX2xlbmd0aCk7DQorDQorCWF1 MTEwMGZiX2RlZmluZWQueHJlc192aXJ0dWFsID0gYXUxMTAwZmJfZGVmaW5lZC54cmVzOw0KKwlh dTExMDBmYl9kZWZpbmVkLnlyZXNfdmlydHVhbCA9IGF1MTEwMGZiX2ZpeC5zbWVtX2xlbiAvIGF1 MTEwMGZiX2ZpeC5saW5lX2xlbmd0aDsNCisNCisJLyogc29tZSBkdW1teSB2YWx1ZXMgZm9yIHRp bWluZyB0byBtYWtlIGZic2V0IGhhcHB5ICovDQorCWF1MTEwMGZiX2RlZmluZWQucGl4Y2xvY2sg ICAgID0gMTAwMDAwMDAgLyBhdTExMDBmYl9kZWZpbmVkLnhyZXMgKiAxMDAwIC8gYXUxMTAwZmJf ZGVmaW5lZC55cmVzOw0KKwlhdTExMDBmYl9kZWZpbmVkLmxlZnRfbWFyZ2luICA9IChhdTExMDBm Yl9kZWZpbmVkLnhyZXMgLyA4KSAmIDB4Zjg7DQorCWF1MTEwMGZiX2RlZmluZWQuaHN5bmNfbGVu ICAgID0gKGF1MTEwMGZiX2RlZmluZWQueHJlcyAvIDgpICYgMHhmODsNCisJDQorCS8qIFRPRE8s IDhicHAgKi8NCisJYXUxMTAwZmJfZGVmaW5lZC5yZWQub2Zmc2V0ICAgID0gMTE7DQorCWF1MTEw MGZiX2RlZmluZWQucmVkLmxlbmd0aCAgICA9IDU7DQorCWF1MTEwMGZiX2RlZmluZWQuZ3JlZW4u b2Zmc2V0ICA9IDU7DQorCWF1MTEwMGZiX2RlZmluZWQuZ3JlZW4ubGVuZ3RoICA9IDY7DQorCWF1 MTEwMGZiX2RlZmluZWQuYmx1ZS5vZmZzZXQgICA9IDA7DQorCWF1MTEwMGZiX2RlZmluZWQuYmx1 ZS5sZW5ndGggICA9IDU7DQorCWF1MTEwMGZiX2RlZmluZWQudHJhbnNwLm9mZnNldCA9IDA7DQor CWF1MTEwMGZiX2RlZmluZWQudHJhbnNwLmxlbmd0aCA9IDA7DQorDQorI2lmIDANCisJLyogdGVz dCBwYXR0ZXJuICovDQorI2RlZmluZSBCTE9DSyAxNg0KKwl7DQorCQlpbnQgeCx5LHh4LHl5LGk7 DQorCQl1bnNpZ25lZCBzaG9ydCBjOw0KKwkJdW5zaWduZWQgc2hvcnQgKnAgPSAodW5zaWduZWQg c2hvcnQgKikgbXlfZmJfaW5mby0+ZmJfdmlydF9zdGFydDsNCisJCWludCBteCA9IHBfbGNkLT54 cmVzIC8gQkxPQ0s7DQorCQlpbnQgbXkgPSBwX2xjZC0+eXJlcyAvIEJMT0NLOzsNCisJCWkgPSAw Ow0KKwkJZm9yKHg9MDsgeDxteDsgeCsrKSANCisJCQlmb3IoeT0wOyB5PG15OyB5KyspIHsNCisJ CQkJc3dpdGNoIChpJTMpIHsNCisJCQkJY2FzZSAwOg0KKwkJCQkJYyA9ICgweDFmIDw8ICBhdTEx MDBmYl9kZWZpbmVkLnJlZC5vZmZzZXQpOw0KKwkJCQkJYnJlYWs7DQorCQkJCWNhc2UgMToNCisJ CQkJCWMgPSAoMHgzZiA8PCAgYXUxMTAwZmJfZGVmaW5lZC5ncmVlbi5vZmZzZXQpOw0KKwkJCQkJ YnJlYWs7DQorCQkJCWNhc2UgMjoNCisJCQkJCWMgPSAoMHgxZiA8PCAgYXUxMTAwZmJfZGVmaW5l ZC5ibHVlLm9mZnNldCk7DQorCQkJCQlicmVhazsNCisJCQkJZGVmYXVsdDoNCisJCQkJCWMgPSAw Ow0KKwkJCQkJYnJlYWs7DQorCQkJCX0NCisJCQkJZm9yKHh4ID0geCpCTE9DSyA7IHh4IDwgKHgr MSkqQkxPQ0s7IHh4KyspIA0KKwkJCQkJZm9yKHl5ID0geSpCTE9DSyA7IHl5IDwgKHkrMSkqQkxP Q0s7IHl5KyspIA0KKwkJCQkJCXBbeHgreXkqcF9sY2QtPnhyZXNdID0gYzsNCisJCQkJaSsrOw0K KwkJCX0NCisJfQ0KKyN1bmRlZiBCTE9DSw0KKyNlbHNlDQorCW1lbXNldCgodm9pZCAqKW15X2Zi X2luZm8tPmZiX3ZpcnRfc3RhcnQsIDAsIG15X2ZiX2luZm8tPmZiX3NpemUpOw0KKyNlbmRpZg0K Kw0KKwlzY3JlZW5faW5mby5yc3ZkX3NpemUgPSAwOw0KKwlzY3JlZW5faW5mby5yZWRfc2l6ZSA9 IGF1MTEwMGZiX2RlZmluZWQucmVkLmxlbmd0aDsNCisJc2NyZWVuX2luZm8uZ3JlZW5fc2l6ZSA9 IGF1MTEwMGZiX2RlZmluZWQuZ3JlZW4ubGVuZ3RoOw0KKwlzY3JlZW5faW5mby5ibHVlX3NpemUg PSBhdTExMDBmYl9kZWZpbmVkLmJsdWUubGVuZ3RoOw0KKwlzY3JlZW5faW5mby5yc3ZkX3BvcyA9 IDA7DQorCXNjcmVlbl9pbmZvLnJlZF9wb3MgPSBhdTExMDBmYl9kZWZpbmVkLnJlZC5vZmZzZXQ7 DQorCXNjcmVlbl9pbmZvLmdyZWVuX3BvcyA9IGF1MTEwMGZiX2RlZmluZWQuZ3JlZW4ub2Zmc2V0 Ow0KKwlzY3JlZW5faW5mby5ibHVlX3BvcyA9IGF1MTEwMGZiX2RlZmluZWQuYmx1ZS5vZmZzZXQ7 DQorCXNjcmVlbl9pbmZvLmxmYl9iYXNlID0gbXlfZmJfaW5mby0+ZmJfdmlydF9zdGFydDsNCisJ c2NyZWVuX2luZm8ubGZiX3dpZHRoID0gYXUxMTAwZmJfZGVmaW5lZC54cmVzOw0KKwlzY3JlZW5f aW5mby5sZmJfaGVpZ2h0ID0gYXUxMTAwZmJfZGVmaW5lZC55cmVzOw0KKwlzY3JlZW5faW5mby5s ZmJfZGVwdGggPSBhdTExMDBmYl9kZWZpbmVkLmJpdHNfcGVyX3BpeGVsOw0KKwlzY3JlZW5faW5m by5sZmJfbGluZWxlbmd0aCA9IGF1MTEwMGZiX2ZpeC5saW5lX2xlbmd0aDsNCisJc2NyZWVuX2lu Zm8ubGZiX3NpemUgPSBteV9mYl9pbmZvLT5mYl9zaXplOw0KKw0KKwlpZiAoYXUxMTAwZmJfZGVm aW5lZC5iaXRzX3Blcl9waXhlbCA8PSA4KSB7DQorCQlkZXB0aCA9IGF1MTEwMGZiX2RlZmluZWQu Z3JlZW4ubGVuZ3RoOw0KKwkJYXUxMTAwZmJfZGVmaW5lZC5yZWQubGVuZ3RoID0NCisJCWF1MTEw MGZiX2RlZmluZWQuZ3JlZW4ubGVuZ3RoID0NCisJCWF1MTEwMGZiX2RlZmluZWQuYmx1ZS5sZW5n dGggPQ0KKwkJYXUxMTAwZmJfZGVmaW5lZC5iaXRzX3Blcl9waXhlbDsNCisJfQ0KKw0KKwlwcmlu dGsoS0VSTl9JTkZPICJhdTExMDBmYjogJXM6ICINCisJICAgICAgICJzaXplPSVkOiVkOiVkOiVk LCBzaGlmdD0lZDolZDolZDolZFxuIiwNCisJICAgICAgIChhdTExMDBmYl9kZWZpbmVkLmJpdHNf cGVyX3BpeGVsID4gOCkgPw0KKwkgICAgICAgIlRydWVjb2xvciIgOiAiUHNldWRvY29sb3IiLA0K KwkgICAgICAgc2NyZWVuX2luZm8ucnN2ZF9zaXplLA0KKwkgICAgICAgc2NyZWVuX2luZm8ucmVk X3NpemUsDQorCSAgICAgICBzY3JlZW5faW5mby5ncmVlbl9zaXplLA0KKwkgICAgICAgc2NyZWVu X2luZm8uYmx1ZV9zaXplLA0KKwkgICAgICAgc2NyZWVuX2luZm8ucnN2ZF9wb3MsDQorCSAgICAg ICBzY3JlZW5faW5mby5yZWRfcG9zLA0KKwkgICAgICAgc2NyZWVuX2luZm8uZ3JlZW5fcG9zLA0K KwkgICAgICAgc2NyZWVuX2luZm8uYmx1ZV9wb3MpOw0KKw0KKwlpbmZvLT5mYm9wcyA9ICZhdTEx MDBmYl9vcHM7DQorCWluZm8tPnZhciA9IGF1MTEwMGZiX2RlZmluZWQ7DQorCWluZm8tPmZpeCA9 IGF1MTEwMGZiX2ZpeDsNCisJaW5mby0+ZmxhZ3MgPSBGQklORk9fRkxBR19ERUZBVUxUOw0KKw0K KwlpZiAoZmJfYWxsb2NfY21hcCgmaW5mby0+Y21hcCwgMjU2LCAwKSA8IDApIHsNCisJCWVyciA9 IC1FTlhJTzsNCisJCWdvdG8gZXJyOw0KKwl9DQorCWlmIChyZWdpc3Rlcl9mcmFtZWJ1ZmZlcihp bmZvKTwwKSB7DQorCQllcnIgPSAtRUlOVkFMOw0KKwkJZmJfZGVhbGxvY19jbWFwKCZpbmZvLT5j bWFwKTsNCisJCWdvdG8gZXJyOw0KKwl9DQorCXByaW50ayhLRVJOX0lORk8gImZiJWQ6ICVzIGZy YW1lIGJ1ZmZlciBkZXZpY2VcbiIsDQorCSAgICAgICBpbmZvLT5ub2RlLCBpbmZvLT5maXguaWQp Ow0KIA0KIAkvKiBzZXQgZnJlcWN0cmwgbm93IHRvIGFsbG93IG1vcmUgdGltZSB0byBzdGFiaWxp emUgKi8NCiAJLyogemVyby1vdXQgb3V0IExDRCBiaXRzICovDQorI2lmZGVmIENPTkZJR19XV1BD DQorCXsNCisJICB1bnNpZ25lZCBsb25nIHQ7DQorDQorCSAgdCA9IGF1X3JlYWRsKFNZU19GUkVR Q1RSTDEpICYgfigweDNmZik7IA0KKwkgIHByaW50aygiYmVmb3JlIFNZU19GUkVRQ1RSTDEgaXMg JTA4bHhcbiIsIHQpOw0KKwkgIHQgfD0gKDEgPDwgMSkgfCAoOSA8PCAyKTsNCisJICBhdV93cml0 ZWwodCwgU1lTX0ZSRVFDVFJMMSk7DQorCSAgcHJpbnRrKCJhZnRlciBTWVNfRlJFUUNUUkwxIGlz ICUwOGx4XG4iLCB0KTsNCisJfQ0KKwlzeXNfY2xrc3JjID0gYXVfcmVhZGwoU1lTX0NMS1NSQykg JiB+KCAoMTw8OSkgfCAoMTw8OCkgfCAoMTw8NykgfCAoMTw8NikgfCAoMTw8NSkgKTsgDQorCXN5 c19jbGtzcmMgfD0gKDE8PDkpIHwgKDE8PDcpOw0KKwlhdV93cml0ZWwoc3lzX2Nsa3NyYywgU1lT X0NMS1NSQyk7DQorI2Vsc2UNCiAJc3lzX2Nsa3NyYyA9IGF1X3JlYWRsKFNZU19DTEtTUkMpICYg fjB4MDAwMDAzZTA7IA0KIAlzeXNfY2xrc3JjIHw9IHBfbGNkLT5tb2RlX3RveWNsa3NyYzsNCiAJ YXVfd3JpdGVsKHN5c19jbGtzcmMsIFNZU19DTEtTUkMpOw0KKyNlbmRpZg0KIA0KLQkvKiBGSVhN RSBhZGQgY2hlY2sgdG8gbWFrZSBzdXJlIGF1eHBsbCBpcyB3aGF0IGlzIGV4cGVjdGVkISAqLw0K KwkvKiBzZXR1cCBMQ0QgKi8NCiAJYXUxMTAwX3NldG1vZGUoKTsNCiANCi0JZmJfaW5mby5nZW4u cGFyc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYXUxMTAwZmJfcGFyKTsNCi0JZmJfaW5mby5nZW4uZmJo dyA9ICZhdTExMDBfc3dpdGNoOw0KLQ0KLQlzdHJjcHkoZmJfaW5mby5nZW4uaW5mby5tb2RlbmFt ZSwgIkF1MTEwMCBMQ0QiKTsNCi0JZmJfaW5mby5nZW4uaW5mby5jaGFuZ2V2YXIgPSBOVUxMOw0K LQlmYl9pbmZvLmdlbi5pbmZvLm5vZGUgPSAtMTsNCi0NCi0JZmJfaW5mby5nZW4uaW5mby5mYm9w cyA9ICZhdTExMDBmYl9vcHM7DQotCWZiX2luZm8uZ2VuLmluZm8uZGlzcCA9ICZkaXNwOw0KLQlm Yl9pbmZvLmdlbi5pbmZvLnN3aXRjaF9jb24gPSAmZmJnZW5fc3dpdGNoOw0KLQlmYl9pbmZvLmdl bi5pbmZvLnVwZGF0ZXZhciA9ICZmYmdlbl91cGRhdGVfdmFyOw0KLQlmYl9pbmZvLmdlbi5pbmZv LmJsYW5rID0gJmZiZ2VuX2JsYW5rOw0KLQlmYl9pbmZvLmdlbi5pbmZvLmZsYWdzID0gRkJJTkZP X0ZMQUdfREVGQVVMVDsNCi0NCi0JLyogVGhpcyBzaG91bGQgZ2l2ZSBhIHJlYXNvbmFibGUgZGVm YXVsdCB2aWRlbyBtb2RlICovDQotCWZiZ2VuX2dldF92YXIoJmRpc3AudmFyLCAtMSwgJmZiX2lu Zm8uZ2VuLmluZm8pOw0KLQlmYmdlbl9kb19zZXRfdmFyKCZkaXNwLnZhciwgMSwgJmZiX2luZm8u Z2VuKTsNCi0JZmJnZW5fc2V0X2Rpc3AoLTEsICZmYl9pbmZvLmdlbik7DQotCWZiZ2VuX2luc3Rh bGxfY21hcCgwLCAmZmJfaW5mby5nZW4pOw0KLQlpZiAocmVnaXN0ZXJfZnJhbWVidWZmZXIoJmZi X2luZm8uZ2VuLmluZm8pIDwgMCkNCi0JCXJldHVybiAtRUlOVkFMOw0KLQlwcmludGsoS0VSTl9J TkZPICJmYiVkOiAlcyBmcmFtZSBidWZmZXIgZGV2aWNlXG4iLCANCi0JCQlHRVRfRkJfSURYKGZi X2luZm8uZ2VuLmluZm8ubm9kZSksIA0KLQkJCWZiX2luZm8uZ2VuLmluZm8ubW9kZW5hbWUpOw0K LQ0KIAlyZXR1cm4gMDsNCitlcnI6DQorCWZyYW1lYnVmZmVyX3JlbGVhc2UoaW5mbyk7DQorCXJl dHVybiBlcnI7DQogfQ0KIA0KK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBhdTExMDBmYl9k cml2ZXIgPSB7DQorCS5uYW1lCT0gImF1MTEwMGZiIiwNCisJLmJ1cwk9ICZwbGF0Zm9ybV9idXNf dHlwZSwNCisJLnByb2JlCT0gYXUxMTAwZmJfcHJvYmUsDQorfTsNCiANCi12b2lkIGF1MTEwMGZi X2NsZWFudXAoc3RydWN0IGZiX2luZm8gKmluZm8pDQotew0KLQl1bnJlZ2lzdGVyX2ZyYW1lYnVm ZmVyKGluZm8pOw0KLX0NCi0NCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhdTExMDBm Yl9kZXZpY2UgPSB7DQorCS5uYW1lCT0gImF1MTEwMGZiIiwNCit9Ow0KIA0KLXZvaWQgYXUxMTAw ZmJfc2V0dXAoY2hhciAqb3B0aW9ucywgaW50ICppbnRzKQ0KK2ludCBfX2luaXQgYXUxMTAwZmJf aW5pdCh2b2lkKQ0KIHsNCi0JY2hhciogdGhpc19vcHQ7DQotCWludCBpOw0KLQlpbnQgbnVtX3Bh bmVscyA9IHNpemVvZihwYW5lbHMpL3NpemVvZihzdHJ1Y3Qga25vd25fbGNkX3BhbmVscyk7DQot DQotICAgIA0KLQlpZiAoIW9wdGlvbnMgfHwgISpvcHRpb25zKQ0KLQkJcmV0dXJuOw0KLQ0KLQlm b3IodGhpc19vcHQ9c3RydG9rKG9wdGlvbnMsICIsIik7IHRoaXNfb3B0Ow0KLQkgICAgdGhpc19v cHQ9c3RydG9rKE5VTEwsICIsIikpIHsNCi0JCWlmICghc3RybmNtcCh0aGlzX29wdCwgInBhbmVs OiIsIDYpKSB7DQotI2lmIGRlZmluZWQoQ09ORklHX01JUFNfUEIxMTAwKSB8fCBkZWZpbmVkKENP TkZJR19NSVBTX0RCMTEwMCkNCi0JCQkvKiBSZWFkIFBiMTEwMCBTd2l0Y2ggUzEwID8gKi8NCi0J CQlpZiAoIXN0cm5jbXAodGhpc19vcHQrNiwgInMxMCIsIDMpKQ0KLQkJCXsNCi0JCQkJaW50IHBh bmVsOw0KLQkJCQlwYW5lbCA9ICoodm9sYXRpbGUgaW50ICopMHhBRTAwMDAwODsgLyogQkNTUiBT V0lUQ0hFUyAqLw0KLQkJCQlwYW5lbCA+Pj0gODsNCi0JCQkJcGFuZWwgJj0gMHgwRjsNCi0JCQkJ aWYgKHBhbmVsID49IG51bV9wYW5lbHMpIHBhbmVsID0gMDsNCi0JCQkJbXlfbGNkX2luZGV4ID0g cGFuZWw7DQotCQkJfQ0KLQkJCWVsc2UNCi0jZW5kaWYNCi0JCQkvKiBHZXQgdGhlIHBhbmVsIG5h bWUsIGV2ZXJ5dGhpbmcgZWxzZSBpZiBmaXhlZCAqLw0KLQkJCWZvciAoaT0wOyBpPG51bV9wYW5l bHM7IGkrKykgew0KLQkJCQlpZiAoIXN0cm5jbXAodGhpc19vcHQrNiwgcGFuZWxzW2ldLnBhbmVs X25hbWUsIA0KLQkJCQkJCQlzdHJsZW4odGhpc19vcHQpKSkgew0KLQkJCQkJbXlfbGNkX2luZGV4 ID0gaTsNCi0JCQkJCWJyZWFrOw0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQkJZWxzZSBpZiAoIXN0 cm5jbXAodGhpc19vcHQsICJub2h3Y3Vyc29yIiwgMTApKSB7DQotCQkJcHJpbnRrKCJub2h3Y3Vy c29yXG4iKTsNCi0JCQlmYl9pbmZvLm5vaHdjdXJzb3IgPSAxOw0KLQkJfQ0KLQl9IA0KLQ0KLQlw cmludGsoImF1MTEwMGZiOiBQYW5lbCAlZCAlc1xuIiwgbXlfbGNkX2luZGV4LA0KLQkJcGFuZWxz W215X2xjZF9pbmRleF0ucGFuZWxfbmFtZSk7DQotfQ0KLQ0KKwlpbnQgcmV0Ow0KKwljaGFyICpv cHRpb24gPSBOVUxMOw0KIA0KKwkvKiBpZ25vcmUgZXJyb3IgcmV0dXJuIG9mIGZiX2dldF9vcHRp b25zICovDQorCWZiX2dldF9vcHRpb25zKCJhdTExMDBmYiIsICZvcHRpb24pOw0KKwlhdTExMDBm Yl9zZXR1cChvcHRpb24pOw0KKwlyZXQgPSBkcml2ZXJfcmVnaXN0ZXIoJmF1MTEwMGZiX2RyaXZl cik7DQorDQorCWlmICghcmV0KSB7DQorCQlyZXQgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIo JmF1MTEwMGZiX2RldmljZSk7DQorCQlpZiAocmV0KQ0KKwkJCWRyaXZlcl91bnJlZ2lzdGVyKCZh dTExMDBmYl9kcml2ZXIpOw0KKwl9DQorCXJldHVybiByZXQ7DQorfQ0KK21vZHVsZV9pbml0KGF1 MTEwMGZiX2luaXQpOw0KKw0KKy8qDQorICogT3ZlcnJpZGVzIGZvciBFbWFjcyBzbyB0aGF0IHdl IGZvbGxvdyBMaW51cydzIHRhYmJpbmcgc3R5bGUuDQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQor ICogTG9jYWwgdmFyaWFibGVzOg0KKyAqIGMtYmFzaWMtb2Zmc2V0OiA4DQorICogRW5kOg0KKyAq Lw0KIA0KLSNpZmRlZiBNT0RVTEUNCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7DQotaW50IGluaXRf bW9kdWxlKHZvaWQpDQotew0KLQlyZXR1cm4gYXUxMTAwZmJfaW5pdCgpOw0KLX0NCi0NCi12b2lk IGNsZWFudXBfbW9kdWxlKHZvaWQpDQotew0KLQlhdTExMDBmYl9jbGVhbnVwKHZvaWQpOw0KLX0N Ci0NCi1NT0RVTEVfQVVUSE9SKCJQZXRlIFBvcG92IDxwcG9wb3ZAbXZpc3RhLmNvbT4iKTsNCi1N T0RVTEVfREVTQ1JJUFRJT04oIkF1MTEwMCBMQ0QgZnJhbWVidWZmZXIgZGV2aWNlIGRyaXZlciIp Ow0KLSNlbmRpZiAvKiBNT0RVTEUgKi8NCkluZGV4OiBkcml2ZXJzL3ZpZGVvL2F1MTEwMGZiLmgN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9jdnMvbGludXgvZHJpdmVycy92aWRlby9hdTEx MDBmYi5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xDQpkaWZmIC11IC1yMS4xIGF1MTEwMGZi LmgNCi0tLSBkcml2ZXJzL3ZpZGVvL2F1MTEwMGZiLmgJMTQgSnVsIDIwMDIgMjE6MzM6MzQgLTAw MDAJMS4xDQorKysgZHJpdmVycy92aWRlby9hdTExMDBmYi5oCTEyIEphbiAyMDA1IDA5OjA1OjMx IC0wMDAwDQpAQCAtMTkxLDYgKzE5MSwzOSBAQA0KICAqLw0KIHN0cnVjdCBrbm93bl9sY2RfcGFu ZWxzIHBhbmVsc1tdID0NCiB7DQorI2lmZGVmIENPTkZJR19XV1BDDQorCXsgCQkJLyoganVzdCB0 aGUgc3RhbmRhcmQgTENEICovDQorCQkyNDAsIC8qIHhyZXMgKi8NCisJCTMyMCwgLyogeXJlcyAq Lw0KKwkJMTYsICAvKiBicHAgICovDQorDQorCQkiV1dQQyBMQ0QiLA0KKw0KKwkJLyogbW9kZV9j b250cm9sICovDQorCQkweDAwMDY4MDZBLA0KKw0KKwkJLyogbW9kZV9ob3J6dGltaW5nICovDQor CQkweDBBMTAxMEVGLA0KKw0KKwkJLyogbW9kZV92ZXJ0dGltaW5nICovDQorCQkweDAzMDEwMTNG LA0KKw0KKwkJLyogbW9kZV9jbGtjb250cm9sICovDQorCQkweDAwMDE4MDAxLA0KKw0KKwkJLyog bW9kZV9wd21kaXYgKi8NCisJCTAsDQorDQorCQkvKiBtb2RlX3B3bWhpICovDQorCQkwLA0KKw0K KwkJLyogbW9kZV90b3ljbGtzcmMgKi8NCisJCTAsCQkvKiBub3QgdXNlZCAqLw0KKw0KKwkJLyog bW9kZV9iYWNrbGlnaHQgKi8NCisJCTAJCS8qIG5vdCB1c2VkICovDQorCX0NCisjZWxzZQ0KIAl7 IC8qIDA6IFBiMTEwMCBMQ0RBOiBTaGFycCAzMjB4MjQwIFRGVCBwYW5lbCAqLw0KIAkJMzIwLCAv KiB4cmVzICovDQogCQkyNDAsIC8qIHlyZXMgKi8NCkBAIC0zNzcsNSArNDEwLDYgQEANCiAJCS8q IG1vZGVfYmFja2xpZ2h0ICovDQogCQk3DQogCX0sDQorI2VuZGlmDQogfTsNCiAjZW5kaWYgLyog X0FVMTEwMExDRF9IICovDQo= --=-IJQT9rIiG7FkQrqOha/h-- --=-8sLkLDCYjQPksIkcCxx4 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) iD8DBQBB5PLPq26xP1xKlLcRAqKzAJ4qls3R1yBmgceWcw6JUwbKFWTuzACghe3/ 1aZfZKjvRLjl/1ri6QARy6A= =RpCk -----END PGP SIGNATURE----- --=-8sLkLDCYjQPksIkcCxx4--