PATCH: move more functions and data into init memory (2.1.89)

Matthias Hanisch (matze@camline.com)
Wed, 11 Mar 1998 10:28:47 +0100 (MET)


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.

---559023410-16838-889608527=:20598
Content-Type: TEXT/PLAIN; charset=US-ASCII

The following patch against 2.1.89 is the result of a walk through the
initialization code dependent on my configuration. It moves about 3500
bytes of code, data and strings into the the init segments (that will be
freed after initialization is done) and so saves 1 page of unswappable
memory in most cases.

It has worked for me for two days with 2.1.89 (also formerly with 2.1.88)
and if I get some success reports I'm going to send it to Linus.

I am not so sure about the best method getting init strings into the
initdata segment. I haven't found a clean method like

"foobar" __initdata

to bring strings directly into .init.data. Maybe we should consider a new
section .rodata.init or something similar for this. Also there are some
string arrays like the kernel command line parameters in init/main.c (or
the SCSI blacklist) that I don't know how to move them into .data.init in
a clean way. Suggestions are welcome!

Let me repeat that the transition to init segments is only done as far as
my configuration is concerned (and this isn't even complete). Surely
there are a lot of code and data fragments that are only used at
initialization time and should be declared for the init sections.

I am going to volunteer and collect these patches for inclusion into the
kernel.

Have fun,
Matze

--
Matthias Hanisch    gesch.: matze@camline.com    priv.: matze@pingu.franken.de
                            +49 8137 935-219            +49 8441 82387

"Modell 10 - Software from Experts for Experts"

---559023410-16838-889608527=:20598 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-init-v4 Content-Transfer-Encoding: BASE64 Content-ID: <Pine.SCO.3.96.980311102847.20598B@cam8.camline.com> Content-Description:

ZGlmZiAtcnUgLS1uZXctZmlsZSBsaW51eC0yLjEuODktdmFuaWxsYS9hcmNo L2kzODYva2VybmVsL3NldHVwLmMgbGludXgvYXJjaC9pMzg2L2tlcm5lbC9z ZXR1cC5jDQotLS0gbGludXgtMi4xLjg5LXZhbmlsbGEvYXJjaC9pMzg2L2tl cm5lbC9zZXR1cC5jCVR1ZSBNYXIgIDMgMTU6MDE6MDcgMTk5OA0KKysrIGxp bnV4L2FyY2gvaTM4Ni9rZXJuZWwvc2V0dXAuYwlUdWUgTWFyICAzIDEyOjI0 OjE5IDE5OTgNCkBAIC0xMDcsNyArMTA3LDcgQEANCiAjZGVmaW5lIFJBTURJ U0tfUFJPTVBUX0ZMQUcJCTB4ODAwMA0KICNkZWZpbmUgUkFNRElTS19MT0FE X0ZMQUcJCTB4NDAwMAkNCiANCi1zdGF0aWMgY2hhciBjb21tYW5kX2xpbmVb Q09NTUFORF9MSU5FX1NJWkVdID0geyAwLCB9Ow0KK3N0YXRpYyBjaGFyIGNv bW1hbmRfbGluZVtDT01NQU5EX0xJTkVfU0laRV0gX19pbml0ZGF0YSA9IHsg MCwgfTsNCiAgICAgICAgY2hhciBzYXZlZF9jb21tYW5kX2xpbmVbQ09NTUFO RF9MSU5FX1NJWkVdOw0KIA0KIF9faW5pdGZ1bmModm9pZCBzZXR1cF9hcmNo KGNoYXIgKipjbWRsaW5lX3AsDQpkaWZmIC1ydSAtLW5ldy1maWxlIGxpbnV4 LTIuMS44OS12YW5pbGxhL2FyY2gvaTM4Ni9rZXJuZWwvdGltZS5jIGxpbnV4 L2FyY2gvaTM4Ni9rZXJuZWwvdGltZS5jDQotLS0gbGludXgtMi4xLjg5LXZh bmlsbGEvYXJjaC9pMzg2L2tlcm5lbC90aW1lLmMJVGh1IEphbiAyOSAwMTow MToxMyAxOTk4DQorKysgbGludXgvYXJjaC9pMzg2L2tlcm5lbC90aW1lLmMJ VHVlIE1hciAgMyAxMjoyNDoxOSAxOTk4DQpAQCAtNDc3LDcgKzQ3NywxMiBA QA0KIH0NCiANCiAvKiBub3Qgc3RhdGljOiBuZWVkZWQgYnkgQVBNICovDQor LyogYnV0IGlmIEFQTSBpcyBub3QgZGVmaW5lZCB0aGlzIGlzIGp1c3QgY2Fs bGVkIG9uY2UgYXQgaW5pdCEgKi8NCisjaWZkZWYgQ09ORklHX0FQTQ0KIHVu c2lnbmVkIGxvbmcgZ2V0X2Ntb3NfdGltZSh2b2lkKQ0KKyNlbHNlDQorX19p bml0ZnVuYyh1bnNpZ25lZCBsb25nIGdldF9jbW9zX3RpbWUodm9pZCkpDQor I2VuZGlmDQogew0KIAl1bnNpZ25lZCBpbnQgeWVhciwgbW9uLCBkYXksIGhv dXIsIG1pbiwgc2VjOw0KIAlpbnQgaTsNCmRpZmYgLXJ1IC0tbmV3LWZpbGUg bGludXgtMi4xLjg5LXZhbmlsbGEvYXJjaC9pMzg2L21tL2luaXQuYyBsaW51 eC9hcmNoL2kzODYvbW0vaW5pdC5jDQotLS0gbGludXgtMi4xLjg5LXZhbmls bGEvYXJjaC9pMzg2L21tL2luaXQuYwlUaHUgSmFuIDIyIDA2OjI4OjU1IDE5 OTgNCisrKyBsaW51eC9hcmNoL2kzODYvbW0vaW5pdC5jCVR1ZSBNYXIgIDMg MTM6NDE6NDkgMTk5OA0KQEAgLTI2NSwxMiArMjY1LDE5IEBADQogICogYmVm b3JlIGFuZCBhZnRlciB0aGUgdGVzdCBhcmUgaGVyZSB0byB3b3JrLWFyb3Vu ZCBzb21lIG5hc3R5IENQVSBidWdzLg0KICAqLw0KIA0KK3N0YXRpYyBjaGFy IHdwbXNnW10gX19pbml0ZGF0YSA9DQorCSJDaGVja2luZyBpZiB0aGlzIHBy b2Nlc3NvciBob25vdXJzIHRoZSBXUCBiaXQgZXZlbiBpbiBzdXBlcnZpc29y IG1vZGUuLi4gIjsNCisjaWZuZGVmIENPTkZJR19NMzg2DQorc3RhdGljIGNo YXIgYnJva2Vud3Btc2dbXSBfX2luaXRkYXRhID0gDQorCSJUaGlzIGtlcm5l bCBkb2Vzbid0IHN1cHBvcnQgQ1BVJ3Mgd2l0aCBicm9rZW4gV1AuIFJlY29t cGlsZSBpdCBmb3IgYSAzODYhIjsNCisjZW5kaWYNCisNCiBfX2luaXRmdW5j KHZvaWQgdGVzdF93cF9iaXQodm9pZCkpDQogew0KIAl1bnNpZ25lZCBjaGFy IHRtcF9yZWc7DQogCXVuc2lnbmVkIGxvbmcgb2xkID0gcGcwWzBdOw0KIA0K LQlwcmludGsoIkNoZWNraW5nIGlmIHRoaXMgcHJvY2Vzc29yIGhvbm91cnMg dGhlIFdQIGJpdCBldmVuIGluIHN1cGVydmlzb3IgbW9kZS4uLiAiKTsNCisJ cHJpbnRrKHdwbXNnKTsNCiAJcGcwWzBdID0gcHRlX3ZhbChta19wdGUoUEFH RV9PRkZTRVQsIFBBR0VfUkVBRE9OTFkpKTsNCiAJbG9jYWxfZmx1c2hfdGxi KCk7DQogCWN1cnJlbnQtPm1tLT5tbWFwLT52bV9zdGFydCArPSBQQUdFX1NJ WkU7DQpAQCAtMjkwLDEyICsyOTcsMTUgQEANCiAJCWJvb3RfY3B1X2RhdGEu d3Bfd29ya3Nfb2sgPSAwOw0KIAkJcHJpbnRrKCJOby5cbiIpOw0KICNpZm5k ZWYgQ09ORklHX00zODYNCi0JCXBhbmljKCJUaGlzIGtlcm5lbCBkb2Vzbid0 IHN1cHBvcnQgQ1BVJ3Mgd2l0aCBicm9rZW4gV1AuIFJlY29tcGlsZSBpdCBm b3IgYSAzODYhIik7DQorCQlwYW5pYyhicm9rZW53cG1zZyk7DQogI2VuZGlm DQogCX0gZWxzZQ0KIAkJcHJpbnRrKCIuXG4iKTsNCiB9DQogDQorc3RhdGlj IGNoYXIgbWVtbXNnW10gX19pbml0ZGF0YSA9DQorCSJNZW1vcnk6ICVsdWsv JWx1ayBhdmFpbGFibGUgKCVkayBrZXJuZWwgY29kZSwgJWRrIHJlc2VydmVk LCAlZGsgZGF0YSwgJWRrIGluaXQpXG4iOw0KKw0KIF9faW5pdGZ1bmModm9p ZCBtZW1faW5pdCh1bnNpZ25lZCBsb25nIHN0YXJ0X21lbSwgdW5zaWduZWQg bG9uZyBlbmRfbWVtKSkNCiB7DQogCXVuc2lnbmVkIGxvbmcgc3RhcnRfbG93 X21lbSA9IFBBR0VfU0laRTsNCkBAIC0zNjcsNyArMzc3LDcgQEANCiAjZW5k aWYNCiAJCQlmcmVlX3BhZ2UodG1wKTsNCiAJfQ0KLQlwcmludGsoIk1lbW9y eTogJWx1ay8lbHVrIGF2YWlsYWJsZSAoJWRrIGtlcm5lbCBjb2RlLCAlZGsg cmVzZXJ2ZWQsICVkayBkYXRhLCAlZGsgaW5pdClcbiIsDQorCXByaW50ayht ZW1tc2csDQogCQkodW5zaWduZWQgbG9uZykgbnJfZnJlZV9wYWdlcyA8PCAo UEFHRV9TSElGVC0xMCksDQogCQltYXhfbWFwbnIgPDwgKFBBR0VfU0hJRlQt MTApLA0KIAkJY29kZXBhZ2VzIDw8IChQQUdFX1NISUZULTEwKSwNCmRpZmYg LXJ1IC0tbmV3LWZpbGUgbGludXgtMi4xLjg5LXZhbmlsbGEvZHJpdmVycy9j aGFyL2NvbnNvbGUuYyBsaW51eC9kcml2ZXJzL2NoYXIvY29uc29sZS5jDQot LS0gbGludXgtMi4xLjg5LXZhbmlsbGEvZHJpdmVycy9jaGFyL2NvbnNvbGUu YwlGcmkgRmViIDIwIDA0OjU1OjI2IDE5OTgNCisrKyBsaW51eC9kcml2ZXJz L2NoYXIvY29uc29sZS5jCVR1ZSBNYXIgIDMgMTI6MjQ6MTkgMTk5OA0KQEAg LTQzMCw3ICs0MzAsNyBAQA0KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGhhcmRz Y3JvbGxfZW5hYmxlZDsNCiBzdGF0aWMgdW5zaWduZWQgY2hhciBoYXJkc2Ny b2xsX2Rpc2FibGVkX2J5X2luaXQgPSAwOw0KIA0KLXZvaWQgbm9fc2Nyb2xs KGNoYXIgKnN0ciwgaW50ICppbnRzKQ0KK19faW5pdGZ1bmModm9pZCBub19z Y3JvbGwoY2hhciAqc3RyLCBpbnQgKmludHMpKQ0KIHsNCiAgIC8qDQogICAg KiBEaXNhYmxpbmcgc2Nyb2xsYmFjayBpcyByZXF1aXJlZCBmb3IgdGhlIEJy YWlsbGV4IGliODAtcGllem8NCmRpZmYgLXJ1IC0tbmV3LWZpbGUgbGludXgt Mi4xLjg5LXZhbmlsbGEvZHJpdmVycy9jaGFyL3R0eV9pby5jIGxpbnV4L2Ry aXZlcnMvY2hhci90dHlfaW8uYw0KLS0tIGxpbnV4LTIuMS44OS12YW5pbGxh L2RyaXZlcnMvY2hhci90dHlfaW8uYwlUdWUgTWFyICAzIDE1OjAxOjEzIDE5 OTgNCisrKyBsaW51eC9kcml2ZXJzL2NoYXIvdHR5X2lvLmMJVHVlIE1hciAg MyAxMjoyNDoxOSAxOTk4DQpAQCAtMTkzMCw3ICsxOTMwLDcgQEANCiAgKiBK dXN0IGRvIHNvbWUgZWFybHkgaW5pdGlhbGl6YXRpb25zLCBhbmQgZG8gdGhl IGNvbXBsZXggc2V0dXANCiAgKiBsYXRlci4NCiAgKi8NCi1sb25nIGNvbnNv bGVfaW5pdChsb25nIGttZW1fc3RhcnQsIGxvbmcga21lbV9lbmQpDQorX19p bml0ZnVuYyhsb25nIGNvbnNvbGVfaW5pdChsb25nIGttZW1fc3RhcnQsIGxv bmcga21lbV9lbmQpKQ0KIHsNCiAJLyogU2V0dXAgdGhlIGRlZmF1bHQgVFRZ IGxpbmUgZGlzY2lwbGluZS4gKi8NCiAJbWVtc2V0KGxkaXNjcywgMCwgc2l6 ZW9mKGxkaXNjcykpOw0KZGlmZiAtcnUgLS1uZXctZmlsZSBsaW51eC0yLjEu ODktdmFuaWxsYS9kcml2ZXJzL3Njc2kvYWhhMTU0Mi5jIGxpbnV4L2RyaXZl cnMvc2NzaS9haGExNTQyLmMNCi0tLSBsaW51eC0yLjEuODktdmFuaWxsYS9k cml2ZXJzL3Njc2kvYWhhMTU0Mi5jCVRodSBKYW4gMjIgMDY6Mjc6MDkgMTk5 OA0KKysrIGxpbnV4L2RyaXZlcnMvc2NzaS9haGExNTQyLmMJVHVlIE1hciAg MyAxMjoyNDoyMCAxOTk4DQpAQCAtMjgsNiArMjgsNyBAQA0KICNpbmNsdWRl IDxsaW51eC9kZWxheS5oPg0KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0K ICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+DQorI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4NCiAjaW5jbHVkZSA8YXNtL2RtYS5oPg0KICNpbmNsdWRlIDxh c20vc3lzdGVtLmg+DQogI2luY2x1ZGUgPGFzbS9pby5oPg0KQEAgLTg3MSwy NSArODcyLDM1IEBADQogfQ0KIA0KIC8qIGNhbGxlZCBmcm9tIGluaXQvbWFp bi5jICovDQotdm9pZCBhaGExNTQyX3NldHVwKCBjaGFyICpzdHIsIGludCAq aW50cykNCitzdGF0aWMgY2hhciBhaGF1c2FnZVtdIF9faW5pdGRhdGEgPQ0K KwkiYWhhMTU0MjogdXNhZ2U6IGFoYTE1NDI9PFBPUlRCQVNFPlssPEJVU09O Piw8QlVTT0ZGPlssPERNQVNQRUVEPl1dXG4iOw0KK3N0YXRpYyBjaGFyIHRv b21hbnltc2dbXSBfX2luaXRkYXRhID0NCisJImFoYTE1NDI6IGFoYTE1NDJf c2V0dXAgY2FsbGVkIHRvbyBtYW55IHRpbWVzISBCYWQgTElMTyBwYXJhbXMg P1xuIjsNCitzdGF0aWMgY2hhciB3cm9uZ3Bhcm1zZ1tdIF9faW5pdGRhdGEg PQ0KKwkiYWhhMTU0MjogV3JvbmcgcGFyYW1ldGVycyBtYXkgY2F1c2Ugc3lz dGVtIG1hbGZ1bmN0aW9uLi4gV2UgdHJ5IGFueXdheS4uXG4iOw0KK3N0YXRp YyBjaGFyIGRtYXNwZWVkbXNnW10gX19pbml0ZGF0YSA9DQorCSJhaGExNTQy OiBWYWxpZCB2YWx1ZXMgZm9yIERNQVNQRUVEIGFyZSA1LTgsIDEwIE1CL3Mu ICBVc2luZyBqdW1wZXIgZGVmYXVsdHMuXG4iOw0KK3N0YXRpYyBjaGFyIGVu dHJ5bGluZW1zZ1tdIF9faW5pdGRhdGEgPQ0KKwkiICAgRW50cnlsaW5lIDE6 ICVzXG4gICBFbnRyeWxpbmUgMjogJXNcbiAgIFRoaXMgbGluZTogICAlc1xu IjsNCitzdGF0aWMgY2hhciBhaGExNTQybXNnW10gX19pbml0ZGF0YSA9DQor CSJhaGExNTQyOiAlc1xuIjsNCisNCitfX2luaXRmdW5jKHZvaWQgYWhhMTU0 Ml9zZXR1cCggY2hhciAqc3RyLCBpbnQgKmludHMpKQ0KIHsNCi0gICAgY29u c3QgY2hhciAqYWhhdXNhZ2UgPSAiYWhhMTU0MjogdXNhZ2U6IGFoYTE1NDI9 PFBPUlRCQVNFPlssPEJVU09OPiw8QlVTT0ZGPlssPERNQVNQRUVEPl1dXG4i Ow0KICAgICBzdGF0aWMgaW50IHNldHVwX2lkeCA9IDA7DQogICAgIGludCBz ZXR1cF9wb3J0YmFzZTsNCiANCiAgICAgaWYoc2V0dXBfaWR4ID49IE1BWEJP QVJEUykNCiAgICAgICB7DQotCXByaW50aygiYWhhMTU0MjogYWhhMTU0Ml9z ZXR1cCBjYWxsZWQgdG9vIG1hbnkgdGltZXMhIEJhZCBMSUxPIHBhcmFtcyA/ XG4iKTsNCi0JcHJpbnRrKCIgICBFbnRyeWxpbmUgMTogJXNcbiIsc2V0dXBf c3RyWzBdKTsNCi0JcHJpbnRrKCIgICBFbnRyeWxpbmUgMjogJXNcbiIsc2V0 dXBfc3RyWzFdKTsNCi0JcHJpbnRrKCIgICBUaGlzIGxpbmU6ICAgJXNcbiIs c3RyKTsNCisJcHJpbnRrKHRvb21hbnltc2cpOw0KKwlwcmludGsoZW50cnls aW5lbXNnLCBzZXR1cF9zdHJbMF0sIHNldHVwX3N0clsxXSwgc3RyKTsNCiAJ cmV0dXJuOw0KICAgICAgIH0NCiAgICAgaWYgKGludHNbMF0gPCAxIHx8IGlu dHNbMF0gPiA0KQ0KICAgICAgIHsNCi0JcHJpbnRrKCJhaGExNTQyOiAlc1xu Iiwgc3RyICk7DQorCXByaW50ayhhaGExNTQybXNnLCBzdHIgKTsNCiAJcHJp bnRrKGFoYXVzYWdlKTsNCi0JcHJpbnRrKCJhaGExNTQyOiBXcm9uZyBwYXJh bWV0ZXJzIG1heSBjYXVzZSBzeXN0ZW0gbWFsZnVuY3Rpb24uLiBXZSB0cnkg YW55d2F5Li5cbiIpOw0KKwlwcmludGsod3JvbmdwYXJtc2cpOw0KICAgICAg IH0NCiANCiAgICAgc2V0dXBfY2FsbGVkW3NldHVwX2lkeF09aW50c1swXTsN CkBAIC05MTcsOSArOTI4LDkgQEANCiAJICAgIGF0YnQgPSAweDAzOw0KIAkg ICAgYnJlYWs7DQogCWRlZmF1bHQ6DQotCSAgICBwcmludGsoImFoYTE1NDI6 ICVzXG4iLCBzdHIgKTsNCisJICAgIHByaW50ayhhaGExNTQybXNnLCBzdHIg KTsNCiAJICAgIHByaW50ayhhaGF1c2FnZSk7DQotCSAgICBwcmludGsoImFo YTE1NDI6IFZhbGlkIHZhbHVlcyBmb3IgRE1BU1BFRUQgYXJlIDUtOCwgMTAg TUIvcy4gIFVzaW5nIGp1bXBlciBkZWZhdWx0cy5cbiIpOw0KKwkgICAgcHJp bnRrKGRtYXNwZWVkbXNnKTsNCiAJICAgIGJyZWFrOw0KICAgICAgIH0NCiAg ICAgICBzZXR1cF9kbWFzcGVlZFtzZXR1cF9pZHhdICA9IGF0YnQ7DQpkaWZm IC1ydSAtLW5ldy1maWxlIGxpbnV4LTIuMS44OS12YW5pbGxhL2RyaXZlcnMv c2NzaS9zY3NpLmMgbGludXgvZHJpdmVycy9zY3NpL3Njc2kuYw0KLS0tIGxp bnV4LTIuMS44OS12YW5pbGxhL2RyaXZlcnMvc2NzaS9zY3NpLmMJVHVlIE1h ciAgMyAxNTowMToxOSAxOTk4DQorKysgbGludXgvZHJpdmVycy9zY3NpL3Nj c2kuYwlUdWUgTWFyICAzIDE4OjAyOjQ5IDE5OTgNCkBAIC0xNTUsNyArMTU1 LDcgQEANCiAjZW5kaWYNCiANCiANCi1jb25zdCBjaGFyICpjb25zdCBzY3Np X2RldmljZV90eXBlc1tNQVhfU0NTSV9ERVZJQ0VfQ09ERV0gPQ0KK2NvbnN0 IGNoYXIgKmNvbnN0IHNjc2lfZGV2aWNlX3R5cGVzW01BWF9TQ1NJX0RFVklD RV9DT0RFXSBfX2luaXRkYXRhID0NCiB7DQogICAgICJEaXJlY3QtQWNjZXNz ICAgICIsDQogICAgICJTZXF1ZW50aWFsLUFjY2VzcyIsDQpAQCAtMjE1LDcg KzIxNSw3IEBADQogICogaGFzIGJlZW4gZXhwYW5kZWQgc28gdGhhdCB3ZSBj YW4gc3BlY2lmeSBvdGhlciB0eXBlcyBvZiB0aGluZ3Mgd2UNCiAgKiBuZWVk IHRvIGJlIGF3YXJlIG9mLg0KICAqLw0KLXN0YXRpYyBzdHJ1Y3QgZGV2X2lu Zm8gZGV2aWNlX2xpc3RbXSA9DQorc3RhdGljIHN0cnVjdCBkZXZfaW5mbyBk ZXZpY2VfbGlzdFtdIF9faW5pdGRhdGEgPQ0KIHsNCiB7IkFhc2hpbWEiLCJJ TUFHRVJZIDI0MDBTUCIsIjEuMDMiLEJMSVNUX05PTFVOfSwvKiBMb2NrcyB1 cCBpZiBwb2xsZWQgZm9yIGx1biAhPSAwICovDQogeyJDSElOT04iLCJDRC1S T00gQ0RTLTQzMSIsIkg0MiIsIEJMSVNUX05PTFVOfSwgLyogTG9ja3MgdXAg aWYgcG9sbGVkIGZvciBsdW4gIT0gMCAqLw0KQEAgLTI4NSw3ICsyODUsOCBA QA0KIHtOVUxMLCBOVUxMLCBOVUxMfQ0KIH07DQogDQotc3RhdGljIGludCBn ZXRfZGV2aWNlX2ZsYWdzKHVuc2lnbmVkIGNoYXIgKiByZXNwb25zZV9kYXRh KXsNCitfX2luaXRmdW5jKHN0YXRpYyBpbnQgZ2V0X2RldmljZV9mbGFncyh1 bnNpZ25lZCBjaGFyICogcmVzcG9uc2VfZGF0YSkpDQorew0KICAgICBpbnQg aSA9IDA7DQogICAgIHVuc2lnbmVkIGNoYXIgKiBwbnQ7DQogICAgIGZvcihp PTA7IDE7IGkrKyl7DQpAQCAtMzk2LDExICszOTcsMTMgQEANCiAJdXAoU0Nw bnQtPnJlcXVlc3Quc2VtKTsNCiB9DQogDQotdm9pZCBzY3NpX2xvZ2dpbmdf c2V0dXAoY2hhciAqc3RyLCBpbnQgKmludHMpIA0KK3N0YXRpYyBjaGFyIGxv Z2dpbmdtc2dbXSBfX2luaXRkYXRhID0NCisJInNjc2lfbG9nZ2luZ19zZXR1 cCA6IHVzYWdlIHNjc2lfbG9nZ2luZ19sZXZlbD1uIChuIHNob3VsZCBiZSAw IG9yIG5vbi16ZXJvKVxuIjsNCisNCitfX2luaXRmdW5jKHZvaWQgc2NzaV9s b2dnaW5nX3NldHVwKGNoYXIgKnN0ciwgaW50ICppbnRzKSkNCiB7DQogICAg IGlmIChpbnRzWzBdICE9IDEpIHsNCi0JcHJpbnRrKCJzY3NpX2xvZ2dpbmdf c2V0dXAgOiB1c2FnZSBzY3NpX2xvZ2dpbmdfbGV2ZWw9biAiDQotICAgICAg ICAgICAgICAgIihuIHNob3VsZCBiZSAwIG9yIG5vbi16ZXJvKVxuIik7DQor CXByaW50ayhsb2dnaW5nbXNnKTsNCiAgICAgfSBlbHNlIHsNCiAJc2NzaV9s b2dnaW5nX2xldmVsID0gKGludHNbMV0pPyB+MCA6IDA7DQogICAgIH0NCkBA IC00MTIsMTAgKzQxNSwxMyBAQA0KIHN0YXRpYyBpbnQgbWF4X3Njc2lfbHVu cyA9IDE7DQogI2VuZGlmDQogDQotdm9pZCBzY3NpX2x1bnNfc2V0dXAoY2hh ciAqc3RyLCBpbnQgKmludHMpIA0KK3N0YXRpYyBjaGFyIGx1bnNtc2dbXSBf X2luaXRkYXRhID0NCisJInNjc2lfbHVuc19zZXR1cCA6IHVzYWdlIG1heF9z Y3NpX2x1bnM9biAobiBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCA4KVxuIjsN CisNCitfX2luaXRmdW5jKHZvaWQgc2NzaV9sdW5zX3NldHVwKGNoYXIgKnN0 ciwgaW50ICppbnRzKSkNCiB7DQogICAgIGlmIChpbnRzWzBdICE9IDEpDQot CXByaW50aygic2NzaV9sdW5zX3NldHVwIDogdXNhZ2UgbWF4X3Njc2lfbHVu cz1uIChuIHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDgpXG4iKTsNCisJcHJp bnRrKGx1bnNtc2cpOw0KICAgICBlbHNlDQogCW1heF9zY3NpX2x1bnMgPSBp bnRzWzFdOw0KIH0NCkBAIC00MjcsMTEgKzQzMywxMSBAQA0KICAqICBsdW4g YWRkcmVzcyBvZiBhbGwgc2VxdWVudGlhbCBkZXZpY2VzIHRvIHRoZSB0YXBl IGRyaXZlciwgYWxsIHJhbmRvbQ0KICAqICBkZXZpY2VzIHRvIHRoZSBkaXNr IGRyaXZlci4NCiAgKi8NCi1zdGF0aWMgdm9pZCBzY2FuX3Njc2lzIChzdHJ1 Y3QgU2NzaV9Ib3N0ICpzaHBudCwgDQorX19pbml0ZnVuYyhzdGF0aWMgdm9p ZCBzY2FuX3Njc2lzIChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaHBudCwgDQogICAg ICAgICAgICAgICAgICAgICAgICAgdW5jaGFyIGhhcmRjb2RlZCwNCiAgICAg ICAgICAgICAgICAgICAgICAgICB1bmNoYXIgaGNoYW5uZWwsIA0KICAgICAg ICAgICAgICAgICAgICAgICAgIHVuY2hhciBoaWQsIA0KLSAgICAgICAgICAg ICAgICAgICAgICAgIHVuY2hhciBobHVuKQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgIHVuY2hhciBobHVuKSkNCiB7DQogICBpbnQgICAgICAgICAgICAg Y2hhbm5lbDsNCiAgIGludCAgICAgICAgICAgICBkZXY7DQpAQCAtNjExLDkg KzYxNyw5IEBADQogICogUmV0dXJuaW5nIDAgbWVhbnMgUGxlYXNlIGRvbid0 IGFzayBmdXJ0aGVyIGZvciBsdW4hPTAsIDEgbWVhbnMgT0sgZ28gb24uDQog ICogR2xvYmFsIHZhcmlhYmxlcyB1c2VkIDogc2NzaV9kZXZpY2VzKGxpbmtl ZCBsaXN0KQ0KICAqLw0KLWludCBzY2FuX3Njc2lzX3NpbmdsZSAoaW50IGNo YW5uZWwsIGludCBkZXYsIGludCBsdW4sIGludCAqbWF4X2Rldl9sdW4sDQor X19pbml0ZnVuYyhzdGF0aWMgaW50IHNjYW5fc2NzaXNfc2luZ2xlIChpbnQg Y2hhbm5lbCwgaW50IGRldiwgaW50IGx1biwgaW50ICptYXhfZGV2X2x1biwN CiAgICAgaW50ICpzcGFyc2VfbHVuLCBTY3NpX0RldmljZSAqKlNEcG50Miwg U2NzaV9DbW5kICogU0NwbnQsDQotICAgIHN0cnVjdCBTY3NpX0hvc3QgKiBz aHBudCwgY2hhciAqc2NzaV9yZXN1bHQpDQorICAgIHN0cnVjdCBTY3NpX0hv c3QgKiBzaHBudCwgY2hhciAqc2NzaV9yZXN1bHQpKQ0KIHsNCiAgIHVuc2ln bmVkIGNoYXIgc2NzaV9jbWRbMTJdOw0KICAgc3RydWN0IFNjc2lfRGV2aWNl X1RlbXBsYXRlICpzZHRwbnQ7DQpAQCAtMjA1NSw3ICsyMDYxLDcgQEANCiB9 DQogI2VuZGlmIC8qIE1PRFVMRSAqLyAgIC8qIH0gKi8NCiANCi1zdGF0aWMg dm9pZCBwcmludF9pbnF1aXJ5KHVuc2lnbmVkIGNoYXIgKmRhdGEpDQorX19p bml0ZnVuYyhzdGF0aWMgdm9pZCBwcmludF9pbnF1aXJ5KHVuc2lnbmVkIGNo YXIgKmRhdGEpKQ0KIHsNCiAgICAgaW50IGk7DQogDQpkaWZmIC1ydSAtLW5l dy1maWxlIGxpbnV4LTIuMS44OS12YW5pbGxhL2ZzL2J1ZmZlci5jIGxpbnV4 L2ZzL2J1ZmZlci5jDQotLS0gbGludXgtMi4xLjg5LXZhbmlsbGEvZnMvYnVm ZmVyLmMJVHVlIE1hciAgMyAxNTowMToyNCAxOTk4DQorKysgbGludXgvZnMv YnVmZmVyLmMJVHVlIE1hciAgMyAxMjoyNDoyMSAxOTk4DQpAQCAtMzgsNiAr MzgsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4NCiAjaW5jbHVk ZSA8bGludXgvc3lzcnEuaD4NCiAjaW5jbHVkZSA8bGludXgvZmlsZS5oPg0K KyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQogDQogI2luY2x1ZGUgPGFzbS9z eXN0ZW0uaD4NCiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4NCkBAIC0xNjk4 LDE3ICsxNjk5LDIyIEBADQogDQogLyogPT09PT09PT09PT09PT09PT09PT09 IEluaXQgPT09PT09PT09PT09PT09PT09PT09PT0gKi8NCiANCitzdGF0aWMg Y2hhciBoYXNocGFuaWNtc2dbXSBfX2luaXRkYXRhID0NCisJIkZhaWxlZCB0 byBhbGxvY2F0ZSBidWZmZXIgaGFzaCB0YWJsZVxuIjsNCitzdGF0aWMgY2hh ciBiaHBhbmljbXNnW10gX19pbml0ZGF0YSA9DQorCSJDYW5ub3QgY3JlYXRl IGJ1ZmZlciBoZWFkIFNMQUIgY2FjaGVcbiI7DQorDQogLyoNCiAgKiBhbGxv Y2F0ZSB0aGUgaGFzaCB0YWJsZSBhbmQgaW5pdCB0aGUgZnJlZSBsaXN0DQog ICogVXNlIGdmcCgpIGZvciB0aGUgaGFzaCB0YWJsZSB0byBkZWNyZWFzZSBU TEIgbWlzc2VzLCB1c2UNCiAgKiBTTEFCIGNhY2hlIGZvciBidWZmZXIgaGVh ZHMuDQogICovDQotdm9pZCBidWZmZXJfaW5pdCh2b2lkKQ0KK19faW5pdGZ1 bmModm9pZCBidWZmZXJfaW5pdCh2b2lkKSkNCiB7DQogCWhhc2hfdGFibGUg PSAoc3RydWN0IGJ1ZmZlcl9oZWFkICoqKQ0KIAkJX19nZXRfZnJlZV9wYWdl cyhHRlBfQVRPTUlDLCBIQVNIX1BBR0VTX09SREVSKTsNCiAJaWYgKCFoYXNo X3RhYmxlKQ0KLQkJcGFuaWMoIkZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIg aGFzaCB0YWJsZVxuIik7DQorCQlwYW5pYyhoYXNocGFuaWNtc2cpOw0KIAlt ZW1zZXQoaGFzaF90YWJsZSwwLE5SX0hBU0gqc2l6ZW9mKHN0cnVjdCBidWZm ZXJfaGVhZCAqKSk7DQogDQogCWJoX2NhY2hlcCA9IGttZW1fY2FjaGVfY3Jl YXRlKCJidWZmZXJfaGVhZCIsDQpAQCAtMTcxNiw3ICsxNzIyLDcgQEANCiAJ CQkJICAgICAgMCwNCiAJCQkJICAgICAgU0xBQl9IV0NBQ0hFX0FMSUdOLCBO VUxMLCBOVUxMKTsNCiAJaWYoIWJoX2NhY2hlcCkNCi0JCXBhbmljKCJDYW5u b3QgY3JlYXRlIGJ1ZmZlciBoZWFkIFNMQUIgY2FjaGVcbiIpOw0KKwkJcGFu aWMoYmhwYW5pY21zZyk7DQogCS8qDQogCSAqIEFsbG9jYXRlIHRoZSByZXNl cnZlZCBidWZmZXIgaGVhZHMuDQogCSAqLw0KZGlmZiAtcnUgLS1uZXctZmls ZSBsaW51eC0yLjEuODktdmFuaWxsYS9mcy9maWxlX3RhYmxlLmMgbGludXgv ZnMvZmlsZV90YWJsZS5jDQotLS0gbGludXgtMi4xLjg5LXZhbmlsbGEvZnMv ZmlsZV90YWJsZS5jCVN1biBPY3QgMTIgMTk6MTA6NDAgMTk5Nw0KKysrIGxp bnV4L2ZzL2ZpbGVfdGFibGUuYwlUdWUgTWFyICAzIDEyOjI0OjIxIDE5OTgN CkBAIC0xMyw2ICsxMyw3IEBADQogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5o Pg0KICNpbmNsdWRlIDxsaW51eC9tbS5oPg0KICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+DQorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCiANCiAvKiBTTEFC IGNhY2hlIGZvciBmaWxwJ3MuICovDQogc3RhdGljIGttZW1fY2FjaGVfdCAq ZmlscF9jYWNoZTsNCkBAIC00NSwxNCArNDYsMTYgQEANCiAJZmlsZS0+Zl9w cHJldiA9ICZpbnVzZV9maWxwczsNCiB9DQogDQotLyogTi5CLiBUaGlzIHNo b3VsZCBiZSBhbiBfX2luaXRmdW5jIC4uLiAqLw0KLXZvaWQgZmlsZV90YWJs ZV9pbml0KHZvaWQpDQorc3RhdGljIGNoYXIgZmlscHBhbmljbXNnW10gX19p bml0ZGF0YSA9DQorCSJWRlM6IENhbm5vdCBhbGxvYyBmaWxwIFNMQUIgY2Fj aGUuIjsNCisNCitfX2luaXRmdW5jKHZvaWQgZmlsZV90YWJsZV9pbml0KHZv aWQpKQ0KIHsNCiAJZmlscF9jYWNoZSA9IGttZW1fY2FjaGVfY3JlYXRlKCJm aWxwIiwgc2l6ZW9mKHN0cnVjdCBmaWxlKSwNCiAJCQkJICAgICAgIDAsDQog CQkJCSAgICAgICBTTEFCX0hXQ0FDSEVfQUxJR04sIE5VTEwsIE5VTEwpOw0K IAlpZighZmlscF9jYWNoZSkNCi0JCXBhbmljKCJWRlM6IENhbm5vdCBhbGxv YyBmaWxwIFNMQUIgY2FjaGUuIik7DQorCQlwYW5pYyhmaWxwcGFuaWNtc2cp Ow0KIAkvKg0KIAkgKiBXZSBjb3VsZCBhbGxvY2F0ZSB0aGUgcmVzZXJ2ZWQg ZmlsZXMgaGVyZSwgYnV0IHJlYWxseQ0KIAkgKiBzaG91bGRuJ3QgbmVlZCB0 bzogdGhlIG5vcm1hbCBib290IHByb2Nlc3Mgd2lsbCBjcmVhdGUNCmRpZmYg LXJ1IC0tbmV3LWZpbGUgbGludXgtMi4xLjg5LXZhbmlsbGEvZnMvaW5vZGUu YyBsaW51eC9mcy9pbm9kZS5jDQotLS0gbGludXgtMi4xLjg5LXZhbmlsbGEv ZnMvaW5vZGUuYwlUdWUgTWFyICAzIDE1OjAxOjI1IDE5OTgNCisrKyBsaW51 eC9mcy9pbm9kZS5jCVR1ZSBNYXIgIDMgMTI6MjQ6MjEgMTk5OA0KQEAgLTgs NiArOCw3IEBADQogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPg0KICNpbmNs dWRlIDxsaW51eC9tbS5oPg0KICNpbmNsdWRlIDxsaW51eC9kY2FjaGUuaD4N CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KIA0KIC8qDQogICogTmV3IGlu b2RlLmMgaW1wbGVtZW50YXRpb24uDQpAQCAtNzMzLDcgKzczNCw3IEBADQog LyoNCiAgKiBJbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlcw0KICAqLw0KLXZv aWQgaW5vZGVfaW5pdCh2b2lkKQ0KK19faW5pdGZ1bmModm9pZCBpbm9kZV9p bml0KHZvaWQpKQ0KIHsNCiAJaW50IGk7DQogCXN0cnVjdCBsaXN0X2hlYWQg KmhlYWQgPSBpbm9kZV9oYXNodGFibGU7DQpkaWZmIC1ydSAtLW5ldy1maWxl IGxpbnV4LTIuMS44OS12YW5pbGxhL2ZzL3Byb2MvYmFzZS5jIGxpbnV4L2Zz L3Byb2MvYmFzZS5jDQotLS0gbGludXgtMi4xLjg5LXZhbmlsbGEvZnMvcHJv Yy9iYXNlLmMJVGh1IEphbiAyMiAwNjoyOTo1OSAxOTk4DQorKysgbGludXgv ZnMvcHJvYy9iYXNlLmMJVHVlIE1hciAgMyAxMjoyNDoyMSAxOTk4DQpAQCAt MTMsNiArMTMsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KICNp bmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+DQogI2luY2x1ZGUgPGxpbnV4L3N0 YXQuaD4NCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KIA0KIHN0YXRpYyBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfYmFzZV9vcGVyYXRpb25zID0g ew0KIAlOVUxMLAkJCS8qIGxzZWVrIC0gZGVmYXVsdCAqLw0KQEAgLTE2Nyw3 ICsxNjgsNyBAQA0KIH07DQogI2VuZGlmDQogDQotdm9pZCBwcm9jX2Jhc2Vf aW5pdCh2b2lkKQ0KK19faW5pdGZ1bmModm9pZCBwcm9jX2Jhc2VfaW5pdCh2 b2lkKSkNCiB7DQogI2lmIENPTkZJR19BUDEwMDANCiAJcHJvY19yZWdpc3Rl cigmcHJvY19waWQsICZwcm9jX3BpZF9yaW5nYnVmKTsNCmRpZmYgLXJ1IC0t bmV3LWZpbGUgbGludXgtMi4xLjg5LXZhbmlsbGEvZnMvcHJvYy9yb290LmMg bGludXgvZnMvcHJvYy9yb290LmMNCi0tLSBsaW51eC0yLjEuODktdmFuaWxs YS9mcy9wcm9jL3Jvb3QuYwlGcmkgRmViIDIwIDA0OjU0OjUzIDE5OTgNCisr KyBsaW51eC9mcy9wcm9jL3Jvb3QuYwlUdWUgTWFyICAzIDEyOjI0OjIxIDE5 OTgNCkBAIC0xMyw2ICsxMyw3IEBADQogI2luY2x1ZGUgPGxpbnV4L3Byb2Nf ZnMuaD4NCiAjaW5jbHVkZSA8bGludXgvc3RhdC5oPg0KICNpbmNsdWRlIDxs aW51eC9jb25maWcuaD4NCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KICNp bmNsdWRlIDxhc20vYml0b3BzLmg+DQogI2lmZGVmIENPTkZJR19LRVJORUxE DQogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbGQuaD4NCkBAIC02MzIsNyArNjMz LDcgQEANCiB9Ow0KICNlbmRpZg0KIA0KLXZvaWQgcHJvY19yb290X2luaXQo dm9pZCkNCitfX2luaXRmdW5jKHZvaWQgcHJvY19yb290X2luaXQodm9pZCkp DQogew0KIAlwcm9jX2Jhc2VfaW5pdCgpOw0KIAlwcm9jX3JlZ2lzdGVyKCZw cm9jX3Jvb3QsICZwcm9jX3Jvb3RfbG9hZGF2Zyk7DQpkaWZmIC1ydSAtLW5l dy1maWxlIGxpbnV4LTIuMS44OS12YW5pbGxhL2luaXQvbWFpbi5jIGxpbnV4 L2luaXQvbWFpbi5jDQotLS0gbGludXgtMi4xLjg5LXZhbmlsbGEvaW5pdC9t YWluLmMJRnJpIEZlYiAyMCAwNDo1NTo1NCAxOTk4DQorKysgbGludXgvaW5p dC9tYWluLmMJVHVlIE1hciAgMyAxMjoyNDoyMSAxOTk4DQpAQCAtODE5LDYg KzgxOSw5IEBADQogICAgYmV0dGVyIHRoYW4gMSUgKi8NCiAjZGVmaW5lIExQ U19QUkVDIDgNCiANCitzdGF0aWMgY2hhciBjYWxpYm1zZ1tdIF9faW5pdGRh dGEgPSAiQ2FsaWJyYXRpbmcgZGVsYXkgbG9vcC4uLiAiOw0KK3N0YXRpYyBj aGFyIGJvZ29taXBzbXNnW10gX19pbml0ZGF0YSA9ICIlbHUuJTAybHUgQm9n b01JUFNcbiI7DQorDQogX19pbml0ZnVuYyh2b2lkIGNhbGlicmF0ZV9kZWxh eSh2b2lkKSkNCiB7DQogCXVuc2lnbmVkIGxvbmcgdGlja3MsIGxvb3BiaXQ7 DQpAQCAtODI2LDcgKzgyOSw3IEBADQogDQogCWxvb3BzX3Blcl9zZWMgPSAo MTw8MTIpOw0KIA0KLQlwcmludGsoIkNhbGlicmF0aW5nIGRlbGF5IGxvb3Au Li4gIik7DQorCXByaW50ayhjYWxpYm1zZyk7DQogCXdoaWxlIChsb29wc19w ZXJfc2VjIDw8PSAxKSB7DQogCQkvKiB3YWl0IGZvciAic3RhcnQgb2YiIGNs b2NrIHRpY2sgKi8NCiAJCXRpY2tzID0gamlmZmllczsNCkBAIC04NTcsNyAr ODYwLDcgQEANCiAvKiBmaW5hbGx5LCBhZGp1c3QgbG9vcHMgcGVyIHNlY29u ZCBpbiB0ZXJtcyBvZiBzZWNvbmRzIGluc3RlYWQgb2YgY2xvY2tzICovCQ0K IAlsb29wc19wZXJfc2VjICo9IEhaOw0KIC8qIFJvdW5kIHRoZSB2YWx1ZSBh bmQgcHJpbnQgaXQgKi8JDQotCXByaW50aygiJWx1LiUwMmx1IEJvZ29NSVBT XG4iLA0KKwlwcmludGsoYm9nb21pcHNtc2csDQogCQkobG9vcHNfcGVyX3Nl YysyNTAwKS81MDAwMDAsDQogCQkoKGxvb3BzX3Blcl9zZWMrMjUwMCkvNTAw MCkgJSAxMDApOw0KIH0NCkBAIC05ODAsNyArOTgzLDEwIEBADQogLyoNCiAg KglBY3RpdmF0ZSB0aGUgZmlyc3QgcHJvY2Vzc29yLg0KICAqLw0KLSANCisN CitzdGF0aWMgY2hhciB1bmlmaXhtc2dbXSBfX2luaXRkYXRhID0NCisJIlBP U0lYIGNvbmZvcm1hbmNlIHRlc3RpbmcgYnkgVU5JRklYXG4iOyANCisNCiBf X2luaXRmdW5jKGFzbWxpbmthZ2Ugdm9pZCBzdGFydF9rZXJuZWwodm9pZCkp DQogew0KIAljaGFyICogY29tbWFuZF9saW5lOw0KQEAgLTEwNjcsNyArMTA3 Myw3IEBADQogCWRxdW90X2luaXQoKTsNCiAJY2hlY2tfYnVncygpOw0KIA0K LQlwcmludGsoIlBPU0lYIGNvbmZvcm1hbmNlIHRlc3RpbmcgYnkgVU5JRklY XG4iKTsNCisJcHJpbnRrKHVuaWZpeG1zZyk7DQogI2lmZGVmIF9fU01QX18N CiAJc21wX2luaXQoKTsNCiAjZW5kaWYNCmRpZmYgLXJ1IC0tbmV3LWZpbGUg bGludXgtMi4xLjg5LXZhbmlsbGEva2VybmVsL2ZvcmsuYyBsaW51eC9rZXJu ZWwvZm9yay5jDQotLS0gbGludXgtMi4xLjg5LXZhbmlsbGEva2VybmVsL2Zv cmsuYwlUdWUgTWFyICAzIDE1OjAxOjMzIDE5OTgNCisrKyBsaW51eC9rZXJu ZWwvZm9yay5jCVR1ZSBNYXIgIDMgMTI6MjQ6MjEgMTk5OA0KQEAgLTEyMyw2 ICsxMjMsOSBAQA0KIAlyZXR1cm4gMDsNCiB9DQogDQorc3RhdGljIGNoYXIg dWlkcGFuaWNtc2dbXSBfX2luaXRkYXRhID0NCisJIkNhbm5vdCBjcmVhdGUg dWlkIHRhc2tjb3VudCBTTEFCIGNhY2hlXG4iOw0KKw0KIF9faW5pdGZ1bmMo dm9pZCB1aWRjYWNoZV9pbml0KHZvaWQpKQ0KIHsNCiAJaW50IGk7DQpAQCAt MTMxLDcgKzEzNCw3IEBADQogCQkJCSAgICAgICAwLA0KIAkJCQkgICAgICAg U0xBQl9IV0NBQ0hFX0FMSUdOLCBOVUxMLCBOVUxMKTsNCiAJaWYoIXVpZF9j YWNoZXApDQotCQlwYW5pYygiQ2Fubm90IGNyZWF0ZSB1aWQgdGFza2NvdW50 IFNMQUIgY2FjaGVcbiIpOw0KKwkJcGFuaWModWlkcGFuaWNtc2cpOw0KIA0K IAlmb3IoaSA9IDA7IGkgPCBVSURIQVNIX1NaOyBpKyspDQogCQl1aWRoYXNo W2ldID0gMDsNCkBAIC01NjgsNiArNTcxLDggQEANCiAJbWVtc2V0KGYsIDAs IHNpemVvZigqZikpOw0KIH0NCiANCitzdGF0aWMgY2hhciBmaWxlc3Bhbmlj bXNnW10gX19pbml0ZGF0YSA9ICJDYW5ub3QgY3JlYXRlIGZpbGVzIGNhY2hl IjsNCisNCiBfX2luaXRmdW5jKHZvaWQgZmlsZXNjYWNoZV9pbml0KHZvaWQp KQ0KIHsNCiAJZmlsZXNfY2FjaGVwID0ga21lbV9jYWNoZV9jcmVhdGUoImZp bGVzX2NhY2hlIiwgDQpAQCAtNTc2LDUgKzU4MSw1IEBADQogCQkJCQkgU0xB Ql9IV0NBQ0hFX0FMSUdOLA0KIAkJCQkJIGZpbGVzX2N0b3IsIE5VTEwpOw0K IAlpZiAoIWZpbGVzX2NhY2hlcCkgDQotCQlwYW5pYygiQ2Fubm90IGNyZWF0 ZSBmaWxlcyBjYWNoZSIpOyANCisJCXBhbmljKGZpbGVzcGFuaWNtc2cpOyAN CiB9DQpkaWZmIC1ydSAtLW5ldy1maWxlIGxpbnV4LTIuMS44OS12YW5pbGxh L2tlcm5lbC9tb2R1bGUuYyBsaW51eC9rZXJuZWwvbW9kdWxlLmMNCi0tLSBs aW51eC0yLjEuODktdmFuaWxsYS9rZXJuZWwvbW9kdWxlLmMJVHVlIE1hciAg MyAxNTowMTozMyAxOTk4DQorKysgbGludXgva2VybmVsL21vZHVsZS5jCVR1 ZSBNYXIgIDMgMTI6MjQ6MjIgMTk5OA0KQEAgLTEwLDYgKzEwLDcgQEANCiAj aW5jbHVkZSA8bGludXgvc21wLmg+DQogI2luY2x1ZGUgPGxpbnV4L3NtcF9s b2NrLmg+DQogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+DQorI2luY2x1ZGUg PGxpbnV4L2luaXQuaD4NCiANCiAvKg0KICAqIE9yaWdpbmFsbHkgYnkgQW5v bnltb3VzIChhcyBmYXIgYXMgSSBrbm93Li4uKQ0KQEAgLTYxLDcgKzYyLDcg QEANCiAgKiBDYWxsZWQgYXQgYm9vdCB0aW1lDQogICovDQogDQotdm9pZCBp bml0X21vZHVsZXModm9pZCkNCitfX2luaXRmdW5jKHZvaWQgaW5pdF9tb2R1 bGVzKHZvaWQpKQ0KIHsNCiAJa2VybmVsX21vZHVsZS5uc3ltcyA9IF9fc3Rv cF9fX2tzeW10YWIgLSBfX3N0YXJ0X19fa3N5bXRhYjsNCiANCmRpZmYgLXJ1 IC0tbmV3LWZpbGUgbGludXgtMi4xLjg5LXZhbmlsbGEva2VybmVsL3NpZ25h bC5jIGxpbnV4L2tlcm5lbC9zaWduYWwuYw0KLS0tIGxpbnV4LTIuMS44OS12 YW5pbGxhL2tlcm5lbC9zaWduYWwuYwlUdWUgTWFyICAzIDE1OjAxOjMzIDE5 OTgNCisrKyBsaW51eC9rZXJuZWwvc2lnbmFsLmMJVHVlIE1hciAgMyAxMjoy NDoyMiAxOTk4DQpAQCAtMTgsNiArMTgsNyBAQA0KICNpbmNsdWRlIDxsaW51 eC9zbXAuaD4NCiAjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4NCiAjaW5j bHVkZSA8bGludXgvc2xhYi5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+ DQogDQogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+DQogDQpAQCAtMzUsOCAr MzYsNyBAQA0KIA0KIHN0YXRpYyBrbWVtX2NhY2hlX3QgKnNpZ25hbF9xdWV1 ZV9jYWNoZXA7DQogDQotdm9pZA0KLXNpZ25hbHNfaW5pdCh2b2lkKQ0KK19f aW5pdGZ1bmModm9pZCBzaWduYWxzX2luaXQodm9pZCkpDQogew0KIAlzaWdu YWxfcXVldWVfY2FjaGVwID0NCiAJCWttZW1fY2FjaGVfY3JlYXRlKCJzaWdu YWxfcXVldWUiLA0KZGlmZiAtcnUgLS1uZXctZmlsZSBsaW51eC0yLjEuODkt dmFuaWxsYS9tbS9tbWFwLmMgbGludXgvbW0vbW1hcC5jDQotLS0gbGludXgt Mi4xLjg5LXZhbmlsbGEvbW0vbW1hcC5jCVR1ZSBNYXIgIDMgMTU6MDE6MzQg MTk5OA0KKysrIGxpbnV4L21tL21tYXAuYwlUdWUgTWFyICAzIDEyOjI0OjIy IDE5OTgNCkBAIC03MDQsNiArNzA0LDExIEBADQogCXVwKCZtbS0+bW1hcF9z ZW0pOw0KIH0NCiANCitzdGF0aWMgY2hhciB2bXBhbmljbXNnW10gX19pbml0 ZGF0YSA9DQorCSJ2bWFfaW5pdDogQ2Fubm90IGFsbG9jIHZtX2FyZWFfc3Ry dWN0IGNhY2hlLiI7DQorc3RhdGljIGNoYXIgbW1wYW5pY21zZ1tdIF9faW5p dGRhdGEgPQ0KKwkidm1hX2luaXQ6IENhbm5vdCBhbGxvYyBtbV9zdHJ1Y3Qg Y2FjaGUuIjsNCisNCiBfX2luaXRmdW5jKHZvaWQgdm1hX2luaXQodm9pZCkp DQogew0KIAl2bV9hcmVhX2NhY2hlcCA9IGttZW1fY2FjaGVfY3JlYXRlKCJ2 bV9hcmVhX3N0cnVjdCIsDQpAQCAtNzExLDEyICs3MTYsMTIgQEANCiAJCQkJ CSAgIDAsIFNMQUJfSFdDQUNIRV9BTElHTiwNCiAJCQkJCSAgIE5VTEwsIE5V TEwpOw0KIAlpZighdm1fYXJlYV9jYWNoZXApDQotCQlwYW5pYygidm1hX2lu aXQ6IENhbm5vdCBhbGxvYyB2bV9hcmVhX3N0cnVjdCBjYWNoZS4iKTsNCisJ CXBhbmljKHZtcGFuaWNtc2cpOw0KIA0KIAltbV9jYWNoZXAgPSBrbWVtX2Nh Y2hlX2NyZWF0ZSgibW1fc3RydWN0IiwNCiAJCQkJICAgICAgc2l6ZW9mKHN0 cnVjdCBtbV9zdHJ1Y3QpLA0KIAkJCQkgICAgICAwLCBTTEFCX0hXQ0FDSEVf QUxJR04sDQogCQkJCSAgICAgIE5VTEwsIE5VTEwpOw0KIAlpZighbW1fY2Fj aGVwKQ0KLQkJcGFuaWMoInZtYV9pbml0OiBDYW5ub3QgYWxsb2MgbW1fc3Ry dWN0IGNhY2hlLiIpOw0KKwkJcGFuaWMobW1wYW5pY21zZyk7DQogfQ0KZGlm ZiAtcnUgLS1uZXctZmlsZSBsaW51eC0yLjEuODktdmFuaWxsYS9tbS92bXNj YW4uYyBsaW51eC9tbS92bXNjYW4uYw0KLS0tIGxpbnV4LTIuMS44OS12YW5p bGxhL21tL3Ztc2Nhbi5jCVR1ZSBNYXIgIDMgMTU6MDE6MzQgMTk5OA0KKysr IGxpbnV4L21tL3Ztc2Nhbi5jCVR1ZSBNYXIgIDMgMTI6MjQ6MjIgMTk5OA0K QEAgLTIyLDYgKzIyLDcgQEANCiAjaW5jbHVkZSA8bGludXgvc21wX2xvY2su aD4NCiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KICNpbmNsdWRlIDxsaW51 eC9kY2FjaGUuaD4NCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KIA0KICNp bmNsdWRlIDxhc20vYml0b3BzLmg+DQogI2luY2x1ZGUgPGFzbS9wZ3RhYmxl Lmg+DQpAQCAtNDk4LDcgKzQ5OSwxMCBAQA0KICAqIG1heSBiZSBwcmludGVk IGluIHRoZSBtaWRkbGUgb2YgYW5vdGhlciBkcml2ZXIncyBpbml0IA0KICAq IG1lc3NhZ2UpLiAgSXQgbG9va3MgdmVyeSBiYWQgd2hlbiB0aGF0IGhhcHBl bnMuDQogICovDQotdm9pZCBrc3dhcGRfc2V0dXAodm9pZCkNCisNCitzdGF0 aWMgY2hhciBrc3dhcGRfbXNnW10gX19pbml0ZGF0YSA9ICJTdGFydGluZyBr c3dhcGQgdiUuKnNcbiI7DQorDQorX19pbml0ZnVuYyh2b2lkIGtzd2FwZF9z ZXR1cCh2b2lkKSkNCiB7DQogICAgICAgIGludCBpOw0KICAgICAgICBjaGFy ICpyZXZpc2lvbj0iJFJldmlzaW9uOiAxLjUgJCIsICpzLCAqZTsNCmRpZmYg LXJ1IC0tbmV3LWZpbGUgbGludXgtMi4xLjg5LXZhbmlsbGEvbmV0L2NvcmUv c29jay5jIGxpbnV4L25ldC9jb3JlL3NvY2suYw0KLS0tIGxpbnV4LTIuMS44 OS12YW5pbGxhL25ldC9jb3JlL3NvY2suYwlUdWUgTWFyICAzIDE1OjAxOjM1 IDE5OTgNCisrKyBsaW51eC9uZXQvY29yZS9zb2NrLmMJVHVlIE1hciAgMyAx MjoyNDoyMiAxOTk4DQpAQCAtMTA1LDYgKzEwNSw3IEBADQogI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4NCiAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+ DQogI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4NCisjaW5jbHVkZSA8bGludXgv aW5pdC5oPg0KIA0KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPg0KICNpbmNs dWRlIDxhc20vc3lzdGVtLmg+DQpAQCAtNDkyLDcgKzQ5Myw3IEBADQogCWtt ZW1fY2FjaGVfZnJlZShza19jYWNoZXAsIHNrKTsNCiB9DQogDQotdm9pZCBz a19pbml0KHZvaWQpDQorX19pbml0ZnVuYyh2b2lkIHNrX2luaXQodm9pZCkp DQogew0KIAlza19jYWNoZXAgPSBrbWVtX2NhY2hlX2NyZWF0ZSgic29jayIs IHNpemVvZihzdHJ1Y3Qgc29jayksIDAsDQogCQkJCSAgICAgIFNMQUJfSFdD QUNIRV9BTElHTiwgMCwgMCk7DQpkaWZmIC1ydSAtLW5ldy1maWxlIGxpbnV4 LTIuMS44OS12YW5pbGxhL25ldC9pcHY0L2FmX2luZXQuYyBsaW51eC9uZXQv aXB2NC9hZl9pbmV0LmMNCi0tLSBsaW51eC0yLjEuODktdmFuaWxsYS9uZXQv aXB2NC9hZl9pbmV0LmMJVHVlIE1hciAgMyAxNTowMTozNyAxOTk4DQorKysg bGludXgvbmV0L2lwdjQvYWZfaW5ldC5jCVR1ZSBNYXIgIDMgMTI6MjQ6MjMg MTk5OA0KQEAgLTEwNTAsMTMgKzEwNTAsMTYgQEANCiAvKg0KICAqCUNhbGxl ZCBieSBzb2NrZXQuYyBvbiBrZXJuZWwgc3RhcnR1cC4gIA0KICAqLw0KKw0K K3N0YXRpYyBjaGFyIHN3YW5tc2dbXSBfX2luaXRkYXRhID0NCisgICAgICAg ICJTd2Fuc2VhIFVuaXZlcnNpdHkgQ29tcHV0ZXIgU29jaWV0eSBUQ1AvSVAg Zm9yIE5FVDMuMDM3XG4iOw0KICANCiBfX2luaXRmdW5jKHZvaWQgaW5ldF9w cm90b19pbml0KHN0cnVjdCBuZXRfcHJvdG8gKnBybykpDQogew0KIAlzdHJ1 Y3Qgc2tfYnVmZiAqZHVtbXlfc2tiOw0KIAlzdHJ1Y3QgaW5ldF9wcm90b2Nv bCAqcDsNCiANCi0JcHJpbnRrKEtFUk5fSU5GTyAiU3dhbnNlYSBVbml2ZXJz aXR5IENvbXB1dGVyIFNvY2lldHkgVENQL0lQIGZvciBORVQzLjAzN1xuIik7 DQorCXByaW50ayhLRVJOX0lORk8gIiVzIiwgc3dhbm1zZyk7DQogDQogCWlm IChzaXplb2Yoc3RydWN0IGluZXRfc2tiX3Bhcm0pID4gc2l6ZW9mKGR1bW15 X3NrYi0+Y2IpKQ0KIAl7DQpkaWZmIC1ydSAtLW5ldy1maWxlIGxpbnV4LTIu MS44OS12YW5pbGxhL25ldC9pcHY0L2ljbXAuYyBsaW51eC9uZXQvaXB2NC9p Y21wLmMNCi0tLSBsaW51eC0yLjEuODktdmFuaWxsYS9uZXQvaXB2NC9pY21w LmMJVHVlIE1hciAgMyAxNTowMTozOCAxOTk4DQorKysgbGludXgvbmV0L2lw djQvaWNtcC5jCVR1ZSBNYXIgIDMgMTI6MjQ6MjMgMTk5OA0KQEAgLTEwNzQs NiArMTA3NCw5IEBADQogIHsgJmljbXBfc3RhdGlzdGljcy5JY21wT3V0QWRk ck1hc2tSZXBzLCAmaWNtcF9zdGF0aXN0aWNzLkljbXBJbkFkZHJNYXNrUmVw cywgaWNtcF9hZGRyZXNzX3JlcGx5LCAwLCB9DQogfTsNCiANCitzdGF0aWMg Y2hhciBpY21wcGFuaWNtc2dbXSBfX2luaXRkYXRhID0NCisgICAgICAgICJG YWlsZWQgdG8gY3JlYXRlIHRoZSBJQ01QIGNvbnRyb2wgc29ja2V0LlxuIjsN CisNCiBfX2luaXRmdW5jKHZvaWQgaWNtcF9pbml0KHN0cnVjdCBuZXRfcHJv dG9fZmFtaWx5ICpvcHMpKQ0KIHsNCiAJaW50IGVycjsNCkBAIC0xMDg4LDcg KzEwOTEsNyBAQA0KIAlpY21wX3NvY2tldC0+dHlwZT1TT0NLX1JBVzsNCiAN CiAJaWYgKChlcnI9b3BzLT5jcmVhdGUoaWNtcF9zb2NrZXQsIElQUFJPVE9f SUNNUCkpPDApDQotCQlwYW5pYygiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgSUNN UCBjb250cm9sIHNvY2tldC5cbiIpOw0KKwkJcGFuaWMoaWNtcHBhbmljbXNn KTsNCiAJaWNtcF9zb2NrZXQtPnNrLT5hbGxvY2F0aW9uPUdGUF9BVE9NSUM7 DQogCWljbXBfc29ja2V0LT5zay0+bnVtID0gMjU2OwkJLyogRG9uJ3QgcmVj ZWl2ZSBhbnkgZGF0YSAqLw0KIAlpY21wX3NvY2tldC0+c2stPmlwX3R0bCA9 IE1BWFRUTDsNCmRpZmYgLXJ1IC0tbmV3LWZpbGUgbGludXgtMi4xLjg5LXZh bmlsbGEvbmV0L3NvY2tldC5jIGxpbnV4L25ldC9zb2NrZXQuYw0KLS0tIGxp bnV4LTIuMS44OS12YW5pbGxhL25ldC9zb2NrZXQuYwlUdWUgTWFyICAzIDE1 OjAxOjQzIDE5OTgNCisrKyBsaW51eC9uZXQvc29ja2V0LmMJVHVlIE1hciAg MyAxMjoyNDoyMyAxOTk4DQpAQCAtMTQ0NiwxMSArMTQ0NiwxNCBAQA0KIGV4 dGVybiB2b2lkIHdhbnJvdXRlcl9pbml0KHZvaWQpOw0KICNlbmRpZg0KIA0K K3N0YXRpYyBjaGFyIHN3YW5tc2dbXSBfX2luaXRkYXRhID0NCisJIlN3YW5z ZWEgVW5pdmVyc2l0eSBDb21wdXRlciBTb2NpZXR5IE5FVDMuMDM5IGZvciBM aW51eCAyLjFcbiI7DQorDQogX19pbml0ZnVuYyh2b2lkIHNvY2tfaW5pdCh2 b2lkKSkNCiB7DQogCWludCBpOw0KIA0KLQlwcmludGsoS0VSTl9JTkZPICJT d2Fuc2VhIFVuaXZlcnNpdHkgQ29tcHV0ZXIgU29jaWV0eSBORVQzLjAzOSBm b3IgTGludXggMi4xXG4iKTsNCisJcHJpbnRrKEtFUk5fSU5GTyAiJXMiLCBz d2FubXNnKTsNCiANCiAJLyoNCiAJICoJSW5pdGlhbGl6ZSBhbGwgYWRkcmVz cyAocHJvdG9jb2wpIGZhbWlsaWVzLiANCg== ---559023410-16838-889608527=:20598--

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu