From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Fri, 28 Sep 2001 12:37:38 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Fri, 28 Sep 2001 12:37:32 -0400 Received: from chiara.elte.hu ([157.181.150.200]:29199 "HELO chiara.elte.hu") by vger.kernel.org with SMTP id ; Fri, 28 Sep 2001 12:37:18 -0400 Date: Fri, 28 Sep 2001 18:35:05 +0200 (CEST) From: Ingo Molnar Reply-To: To: Alexey Kuznetsov Cc: Linus Torvalds , , Alan Cox , , Andrea Arcangeli Subject: [patch] softirq-2.4.10-B3 In-Reply-To: <200109281618.UAA04122@ms2.inr.ac.ru> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-2090465018-1001694854=:8840" Content-ID: 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. --8323328-2090465018-1001694854=:8840 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: On Fri, 28 Sep 2001 kuznet@ms2.inr.ac.ru wrote: > > - '[ksoftirqd_CPU0]' is confusing on UP systems, changed it to > > '[ksoftirqd]' instead. > > It is useless to argue about preferences, but universal naming scheme > looks as less confusing yet. :-) since you are the second one to complain, i'm convinced :) reverted. i've also added back the BUG() check for smp_processor_id() == cpu. -B3 attached. Ingo --8323328-2090465018-1001694854=:8840 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="softirq-2.4.10-B3" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="softirq-2.4.10-B3" LS0tIGxpbnV4L2tlcm5lbC9rc3ltcy5jLm9yaWcJV2VkIFNlcCAyNiAxNzow NDo0MCAyMDAxDQorKysgbGludXgva2VybmVsL2tzeW1zLmMJV2VkIFNlcCAy NiAxNzowNDo0OCAyMDAxDQpAQCAtNTM4LDggKzUzOCw2IEBADQogRVhQT1JU X1NZTUJPTCh0YXNrbGV0X2tpbGwpOw0KIEVYUE9SVF9TWU1CT0woX19ydW5f dGFza19xdWV1ZSk7DQogRVhQT1JUX1NZTUJPTChkb19zb2Z0aXJxKTsNCi1F WFBPUlRfU1lNQk9MKHJhaXNlX3NvZnRpcnEpOw0KLUVYUE9SVF9TWU1CT0wo Y3B1X3JhaXNlX3NvZnRpcnEpOw0KIEVYUE9SVF9TWU1CT0woX190YXNrbGV0 X3NjaGVkdWxlKTsNCiBFWFBPUlRfU1lNQk9MKF9fdGFza2xldF9oaV9zY2hl ZHVsZSk7DQogDQotLS0gbGludXgva2VybmVsL3NjaGVkLmMub3JpZwlXZWQg U2VwIDI2IDE3OjA0OjQwIDIwMDENCisrKyBsaW51eC9rZXJuZWwvc2NoZWQu YwlXZWQgU2VwIDI2IDE3OjA0OjQ4IDIwMDENCkBAIC0zNjYsNiArMzY2LDI4 IEBADQogfQ0KIA0KIC8qKg0KKyAqIHVud2FrZXVwIC0gdW5kbyB3YWtldXAg aWYgcG9zc2libGUuDQorICogQHA6IHRhc2sNCisgKiBAc3RhdGU6IG5ldyB0 YXNrIHN0YXRlDQorICoNCisgKiBVbmRvIGEgcHJldmlvdXMgd2FrZXVwIG9m IHRoZSBzcGVjaWZpZWQgdGFzayAtIGlmIHRoZSBwcm9jZXNzDQorICogaXMg bm90IHJ1bm5pbmcgYWxyZWFkeS4gVGhlIG1haW4gaW50ZXJmYWNlIHRvIGJl IHVzZWQgaXMNCisgKiB1bndha2V1cF9wcm9jZXNzKCksIGl0IHdpbGwgZG8g YSBsb2NrbGVzcyB0ZXN0IHdoZXRoZXIgdGhlIHRhc2sNCisgKiBpcyBvbiB0 aGUgcnVucXVldWUuDQorICovDQordm9pZCBfX3Vud2FrZXVwX3Byb2Nlc3Mo c3RydWN0IHRhc2tfc3RydWN0ICogcCwgbG9uZyBzdGF0ZSkNCit7DQorCXVu c2lnbmVkIGxvbmcgZmxhZ3M7DQorDQorCXNwaW5fbG9ja19pcnFzYXZlKCZy dW5xdWV1ZV9sb2NrLCBmbGFncyk7DQorCWlmICghcC0+aGFzX2NwdSAmJiAo cCAhPSBjdXJyZW50KSAmJiB0YXNrX29uX3J1bnF1ZXVlKHApKSB7DQorCQlk ZWxfZnJvbV9ydW5xdWV1ZShwKTsNCisJCXAtPnN0YXRlID0gc3RhdGU7DQor CX0NCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcnVucXVldWVfbG9jaywg ZmxhZ3MpOw0KK30NCisNCisvKioNCiAgKiBzY2hlZHVsZV90aW1lb3V0IC0g c2xlZXAgdW50aWwgdGltZW91dA0KICAqIEB0aW1lb3V0OiB0aW1lb3V0IHZh bHVlIGluIGppZmZpZXMNCiAgKg0KLS0tIGxpbnV4L2tlcm5lbC9zb2Z0aXJx LmMub3JpZwlXZWQgU2VwIDI2IDE3OjA0OjQwIDIwMDENCisrKyBsaW51eC9r ZXJuZWwvc29mdGlycS5jCUZyaSBTZXAgMjggMTg6MTY6MjEgMjAwMQ0KQEAg LTU4LDEyICs1OCwzNSBAQA0KIAkJd2FrZV91cF9wcm9jZXNzKHRzayk7DQog fQ0KIA0KKy8qDQorICogSWYgYSBzb2Z0aXJxcyB3ZXJlIGZ1bGx5IGhhbmRs ZWQgYWZ0ZXIga3NvZnRpcnFkIHdhcyB3b2tlbg0KKyAqIHVwIHRoZW4gdHJ5 IHRvIHVuZG8gdGhlIHdha2V1cC4NCisgKi8NCitzdGF0aWMgaW5saW5lIHZv aWQgdW53YWtldXBfc29mdGlycWQodW5zaWduZWQgY3B1KQ0KK3sNCisJc3Ry dWN0IHRhc2tfc3RydWN0ICogdHNrID0ga3NvZnRpcnFkX3Rhc2soY3B1KTsN CisNCisJaWYgKHRzaykNCisJCXVud2FrZXVwX3Byb2Nlc3ModHNrLCBUQVNL X0lOVEVSUlVQVElCTEUpOw0KK30NCisNCisvKg0KKyAqIFdlIHJlc3RhcnQg c29mdGlycSBwcm9jZXNzaW5nIE1BWF9TT0ZUSVJRX1JFU1RBUlQgdGltZXMs DQorICogYW5kIHdlIGZhbGwgYmFjayB0byBzb2Z0aXJxZCBhZnRlciB0aGF0 Lg0KKyAqDQorICogVGhpcyBudW1iZXIgaGFzIGJlZW4gZXN0YWJsaXNoZWQg dmlhIGV4cGVyaW1lbnRhdGlvbi4NCisgKiBUaGUgdHdvIHRoaW5ncyB0byBi YWxhbmNlIGlzIGxhdGVuY3kgYWdhaW5zdCBmYWlybmVzcyAtDQorICogd2Ug d2FudCB0byBoYW5kbGUgc29mdGlycXMgYXMgc29vbiBhcyBwb3NzaWJsZSwg YnV0IHRoZXkNCisgKiBzaG91bGQgbm90IGJlIGFibGUgdG8gbG9jayB1cCB0 aGUgYm94Lg0KKyAqLw0KKyNkZWZpbmUgTUFYX1NPRlRJUlFfUkVTVEFSVCAx MA0KKw0KIGFzbWxpbmthZ2Ugdm9pZCBkb19zb2Z0aXJxKCkNCiB7DQorCWlu dCBtYXhfcmVzdGFydCA9IE1BWF9TT0ZUSVJRX1JFU1RBUlQ7DQogCWludCBj cHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7DQogCV9fdTMyIHBlbmRpbmc7DQog CWxvbmcgZmxhZ3M7DQotCV9fdTMyIG1hc2s7DQogDQogCWlmIChpbl9pbnRl cnJ1cHQoKSkNCiAJCXJldHVybjsNCkBAIC03NSw3ICs5OCw2IEBADQogCWlm IChwZW5kaW5nKSB7DQogCQlzdHJ1Y3Qgc29mdGlycV9hY3Rpb24gKmg7DQog DQotCQltYXNrID0gfnBlbmRpbmc7DQogCQlsb2NhbF9iaF9kaXNhYmxlKCk7 DQogcmVzdGFydDoNCiAJCS8qIFJlc2V0IHRoZSBwZW5kaW5nIGJpdG1hc2sg YmVmb3JlIGVuYWJsaW5nIGlycXMgKi8NCkBAIC05NSw1NSArMTE3LDM3IEBA DQogCQlsb2NhbF9pcnFfZGlzYWJsZSgpOw0KIA0KIAkJcGVuZGluZyA9IHNv ZnRpcnFfcGVuZGluZyhjcHUpOw0KLQkJaWYgKHBlbmRpbmcgJiBtYXNrKSB7 DQotCQkJbWFzayAmPSB+cGVuZGluZzsNCisJCWlmIChwZW5kaW5nICYmIC0t bWF4X3Jlc3RhcnQgJiYgKGN1cnJlbnQtPm5lZWRfcmVzY2hlZCAhPSAxKSkN CiAJCQlnb3RvIHJlc3RhcnQ7DQotCQl9DQogCQlfX2xvY2FsX2JoX2VuYWJs ZSgpOw0KIA0KIAkJaWYgKHBlbmRpbmcpDQorCQkJLyoNCisJCQkgKiBJbiB0 aGUgbm9ybWFsIGNhc2Uga3NvZnRpcnFkIGlzIHJhcmVseSBhY3RpdmF0ZWQs DQorCQkJICogaW5jcmVhc2VkIHNjaGVkdWxpbmcgaHVydHMgcGVyZm9ybWFu Y2UuDQorCQkJICogSXQncyBhIHNhZmV0eSBtZWFzdXJlOiBpZiBleHRlcm5h bCBsb2FkIHN0YXJ0cw0KKwkJCSAqIHRvIGZsb29kIHRoZSBzeXN0ZW0gd2l0 aCBzb2Z0aXJxcyB0aGVuIHdlDQorCQkJICogd2lsbCBtaXRpZ2F0ZSBzb2Z0 aXJxIHdvcmsgdG8gdGhlIHNvZnRpcnEgdGhyZWFkLg0KKwkJCSAqLw0KIAkJ CXdha2V1cF9zb2Z0aXJxZChjcHUpOw0KKwkJZWxzZQ0KKwkJCS8qDQorCQkJ ICogQWxsIHNvZnRpcnFzIGFyZSBoYW5kbGVkIC0gdW5kbyBhbnkgcG9zc2li bGUNCisJCQkgKiB3YWtldXAgb2Ygc29mdGlycWQuIFRoaXMgcmVkdWNlcyBj b250ZXh0IHN3aXRjaA0KKwkJCSAqIG92ZXJoZWFkLg0KKwkJCSAqLw0KKwkJ CXVud2FrZXVwX3NvZnRpcnFkKGNwdSk7DQogCX0NCiANCiAJbG9jYWxfaXJx X3Jlc3RvcmUoZmxhZ3MpOw0KIH0NCiANCi0vKg0KLSAqIFRoaXMgZnVuY3Rp b24gbXVzdCBydW4gd2l0aCBpcnEgZGlzYWJsZWQhDQotICovDQotaW5saW5l IHZvaWQgY3B1X3JhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IGNwdSwgdW5z aWduZWQgaW50IG5yKQ0KLXsNCi0JX19jcHVfcmFpc2Vfc29mdGlycShjcHUs IG5yKTsNCi0NCi0JLyoNCi0JICogSWYgd2UncmUgaW4gYW4gaW50ZXJydXB0 IG9yIGJoLCB3ZSdyZSBkb25lDQotCSAqICh0aGlzIGFsc28gY2F0Y2hlcyBi aC1kaXNhYmxlZCBjb2RlKS4gV2Ugd2lsbA0KLQkgKiBhY3R1YWxseSBydW4g dGhlIHNvZnRpcnEgb25jZSB3ZSByZXR1cm4gZnJvbQ0KLQkgKiB0aGUgaXJx IG9yIGJoLg0KLQkgKg0KLQkgKiBPdGhlcndpc2Ugd2Ugd2FrZSB1cCBrc29m dGlycWQgdG8gbWFrZSBzdXJlIHdlDQotCSAqIHNjaGVkdWxlIHRoZSBzb2Z0 aXJxIHNvb24uDQotCSAqLw0KLQlpZiAoIShsb2NhbF9pcnFfY291bnQoY3B1 KSB8IGxvY2FsX2JoX2NvdW50KGNwdSkpKQ0KLQkJd2FrZXVwX3NvZnRpcnFk KGNwdSk7DQotfQ0KLQ0KLXZvaWQgcmFpc2Vfc29mdGlycSh1bnNpZ25lZCBp bnQgbnIpDQotew0KLQlsb25nIGZsYWdzOw0KLQ0KLQlsb2NhbF9pcnFfc2F2 ZShmbGFncyk7DQotCWNwdV9yYWlzZV9zb2Z0aXJxKHNtcF9wcm9jZXNzb3Jf aWQoKSwgbnIpOw0KLQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7DQotfQ0K LQ0KIHZvaWQgb3Blbl9zb2Z0aXJxKGludCBuciwgdm9pZCAoKmFjdGlvbiko c3RydWN0IHNvZnRpcnFfYWN0aW9uKiksIHZvaWQgKmRhdGEpDQogew0KIAlz b2Z0aXJxX3ZlY1tucl0uZGF0YSA9IGRhdGE7DQogCXNvZnRpcnFfdmVjW25y XS5hY3Rpb24gPSBhY3Rpb247DQogfQ0KIA0KLQ0KIC8qIFRhc2tsZXRzICov DQogDQogc3RydWN0IHRhc2tsZXRfaGVhZCB0YXNrbGV0X3ZlY1tOUl9DUFVT XSBfX2NhY2hlbGluZV9hbGlnbmVkOw0KQEAgLTE1Nyw4ICsxNjEsOSBAQA0K IAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7DQogCXQtPm5leHQgPSB0YXNrbGV0 X3ZlY1tjcHVdLmxpc3Q7DQogCXRhc2tsZXRfdmVjW2NwdV0ubGlzdCA9IHQ7 DQotCWNwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgVEFTS0xFVF9TT0ZUSVJRKTsN CisJX19jcHVfcmFpc2Vfc29mdGlycShjcHUsIFRBU0tMRVRfU09GVElSUSk7 DQogCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsNCisJcmVydW5fc29mdGly cXMoY3B1KTsNCiB9DQogDQogdm9pZCBfX3Rhc2tsZXRfaGlfc2NoZWR1bGUo c3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQ0KQEAgLTE2OSw4ICsxNzQsOSBA QA0KIAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7DQogCXQtPm5leHQgPSB0YXNr bGV0X2hpX3ZlY1tjcHVdLmxpc3Q7DQogCXRhc2tsZXRfaGlfdmVjW2NwdV0u bGlzdCA9IHQ7DQotCWNwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgSElfU09GVElS USk7DQorCV9fY3B1X3JhaXNlX3NvZnRpcnEoY3B1LCBISV9TT0ZUSVJRKTsN CiAJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOw0KKwlyZXJ1bl9zb2Z0aXJx cyhjcHUpOw0KIH0NCiANCiBzdGF0aWMgdm9pZCB0YXNrbGV0X2FjdGlvbihz dHJ1Y3Qgc29mdGlycV9hY3Rpb24gKmEpDQpAQCAtMjQxLDcgKzI0Nyw2IEBA DQogCX0NCiB9DQogDQotDQogdm9pZCB0YXNrbGV0X2luaXQoc3RydWN0IHRh c2tsZXRfc3RydWN0ICp0LA0KIAkJICB2b2lkICgqZnVuYykodW5zaWduZWQg bG9uZyksIHVuc2lnbmVkIGxvbmcgZGF0YSkNCiB7DQpAQCAtMjY4LDggKzI3 Myw2IEBADQogCWNsZWFyX2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+ c3RhdGUpOw0KIH0NCiANCi0NCi0NCiAvKiBPbGQgc3R5bGUgQkhzICovDQog DQogc3RhdGljIHZvaWQgKCpiaF9iYXNlWzMyXSkodm9pZCk7DQpAQCAtMzI1 LDcgKzMyOCw3IEBADQogew0KIAlpbnQgaTsNCiANCi0JZm9yIChpPTA7IGk8 MzI7IGkrKykNCisJZm9yIChpID0gMDsgaSA8IDMyOyBpKyspDQogCQl0YXNr bGV0X2luaXQoYmhfdGFza192ZWMraSwgYmhfYWN0aW9uLCBpKTsNCiANCiAJ b3Blbl9zb2Z0aXJxKFRBU0tMRVRfU09GVElSUSwgdGFza2xldF9hY3Rpb24s IE5VTEwpOw0KQEAgLTM2MSwzOCArMzY0LDQxIEBADQogDQogc3RhdGljIGlu dCBrc29mdGlycWQodm9pZCAqIF9fYmluZF9jcHUpDQogew0KLQlpbnQgYmlu ZF9jcHUgPSAqKGludCAqKSBfX2JpbmRfY3B1Ow0KLQlpbnQgY3B1ID0gY3B1 X2xvZ2ljYWxfbWFwKGJpbmRfY3B1KTsNCisJaW50IGNwdSA9IGNwdV9sb2dp Y2FsX21hcCgoaW50KV9fYmluZF9jcHUpOw0KIA0KIAlkYWVtb25pemUoKTsN Ci0JY3VycmVudC0+bmljZSA9IDE5Ow0KKw0KIAlzaWdmaWxsc2V0KCZjdXJy ZW50LT5ibG9ja2VkKTsNCiANCiAJLyogTWlncmF0ZSB0byB0aGUgcmlnaHQg Q1BVICovDQotCWN1cnJlbnQtPmNwdXNfYWxsb3dlZCA9IDFVTCA8PCBjcHU7 DQotCXdoaWxlIChzbXBfcHJvY2Vzc29yX2lkKCkgIT0gY3B1KQ0KLQkJc2No ZWR1bGUoKTsNCi0NCi0Jc3ByaW50ZihjdXJyZW50LT5jb21tLCAia3NvZnRp cnFkX0NQVSVkIiwgYmluZF9jcHUpOw0KKwljdXJyZW50LT5jcHVzX2FsbG93 ZWQgPSAxIDw8IGNwdTsNCiANCi0JX19zZXRfY3VycmVudF9zdGF0ZShUQVNL X0lOVEVSUlVQVElCTEUpOw0KLQltYigpOw0KKwlzcHJpbnRmKGN1cnJlbnQt PmNvbW0sICJrc29mdGlycWQgQ1BVJWQiLCBjcHUpOw0KIA0KKwljdXJyZW50 LT5uaWNlID0gMTk7DQorCXNjaGVkdWxlKCk7DQogCWtzb2Z0aXJxZF90YXNr KGNwdSkgPSBjdXJyZW50Ow0KIA0KLQlmb3IgKDs7KSB7DQotCQlpZiAoIXNv ZnRpcnFfcGVuZGluZyhjcHUpKQ0KLQkJCXNjaGVkdWxlKCk7DQotDQotCQlf X3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7DQorCWlmIChzbXBf cHJvY2Vzc29yX2lkKCkgIT0gY3B1KQ0KKwkJQlVHKCk7DQogDQorCWZvciAo OzspIHsNCiAJCXdoaWxlIChzb2Z0aXJxX3BlbmRpbmcoY3B1KSkgew0KIAkJ CWRvX3NvZnRpcnEoKTsNCiAJCQlpZiAoY3VycmVudC0+bmVlZF9yZXNjaGVk KQ0KLQkJCQlzY2hlZHVsZSgpOw0KKwkJCQlnb3RvIHByZWVtcHQ7DQogCQl9 DQogDQogCQlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJM RSk7DQorCQkvKiBUaGlzIGhhcyB0byBiZSBoZXJlIHRvIG1ha2UgdGhlIHRl c3QgSVJRLWNvcnJlY3QuICovDQorCQliYXJyaWVyKCk7DQorCQlpZiAoIXNv ZnRpcnFfcGVuZGluZyhjcHUpKSB7DQorcHJlZW1wdDoNCisJCQlpZiAoY3Vy cmVudC0+Y291bnRlciA+IDEpDQorCQkJCWN1cnJlbnQtPmNvdW50ZXIgPSAx Ow0KKwkJCXNjaGVkdWxlKCk7DQorCQl9DQorCQlfX3NldF9jdXJyZW50X3N0 YXRlKFRBU0tfUlVOTklORyk7DQogCX0NCiB9DQogDQpAQCAtNDAwLDE3ICs0 MDYsMTAgQEANCiB7DQogCWludCBjcHU7DQogDQotCWZvciAoY3B1ID0gMDsg Y3B1IDwgc21wX251bV9jcHVzOyBjcHUrKykgew0KLQkJaWYgKGtlcm5lbF90 aHJlYWQoa3NvZnRpcnFkLCAodm9pZCAqKSAmY3B1LA0KKwlmb3IgKGNwdSA9 IDA7IGNwdSA8IHNtcF9udW1fY3B1czsgY3B1KyspDQorCQlpZiAoa2VybmVs X3RocmVhZChrc29mdGlycWQsICh2b2lkICopIGNwdSwNCiAJCQkJICBDTE9O RV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHTkFMKSA8IDApDQotCQkJ cHJpbnRrKCJzcGF3bl9rc29mdGlycWQoKSBmYWlsZWQgZm9yIGNwdSAlZFxu IiwgY3B1KTsNCi0JCWVsc2Ugew0KLQkJCXdoaWxlICgha3NvZnRpcnFkX3Rh c2soY3B1X2xvZ2ljYWxfbWFwKGNwdSkpKSB7DQotCQkJCWN1cnJlbnQtPnBv bGljeSB8PSBTQ0hFRF9ZSUVMRDsNCi0JCQkJc2NoZWR1bGUoKTsNCi0JCQl9 DQotCQl9DQotCX0NCisJCQlCVUcoKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0K LS0tIGxpbnV4L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgub3JpZwlXZWQg U2VwIDI2IDE3OjA0OjM2IDIwMDENCisrKyBsaW51eC9pbmNsdWRlL2xpbnV4 L25ldGRldmljZS5oCUZyaSBTZXAgMjggMDc6NDQ6MDEgMjAwMQ0KQEAgLTQ4 Niw4ICs0ODYsOSBAQA0KIAkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOw0KIAkJ ZGV2LT5uZXh0X3NjaGVkID0gc29mdG5ldF9kYXRhW2NwdV0ub3V0cHV0X3F1 ZXVlOw0KIAkJc29mdG5ldF9kYXRhW2NwdV0ub3V0cHV0X3F1ZXVlID0gZGV2 Ow0KLQkJY3B1X3JhaXNlX3NvZnRpcnEoY3B1LCBORVRfVFhfU09GVElSUSk7 DQorCQlfX2NwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgTkVUX1RYX1NPRlRJUlEp Ow0KIAkJbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOw0KKwkJcmVydW5fc29m dGlycXMoY3B1KTsNCiAJfQ0KIH0NCiANCkBAIC01MzUsOCArNTM2LDkgQEAN CiAJCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsNCiAJCXNrYi0+bmV4dCA9IHNv ZnRuZXRfZGF0YVtjcHVdLmNvbXBsZXRpb25fcXVldWU7DQogCQlzb2Z0bmV0 X2RhdGFbY3B1XS5jb21wbGV0aW9uX3F1ZXVlID0gc2tiOw0KLQkJY3B1X3Jh aXNlX3NvZnRpcnEoY3B1LCBORVRfVFhfU09GVElSUSk7DQorCQlfX2NwdV9y YWlzZV9zb2Z0aXJxKGNwdSwgTkVUX1RYX1NPRlRJUlEpOw0KIAkJbG9jYWxf aXJxX3Jlc3RvcmUoZmxhZ3MpOw0KKwkJcmVydW5fc29mdGlycXMoY3B1KTsN CiAJfQ0KIH0NCiANCi0tLSBsaW51eC9pbmNsdWRlL2xpbnV4L2ludGVycnVw dC5oLm9yaWcJV2VkIFNlcCAyNiAxNzowNDo0MCAyMDAxDQorKysgbGludXgv aW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaAlGcmkgU2VwIDI4IDA3OjQ0OjAx IDIwMDENCkBAIC03NCw5ICs3NCwxNCBAQA0KIGFzbWxpbmthZ2Ugdm9pZCBk b19zb2Z0aXJxKHZvaWQpOw0KIGV4dGVybiB2b2lkIG9wZW5fc29mdGlycShp bnQgbnIsIHZvaWQgKCphY3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiop LCB2b2lkICpkYXRhKTsNCiBleHRlcm4gdm9pZCBzb2Z0aXJxX2luaXQodm9p ZCk7DQotI2RlZmluZSBfX2NwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgbnIpIGRv IHsgc29mdGlycV9wZW5kaW5nKGNwdSkgfD0gMVVMIDw8IChucik7IH0gd2hp bGUgKDApDQotZXh0ZXJuIHZvaWQgRkFTVENBTEwoY3B1X3JhaXNlX3NvZnRp cnEodW5zaWduZWQgaW50IGNwdSwgdW5zaWduZWQgaW50IG5yKSk7DQotZXh0 ZXJuIHZvaWQgRkFTVENBTEwocmFpc2Vfc29mdGlycSh1bnNpZ25lZCBpbnQg bnIpKTsNCisjZGVmaW5lIF9fY3B1X3JhaXNlX3NvZnRpcnEoY3B1LCBucikg XA0KKwkJZG8geyBzb2Z0aXJxX3BlbmRpbmcoY3B1KSB8PSAxVUwgPDwgKG5y KTsgfSB3aGlsZSAoMCkNCisNCisjZGVmaW5lIHJlcnVuX3NvZnRpcnFzKGNw dSkgCQkJCQlcDQorZG8gewkJCQkJCQkJXA0KKwlpZiAoIShsb2NhbF9pcnFf Y291bnQoY3B1KSB8IGxvY2FsX2JoX2NvdW50KGNwdSkpKQlcDQorCQlkb19z b2Z0aXJxKCk7CQkJCQlcDQorfSB3aGlsZSAoMCk7DQogDQogDQogDQotLS0g bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oLm9yaWcJV2VkIFNlcCAyNiAx NzowNDo0MCAyMDAxDQorKysgbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o CUZyaSBTZXAgMjggMDc6NDQ6MDEgMjAwMQ0KQEAgLTU1Niw2ICs1NTYsNyBA QA0KIA0KIGV4dGVybiB2b2lkIEZBU1RDQUxMKF9fd2FrZV91cCh3YWl0X3F1 ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUsIGludCBucikpOw0K IGV4dGVybiB2b2lkIEZBU1RDQUxMKF9fd2FrZV91cF9zeW5jKHdhaXRfcXVl dWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSk7DQor ZXh0ZXJuIHZvaWQgRkFTVENBTEwoX191bndha2V1cF9wcm9jZXNzKHN0cnVj dCB0YXNrX3N0cnVjdCAqIHAsIGxvbmcgc3RhdGUpKTsNCiBleHRlcm4gdm9p ZCBGQVNUQ0FMTChzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkpOw0K IGV4dGVybiBsb25nIEZBU1RDQUxMKHNsZWVwX29uX3RpbWVvdXQod2FpdF9x dWV1ZV9oZWFkX3QgKnEsDQogCQkJCSAgICAgIHNpZ25lZCBsb25nIHRpbWVv dXQpKTsNCkBAIC01NzQsNiArNTc1LDEzIEBADQogI2RlZmluZSB3YWtlX3Vw X2ludGVycnVwdGlibGVfYWxsKHgpCV9fd2FrZV91cCgoeCksVEFTS19JTlRF UlJVUFRJQkxFLCAwKQ0KICNkZWZpbmUgd2FrZV91cF9pbnRlcnJ1cHRpYmxl X3N5bmMoeCkJX193YWtlX3VwX3N5bmMoKHgpLFRBU0tfSU5URVJSVVBUSUJM RSwgMSkNCiAjZGVmaW5lIHdha2VfdXBfaW50ZXJydXB0aWJsZV9zeW5jX25y KHgpIF9fd2FrZV91cF9zeW5jKCh4KSxUQVNLX0lOVEVSUlVQVElCTEUsICBu cikNCisNCisjZGVmaW5lIHVud2FrZXVwX3Byb2Nlc3ModHNrLHN0YXRlKQkJ XA0KK2RvIHsJCQkJCQlcDQorCWlmICh0YXNrX29uX3J1bnF1ZXVlKHRzaykp CQlcDQorCQlfX3Vud2FrZXVwX3Byb2Nlc3ModHNrLHN0YXRlKTsJXA0KK30g d2hpbGUgKDApDQorDQogYXNtbGlua2FnZSBsb25nIHN5c193YWl0NChwaWRf dCBwaWQsdW5zaWduZWQgaW50ICogc3RhdF9hZGRyLCBpbnQgb3B0aW9ucywg c3RydWN0IHJ1c2FnZSAqIHJ1KTsNCiANCiBleHRlcm4gaW50IGluX2dyb3Vw X3AoZ2lkX3QpOw0KLS0tIGxpbnV4L2luY2x1ZGUvYXNtLW1pcHMvc29mdGly cS5oLm9yaWcJV2VkIFNlcCAyNiAyMDo1ODowMCAyMDAxDQorKysgbGludXgv aW5jbHVkZS9hc20tbWlwcy9zb2Z0aXJxLmgJV2VkIFNlcCAyNiAyMDo1ODow NyAyMDAxDQpAQCAtNDAsNiArNDAsNCBAQA0KIA0KICNkZWZpbmUgaW5fc29m dGlycSgpIChsb2NhbF9iaF9jb3VudChzbXBfcHJvY2Vzc29yX2lkKCkpICE9 IDApDQogDQotI2RlZmluZSBfX2NwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgbnIp CXNldF9iaXQobnIsICZzb2Z0aXJxX3BlbmRpbmcoY3B1KSkNCi0NCiAjZW5k aWYgLyogX0FTTV9TT0ZUSVJRX0ggKi8NCi0tLSBsaW51eC9pbmNsdWRlL2Fz bS1taXBzNjQvc29mdGlycS5oLm9yaWcJV2VkIFNlcCAyNiAyMDo1ODoyMCAy MDAxDQorKysgbGludXgvaW5jbHVkZS9hc20tbWlwczY0L3NvZnRpcnEuaAlX ZWQgU2VwIDI2IDIwOjU4OjI2IDIwMDENCkBAIC0zOSwxOSArMzksNCBAQA0K IA0KICNkZWZpbmUgaW5fc29mdGlycSgpIChsb2NhbF9iaF9jb3VudChzbXBf cHJvY2Vzc29yX2lkKCkpICE9IDApDQogDQotZXh0ZXJuIGlubGluZSB2b2lk IF9fY3B1X3JhaXNlX3NvZnRpcnEoaW50IGNwdSwgaW50IG5yKQ0KLXsNCi0J dW5zaWduZWQgaW50ICptID0gKHVuc2lnbmVkIGludCAqKSAmc29mdGlycV9w ZW5kaW5nKGNwdSk7DQotCXVuc2lnbmVkIGludCB0ZW1wOw0KLQ0KLQlfX2Fz bV9fIF9fdm9sYXRpbGVfXygNCi0JCSIxOlx0bGxcdCUwLCAlMVx0XHRcdCMg X19jcHVfcmFpc2Vfc29mdGlycVxuXHQiDQotCQkib3JcdCUwLCAlMlxuXHQi DQotCQkic2NcdCUwLCAlMVxuXHQiDQotCQkiYmVxelx0JTAsIDFiIg0KLQkJ OiAiPSZyIiAodGVtcCksICI9bSIgKCptKQ0KLQkJOiAiaXIiICgxVUwgPDwg bnIpLCAibSIgKCptKQ0KLQkJOiAibWVtb3J5Iik7DQotfQ0KLQ0KICNlbmRp ZiAvKiBfQVNNX1NPRlRJUlFfSCAqLw0KLS0tIGxpbnV4L25ldC9jb3JlL2Rl di5jLm9yaWcJV2VkIFNlcCAyNiAxNzowNDo0MSAyMDAxDQorKysgbGludXgv bmV0L2NvcmUvZGV2LmMJV2VkIFNlcCAyNiAxNzowNDo0OCAyMDAxDQpAQCAt MTIxOCw4ICsxMjE4LDkgQEANCiAJCQlkZXZfaG9sZChza2ItPmRldik7DQog CQkJX19za2JfcXVldWVfdGFpbCgmcXVldWUtPmlucHV0X3BrdF9xdWV1ZSxz a2IpOw0KIAkJCS8qIFJ1bnMgZnJvbSBpcnFzIG9yIEJIJ3MsIG5vIG5lZWQg dG8gd2FrZSBCSCAqLw0KLQkJCWNwdV9yYWlzZV9zb2Z0aXJxKHRoaXNfY3B1 LCBORVRfUlhfU09GVElSUSk7DQorCQkJX19jcHVfcmFpc2Vfc29mdGlycSh0 aGlzX2NwdSwgTkVUX1JYX1NPRlRJUlEpOw0KIAkJCWxvY2FsX2lycV9yZXN0 b3JlKGZsYWdzKTsNCisJCQlyZXJ1bl9zb2Z0aXJxcyh0aGlzX2NwdSk7DQog I2lmbmRlZiBPRkZMSU5FX1NBTVBMRQ0KIAkJCWdldF9zYW1wbGVfc3RhdHMo dGhpc19jcHUpOw0KICNlbmRpZg0KQEAgLTE1MjksOCArMTUzMCw5IEBADQog CWxvY2FsX2lycV9kaXNhYmxlKCk7DQogCW5ldGRldl9yeF9zdGF0W3RoaXNf Y3B1XS50aW1lX3NxdWVlemUrKzsNCiAJLyogVGhpcyBhbHJlYWR5IHJ1bnMg aW4gQkggY29udGV4dCwgbm8gbmVlZCB0byB3YWtlIHVwIEJIJ3MgKi8NCi0J Y3B1X3JhaXNlX3NvZnRpcnEodGhpc19jcHUsIE5FVF9SWF9TT0ZUSVJRKTsN CisJX19jcHVfcmFpc2Vfc29mdGlycSh0aGlzX2NwdSwgTkVUX1JYX1NPRlRJ UlEpOw0KIAlsb2NhbF9pcnFfZW5hYmxlKCk7DQorCXJlcnVuX3NvZnRpcnFz KHRoaXNfY3B1KTsNCiANCiAJTkVUX1BST0ZJTEVfTEVBVkUoc29mdG5ldF9w cm9jZXNzKTsNCiAJcmV0dXJuOw0KLS0tIGxpbnV4L2xpbnV4L2luY2x1ZGUv bGludXgvbmV0ZGV2aWNlLmgub3JpZwlXZWQgU2VwIDI2IDIxOjE0OjU1IDIw MDENCisrKyBsaW51eC9saW51eC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5o CVRodSBTZXAgMjcgMDc6NTE6MDAgMjAwMQ0KQEAgLTM5MCw2ICszOTAsOCBA QA0KIAkJCQkJCSAgICAgdW5zaWduZWQgY2hhciAqaGFkZHIpOw0KIAlpbnQJ CQkoKm5laWdoX3NldHVwKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1 Y3QgbmVpZ2hfcGFybXMgKik7DQogCWludAkJCSgqYWNjZXB0X2Zhc3RwYXRo KShzdHJ1Y3QgbmV0X2RldmljZSAqLCBzdHJ1Y3QgZHN0X2VudHJ5Kik7DQor I2RlZmluZSBIQVZFX1BPTExfQ09OVFJPTExFUg0KKwl2b2lkCQkJKCpwb2xs X2NvbnRyb2xsZXIpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOw0KIA0KIAkv KiBvcGVuL3JlbGVhc2UgYW5kIHVzYWdlIG1hcmtpbmcgKi8NCiAJc3RydWN0 IG1vZHVsZSAqb3duZXI7DQotLS0gbGludXgvbGludXgvZHJpdmVycy9uZXQv dHVsaXAvdHVsaXBfY29yZS5jLm9yaWcJV2VkIFNlcCAyNiAyMToxNDo1OCAy MDAxDQorKysgbGludXgvbGludXgvZHJpdmVycy9uZXQvdHVsaXAvdHVsaXBf Y29yZS5jCUZyaSBTZXAgMjggMDk6MjM6MjIgMjAwMQ0KQEAgLTI0Myw2ICsy NDMsNyBAQA0KIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqdHVs aXBfZ2V0X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOw0KIHN0YXRp YyBpbnQgcHJpdmF0ZV9pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBz dHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKTsNCiBzdGF0aWMgdm9pZCBzZXRf cnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsNCitzdGF0aWMgdm9p ZCBwb2xsX3R1bGlwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOw0KIA0KIA0K IA0KQEAgLTE2NzEsNiArMTY3Miw5IEBADQogCWRldi0+Z2V0X3N0YXRzID0g dHVsaXBfZ2V0X3N0YXRzOw0KIAlkZXYtPmRvX2lvY3RsID0gcHJpdmF0ZV9p b2N0bDsNCiAJZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QgPSBzZXRfcnhfbW9k ZTsNCisjaWZkZWYgSEFWRV9QT0xMX0NPTlRST0xMRVINCisJZGV2LT5wb2xs X2NvbnRyb2xsZXIgPSAmcG9sbF90dWxpcDsNCisjZW5kaWYNCiANCiAJaWYg KHJlZ2lzdGVyX25ldGRldihkZXYpKQ0KIAkJZ290byBlcnJfb3V0X2ZyZWVf cmluZzsNCkBAIC0xODM5LDYgKzE4NDMsMjQgQEANCiANCiAJLyogcGNpX3Bv d2VyX29mZiAocGRldiwgLTEpOyAqLw0KIH0NCisNCisNCisjaWZkZWYgSEFW RV9QT0xMX0NPTlRST0xMRVINCisNCisvKg0KKyAqIFBvbGxpbmcgJ2ludGVy cnVwdCcgLSB1c2VkIGJ5IHRoaW5ncyBsaWtlIG5ldGNvbnNvbGUgdG8gc2Vu ZCBza2JzDQorICogd2l0aG91dCBoYXZpbmcgdG8gcmUtZW5hYmxlIGludGVy cnVwdHMuIEl0J3Mgbm90IGNhbGxlZCB3aGlsZQ0KKyAqIHRoZSBpbnRlcnJ1 cHQgcm91dGluZSBpcyBleGVjdXRpbmcuDQorICovDQorDQorc3RhdGljIHZv aWQgcG9sbF90dWxpcCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikNCit7DQor ICAgICAgIGRpc2FibGVfaXJxKGRldi0+aXJxKTsNCisgICAgICAgdHVsaXBf aW50ZXJydXB0IChkZXYtPmlycSwgZGV2LCBOVUxMKTsNCisgICAgICAgZW5h YmxlX2lycShkZXYtPmlycSk7DQorfQ0KKw0KKyNlbmRpZg0KIA0KIA0KIHN0 YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB0dWxpcF9kcml2ZXIgPSB7DQotLS0g bGludXgvbGludXgvZHJpdmVycy9uZXQvZWVwcm8xMDAuYy5vcmlnCVdlZCBT ZXAgMjYgMjE6MTQ6NTggMjAwMQ0KKysrIGxpbnV4L2xpbnV4L2RyaXZlcnMv bmV0L2VlcHJvMTAwLmMJVGh1IFNlcCAyNyAwODoxMTo0MSAyMDAxDQpAQCAt NTQyLDYgKzU0Miw3IEBADQogc3RhdGljIGludCBzcGVlZG9fcngoc3RydWN0 IG5ldF9kZXZpY2UgKmRldik7DQogc3RhdGljIHZvaWQgc3BlZWRvX3R4X2J1 ZmZlcl9nYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsNCiBzdGF0aWMgdm9p ZCBzcGVlZG9faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5j ZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOw0KK3N0YXRpYyB2b2lkIHBvbGxf c3BlZWRvIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsNCiBzdGF0aWMgaW50 IHNwZWVkb19jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsNCiBzdGF0 aWMgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnNwZWVkb19nZXRfc3RhdHMo c3RydWN0IG5ldF9kZXZpY2UgKmRldik7DQogc3RhdGljIGludCBzcGVlZG9f aW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpy cSwgaW50IGNtZCk7DQpAQCAtODM3LDYgKzgzOCw5IEBADQogCWRldi0+Z2V0 X3N0YXRzID0gJnNwZWVkb19nZXRfc3RhdHM7DQogCWRldi0+c2V0X211bHRp Y2FzdF9saXN0ID0gJnNldF9yeF9tb2RlOw0KIAlkZXYtPmRvX2lvY3RsID0g JnNwZWVkb19pb2N0bDsNCisjaWZkZWYgSEFWRV9QT0xMX0NPTlRST0xMRVIN CisJZGV2LT5wb2xsX2NvbnRyb2xsZXIgPSAmcG9sbF9zcGVlZG87DQorI2Vu ZGlmDQogDQogCXJldHVybiAwOw0KIH0NCkBAIC0xNTk0LDYgKzE1OTgsMjMg QEANCiAJY2xlYXJfYml0KDAsICh2b2lkKikmc3AtPmluX2ludGVycnVwdCk7 DQogCXJldHVybjsNCiB9DQorDQorI2lmZGVmIEhBVkVfUE9MTF9DT05UUk9M TEVSDQorDQorLyoNCisgKiBQb2xsaW5nICdpbnRlcnJ1cHQnIC0gdXNlZCBi eSB0aGluZ3MgbGlrZSBuZXRjb25zb2xlIHRvIHNlbmQgc2ticw0KKyAqIHdp dGhvdXQgaGF2aW5nIHRvIHJlLWVuYWJsZSBpbnRlcnJ1cHRzLiBJdCdzIG5v dCBjYWxsZWQgd2hpbGUNCisgKiB0aGUgaW50ZXJydXB0IHJvdXRpbmUgaXMg ZXhlY3V0aW5nLg0KKyAqLw0KKw0KK3N0YXRpYyB2b2lkIHBvbGxfc3BlZWRv IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQ0KK3sNCisJZGlzYWJsZV9pcnEo ZGV2LT5pcnEpOw0KKwlzcGVlZG9faW50ZXJydXB0IChkZXYtPmlycSwgZGV2 LCBOVUxMKTsNCisJZW5hYmxlX2lycShkZXYtPmlycSk7DQorfQ0KKw0KKyNl bmRpZg0KIA0KIHN0YXRpYyBpbmxpbmUgc3RydWN0IFJ4RkQgKnNwZWVkb19y eF9hbGxvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgZW50cnkpDQog ew0KLS0tIGxpbnV4L2xpbnV4L2RyaXZlcnMvbmV0L25ldGNvbnNvbGUuYy5v cmlnCVdlZCBTZXAgMjYgMjE6MTU6MTUgMjAwMQ0KKysrIGxpbnV4L2xpbnV4 L2RyaXZlcnMvbmV0L25ldGNvbnNvbGUuYwlUaHUgU2VwIDI3IDE2OjEyOjEw IDIwMDENCkBAIC0wLDAgKzEsMzMxIEBADQorLyoNCisgKiAgbGludXgvZHJp dmVycy9uZXQvbmV0Y29uc29sZS5jDQorICoNCisgKiAgQ29weXJpZ2h0IChD KSAyMDAxICBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4NCisgKg0K KyAqICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGltcGxlbWVudGF0aW9uIG9m IGFuIElSUS1zYWZlLCBjcmFzaC1zYWZlDQorICogIGtlcm5lbCBjb25zb2xl IGltcGxlbWVudGF0aW9uIHRoYXQgb3V0cHV0cyBrZXJuZWwgbWVzc2FnZXMg dG8gdGhlDQorICogIG5ldHdvcmsuDQorICoNCisgKiBNb2RpZmljYXRpb24g aGlzdG9yeToNCisgKg0KKyAqIDIwMDEtMDktMTcgICAgc3RhcnRlZCBieSBJ bmdvIE1vbG5hci4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0K KyAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisgKiAgICAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogICAgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91 ciBvcHRpb24pDQorICogICAgICBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0K KyAqICAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogICAgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZg0KKyAqICAgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAqICAg ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCisgKg0KKyAqICAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiAg ICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlIFNvZnR3YXJlDQorICogICAgICBGb3VuZGF0aW9uLCBJbmMu LCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4NCisg Kg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlIDxuZXQv dGNwLmg+DQorI2luY2x1ZGUgPG5ldC91ZHAuaD4NCisjaW5jbHVkZSA8bGlu dXgvbW0uaD4NCisjaW5jbHVkZSA8bGludXgvdHR5Lmg+DQorI2luY2x1ZGUg PGxpbnV4L2luaXQuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQor I2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4NCisjaW5jbHVkZSA8bGludXgv Y29uc29sZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9zbXBfbG9jay5oPg0KKyNp bmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgv dHR5X2RyaXZlci5oPg0KKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5o Pg0KKw0KK3N0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0Y29uc29sZV9k ZXY7DQorc3RhdGljIHUxNiBzb3VyY2VfcG9ydCwgdGFyZ2V0X3BvcnQ7DQor c3RhdGljIHUzMiBzb3VyY2VfaXAsIHRhcmdldF9pcDsNCitzdGF0aWMgdW5z aWduZWQgY2hhciBkYWRkcls2XSA9IHsweGZmLCAweGZmLCAweGZmLCAweGZm LCAweGZmLCAweGZmfSA7DQorDQorI2RlZmluZSBORVRDT05TT0xFX1ZFUlNJ T04gMHgwMQ0KKyNkZWZpbmUgSEVBREVSX0xFTiA1DQorDQorI2RlZmluZSBN QVhfVURQX0NIVU5LIDE0NjANCisjZGVmaW5lIE1BWF9QUklOVF9DSFVOSyAo TUFYX1VEUF9DSFVOSy1IRUFERVJfTEVOKQ0KKw0KKy8qDQorICogV2UgbWFp bnRhaW4gYSBzbWFsbCBwb29sIG9mIGZ1bGx5LXNpemVkIHNrYnMsDQorICog dG8gbWFrZSBzdXJlIHRoZSBtZXNzYWdlIGdldHMgb3V0IGV2ZW4gaW4NCisg KiBleHRyZW1lIE9PTSBzaXR1YXRpb25zLg0KKyAqLw0KKyNkZWZpbmUgTUFY X05FVENPTlNPTEVfU0tCUyAzMg0KKw0KK3N0YXRpYyBzcGlubG9ja190IG5l dGNvbnNvbGVfbG9jayA9IFNQSU5fTE9DS19VTkxPQ0tFRDsNCitzdGF0aWMg aW50IG5yX25ldGNvbnNvbGVfc2ticzsNCitzdGF0aWMgc3RydWN0IHNrX2J1 ZmYgKm5ldGNvbnNvbGVfc2ticzsNCisNCisjZGVmaW5lIE1BWF9TS0JfU0la RSBcDQorCQkoTUFYX1VEUF9DSFVOSyArIHNpemVvZihzdHJ1Y3QgdWRwaGRy KSArIFwNCisJCQkJc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyBzaXplb2Yoc3Ry dWN0IGV0aGhkcikpDQorDQorc3RhdGljIHZvaWQgX19yZWZpbGxfbmV0Y29u c29sZV9za2JzKHZvaWQpDQorew0KKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0K Kwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKw0KKwlzcGluX2xvY2tfaXJxc2F2 ZSgmbmV0Y29uc29sZV9sb2NrLCBmbGFncyk7DQorCXdoaWxlIChucl9uZXRj b25zb2xlX3NrYnMgPCBNQVhfTkVUQ09OU09MRV9TS0JTKSB7DQorCQlza2Ig PSBhbGxvY19za2IoTUFYX1NLQl9TSVpFLCBHRlBfQVRPTUlDKTsNCisJCWlm ICghc2tiKQ0KKwkJCWJyZWFrOw0KKwkJaWYgKG5ldGNvbnNvbGVfc2ticykN CisJCQlza2ItPm5leHQgPSBuZXRjb25zb2xlX3NrYnM7DQorCQllbHNlDQor CQkJc2tiLT5uZXh0ID0gTlVMTDsNCisJCW5ldGNvbnNvbGVfc2ticyA9IHNr YjsNCisJCW5yX25ldGNvbnNvbGVfc2ticysrOw0KKwl9DQorCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJm5ldGNvbnNvbGVfbG9jaywgZmxhZ3MpOw0KK30N CisNCitzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKiBnZXRfbmV0Y29uc29sZV9z a2Iodm9pZCkNCit7DQorCXN0cnVjdCBza19idWZmICpza2I7DQorDQorCXVu c2lnbmVkIGxvbmcgZmxhZ3M7DQorDQorCXNwaW5fbG9ja19pcnFzYXZlKCZu ZXRjb25zb2xlX2xvY2ssIGZsYWdzKTsNCisJc2tiID0gbmV0Y29uc29sZV9z a2JzOw0KKwlpZiAoc2tiKQ0KKwkJbmV0Y29uc29sZV9za2JzID0gc2tiLT5u ZXh0Ow0KKwlza2ItPm5leHQgPSBOVUxMOw0KKwlucl9uZXRjb25zb2xlX3Nr YnMtLTsNCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbmV0Y29uc29sZV9s b2NrLCBmbGFncyk7DQorDQorCXJldHVybiBza2I7DQorfQ0KKw0KK3N0YXRp YyBzcGlubG9ja190IHNlcXVlbmNlX2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NL RUQ7DQorc3RhdGljIHVuc2lnbmVkIGludCBvZmZzZXQ7DQorDQorc3RhdGlj IHZvaWQgc2VuZF9uZXRjb25zb2xlX3NrYihzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2LCBjb25zdCBjaGFyICptc2csIHVuc2lnbmVkIGludCBtc2dfbGVuKQ0K K3sNCisJaW50IHRvdGFsX2xlbiwgZXRoX2xlbiwgaXBfbGVuLCB1ZHBfbGVu Ow0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKwlzdHJ1Y3Qgc2tfYnVmZiAq c2tiOw0KKwlzdHJ1Y3QgdWRwaGRyICp1ZHBoOw0KKwlzdHJ1Y3QgaXBoZHIg KmlwaDsNCisJc3RydWN0IGV0aGhkciAqZXRoOw0KKw0KKwl1ZHBfbGVuID0g bXNnX2xlbiArIEhFQURFUl9MRU4gKyBzaXplb2YoKnVkcGgpOw0KKwlpcF9s ZW4gPSBldGhfbGVuID0gdWRwX2xlbiArIHNpemVvZigqaXBoKTsNCisJdG90 YWxfbGVuID0gZXRoX2xlbiArIEVUSF9ITEVOOw0KKw0KKwlpZiAobnJfbmV0 Y29uc29sZV9za2JzIDwgTUFYX05FVENPTlNPTEVfU0tCUykNCisJCV9fcmVm aWxsX25ldGNvbnNvbGVfc2ticygpOw0KKw0KKwlza2IgPSBhbGxvY19za2Io dG90YWxfbGVuLCBHRlBfQVRPTUlDKTsNCisJaWYgKCFza2IpIHsNCisJCXNr YiA9IGdldF9uZXRjb25zb2xlX3NrYigpOw0KKwkJaWYgKCFza2IpDQorCQkJ LyogdG91Z2ghICovDQorCQkJcmV0dXJuOw0KKwl9DQorDQorCWF0b21pY19z ZXQoJnNrYi0+dXNlcnMsIDEpOw0KKwlza2JfcmVzZXJ2ZShza2IsIHRvdGFs X2xlbiAtIG1zZ19sZW4gLSBIRUFERVJfTEVOKTsNCisJc2tiLT5kYXRhWzBd ID0gTkVUQ09OU09MRV9WRVJTSU9OOw0KKw0KKwlzcGluX2xvY2tfaXJxc2F2 ZSgmc2VxdWVuY2VfbG9jaywgZmxhZ3MpOw0KKwlwdXRfdW5hbGlnbmVkKGh0 b25sKG9mZnNldCksICh1MzIgKikgKHNrYi0+ZGF0YSArIDEpKTsNCisJb2Zm c2V0ICs9IG1zZ19sZW47DQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNl cXVlbmNlX2xvY2ssIGZsYWdzKTsNCisNCisJbWVtY3B5KHNrYi0+ZGF0YSAr IEhFQURFUl9MRU4sIG1zZywgbXNnX2xlbik7DQorCXNrYi0+bGVuICs9IG1z Z19sZW4gKyBIRUFERVJfTEVOOw0KKw0KKwl1ZHBoID0gKHN0cnVjdCB1ZHBo ZHIgKikgc2tiX3B1c2goc2tiLCBzaXplb2YoKnVkcGgpKTsNCisJdWRwaC0+ c291cmNlID0gc291cmNlX3BvcnQ7DQorCXVkcGgtPmRlc3QgPSB0YXJnZXRf cG9ydDsNCisJdWRwaC0+bGVuID0gaHRvbnModWRwX2xlbik7DQorCXVkcGgt PmNoZWNrID0gMDsNCisNCisJaXBoID0gKHN0cnVjdCBpcGhkciAqKXNrYl9w dXNoKHNrYiwgc2l6ZW9mKCppcGgpKTsNCisNCisJaXBoLT52ZXJzaW9uICA9 IDQ7DQorCWlwaC0+aWhsICAgICAgPSA1Ow0KKwlpcGgtPnRvcyAgICAgID0g MDsNCisgICAgICAgIGlwaC0+dG90X2xlbiAgPSBodG9ucyhpcF9sZW4pOw0K KwlpcGgtPmlkICAgICAgID0gMDsNCisJaXBoLT5mcmFnX29mZiA9IDA7DQor CWlwaC0+dHRsICAgICAgPSA2NDsNCisgICAgICAgIGlwaC0+cHJvdG9jb2wg PSBJUFBST1RPX1VEUDsNCisJaXBoLT5jaGVjayAgICA9IDA7DQorICAgICAg ICBpcGgtPnNhZGRyICAgID0gc291cmNlX2lwOw0KKyAgICAgICAgaXBoLT5k YWRkciAgICA9IHRhcmdldF9pcDsNCisJaXBoLT5jaGVjayAgICA9IGlwX2Zh c3RfY3N1bSgodW5zaWduZWQgY2hhciAqKWlwaCwgaXBoLT5paGwpOw0KKw0K KwlldGggPSAoc3RydWN0IGV0aGhkciAqKSBza2JfcHVzaChza2IsIEVUSF9I TEVOKTsNCisNCisJZXRoLT5oX3Byb3RvID0gaHRvbnMoRVRIX1BfSVApOw0K KwltZW1jcHkoZXRoLT5oX3NvdXJjZSwgZGV2LT5kZXZfYWRkciwgZGV2LT5h ZGRyX2xlbik7DQorCW1lbWNweShldGgtPmhfZGVzdCwgZGFkZHIsIGRldi0+ YWRkcl9sZW4pOw0KKw0KK3JlcGVhdDoNCisJc3Bpbl9sb2NrKCZkZXYtPnht aXRfbG9jayk7DQorCWRldi0+eG1pdF9sb2NrX293bmVyID0gc21wX3Byb2Nl c3Nvcl9pZCgpOw0KKw0KKwlpZiAobmV0aWZfcXVldWVfc3RvcHBlZChkZXYp KSB7DQorCQlkZXYtPnhtaXRfbG9ja19vd25lciA9IC0xOw0KKwkJc3Bpbl91 bmxvY2soJmRldi0+eG1pdF9sb2NrKTsNCisNCisJCWRldi0+cG9sbF9jb250 cm9sbGVyKGRldik7DQorCQlnb3RvIHJlcGVhdDsNCisJfQ0KKw0KKwlkZXYt PmhhcmRfc3RhcnRfeG1pdChza2IsIGRldik7DQorDQorCWRldi0+eG1pdF9s b2NrX293bmVyID0gLTE7DQorCXNwaW5fdW5sb2NrKCZkZXYtPnhtaXRfbG9j ayk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHdyaXRlX25ldGNvbnNvbGVfbXNn KHN0cnVjdCBjb25zb2xlICpjb24sIGNvbnN0IGNoYXIgKm1zZywgdW5zaWdu ZWQgaW50IG1zZ19sZW4pDQorew0KKwlpbnQgbGVuLCBsZWZ0Ow0KKwlzdHJ1 Y3QgbmV0X2RldmljZSAqZGV2Ow0KKw0KKwlkZXYgPSBuZXRjb25zb2xlX2Rl djsNCisJaWYgKCFkZXYpDQorCQlyZXR1cm47DQorDQorCWlmIChkZXYtPnBv bGxfY29udHJvbGxlciAmJiBuZXRpZl9ydW5uaW5nKGRldikpIHsNCisJCXVu c2lnbmVkIGxvbmcgZmxhZ3M7DQorDQorCQlfX3NhdmVfZmxhZ3MoZmxhZ3Mp Ow0KKwkJX19jbGkoKTsNCisJCWxlZnQgPSBtc2dfbGVuOw0KK3JlcGVhdDoN CisJCWlmIChsZWZ0ID4gTUFYX1BSSU5UX0NIVU5LKQ0KKwkJCWxlbiA9IE1B WF9QUklOVF9DSFVOSzsNCisJCWVsc2UNCisJCQlsZW4gPSBsZWZ0Ow0KKwkJ c2VuZF9uZXRjb25zb2xlX3NrYihkZXYsIG1zZywgbGVuKTsNCisJCW1zZyAr PSBsZW47DQorCQlsZWZ0IC09IGxlbjsNCisJCWlmIChsZWZ0KQ0KKwkJCWdv dG8gcmVwZWF0Ow0KKwkJX19yZXN0b3JlX2ZsYWdzKGZsYWdzKTsNCisJfQ0K K30NCisNCitzdGF0aWMgY2hhciAqZGV2Ow0KK3N0YXRpYyBpbnQgdGFyZ2V0 X2V0aF9ieXRlMCA9IDI1NTsNCitzdGF0aWMgaW50IHRhcmdldF9ldGhfYnl0 ZTEgPSAyNTU7DQorc3RhdGljIGludCB0YXJnZXRfZXRoX2J5dGUyID0gMjU1 Ow0KK3N0YXRpYyBpbnQgdGFyZ2V0X2V0aF9ieXRlMyA9IDI1NTsNCitzdGF0 aWMgaW50IHRhcmdldF9ldGhfYnl0ZTQgPSAyNTU7DQorc3RhdGljIGludCB0 YXJnZXRfZXRoX2J5dGU1ID0gMjU1Ow0KKw0KK01PRFVMRV9QQVJNKHRhcmdl dF9pcCwgImkiKTsNCitNT0RVTEVfUEFSTSh0YXJnZXRfZXRoX2J5dGUwLCAi aSIpOw0KK01PRFVMRV9QQVJNKHRhcmdldF9ldGhfYnl0ZTEsICJpIik7DQor TU9EVUxFX1BBUk0odGFyZ2V0X2V0aF9ieXRlMiwgImkiKTsNCitNT0RVTEVf UEFSTSh0YXJnZXRfZXRoX2J5dGUzLCAiaSIpOw0KK01PRFVMRV9QQVJNKHRh cmdldF9ldGhfYnl0ZTQsICJpIik7DQorTU9EVUxFX1BBUk0odGFyZ2V0X2V0 aF9ieXRlNSwgImkiKTsNCitNT0RVTEVfUEFSTShzb3VyY2VfcG9ydCwgImgi KTsNCitNT0RVTEVfUEFSTSh0YXJnZXRfcG9ydCwgImgiKTsNCitNT0RVTEVf UEFSTShkZXYsICJzIik7DQorDQorc3RhdGljIHN0cnVjdCBjb25zb2xlIG5l dGNvbnNvbGUgPQ0KKwkgeyBmbGFnczogQ09OX0VOQUJMRUQsIHdyaXRlOiB3 cml0ZV9uZXRjb25zb2xlX21zZyB9Ow0KKw0KK3N0YXRpYyBpbnQgaW5pdF9u ZXRjb25zb2xlKHZvaWQpDQorew0KKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRl diA9IE5VTEw7DQorCXN0cnVjdCBpbl9kZXZpY2UgKmluX2RldjsNCisNCisJ cHJpbnRrKEtFUk5fSU5GTyAibmV0Y29uc29sZTogdXNpbmcgbmV0d29yayBk ZXZpY2UgPCVzPlxuIiwgZGV2KTsNCisJLy8gdGhpcyB3aWxsIGJlIHZhbGlk IG9uY2UgdGhlIGRldmljZSBnb2VzIHVwLg0KKwlpZiAoZGV2KQ0KKwkJbmRl diA9IGRldl9nZXRfYnlfbmFtZShkZXYpOw0KKwlpZiAoIW5kZXYpIHsNCisJ CXByaW50ayhLRVJOX0VSUiAibmV0Y29uc29sZTogbmV0d29yayBkZXZpY2Ug JXMgZG9lcyBub3QgZXhpc3QsIGFib3J0aW5nLlxuIiwgZGV2KTsNCisJCXJl dHVybiAtMTsNCisJfQ0KKwlpZiAoIW5kZXYtPnBvbGxfY29udHJvbGxlcikg ew0KKwkJcHJpbnRrKEtFUk5fRVJSICJuZXRjb25zb2xlOiAlcydzIG5ldHdv cmsgZHJpdmVyIGRvZXMgbm90IGltcGxlbWVudCBuZXRsb2dnaW5nIHlldCwg YWJvcnRpbmcuXG4iLCBkZXYpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQorICAg ICAgICBpbl9kZXYgPSBpbl9kZXZfZ2V0KG5kZXYpOw0KKwlpZiAoIWluX2Rl dikgew0KKwkJcHJpbnRrKEtFUk5fRVJSICJuZXRjb25zb2xlOiBuZXR3b3Jr IGRldmljZSAlcyBpcyBub3QgYW4gSVAgcHJvdG9jb2wgZGV2aWNlLCBhYm9y dGluZy5cbiIsIGRldik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJc291cmNl X2lwID0gbnRvaGwoaW5fZGV2LT5pZmFfbGlzdC0+aWZhX2xvY2FsKTsNCisJ aWYgKCFzb3VyY2VfaXApIHsNCisJCXByaW50ayhLRVJOX0VSUiAibmV0Y29u c29sZTogbmV0d29yayBkZXZpY2UgJXMgaGFzIG5vIGxvY2FsIGFkZHJlc3Ms IGFib3J0aW5nLlxuIiwgZGV2KTsNCisJCXJldHVybiAtMTsNCisJfQ0KKyNk ZWZpbmUgSVAoeCkgKChjaGFyICopJnNvdXJjZV9pcClbeF0NCisJcHJpbnRr KEtFUk5fSU5GTyAibmV0Y29uc29sZTogdXNpbmcgc291cmNlIElQICVpLiVp LiVpLiVpXG4iLA0KKwkJSVAoMyksIElQKDIpLCBJUCgxKSwgSVAoMCkpOw0K KyN1bmRlZiBJUA0KKwlzb3VyY2VfaXAgPSBodG9ubChzb3VyY2VfaXApOw0K KwlpZiAoIXRhcmdldF9pcCkgew0KKwkJcHJpbnRrKEtFUk5fRVJSICJuZXRj b25zb2xlOiB0YXJnZXRfaXAgcGFyYW1ldGVyIG5vdCBzcGVjaWZpZWQsIGFi b3J0aW5nLlxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisjZGVmaW5lIElQ KHgpICgoY2hhciAqKSZ0YXJnZXRfaXApW3hdDQorCXByaW50ayhLRVJOX0lO Rk8gIm5ldGNvbnNvbGU6IHVzaW5nIHRhcmdldCBJUCAlaS4laS4laS4laVxu IiwNCisJCUlQKDMpLCBJUCgyKSwgSVAoMSksIElQKDApKTsNCisjdW5kZWYg SVANCisJdGFyZ2V0X2lwID0gaHRvbmwodGFyZ2V0X2lwKTsNCisJaWYgKCFz b3VyY2VfcG9ydCkgew0KKwkJcHJpbnRrKEtFUk5fRVJSICJuZXRjb25zb2xl OiBzb3VyY2VfcG9ydCBwYXJhbWV0ZXIgbm90IHNwZWNpZmllZCwgYWJvcnRp bmcuXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKwlwcmludGsoS0VSTl9J TkZPICJuZXRjb25zb2xlOiB1c2luZyBzb3VyY2UgVURQIHBvcnQ6ICVpXG4i LCBzb3VyY2VfcG9ydCk7DQorCXNvdXJjZV9wb3J0ID0gaHRvbnMoc291cmNl X3BvcnQpOw0KKwlpZiAoIXRhcmdldF9wb3J0KSB7DQorCQlwcmludGsoS0VS Tl9FUlIgIm5ldGNvbnNvbGU6IHRhcmdldF9wb3J0IHBhcmFtZXRlciBub3Qg c3BlY2lmaWVkLCBhYm9ydGluZy5cbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9 DQorCXByaW50ayhLRVJOX0lORk8gIm5ldGNvbnNvbGU6IHVzaW5nIHRhcmdl dCBVRFAgcG9ydDogJWlcbiIsIHRhcmdldF9wb3J0KTsNCisJdGFyZ2V0X3Bv cnQgPSBodG9ucyh0YXJnZXRfcG9ydCk7DQorDQorCWRhZGRyWzBdID0gdGFy Z2V0X2V0aF9ieXRlMDsNCisJZGFkZHJbMV0gPSB0YXJnZXRfZXRoX2J5dGUx Ow0KKwlkYWRkclsyXSA9IHRhcmdldF9ldGhfYnl0ZTI7DQorCWRhZGRyWzNd ID0gdGFyZ2V0X2V0aF9ieXRlMzsNCisJZGFkZHJbNF0gPSB0YXJnZXRfZXRo X2J5dGU0Ow0KKwlkYWRkcls1XSA9IHRhcmdldF9ldGhfYnl0ZTU7DQorDQor CWlmICgoZGFkZHJbMF0gJiBkYWRkclsxXSAmIGRhZGRyWzJdICYgZGFkZHJb M10gJiBkYWRkcls0XSAmIGRhZGRyWzVdKSA9PSAyNTUpDQorCQlwcmludGso S0VSTl9JTkZPICJuZXRjb25zb2xlOiB1c2luZyBicm9hZGNhc3QgZXRoZXJu ZXQgZnJhbWVzIHRvIHNlbmQgcGFja2V0cy5cbiIpOw0KKwllbHNlDQorCQlw cmludGsoS0VSTl9JTkZPICJuZXRjb25zb2xlOiB1c2luZyB0YXJnZXQgZXRo ZXJuZXQgYWRkcmVzcyAlMDJ4OiUwMng6JTAyeDolMDJ4OiUwMng6JTAyeC5c biIsIGRhZGRyWzBdLCBkYWRkclsxXSwgZGFkZHJbMl0sIGRhZGRyWzNdLCBk YWRkcls0XSwgZGFkZHJbNV0pOw0KKwkJDQorCW5ldGNvbnNvbGVfZGV2ID0g bmRldjsNCisjZGVmaW5lIFNUQVJUVVBfTVNHICJbLi4ubmV0d29yayBjb25z b2xlIHN0YXJ0dXAuLi5dXG4iDQorCXdyaXRlX25ldGNvbnNvbGVfbXNnKE5V TEwsIFNUQVJUVVBfTVNHLCBzdHJsZW4oU1RBUlRVUF9NU0cpKTsNCisNCisJ cmVnaXN0ZXJfY29uc29sZSgmbmV0Y29uc29sZSk7DQorCXByaW50ayhLRVJO X0lORk8gIm5ldGNvbnNvbGU6IG5ldHdvcmsgbG9nZ2luZyBzdGFydGVkIHVw IHN1Y2Nlc3NmdWxseSFcbiIpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIHZvaWQgY2xlYW51cF9uZXRjb25zb2xlKHZvaWQpDQorew0KKwlwcmlu dGsoS0VSTl9JTkZPICJuZXRjb25zb2xlOiBuZXR3b3JrIGxvZ2dpbmcgc2h1 dCBkb3duLlxuIik7DQorCXVucmVnaXN0ZXJfY29uc29sZSgmbmV0Y29uc29s ZSk7DQorDQorI2RlZmluZSBTSFVURE9XTl9NU0cgIlsuLi5uZXR3b3JrIGNv bnNvbGUgc2h1dGRvd24uLi5dXG4iDQorCXdyaXRlX25ldGNvbnNvbGVfbXNn KE5VTEwsIFNIVVRET1dOX01TRywgc3RybGVuKFNIVVRET1dOX01TRykpOw0K KwluZXRjb25zb2xlX2RldiA9IE5VTEw7DQorfQ0KKw0KK21vZHVsZV9pbml0 KGluaXRfbmV0Y29uc29sZSk7DQorbW9kdWxlX2V4aXQoY2xlYW51cF9uZXRj b25zb2xlKTsNCisNCitpbnQgZHVtbXkgPSBNQVhfU0tCX1NJWkU7DQotLS0g bGludXgvbGludXgvZHJpdmVycy9uZXQvTWFrZWZpbGUub3JpZwlXZWQgU2Vw IDI2IDIxOjE0OjU4IDIwMDENCisrKyBsaW51eC9saW51eC9kcml2ZXJzL25l dC9NYWtlZmlsZQlXZWQgU2VwIDI2IDIxOjE1OjE1IDIwMDENCkBAIC0yMTYs NiArMjE2LDggQEANCiBvYmoteQkJKz0gLi4vYWNvcm4vbmV0L2Fjb3JuLW5l dC5vDQogZW5kaWYNCiANCitvYmotJChDT05GSUdfTkVUQ09OU09MRSkgKz0g bmV0Y29uc29sZS5vDQorDQogIw0KICMgSElQUEkgYWRhcHRlcnMNCiAjDQot LS0gbGludXgvbGludXgvZHJpdmVycy9uZXQvQ29uZmlnLmluLm9yaWcJV2Vk IFNlcCAyNiAyMToxNDo1OCAyMDAxDQorKysgbGludXgvbGludXgvZHJpdmVy cy9uZXQvQ29uZmlnLmluCVdlZCBTZXAgMjYgMjE6MTU6MTUgMjAwMQ0KQEAg LTI0OCw2ICsyNDgsOCBAQA0KICAgIGRlcF90cmlzdGF0ZSAnICBTeXNLb25u ZWN0IEZEREkgUENJIHN1cHBvcnQnIENPTkZJR19TS0ZQICRDT05GSUdfUENJ DQogZmkNCiANCitkZXBfdHJpc3RhdGUgJ05ldHdvcmsgbG9nZ2luZyBzdXBw b3J0JyBDT05GSUdfTkVUQ09OU09MRQ0KKw0KIGlmIFsgIiRDT05GSUdfRVhQ RVJJTUVOVEFMIiA9ICJ5IiBdOyB0aGVuDQogICAgaWYgWyAiJENPTkZJR19J TkVUIiA9ICJ5IiBdOyB0aGVuDQogICAgICAgYm9vbCAnSElQUEkgZHJpdmVy IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCknIENPTkZJR19ISVBQSQ0KLS0tIGxp bnV4L2xpbnV4L0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRsb2dnaW5n LnR4dC5vcmlnCVdlZCBTZXAgMjYgMjE6MTU6MTUgMjAwMQ0KKysrIGxpbnV4 L2xpbnV4L0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRsb2dnaW5nLnR4 dAlXZWQgU2VwIDI2IDIxOjE1OjE1IDIwMDENCkBAIC0wLDAgKzEsNDYgQEAN CisNCitzdGFydGVkIGJ5IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29t PiwgMjAwMS4wOS4xNw0KKw0KK3RoZSBuZXR3b3JrIGNvbnNvbGUgY2FuIGJl IGNvbmZpZ3VyZWQgb3ZlciB0aGUgbW9kdWxlIGludGVyZmFjZSwNCitieSBz cGVjaWZ5aW5nIHRoZSBkZXY9LCB0YXJnZXRfaXA9LCBzb3VyY2VfcG9ydD0s IHRhcmdldF9wb3J0PQ0KK21vZHVsZSBwYXJhbWV0ZXJzLiBTYW1wbGUgdXNl Og0KKw0KK2luc21vZCBuZXRjb25zb2xlIGRldj1ldGgwIHRhcmdldF9pcD0w eDBhMDAwNzAxIFwNCisgICAgICAgICAgICAgICAgICBzb3VyY2VfcG9ydD02 NjY2IHRhcmdldF9wb3J0PTY2NjYNCisNCitJUCBhZGRyZXNzZXMgbXVzdCBi ZSBzcGVjaWZpZWQgaW4gaGV4YWRlY2ltYWwgbnVtYmVycy4gVGhlDQorYWJv dmUgZXhhbXBsZSB1c2VzIHRhcmdldCBob3N0IElQIDEwLjAuNy4xLg0KKw0K K2lmIHRoZSBtb2R1bGUgaXMgbG9hZGVkIHRoZW4gYWxsIGtlcm5lbCBtZXNz YWdlcyBhcmUgc2VudCB0byB0aGUNCit0YXJnZXQgaG9zdCB2aWEgVURQIHBh Y2tldHMuIFRoZSByZW1vdGUgaG9zdCBzaG91bGQgcnVuIHRoZQ0KK2NsaWVu dC1zaWRlICduZXRjb25zb2xlJyBkYWVtb24gdG8gZGlzcGxheSAmIGxvZyB0 aGUgbWVzc2FnZXMuDQorDQorV0FSTklORzogdGhlIGRlZmF1bHQgc2V0dGlu ZyB1c2VzIHRoZSBicm9hZGNhc3QgZXRoZXJuZXQgYWRkcmVzcw0KK3RvIHNl bmQgcGFja2V0cywgd2hpY2ggY2FuIGNhdXNlIGluY3JlYXNlZCBsb2FkIG9u IG90aGVyIHN5c3RlbXMNCitvbiB0aGUgc2FtZSBldGhlcm5ldCBzZWdtZW50 LiBJZiB0aGlzIGlzIG5vdCBkZXNpcmVkLCB0aGVuIHRoZQ0KK3RhcmdldCBl dGhlcm5ldCBhZGRyZXNzIGNhbiBiZSBzcGVjaWZpZWQgdmlhIHRoZSB0YXJn ZXRfZXRoX2J5dGUwLA0KK3RhcmdldF9ldGhfYnl0ZTEgLi4uIGJ5dGU1IG1v ZHVsZSBwYXJhbWV0ZXJzLiBFZy46DQorDQoraW5zbW9kIG5ldGNvbnNvbGUg ZGV2PWV0aDAgdGFyZ2V0X2lwPTB4MGEwMDA3MDEgXA0KKyAgICAgICAgICAg ICAgICAgIHNvdXJjZV9wb3J0PTY2NjYgdGFyZ2V0X3BvcnQ9NjY2NiBcDQor ICAgICAgICAgICAgICAgICAgdGFyZ2V0X2V0aF9ieXRlMD0weDAwIFwNCisg ICAgICAgICAgICAgICAgICB0YXJnZXRfZXRoX2J5dGUxPTB4MDJcDQorICAg ICAgICAgICAgICAgICAgdGFyZ2V0X2V0aF9ieXRlMj0weEE1IFwNCisgICAg ICAgICAgICAgICAgICB0YXJnZXRfZXRoX2J5dGUzPTB4MTMgXA0KKyAgICAg ICAgICAgICAgICAgIHRhcmdldF9ldGhfYnl0ZTQ9MHg1MSBcDQorICAgICAg ICAgICAgICAgICAgdGFyZ2V0X2V0aF9ieXRlNT0weEREDQorDQord2lsbCBp bnN0cnVjdCB0aGUgbmV0Y29uc29sZSBjb2RlIHRvIHVzZSB0YXJnZXQgZXRo ZXJuZXQgYWRkcmVzcw0KKzAwOjAyOkE1OjEzOjUxOkRELg0KKw0KK05PVEU6 IHRoZSBuZXR3b3JrIGRldmljZSAoZXRoMCBpbiB0aGUgYWJvdmUgY2FzZSkg Y2FuIHJ1biBhbnkga2luZA0KK29mIG90aGVyIG5ldHdvcmsgdHJhZmZpYywg bmV0Y29uc29sZSBpcyBub3QgaW50cnVzaXZlLiBOZXRjb25zb2xlDQorbWln aHQgY2F1c2Ugc2xpZ2h0IGRlbGF5cyBpbiBvdGhlciB0cmFmZmljIGlmIHRo ZSB2b2x1bWUgb2Yga2VybmVsDQorbWVzc2FnZXMgaXMgaGlnaCwgYnV0IHNo b3VsZCBoYXZlIG5vIG90aGVyIGltcGFjdC4NCisNCituZXRjb25zb2xlIHdh cyBkZXNpZ25lZCB0byBiZSBhcyBpbnN0YW50YW5lb3VzIGFzIHBvc3NpYmxl LCB0bw0KK2VuYWJsZSB0aGUgbG9nZ2luZyBvZiBldmVuIHRoZSBtb3N0IGNy aXRpY2FsIGtlcm5lbCBidWdzLiBJdCB3b3Jrcw0KK2Zyb20gSVJRIGNvbnRl eHRzIGFzIHdlbGwsIGFuZCBkb2VzIG5vdCBlbmFibGUgaW50ZXJydXB0cyB3 aGlsZQ0KK3NlbmRpbmcgcGFja2V0cy4gRHVlIHRvIHRoZXNlIHVuaXF1ZSBu ZWVkcywgY29uZmlndXJhdGlvbiBjYW4gbm90DQorYmUgbW9yZSBhdXRvbWF0 aWMsIGFuZCBzb21lIGZ1bmRhbWVudGFsIGxpbWl0YXRpb25zIHdpbGwgcmVt YWluOg0KK29ubHkgSVAgbmV0d29ya3MsIFVEUCBwYWNrZXRzIGFuZCBldGhl cm5ldCBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQuDQotLS0gbGludXgvbGludXgv RG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscC5vcmlnCVdlZCBTZXAgMjYg MjE6MTQ6NTUgMjAwMQ0KKysrIGxpbnV4L2xpbnV4L0RvY3VtZW50YXRpb24v Q29uZmlndXJlLmhlbHAJV2VkIFNlcCAyNiAyMToxNToxNSAyMDAxDQpAQCAt OTk5Nyw2ICs5OTk3LDExIEBADQogICBzYXkgTSBoZXJlIGFuZCByZWFkIERv Y3VtZW50YXRpb24vbW9kdWxlcy50eHQuIFRoaXMgaXMgcmVjb21tZW5kZWQu DQogICBUaGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNrZnAuby4NCiANCitO ZXR3b3JrIGxvZ2dpbmcgc3VwcG9ydA0KK0NPTkZJR19ORVRDT05TT0xFDQor ICBJZiB5b3Ugd2FudCB0byBsb2cga2VybmVsIG1lc3NhZ2VzIG92ZXIgdGhl IG5ldHdvcmssIHRoZW4gc2F5DQorICAiTSIgaGVyZS4gU2VlIERvY3VtZW50 YXRpb24vbmV0d29ya2luZy9uZXRsb2dnaW5nLnR4dCBmb3IgZGV0YWlscy4N CisNCiBISWdoIFBlcmZvcm1hbmNlIFBhcmFsbGVsIEludGVyZmFjZSBzdXBw b3J0IChFWFBFUklNRU5UQUwpDQogQ09ORklHX0hJUFBJDQogICBISWdoIFBl cmZvcm1hbmNlIFBhcmFsbGVsIEludGVyZmFjZSAoSElQUEkpIGlzIGEgODAw TWJpdC9zZWMgYW5kDQo= --8323328-2090465018-1001694854=:8840--