From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752954Ab0KYOsa (ORCPT ); Thu, 25 Nov 2010 09:48:30 -0500 Received: from casper.infradead.org ([85.118.1.10]:59996 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752322Ab0KYOs3 (ORCPT ); Thu, 25 Nov 2010 09:48:29 -0500 Subject: Re: [RFC][PATCH 2/8] perf, arch: Use early_initcall() for all arch pmu implementations From: Peter Zijlstra To: Ingo Molnar Cc: Lin Ming , Stephane Eranian , "robert.richter" , Corey Ashford , fweisbec , paulus , Greg Kroah-Hartman , Kay Sievers , "H. Peter Anvin" , Kyle Moffett , linux-kernel@vger.kernel.org, davem , Michael Cree , Deng-Cheng Zhu , Will Deacon , Paul Mundt , Don Zickus In-Reply-To: <1290680713.2145.18.camel@laptop> References: <20101117221730.002627458@chello.nl> <20101117222056.040309789@chello.nl> <1290680713.2145.18.camel@laptop> Content-Type: multipart/mixed; boundary="=-qDJZxd4BVI+FGCa4peLS" Date: Thu, 25 Nov 2010 15:47:56 +0100 Message-ID: <1290696476.2145.46.camel@laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-qDJZxd4BVI+FGCa4peLS Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 2010-11-25 at 11:25 +0100, Peter Zijlstra wrote: >=20 > Right, so hw perf init happens from (after this patch): >=20 > arch_initcall: powerpc, arm, sh, mips > early_initcall: x86, sparc, alpha >=20 >=20 > Now the problem is that the generic watchdog code (kernel/watchdog.c) > tries to create hw perf events, and that too runs from early_initcall. >=20 > So my question is, how do we go about curing this, because powerpc, arm, > sh and mips are too late and the rest depends on link order to work, not > really a nice situation. >=20 > There's two categories of solutions: > - move the watchdog later, and > - move the hw perf init earlier. >=20 > The former is undesired because we want the watchdog as early as > possible, the later needs new infrastructure (also, I don't know if the > arch implementations can actually run this early). >=20 > So do I create a perf_initcall() or is there another solution that > avoids things like calling the watchdog code from all arch init code?=20 How about something like these? After this we could even look at making the watchdog code an explicit init in main.c right after do_perf_initcalls() (or later if it requires more to be up and running). Hrm,. except that it all builds but doesn't seem to actually work, I guess I need more magics to make the perf_initcall() thing work. /me goes investigate --=-qDJZxd4BVI+FGCa4peLS Content-Disposition: attachment; filename="perf_initcall.patch" Content-Type: text/x-patch; name="perf_initcall.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 U3ViamVjdDogcGVyZiwgY29yZTogSW50cm9kdWNlIHBlcmZfaW5pdGNhbGwoKQ0KRnJvbTogUGV0 ZXIgWmlqbHN0cmEgPGEucC56aWpsc3RyYUBjaGVsbG8ubmw+DQpEYXRlOiBUaHUgTm92IDI1IDE1 OjI3OjQ5IENFVCAyMDEwDQoNCkluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1aWx0LWluIGhh cmR3YXJlIFBNVSBkcml2ZXJzIGJlZm9yZQ0KZWFybHlfaW5pdGNhbGwoKSAtLSB3aGljaCBpcyB1 c2VkIGJ5IHRoZSB3YXRjaGRvZyBjb2RlIGFuZCBleHBlY3RzIHRoZQ0KaGFyZHdhcmUgUE1VcyB0 byBiZSBwcmVzZW50Lg0KDQpTaWduZWQtb2ZmLWJ5OiBQZXRlciBaaWpsc3RyYSA8YS5wLnppamxz dHJhQGNoZWxsby5ubD4NCkxLTUwtUmVmZXJlbmNlOiA8bmV3LXN1Ym1pc3Npb24+DQotLS0NCiBp bmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggfCAgICAyICsNCiBpbmNsdWRlL2xpbnV4 L2luaXQuaCAgICAgICAgICAgICAgfCAgICA3ICsrKysrDQogaW5pdC9tYWluLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgICA1MyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LQ0KIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pDQoN CkluZGV4OiBsaW51eC0yLjYvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQotLS0gbGludXgtMi42Lm9yaWcvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxk cy5oDQorKysgbGludXgtMi42L2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaA0KQEAg LTYwMCw2ICs2MDAsOCBAQA0KIAkJVk1MSU5VWF9TWU1CT0woX19zZXR1cF9lbmQpID0gLjsNCiAN CiAjZGVmaW5lIElOSVRDQUxMUwkJCQkJCQlcDQorCSooLmluaXRjYWxscGVyZi5pbml0KQkJCQkJ CVwNCisJVk1MSU5VWF9TWU1CT0woX19wZXJmX2luaXRjYWxsX2VuZCkgPSAuOwkJCVwNCiAJKigu aW5pdGNhbGxlYXJseS5pbml0KQkJCQkJCVwNCiAJVk1MSU5VWF9TWU1CT0woX19lYXJseV9pbml0 Y2FsbF9lbmQpID0gLjsJCQlcDQogICAJKiguaW5pdGNhbGwwLmluaXQpCQkJCQkJXA0KSW5kZXg6 IGxpbnV4LTIuNi9pbmNsdWRlL2xpbnV4L2luaXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIu Ni5vcmlnL2luY2x1ZGUvbGludXgvaW5pdC5oDQorKysgbGludXgtMi42L2luY2x1ZGUvbGludXgv aW5pdC5oDQpAQCAtMTc5LDYgKzE3OSwxMyBAQCBleHRlcm4gaW50IGluaXRjYWxsX2RlYnVnOw0K IAlfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXRjYWxsIiBsZXZlbCAiLmluaXQiKSkp ID0gZm4NCiANCiAvKg0KKyAqIFZlcnkgZWFybHkgaW5pdGNhbGxzLCBydW4gYWZ0ZXIgdGhlIHBl cmYgY29yZSBpcyB1cC4NCisgKg0KKyAqIE9ubHkgZm9yIGJ1aWxkLWluIGNvZGUsIG5vdCBtb2R1 bGVzLg0KKyAqLw0KKyNkZWZpbmUgcGVyZl9pbml0Y2FsbChmbikJCV9fZGVmaW5lX2luaXRjYWxs KCJwZXJmIixmbixwZXJmKQ0KKw0KKy8qDQogICogRWFybHkgaW5pdGNhbGxzIHJ1biBiZWZvcmUg aW5pdGlhbGl6aW5nIFNNUC4NCiAgKg0KICAqIE9ubHkgZm9yIGJ1aWx0LWluIGNvZGUsIG5vdCBt b2R1bGVzLg0KSW5kZXg6IGxpbnV4LTIuNi9pbml0L21haW4uYw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxp bnV4LTIuNi5vcmlnL2luaXQvbWFpbi5jDQorKysgbGludXgtMi42L2luaXQvbWFpbi5jDQpAQCAt NTE1LDYgKzUxNSwzNiBAQCB2b2lkIF9faW5pdCBfX3dlYWsgdGhyZWFkX2luZm9fY2FjaGVfaW5p DQogew0KIH0NCiANCitleHRlcm4gaW5pdGNhbGxfdCBfX2luaXRjYWxsX3N0YXJ0W10sIF9faW5p dGNhbGxfZW5kW10sDQorCQkgIF9fcGVyZl9pbml0Y2FsbF9lbmRbXSwgX19lYXJseV9pbml0Y2Fs bF9lbmRbXTsNCisNCitzdGF0aWMgdm9pZCBfX2luaXQgZG9fcGVyZl9pbml0Y2FsbHModm9pZCkN Cit7DQorCWluaXRjYWxsX3QgKmZuOw0KKw0KKwlmb3IgKGZuID0gX19pbml0Y2FsbF9zdGFydDsg Zm4gPCBfX3BlcmZfaW5pdGNhbGxfZW5kOyBmbisrKQ0KKwkJZG9fb25lX2luaXRjYWxsKCpmbik7 DQorfQ0KKw0KK3N0YXRpYyB2b2lkIF9faW5pdCBkb19wcmVfc21wX2luaXRjYWxscyh2b2lkKQ0K K3sNCisJaW5pdGNhbGxfdCAqZm47DQorDQorCWZvciAoZm4gPSBfX3BlcmZfaW5pdGNhbGxfZW5k OyBmbiA8IF9fZWFybHlfaW5pdGNhbGxfZW5kOyBmbisrKQ0KKwkJZG9fb25lX2luaXRjYWxsKCpm bik7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIF9faW5pdCBkb19pbml0Y2FsbHModm9pZCkNCit7DQor CWluaXRjYWxsX3QgKmZuOw0KKw0KKwlmb3IgKGZuID0gX19lYXJseV9pbml0Y2FsbF9lbmQ7IGZu IDwgX19pbml0Y2FsbF9lbmQ7IGZuKyspDQorCQlkb19vbmVfaW5pdGNhbGwoKmZuKTsNCisNCisJ LyogTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHBlbmRpbmcgc3R1ZmYgZnJvbSB0aGUgaW5pdGNhbGwg c2VxdWVuY2UgKi8NCisJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsNCit9DQorDQogLyoNCiAgKiBT ZXQgdXAga2VybmVsIG1lbW9yeSBhbGxvY2F0b3JzDQogICovDQpAQCAtNjA1LDYgKzYzNSw3IEBA IGFzbWxpbmthZ2Ugdm9pZCBfX2luaXQgc3RhcnRfa2VybmVsKHZvaWQNCiAJCWxvY2FsX2lycV9k aXNhYmxlKCk7DQogCX0NCiAJcGVyZl9ldmVudF9pbml0KCk7DQorCWRvX3BlcmZfaW5pdGNhbGxz KCk7DQogCXJjdV9pbml0KCk7DQogCXJhZGl4X3RyZWVfaW5pdCgpOw0KIAkvKiBpbml0IHNvbWUg bGlua3MgYmVmb3JlIGluaXRfSVNBX2lycXMoKSAqLw0KQEAgLTc2OCwyMCArNzk5LDYgQEAgaW50 IF9faW5pdF9vcl9tb2R1bGUgZG9fb25lX2luaXRjYWxsKGluaQ0KIAlyZXR1cm4gcmV0Ow0KIH0N CiANCi0NCi1leHRlcm4gaW5pdGNhbGxfdCBfX2luaXRjYWxsX3N0YXJ0W10sIF9faW5pdGNhbGxf ZW5kW10sIF9fZWFybHlfaW5pdGNhbGxfZW5kW107DQotDQotc3RhdGljIHZvaWQgX19pbml0IGRv X2luaXRjYWxscyh2b2lkKQ0KLXsNCi0JaW5pdGNhbGxfdCAqZm47DQotDQotCWZvciAoZm4gPSBf X2Vhcmx5X2luaXRjYWxsX2VuZDsgZm4gPCBfX2luaXRjYWxsX2VuZDsgZm4rKykNCi0JCWRvX29u ZV9pbml0Y2FsbCgqZm4pOw0KLQ0KLQkvKiBNYWtlIHN1cmUgdGhlcmUgaXMgbm8gcGVuZGluZyBz dHVmZiBmcm9tIHRoZSBpbml0Y2FsbCBzZXF1ZW5jZSAqLw0KLQlmbHVzaF9zY2hlZHVsZWRfd29y aygpOw0KLX0NCi0NCiAvKg0KICAqIE9rLCB0aGUgbWFjaGluZSBpcyBub3cgaW5pdGlhbGl6ZWQu IE5vbmUgb2YgdGhlIGRldmljZXMNCiAgKiBoYXZlIGJlZW4gdG91Y2hlZCB5ZXQsIGJ1dCB0aGUg Q1BVIHN1YnN5c3RlbSBpcyB1cCBhbmQNCkBAIC04MDAsMTQgKzgxNyw2IEBAIHN0YXRpYyB2b2lk IF9faW5pdCBkb19iYXNpY19zZXR1cCh2b2lkKQ0KIAlkb19pbml0Y2FsbHMoKTsNCiB9DQogDQot c3RhdGljIHZvaWQgX19pbml0IGRvX3ByZV9zbXBfaW5pdGNhbGxzKHZvaWQpDQotew0KLQlpbml0 Y2FsbF90ICpmbjsNCi0NCi0JZm9yIChmbiA9IF9faW5pdGNhbGxfc3RhcnQ7IGZuIDwgX19lYXJs eV9pbml0Y2FsbF9lbmQ7IGZuKyspDQotCQlkb19vbmVfaW5pdGNhbGwoKmZuKTsNCi19DQotDQog c3RhdGljIHZvaWQgcnVuX2luaXRfcHJvY2Vzcyhjb25zdCBjaGFyICppbml0X2ZpbGVuYW1lKQ0K IHsNCiAJYXJndl9pbml0WzBdID0gaW5pdF9maWxlbmFtZTsNCg== --=-qDJZxd4BVI+FGCa4peLS Content-Disposition: attachment; filename="perf-fix-hw-init.patch" Content-Type: text/x-patch; name="perf-fix-hw-init.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 U3ViamVjdDogcGVyZiwgYXJjaDogVXNlIHBlcmZfaW5pdGNhbGwoKSBmb3IgYWxsIGFyY2ggcG11 IGltcGxlbWVudGF0aW9ucw0KRnJvbTogUGV0ZXIgWmlqbHN0cmEgPGEucC56aWpsc3RyYUBjaGVs bG8ubmw+DQpEYXRlOiBUdWUgTm92IDE2IDIyOjA4OjI4IENFVCAyMDEwDQoNCkN1cnJlbnRseSBh cmNoaXRlY3R1cmVzIHVzZSB2YXJpb3VzIHJhbmRvbSBsb2NhdGlvbnMgdG8gaW5pdCB0aGUgUE1V DQpkcml2ZXIsIGZvciBzb21lIHRoaXMgaGFwcGVucyBiZWZvcmUgdGhlIHBlcmYgY29yZSBjb2Rl IGlzDQppbml0aWFsaXplZC4NCg0KSW4gb3JkZXIgdG8gYXZvaWQgY2FsbGluZyBwZXJmX3BtdV9y ZWdpc3RlcigpIGJlZm9yZSB0aGUgY29yZSBjb2RlIGlzDQp1cCBhbmQgcnVubmluZyBhbmQgYWJs ZSB0byBkZWFsIHdpdGggaXQsIG1vdmUgYWxsIGFyY2ggcG11IGluaXQgY2FsbHMNCnRvIHBlcmZf aW5pdGNhbGwoKS4NCg0KQ2M6IE1pY2hhZWwgQ3JlZSA8bWNyZWVAb3Jjb24ubmV0Lm56Pg0KQ2M6 IERhdmlkIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4NCkNjOiBQYXVsIE11bmR0IDxsZXRo YWxAbGludXgtc2gub3JnPg0KQ2M6IFdpbGwgRGVhY29uIDx3aWxsLmRlYWNvbkBhcm0uY29tPg0K Q2M6IHBhdWx1cyA8cGF1bHVzQHNhbWJhLm9yZz4NCkNjOiBEZW5nLUNoZW5nIFpodSA8ZGVuZ2No ZW5nLnpodUBnbWFpbC5jb20+DQpTaWduZWQtb2ZmLWJ5OiBQZXRlciBaaWpsc3RyYSA8YS5wLnpp amxzdHJhQGNoZWxsby5ubD4NCkxLTUwtUmVmZXJlbmNlOiA8MjAxMDExMTcyMjIwNTYuMDQwMzA5 Nzg5QGNoZWxsby5ubD4NCi0tLQ0KIGFyY2gvYWxwaGEvaW5jbHVkZS9hc20vcGVyZl9ldmVudC5o ICB8ICAgIDYgLS0tLS0tDQogYXJjaC9hbHBoYS9rZXJuZWwvaXJxX2FscGhhLmMgICAgICAgIHwg ICAgMiAtLQ0KIGFyY2gvYWxwaGEva2VybmVsL3BlcmZfZXZlbnQuYyAgICAgICB8ICAgIDkgKysr KysrLS0tDQogYXJjaC9hcm0va2VybmVsL3BlcmZfZXZlbnQuYyAgICAgICAgIHwgICAgMiArLQ0K IGFyY2gvbWlwcy9rZXJuZWwvcGVyZl9ldmVudF9taXBzeHguYyB8ICAgIDIgKy0NCiBhcmNoL3Bv d2VycGMva2VybmVsL2U1MDAtcG11LmMgICAgICAgfCAgICAyICstDQogYXJjaC9wb3dlcnBjL2tl cm5lbC9tcGM3NDUwLXBtdS5jICAgIHwgICAgMiArLQ0KIGFyY2gvcG93ZXJwYy9rZXJuZWwvcG93 ZXI0LXBtdS5jICAgICB8ICAgIDIgKy0NCiBhcmNoL3Bvd2VycGMva2VybmVsL3Bvd2VyNSstcG11 LmMgICAgfCAgICAyICstDQogYXJjaC9wb3dlcnBjL2tlcm5lbC9wb3dlcjUtcG11LmMgICAgIHwg ICAgMiArLQ0KIGFyY2gvcG93ZXJwYy9rZXJuZWwvcG93ZXI2LXBtdS5jICAgICB8ICAgIDIgKy0N CiBhcmNoL3Bvd2VycGMva2VybmVsL3Bvd2VyNy1wbXUuYyAgICAgfCAgICAyICstDQogYXJjaC9w b3dlcnBjL2tlcm5lbC9wcGM5NzAtcG11LmMgICAgIHwgICAgMiArLQ0KIGFyY2gvc2gva2VybmVs L2NwdS9zaDQvcGVyZl9ldmVudC5jICB8ICAgIDIgKy0NCiBhcmNoL3NoL2tlcm5lbC9jcHUvc2g0 YS9wZXJmX2V2ZW50LmMgfCAgICAyICstDQogYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9wZXJmX2V2 ZW50LmggIHwgICAgNCAtLS0tDQogYXJjaC9zcGFyYy9rZXJuZWwvbm1pLmMgICAgICAgICAgICAg IHwgICAgMiAtLQ0KIGFyY2gvc3BhcmMva2VybmVsL3BlcmZfZXZlbnQuYyAgICAgICB8ICAgIDcg KysrKystLQ0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3BlcmZfZXZlbnQuaCAgICB8ICAgIDIgLS0N CiBhcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jICAgICAgICAgfCAgICAxIC0NCiBhcmNoL3g4 Ni9rZXJuZWwvY3B1L3BlcmZfZXZlbnQuYyAgICAgfCAgIDExICsrKysrKystLS0tDQogMjEgZmls ZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pDQoNCkluZGV4OiBs aW51eC0yLjYvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9wZXJmX2V2ZW50LmgNCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBsaW51eC0yLjYub3JpZy9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL3BlcmZfZXZlbnQuaA0K KysrIGxpbnV4LTIuNi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL3BlcmZfZXZlbnQuaA0KQEAgLTEs MTAgKzEsNCBAQA0KICNpZm5kZWYgX19BU01fQUxQSEFfUEVSRl9FVkVOVF9IDQogI2RlZmluZSBf X0FTTV9BTFBIQV9QRVJGX0VWRU5UX0gNCiANCi0jaWZkZWYgQ09ORklHX1BFUkZfRVZFTlRTDQot ZXh0ZXJuIHZvaWQgaW5pdF9od19wZXJmX2V2ZW50cyh2b2lkKTsNCi0jZWxzZQ0KLXN0YXRpYyBp bmxpbmUgdm9pZCBpbml0X2h3X3BlcmZfZXZlbnRzKHZvaWQpICAgIHsgfQ0KLSNlbmRpZg0KLQ0K ICNlbmRpZiAvKiBfX0FTTV9BTFBIQV9QRVJGX0VWRU5UX0ggKi8NCkluZGV4OiBsaW51eC0yLjYv YXJjaC9hbHBoYS9rZXJuZWwvaXJxX2FscGhhLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaW51eC0yLjYu b3JpZy9hcmNoL2FscGhhL2tlcm5lbC9pcnFfYWxwaGEuYw0KKysrIGxpbnV4LTIuNi9hcmNoL2Fs cGhhL2tlcm5lbC9pcnFfYWxwaGEuYw0KQEAgLTExMiw4ICsxMTIsNiBAQCBpbml0X0lSUSh2b2lk KQ0KIAl3cmVudChlbnRJbnQsIDApOw0KIA0KIAlhbHBoYV9tdi5pbml0X2lycSgpOw0KLQ0KLQlp bml0X2h3X3BlcmZfZXZlbnRzKCk7DQogfQ0KIA0KIC8qDQpJbmRleDogbGludXgtMi42L2FyY2gv YWxwaGEva2VybmVsL3BlcmZfZXZlbnQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmln L2FyY2gvYWxwaGEva2VybmVsL3BlcmZfZXZlbnQuYw0KKysrIGxpbnV4LTIuNi9hcmNoL2FscGhh L2tlcm5lbC9wZXJmX2V2ZW50LmMNCkBAIC0xNCw2ICsxNCw3IEBADQogI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPg0KICNpbmNsdWRlIDxsaW51eC9rZGVidWcuaD4NCiAjaW5jbHVkZSA8bGludXgv bXV0ZXguaD4NCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KIA0KICNpbmNsdWRlIDxhc20vaHdy cGIuaD4NCiAjaW5jbHVkZSA8YXNtL2F0b21pYy5oPg0KQEAgLTg2MywxMyArODY0LDEzIEBAIHN0 YXRpYyB2b2lkIGFscGhhX3BlcmZfZXZlbnRfaXJxX2hhbmRsZXINCiAvKg0KICAqIEluaXQgY2Fs bCB0byBpbml0aWFsaXNlIHBlcmZvcm1hbmNlIGV2ZW50cyBhdCBrZXJuZWwgc3RhcnR1cC4NCiAg Ki8NCi12b2lkIF9faW5pdCBpbml0X2h3X3BlcmZfZXZlbnRzKHZvaWQpDQoraW50IF9faW5pdCBp bml0X2h3X3BlcmZfZXZlbnRzKHZvaWQpDQogew0KIAlwcl9pbmZvKCJQZXJmb3JtYW5jZSBldmVu dHM6ICIpOw0KIA0KIAlpZiAoIXN1cHBvcnRlZF9jcHUoKSkgew0KIAkJcHJfY29udCgiTm8gc3Vw cG9ydCBmb3IgeW91ciBDUFUuXG4iKTsNCi0JCXJldHVybjsNCisJCXJldHVybiAwOw0KIAl9DQog DQogCXByX2NvbnQoIlN1cHBvcnRlZCBDUFUgdHlwZSFcbiIpOw0KQEAgLTg4Miw1ICs4ODMsNyBA QCB2b2lkIF9faW5pdCBpbml0X2h3X3BlcmZfZXZlbnRzKHZvaWQpDQogCWFscGhhX3BtdSA9ICZl djY3X3BtdTsNCiANCiAJcGVyZl9wbXVfcmVnaXN0ZXIoJnBtdSk7DQotfQ0KIA0KKwlyZXR1cm4g MDsNCit9DQorcGVyZl9pbml0Y2FsbChpbml0X2h3X3BlcmZfZXZlbnRzKTsNCkluZGV4OiBsaW51 eC0yLjYvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9wZXJmX2V2ZW50LmgNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t LSBsaW51eC0yLjYub3JpZy9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3BlcmZfZXZlbnQuaA0KKysr IGxpbnV4LTIuNi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3BlcmZfZXZlbnQuaA0KQEAgLTQsOCAr NCw2IEBADQogI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UUw0KICNpbmNsdWRlIDxhc20vcHRyYWNl Lmg+DQogDQotZXh0ZXJuIHZvaWQgaW5pdF9od19wZXJmX2V2ZW50cyh2b2lkKTsNCi0NCiAjZGVm aW5lIHBlcmZfYXJjaF9mZXRjaF9jYWxsZXJfcmVncyhyZWdzLCBpcCkJCVwNCiBkbyB7CQkJCQkJ CVwNCiAJdW5zaWduZWQgbG9uZyBfcHN0YXRlLCBfYXNpLCBfcGlsLCBfaTcsIF9mcDsJXA0KQEAg LTI2LDggKzI0LDYgQEAgZG8gewkJCQkJCQlcDQogCShyZWdzKS0+dV9yZWdzW1VSRUdfSTZdID0g X2ZwOwkJCVwNCiAJKHJlZ3MpLT51X3JlZ3NbVVJFR19JN10gPSBfaTc7CQkJXA0KIH0gd2hpbGUg KDApDQotI2Vsc2UNCi1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9od19wZXJmX2V2ZW50cyh2b2lk KQl7IH0NCiAjZW5kaWYNCiANCiAjZW5kaWYNCkluZGV4OiBsaW51eC0yLjYvYXJjaC9zcGFyYy9r ZXJuZWwvbm1pLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaW51eC0yLjYub3JpZy9hcmNoL3NwYXJjL2tl cm5lbC9ubWkuYw0KKysrIGxpbnV4LTIuNi9hcmNoL3NwYXJjL2tlcm5lbC9ubWkuYw0KQEAgLTI3 MCw4ICsyNzAsNiBAQCBpbnQgX19pbml0IG5taV9pbml0KHZvaWQpDQogCQkJYXRvbWljX3NldCgm bm1pX2FjdGl2ZSwgLTEpOw0KIAkJfQ0KIAl9DQotCWlmICghZXJyKQ0KLQkJaW5pdF9od19wZXJm X2V2ZW50cygpOw0KIA0KIAlyZXR1cm4gZXJyOw0KIH0NCkluZGV4OiBsaW51eC0yLjYvYXJjaC9z cGFyYy9rZXJuZWwvcGVyZl9ldmVudC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGludXgtMi42Lm9yaWcv YXJjaC9zcGFyYy9rZXJuZWwvcGVyZl9ldmVudC5jDQorKysgbGludXgtMi42L2FyY2gvc3BhcmMv a2VybmVsL3BlcmZfZXZlbnQuYw0KQEAgLTEzMDcsMjAgKzEzMDcsMjMgQEAgc3RhdGljIGJvb2wg X19pbml0IHN1cHBvcnRlZF9wbXUodm9pZCkNCiAJcmV0dXJuIGZhbHNlOw0KIH0NCiANCi12b2lk IF9faW5pdCBpbml0X2h3X3BlcmZfZXZlbnRzKHZvaWQpDQoraW50IF9faW5pdCBpbml0X2h3X3Bl cmZfZXZlbnRzKHZvaWQpDQogew0KIAlwcl9pbmZvKCJQZXJmb3JtYW5jZSBldmVudHM6ICIpOw0K IA0KIAlpZiAoIXN1cHBvcnRlZF9wbXUoKSkgew0KIAkJcHJfY29udCgiTm8gc3VwcG9ydCBmb3Ig UE1VIHR5cGUgJyVzJ1xuIiwgc3BhcmNfcG11X3R5cGUpOw0KLQkJcmV0dXJuOw0KKwkJcmV0dXJu IDA7DQogCX0NCiANCiAJcHJfY29udCgiU3VwcG9ydGVkIFBNVSB0eXBlIGlzICclcydcbiIsIHNw YXJjX3BtdV90eXBlKTsNCiANCiAJcGVyZl9wbXVfcmVnaXN0ZXIoJnBtdSk7DQogCXJlZ2lzdGVy X2RpZV9ub3RpZmllcigmcGVyZl9ldmVudF9ubWlfbm90aWZpZXIpOw0KKw0KKwlyZXR1cm4gMDsN CiB9DQorcGVyZl9pbml0Y2FsbChpbml0X2h3X3BlcmZfZXZlbnQpOw0KIA0KIHZvaWQgcGVyZl9j YWxsY2hhaW5fa2VybmVsKHN0cnVjdCBwZXJmX2NhbGxjaGFpbl9lbnRyeSAqZW50cnksDQogCQkJ ICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQpJbmRleDogbGludXgtMi42L2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BlcmZfZXZlbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BlcmZfZXZlbnQuaA0KKysrIGxpbnV4LTIuNi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wZXJmX2V2ZW50LmgNCkBAIC0xMjUsNyArMTI1LDYgQEAgdW5pb24gY3B1aWQxMF9l ZHggew0KICNkZWZpbmUgSUJTX09QX01BWF9DTlRfRVhUCTB4MDA3RkZGRkZVTEwJLyogbm90IGEg cmVnaXN0ZXIgYml0IG1hc2sgKi8NCiANCiAjaWZkZWYgQ09ORklHX1BFUkZfRVZFTlRTDQotZXh0 ZXJuIHZvaWQgaW5pdF9od19wZXJmX2V2ZW50cyh2b2lkKTsNCiBleHRlcm4gdm9pZCBwZXJmX2V2 ZW50c19sYXBpY19pbml0KHZvaWQpOw0KIA0KICNkZWZpbmUgUEVSRl9FVkVOVF9JTkRFWF9PRkZT RVQJCQkwDQpAQCAtMTU2LDcgKzE1NSw2IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIHBlcmZfbWlz Y19mbGFncyhzdHINCiB9DQogDQogI2Vsc2UNCi1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9od19w ZXJmX2V2ZW50cyh2b2lkKQkJeyB9DQogc3RhdGljIGlubGluZSB2b2lkIHBlcmZfZXZlbnRzX2xh cGljX2luaXQodm9pZCkJeyB9DQogI2VuZGlmDQogDQpJbmRleDogbGludXgtMi42L2FyY2gveDg2 L2tlcm5lbC9jcHUvY29tbW9uLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaW51eC0yLjYub3JpZy9hcmNo L3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jDQorKysgbGludXgtMi42L2FyY2gveDg2L2tlcm5lbC9j cHUvY29tbW9uLmMNCkBAIC04OTQsNyArODk0LDYgQEAgdm9pZCBfX2luaXQgaWRlbnRpZnlfYm9v dF9jcHUodm9pZCkNCiAjZWxzZQ0KIAl2Z2V0Y3B1X3NldF9tb2RlKCk7DQogI2VuZGlmDQotCWlu aXRfaHdfcGVyZl9ldmVudHMoKTsNCiB9DQogDQogdm9pZCBfX2NwdWluaXQgaWRlbnRpZnlfc2Vj b25kYXJ5X2NwdShzdHJ1Y3QgY3B1aW5mb194ODYgKmMpDQpJbmRleDogbGludXgtMi42L2FyY2gv eDg2L2tlcm5lbC9jcHUvcGVyZl9ldmVudC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGludXgtMi42Lm9y aWcvYXJjaC94ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmMNCisrKyBsaW51eC0yLjYvYXJjaC94 ODYva2VybmVsL2NwdS9wZXJmX2V2ZW50LmMNCkBAIC0xNDIzLDcgKzE0MjMsNyBAQCBzdGF0aWMg dm9pZCBfX2luaXQgcG11X2NoZWNrX2FwaWModm9pZCkNCiAJcHJfaW5mbygibm8gaGFyZHdhcmUg c2FtcGxpbmcgaW50ZXJydXB0IGF2YWlsYWJsZS5cbiIpOw0KIH0NCiANCi12b2lkIF9faW5pdCBp bml0X2h3X3BlcmZfZXZlbnRzKHZvaWQpDQoraW50IF9faW5pdCBpbml0X2h3X3BlcmZfZXZlbnRz KHZvaWQpDQogew0KIAlzdHJ1Y3QgZXZlbnRfY29uc3RyYWludCAqYzsNCiAJaW50IGVycjsNCkBA IC0xNDM4LDExICsxNDM4LDExIEBAIHZvaWQgX19pbml0IGluaXRfaHdfcGVyZl9ldmVudHModm9p ZCkNCiAJCWVyciA9IGFtZF9wbXVfaW5pdCgpOw0KIAkJYnJlYWs7DQogCWRlZmF1bHQ6DQotCQly ZXR1cm47DQorCQlyZXR1cm4gMDsNCiAJfQ0KIAlpZiAoZXJyICE9IDApIHsNCiAJCXByX2NvbnQo Im5vIFBNVSBkcml2ZXIsIHNvZnR3YXJlIGV2ZW50cyBvbmx5LlxuIik7DQotCQlyZXR1cm47DQor CQlyZXR1cm4gMDsNCiAJfQ0KIA0KIAlwbXVfY2hlY2tfYXBpYygpOw0KQEAgLTE0NTAsNyArMTQ1 MCw3IEBAIHZvaWQgX19pbml0IGluaXRfaHdfcGVyZl9ldmVudHModm9pZCkNCiAJLyogc2FuaXR5 IGNoZWNrIHRoYXQgdGhlIGhhcmR3YXJlIGV4aXN0cyBvciBpcyBlbXVsYXRlZCAqLw0KIAlpZiAo IWNoZWNrX2h3X2V4aXN0cygpKSB7DQogCQlwcl9jb250KCJCcm9rZW4gUE1VIGhhcmR3YXJlIGRl dGVjdGVkLCBzb2Z0d2FyZSBldmVudHMgb25seS5cbiIpOw0KLQkJcmV0dXJuOw0KKwkJcmV0dXJu IDA7DQogCX0NCiANCiAJcHJfY29udCgiJXMgUE1VIGRyaXZlci5cbiIsIHg4Nl9wbXUubmFtZSk7 DQpAQCAtMTUwMSw3ICsxNTAxLDEwIEBAIHZvaWQgX19pbml0IGluaXRfaHdfcGVyZl9ldmVudHMo dm9pZCkNCiANCiAJcGVyZl9wbXVfcmVnaXN0ZXIoJnBtdSk7DQogCXBlcmZfY3B1X25vdGlmaWVy KHg4Nl9wbXVfbm90aWZpZXIpOw0KKw0KKwlyZXR1cm4gMDsNCiB9DQorcGVyZl9pbml0Y2FsbChp bml0X2h3X3BlcmZfZXZlbnRzKTsNCiANCiBzdGF0aWMgaW5saW5lIHZvaWQgeDg2X3BtdV9yZWFk KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkNCiB7DQpJbmRleDogbGludXgtMi42L2FyY2gvYXJt L2tlcm5lbC9wZXJmX2V2ZW50LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaW51eC0yLjYub3JpZy9hcmNo L2FybS9rZXJuZWwvcGVyZl9ldmVudC5jDQorKysgbGludXgtMi42L2FyY2gvYXJtL2tlcm5lbC9w ZXJmX2V2ZW50LmMNCkBAIC0zMDM4LDcgKzMwMzgsNyBAQCBpbml0X2h3X3BlcmZfZXZlbnRzKHZv aWQpDQogDQogCXJldHVybiAwOw0KIH0NCi1hcmNoX2luaXRjYWxsKGluaXRfaHdfcGVyZl9ldmVu dHMpOw0KK3BlcmZfaW5pdGNhbGwoaW5pdF9od19wZXJmX2V2ZW50cyk7DQogDQogLyoNCiAgKiBD YWxsY2hhaW4gaGFuZGxpbmcgY29kZS4NCkluZGV4OiBsaW51eC0yLjYvYXJjaC9taXBzL2tlcm5l bC9wZXJmX2V2ZW50X21pcHN4eC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGludXgtMi42Lm9yaWcvYXJj aC9taXBzL2tlcm5lbC9wZXJmX2V2ZW50X21pcHN4eC5jDQorKysgbGludXgtMi42L2FyY2gvbWlw cy9rZXJuZWwvcGVyZl9ldmVudF9taXBzeHguYw0KQEAgLTEwNDcsNiArMTA0Nyw2IEBAIGluaXRf aHdfcGVyZl9ldmVudHModm9pZCkNCiANCiAJcmV0dXJuIDA7DQogfQ0KLWFyY2hfaW5pdGNhbGwo aW5pdF9od19wZXJmX2V2ZW50cyk7DQorcGVyZl9pbml0Y2FsbChpbml0X2h3X3BlcmZfZXZlbnRz KTsNCiANCiAjZW5kaWYgLyogZGVmaW5lZChDT05GSUdfQ1BVX01JUFMzMikuLi4gKi8NCkluZGV4 OiBsaW51eC0yLjYvYXJjaC9wb3dlcnBjL2tlcm5lbC9lNTAwLXBtdS5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gbGludXgtMi42Lm9yaWcvYXJjaC9wb3dlcnBjL2tlcm5lbC9lNTAwLXBtdS5jDQorKysgbGlu dXgtMi42L2FyY2gvcG93ZXJwYy9rZXJuZWwvZTUwMC1wbXUuYw0KQEAgLTEyNiw0ICsxMjYsNCBA QCBzdGF0aWMgaW50IGluaXRfZTUwMF9wbXUodm9pZCkNCiAJcmV0dXJuIHJlZ2lzdGVyX2ZzbF9l bWJfcG11KCZlNTAwX3BtdSk7DQogfQ0KIA0KLWFyY2hfaW5pdGNhbGwoaW5pdF9lNTAwX3BtdSk7 DQorcGVyZl9pbml0Y2FsbChpbml0X2U1MDBfcG11KTsNCkluZGV4OiBsaW51eC0yLjYvYXJjaC9w b3dlcnBjL2tlcm5lbC9tcGM3NDUwLXBtdS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGludXgtMi42Lm9y aWcvYXJjaC9wb3dlcnBjL2tlcm5lbC9tcGM3NDUwLXBtdS5jDQorKysgbGludXgtMi42L2FyY2gv cG93ZXJwYy9rZXJuZWwvbXBjNzQ1MC1wbXUuYw0KQEAgLTQxNCw0ICs0MTQsNCBAQCBzdGF0aWMg aW50IGluaXRfbXBjNzQ1MF9wbXUodm9pZCkNCiAJcmV0dXJuIHJlZ2lzdGVyX3Bvd2VyX3BtdSgm bXBjNzQ1MF9wbXUpOw0KIH0NCiANCi1hcmNoX2luaXRjYWxsKGluaXRfbXBjNzQ1MF9wbXUpOw0K K3BlcmZfaW5pdGNhbGwoaW5pdF9tcGM3NDUwX3BtdSk7DQpJbmRleDogbGludXgtMi42L2FyY2gv cG93ZXJwYy9rZXJuZWwvcG93ZXI0LXBtdS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGludXgtMi42Lm9y aWcvYXJjaC9wb3dlcnBjL2tlcm5lbC9wb3dlcjQtcG11LmMNCisrKyBsaW51eC0yLjYvYXJjaC9w b3dlcnBjL2tlcm5lbC9wb3dlcjQtcG11LmMNCkBAIC02MTMsNCArNjEzLDQgQEAgc3RhdGljIGlu dCBpbml0X3Bvd2VyNF9wbXUodm9pZCkNCiAJcmV0dXJuIHJlZ2lzdGVyX3Bvd2VyX3BtdSgmcG93 ZXI0X3BtdSk7DQogfQ0KIA0KLWFyY2hfaW5pdGNhbGwoaW5pdF9wb3dlcjRfcG11KTsNCitwZXJm X2luaXRjYWxsKGluaXRfcG93ZXI0X3BtdSk7DQpJbmRleDogbGludXgtMi42L2FyY2gvcG93ZXJw Yy9rZXJuZWwvcG93ZXI1Ky1wbXUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmlnL2Fy Y2gvcG93ZXJwYy9rZXJuZWwvcG93ZXI1Ky1wbXUuYw0KKysrIGxpbnV4LTIuNi9hcmNoL3Bvd2Vy cGMva2VybmVsL3Bvd2VyNSstcG11LmMNCkBAIC02ODIsNCArNjgyLDQgQEAgc3RhdGljIGludCBp bml0X3Bvd2VyNXBfcG11KHZvaWQpDQogCXJldHVybiByZWdpc3Rlcl9wb3dlcl9wbXUoJnBvd2Vy NXBfcG11KTsNCiB9DQogDQotYXJjaF9pbml0Y2FsbChpbml0X3Bvd2VyNXBfcG11KTsNCitwZXJm X2luaXRjYWxsKGluaXRfcG93ZXI1cF9wbXUpOw0KSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3Bvd2Vy cGMva2VybmVsL3Bvd2VyNS1wbXUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmlnL2Fy Y2gvcG93ZXJwYy9rZXJuZWwvcG93ZXI1LXBtdS5jDQorKysgbGludXgtMi42L2FyY2gvcG93ZXJw Yy9rZXJuZWwvcG93ZXI1LXBtdS5jDQpAQCAtNjIxLDQgKzYyMSw0IEBAIHN0YXRpYyBpbnQgaW5p dF9wb3dlcjVfcG11KHZvaWQpDQogCXJldHVybiByZWdpc3Rlcl9wb3dlcl9wbXUoJnBvd2VyNV9w bXUpOw0KIH0NCiANCi1hcmNoX2luaXRjYWxsKGluaXRfcG93ZXI1X3BtdSk7DQorcGVyZl9pbml0 Y2FsbChpbml0X3Bvd2VyNV9wbXUpOw0KSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3Bvd2VycGMva2Vy bmVsL3Bvd2VyNi1wbXUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvcG93 ZXJwYy9rZXJuZWwvcG93ZXI2LXBtdS5jDQorKysgbGludXgtMi42L2FyY2gvcG93ZXJwYy9rZXJu ZWwvcG93ZXI2LXBtdS5jDQpAQCAtNTQ0LDQgKzU0NCw0IEBAIHN0YXRpYyBpbnQgaW5pdF9wb3dl cjZfcG11KHZvaWQpDQogCXJldHVybiByZWdpc3Rlcl9wb3dlcl9wbXUoJnBvd2VyNl9wbXUpOw0K IH0NCiANCi1hcmNoX2luaXRjYWxsKGluaXRfcG93ZXI2X3BtdSk7DQorcGVyZl9pbml0Y2FsbChp bml0X3Bvd2VyNl9wbXUpOw0KSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3Bvd2VycGMva2VybmVsL3Bv d2VyNy1wbXUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvcG93ZXJwYy9r ZXJuZWwvcG93ZXI3LXBtdS5jDQorKysgbGludXgtMi42L2FyY2gvcG93ZXJwYy9rZXJuZWwvcG93 ZXI3LXBtdS5jDQpAQCAtMzY5LDQgKzM2OSw0IEBAIHN0YXRpYyBpbnQgaW5pdF9wb3dlcjdfcG11 KHZvaWQpDQogCXJldHVybiByZWdpc3Rlcl9wb3dlcl9wbXUoJnBvd2VyN19wbXUpOw0KIH0NCiAN Ci1hcmNoX2luaXRjYWxsKGluaXRfcG93ZXI3X3BtdSk7DQorcGVyZl9pbml0Y2FsbChpbml0X3Bv d2VyN19wbXUpOw0KSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3Bvd2VycGMva2VybmVsL3BwYzk3MC1w bXUuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvcG93ZXJwYy9rZXJuZWwv cHBjOTcwLXBtdS5jDQorKysgbGludXgtMi42L2FyY2gvcG93ZXJwYy9rZXJuZWwvcHBjOTcwLXBt dS5jDQpAQCAtNDk0LDQgKzQ5NCw0IEBAIHN0YXRpYyBpbnQgaW5pdF9wcGM5NzBfcG11KHZvaWQp DQogCXJldHVybiByZWdpc3Rlcl9wb3dlcl9wbXUoJnBwYzk3MF9wbXUpOw0KIH0NCiANCi1hcmNo X2luaXRjYWxsKGluaXRfcHBjOTcwX3BtdSk7DQorcGVyZl9pbml0Y2FsbChpbml0X3BwYzk3MF9w bXUpOw0KSW5kZXg6IGxpbnV4LTIuNi9hcmNoL3NoL2tlcm5lbC9jcHUvc2g0L3BlcmZfZXZlbnQu Yw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTIuNi5vcmlnL2FyY2gvc2gva2VybmVsL2NwdS9zaDQv cGVyZl9ldmVudC5jDQorKysgbGludXgtMi42L2FyY2gvc2gva2VybmVsL2NwdS9zaDQvcGVyZl9l dmVudC5jDQpAQCAtMjUwLDQgKzI1MCw0IEBAIHN0YXRpYyBpbnQgX19pbml0IHNoNzc1MF9wbXVf aW5pdCh2b2lkKQ0KIA0KIAlyZXR1cm4gcmVnaXN0ZXJfc2hfcG11KCZzaDc3NTBfcG11KTsNCiB9 DQotYXJjaF9pbml0Y2FsbChzaDc3NTBfcG11X2luaXQpOw0KK3BlcmZfaW5pdGNhbGwoc2g3NzUw X3BtdV9pbml0KTsNCkluZGV4OiBsaW51eC0yLjYvYXJjaC9zaC9rZXJuZWwvY3B1L3NoNGEvcGVy Zl9ldmVudC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGludXgtMi42Lm9yaWcvYXJjaC9zaC9rZXJuZWwv Y3B1L3NoNGEvcGVyZl9ldmVudC5jDQorKysgbGludXgtMi42L2FyY2gvc2gva2VybmVsL2NwdS9z aDRhL3BlcmZfZXZlbnQuYw0KQEAgLTI4NCw0ICsyODQsNCBAQCBzdGF0aWMgaW50IF9faW5pdCBz aDRhX3BtdV9pbml0KHZvaWQpDQogDQogCXJldHVybiByZWdpc3Rlcl9zaF9wbXUoJnNoNGFfcG11 KTsNCiB9DQotYXJjaF9pbml0Y2FsbChzaDRhX3BtdV9pbml0KTsNCitwZXJmX2luaXRjYWxsKHNo NGFfcG11X2luaXQpOw0K --=-qDJZxd4BVI+FGCa4peLS--