[patch] QNX-style Scheduling v1.04 (works with SMP now)

Adam McKee (amckee@poboxes.com)
Fri, 1 Aug 1997 03:10:47 -0600 (CST)


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.

--12583424-995584577-870421531=:2487
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.3.95.970801024735.542B@titan.acua.org>

This version works with SMP, thanks to Scott Walde <scott@saskatoon.com>
who gave me access to a dual-P][/266 system.

-- Adam

--12583424-995584577-870421531=:2487
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="QNX-scheduler-2.0.31-pre2-4.patch.README"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.970801014531.2487B@titan.acua.org>
Content-Description:

ICAgICAgICAgICAgICAgICAgIFFOWC1zdHlsZSBTY2hlZHVsaW5nIHYxLjA0
IGZvciBMaW51eCAyLjANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnkNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBZGFtIE1jS2VlDQoNCg0KU3BlY2lhbCBub3RlOiBBIGdyZWF0IG1hbnkg
dGhhbmtzIHRvIFNjb3R0IFdhbGRlIDxzY290dEBzYXNrYXRvb24uY29tPiB3
aG8NCiAgICAgICAgICAgICAgZ2F2ZSBtZSBhY2Nlc3MgdG8gYSBkdWFsLVBd
Wy8yNjYgbWFjaGluZSBzbyBJIGNvdWxkIGdldCB0aGlzDQogICAgICAgICAg
ICAgIHBhdGNoIHdvcmtpbmcgd2l0aCBTTVAuICBZb3UgZGEgbWFuLCBTY290
dCENCiAgDQoNCklOVFJPRFVDVElPTg0KDQpUaGlzIHBhdGNoIHByb3ZpZGVz
IFFOWC1zdHlsZSBzY2hlZHVsaW5nIGZvciBMaW51eCAyLjAuICBUaGUgaW50
ZW50IGlzIHRvDQpwcm92aWRlIG1vcmUgZmxleGlibGUgYW5kIHBvd2VyZnVs
IHNjaGVkdWxpbmcsIGFuZCB0byBwcm92aWRlIGltcHJvdmVkDQppbnRlcmFj
dGl2ZSBwZXJmb3JtYW5jZSB1bmRlciBoZWF2eSBDUFUgbG9hZC4gIFRoaXMg
c2NoZWR1bGVyIGRvZXMgbm90IHByb3ZpZGUNCmluY3JlYXNlZCB0aHJvdWdo
cHV0IGhvd2V2ZXIuICBJbiBmYWN0LCB0aGVyZSBpcyBhIHZlcnkgc21hbGwg
cHJpY2UgdG8gcGF5IGluDQp0ZXJtcyBvZiB0aHJvdWdocHV0IGluIG9yZGVy
IHRvIGFjaGlldmUgdGhlIGFmb3JlbWVudGlvbmVkIGdvYWxzLiAgU28gdGhh
dCB5b3UNCmNhbiBhcHByZWNpYXRlIGV4YWN0bHkgd2hhdCB0aGUgcGF0Y2gg
ZG9lcywgSSB3aWxsIGdpdmUgYW4gKG92ZXJzaW1wbGlmaWVkKQ0KZXhwbGFu
YXRpb24gb2YgaG93IHNjaGVkdWxpbmcgaXMgbm9ybWFsbHkgZG9uZSB1bmRl
ciBMaW51eCAyLjAsIGZvbGxvd2VkIGJ5IGENCmRlc2NyaXB0aW9uIG9mIHRo
ZSBRTlggc2NoZWR1bGVyIChhcyBpbXBsZW1lbnRlZCkuICBJZiB5b3UgdXNl
IHRoaXMgcGF0Y2gsIHlvdQ0Kd2lsbCBuZWVkIHRvIHJlLXRoaW5rIGhvdyB5
b3UgcmUtbmljZSB0YXNrcywgc28gYSBicmllZiBkaXNjdXNzaW9uIG9mDQpy
ZS1uaWNpbmcgdGFza3MgaXMgZ2l2ZW4uDQoNCg0KTk9STUFMIFNDSEVEVUxJ
TkcgVU5ERVIgTElOVVggMi4wDQoNClRoZXJlIGlzIGEgc2luZ2xlIHJ1bi1x
dWV1ZS4gIEVhY2ggdGFzayBtYXkgYmUgYXNzaWduZWQgYSBwcmlvcml0eSBv
cg0KIm5pY2VuZXNzIiB3aGljaCB3aWxsIGRldGVybWluZSBob3cgbG9uZyBh
IHRpbWVzbGljZSBpdCBnZXRzLiAgRm9yIGV4YW1wbGUsIGlmDQp5b3UgZ2l2
ZSBhIHRhc2sgYSBuaWNlbmVzcyBvZiAtMjAsIHRoZSBrZXJuZWwgd2lsbCBu
b3QgZGlyZWN0bHkgdXNlIHRoZSAtMjAuDQpidXQgd2lsbCBpbnN0ZWFkIHVz
ZSB0aGlzIG51bWJlciB0byBkZXRlcm1pbmUgaG93IGxvbmcvb2Z0ZW4gdGhl
IHRhc2sgc2hvdWxkDQpiZSBhbGxvd2VkIHRvIHJ1bi4gIFRoZSAiY291bnRl
ciIgYXR0cmlidXRlIG9mIGVhY2ggdGFzayBkZXRlcm1pbmVzIGhvdyBtdWNo
DQp0aW1lIGl0IGhhcyBsZWZ0IGluIGl0cyB0aW1lc2xpY2UuICBBZnRlciBl
dmVyeSB0YXNrIG9uIHRoZSBydW4tcXVldWUgaGFzIHVzZWQNCnVwIGl0cyB0
aW1lc2xpY2UgKGNvdW50ZXIgPSAwKSwgdGhlIGNvdW50ZXIgZm9yIGVhY2gg
dGFzayBpcyByZXNldCB0byB0aGUNCm9yaWdpbmFsIHByaW9yaXR5LiAgVGhp
cyBzY2hlZHVsZXIgaGFzIHNvbWUgbmljZSBwcm9wZXJ0aWVzOg0KDQoJbyBJ
dCBvYmV5cyB0aGUgS0lTUyBwcmluY2lwbGUgKEtlZXAgSXQgU2ltcGxlLCBT
dHVwaWQhKS4gIFRoZXJlIGlzDQogICAgICAgICAgYWx3YXlzIGEgZGFuZ2Vy
IHRoYXQgdHJ5aW5nIHRvIGdldCAidG9vIGNsZXZlciIgd2lsbCBpbnRyb2R1
Y2UNCiAgICAgICAgICB1bmV4cGVjdGVkIHByb2JsZW1zLg0KDQoJbyBJdCBn
dWFyYW50ZWVzIHRoYXQgbm8gdGFzayB3aWxsIHN0YXJ2ZS4NCg0KCW8gSXQg
YWxsb3dzIHRoZSB1c2VyIHRvIGhhdmUgc29tZSBjb250cm9sIG92ZXIgdGhl
IHNjaGVkdWxpbmcuDQoNClNvbWUgZHJhd2JhY2tzOg0KDQoJbyBJbnRlcmFj
dGl2ZSBwZXJmb3JtYW5jZSB1bmRlciBoZWF2eSBDUFUgbG9hZCBpcyBub3Qg
Z29vZC4NCg0KCW8gTGltaXRlZCBjb250cm9sIG92ZXIgc2NoZWR1bGluZy4N
Cg0KDQpUSEUgUU5YIFNDSEVEVUxFUg0KDQpNeSB1bmRlcnN0YW5kaW5nIG9m
IHRoZSBRTlggc2NoZWR1bGVyIGlzIGJhc2VkIGVudGlyZWx5IG9uIGEgc2hv
cnQgYmx1cmIgSQ0KcmVhZCBhYm91dCBpdCwgc28gSSB3b3VsZCBub3QgYmUg
c3VycHJpc2VkIHRvIGZpbmQgdGhhdCB0aGUgZm9sbG93aW5nDQpkaXNjdXNz
aW9uIGNvbnRhaW5zIGVycm9ycyBhbmQvb3Igb21pc3Npb25zLiAgSG93ZXZl
ciwgcGxlYXNlIGRvIHJlYWQNCm9uLi4uIDotKQ0KDQpUaGVyZSBhcmUgMzIg
c2VwYXJhdGUgcnVuLXF1ZXVlcywgbnVtYmVyZWQgMC0zMS4gIFdoZW4gdGhl
IHNjaGVkdWxlciBpcw0KbG9va2luZyBmb3IgYSB0YXNrIHRvIHJ1biwgaXQg
d2lsbCBzZWxlY3QgYSB0YXNrIGZyb20gdGhlIGxvd2VzdC1udW1iZXJlZA0K
cnVuLXF1ZXVlIHRoYXQgaGFzIGEgcnVubmFibGUgdGFzayBvbiBpdC4gIFRo
aXMgbWVhbnMgdGhhdCwgZm9yIGV4YW1wbGUsIGENCnRhc2sgb24gcnVuLXF1
ZXVlIDEgd2lsbCAqbm90KiBydW4gdW50aWwgdGhlcmUgYXJlIG5vIHRhc2tz
IG9uIHJ1bi1xdWV1ZSAwDQp0aGF0IHdhbnQgdG8gcnVuLiAgVGhlIGluaXQg
dGFzayBoYXMgYSBtaW5pbXVtIHJ1bi1xdWV1ZSBvZiAxNS4gIE5ld2x5DQpj
cmVhdGVkIHRhc2tzIGluaGVyaXQgdGhlaXIgbWluaW11bSBydW4tcXVldWUg
ZnJvbSB0aGVpciBwYXJlbnQuDQoNClRocmVlIHNjaGVkdWxpbmcgcG9saWNp
ZXMgYXJlIHN1cHBvcnRlZDoNCg0KLS0tIEZJRk8NCg0KVGhlIHNlbGVjdGVk
IHRhc2sgd2lsbCBydW4gdW50aWw6DQoNCglvIGl0IGJsb2Nrcw0KCSAgLU9S
LQ0KCW8gYSB0YXNrIG9uIGEgbG93ZXItbnVtYmVyZWQgcnVuLXF1ZXVlIHdh
bnRzIHRvIHJ1bg0KDQotLS0gUm91bmQtUm9iaW4NCg0KVGhlIHNlbGVjdGVk
IHRhc2sgd2lsbCBydW4gdW50aWw6DQoNCglvIGl0IGJsb2Nrcw0KCSAgLU9S
LQ0KCW8gYSB0YXNrIG9uIGEgbG93ZXItbnVtYmVyZWQgcnVuLXF1ZXVlIHdh
bnRzIHRvIHJ1bg0KCSAgLU9SDQoJbyAyMDBtcyBoYXZlIHBhc3NlZA0KDQot
LS0gQWRhcHRpdmUNCg0KVGhpcyBpcyB0aGUgZGVmYXVsdCBwb2xpY3ksIGFu
ZCB0aGUgbW9zdCBpbnRlcmVzdGluZyBwb2xpY3kuICBBZGFwdGl2ZQ0Kc2No
ZWR1bGluZyBpcyBsaWtlIFJvdW5kLVJvYmluLCBidXQgaXQgYWxzbyB0cmll
cyB0byAiaW50ZWxsaWdlbnRseSIgbW92ZQ0KdGFza3MgYmV0d2VlbiBydW4t
cXVldWVzIGluIG9yZGVyIHRvIHByb3ZpZGUgZ29vZCBpbnRlcmFjdGl2ZSBy
ZXNwb25zZS4NCkhlcmUgYXJlIHRoZSBydWxlcyBmb3IgYWRhcHRpdmUgc2No
ZWR1bGluZzoNCg0KCW8gRWFjaCB0YXNrIGhhcyBhICdtaW5pbXVtIHJ1bi1x
dWV1ZScgYXR0cmlidXRlIHRoYXQgdGVsbHMgdGhlDQoJICBzY2hlZHVsZXIg
dGhlIGxvd2VzdC1udW1iZXJlZCBydW4tcXVldWUgdGhlIHRhc2sgY2FuIGJl
IG9uLg0KCSAgIk5vcm1hbCIgdGFza3MgaGF2ZSBtaW5pbXVtIHJ1bi1xdWV1
ZSA9IDE1Lg0KDQoJbyBXaGVuIGEgdGFzayBpcyBpbml0aWFsbHkgc3RhcnRl
ZCwgaXQgaW5oZXJpdHMgaXRzIGN1cnJlbnQgYW5kDQogICAgICAgICAgbWlu
aW11bSBydW4tcXVldWUgZnJvbSBpdHMgcGFyZW50Lg0KDQoJbyBJZiBhIHRh
c2sgYmxvY2tzIChkb2VzIG5vdCB1c2UgYWxsIG9mIGl0cyB0aW1lc2xpY2Up
LCBpdCB3aWxsDQoJICBiZSBwbGFjZWQgb24gaXRzIG1pbmltdW0gcnVuLXF1
ZXVlIHdoZW4gaXQgYmVjb21lcyBydW5uYWJsZSBhZ2Fpbi4NCg0KCW8gSWYg
YSB0YXNrIHVzZXMgdXAgYWxsIG9mIGl0cyB0aW1lc2xpY2UsIGFuZCB0aGVy
ZSBpcyBhdCBsZWFzdCBvbmUNCgkgIG90aGVyIHRhc2sgb24gdGhlIHNhbWUg
cnVuLXF1ZXVlIHRoYXQgd2FudHMgdG8gcnVuLCBpdHMgcnVuLXF1ZXVlDQoJ
ICB3aWxsIGJlIGluY3JlbWVudGVkICgiZGVtb3Rpb24iKS4NCg0KCW8gSWYg
YSB0YXNrIGhhcyBiZWVuIHN0YXJ2aW5nIGZvciBvbmUgc2Vjb25kLCBhbmQg
aXRzIGN1cnJlbnQgcnVuLXF1ZXVlDQoJICBpcyBncmVhdGVyIHRoYW4gaXRz
IG1pbmltdW0gcnVuLXF1ZXVlLCBpdHMgcnVuLXF1ZXVlIHdpbGwgYmUNCgkg
IGRlY3JlbWVudGVkICgicHJvbW90aW9uIikuDQoNClRoZSByZXN1bHQgb2Yg
YXBwbHlpbmcgdGhlc2UgcnVsZXMgaXMgdGhhdCB0YXNrcyB3aXRoIGhlYXZ5
IENQVSByZXF1aXJlbWVudHMNCndpbGwgdGVuZCB0byBtaWdyYXRlIHRvIGhp
Z2hlci1udW1iZXJlZCBydW4tcXVldWVzLCB3aGVyZWFzIHRhc2tzIHdpdGgg
bGlnaHQNCkNQVSByZXF1aXJlbWVudHMgd2lsbCB0ZW5kIHRvIHN0YXkgb24g
bG93ZXItbnVtYmVyZWQgcnVuLXF1ZXVlcy4gIFRoaXMgaXMNCipnb29kKiBm
b3IgaW50ZXJhY3RpdmUgcGVyZm9ybWFuY2UhDQoNCg0KUkUtTklDSU5HIE9G
IFRBU0tTIFdJVEggUU5YIFNDSEVEVUxJTkcNCg0KV2hlbiB5b3UgcmUtbmlj
ZSBhIHRhc2ssIHlvdSBhcmUgYWN0dWFsbHkgY2hhbmdpbmcgaXRzIG1pbmlt
dW0gcnVuLXF1ZXVlLiAgRm9yDQpleGFtcGxlLCBpZiB5b3UgZ2l2ZSB5b3Vy
IFgtc2VydmVyIGEgbmljZW5lc3Mgb2YgLTIwLCB5b3UgYXJlIGFjdHVhbGx5
IHNldHRpbmcNCml0cyBtaW5pbXVtIHJ1bi1xdWV1ZSB0byAwLiAgSWYgeW91
IGdpdmUgaXQgYSBuaWNlbmVzcyBvZiAyMCwgeW91IGFyZSBzZXR0aW5nDQpp
dHMgbWluaW11bSBydW4tcXVldWUgdG8gMzEuICBUaGUgcHJpb3JpdHkgb2Yg
YSB0YXNrIGlzIGl0cyAqY3VycmVudCoNCnJ1bi1xdWV1ZSAod2hpY2ggbWF5
IGJlIGxhcmdlciB0aGFuIGl0cyBtaW5pbXVtIHJ1bi1xdWV1ZSBpbiB0aGUg
Y2FzZSBvZiBhbg0KYWRhcHRpdmVseSBzY2hlZHVsZWQgdGFzaykuDQoNCllv
dSBtdXN0IHRha2UgY2FyZSB3aGVuIHJlLW5pY2luZyB0YXNrcy4gIFVubGlr
ZSB0aGUgbm9ybWFsIExpbnV4IHNjaGVkdWxlciwNCnRoZSBRTlggc2NoZWR1
bGVyIGRvZXMgbm90IGd1YXJhbnRlZSB0YXNrcyB3aWxsIG5vdCBzdGFydmUu
ICBXaGVuIHlvdSByZS1uaWNlDQphIHRhc2ssIHlvdSBtYXkgc2hvb3QgeW91
cnNlbGYgaW4gdGhlIGZvb3QgaW4gYSBjb3VwbGUgb2YgZGlmZmVyZW50IHdh
eXM6DQoNCglvIFRoZSB0YXNrIGhvZ3MgdGhlIENQVSwgYW5kIHN0YXJ2ZXMg
b3V0IG90aGVyIHRhc2tzIChpbiB0aGUgY2FzZSBvZg0KCSAgYSBuZWdhdGl2
ZSBuaWNlbmVzcykuDQoNCglvIFRoZSB0YXNrIGlzIHN0YXJ2ZWQgb3V0IGJ5
IGhpZ2hlci1wcmlvcml0eSB0YXNrcyAoaW4gdGhlIGNhc2Ugb2YgYQ0KCSAg
cG9zaXRpdmUgbmljZW5lc3MpLg0KDQpIZXJlIGFyZSBhIGZldyBnZW5lcmFs
IHRpcHMgZm9yIHJlLW5pY2luZyB0YXNrczoNCg0KCW8gT24gYSBtYWNoaW5l
IHdob3NlIHByaW1hcnkgZnVuY3Rpb24gaXMgd2ViLXNlcnZpbmcgb3IgbmV3
cy1zZXJ2aW5nLA0KCSAgeW91IG1heSB3YW50IHRvIGdpdmUgdGhlIGh0dHBk
IG9yIGlubmQgdGFzayBhIG5lZ2F0aXZlIG5pY2VuZXNzLg0KCSAgT3RoZXIg
dGFza3Mgd291bGQgdGhlbiBvbmx5IGJlIGFsbG93ZWQgdG8gY29uc3VtZSAi
bGVmdC1vdmVyIiBDUFUNCgkgIHRpbWUuDQoNCglvIEl0J3MgcHJvYmFibHkg
YSBnb29kIGlkZWEgdG8gZ2l2ZSB5b3VyIFgtc2VydmVyIGEgbmVnYXRpdmUg
bmljZW5lc3MuDQoJICBJbnRlcmFjdGl2ZSBwZXJmb3JtYW5jZSB3aWxsIGxp
a2VseSBiZW5lZml0IGZyb20gdGhpcy4NCg0KCW8gV2hlbiBzdGFydGluZyBh
IENQVS1pbnRlbnNpdmUgam9iIHRoYXQgbWF5IHRha2UgYXdoaWxlIHRvIGNv
bXBsZXRlLA0KCSAgeW91IG1heSB3YW50IHRvIGdpdmUgaXQgYSBwb3NpdGl2
ZSBuaWNlbmVzcyB0byBlbnN1cmUgdGhlIGFic29sdXRlDQoJICBtaW5pbXVt
IGltcGFjdCBvbiBpbnRlcmFjdGl2ZSBwZXJmb3JtYW5jZS4gIFdoZW4gY29t
cGlsaW5nIGEga2VybmVsLA0KCSAgeW91IG1pZ2h0IGRvICduaWNlIG1ha2Ug
emxpbG8nIC0tIHVzZXJzIG9mIHRoZSBzeXN0ZW0gd291bGQgcHJvYmFibHkN
CgkgIG5vdCBldmVuIG5vdGljZSBhbnkgc2xvd2Rvd24hDQoNCiAgICAgICAg
byBJdCdzIGFsbW9zdCBuZXZlciBhIGdvb2QgaWRlYSB0byBnaXZlIGEgdG90
YWxseSBDUFUtaW50ZW5zaXZlIHRhc2sNCiAgICAgICAgICBhIG5lZ2F0aXZl
IG5pY2VuZXNzLiAgRG9pbmcgdGhpcyB3aXRoIHRoZSBub3JtYWwgTGludXgg
c2NoZWR1bGVyDQogICAgICAgICAgY2FuIHJlc3VsdCBpbiBhIHNsdWdnaXNo
IHN5c3RlbSAtLSB3aXRoIHRoaXMgc2NoZWR1bGVyIGl0IGNhbiByZXN1bHQN
CiAgICAgICAgICBpbiBhbiAqdW51c2FibGUqIHN5c3RlbS4NCg0KSW4gZ2Vu
ZXJhbCwgZG9uJ3QgcmUtbmljZSBhIHRhc2sgdW5sZXNzIHlvdSB1bmRlcnN0
YW5kIGhvdyB0aGUgc2NoZWR1bGVyDQp3b3JrcywgYW5kIHlvdSBjYW4gcmVh
bGx5IGNvbnZpbmNlIHlvdXJzZWxmIHRoYXQgaXQncyBhIGdvb2QgaWRlYS4N
Cg0KDQpDT05DTFVTSU9ODQoNClBsZWFzZSBsZXQgbWUga25vdyBob3cgd2Vs
bCB0aGlzIHBhdGNoIHdvcmtzIGZvciB5b3UuICBBbHNvLCBpZiB5b3UgZmlu
ZCBteQ0KaW1wbGVtZW50YXRpb24gb2YgUU5YIHNjaGVkdWxpbmcgaXMgaW5j
b3JyZWN0IG9yIGluY29tcGxldGUsIEkgd291bGQgYmUgdmVyeQ0KZ2xhZCB0
byBoZWFyIGZyb20geW91Lg0KDQpIYXBweSB0YXNrLXN3aXRjaGluZyA6LSkN
Cg0KCS0tIEFkYW0gTWNLZWUJCTxhbWNrZWVAcG9ib3hlcy5jb20+DQo=
--12583424-995584577-870421531=:2487
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="QNX-scheduler-2.0.31-pre2-4.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.970801014531.2487C@titan.acua.org>
Content-Description:

LS0tIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYy5vcmlnCVRodSBKdWwgMzEgMTU6
NTA6NTggMTk5Nw0KKysrIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYwlUaHUgSnVs
IDMxIDE1OjUxOjA0IDE5OTcNCkBAIC02ODIsMTIgKzY4MiwzNCBAQA0KIAll
bHNlDQogCQl0dHlfcGdycCA9IC0xOw0KIA0KLQkvKiBzY2FsZSBwcmlvcml0
eSBhbmQgbmljZSB2YWx1ZXMgZnJvbSB0aW1lc2xpY2VzIHRvIC0yMC4uMjAg
Ki8NCisJLyogc2NhbGUgcHJpb3JpdHkgYW5kIG5pY2UgdmFsdWVzIGZyb20g
cnVuLXF1ZXVlICMgdG8gLTIwLi4yMCAqLw0KIAkvKiB0byBtYWtlIGl0IGxv
b2sgbGlrZSBhICJub3JtYWwiIHVuaXggcHJpb3JpdHkvbmljZSB2YWx1ZSAg
Ki8NCi0JcHJpb3JpdHkgPSB0c2stPmNvdW50ZXI7DQotCXByaW9yaXR5ID0g
MjAgLSAocHJpb3JpdHkgKiAxMCArIERFRl9QUklPUklUWSAvIDIpIC8gREVG
X1BSSU9SSVRZOw0KLQluaWNlID0gdHNrLT5wcmlvcml0eTsNCi0JbmljZSA9
IDIwIC0gKG5pY2UgKiAyMCArIERFRl9QUklPUklUWSAvIDIpIC8gREVGX1BS
SU9SSVRZOw0KKwlwcmlvcml0eSA9IHRzay0+cnVuX3E7DQorCWlmIChwcmlv
cml0eSA8IERFRl9SVU5fUVVFVUUpIHsNCisJICAgICAgICBwcmlvcml0eSAq
PSAxOTsNCisJCXByaW9yaXR5IC89IChERUZfUlVOX1FVRVVFIC0gMSk7DQor
CQlwcmlvcml0eSA9IC0yMCArIHByaW9yaXR5Ow0KKwl9IGVsc2UgaWYgKHBy
aW9yaXR5ID09IERFRl9SVU5fUVVFVUUpIHsNCisJICAgICAgICBwcmlvcml0
eSA9IDA7DQorCX0gZWxzZSB7DQorCSAgICAgICAgcHJpb3JpdHkgLT0gKERF
Rl9SVU5fUVVFVUUgKyAxKTsNCisJCXByaW9yaXR5ICo9IDE5Ow0KKwkJcHJp
b3JpdHkgLz0gKE5SX1JVTl9RVUVVRVMgLSBERUZfUlVOX1FVRVVFIC0gMik7
DQorCQlwcmlvcml0eSArPSAxOw0KKwl9DQorCW5pY2UgPSB0c2stPnJ1bl9x
X21pbjsNCisJaWYgKG5pY2UgPCBERUZfUlVOX1FVRVVFKSB7DQorCSAgICAg
ICAgbmljZSAqPSAxOTsNCisJCW5pY2UgLz0gKERFRl9SVU5fUVVFVUUgLSAx
KTsNCisJCW5pY2UgPSAtMjAgKyBuaWNlOw0KKwl9IGVsc2UgaWYgKG5pY2Ug
PT0gREVGX1JVTl9RVUVVRSkgew0KKwkgICAgICAgIG5pY2UgPSAwOw0KKwl9
IGVsc2Ugew0KKwkgICAgICAgIG5pY2UgLT0gKERFRl9SVU5fUVVFVUUgKyAx
KTsNCisJCW5pY2UgKj0gMTk7DQorCQluaWNlIC89IChOUl9SVU5fUVVFVUVT
IC0gREVGX1JVTl9RVUVVRSAtIDIpOw0KKwkJbmljZSArPSAxOw0KKwl9DQog
DQogCXJldHVybiBzcHJpbnRmKGJ1ZmZlciwiJWQgKCVzKSAlYyAlZCAlZCAl
ZCAlZCAlZCAlbHUgJWx1IFwNCiAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsZCAl
bGQgJWxkICVsZCAlbGQgJWxkICVsdSAlbHUgJWxkICVsdSAlbHUgJWx1ICVs
dSAlbHUgXA0KLS0tIGxpbnV4L2tlcm5lbC9mb3JrLmMub3JpZwlUaHUgSnVs
IDMxIDE1OjM4OjQ5IDE5OTcNCisrKyBsaW51eC9rZXJuZWwvZm9yay5jCVRo
dSBKdWwgMzEgMTU6Mzk6MDIgMTk5Nw0KQEAgLTI2NCw2ICsyNjQsNyBAQA0K
IAlwLT5sb2NrX2RlcHRoID0gMTsNCiAjZW5kaWYNCiAJcC0+c3RhcnRfdGlt
ZSA9IGppZmZpZXM7DQorCXAtPnJ1bl9xX3N3ID0gTlJfUlVOX1FVRVVFUzsN
CiAJdGFza1tucl0gPSBwOw0KIAlTRVRfTElOS1MocCk7DQogCW5yX3Rhc2tz
Kys7DQotLS0gbGludXgva2VybmVsL3NjaGVkLmMub3JpZwlUaHUgSnVsIDMx
IDE2OjU3OjI4IDE5OTcNCisrKyBsaW51eC9rZXJuZWwvc2NoZWQuYwlUaHUg
SnVsIDMxIDE4OjA2OjQxIDE5OTcNCkBAIC05Miw2ICs5Miw3IEBADQogc3Rh
dGljIHN0cnVjdCBmc19zdHJ1Y3QgaW5pdF9mcyA9IElOSVRfRlM7DQogc3Rh
dGljIHN0cnVjdCBmaWxlc19zdHJ1Y3QgaW5pdF9maWxlcyA9IElOSVRfRklM
RVM7DQogc3RhdGljIHN0cnVjdCBzaWduYWxfc3RydWN0IGluaXRfc2lnbmFs
cyA9IElOSVRfU0lHTkFMUzsNCitzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0
ICogcnVuX3FbTlJfUlVOX1FVRVVFU107DQogDQogc3RydWN0IG1tX3N0cnVj
dCBpbml0X21tID0gSU5JVF9NTTsNCiBzdHJ1Y3QgdGFza19zdHJ1Y3QgaW5p
dF90YXNrID0gSU5JVF9UQVNLOw0KQEAgLTEwNyw2ICsxMDgsNyBAQA0KIA0K
IHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfdG9fcnVucXVldWUoc3RydWN0IHRh
c2tfc3RydWN0ICogcCkNCiB7DQorICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnFfaGVhZCA9IHJ1bl9xW3AtPnJ1bl9xXTsNCiAjaWZkZWYgX19TTVBf
Xw0KIAlpbnQgY3B1PXNtcF9wcm9jZXNzb3JfaWQoKTsNCiAjZW5kaWYJDQpA
QCAtMTE2LDEyICsxMTgsMjQgQEANCiAJCXJldHVybjsNCiAJfQ0KICNlbmRp
Zg0KLQlpZiAocC0+Y291bnRlciA+IGN1cnJlbnQtPmNvdW50ZXIgKyAzKQ0K
KwlpZiAoKHAtPnJ1bl9xIDwgY3VycmVudC0+cnVuX3EpIHx8DQorCSAgICAo
KHAtPnJ1bl9xID09IGN1cnJlbnQtPnJ1bl9xKSAmJg0KKwkgICAgIChwLT5j
b3VudGVyID4gY3VycmVudC0+Y291bnRlciArIDMpKSkNCiAJCW5lZWRfcmVz
Y2hlZCA9IDE7DQogCW5yX3J1bm5pbmcrKzsNCi0JKHAtPnByZXZfcnVuID0g
aW5pdF90YXNrLnByZXZfcnVuKS0+bmV4dF9ydW4gPSBwOw0KLQlwLT5uZXh0
X3J1biA9ICZpbml0X3Rhc2s7DQotCWluaXRfdGFzay5wcmV2X3J1biA9IHA7
DQorDQorCWlmIChxX2hlYWQgPT0gTlVMTCkgew0KKwkgIHJ1bl9xW3AtPnJ1
bl9xXSA9IHA7DQorCSAgcC0+cHJldl9ydW4gPSBwOw0KKwkgIHAtPm5leHRf
cnVuID0gcDsNCisJfSBlbHNlIHsNCisJICBwLT5wcmV2X3J1biA9IHFfaGVh
ZC0+cHJldl9ydW47DQorCSAgcC0+bmV4dF9ydW4gPSBxX2hlYWQ7DQorCSAg
cV9oZWFkLT5wcmV2X3J1bi0+bmV4dF9ydW4gPSBwOw0KKwkgIHFfaGVhZC0+
cHJldl9ydW4gPSBwOw0KKwl9DQorCXAtPmxhc3RfcnVuID0gamlmZmllczsN
CisNCiAjaWZkZWYgX19TTVBfXw0KIAkvKiB0aGlzIGlzIHNhZmUgb25seSBp
ZiBjYWxsZWQgd2l0aCBjbGkoKSovDQogCXdoaWxlKHNldF9iaXQoMzEsJnNt
cF9wcm9jZXNzX2F2YWlsYWJsZSkpDQpAQCAtMTU0LDggKzE2OCw5IEBADQog
DQogc3RhdGljIGlubGluZSB2b2lkIGRlbF9mcm9tX3J1bnF1ZXVlKHN0cnVj
dCB0YXNrX3N0cnVjdCAqIHApDQogew0KLQlzdHJ1Y3QgdGFza19zdHJ1Y3Qg
Km5leHQgPSBwLT5uZXh0X3J1bjsNCiAJc3RydWN0IHRhc2tfc3RydWN0ICpw
cmV2ID0gcC0+cHJldl9ydW47DQorCXN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4
dCA9IHAtPm5leHRfcnVuOw0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnFfaGVh
ZCA9IHJ1bl9xW3AtPnJ1bl9xXTsNCiANCiAjaWYgMQkvKiBzYW5pdHkgdGVz
dHMgKi8NCiAJaWYgKCFuZXh0IHx8ICFwcmV2KSB7DQpAQCAtMTcyLDI2ICsx
ODcsNTQgQEANCiAJCXJldHVybjsNCiAJfQ0KIAlucl9ydW5uaW5nLS07DQot
CW5leHQtPnByZXZfcnVuID0gcHJldjsNCisNCisJLyogcmVtb3ZlIGxpbmtz
IHRvIHAgKi8NCiAJcHJldi0+bmV4dF9ydW4gPSBuZXh0Ow0KLQlwLT5uZXh0
X3J1biA9IE5VTEw7DQorCW5leHQtPnByZXZfcnVuID0gcHJldjsNCisJLyog
c2V0IHAncyBsaW5rcyAqLw0KIAlwLT5wcmV2X3J1biA9IE5VTEw7DQorCXAt
Pm5leHRfcnVuID0gTlVMTDsNCisgICAgICAgCS8qIGlmIHAgd2FzIHRoZSBx
X2hlYWQsIHJlc2V0IHFfaGVhZCAqLw0KKwlpZiAocCA9PSBxX2hlYWQpIHsN
CisJICAgICAgICBpZiAobmV4dCA9PSBwKQ0KKwkgICAgICAgICAgICAgICAg
cnVuX3FbcC0+cnVuX3FdID0gTlVMTDsNCisJCWVsc2UNCisJCSAgICAgICAg
cnVuX3FbcC0+cnVuX3FdID0gbmV4dDsNCisJfQ0KKw0KIH0NCiANCi1zdGF0
aWMgaW5saW5lIHZvaWQgbW92ZV9sYXN0X3J1bnF1ZXVlKHN0cnVjdCB0YXNr
X3N0cnVjdCAqIHApDQorc3RhdGljIGlubGluZSB2b2lkIHN3aXRjaF9ydW5x
dWV1ZXMoc3RydWN0IHRhc2tfc3RydWN0ICogcCwgdW5zaWduZWQgaW50IG5l
d19ydW5fcSkNCiB7DQotCXN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCA9IHAt
Pm5leHRfcnVuOw0KIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXYgPSBwLT5w
cmV2X3J1bjsNCisJc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0ID0gcC0+bmV4
dF9ydW47DQorCXN0cnVjdCB0YXNrX3N0cnVjdCAqcV9oZWFkID0gcnVuX3Fb
cC0+cnVuX3FdOw0KIA0KLQkvKiByZW1vdmUgZnJvbSBsaXN0ICovDQotCW5l
eHQtPnByZXZfcnVuID0gcHJldjsNCisJLyogcmVtb3ZlIGxpbmtzIHRvIHAg
Ki8NCiAJcHJldi0+bmV4dF9ydW4gPSBuZXh0Ow0KLQkvKiBhZGQgYmFjayB0
byBsaXN0ICovDQotCXAtPm5leHRfcnVuID0gJmluaXRfdGFzazsNCi0JcHJl
diA9IGluaXRfdGFzay5wcmV2X3J1bjsNCi0JaW5pdF90YXNrLnByZXZfcnVu
ID0gcDsNCi0JcC0+cHJldl9ydW4gPSBwcmV2Ow0KLQlwcmV2LT5uZXh0X3J1
biA9IHA7DQorCW5leHQtPnByZXZfcnVuID0gcHJldjsNCisgICAgICAgCS8q
IGlmIHAgd2FzIHRoZSBxX2hlYWQsIHJlc2V0IHFfaGVhZCAqLw0KKwlpZiAo
cCA9PSBxX2hlYWQpIHsNCisJICAgICAgICBpZiAobmV4dCA9PSBwKQ0KKwkg
ICAgICAgICAgICAgICAgcnVuX3FbcC0+cnVuX3FdID0gTlVMTDsNCisJCWVs
c2UNCisJCSAgICAgICAgcnVuX3FbcC0+cnVuX3FdID0gbmV4dDsNCisJfQ0K
Kw0KKwlwLT5ydW5fcSA9IG5ld19ydW5fcTsNCisJcV9oZWFkID0gcnVuX3Fb
cC0+cnVuX3FdOw0KKwlpZiAocV9oZWFkID09IE5VTEwpIHsNCisJICBydW5f
cVtwLT5ydW5fcV0gPSBwOw0KKwkgIHAtPnByZXZfcnVuID0gcDsNCisJICBw
LT5uZXh0X3J1biA9IHA7DQorCX0gZWxzZSB7DQorCSAgcC0+cHJldl9ydW4g
PSBxX2hlYWQtPnByZXZfcnVuOw0KKwkgIHAtPm5leHRfcnVuID0gcV9oZWFk
Ow0KKwkgIHFfaGVhZC0+cHJldl9ydW4tPm5leHRfcnVuID0gcDsNCisJICBx
X2hlYWQtPnByZXZfcnVuID0gcDsNCisJfQ0KKwlwLT5sYXN0X3J1biA9IGpp
ZmZpZXM7DQorCXAtPmNvdW50ZXIgPSBERUZfUFJJT1JJVFk7DQogfQ0KIA0K
IC8qDQpAQCAtMjU1LDcgKzI5OCw3IEBADQogCSAqIHJ1bnF1ZXVlICh0YWtp
bmcgcHJpb3JpdGllcyB3aXRoaW4gcHJvY2Vzc2VzDQogCSAqIGludG8gYWNj
b3VudCkuDQogCSAqLw0KLQlpZiAocC0+cG9saWN5ICE9IFNDSEVEX09USEVS
KQ0KKwlpZiAocC0+cG9saWN5ICE9IFNDSEVEX0FEQVBUSVZFKQ0KIAkJcmV0
dXJuIDEwMDAgKyBwLT5ydF9wcmlvcml0eTsNCiANCiAJLyoNCkBAIC0yOTUs
NyArMzM4LDggQEANCiAgKi8NCiBhc21saW5rYWdlIHZvaWQgc2NoZWR1bGUo
dm9pZCkNCiB7DQotCWludCBjOw0KKyAgICAgICAgc3RhdGljIHVuc2lnbmVk
IGxvbmcgbmV4dF9tYWludGVuYW5jZSA9IDA7DQorCWludCBjLCBxLCB3ZWln
aHQ7DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqIHA7DQogCXN0cnVjdCB0YXNr
X3N0cnVjdCAqIHByZXYsICogbmV4dDsNCiAJdW5zaWduZWQgbG9uZyB0aW1l
b3V0ID0gMDsNCkBAIC0zMTgsOSArMzYyLDkgQEANCiAJcHJldiA9IGN1cnJl
bnQ7DQogCWNsaSgpOw0KIAkvKiBtb3ZlIGFuIGV4aGF1c3RlZCBSUiBwcm9j
ZXNzIHRvIGJlIGxhc3QuLiAqLw0KLQlpZiAoIXByZXYtPmNvdW50ZXIgJiYg
cHJldi0+cG9saWN5ID09IFNDSEVEX1JSKSB7DQorCWlmIChwcmV2LT5waWQg
JiYgIXByZXYtPmNvdW50ZXIgJiYgcHJldi0+cG9saWN5ID09IFNDSEVEX1JS
KSB7DQogCQlwcmV2LT5jb3VudGVyID0gcHJldi0+cHJpb3JpdHk7DQotCQlt
b3ZlX2xhc3RfcnVucXVldWUocHJldik7DQorCQlydW5fcVtwcmV2LT5ydW5f
cV0gPSBwcmV2LT5uZXh0X3J1bjsNCiAJfQ0KIAlzd2l0Y2ggKHByZXYtPnN0
YXRlKSB7DQogCQljYXNlIFRBU0tfSU5URVJSVVBUSUJMRToNCkBAIC0zMzYs
MTAgKzM4MCw0MSBAQA0KIAkJCX0NCiAJCWRlZmF1bHQ6DQogCQkJZGVsX2Zy
b21fcnVucXVldWUocHJldik7DQorCQkJcHJldi0+cnVuX3EgPSBwcmV2LT5y
dW5fcV9taW47DQorCQkJcHJldi0+Y291bnRlciA9IERFRl9QUklPUklUWTsN
CiAJCWNhc2UgVEFTS19SVU5OSU5HOg0KIAl9DQotCXAgPSBpbml0X3Rhc2su
bmV4dF9ydW47DQogCXN0aSgpOw0KKw0KKwkvKg0KKwkgKiBUYWtlIGNhcmUg
b2YgcmUtbmljZWQgcHJvY2Vzc2VzLCBwcm9tb3RlIHN0YXJ2aW5nIHByb2Nl
c3Nlcw0KKwkgKi8NCisJaWYgKGppZmZpZXMgPj0gbmV4dF9tYWludGVuYW5j
ZSkgew0KKwkgICAgICAgIGZvcl9lYWNoX3Rhc2socCkgew0KKwkJICAgICAg
ICBpZiAocC0+cnVuX3Ffc3cgPCBOUl9SVU5fUVVFVUVTKSB7DQorCQkJICAg
ICAgICBjbGkoKTsNCisJCQkJaWYgKHAtPm5leHRfcnVuKSB7DQorCQkJCSAg
ICAgICAgcC0+cnVuX3FfbWluID0gcC0+cnVuX3Ffc3c7DQorCQkJCSAgICAg
ICAgaWYgKHAtPnJ1bl9xICE9IHAtPnJ1bl9xX3N3KQ0KKwkJCQkJICAgICAg
ICBzd2l0Y2hfcnVucXVldWVzKHAsIHAtPnJ1bl9xX3N3KTsNCisJCQkJfSBl
bHNlIHsNCisJCQkJCXAtPnJ1bl9xX21pbiA9IHAtPnJ1bl9xID0gcC0+cnVu
X3Ffc3c7DQorCQkJCX0NCisJCQkJcC0+cnVuX3Ffc3cgPSBOUl9SVU5fUVVF
VUVTOw0KKwkJCQlzdGkoKTsNCisJCSAgICAgICAgfSBlbHNlIGlmIChwLT5u
ZXh0X3J1biAmJg0KKwkJCQkgICAoamlmZmllcyAtIHAtPmxhc3RfcnVuID49
IEhaKSAmJg0KKwkJCQkgICAocC0+cnVuX3EgPiBwLT5ydW5fcV9taW4pICYm
DQorCQkJCSAgIHByZXYtPnBpZCAmJg0KKwkJCQkgICAocHJldi0+cnVuX3Eg
PCBwLT5ydW5fcSkpDQorCQkJew0KKwkJCSAgICAgICAgY2xpKCk7DQorCQkJ
CXN3aXRjaF9ydW5xdWV1ZXMocCwgcC0+cnVuX3EgLSAxKTsNCisJCQkJc3Rp
KCk7DQorCQkJfQ0KKwkJfQ0KKwkJbmV4dF9tYWludGVuYW5jZSA9IGppZmZp
ZXMgKyAoNTAwKkhaLzEwMDApOw0KKwl9DQogCQ0KICNpZmRlZiBfX1NNUF9f
DQogCS8qDQpAQCAtMzU2LDIxICs0MzEsNDcgQEANCiAgKiBpbnRlcnJ1cHRz
IGFyZSBlbmFibGVkLiBIb3dldmVyLCB0aGV5IHdpbGwgYmUgcHV0IG9uIGZy
b250IG9mIHRoZQ0KICAqIGxpc3QsIHNvIG91ciBsaXN0IHN0YXJ0aW5nIGF0
ICJwIiBpcyBlc3NlbnRpYWxseSBmaXhlZC4NCiAgKi8NCi0vKiB0aGlzIGlz
IHRoZSBzY2hlZHVsZXIgcHJvcGVyOiAqLw0KKyAgICAgICAgLyogcGljayBh
IHByb2Nlc3MgKi8NCiAJYyA9IC0xMDAwOw0KIAluZXh0ID0gaWRsZV90YXNr
Ow0KLQl3aGlsZSAocCAhPSAmaW5pdF90YXNrKSB7DQotCQlpbnQgd2VpZ2h0
ID0gZ29vZG5lc3MocCwgcHJldiwgdGhpc19jcHUpOw0KLQkJaWYgKHdlaWdo
dCA+IGMpDQotCQkJYyA9IHdlaWdodCwgbmV4dCA9IHA7DQotCQlwID0gcC0+
bmV4dF9ydW47DQorCWZvciAocSA9IDA7IHEgPCBOUl9SVU5fUVVFVUVTOyBx
KyspIHsNCisJICAgICAgICBwID0gcnVuX3FbcV07DQorCQlpZiAoIXApIGNv
bnRpbnVlOw0KKwkJZG8gew0KKwkJICAgICAgICBpZiAocC0+cGlkKSB7DQor
CQkgICAgICAgICAgICAgICAgd2VpZ2h0ID0gZ29vZG5lc3MocCwgcHJldiwg
dGhpc19jcHUpOw0KKwkJCQlpZiAod2VpZ2h0ID4gYykgew0KKwkJCQkgICAg
ICAgIGMgPSB3ZWlnaHQ7DQorCQkJCSAgICAgICAgbmV4dCA9IHA7DQorCQkJ
CX0NCisJCQl9DQorCQkJcCA9IHAtPm5leHRfcnVuOw0KKwkJfSB3aGlsZSAo
cCAhPSBydW5fcVtxXSk7DQorCQlpZiAoIWMpIHsNCisJCSAgICAgICAgcCA9
IHJ1bl9xW3FdOw0KKwkJCWRvIHsNCisJCQkgICAgICAgIHAtPmNvdW50ZXIg
PSBERUZfUFJJT1JJVFk7DQorCQkJCXAgPSBwLT5uZXh0X3J1bjsNCisJCQl9
IHdoaWxlIChwICE9IHJ1bl9xW3FdKTsNCisJCX0NCisJCWlmIChjID4gLTEw
MDApIGJyZWFrOw0KIAl9DQogDQotCS8qIGlmIGFsbCBydW5uYWJsZSBwcm9j
ZXNzZXMgaGF2ZSAiY291bnRlciA9PSAwIiwgcmUtY2FsY3VsYXRlIGNvdW50
ZXJzICovDQotCWlmICghYykgew0KLQkJZm9yX2VhY2hfdGFzayhwKQ0KLQkJ
CXAtPmNvdW50ZXIgPSAocC0+Y291bnRlciA+PiAxKSArIHAtPnByaW9yaXR5
Ow0KKwluZXh0LT5sYXN0X3J1biA9IGppZmZpZXM7DQorCS8qIFBvc3NpYmx5
IGRlbW90ZSB0aGUgcHJldmlvdXMgdGFzayAqLw0KKwlpZiAocHJldi0+cGlk
ICYmIG5leHQtPnBpZCAmJg0KKwkgICAgcHJldi0+bmV4dF9ydW4gJiYNCisJ
ICAgICFwcmV2LT5jb3VudGVyICYmDQorCSAgICAobmV4dCAhPSBwcmV2KSAm
Jg0KKwkgICAgKHEgPT0gcHJldi0+cnVuX3EpICYmDQorCSAgICAocSA8IE5S
X1JVTl9RVUVVRVMgLSAyKSAmJg0KKwkgICAgKHByZXYtPnBvbGljeSA9PSBT
Q0hFRF9BREFQVElWRSkpDQorCXsNCisJICAgICAgICBjbGkoKTsNCisJCXN3
aXRjaF9ydW5xdWV1ZXMocHJldiwgcHJldi0+cnVuX3EgKyAxKTsNCisJCXN0
aSgpOw0KIAl9DQorDQogI2lmZGVmIF9fU01QX18NCiAJLyoNCiAJICoJQWxs
b2NhdGUgcHJvY2VzcyB0byBDUFUNCkBAIC0xMzgwLDE2ICsxNDgxLDE2IEBA
DQogCWlmIChwb2xpY3kgPCAwKQ0KIAkJcG9saWN5ID0gcC0+cG9saWN5Ow0K
IAllbHNlIGlmIChwb2xpY3kgIT0gU0NIRURfRklGTyAmJiBwb2xpY3kgIT0g
U0NIRURfUlIgJiYNCi0JCSBwb2xpY3kgIT0gU0NIRURfT1RIRVIpDQorCQkg
cG9saWN5ICE9IFNDSEVEX0FEQVBUSVZFKQ0KIAkJcmV0dXJuIC1FSU5WQUw7
DQogCQ0KIAkvKg0KIAkgKiBWYWxpZCBwcmlvcml0aWVzIGZvciBTQ0hFRF9G
SUZPIGFuZCBTQ0hFRF9SUiBhcmUgMS4uOTksIHZhbGlkDQotCSAqIHByaW9y
aXR5IGZvciBTQ0hFRF9PVEhFUiBpcyAwLg0KKwkgKiBwcmlvcml0eSBmb3Ig
U0NIRURfQURBUFRJVkUgaXMgMC4NCiAJICovDQogCWlmIChscC5zY2hlZF9w
cmlvcml0eSA8IDAgfHwgbHAuc2NoZWRfcHJpb3JpdHkgPiA5OSkNCiAJCXJl
dHVybiAtRUlOVkFMOw0KLQlpZiAoKHBvbGljeSA9PSBTQ0hFRF9PVEhFUikg
IT0gKGxwLnNjaGVkX3ByaW9yaXR5ID09IDApKQ0KKwlpZiAoKHBvbGljeSA9
PSBTQ0hFRF9BREFQVElWRSkgIT0gKGxwLnNjaGVkX3ByaW9yaXR5ID09IDAp
KQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQogDQogCWlmICgocG9saWN5ID09IFND
SEVEX0ZJRk8gfHwgcG9saWN5ID09IFNDSEVEX1JSKSAmJiAhc3VzZXIoKSkN
CkBAIC0xNDAyLDcgKzE1MDMsNyBAQA0KIAlwLT5ydF9wcmlvcml0eSA9IGxw
LnNjaGVkX3ByaW9yaXR5Ow0KIAljbGkoKTsNCiAJaWYgKHAtPm5leHRfcnVu
KQ0KLQkJbW92ZV9sYXN0X3J1bnF1ZXVlKHApOw0KKwkgICAgICAgIHJ1bl9x
W3AtPnJ1bl9xXSA9IHAtPm5leHRfcnVuOw0KIAlzdGkoKTsNCiAJbmVlZF9y
ZXNjaGVkID0gMTsNCiAJcmV0dXJuIDA7DQpAQCAtMTQ2MCw3ICsxNTYxLDcg
QEANCiB7DQogCWNsaSgpOw0KIAlpZiAoY3VycmVudC0+bmV4dF9ydW4pIHsN
Ci0JCW1vdmVfbGFzdF9ydW5xdWV1ZShjdXJyZW50KTsgDQorCSAgICAgICAg
cnVuX3FbY3VycmVudC0+cnVuX3FdID0gY3VycmVudC0+bmV4dF9ydW47DQog
CQljdXJyZW50LT5jb3VudGVyID0gMDsNCiAJCW5lZWRfcmVzY2hlZCA9IDE7
DQogCX0NCkBAIC0xNDc0LDcgKzE1NzUsNyBAQA0KIAkgICAgICBjYXNlIFND
SEVEX0ZJRk86DQogCSAgICAgIGNhc2UgU0NIRURfUlI6DQogCQlyZXR1cm4g
OTk7DQotCSAgICAgIGNhc2UgU0NIRURfT1RIRVI6DQorCSAgICAgIGNhc2Ug
U0NIRURfQURBUFRJVkU6DQogCQlyZXR1cm4gMDsNCiAJfQ0KIA0KQEAgLTE0
ODcsNyArMTU4OCw3IEBADQogCSAgICAgIGNhc2UgU0NIRURfRklGTzoNCiAJ
ICAgICAgY2FzZSBTQ0hFRF9SUjoNCiAJCXJldHVybiAxOw0KLQkgICAgICBj
YXNlIFNDSEVEX09USEVSOg0KKwkgICAgICBjYXNlIFNDSEVEX0FEQVBUSVZF
Og0KIAkJcmV0dXJuIDA7DQogCX0NCiANCkBAIC0xNTU1LDcgKzE2NTYsNyBA
QA0KIAkJcmV0dXJuIC1FSU5WQUw7DQogDQogCWlmICh0LnR2X3NlYyA9PSAw
ICYmIHQudHZfbnNlYyA8PSAyMDAwMDAwTCAmJg0KLQkgICAgY3VycmVudC0+
cG9saWN5ICE9IFNDSEVEX09USEVSKSB7DQorCSAgICBjdXJyZW50LT5wb2xp
Y3kgIT0gU0NIRURfQURBUFRJVkUpIHsNCiAJCS8qDQogCQkgKiBTaG9ydCBk
ZWxheSByZXF1ZXN0cyB1cCB0byAyIG1zIHdpbGwgYmUgaGFuZGxlZCB3aXRo
DQogCQkgKiBoaWdoIHByZWNpc2lvbiBieSBhIGJ1c3kgd2FpdCBmb3IgYWxs
IHJlYWwtdGltZSBwcm9jZXNzZXMuDQpAQCAtMTY0NSw3ICsxNzQ2LDcgQEAN
CiAJICoJV2UgaGF2ZSB0byBkbyBhIGxpdHRsZSBtYWdpYyB0byBnZXQgdGhl
IGZpcnN0DQogCSAqCXByb2Nlc3MgcmlnaHQgaW4gU01QIG1vZGUuDQogCSAq
Lw0KLQlpbnQgY3B1PXNtcF9wcm9jZXNzb3JfaWQoKTsNCisJaW50IGksIGNw
dT1zbXBfcHJvY2Vzc29yX2lkKCk7DQogI2lmbmRlZiBfX1NNUF9fCQ0KIAlj
dXJyZW50X3NldFtjcHVdPSZpbml0X3Rhc2s7DQogI2Vsc2UNCkBAIC0xNjU2
LDQgKzE3NTcsOSBAQA0KIAlpbml0X2JoKFRJTUVSX0JILCB0aW1lcl9iaCk7
DQogCWluaXRfYmgoVFFVRVVFX0JILCB0cXVldWVfYmgpOw0KIAlpbml0X2Jo
KElNTUVESUFURV9CSCwgaW1tZWRpYXRlX2JoKTsNCisNCisJZm9yIChpID0g
MDsgaSA8IE5SX1JVTl9RVUVVRVM7IGkrKykNCisJICAgICAgICBydW5fcVtp
XSA9IE5VTEw7DQorCXJ1bl9xW0RFRl9SVU5fUVVFVUVdID0gJmluaXRfdGFz
azsNCisJcHJpbnRrKCJRTlgtc3R5bGUgc2NoZWR1bGluZyB2MS4wNCA8YW1j
a2VlQHBvYm94ZXMuY29tPlxuIik7DQogfQ0KLS0tIGxpbnV4L2tlcm5lbC9z
eXMuYy5vcmlnCVRodSBKdWwgMzEgMTU6MzQ6MTEgMTk5Nw0KKysrIGxpbnV4
L2tlcm5lbC9zeXMuYwlUaHUgSnVsIDMxIDE1OjQxOjI3IDE5OTcNCkBAIC02
NywyMyArNjcsMjUgQEANCiB7DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqcDsN
CiAJaW50IGVycm9yID0gRVNSQ0g7DQotCXVuc2lnbmVkIGludCBwcmlvcml0
eTsNCisJdW5zaWduZWQgaW50IHJ1bl9xOw0KIA0KIAlpZiAod2hpY2ggPiAy
IHx8IHdoaWNoIDwgMCkNCiAJCXJldHVybiAtRUlOVkFMOw0KIA0KLQkvKiBu
b3JtYWxpemU6IGF2b2lkIHNpZ25lZCBkaXZpc2lvbiAocm91bmRpbmcgcHJv
YmxlbXMpICovDQotCXByaW9yaXR5ID0gbmljZXZhbDsNCi0JaWYgKG5pY2V2
YWwgPCAwKQ0KLQkJcHJpb3JpdHkgPSAtbmljZXZhbDsNCi0JaWYgKHByaW9y
aXR5ID4gMjApDQotCQlwcmlvcml0eSA9IDIwOw0KLQlwcmlvcml0eSA9IChw
cmlvcml0eSAqIERFRl9QUklPUklUWSArIDEwKSAvIDIwICsgREVGX1BSSU9S
SVRZOw0KLQ0KLQlpZiAobmljZXZhbCA+PSAwKSB7DQotCQlwcmlvcml0eSA9
IDIqREVGX1BSSU9SSVRZIC0gcHJpb3JpdHk7DQotCQlpZiAoIXByaW9yaXR5
KQ0KLQkJCXByaW9yaXR5ID0gMTsNCisJaWYgKG5pY2V2YWwgPCAtMjApIG5p
Y2V2YWwgPSAtMjA7DQorCWVsc2UgaWYgKG5pY2V2YWwgPiAyMCkgbmljZXZh
bCA9IDIwOw0KKwlpZiAobmljZXZhbCA8IDApIHsNCisJICBydW5fcSA9IC1u
aWNldmFsIC0gMTsNCisJICBydW5fcSAqPSAoREVGX1JVTl9RVUVVRSAtIDEp
Ow0KKwkgIHJ1bl9xIC89IDE5OyANCisJICBydW5fcSA9IERFRl9SVU5fUVVF
VUUgLSAxIC0gcnVuX3E7DQorCX0gZWxzZSBpZiAoIW5pY2V2YWwpIHsNCisJ
ICBydW5fcSA9IERFRl9SVU5fUVVFVUU7DQorCX0gZWxzZSB7DQorCSAgcnVu
X3EgPSBuaWNldmFsIC0gMTsNCisJICBydW5fcSAqPSAoTlJfUlVOX1FVRVVF
UyAtIERFRl9SVU5fUVVFVUUgLSAyKTsNCisJICBydW5fcSAvPSAxOTsNCisJ
ICBydW5fcSA9IERFRl9SVU5fUVVFVUUgKyAxICsgcnVuX3E7DQogCX0NCiAN
CiAJZm9yX2VhY2hfdGFzayhwKSB7DQpAQCAtOTYsMTAgKzk4LDEwIEBADQog
CQl9DQogCQlpZiAoZXJyb3IgPT0gRVNSQ0gpDQogCQkJZXJyb3IgPSAwOw0K
LQkJaWYgKHByaW9yaXR5ID4gcC0+cHJpb3JpdHkgJiYgIXN1c2VyKCkpDQot
CQkJZXJyb3IgPSBFQUNDRVM7DQorCQlpZiAocnVuX3EgPCBwLT5ydW5fcV9t
aW4gJiYgIXN1c2VyKCkpDQorCQkgICAgICAgIGVycm9yID0gRUFDQ0VTOw0K
IAkJZWxzZQ0KLQkJCXAtPnByaW9yaXR5ID0gcHJpb3JpdHk7DQorCQkgICAg
ICAgIHAtPnJ1bl9xX3N3ID0gcnVuX3E7DQogCX0NCiAJcmV0dXJuIC1lcnJv
cjsNCiB9DQpAQCAtMTEyLDcgKzExNCw3IEBADQogYXNtbGlua2FnZSBpbnQg
c3lzX2dldHByaW9yaXR5KGludCB3aGljaCwgaW50IHdobykNCiB7DQogCXN0
cnVjdCB0YXNrX3N0cnVjdCAqcDsNCi0JbG9uZyBtYXhfcHJpbyA9IC1FU1JD
SDsNCisJdW5zaWduZWQgaW50IHJ1bl9xX21pbiA9IE5SX1JVTl9RVUVVRVM7
DQogDQogCWlmICh3aGljaCA+IDIgfHwgd2hpY2ggPCAwKQ0KIAkJcmV0dXJu
IC1FSU5WQUw7DQpAQCAtMTIwLDE0ICsxMjIsMjcgQEANCiAJZm9yX2VhY2hf
dGFzayAocCkgew0KIAkJaWYgKCFwcm9jX3NlbChwLCB3aGljaCwgd2hvKSkN
CiAJCQljb250aW51ZTsNCi0JCWlmIChwLT5wcmlvcml0eSA+IG1heF9wcmlv
KQ0KLQkJCW1heF9wcmlvID0gcC0+cHJpb3JpdHk7DQorCQlpZiAocC0+cnVu
X3FfbWluIDwgcnVuX3FfbWluKQ0KKwkJCXJ1bl9xX21pbiA9IHAtPnJ1bl9x
X21pbjsNCiAJfQ0KIA0KLQkvKiBzY2FsZSB0aGUgcHJpb3JpdHkgZnJvbSB0
aW1lc2xpY2UgdG8gMC4uNDAgKi8NCi0JaWYgKG1heF9wcmlvID4gMCkNCi0J
CW1heF9wcmlvID0gKG1heF9wcmlvICogMjAgKyBERUZfUFJJT1JJVFkvMikg
LyBERUZfUFJJT1JJVFk7DQotCXJldHVybiBtYXhfcHJpbzsNCisgICAgICAg
IGlmIChydW5fcV9taW4gPT0gTlJfUlVOX1FVRVVFUykNCisgICAgICAgICAg
ICAgICAgcmV0dXJuIC1FU1JDSDsNCisNCisJLyogc2NhbGUgdGhlIHJ1bl9x
IHRvIDAuLjQwICovDQorCWlmIChydW5fcV9taW4gPCBERUZfUlVOX1FVRVVF
KSB7DQorCSAgICAgICAgcnVuX3FfbWluICo9IDE5Ow0KKwkJcnVuX3FfbWlu
IC89IChERUZfUlVOX1FVRVVFIC0gMSk7DQorCX0gZWxzZSBpZiAocnVuX3Ff
bWluID09IERFRl9SVU5fUVVFVUUpIHsNCisJICAgICAgICBydW5fcV9taW4g
PSAyMDsNCisJfSBlbHNlIHsNCisJICAgICAgICBydW5fcV9taW4gLT0gKERF
Rl9SVU5fUVVFVUUgKyAxKTsNCisJCXJ1bl9xX21pbiAqPSAxOTsNCisJCXJ1
bl9xX21pbiAvPSAoTlJfUlVOX1FVRVVFUyAtIERFRl9SVU5fUVVFVUUgLSAy
KTsNCisJCXJ1bl9xX21pbiArPSAyMTsNCisJfQ0KKyAgICAgICAgcnVuX3Ff
bWluID0gNDAgLSBydW5fcV9taW47DQorCXJldHVybiBydW5fcV9taW47DQog
fQ0KIA0KICNpZm5kZWYgX19hbHBoYV9fDQotLS0gbGludXgvbW0vdm1zY2Fu
LmMub3JpZwlUaHUgSnVsIDMxIDE1OjUxOjQxIDE5OTcNCisrKyBsaW51eC9t
bS92bXNjYW4uYwlUaHUgSnVsIDMxIDE2OjI3OjQ4IDE5OTcNCkBAIC00NTAs
NiArNDUwLDcgQEANCiAJY3VycmVudC0+cHJpb3JpdHkgPSAzMjsgIC8qIEZp
eG1lIC0tLSB3ZSBuZWVkIHRvIHN0YW5kYXJkaXNlIG91cg0KIAkJCQkgICAg
bmFtaW5ncyBmb3IgUE9TSVguNCByZWFsdGltZSBzY2hlZHVsaW5nDQogCQkJ
CSAgICBwcmlvcml0aWVzLiAgKi8NCisJY3VycmVudC0+cnVuX3Ffc3cgPSAw
Ow0KIA0KIAlpbml0X3N3YXBfdGltZXIoKTsNCiAJDQotLS0gbGludXgvaW5j
bHVkZS9saW51eC9zY2hlZC5oLm9yaWcJVGh1IEp1bCAzMSAxNTozNDoxOSAx
OTk3DQorKysgbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oCVRodSBKdWwg
MzEgMTU6NDI6MTEgMTk5Nw0KQEAgLTg3LDEwICs4NywxMyBAQA0KICNkZWZp
bmUgVEFTS19TVE9QUEVECQk0DQogI2RlZmluZSBUQVNLX1NXQVBQSU5HCQk1
DQogDQorI2RlZmluZSBOUl9SVU5fUVVFVUVTCQkzMgkvKiB0aGUgc2NoZWR1
bGVyIHVzZXMgMzIgcnVuLXF1ZXVlcyAqLw0KKyNkZWZpbmUgREVGX1JVTl9R
VUVVRQkJMTUJLyogZGVmYXVsdCBydW4tcXVldWUgKi8NCisNCiAvKg0KICAq
IFNjaGVkdWxpbmcgcG9saWNpZXMNCiAgKi8NCi0jZGVmaW5lIFNDSEVEX09U
SEVSCQkwDQorI2RlZmluZSBTQ0hFRF9BREFQVElWRQkJMA0KICNkZWZpbmUg
U0NIRURfRklGTwkJMQ0KICNkZWZpbmUgU0NIRURfUlIJCTINCiANCkBAIC0y
NDQsNiArMjQ3LDkgQEANCiAJc3RydWN0IG1tX3N0cnVjdCAqbW07DQogLyog
c2lnbmFsIGhhbmRsZXJzICovDQogCXN0cnVjdCBzaWduYWxfc3RydWN0ICpz
aWc7DQorLyogUU5YLXN0eWxlIHNjaGVkdWxlciAqLw0KKyAgICAgICAgdW5z
aWduZWQgbG9uZyBsYXN0X3J1bjsNCisgICAgICAgIHVuc2lnbmVkIGludCBy
dW5fcSwgcnVuX3FfbWluLCBydW5fcV9zdzsNCiAjaWZkZWYgX19TTVBfXw0K
IAlpbnQgcHJvY2Vzc29yOw0KIAlpbnQgbGFzdF9wcm9jZXNzb3I7DQpAQCAt
Mjc1LDcgKzI4MSw3IEBADQogICovDQogI2RlZmluZSBfU1RLX0xJTQkoOCox
MDI0KjEwMjQpDQogDQotI2RlZmluZSBERUZfUFJJT1JJVFkJKDIwKkhaLzEw
MCkJLyogMjAwIG1zIHRpbWUgc2xpY2VzICovDQorI2RlZmluZSBERUZfUFJJ
T1JJVFkJKDIwMCpIWi8xMDAwKQkvKiAyMDAgbXMgdGltZSBzbGljZXMgKi8N
CiANCiAvKg0KICAqICBJTklUX1RBU0sgaXMgdXNlZCB0byBzZXQgdXAgdGhl
IGZpcnN0IHRhc2sgdGFibGUsIHRvdWNoIGF0DQpAQCAtMjkzLDcgKzI5OSw3
IEBADQogLyogc3VwcGwgZ3JwcyovIHtOT0dST1VQLH0sIFwNCiAvKiBwcm9j
IGxpbmtzKi8gJmluaXRfdGFzaywmaW5pdF90YXNrLE5VTEwsTlVMTCxOVUxM
LE5VTEwsIFwNCiAvKiB1aWQgZXRjICovCTAsMCwwLDAsMCwwLDAsMCwgXA0K
LS8qIHRpbWVvdXQgKi8JMCxTQ0hFRF9PVEhFUiwwLDAsMCwwLDAsMCwwLCBc
DQorLyogdGltZW91dCAqLwkwLFNDSEVEX0FEQVBUSVZFLDAsMCwwLDAsMCww
LDAsIFwNCiAvKiB0aW1lciAqLwl7IE5VTEwsIE5VTEwsIDAsIDAsIGl0X3Jl
YWxfZm4gfSwgXA0KIC8qIHV0aW1lICovCTAsMCwwLDAsMCwgXA0KIC8qIGZs
dCAqLwkwLDAsMCwwLDAsMCwgXA0KQEAgLTMwOSw2ICszMTUsNyBAQA0KIC8q
IGZpbGVzICovCSZpbml0X2ZpbGVzLCBcDQogLyogbW0gKi8JJmluaXRfbW0s
IFwNCiAvKiBzaWduYWxzICovCSZpbml0X3NpZ25hbHMsIFwNCisvKiBRTlgg
c2NoZWQgKi8gMCwgREVGX1JVTl9RVUVVRSwgREVGX1JVTl9RVUVVRSwgTlJf
UlVOX1FVRVVFUyBcDQogfQ0KIA0KIGV4dGVybiBzdHJ1Y3QgICBtbV9zdHJ1
Y3QgaW5pdF9tbTsNCg==
--12583424-995584577-870421531=:2487--