Fw:[patch 2/2] backport of sba sg list management to ccio-dma
"Joel Soete" <[email protected]> Tue, 16 Oct 2007 09:00:32 +0200
| Newsgroups | gmane.linux.ports.hppa |
|---|---|
| Message-ID | <[email protected]> |
--_=__=_XaM3_.1192518032.2A.754951.42.24555.52.42.007.1963376918
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
And here is the main hunk:
This consist of 'backporting' to ccio of the most of Grant's work on sg l=
ist
management of sba-iommu.
According to some stress test on d380 it makes ncr driver more stable; im=
prove
network perf on my d380 (from 110 to 430 kb/s);
(would allow in a next step merge some hunk of sba code in iommu-helper.h=
)
Tia,
J.
---
Pack Scarlet One, ADSL 6 Mbps + Telephonie, a partir de EUR 29,95...
http://www.scarlet.be/
=0A---=0APack Scarlet One, ADSL 6 Mbps + Telephonie, a partir de EUR 29,9=
5...=0Ahttp://www.scarlet.be/
--_=__=_XaM3_.1192518032.2A.754951.42.24555.52.42.007.1963376918
Content-Type: application/octet-stream;
name="=?iso-8859-1?Q?bp-sba=5Fsg-2-ccio-dma.c.patch?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="=?iso-8859-1?Q?bp-sba=5Fsg-2-ccio-dma.c.patch?="
SW5kZXg6IGxpbnV4LWN1cnJlbnQvZHJpdmVycy9wYXJpc2MvY2Npby1kbWEuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBsaW51eC1jdXJyZW50Lm9yaWcvZHJpdmVycy9wYXJpc2MvY2Npby1kbWEu
YwkyMDA3LTEwLTE1IDEwOjQ4OjI3LjAwMDAwMDAwMCArMDAwMAorKysgbGludXgtY3VycmVu
dC9kcml2ZXJzL3BhcmlzYy9jY2lvLWRtYS5jCTIwMDctMTAtMTUgMTQ6MTU6MDMuMDAwMDAw
MDAwICswMDAwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5j
bHVkZSA8YXNtL2hhcmR3YXJlLmg+ICAgICAgIC8qIGZvciByZWdpc3Rlcl9tb2R1bGUoKSAq
LwogI2luY2x1ZGUgPGFzbS9wYXJpc2MtZGV2aWNlLmg+CisjaW5jbHVkZSA8YXNtL2RlbGF5
Lmg+CiAKIC8qCiAqKiBDaG9vc2UgImNjaW8iIHNpbmNlIHRoYXQncyB3aGF0IEhQLVVYIGNh
bGxzIGl0LgpAQCAtMTAyLDcgKzEwMywxMSBAQAogI2RlZmluZSBEQkdfUlVOX1NHKHguLi4p
CiAjZW5kaWYKIAotI2RlZmluZSBDQ0lPX0lOTElORQkJaW5saW5lCisjdW5kZWYgRE1BX0NI
VU5LX1NJWkUKKyNkZWZpbmUgRE1BX0NIVU5LX1NJWkUJCShCSVRTX1BFUl9MT05HICogSU9W
UF9TSVpFKQorI2RlZmluZSBERUxBWUVEX1JFU09VUkNFX0NOVAkxNgorCisjZGVmaW5lIEND
SU9fSU5MSU5FCQlfX2lubGluZV9fCiAjZGVmaW5lIFdSSVRFX1UzMih2YWx1ZSwgYWRkcikJ
X19yYXdfd3JpdGVsKHZhbHVlLCBhZGRyKQogI2RlZmluZSBSRUFEX1UzMihhZGRyKQkJX19y
YXdfcmVhZGwoYWRkcikKIApAQCAtMTM0LDcgKzEzOSw3IEBACiAJdWludDMyX3QJaW9fcGRp
cl9iYXNlOwkvKiBPZmZzZXQgIDcgKi8KIAl1aW50MzJfdAlpb19pb19sb3dfaHY7CS8qIE9m
ZnNldCAgOCAqLwogCXVpbnQzMl90CWlvX2lvX2hpZ2hfaHY7CS8qIE9mZnNldCAgOSAqLwot
ICAgICAgICB1aW50MzJfdCB1bnVzZWQ0WzFdOworCXVpbnQzMl90IHVudXNlZDRbMV07CiAJ
dWludDMyX3QJaW9fY2hhaW5faWRfbWFzazsvKiBPZmZzZXQgMTEgKi8KIAl1aW50MzJfdCB1
bnVzZWQ1WzJdOwogCXVpbnQzMl90CWlvX2lvX2xvdzsJLyogT2Zmc2V0IDE0ICovCkBAIC0y
MjcsMTYgKzIzMiwyOCBAQAogKiogcmV0dXJucyBiZWZvcmUgaXNzdWluZyBzdWJzZXF1ZW50
IHdyaXRlcy4KICovCiAKK3R5cGVkZWYgdW5zaWduZWQgbG9uZwlhZGRyZXNzX3Q7CisKIHN0
cnVjdCBpb2MgewogCXN0cnVjdCBpb2FfcmVnaXN0ZXJzIF9faW9tZW0gKmlvY19yZWdzOwkv
KiBJL08gTU1VIGJhc2UgYWRkcmVzcyAqLwogCXU4CQkqcmVzX21hcDsJCS8qIHJlc291cmNl
IG1hcCwgYml0ID09IHBkaXIgZW50cnkgKi8KIAl1NjQJCSpwZGlyX2Jhc2U7CQkvKiBwaHlz
aWNhbCBiYXNlIGFkZHJlc3MgKi8KIAl1MzIJCXBkaXJfc2l6ZTsgCQkvKiBieXRlcywgZnVu
Y3Rpb24gb2YgSU9WIFNwYWNlIHNpemUgKi8KLQl1MzIJCXJlc19oaW50OwkJLyogbmV4dCBh
dmFpbGFibGUgSU9WUCAtCisJYWRkcmVzc190CSpyZXNfaGludDsJCS8qIG5leHQgYXZhaWxh
YmxlIElPVlAgLQogCQkJCQkJICAgY2lyY3VsYXIgc2VhcmNoICovCi0JdTMyCQlyZXNfc2l6
ZTsJCS8qIHNpemUgb2YgcmVzb3VyY2UgbWFwIGluIGJ5dGVzICovCiAJc3BpbmxvY2tfdAly
ZXNfbG9jazsKIAorCXVpbnQzMl90CXJlc19iaXRzaGlmdDsJCS8qIGZyb20gdGhlIExFRlQh
ICovCisJdTMyCQlyZXNfc2l6ZTsJCS8qIHNpemUgb2YgcmVzb3VyY2UgbWFwIGluIGJ5dGVz
ICovCisKKyNpZiBERUxBWUVEX1JFU09VUkNFX0NOVCA+IDAKKwlpbnQgICAgICAgICAgICAg
c2F2ZWRfY250OworCXN0cnVjdCBpb2NfZG1hX3BhaXIgeworCQlkbWFfYWRkcl90ICAgICAg
aW92YTsKKwkJc2l6ZV90ICAgICAgICAgIHNpemU7CisJfSBzYXZlZFtERUxBWUVEX1JFU09V
UkNFX0NOVF07CisjZW5kaWYKKwogI2lmZGVmIENDSU9fU0VBUkNIX1RJTUUKICNkZWZpbmUg
Q0NJT19TRUFSQ0hfU0FNUExFIDB4MTAwCiAJdW5zaWduZWQgbG9uZwlhdmdfc2VhcmNoW0ND
SU9fU0VBUkNIX1NBTVBMRV07CkBAIC0yNTksNyArMjc2LDcgQEAKIAl1MzIJCWNoYWluaWRf
c2hpZnQ7CS8qIHNwZWNpZnkgYml0IGxvY2F0aW9uIG9mIGNoYWluX2lkICovCiAJc3RydWN0
IGlvYwkqbmV4dDsJCS8qIExpbmtlZCBsaXN0IG9mIGRpc2NvdmVyZWQgaW9jcyAqLwogCWNv
bnN0IGNoYXIJKm5hbWU7CQkvKiBkZXZpY2UgbmFtZSBmcm9tIGZpcm13YXJlICovCi0JdW5z
aWduZWQgaW50CWh3X3BhdGg7CS8qIHRoZSBoYXJkd2FyZSBwYXRoIHRoaXMgaW9jIGlzIGFz
c29jaWF0ZCB3aXRoICovCisJdWludDMyX3QJaHdfcGF0aDsJLyogdGhlIGhhcmR3YXJlIHBh
dGggdGhpcyBpb2MgaXMgYXNzb2NpYXRkIHdpdGggKi8KIAlzdHJ1Y3QgcGNpX2RldgkqZmFr
ZV9wY2lfZGV2OwkvKiB0aGUgZmFrZSBwY2lfZGV2IGZvciBub24tcGNpIGRldnMgKi8KIAlz
dHJ1Y3QgcmVzb3VyY2UJbW1pb19yZWdpb25bMl07CS8qIFRoZSAicm91dGVkIiBNTUlPIHJl
Z2lvbnMgKi8KIH07CkBAIC0yOTAsNDUgKzMwNywxMTUgQEAKICNkZWZpbmUgQ0NJT19JT1ZB
KGlvdnAsb2Zmc2V0KQkoKGlvdnApIHwgKG9mZnNldCkpCiAjZGVmaW5lIENDSU9fSU9WUChp
b3ZhKQkJKChpb3ZhKSAmIElPVlBfTUFTSykKIAorI2RlZmluZSBQRElSX0VOVFJZX1NJWkUJ
CXNpemVvZih1NjQpCiAjZGVmaW5lIFBESVJfSU5ERVgoaW92cCkJKChpb3ZwKT4+SU9WUF9T
SElGVCkKKworI2RlZmluZSBSRVNNQVBfTUFTSyhuKQkJKH4wVUwgPDwgKEJJVFNfUEVSX0xP
TkcgLSAobikpKQorI2RlZmluZSBSRVNNQVBfSURYX01BU0sJCShzaXplb2YodW5zaWduZWQg
bG9uZykgLSAxKQorCisvKioKKyAqIEZvciBtb3N0IGNhc2VzIHRoZSBub3JtYWwgZ2V0X29y
ZGVyIGlzIHN1ZmZpY2llbnQsIGhvd2V2ZXIgaXQgbGltaXRzIHVzCisgKiB0byBQQUdFX1NJ
WkUgYmVpbmcgdGhlIG1pbmltdW0gbWFwcGluZyBhbGlnbm1lbnQgYW5kIFRDIGZsdXNoIGdy
YW51bGFyaXR5LgorICogSXQgb25seSBpbmN1cnMgYWJvdXQgMSBjbG9jayBjeWNsZSB0byB1
c2UgdGhpcyBvbmUgd2l0aCB0aGUgc3RhdGljIHZhcmlhYmxlCisgKiBhbmQgbWFrZXMgdGhl
IGNvZGUgbW9yZSBpbnR1aXRpdmUuCisgKi8KK3N0YXRpYyBDQ0lPX0lOTElORSBpbnQKK2dl
dF9pb3ZwX29yZGVyKHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlpbnQgb3JkZXI7CisKKwlz
aXplID0gKHNpemUgLSAxKSA+PiAoSU9WUF9TSElGVCAtIDEpOworCW9yZGVyID0gLTE7CisJ
ZG8geworCQlzaXplID4+PSAxOworCQlvcmRlcisrOworCX0gd2hpbGUgKHNpemUpOworCXJl
dHVybiBvcmRlcjsKK30KKwogI2RlZmluZSBNS0lPVlAocGRpcl9pZHgpCSgobG9uZykocGRp
cl9pZHgpIDw8IElPVlBfU0hJRlQpCi0jZGVmaW5lIE1LSU9WQShpb3ZwLG9mZnNldCkJKGRt
YV9hZGRyX3QpKChsb25nKWlvdnAgfCAobG9uZylvZmZzZXQpCisjZGVmaW5lIE1LSU9WQShp
b3ZwLCBvZmZzZXQpCShkbWFfYWRkcl90KSgobG9uZylpb3ZwIHwgKGxvbmcpb2Zmc2V0KQor
I2RlZmluZSBST1VORFVQKHgsIHkpCQkoKHggKyAoKHkpLTEpKSAmIH4oKHkpLTEpKQogCi0v
KgotKiogRG9uJ3Qgd29ycnkgYWJvdXQgdGhlIDE1MCUgYXZlcmFnZSBzZWFyY2ggbGVuZ3Ro
IG9uIGEgbWlzcy4KLSoqIElmIHRoZSBzZWFyY2ggd3JhcHMgYXJvdW5kLCBhbmQgcGFzc2Vz
IHRoZSByZXNfaGludCwgaXQgd2lsbAotKiogY2F1c2UgdGhlIGtlcm5lbCB0byBwYW5pYyBh
bnlob3cuCi0qLwotI2RlZmluZSBDQ0lPX1NFQVJDSF9MT09QKGlvYywgcmVzX2lkeCwgbWFz
aywgc2l6ZSkgIFwKLSAgICAgICBmb3IoOyByZXNfcHRyIDwgcmVzX2VuZDsgKytyZXNfcHRy
KSB7IFwKLSAgICAgICAgICAgICAgIGlmKDAgPT0gKCpyZXNfcHRyICYgbWFzaykpIHsgXAot
ICAgICAgICAgICAgICAgICAgICAgICAqcmVzX3B0ciB8PSBtYXNrOyBcCi0gICAgICAgICAg
ICAgICAgICAgICAgIHJlc19pZHggPSAodW5zaWduZWQgaW50KSgodW5zaWduZWQgbG9uZyly
ZXNfcHRyIC0gKHVuc2lnbmVkIGxvbmcpaW9jLT5yZXNfbWFwKTsgXAotICAgICAgICAgICAg
ICAgICAgICAgICBpb2MtPnJlc19oaW50ID0gcmVzX2lkeCArIChzaXplID4+IDMpOyBcCi0g
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzb3VyY2VfZm91bmQ7IFwKLSAgICAgICAg
ICAgICAgIH0gXAotICAgICAgIH0KLQotI2RlZmluZSBDQ0lPX0ZJTkRfRlJFRV9NQVBQSU5H
KGlvYSwgcmVzX2lkeCwgbWFzaywgc2l6ZSkgXAotICAgICAgIHUjI3NpemUgKnJlc19wdHIg
PSAodSMjc2l6ZSAqKSYoKGlvYyktPnJlc19tYXBbaW9hLT5yZXNfaGludCAmIH4oKHNpemUg
Pj4gMykgLSAxKV0pOyBcCi0gICAgICAgdSMjc2l6ZSAqcmVzX2VuZCA9ICh1IyNzaXplICop
Jihpb2MpLT5yZXNfbWFwW2lvYS0+cmVzX3NpemVdOyBcCi0gICAgICAgQ0NJT19TRUFSQ0hf
TE9PUChpb2MsIHJlc19pZHgsIG1hc2ssIHNpemUpOyBcCi0gICAgICAgcmVzX3B0ciA9ICh1
IyNzaXplICopJihpb2MpLT5yZXNfbWFwWzBdOyBcCi0gICAgICAgQ0NJT19TRUFSQ0hfTE9P
UChpb2EsIHJlc19pZHgsIG1hc2ssIHNpemUpOworLyoqCisgKiBjY2lvX3NlYXJjaF9iaXRt
YXAgLSBmaW5kIGZyZWUgc3BhY2UgaW4gSU8gUERJUiByZXNvdXJjZSBiaXRtYXAKKyAqIEBp
b2M6IElPIE1NVSBzdHJ1Y3R1cmUgd2hpY2ggb3ducyB0aGUgcGRpciB3ZSBhcmUgaW50ZXJl
c3RlZCBpbi4KKyAqIEBwYWdlc193YW50ZWQ6IG51bWJlciBvZiBlbnRyaWVzIHdlIG5lZWQu
CisgKgorICogRmluZCBjb25zZWN1dGl2ZSBmcmVlIGJpdHMgaW4gcmVzb3VyY2UgYml0bWFw
LgorICogRWFjaCBiaXQgcmVwcmVzZW50cyBvbmUgZW50cnkgaW4gdGhlIElPIFBkaXIuCisg
KiBDb29sIHBlcmYgb3B0aW1pemF0aW9uOiBzZWFyY2ggZm9yIGxvZzIoc2l6ZSkgYml0cyBh
dCBhIHRpbWUuCisgKi8KK3N0YXRpYyBDQ0lPX0lOTElORSBhZGRyZXNzX3QKK2NjaW9fc2Vh
cmNoX2JpdG1hcChzdHJ1Y3QgaW9jICppb2MsIHVuc2lnbmVkIGxvbmcgcGFnZXNfd2FudGVk
KQoreworCWFkZHJlc3NfdCAqcmVzX3B0ciA9IGlvYy0+cmVzX2hpbnQ7CisJYWRkcmVzc190
ICpyZXNfZW5kID0gKHVuc2lnbmVkIGxvbmcgKikgJihpb2MtPnJlc19tYXBbaW9jLT5yZXNf
c2l6ZV0pOworCWFkZHJlc3NfdCBwaWRlID0gfjBVTDsKKworCWlmIChwYWdlc193YW50ZWQg
PiAoQklUU19QRVJfTE9ORy8yKSkgeworCQkvKiBTZWFyY2ggd29yZCBhdCBhIHRpbWUgLSBu
byBtYXNrIG5lZWRlZCAqLworCQlmb3IoOyByZXNfcHRyIDwgcmVzX2VuZDsgKytyZXNfcHRy
KSB7CisJCQlpZiAoKnJlc19wdHIgPT0gMCkgeworCQkJCSpyZXNfcHRyID0gUkVTTUFQX01B
U0socGFnZXNfd2FudGVkKTsKKwkJCQlwaWRlID0gKChhZGRyZXNzX3QpcmVzX3B0ciAtIChh
ZGRyZXNzX3QpaW9jLT5yZXNfbWFwKTsKKwkJCQlwaWRlIDw8PSAzOyAgICAgLyogY29udmVy
dCB0byBiaXQgYWRkcmVzcyAqLworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCS8qIHBvaW50
IHRvIHRoZSBuZXh0IHdvcmQgb24gbmV4dCBwYXNzICovCisJCXJlc19wdHIrKzsKKwkJaW9j
LT5yZXNfYml0c2hpZnQgPSAwOworCX0gZWxzZSB7CisJCS8qCisJCSoqIFNlYXJjaCB0aGUg
cmVzb3VyY2UgYml0IG1hcCBvbiB3ZWxsLWFsaWduZWQgdmFsdWVzLgorCQkqKiAibyIgaXMg
dGhlIGFsaWdubWVudC4KKwkJKiogV2UgbmVlZCB0aGUgYWxpZ25tZW50IHRvIGludmFsaWRh
dGUgSS9PIFRMQiB1c2luZworCQkqKiB4eHggSFcgZmVhdHVyZXMgaW4gdGhlIHVubWFwIHBh
dGguCisJCSovCisJCXVuc2lnbmVkIGxvbmcgbyA9IDEgPDwgZ2V0X2lvdnBfb3JkZXIocGFn
ZXNfd2FudGVkIDw8IElPVlBfU0hJRlQpOworCQl1aW50IGJpdHNoaWZ0Y250ID0gUk9VTkRV
UChpb2MtPnJlc19iaXRzaGlmdCwgbyk7CisJCXVuc2lnbmVkIGxvbmcgbWFzazsKIAotLyoK
LSoqIEZpbmQgYXZhaWxhYmxlIGJpdCBpbiB0aGlzIGlvYSdzIHJlc291cmNlIG1hcC4KLSoq
IFVzZSBhICJjaXJjdWxhciIgc2VhcmNoOgotKiogICBvIE1vc3QgSU9WQSdzIGFyZSAidGVt
cG9yYXJ5IiAtIGF2ZyBzZWFyY2ggdGltZSBzaG91bGQgYmUgc21hbGwuCi0qKiBvIGtlZXAg
YSBoaXN0b3J5IG9mIHdoYXQgaGFwcGVuZWQgZm9yIGRlYnVnZ2luZwotKiogbyBLSVNTLgot
KioKLSoqIFBlcmYgb3B0aW1pemF0aW9uczoKLSoqIG8gc2VhcmNoIGZvciBsb2cyKHNpemUp
IGJpdHMgYXQgYSB0aW1lLgotKiogbyBzZWFyY2ggZm9yIGF2YWlsYWJsZSByZXNvdXJjZSBi
aXRzIHVzaW5nIGJ5dGUvd29yZC93aGF0ZXZlci4KLSoqIG8gdXNlIGRpZmZlcmVudCBzZWFy
Y2ggZm9yICJsYXJnZSIgKGVnID4gNCBwYWdlcykgb3IgInZlcnkgbGFyZ2UiCi0qKiAgIChl
ZyA+IDE2IHBhZ2VzKSBtYXBwaW5ncy4KLSovCisJCWlmIChiaXRzaGlmdGNudCA+PSBCSVRT
X1BFUl9MT05HKSB7CisJCQliaXRzaGlmdGNudCA9IDA7CisJCQlyZXNfcHRyKys7CisJCX0K
KwkJbWFzayA9IFJFU01BUF9NQVNLKHBhZ2VzX3dhbnRlZCkgPj4gYml0c2hpZnRjbnQ7CisK
KwkJREJHX1JFUygiJXMoKSBvICVsZCAlcCIsIF9fRlVOQ1RJT05fXywgbywgcmVzX3B0cik7
CisJCXdoaWxlKHJlc19wdHIgPCByZXNfZW5kKQorCQl7CisJCQlEQkdfUkVTKCIgICAgJXAg
JWx4ICVseFxuIiwgcmVzX3B0ciwgbWFzaywgKnJlc19wdHIpOworCQkJV0FSTl9PTihtYXNr
ID09IDApOworCQkJaWYoKCgqcmVzX3B0cikgJiBtYXNrKSA9PSAwKSB7CisJCQkJKnJlc19w
dHIgfD0gbWFzazsgICAgIC8qIG1hcmsgcmVzb3VyY2VzIGJ1c3khICovCisJCQkJcGlkZSA9
ICgoYWRkcmVzc190KXJlc19wdHIgLSAoYWRkcmVzc190KWlvYy0+cmVzX21hcCk7CisJCQkJ
cGlkZSA8PD0gMzsgICAgIC8qIGNvbnZlcnQgdG8gYml0IGFkZHJlc3MgKi8KKwkJCQlwaWRl
ICs9IGJpdHNoaWZ0Y250OworCQkJCWJyZWFrOworCQkJfQorCQkJbWFzayA+Pj0gbzsKKwkJ
CWJpdHNoaWZ0Y250ICs9IG87CisJCQlpZiAobWFzayA9PSAwKSB7CisJCQkJbWFzayA9IFJF
U01BUF9NQVNLKHBhZ2VzX3dhbnRlZCk7CisJCQkJYml0c2hpZnRjbnQ9MDsKKwkJCQlyZXNf
cHRyKys7CisJCQl9CisJCX0KKwkJLyogbG9vayBpbiB0aGUgc2FtZSB3b3JkIG9uIHRoZSBu
ZXh0IHBhc3MgKi8KKwkJaW9jLT5yZXNfYml0c2hpZnQgPSBiaXRzaGlmdGNudCArIHBhZ2Vz
X3dhbnRlZDsKKwl9CisKKwkvKiB3cmFwcGVkID8gKi8KKwlpZiAocmVzX2VuZCA8PSByZXNf
cHRyKSB7CisJCWlvYy0+cmVzX2hpbnQgPSAoYWRkcmVzc190ICopIGlvYy0+cmVzX21hcDsK
KwkJaW9jLT5yZXNfYml0c2hpZnQgPSAwOworCX0gZWxzZSB7CisJCWlvYy0+cmVzX2hpbnQg
PSByZXNfcHRyOworCX0KKwlyZXR1cm4gKHBpZGUpOworfQogCiAvKioKICAqIGNjaW9fYWxs
b2NfcmFuZ2UgLSBBbGxvY2F0ZSBwYWdlcyBpbiB0aGUgaW9jJ3MgcmVzb3VyY2UgbWFwLgpA
QCAtMzQ3LDcgKzQzNCw5IEBACiAjaWZkZWYgQ0NJT19TRUFSQ0hfVElNRQogCXVuc2lnbmVk
IGxvbmcgY3Jfc3RhcnQgPSBtZmN0bCgxNik7CiAjZW5kaWYKLQkKKworCXVuc2lnbmVkIGxv
bmcJcGlkZTsKKwogCUJVR19PTihwYWdlc19uZWVkZWQgPT0gMCk7CiAJQlVHX09OKChwYWdl
c19uZWVkZWQgKiBJT1ZQX1NJWkUpID4gRE1BX0NIVU5LX1NJWkUpOwogCkBAIC0zNTksNDQg
KzQ0OCwxOSBAQAogCSoqIGdnZyBzYWNyaWZpY2VzIGFub3RoZXIgNzEwIHRvIHRoZSBjb21w
dXRlciBnb2RzLgogCSovCiAKLQlpZiAocGFnZXNfbmVlZGVkIDw9IDgpIHsKLQkJLyoKLQkJ
ICogTEFOIHRyYWZmaWMgd2lsbCBub3QgdGhyYXNoIHRoZSBUTEIgSUZGIHRoZSBzYW1lIE5J
QwotCQkgKiB1c2VzIDggYWRqYWNlbnQgcGFnZXMgdG8gbWFwIHNlcGVyYXRlIHBheWxvYWQg
ZGF0YS4KLQkJICogaWUgdGhlIHNhbWUgYnl0ZSBpbiB0aGUgcmVzb3VyY2UgYml0IG1hcC4K
LQkJICovCi0jaWYgMAotCQkvKiBGSVhNRTogYml0IHNlYXJjaCBzaG91bGQgc2hpZnQgaXQn
cyB3YXkgdGhyb3VnaAotCQkgKiBhbiB1bnNpZ25lZCBsb25nIC0gbm90IGJ5dGUgYXQgYSB0
aW1lLiBBcyBpdCBpcyBub3csCi0JCSAqIHdlIGVmZmVjdGl2ZWx5IGFsbG9jYXRlIHRoaXMg
Ynl0ZSB0byB0aGlzIG1hcHBpbmcuCi0JCSAqLwotCQl1bnNpZ25lZCBsb25nIG1hc2sgPSB+
KH4wVUwgPj4gcGFnZXNfbmVlZGVkKTsKLQkJQ0NJT19GSU5EX0ZSRUVfTUFQUElORyhpb2Ms
IHJlc19pZHgsIG1hc2ssIDgpOwotI2Vsc2UKLQkJQ0NJT19GSU5EX0ZSRUVfTUFQUElORyhp
b2MsIHJlc19pZHgsIDB4ZmYsIDgpOwotI2VuZGlmCi0JfSBlbHNlIGlmIChwYWdlc19uZWVk
ZWQgPD0gMTYpIHsKLQkJQ0NJT19GSU5EX0ZSRUVfTUFQUElORyhpb2MsIHJlc19pZHgsIDB4
ZmZmZiwgMTYpOwotCX0gZWxzZSBpZiAocGFnZXNfbmVlZGVkIDw9IDMyKSB7Ci0JCUNDSU9f
RklORF9GUkVFX01BUFBJTkcoaW9jLCByZXNfaWR4LCB+KHVuc2lnbmVkIGludCkwLCAzMik7
Ci0jaWZkZWYgX19MUDY0X18KLQl9IGVsc2UgaWYgKHBhZ2VzX25lZWRlZCA8PSA2NCkgewot
CQlDQ0lPX0ZJTkRfRlJFRV9NQVBQSU5HKGlvYywgcmVzX2lkeCwgfjBVTCwgNjQpOwotI2Vu
ZGlmCi0JfSBlbHNlIHsKLQkJcGFuaWMoIiVzOiAlcygpIFRvbyBtYW55IHBhZ2VzIHRvIG1h
cC4gcGFnZXNfbmVlZGVkOiAldVxuIiwKLQkJICAgICAgIF9fRklMRV9fLCAgX19GVU5DVElP
Tl9fLCBwYWdlc19uZWVkZWQpOworCXBpZGUgPSBjY2lvX3NlYXJjaF9iaXRtYXAoaW9jLCBw
YWdlc19uZWVkZWQpOworCWlmIChwaWRlID49IChpb2MtPnJlc19zaXplIDw8IDMpKSB7CisJ
CXBpZGUgPSBjY2lvX3NlYXJjaF9iaXRtYXAoaW9jLCBwYWdlc19uZWVkZWQpOworCQlpZiAo
cGlkZSA+PSAoaW9jLT5yZXNfc2l6ZSA8PCAzKSkKKwkJCXBhbmljKCIlczogJXMoKSBJL08g
TU1VIGlzIG91dCBvZiBtYXBwaW5nIHJlc291cmNlcy5cbiIsIF9fRklMRV9fLAorCQkJCV9f
RlVOQ1RJT05fXyk7CiAJfQogCi0JcGFuaWMoIiVzOiAlcygpIEkvTyBNTVUgaXMgb3V0IG9m
IG1hcHBpbmcgcmVzb3VyY2VzLlxuIiwgX19GSUxFX18sCi0JICAgICAgX19GVU5DVElPTl9f
KTsKLQkKLXJlc291cmNlX2ZvdW5kOgotCQogCURCR19SRVMoIiVzKCkgcmVzX2lkeCAlZCBy
ZXNfaGludDogJWRcbiIsCiAJCV9fRlVOQ1RJT05fXywgcmVzX2lkeCwgaW9jLT5yZXNfaGlu
dCk7CiAKICNpZmRlZiBDQ0lPX1NFQVJDSF9USU1FCisJdWRlbGF5KDEwMCk7CiAJewogCQl1
bnNpZ25lZCBsb25nIGNyX2VuZCA9IG1mY3RsKDE2KTsKIAkJdW5zaWduZWQgbG9uZyB0bXAg
PSBjcl9lbmQgLSBjcl9zdGFydDsKQEAgLTQxMiwxNCArNDc2LDkgQEAKIAkvKgogCSoqIHJl
dHVybiB0aGUgYml0IGFkZHJlc3MuCiAJKi8KLQlyZXR1cm4gcmVzX2lkeCA8PCAzOworCXJl
dHVybiAocGlkZSk7CiB9CiAKLSNkZWZpbmUgQ0NJT19GUkVFX01BUFBJTkdTKGlvYywgcmVz
X2lkeCwgbWFzaywgc2l6ZSkgXAotICAgICAgICB1IyNzaXplICpyZXNfcHRyID0gKHUjI3Np
emUgKikmKChpb2MpLT5yZXNfbWFwW3Jlc19pZHhdKTsgXAotICAgICAgICBCVUdfT04oKCpy
ZXNfcHRyICYgbWFzaykgIT0gbWFzayk7IFwKLSAgICAgICAgKnJlc19wdHIgJj0gfihtYXNr
KTsKLQogLyoqCiAgKiBjY2lvX2ZyZWVfcmFuZ2UgLSBGcmVlIHBhZ2VzIGZyb20gdGhlIGlv
YydzIHJlc291cmNlIG1hcC4KICAqIEBpb2M6IFRoZSBJL08gQ29udHJvbGxlci4KQEAgLTQz
MCw0MiArNDg5LDMzIEBACiAgKiBUaGlzIGZ1bmN0aW9uIGZyZWVzIHRoZSByZXNvdWNlcyBh
bGxvY2F0ZWQgZm9yIHRoZSBpb3ZhLgogICovCiBzdGF0aWMgdm9pZAotY2Npb19mcmVlX3Jh
bmdlKHN0cnVjdCBpb2MgKmlvYywgZG1hX2FkZHJfdCBpb3ZhLCB1bnNpZ25lZCBsb25nIHBh
Z2VzX21hcHBlZCkKK2NjaW9fZnJlZV9yYW5nZShzdHJ1Y3QgaW9jICppb2MsIGRtYV9hZGRy
X3QgaW92YSwgc2l6ZV90IHNpemUpCiB7CiAJdW5zaWduZWQgbG9uZyBpb3ZwID0gQ0NJT19J
T1ZQKGlvdmEpOwotCXVuc2lnbmVkIGludCByZXNfaWR4ID0gUERJUl9JTkRFWChpb3ZwKSA+
PiAzOwotCi0JQlVHX09OKHBhZ2VzX21hcHBlZCA9PSAwKTsKLQlCVUdfT04oKHBhZ2VzX21h
cHBlZCAqIElPVlBfU0laRSkgPiBETUFfQ0hVTktfU0laRSk7Ci0JQlVHX09OKHBhZ2VzX21h
cHBlZCA+IEJJVFNfUEVSX0xPTkcpOwogCi0JREJHX1JFUygiJXMoKTogIHJlc19pZHg6ICVk
IHBhZ2VzX21hcHBlZCAlZFxuIiwKLQkJX19GVU5DVElPTl9fLCByZXNfaWR4LCBwYWdlc19t
YXBwZWQpOworCXVuc2lnbmVkIGludCBwaWRlID0gUERJUl9JTkRFWChpb3ZwKTsKKwl1bnNp
Z25lZCBpbnQgcmlkeCA9IHBpZGUgPj4gMzsKKwl1bnNpZ25lZCBsb25nICpyZXNfcHRyID0g
KHVuc2lnbmVkIGxvbmcgKikgJigoaW9jKS0+cmVzX21hcFtyaWR4ICYgflJFU01BUF9JRFhf
TUFTS10pOworCisJLyogd2FzOiB1bnNpZ25lZCBpbnQgcGFnZXNfbWFwcGVkID0gc2l6ZSA+
PiBJT1ZQX1NISUZUOyAqLworCWludCBiaXRzX25vdF93YW50ZWQgPSBzaXplID4+IElPVlBf
U0hJRlQ7CisKKwkvKiAzLWJpdHMgImJpdCIgYWRkcmVzcyBwbHVzIDIgKG9yIDMpIGJpdHMg
Zm9yICJieXRlIiA9PSBiaXQgaW4gd29yZCAqLworCXVuc2lnbmVkIGxvbmcgbSA9IFJFU01B
UF9NQVNLKGJpdHNfbm90X3dhbnRlZCkgPj4gKHBpZGUgJiAoQklUU19QRVJfTE9ORyAtIDEp
KTsKKworCUJVR19PTihzaXplID09IDApOworCUJVR19PTihzaXplID4gRE1BX0NIVU5LX1NJ
WkUpOworCUJVR19PTihiaXRzX25vdF93YW50ZWQgPiBCSVRTX1BFUl9MT05HKTsKKworCURC
R19SRVMoIiVzKCAsJXgsJXgpICV4LyVseCAleCAlcCAlbHhcbiIsCisJCV9fRlVOQ1RJT05f
XywgKHVpbnQpIGlvdmEsIHNpemUsCisJCWJpdHNfbm90X3dhbnRlZCwgbSwgcGlkZSwgcmVz
X3B0ciwgKnJlc19wdHIpOwogCiAjaWZkZWYgQ0NJT19NQVBfU1RBVFMKLQlpb2MtPnVzZWRf
cGFnZXMgLT0gcGFnZXNfbWFwcGVkOworCWlvYy0+dXNlZF9wYWdlcyAtPSBiaXRzX25vdF93
YW50ZWQ7CiAjZW5kaWYKIAotCWlmKHBhZ2VzX21hcHBlZCA8PSA4KSB7Ci0jaWYgMAotCQkv
KiBzZWUgbWF0Y2hpbmcgY29tbWVudHMgaW4gYWxsb2NfcmFuZ2UgKi8KLQkJdW5zaWduZWQg
bG9uZyBtYXNrID0gfih+MFVMID4+IHBhZ2VzX21hcHBlZCk7Ci0JCUNDSU9fRlJFRV9NQVBQ
SU5HUyhpb2MsIHJlc19pZHgsIG1hc2ssIDgpOwotI2Vsc2UKLQkJQ0NJT19GUkVFX01BUFBJ
TkdTKGlvYywgcmVzX2lkeCwgMHhmZiwgOCk7Ci0jZW5kaWYKLQl9IGVsc2UgaWYocGFnZXNf
bWFwcGVkIDw9IDE2KSB7Ci0JCUNDSU9fRlJFRV9NQVBQSU5HUyhpb2MsIHJlc19pZHgsIDB4
ZmZmZiwgMTYpOwotCX0gZWxzZSBpZihwYWdlc19tYXBwZWQgPD0gMzIpIHsKLQkJQ0NJT19G
UkVFX01BUFBJTkdTKGlvYywgcmVzX2lkeCwgfih1bnNpZ25lZCBpbnQpMCwgMzIpOwotI2lm
ZGVmIF9fTFA2NF9fCi0JfSBlbHNlIGlmKHBhZ2VzX21hcHBlZCA8PSA2NCkgewotCQlDQ0lP
X0ZSRUVfTUFQUElOR1MoaW9jLCByZXNfaWR4LCB+MFVMLCA2NCk7Ci0jZW5kaWYKLQl9IGVs
c2UgewotCQlwYW5pYygiJXM6JXMoKSBUb28gbWFueSBwYWdlcyB0byB1bm1hcC5cbiIsIF9f
RklMRV9fLAotCQkgICAgICBfX0ZVTkNUSU9OX18pOwotCX0KKwkqcmVzX3B0ciAmPSB+bTsK
IH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKQEAgLTY2NCwzMiArNzE0LDQ1IEBACiBzdGF0aWMgQ0NJT19J
TkxJTkUgdm9pZAogY2Npb19tYXJrX2ludmFsaWQoc3RydWN0IGlvYyAqaW9jLCBkbWFfYWRk
cl90IGlvdmEsIHNpemVfdCBieXRlX2NudCkKIHsKLQl1MzIgaW92cCA9ICh1MzIpQ0NJT19J
T1ZQKGlvdmEpOworCXVpbnQzMl90IGlvdnAgPSAodWludDMyX3QpQ0NJT19JT1ZQKGlvdmEp
OworCXU2NCAqcGRpcl9wdHIgPSAmaW9jLT5wZGlyX2Jhc2VbUERJUl9JTkRFWChpb3ZwKV07
CiAJc2l6ZV90IHNhdmVkX2J5dGVfY250OwogCiAJLyogcm91bmQgdXAgdG8gbmVhcmVzdCBw
YWdlIHNpemUgKi8KIAlzYXZlZF9ieXRlX2NudCA9IGJ5dGVfY250ID0gQUxJR04oYnl0ZV9j
bnQsIElPVlBfU0laRSk7CiAKLQl3aGlsZShieXRlX2NudCA+IDApIHsKLQkJLyogaW52YWxp
ZGF0ZSBvbmUgcGFnZSBhdCBhIHRpbWUgKi8KLQkJdW5zaWduZWQgaW50IGlkeCA9IFBESVJf
SU5ERVgoaW92cCk7Ci0JCWNoYXIgKnBkaXJfcHRyID0gKGNoYXIgKikgJihpb2MtPnBkaXJf
YmFzZVtpZHhdKTsKKwlpZiAoYnl0ZV9jbnQgPiBJT1ZQX1NJWkUpCisJeworCQkvKiBzZXQg
InNpemUiIGZpZWxkIGZvciBQQ09NICovCisJCWlvdnAgfD0gZ2V0X2lvdnBfb3JkZXIoYnl0
ZV9jbnQpICsgSU9WUF9TSElGVDsKIAotCQlCVUdfT04oaWR4ID49IChpb2MtPnBkaXJfc2l6
ZSAvIHNpemVvZih1NjQpKSk7Ci0JCXBkaXJfcHRyWzddID0gMDsJLyogY2xlYXIgb25seSBW
QUxJRCBiaXQgKi8KLQkJLyoKLQkJKiogRklYTUU6IFBDWF9XIHBsYXRmb3JtcyBkb24ndCBu
ZWVkIEZEQy9TWU5DLiAoZWcgQzM2MCkKLQkJKiogICBQQ1gtVS9VKyBkby4gKGVnIEMyMDAv
QzI0MCkKLQkJKiogU2VlIFBEQ19NT0RFTC9vcHRpb24gMC9TV19DQVAgZm9yICJOb24tY29o
ZXJlbnQgSU8tUERJUiBiaXQiLgotCQkqKgotCQkqKiBIb3BlZnVsbHkgc29tZW9uZSBmaWd1
cmVzIG91dCBob3cgdG8gcGF0Y2ggKE5PUCkgdGhlCi0JCSoqIEZEQy9TWU5DIG91dCBhdCBi
b290IHRpbWUuCi0JCSovCi0JCWFzbSB2b2xhdGlsZSgiZmRjICUlcjAoJTApIiA6IDogInIi
IChwZGlyX3B0cls3XSkpOworCQlkbyB7CisJCQkvKiBjbGVhciBJL08gUGRpciBlbnRyeSAi
dmFsaWQiIGJpdCBmaXJzdCAqLworCQkJKCh1bnNpZ25lZCBjaGFyICopIHBkaXJfcHRyKVs3
XSA9IDA7CisJCQkvKgorCQkJKiogRklYTUU6IFBDWF9XIHBsYXRmb3JtcyBkb24ndCBuZWVk
IEZEQy9TWU5DLiAoZWcgQzM2MCkKKwkJCSoqICAgUENYLVUvVSsgZG8uIChlZyBDMjAwL0My
NDApCisJCQkqKiBTZWUgUERDX01PREVML29wdGlvbiAwL1NXX0NBUCBmb3IgIk5vbi1jb2hl
cmVudCBJTy1QRElSIGJpdCIuCisJCQkqKgorCQkJKiogSG9wZWZ1bGx5IHNvbWVvbmUgZmln
dXJlcyBvdXQgaG93IHRvIHBhdGNoIChOT1ApIHRoZQorCQkJKiogRkRDL1NZTkMgb3V0IGF0
IGJvb3QgdGltZS4KKwkJCSovCisJCQlhc20gdm9sYXRpbGUoImZkYyAlJXIwKCUwKSIgOiA6
ICJyIiAocGRpcl9wdHJbN10pKTsKKworCQkJcGRpcl9wdHIrKzsKKwkJCWJ5dGVfY250IC09
IElPVlBfU0laRTsKKwkJfSB3aGlsZSAoYnl0ZV9jbnQgPiBJT1ZQX1NJWkUpOworCX0gZWxz
ZQorCQlpb3ZwIHw9IElPVlBfU0hJRlQ7ICAgICAvKiBzZXQgInNpemUiIGZpZWxkIGZvciBQ
Q09NICovCiAKLQkJaW92cCAgICAgKz0gSU9WUF9TSVpFOwotCQlieXRlX2NudCAtPSBJT1ZQ
X1NJWkU7Ci0JfQorCS8qCisJKiogY2xlYXIgSS9PIFBESVIgZW50cnkgInZhbGlkIiBiaXQu
CisJKiogV2UgaGF2ZSB0byBSL00vVyB0aGUgY2FjaGVsaW5lIHJlZ2FyZGxlc3MgaG93IG11
Y2ggb2YgdGhlCisJKiogcGRpciBlbnRyeSB0aGF0IHdlIGNsb2JiZXIuCisJKiogVGhlIHJl
c3Qgb2YgdGhlIGVudHJ5IHdvdWxkIGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIGlmIHdlCisJ
KiogY291bGQgZHVtcCBjb3JlIG9uIEhQTUMuCisJKi8KKwkoKHVuc2lnbmVkIGNoYXIgKikg
cGRpcl9wdHIpWzddID0gMDsKIAogCWFzbSB2b2xhdGlsZSgic3luYyIpOwogCWNjaW9fY2xl
YXJfaW9fdGxiKGlvYywgQ0NJT19JT1ZQKGlvdmEpLCBzYXZlZF9ieXRlX2NudCk7CkBAIC03
MTEsNyArNzc0LDcgQEAKIHN0YXRpYyBpbnQKIGNjaW9fZG1hX3N1cHBvcnRlZChzdHJ1Y3Qg
ZGV2aWNlICpkZXYsIHU2NCBtYXNrKQogewotCWlmKGRldiA9PSBOVUxMKSB7CisJaWYoIWRl
dikgewogCQlwcmludGsoS0VSTl9FUlIgTU9EVUxFX05BTUUgIjogRUlTQS9JU0EvZXQgYWwg
bm90IHN1cHBvcnRlZFxuIik7CiAJCUJVRygpOwogCQlyZXR1cm4gMDsKQEAgLTc4Myw2ICs4
NDYsOSBAQAogCQlzaXplIC09IElPVlBfU0laRTsKIAl9CiAKKwkvKiBmb3JjZSBGREMgb3Bz
IGluIGlvX3BkaXJfZW50cnkoKSB0byBiZSB2aXNpYmxlIHRvIElPTU1VICovCisJYXNtIHZv
bGF0aWxlKCJzeW5jIiA6OiApOworCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9jLT5y
ZXNfbG9jaywgZmxhZ3MpOwogCiAJLyogZm9ybSBjb21wbGV0ZSBhZGRyZXNzICovCkBAIC04
MDMsNiArODY5LDkgQEAKIAkJICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAJc3RydWN0IGlvYyAqaW9jOworI2lmIERFTEFZRURfUkVTT1VSQ0VfQ05UID4gMAor
CXN0cnVjdCBpb2NfZG1hX3BhaXIgKmQ7CisjZW5kaWYKIAl1bnNpZ25lZCBsb25nIGZsYWdz
OwogCWRtYV9hZGRyX3Qgb2Zmc2V0ID0gaW92YSAmIH5JT1ZQX01BU0s7CiAJCkBAIC04MjQs
NyArODkzLDMwIEBACiAjZW5kaWYKIAogCWNjaW9fbWFya19pbnZhbGlkKGlvYywgaW92YSwg
c2l6ZSk7Ci0JY2Npb19mcmVlX3JhbmdlKGlvYywgaW92YSwgKHNpemUgPj4gSU9WUF9TSElG
VCkpOworI2lmIERFTEFZRURfUkVTT1VSQ0VfQ05UID4gMAorCS8qIERlbGF5aW5nIHdoZW4g
d2UgcmUtdXNlIGEgSU8gUGRpciBlbnRyeSByZWR1Y2VzIHRoZSBudW1iZXIKKwkgKiBvZiBN
TUlPIHJlYWRzIG5lZWRlZCB0byBmbHVzaCB3cml0ZXMgdG8gdGhlIFBDT00gcmVnaXN0ZXIu
CisJICovCisJZCA9ICYoaW9jLT5zYXZlZFtpb2MtPnNhdmVkX2NudF0pOworCWQtPmlvdmEg
PSBpb3ZhOworCWQtPnNpemUgPSBzaXplOworCWlmICgrKyhpb2MtPnNhdmVkX2NudCkgPj0g
REVMQVlFRF9SRVNPVVJDRV9DTlQpIHsKKwkJaW50IGNudCA9IGlvYy0+c2F2ZWRfY250Owor
CQl3aGlsZSAoY250LS0pIHsKKwkJCWNjaW9fZnJlZV9yYW5nZShpb2MsIGQtPmlvdmEsIGQt
PnNpemUpOworCQkJZC0tOworCQl9CisJCWlvYy0+c2F2ZWRfY250ID0gMDsKKwl9CisjZWxz
ZSAvKiBERUxBWUVEX1JFU09VUkNFX0NOVCA9PSAwICovCisKKwljY2lvX2ZyZWVfcmFuZ2Uo
aW9jLCBpb3ZhLCBzaXplKTsKKworCS8qIGZvcmNlIGZkYydzIHRvIGJlIHZpc2libGUgbm93
ICovCisJYXNtIHZvbGF0aWxlKCJzeW5jIiA6OiApOworCisjZW5kaWYgLyogREVMQVlFRF9S
RVNPVVJDRV9DTlQgPT0gMCAqLworCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9jLT5y
ZXNfbG9jaywgZmxhZ3MpOwogfQogCkBAIC05NTIsNiArMTA0NCw5IEBACiAJKi8KIAlmaWxs
ZWQgPSBpb21tdV9maWxsX3BkaXIoaW9jLCBzZ2xpc3QsIG5lbnRzLCBoaW50LCBjY2lvX2lv
X3BkaXJfZW50cnkpOwogCisJLyogZm9yY2UgRkRDIG9wcyBpbiBpb19wZGlyX2VudHJ5KCkg
dG8gYmUgdmlzaWJsZSB0byBJT01NVSAqLworCWFzbSB2b2xhdGlsZSgic3luYyIgOjogKTsK
KwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlvYy0+cmVzX2xvY2ssIGZsYWdzKTsKIAog
CUJVR19PTihjb2FsZXNjZWQgIT0gZmlsbGVkKTsKQEAgLTk5MywxMSArMTA4OCwxMiBAQAog
CiAJd2hpbGUoc2dfZG1hX2xlbihzZ2xpc3QpICYmIG5lbnRzLS0pIHsKIAotI2lmZGVmIEND
SU9fTUFQX1NUQVRTCi0JCWlvYy0+dXNnX3BhZ2VzICs9IHNnX2RtYV9sZW4oc2dsaXN0KSA+
PiBQQUdFX1NISUZUOwotI2VuZGlmCiAJCWNjaW9fdW5tYXBfc2luZ2xlKGRldiwgc2dfZG1h
X2FkZHJlc3Moc2dsaXN0KSwKIAkJCQkgIHNnX2RtYV9sZW4oc2dsaXN0KSwgZGlyZWN0aW9u
KTsKKyNpZmRlZiBDQ0lPX01BUF9TVEFUUworCQlpb2MtPnVzZ19wYWdlcyArPSBzZ19kbWFf
bGVuKHNnbGlzdCkgPj4gSU9WUF9TSElGVDsKKwkJaW9jLT51c2luZ2xlX2NhbGxzLS07ICAg
Lyoga2x1Z2Ugc2luY2UgY2FsbCBpcyB1bm1hcF9zZygpICovCisjZW5kaWYKIAkJKytzZ2xp
c3Q7CiAJfQogCkBAIC0xMDI1LDE2ICsxMTIxLDEyIEBACiAJaW50IGxlbiA9IDA7CiAJc3Ry
dWN0IGlvYyAqaW9jID0gaW9jX2xpc3Q7CiAKLQl3aGlsZSAoaW9jICE9IE5VTEwpIHsKKwl3
aGlsZSAoaW9jKSB7CiAJCXVuc2lnbmVkIGludCB0b3RhbF9wYWdlcyA9IGlvYy0+cmVzX3Np
emUgPDwgMzsKLQkJdW5zaWduZWQgbG9uZyBhdmcgPSAwLCBtaW4sIG1heDsKLQkJaW50IGo7
CiAKLQkJbGVuICs9IHNlcV9wcmludGYobSwgIiVzXG4iLCBpb2MtPm5hbWUpOwotCQkKLQkJ
bGVuICs9IHNlcV9wcmludGYobSwgIkN1am8gMi4wIGJ1ZyAgICA6ICVzXG4iLAotCQkJCSAg
KGlvYy0+Y3VqbzIwX2J1ZyA/ICJ5ZXMiIDogIm5vIikpOwotCQkKKwkJbGVuICs9IHNlcV9w
cmludGYobSwgIiVzJXNcbiIsIGlvYy0+bmFtZSwKKwkJCShpb2MtPmN1am8yMF9idWcgPyAi
IChDdWpvIDIuMCBidWcpIiA6ICIiKSk7CisKIAkJbGVuICs9IHNlcV9wcmludGYobSwgIklP
IFBESVIgc2l6ZSAgICA6ICVkIGJ5dGVzICglZCBlbnRyaWVzKVxuIiwKIAkJCSAgICAgICB0
b3RhbF9wYWdlcyAqIDgsIHRvdGFsX3BhZ2VzKTsKIApAQCAtMTA0OCw2ICsxMTQwLDggQEAK
IAkJCQkgIGlvYy0+cmVzX3NpemUsIHRvdGFsX3BhZ2VzKTsKIAogI2lmZGVmIENDSU9fU0VB
UkNIX1RJTUUKKwkJdW5zaWduZWQgbG9uZyBhdmcgPSAwLCBtaW4sIG1heDsKKwkJaW50IGo7
CiAJCW1pbiA9IG1heCA9IGlvYy0+YXZnX3NlYXJjaFswXTsKIAkJZm9yKGogPSAwOyBqIDwg
Q0NJT19TRUFSQ0hfU0FNUExFOyArK2opIHsKIAkJCWF2ZyArPSBpb2MtPmF2Z19zZWFyY2hb
al07CkBAIC0xMTA0LDcgKzExOTgsNyBAQAogCWludCBsZW4gPSAwOwogCXN0cnVjdCBpb2Mg
KmlvYyA9IGlvY19saXN0OwogCi0Jd2hpbGUgKGlvYyAhPSBOVUxMKSB7CisJd2hpbGUgKGlv
YykgewogCQl1MzIgKnJlc19wdHIgPSAodTMyICopaW9jLT5yZXNfbWFwOwogCQlpbnQgajsK
IApAQCAtMTI1Miw5ICsxMzQ2LDEyIEBACiBzdGF0aWMgdm9pZAogY2Npb19pb2NfaW5pdChz
dHJ1Y3QgaW9jICppb2MpCiB7Ci0JaW50IGk7Ci0JdW5zaWduZWQgaW50IGlvdl9vcmRlcjsK
LQl1MzIgaW92YV9zcGFjZV9zaXplOworCWludAkJaTsKKwl1aW50MzJfdAlpb3Zfb3JkZXIs
CisJCQludW1faW9tbXVfcGFnZXMsCisJCQlpb3ZhX3NwYWNlX3NpemU7CisKKwl1aW50MzJf
dAlJT19DaGFpbklkTWFzazsKIAogCS8qCiAJKiogRGV0ZXJtaW5lIElPVkEgU3BhY2Ugc2l6
ZSBmcm9tIG1lbW9yeSBzaXplLgpAQCAtMTI2NywxNiArMTM2NCwxNSBAQAogCSoqIEhvdC1Q
bHVnL1JlbW92YWwgb2YgUENJIGNhcmRzLiAoYWthIFBDSSBPTEFSRCkuCiAJKi8KIAotCWlv
dmFfc3BhY2Vfc2l6ZSA9ICh1MzIpIChudW1fcGh5c3BhZ2VzIC8gY291bnRfcGFyaXNjX2Ry
aXZlcigmY2Npb19kcml2ZXIpKTsKKwl1bnNpZ25lZCBsb25nIHBoeXNfbWVtID0gbnVtX3Bo
eXNwYWdlcyA8PCBQQUdFX1NISUZUOworCWlvdmFfc3BhY2Vfc2l6ZSA9ICh1X2ludDMyX3Qp
IChwaHlzX21lbSAgLyBjb3VudF9wYXJpc2NfZHJpdmVyKCZjY2lvX2RyaXZlcikpOwogCiAJ
LyogbGltaXQgSU9WQSBzcGFjZSBzaXplIHRvIDFNQi0xR0IgKi8KIAotCWlmIChpb3ZhX3Nw
YWNlX3NpemUgPCAoMSA8PCAoMjAgLSBQQUdFX1NISUZUKSkpIHsKLQkJaW92YV9zcGFjZV9z
aXplID0gIDEgPDwgKDIwIC0gUEFHRV9TSElGVCk7Ci0jaWZkZWYgX19MUDY0X18KLQl9IGVs
c2UgaWYgKGlvdmFfc3BhY2Vfc2l6ZSA+ICgxIDw8ICgzMCAtIFBBR0VfU0hJRlQpKSkgewot
CQlpb3ZhX3NwYWNlX3NpemUgPSAgMSA8PCAoMzAgLSBQQUdFX1NISUZUKTsKLSNlbmRpZgor
CWlmIChpb3ZhX3NwYWNlX3NpemUgPCAoMSA8PCAyMCkpIHsKKwkJaW92YV9zcGFjZV9zaXpl
ID0gIDEgPDwgMjA7CisJfSBlbHNlIGlmIChpb3ZhX3NwYWNlX3NpemUgPiAoMSA8PCAzMCkp
IHsKKwkJaW92YV9zcGFjZV9zaXplID0gIDEgPDwgMzA7CiAJfQogCiAJLyoKQEAgLTEyOTIs
MjcgKzEzODgsMjcgQEAKIAkqKiAgIHRoaXMgaXMgdGhlIGNhc2UgdW5kZXIgbGludXguIgog
CSovCiAKLQlpb3Zfb3JkZXIgPSBnZXRfb3JkZXIoaW92YV9zcGFjZV9zaXplIDw8IFBBR0Vf
U0hJRlQpOworCWlvdl9vcmRlciA9IGdldF9pb3ZwX29yZGVyKGlvdmFfc3BhY2Vfc2l6ZSk7
CiAKLQkvKiBpb3ZhX3NwYWNlX3NpemUgaXMgbm93IGJ5dGVzLCBub3QgcGFnZXMgKi8KLQlp
b3ZhX3NwYWNlX3NpemUgPSAxIDw8IChpb3Zfb3JkZXIgKyBQQUdFX1NISUZUKTsKKwlpb3Zh
X3NwYWNlX3NpemUgPSAxIDw8IChpb3Zfb3JkZXIgKyBJT1ZQX1NISUZUKTsKIAotCWlvYy0+
cGRpcl9zaXplID0gKGlvdmFfc3BhY2Vfc2l6ZSAvIElPVlBfU0laRSkgKiBzaXplb2YodTY0
KTsKKwludW1faW9tbXVfcGFnZXMgPSBpb3ZhX3NwYWNlX3NpemUgPj4gSU9WUF9TSElGVDsK
Kwlpb2MtPnBkaXJfc2l6ZSA9IG51bV9pb21tdV9wYWdlcyAqIFBESVJfRU5UUllfU0laRTsK
KworCURCR19JTklUKCIlcygpIGhwYSAweCVwIG1lbSAlbHVNYiBJT1YgJXVNYiAoJWQgYml0
cylcbiIsCisJCQlfX0ZVTkNUSU9OX18sIGlvYy0+aW9jX3JlZ3MsCisJCQlwaHlzX21lbSA+
PiAyMCwKKwkJCWlvdmFfc3BhY2Vfc2l6ZSA+PiAyMCwKKwkJCWlvdl9vcmRlciArIElPVlBf
U0hJRlQpOwogCiAJQlVHX09OKGlvYy0+cGRpcl9zaXplID4gOCAqIDEwMjQgKiAxMDI0KTsg
ICAvKiBtYXggcGRpciBzaXplIDw9IDhNQiAqLwogCiAJLyogVmVyaWZ5IGl0J3MgYSBwb3dl
ciBvZiB0d28gKi8KIAlCVUdfT04oKDEgPDwgZ2V0X29yZGVyKGlvYy0+cGRpcl9zaXplKSkg
IT0gKGlvYy0+cGRpcl9zaXplID4+IFBBR0VfU0hJRlQpKTsKIAotCURCR19JTklUKCIlcygp
IGhwYSAweCVwIG1lbSAlbHVNQiBJT1YgJWRNQiAoJWQgYml0cylcbiIsCi0JCQlfX0ZVTkNU
SU9OX18sIGlvYy0+aW9jX3JlZ3MsCi0JCQkodW5zaWduZWQgbG9uZykgbnVtX3BoeXNwYWdl
cyA+PiAoMjAgLSBQQUdFX1NISUZUKSwKLQkJCWlvdmFfc3BhY2Vfc2l6ZT4+MjAsCi0JCQlp
b3Zfb3JkZXIgKyBQQUdFX1NISUZUKTsKLQogCWlvYy0+cGRpcl9iYXNlID0gKHU2NCAqKV9f
Z2V0X2ZyZWVfcGFnZXMoR0ZQX0tFUk5FTCwKIAkJCQkJCSBnZXRfb3JkZXIoaW9jLT5wZGly
X3NpemUpKTsKLQlpZihOVUxMID09IGlvYy0+cGRpcl9iYXNlKSB7CisJaWYoIShpb2MtPnBk
aXJfYmFzZSkpIHsKIAkJcGFuaWMoIiVzKCkgY291bGQgbm90IGFsbG9jYXRlIEkvTyBQYWdl
IFRhYmxlXG4iLCBfX0ZVTkNUSU9OX18pOwogCX0KIAltZW1zZXQoaW9jLT5wZGlyX2Jhc2Us
IDAsIGlvYy0+cGRpcl9zaXplKTsKQEAgLTEzMjEsMjcgKzE0MTcsMzEgQEAKIAlEQkdfSU5J
VCgiIGJhc2UgJXBcbiIsIGlvYy0+cGRpcl9iYXNlKTsKIAogCS8qIHJlc291cmNlIG1hcCBz
aXplIGRpY3RhdGVkIGJ5IHBkaXJfc2l6ZSAqLwotIAlpb2MtPnJlc19zaXplID0gKGlvYy0+
cGRpcl9zaXplIC8gc2l6ZW9mKHU2NCkpID4+IDM7CisgCWlvYy0+cmVzX3NpemUgPSBudW1f
aW9tbXVfcGFnZXMgPj4gMzsKIAlEQkdfSU5JVCgiJXMoKSByZXNfc2l6ZSAweCV4XG4iLCBf
X0ZVTkNUSU9OX18sIGlvYy0+cmVzX3NpemUpOwogCQogCWlvYy0+cmVzX21hcCA9ICh1OCAq
KV9fZ2V0X2ZyZWVfcGFnZXMoR0ZQX0tFUk5FTCwKIAkJCQkJICAgICAgZ2V0X29yZGVyKGlv
Yy0+cmVzX3NpemUpKTsKLQlpZihOVUxMID09IGlvYy0+cmVzX21hcCkgeworCWlmKCEoaW9j
LT5yZXNfbWFwKSkgewogCQlwYW5pYygiJXMoKSBjb3VsZCBub3QgYWxsb2NhdGUgcmVzb3Vy
Y2UgbWFwXG4iLCBfX0ZVTkNUSU9OX18pOwogCX0KIAltZW1zZXQoaW9jLT5yZXNfbWFwLCAw
LCBpb2MtPnJlc19zaXplKTsKIAotCS8qIEluaXRpYWxpemUgdGhlIHJlc19oaW50IHRvIDE2
ICovCi0JaW9jLT5yZXNfaGludCA9IDE2OworCS8qIG5leHQgYXZhaWxhYmxlIElPVlAgLSBj
aXJjdWxhciBzZWFyY2ggKi8KKwlpb2MtPnJlc19oaW50ID0gKHVuc2lnbmVkIGxvbmcgKikK
KwkJJihpb2MtPnJlc19tYXBbTDFfQ0FDSEVfQllURVNdKTsKIAogCS8qIEluaXRpYWxpemUg
dGhlIHNwaW5sb2NrICovCiAJc3Bpbl9sb2NrX2luaXQoJmlvYy0+cmVzX2xvY2spOwogCisJ
SU9fQ2hhaW5JZE1hc2sgPSBSRUFEX1UzMigmaW9jLT5pb2NfcmVncy0+aW9fY2hhaW5faWRf
bWFzayk7CisJREJHX0lOSVQoIiBEZWZhdWx0IGlvX2NoYWluX2lkX21hc2sgMHgleFxuIiwg
SU9fQ2hhaW5JZE1hc2spOworCiAJLyoKIAkqKiBDaGFpbmlkIGlzIHRoZSB1cHBlciBtb3N0
IGJpdHMgb2YgYW4gSU9WUCB1c2VkIHRvIGRldGVybWluZQogCSoqIHdoaWNoIFRMQiBlbnRy
eSBhbiBJT1ZQIHdpbGwgdXNlLgogCSovCi0JaW9jLT5jaGFpbmlkX3NoaWZ0ID0gZ2V0X29y
ZGVyKGlvdmFfc3BhY2Vfc2l6ZSkgKyBQQUdFX1NISUZUIC0gQ0NJT19DSEFJTklEX1NISUZU
OworCWlvYy0+Y2hhaW5pZF9zaGlmdCA9IGlvdl9vcmRlciArIElPVlBfU0hJRlQgLSBDQ0lP
X0NIQUlOSURfU0hJRlQ7CiAJREJHX0lOSVQoIiBjaGFpbmlkX3NoaWZ0IDB4JXhcbiIsIGlv
Yy0+Y2hhaW5pZF9zaGlmdCk7CiAKIAkvKgpAQCAtMTQ4NSwxNSArMTU4NSwxNSBAQAogCQly
ZXR1cm4gMDsKIAogCWlmICghZXhwYW5kX2lvY19hcmVhKHBhcmVudCwgc2l6ZSwgbWluLCBt
YXgsIGFsaWduKSkgewotCQlfX3Jhd193cml0ZWwoKChwYXJlbnQtPnN0YXJ0KT4+MTYpIHwg
MHhmZmZmMDAwMCwKKwkJV1JJVEVfVTMyKCgocGFyZW50LT5zdGFydCk+PjE2KSB8IDB4ZmZm
ZjAwMDAsCiAJCQkgICAgICZpb2MtPmlvY19yZWdzLT5pb19pb19sb3cpOwotCQlfX3Jhd193
cml0ZWwoKChwYXJlbnQtPmVuZCk+PjE2KSB8IDB4ZmZmZjAwMDAsCisJCVdSSVRFX1UzMigo
KHBhcmVudC0+ZW5kKT4+MTYpIHwgMHhmZmZmMDAwMCwKIAkJCSAgICAgJmlvYy0+aW9jX3Jl
Z3MtPmlvX2lvX2hpZ2gpOwogCX0gZWxzZSBpZiAoIWV4cGFuZF9pb2NfYXJlYShwYXJlbnQg
KyAxLCBzaXplLCBtaW4sIG1heCwgYWxpZ24pKSB7CiAJCXBhcmVudCsrOwotCQlfX3Jhd193
cml0ZWwoKChwYXJlbnQtPnN0YXJ0KT4+MTYpIHwgMHhmZmZmMDAwMCwKKwkJV1JJVEVfVTMy
KCgocGFyZW50LT5zdGFydCk+PjE2KSB8IDB4ZmZmZjAwMDAsCiAJCQkgICAgICZpb2MtPmlv
Y19yZWdzLT5pb19pb19sb3dfaHYpOwotCQlfX3Jhd193cml0ZWwoKChwYXJlbnQtPmVuZCk+
PjE2KSB8IDB4ZmZmZjAwMDAsCisJCVdSSVRFX1UzMigoKHBhcmVudC0+ZW5kKT4+MTYpIHwg
MHhmZmZmMDAwMCwKIAkJCSAgICAgJmlvYy0+aW9jX3JlZ3MtPmlvX2lvX2hpZ2hfaHYpOwog
CX0gZWxzZSB7CiAJCXJldHVybiAtRUJVU1k7CkBAIC0xNTQzLDggKzE2NDMsOCBAQAogCXN0
cnVjdCBpb2MgKmlvYywgKippb2NfcCA9ICZpb2NfbGlzdDsKIAlzdHJ1Y3QgcHJvY19kaXJf
ZW50cnkgKmluZm9fZW50cnksICpiaXRtYXBfZW50cnk7CiAJCi0JaW9jID0ga3phbGxvYyhz
aXplb2Yoc3RydWN0IGlvYyksIEdGUF9LRVJORUwpOwotCWlmIChpb2MgPT0gTlVMTCkgewor
CWlvYyA9IGt6YWxsb2Moc2l6ZW9mKCppb2MpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWlvYykg
ewogCQlwcmludGsoS0VSTl9FUlIgTU9EVUxFX05BTUUgIjogbWVtb3J5IGFsbG9jYXRpb24g
ZmFpbHVyZVxuIik7CiAJCXJldHVybiAxOwogCX0KQEAgLTE1NjYsNyArMTY2Niw3IEBACiAJ
ZGV2LT5kZXYucGxhdGZvcm1fZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwY2lfaGJh
X2RhdGEpLCBHRlBfS0VSTkVMKTsKIAogCS8qIGlmIHRoaXMgZmFpbHMsIG5vIEkvTyBjYXJk
cyB3aWxsIHdvcmssIHNvIG1heSBhcyB3ZWxsIGJ1ZyAqLwotCUJVR19PTihkZXYtPmRldi5w
bGF0Zm9ybV9kYXRhID09IE5VTEwpOworCUJVR19PTighKGRldi0+ZGV2LnBsYXRmb3JtX2Rh
dGEpKTsKIAlIQkFfREFUQShkZXYtPmRldi5wbGF0Zm9ybV9kYXRhKS0+aW9tbXUgPSBpb2M7
CiAJCiAJaWYgKGlvY19jb3VudCA9PSAwKSB7Cg==
--_=__=_XaM3_.1192518032.2A.754951.42.24555.52.42.007.1963376918
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
parisc-linux mailing list
[email protected]
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux
--_=__=_XaM3_.1192518032.2A.754951.42.24555.52.42.007.1963376918--