---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