From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FzVTK-0001zj-PV for qemu-devel@nongnu.org; Sun, 09 Jul 2006 05:21:02 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FzVTJ-0001zX-Iv for qemu-devel@nongnu.org; Sun, 09 Jul 2006 05:21:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FzVTJ-0001zU-DO for qemu-devel@nongnu.org; Sun, 09 Jul 2006 05:21:01 -0400 Received: from [64.233.182.187] (helo=nf-out-0910.google.com) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FzVU8-0007Ks-Km for qemu-devel@nongnu.org; Sun, 09 Jul 2006 05:21:53 -0400 Received: by nf-out-0910.google.com with SMTP id c31so522198nfb for ; Sun, 09 Jul 2006 02:21:00 -0700 (PDT) Message-ID: Date: Sun, 9 Jul 2006 13:20:59 +0400 From: "Igor Kovalenko" Subject: Re: [Qemu-devel] qemu/hw rtl8139.c In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_21287_27504290.1152436859989" References: Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_21287_27504290.1152436859989 Content-Type: multipart/alternative; boundary="----=_Part_21288_18757255.1152436859989" ------=_Part_21288_18757255.1152436859989 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi! This updated patch against current CVS implements TCP segmentation offloading for RTL8139 in C+ mode. I fixed a couple of problems in implementation (wrong sequence number calculation), and now TCP performance seem to be normal. Dependency on slirp.h header is now gone. Again tested with linux (ethtool -K eth0 tx on sg on tso on); please apply. -- Kind Regards, Igor V. Kovalenko ------=_Part_21288_18757255.1152436859989 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi!

This updated patch against current CVS implements TCP segmentation offloading for RTL8139 in C+ mode.
I fixed a couple of problems in implementation (wrong sequence number calculation), and now TCP performance seem to be normal.

Dependency on slirp.h header is now gone.

Again tested with linux (ethtool -K eth0 tx on sg on tso on); please apply.

--
Kind Regards,
Igor V. Kovalenko


------=_Part_21288_18757255.1152436859989-- ------=_Part_21287_27504290.1152436859989 Content-Type: text/x-patch; name=rtl8139-20060709-1.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_epf6zmci Content-Disposition: attachment; filename="rtl8139-20060709-1.diff" SW5kZXg6IGh3L3J0bDgxMzkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9xZW11L3Fl bXUvaHcvcnRsODEzOS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtdSAtcjEuMyBy dGw4MTM5LmMKLS0tIGh3L3J0bDgxMzkuYwk0IEp1bCAyMDA2IDEwOjA4OjM2IC0wMDAwCTEuMwor KysgaHcvcnRsODEzOS5jCTkgSnVsIDIwMDYgMDk6MTQ6MDAgLTAwMDAKQEAgLTMzLDEzICszMywx NyBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1wbGVtZW50ZWQgUENJ IHRpbWVyIGludGVycnVwdCAoZGlzYWJsZWQgYnkgZGVmYXVsdCkKICAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEltcGxlbWVudGVkIFRhbGx5IENvdW50ZXJzLCBpbmNyZWFzZWQg Vk0gbG9hZC9zYXZlIHZlcnNpb24KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEltcGxlbWVudGVkIElQL1RDUC9VRFAgY2hlY2tzdW0gdGFzayBvZmZsb2FkaW5nCisgKgorICog IDIwMDYtSnVsLTA0ICBJZ29yIEtvdmFsZW5rbyA6ICAgSW1wbGVtZW50ZWQgVENQIHNlZ21lbnRh dGlvbiBvZmZsb2FkaW5nCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXhl ZCBNVFU9MTUwMCBmb3IgcHJvZHVjZWQgZXRoZXJuZXQgZnJhbWVzCisgKgorICogIDIwMDYtSnVs LTA5ICBJZ29yIEtvdmFsZW5rbyA6ICAgRml4ZWQgVENQIGhlYWRlciBsZW5ndGggY2FsY3VsYXRp b24gd2hpbGUgcHJvY2Vzc2luZworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VnbWVudGF0aW9uIG9mZmxvYWRpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFJlbW92ZWQgc2xpcnAuaCBkZXBlbmRlbmN5CiAgKi8KIAogI2luY2x1ZGUgInZsLmgiCiAK LS8qIFhYWDogc3VjaCBkZXBlbmRlbmN5IG11c3QgYmUgc3VwcHJlc3NlZCAqLwotI2luY2x1ZGUg PHNsaXJwL3NsaXJwLmg+Ci0KIC8qIGRlYnVnIFJUTDgxMzkgY2FyZCAqLwogLy8jZGVmaW5lIERF QlVHX1JUTDgxMzkgMQogCkBAIC0xNzMyLDYgKzE3MzYsMjUgQEAKICAgICByZXR1cm4gcmV0Owog fQogCitzdGF0aWMgdm9pZCBydGw4MTM5X3RyYW5zZmVyX2ZyYW1lKFJUTDgxMzlTdGF0ZSAqcywg Y29uc3QgdWludDhfdCAqYnVmLCBpbnQgc2l6ZSwgaW50IGRvX2ludGVycnVwdCkKK3sKKyAgICBp ZiAoIXNpemUpCisgICAgeworICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBlbXB0 eSBldGhlcm5ldCBmcmFtZVxuIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg KFR4TG9vcEJhY2sgPT0gKHMtPlR4Q29uZmlnICYgVHhMb29wQmFjaykpCisgICAgeworICAgICAg ICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyB0cmFuc21pdCBsb29wYmFjayBtb2RlXG4iKSk7 CisgICAgICAgIHJ0bDgxMzlfZG9fcmVjZWl2ZShzLCBidWYsIHNpemUsIGRvX2ludGVycnVwdCk7 CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHFlbXVfc2VuZF9wYWNrZXQocy0+dmMs IGJ1Ziwgc2l6ZSk7CisgICAgfQorfQorCiBzdGF0aWMgaW50IHJ0bDgxMzlfdHJhbnNtaXRfb25l KFJUTDgxMzlTdGF0ZSAqcywgaW50IGRlc2NyaXB0b3IpCiB7CiAgICAgaWYgKCFydGw4MTM5X3Ry YW5zbWl0dGVyX2VuYWJsZWQocykpCkBAIC0xNzYyLDE1ICsxNzg1LDcgQEAKICAgICBzLT5UeFN0 YXR1c1tkZXNjcmlwdG9yXSB8PSBUeEhvc3RPd25zOwogICAgIHMtPlR4U3RhdHVzW2Rlc2NyaXB0 b3JdIHw9IFR4U3RhdE9LOwogCi0gICAgaWYgKFR4TG9vcEJhY2sgPT0gKHMtPlR4Q29uZmlnICYg VHhMb29wQmFjaykpCi0gICAgewotICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyB0 cmFuc21pdCBsb29wYmFjayBtb2RlXG4iKSk7Ci0gICAgICAgIHJ0bDgxMzlfZG9fcmVjZWl2ZShz LCB0eGJ1ZmZlciwgdHhzaXplLCAwKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg cWVtdV9zZW5kX3BhY2tldChzLT52YywgdHhidWZmZXIsIHR4c2l6ZSk7Ci0gICAgfQorICAgIHJ0 bDgxMzlfdHJhbnNmZXJfZnJhbWUocywgdHhidWZmZXIsIHR4c2l6ZSwgMCk7CiAKICAgICBERUJV R19QUklOVCgoIlJUTDgxMzk6ICsrKyB0cmFuc21pdHRlZCAlZCBieXRlcyBmcm9tIGRlc2NyaXB0 b3IgJWRcbiIsIHR4c2l6ZSwgZGVzY3JpcHRvcikpOwogCkBAIC0xNzgxLDYgKzE3OTYsOTMgQEAK ICAgICByZXR1cm4gMTsKIH0KIAorLyogc3RydWN0dXJlcyBhbmQgbWFjcm9zIGZvciB0YXNrIG9m ZmxvYWRpbmcgKi8KK3R5cGVkZWYgc3RydWN0IGlwX2hlYWRlcgoreworICAgIHVpbnQ4X3QgIGlw X3Zlcl9sZW47ICAgIC8qIHZlcnNpb24gYW5kIGhlYWRlciBsZW5ndGggKi8KKyAgICB1aW50OF90 ICBpcF90b3M7ICAgICAgICAvKiB0eXBlIG9mIHNlcnZpY2UgKi8KKyAgICB1aW50MTZfdCBpcF9s ZW47ICAgICAgICAvKiB0b3RhbCBsZW5ndGggKi8KKyAgICB1aW50MTZfdCBpcF9pZDsgICAgICAg ICAvKiBpZGVudGlmaWNhdGlvbiAqLworICAgIHVpbnQxNl90IGlwX29mZjsgICAgICAgIC8qIGZy YWdtZW50IG9mZnNldCBmaWVsZCAqLworICAgIHVpbnQ4X3QgIGlwX3R0bDsgICAgICAgIC8qIHRp bWUgdG8gbGl2ZSAqLworICAgIHVpbnQ4X3QgIGlwX3A7ICAgICAgICAgIC8qIHByb3RvY29sICov CisgICAgdWludDE2X3QgaXBfc3VtOyAgICAgICAgLyogY2hlY2tzdW0gKi8KKyAgICB1aW50MzJf dCBpcF9zcmMsaXBfZHN0OyAvKiBzb3VyY2UgYW5kIGRlc3QgYWRkcmVzcyAqLworfSBpcF9oZWFk ZXI7CisKKyNkZWZpbmUgSVBfSEVBREVSX1ZFUlNJT05fNCA0CisjZGVmaW5lIElQX0hFQURFUl9W RVJTSU9OKGlwKSAoKGlwLT5pcF92ZXJfbGVuID4+IDQpJjB4ZikKKyNkZWZpbmUgSVBfSEVBREVS X0xFTkdUSChpcCkgKCgoaXAtPmlwX3Zlcl9sZW4pJjB4ZikgPDwgMikKKwordHlwZWRlZiBzdHJ1 Y3QgdGNwX2hlYWRlcgoreworICAgIHVpbnQxNl90IHRoX3Nwb3J0OwkJLyogc291cmNlIHBvcnQg Ki8KKyAgICB1aW50MTZfdCB0aF9kcG9ydDsJCS8qIGRlc3RpbmF0aW9uIHBvcnQgKi8KKyAgICB1 aW50MzJfdCB0aF9zZXE7CQkJLyogc2VxdWVuY2UgbnVtYmVyICovCisgICAgdWludDMyX3QgdGhf YWNrOwkJCS8qIGFja25vd2xlZGdlbWVudCBudW1iZXIgKi8KKyAgICB1aW50MTZfdCB0aF9vZmZz ZXRfZmxhZ3M7IC8qIGRhdGEgb2Zmc2V0LCByZXNlcnZlZCA2IGJpdHMsIFRDUCBwcm90b2NvbCBm bGFncyAqLworICAgIHVpbnQxNl90IHRoX3dpbjsJCQkvKiB3aW5kb3cgKi8KKyAgICB1aW50MTZf dCB0aF9zdW07CQkJLyogY2hlY2tzdW0gKi8KKyAgICB1aW50MTZfdCB0aF91cnA7CQkJLyogdXJn ZW50IHBvaW50ZXIgKi8KK30gdGNwX2hlYWRlcjsKKwordHlwZWRlZiBzdHJ1Y3QgdWRwX2hlYWRl cgoreworICAgIHVpbnQxNl90IHVoX3Nwb3J0OyAvKiBzb3VyY2UgcG9ydCAqLworICAgIHVpbnQx Nl90IHVoX2Rwb3J0OyAvKiBkZXN0aW5hdGlvbiBwb3J0ICovCisgICAgdWludDE2X3QgdWhfdWxl bjsgIC8qIHVkcCBsZW5ndGggKi8KKyAgICB1aW50MTZfdCB1aF9zdW07ICAgLyogdWRwIGNoZWNr c3VtICovCit9IHVkcF9oZWFkZXI7CisKK3R5cGVkZWYgc3RydWN0IGlwX3BzZXVkb19oZWFkZXIK K3sKKyAgICB1aW50MzJfdCBpcF9zcmM7CisgICAgdWludDMyX3QgaXBfZHN0OworICAgIHVpbnQ4 X3QgIHplcm9zOworICAgIHVpbnQ4X3QgIGlwX3Byb3RvOworICAgIHVpbnQxNl90IGlwX3BheWxv YWQ7Cit9IGlwX3BzZXVkb19oZWFkZXI7CisKKyNkZWZpbmUgSVBfUFJPVE9fVENQIDYKKyNkZWZp bmUgSVBfUFJPVE9fVURQIDE3CisKKyNkZWZpbmUgVENQX0hFQURFUl9EQVRBX09GRlNFVCh0Y3Ap ICgoKGJlMTZfdG9fY3B1KHRjcC0+dGhfb2Zmc2V0X2ZsYWdzKSA+PiAxMikmMHhmKSA8PCAyKQor I2RlZmluZSBUQ1BfRkxBR1NfT05MWShmbGFncykgKChmbGFncykmMHgzZikKKyNkZWZpbmUgVENQ X0hFQURFUl9GTEFHUyh0Y3ApIFRDUF9GTEFHU19PTkxZKGJlMTZfdG9fY3B1KHRjcC0+dGhfb2Zm c2V0X2ZsYWdzKSkKKworI2RlZmluZSBUQ1BfSEVBREVSX0NMRUFSX0ZMQUdTKHRjcCwgb2ZmKSAo KHRjcCktPnRoX29mZnNldF9mbGFncyAmPSBjcHVfdG9fYmUxNih+VENQX0ZMQUdTX09OTFkob2Zm KSkpCisKKyNkZWZpbmUgVENQX0ZMQUdfRklOICAweDAxCisjZGVmaW5lIFRDUF9GTEFHX1BVU0gg MHgwOAorCisvKiBwcm9kdWNlcyBvbmVzJyBjb21wbGVtZW50IHN1bSBvZiBkYXRhICovCitzdGF0 aWMgdWludDE2X3Qgb25lc19jb21wbGVtZW50X3N1bSh1aW50OF90ICpkYXRhLCBzaXplX3QgbGVu KQoreworICAgIHVpbnQzMl90IHJlc3VsdCA9IDA7CisKKyAgICBmb3IgKDsgbGVuID4gMTsgZGF0 YSs9MiwgbGVuLT0yKQorICAgIHsKKyAgICAgICAgcmVzdWx0ICs9ICoodWludDE2X3QqKWRhdGE7 CisgICAgfQorCisgICAgLyogYWRkIHRoZSByZW1haW5kZXIgYnl0ZSAqLworICAgIGlmIChsZW4p CisgICAgeworICAgICAgICB1aW50OF90IG9kZFsyXSA9IHsqZGF0YSwgMH07CisgICAgICAgIHJl c3VsdCArPSAqKHVpbnQxNl90KilvZGQ7CisgICAgfQorCisgICAgd2hpbGUgKHJlc3VsdD4+MTYp CisgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgJiAweGZmZmYpICsgKHJlc3VsdCA+PiAxNik7CisK KyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdWludDE2X3QgaXBfY2hlY2tzdW0odm9p ZCAqZGF0YSwgc2l6ZV90IGxlbikKK3sKKyAgICByZXR1cm4gfm9uZXNfY29tcGxlbWVudF9zdW0o KHVpbnQ4X3QqKWRhdGEsIGxlbik7Cit9CisKIHN0YXRpYyBpbnQgcnRsODEzOV9jcGx1c190cmFu c21pdF9vbmUoUlRMODEzOVN0YXRlICpzKQogewogICAgIGlmICghcnRsODEzOV90cmFuc21pdHRl cl9lbmFibGVkKHMpKQpAQCAtMTgzMSw2ICsxOTMzLDkgQEAKICNkZWZpbmUgQ1BfVFhfTFMgKDE8 PDI4KQogLyogbGFyZ2Ugc2VuZCBwYWNrZXQgZmxhZyAqLwogI2RlZmluZSBDUF9UWF9MR1NFTiAo MTw8MjcpCisvKiBsYXJnZSBzZW5kIE1TUyBtYXNrLCBiaXRzIDE2Li4uMjUgKi8KKyNkZWZpbmUg Q1BfVENfTEdTRU5fTVNTX01BU0sgKCgxIDw8IDEyKSAtIDEpCisKIC8qIElQIGNoZWNrc3VtIG9m ZmxvYWQgZmxhZyAqLwogI2RlZmluZSBDUF9UWF9JUENTICgxPDwxOCkKIC8qIFVEUCBjaGVja3N1 bSBvZmZsb2FkIGZsYWcgKi8KQEAgLTE4ODUsNiArMTk5MCw4IEBACiAgICAgICAgIHMtPmNwbHVz X3R4YnVmZmVyX2xlbiA9IENQX1RYX0JVRkZFUl9TSVpFOwogICAgICAgICBzLT5jcGx1c190eGJ1 ZmZlciA9IG1hbGxvYyhzLT5jcGx1c190eGJ1ZmZlcl9sZW4pOwogICAgICAgICBzLT5jcGx1c190 eGJ1ZmZlcl9vZmZzZXQgPSAwOworCisgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysr IEMrIG1vZGUgdHJhbnNtaXNzaW9uIGJ1ZmZlciBhbGxvY2F0ZWQgc3BhY2UgJWRcbiIsIHMtPmNw bHVzX3R4YnVmZmVyX2xlbikpOwogICAgIH0KIAogICAgIHdoaWxlIChzLT5jcGx1c190eGJ1ZmZl ciAmJiBzLT5jcGx1c190eGJ1ZmZlcl9vZmZzZXQgKyB0eHNpemUgPj0gcy0+Y3BsdXNfdHhidWZm ZXJfbGVuKQpAQCAtMTk2MCwzNSArMjA2Nyw0MSBAQAogICAgICAgICBzLT5jcGx1c190eGJ1ZmZl cl9vZmZzZXQgPSAwOwogICAgICAgICBzLT5jcGx1c190eGJ1ZmZlcl9sZW4gPSAwOwogCi0gICAg ICAgIGlmICh0eGR3MCAmIChDUF9UWF9JUENTIHwgQ1BfVFhfVURQQ1MgfCBDUF9UWF9UQ1BDUykp CisgICAgICAgIGlmICh0eGR3MCAmIChDUF9UWF9JUENTIHwgQ1BfVFhfVURQQ1MgfCBDUF9UWF9U Q1BDUyB8IENQX1RYX0xHU0VOKSkKICAgICAgICAgewogICAgICAgICAgICAgREVCVUdfUFJJTlQo KCJSVEw4MTM5OiArKysgQysgbW9kZSBvZmZsb2FkZWQgdGFzayBjaGVja3N1bVxuIikpOwogCiAg ICAgICAgICAgICAjZGVmaW5lIEVUSF9QX0lQCTB4MDgwMAkJLyogSW50ZXJuZXQgUHJvdG9jb2wg cGFja2V0CSovCiAgICAgICAgICAgICAjZGVmaW5lIEVUSF9ITEVOICAgIDE0CisgICAgICAgICAg ICAjZGVmaW5lIEVUSF9NVFUgICAgIDE1MDAKIAogICAgICAgICAgICAgLyogaXAgcGFja2V0IGhl YWRlciAqLwotICAgICAgICAgICAgcmVnaXN0ZXIgc3RydWN0IGlwICppcCA9IDA7CisgICAgICAg ICAgICBpcF9oZWFkZXIgKmlwID0gMDsKICAgICAgICAgICAgIGludCBobGVuID0gMDsKKyAgICAg ICAgICAgIHVfaW50OF90ICBpcF9wcm90b2NvbCA9IDA7CisgICAgICAgICAgICB1X2ludDE2X3Qg aXBfZGF0YV9sZW4gPSAwOwogCi0gICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiBsb2NhbF9tOworICAg ICAgICAgICAgdWludDhfdCAqZXRoX3BheWxvYWRfZGF0YSA9IDA7CisgICAgICAgICAgICBzaXpl X3QgICBldGhfcGF5bG9hZF9sZW4gID0gMDsKIAotICAgICAgICAgICAgaW50IHByb3RvID0gbnRv aHMoKih1aW50MTZfdCAqKShzYXZlZF9idWZmZXIgKyAxMikpOworICAgICAgICAgICAgaW50IHBy b3RvID0gYmUxNl90b19jcHUoKih1aW50MTZfdCAqKShzYXZlZF9idWZmZXIgKyAxMikpOwogICAg ICAgICAgICAgaWYgKHByb3RvID09IEVUSF9QX0lQKQogICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUgaGFzIElQIHBhY2tldFxu IikpOwogCiAgICAgICAgICAgICAgICAgLyogbm90IGFsaWduZWQgKi8KLSAgICAgICAgICAgICAg ICBsb2NhbF9tLm1fZGF0YSA9IHNhdmVkX2J1ZmZlciArIEVUSF9ITEVOOwotICAgICAgICAgICAg ICAgIGxvY2FsX20ubV9sZW4gID0gc2F2ZWRfc2l6ZSAgIC0gRVRIX0hMRU47CisgICAgICAgICAg ICAgICAgZXRoX3BheWxvYWRfZGF0YSA9IHNhdmVkX2J1ZmZlciArIEVUSF9ITEVOOworICAgICAg ICAgICAgICAgIGV0aF9wYXlsb2FkX2xlbiAgPSBzYXZlZF9zaXplICAgLSBFVEhfSExFTjsKIAot ICAgICAgICAgICAgICAgIGlwID0gbXRvZCgmbG9jYWxfbSwgc3RydWN0IGlwICopOworICAgICAg ICAgICAgICAgIGlwID0gKGlwX2hlYWRlciopZXRoX3BheWxvYWRfZGF0YTsKIAotICAgICAgICAg ICAgICAgIGlmIChpcC0+aXBfdiAhPSBJUFZFUlNJT04pIHsKLSAgICAgICAgICAgICAgICAgICAg REVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9kZSBwYWNrZXQgaGFzIGJhZCBJUCB2ZXJz aW9uICVkIGV4cGVjdGVkICVkXG4iLCBpcC0+aXBfdiwgSVBWRVJTSU9OKSk7CisgICAgICAgICAg ICAgICAgaWYgKElQX0hFQURFUl9WRVJTSU9OKGlwKSAhPSBJUF9IRUFERVJfVkVSU0lPTl80KSB7 CisgICAgICAgICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUg cGFja2V0IGhhcyBiYWQgSVAgdmVyc2lvbiAlZCBleHBlY3RlZCAlZFxuIiwgSVBfSEVBREVSX1ZF UlNJT04oaXApLCBJUF9IRUFERVJfVkVSU0lPTl80KSk7CiAgICAgICAgICAgICAgICAgICAgIGlw ID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBo bGVuID0gaXAtPmlwX2hsIDw8IDI7CisgICAgICAgICAgICAgICAgICAgIGhsZW4gPSBJUF9IRUFE RVJfTEVOR1RIKGlwKTsKKyAgICAgICAgICAgICAgICAgICAgaXBfcHJvdG9jb2wgPSBpcC0+aXBf cDsKKyAgICAgICAgICAgICAgICAgICAgaXBfZGF0YV9sZW4gPSBiZTE2X3RvX2NwdShpcC0+aXBf bGVuKSAtIGhsZW47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0xOTk4 LDg0ICsyMTExLDE3NyBAQAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg REVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9kZSBuZWVkIElQIGNoZWNrc3VtXG4iKSk7 CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGhsZW48c2l6ZW9mKHN0cnVjdCBpcCApIHx8IGhs ZW4+bG9jYWxfbS5tX2xlbikgey8qIG1pbiBoZWFkZXIgbGVuZ3RoICovCisgICAgICAgICAgICAg ICAgICAgIGlmIChobGVuPHNpemVvZihpcF9oZWFkZXIpIHx8IGhsZW4+ZXRoX3BheWxvYWRfbGVu KSB7LyogbWluIGhlYWRlciBsZW5ndGggKi8KICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJh ZCBwYWNrZXQgaGVhZGVyIGxlbiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgLyogb3IgcGFj a2V0IHRvbyBzaG9ydCAqLwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg aXAtPmlwX3N1bSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpcC0+aXBfc3VtID0gY2tz dW0oJmxvY2FsX20sIGhsZW4pOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5pcF9zdW0g PSBpcF9jaGVja3N1bShpcCwgaGxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR19Q UklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIElQIGhlYWRlciBsZW49JWQgY2hlY2tzdW09JTA0 eFxuIiwgaGxlbiwgaXAtPmlwX3N1bSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHR4ZHcwICYgKENQX1RYX1RDUENTfENQ X1RYX1VEUENTKSkKKyAgICAgICAgICAgICAgICBpZiAoKHR4ZHcwICYgQ1BfVFhfTEdTRU4pICYm IGlwX3Byb3RvY29sID09IElQX1BST1RPX1RDUCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUgbmVlZCBUQ1Ag b3IgVURQIGNoZWNrc3VtXG4iKSk7CisgICAgICAgICAgICAgICAgICAgIGludCBsYXJnZV9zZW5k X21zcyA9ICh0eGR3MCA+PiAxNikgJiBDUF9UQ19MR1NFTl9NU1NfTUFTSzsKKworICAgICAgICAg ICAgICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIG9mZmxvYWRlZCB0 YXNrIFRTTyBNVFU9JWQgSVAgZGF0YSAlZCBmcmFtZSBkYXRhICVkIHNwZWNpZmllZCBNU1M9JWRc biIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVEhfTVRVLCBpcF9kYXRhX2xl biwgc2F2ZWRfc2l6ZSAtIEVUSF9ITEVOLCBsYXJnZV9zZW5kX21zcykpOwogCi0gICAgICAgICAg ICAgICAgICAgIHVfaW50OF90ICBpcF9wcm90b2NvbCA9IGlwLT5pcF9wOwotICAgICAgICAgICAg ICAgICAgICB1X2ludDE2X3QgaXBfZGF0YV9sZW4gPSBudG9ocyhpcC0+aXBfbGVuKSAtIGhsZW47 CisgICAgICAgICAgICAgICAgICAgIGludCB0Y3Bfc2VuZF9vZmZzZXQgPSAwOworICAgICAgICAg ICAgICAgICAgICBpbnQgc2VuZF9jb3VudCA9IDA7CiAKICAgICAgICAgICAgICAgICAgICAgLyog bWF4aW11bSBJUCBoZWFkZXIgbGVuZ3RoIGlzIDYwIGJ5dGVzICovCiAgICAgICAgICAgICAgICAg ICAgIHVpbnQ4X3Qgc2F2ZWRfaXBfaGVhZGVyWzYwXTsKLSAgICAgICAgICAgICAgICAgICAgbWVt Y3B5KHNhdmVkX2lwX2hlYWRlciwgbG9jYWxfbS5tX2RhdGEsIGhsZW4pOwogCi0gICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBtYnVmIGxvY2FsX2NoZWNrc3VtX207CisgICAgICAgICAgICAgICAg ICAgIC8qIHNhdmUgSVAgaGVhZGVyIHRlbXBsYXRlOyBkYXRhIGFyZWEgaXMgdXNlZCBpbiB0Y3Ag Y2hlY2tzdW0gY2FsY3VsYXRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHNhdmVk X2lwX2hlYWRlciwgZXRoX3BheWxvYWRfZGF0YSwgaGxlbik7CisKKyAgICAgICAgICAgICAgICAg ICAgLyogYSBwbGFjZWhvbGRlciBmb3IgY2hlY2tzdW0gY2FsY3VsYXRpb24gcm91dGluZSBpbiB0 Y3AgY2FzZSAqLworICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpkYXRhX3RvX2NoZWNrc3Vt ICAgICA9IGV0aF9wYXlsb2FkX2RhdGEgKyBobGVuIC0gMTI7CisgICAgICAgICAgICAgICAgICAg IHNpemVfdCAgIGRhdGFfdG9fY2hlY2tzdW1fbGVuID0gZXRoX3BheWxvYWRfbGVuICAtIGhsZW4g KyAxMjsKKworICAgICAgICAgICAgICAgICAgICAvKiBwb2ludGVyIHRvIFRDUCBoZWFkZXIgKi8K KyAgICAgICAgICAgICAgICAgICAgdGNwX2hlYWRlciAqcF90Y3BfaGRyID0gKHRjcF9oZWFkZXIq KShldGhfcGF5bG9hZF9kYXRhICsgaGxlbik7CisKKyAgICAgICAgICAgICAgICAgICAgaW50IHRj cF9obGVuID0gVENQX0hFQURFUl9EQVRBX09GRlNFVChwX3RjcF9oZHIpOworCisgICAgICAgICAg ICAgICAgICAgIC8qIEVUSF9NVFUgPSBpcCBoZWFkZXIgbGVuICsgdGNwIGhlYWRlciBsZW4gKyBw YXlsb2FkICovCisgICAgICAgICAgICAgICAgICAgIGludCB0Y3BfZGF0YV9sZW4gPSBpcF9kYXRh X2xlbiAtIHRjcF9obGVuOworICAgICAgICAgICAgICAgICAgICBpbnQgdGNwX2NodW5rX3NpemUg PSBFVEhfTVRVIC0gaGxlbiAtIHRjcF9obGVuOworCisgICAgICAgICAgICAgICAgICAgIERFQlVH X1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUgVFNPIElQIGRhdGEgbGVuICVkIFRDUCBobGVu ICVkIFRDUCBkYXRhIGxlbiAlZCBUQ1AgY2h1bmsgc2l6ZSAlZFxuIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlwX2RhdGFfbGVuLCB0Y3BfaGxlbiwgdGNwX2RhdGFfbGVuLCB0 Y3BfY2h1bmtfc2l6ZSkpOworCisgICAgICAgICAgICAgICAgICAgIC8qIG5vdGUgdGhlIGN5Y2xl IGJlbG93IG92ZXJ3cml0ZXMgSVAgaGVhZGVyIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg IGJ1dCByZXN0b3JlcyBpdCBmcm9tIHNhdmVkX2lwX2hlYWRlciBiZWZvcmUgc2VuZGluZyBwYWNr ZXQgKi8KKworICAgICAgICAgICAgICAgICAgICBpbnQgaXNfbGFzdF9mcmFtZSA9IDA7CisKKyAg ICAgICAgICAgICAgICAgICAgZm9yICh0Y3Bfc2VuZF9vZmZzZXQgPSAwOyB0Y3Bfc2VuZF9vZmZz ZXQgPCB0Y3BfZGF0YV9sZW47IHRjcF9zZW5kX29mZnNldCArPSB0Y3BfY2h1bmtfc2l6ZSkKKyAg ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgY2h1 bmtfc2l6ZSA9IHRjcF9jaHVua19zaXplOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBj aGVjayBpZiB0aGlzIGlzIHRoZSBsYXN0IGZyYW1lICovCisgICAgICAgICAgICAgICAgICAgICAg ICBpZiAodGNwX3NlbmRfb2Zmc2V0ICsgdGNwX2NodW5rX3NpemUgPj0gdGNwX2RhdGFfbGVuKQor ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz X2xhc3RfZnJhbWUgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3NpemUg PSB0Y3BfZGF0YV9sZW4gLSB0Y3Bfc2VuZF9vZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysr IEMrIG1vZGUgVFNPIFRDUCBzZXFubyAlMDh4XG4iLCBiZTMyX3RvX2NwdShwX3RjcF9oZHItPnRo X3NlcSkpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkIDQgVENQIHBzZXVkb2hl YWRlciBmaWVsZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHkgSVAgc291cmNl IGFuZCBkZXN0aW5hdGlvbiBmaWVsZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNw eShkYXRhX3RvX2NoZWNrc3VtLCBzYXZlZF9pcF9oZWFkZXIgKyAxMiwgOCk7CisKKyAgICAgICAg ICAgICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUgVFNPIGNh bGN1bGF0aW5nIFRDUCBjaGVja3N1bSBmb3IgcGFja2V0IHdpdGggJWQgYnl0ZXMgZGF0YVxuIiwg dGNwX2hsZW4gKyBjaHVua19zaXplKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0 Y3Bfc2VuZF9vZmZzZXQpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWVtY3B5KCh1aW50OF90KilwX3RjcF9oZHIgKyB0Y3BfaGxlbiwgKHVp bnQ4X3QqKXBfdGNwX2hkciArIHRjcF9obGVuICsgdGNwX3NlbmRfb2Zmc2V0LCBjaHVua19zaXpl KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAg Lyoga2VlcCBQVVNIIGFuZCBGSU4gZmxhZ3Mgb25seSBmb3IgdGhlIGxhc3QgZnJhbWUgKi8KKyAg ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfbGFzdF9mcmFtZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ1BfSEVBREVSX0NMRUFS X0ZMQUdTKHBfdGNwX2hkciwgVENQX0ZMQUdfUFVTSHxUQ1BfRkxBR19GSU4pOworICAgICAgICAg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvKiByZWNhbGN1bGF0 ZSBUQ1AgY2hlY2tzdW0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwX3BzZXVkb19oZWFk ZXIgKnBfdGNwaXBfaGRyID0gKGlwX3BzZXVkb19oZWFkZXIgKilkYXRhX3RvX2NoZWNrc3VtOwor ICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3BpcF9oZHItPnplcm9zICAgICAgPSAwOworICAg ICAgICAgICAgICAgICAgICAgICAgcF90Y3BpcF9oZHItPmlwX3Byb3RvICAgPSBJUF9QUk9UT19U Q1A7CisgICAgICAgICAgICAgICAgICAgICAgICBwX3RjcGlwX2hkci0+aXBfcGF5bG9hZCA9IGNw dV90b19iZTE2KHRjcF9obGVuICsgY2h1bmtfc2l6ZSk7CisKKyAgICAgICAgICAgICAgICAgICAg ICAgIHBfdGNwX2hkci0+dGhfc3VtID0gMDsKIAotICAgICAgICAgICAgICAgICAgICBsb2NhbF9j aGVja3N1bV9tLm1fZGF0YSA9IGxvY2FsX20ubV9kYXRhICsgaGxlbiAtIDEyOwotICAgICAgICAg ICAgICAgICAgICBsb2NhbF9jaGVja3N1bV9tLm1fbGVuICA9IGxvY2FsX20ubV9sZW4gIC0gaGxl biArIDEyOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRjcF9jaGVja3N1bSA9IGlwX2No ZWNrc3VtKGRhdGFfdG9fY2hlY2tzdW0sIHRjcF9obGVuICsgY2h1bmtfc2l6ZSArIDEyKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUg VFNPIFRDUCBjaGVja3N1bSAlMDR4XG4iLCB0Y3BfY2hlY2tzdW0pKTsKKworICAgICAgICAgICAg ICAgICAgICAgICAgcF90Y3BfaGRyLT50aF9zdW0gPSB0Y3BfY2hlY2tzdW07CisKKyAgICAgICAg ICAgICAgICAgICAgICAgIC8qIHJlc3RvcmUgSVAgaGVhZGVyICovCisgICAgICAgICAgICAgICAg ICAgICAgICBtZW1jcHkoZXRoX3BheWxvYWRfZGF0YSwgc2F2ZWRfaXBfaGVhZGVyLCBobGVuKTsK KworICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IElQIGRhdGEgbGVuZ3RoIGFuZCByZWNh bGN1bGF0ZSBJUCBjaGVja3N1bSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmlwX2xl biA9IGNwdV90b19iZTE2KGhsZW4gKyB0Y3BfaGxlbiArIGNodW5rX3NpemUpOworCisgICAgICAg ICAgICAgICAgICAgICAgICAvKiBpbmNyZW1lbnQgSVAgaWQgZm9yIHN1YnNlcXVlbnQgZnJhbWVz ICovCisgICAgICAgICAgICAgICAgICAgICAgICBpcC0+aXBfaWQgPSBjcHVfdG9fYmUxNih0Y3Bf c2VuZF9vZmZzZXQvdGNwX2NodW5rX3NpemUgKyBiZTE2X3RvX2NwdShpcC0+aXBfaWQpKTsKKwor ICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmlwX3N1bSA9IDA7CisgICAgICAgICAgICAgICAg ICAgICAgICBpcC0+aXBfc3VtID0gaXBfY2hlY2tzdW0oZXRoX3BheWxvYWRfZGF0YSwgaGxlbik7 CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBDKyBt b2RlIFRTTyBJUCBoZWFkZXIgbGVuPSVkIGNoZWNrc3VtPSUwNHhcbiIsIGhsZW4sIGlwLT5pcF9z dW0pKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRzb19zZW5kX3NpemUgPSBFVEhf SExFTiArIGhsZW4gKyB0Y3BfaGxlbiArIGNodW5rX3NpemU7CisgICAgICAgICAgICAgICAgICAg ICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIFRTTyB0cmFuc2ZlcnJpbmcg cGFja2V0IHNpemUgJWRcbiIsIHRzb19zZW5kX3NpemUpKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJ0bDgxMzlfdHJhbnNmZXJfZnJhbWUocywgc2F2ZWRfYnVmZmVyLCB0c29fc2VuZF9zaXpl LCAwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkIHRyYW5zZmVycmVkIGNvdW50 IHRvIFRDUCBzZXF1ZW5jZSBudW1iZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNw X2hkci0+dGhfc2VxID0gY3B1X3RvX2JlMzIoY2h1bmtfc2l6ZSArIGJlMzJfdG9fY3B1KHBfdGNw X2hkci0+dGhfc2VxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3NlbmRfY291bnQ7Cisg ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvKiBTdG9wIHNlbmRp bmcgdGhpcyBmcmFtZSAqLworICAgICAgICAgICAgICAgICAgICBzYXZlZF9zaXplID0gMDsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodHhkdzAgJiAoQ1BfVFhf VENQQ1N8Q1BfVFhfVURQQ1MpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgbW9kZSBuZWVkIFRDUCBvciBVRFAgY2hl Y2tzdW1cbiIpKTsKKworICAgICAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIElQIGhlYWRlciBs ZW5ndGggaXMgNjAgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCBzYXZlZF9p cF9oZWFkZXJbNjBdOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc2F2ZWRfaXBfaGVhZGVy LCBldGhfcGF5bG9hZF9kYXRhLCBobGVuKTsKKworICAgICAgICAgICAgICAgICAgICB1aW50OF90 ICpkYXRhX3RvX2NoZWNrc3VtICAgICA9IGV0aF9wYXlsb2FkX2RhdGEgKyBobGVuIC0gMTI7Cisg ICAgICAgICAgICAgICAgICAgIHNpemVfdCAgIGRhdGFfdG9fY2hlY2tzdW1fbGVuID0gZXRoX3Bh eWxvYWRfbGVuICAtIGhsZW4gKyAxMjsKIAogICAgICAgICAgICAgICAgICAgICAvKiBhZGQgNCBU Q1AgcHNldWRvaGVhZGVyIGZpZWxkcyAqLwogICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IElQ IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZmllbGRzICovCi0gICAgICAgICAgICAgICAgICAgIG1l bWNweShsb2NhbF9jaGVja3N1bV9tLm1fZGF0YSwgc2F2ZWRfaXBfaGVhZGVyICsgMTIsIDgpOwor ICAgICAgICAgICAgICAgICAgICBtZW1jcHkoZGF0YV90b19jaGVja3N1bSwgc2F2ZWRfaXBfaGVh ZGVyICsgMTIsIDgpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICgodHhkdzAgJiBDUF9UWF9U Q1BDUykgJiYgaXBfcHJvdG9jb2wgPT0gSVBQUk9UT19UQ1ApCisgICAgICAgICAgICAgICAgICAg IGlmICgodHhkdzAgJiBDUF9UWF9UQ1BDUykgJiYgaXBfcHJvdG9jb2wgPT0gSVBfUFJPVE9fVENQ KQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR19Q UklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIGNhbGN1bGF0aW5nIFRDUCBjaGVja3N1bSBmb3Ig cGFja2V0IHdpdGggJWQgYnl0ZXMgZGF0YVxuIiwgaXBfZGF0YV9sZW4pKTsKIAotICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHRjcGlwaGRyICogcF90Y3BpcF9oZHIgPSAoc3RydWN0IHRj cGlwaGRyICopbG9jYWxfY2hlY2tzdW1fbS5tX2RhdGE7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBwX3RjcGlwX2hkci0+dGlfeDEgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgcF90Y3Bp cF9oZHItPnRpX3ByID0gSVBQUk9UT19UQ1A7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwX3Rj cGlwX2hkci0+dGlfbGVuID0gaHRvbnMoaXBfZGF0YV9sZW4pOworICAgICAgICAgICAgICAgICAg ICAgICAgaXBfcHNldWRvX2hlYWRlciAqcF90Y3BpcF9oZHIgPSAoaXBfcHNldWRvX2hlYWRlciAq KWRhdGFfdG9fY2hlY2tzdW07CisgICAgICAgICAgICAgICAgICAgICAgICBwX3RjcGlwX2hkci0+ emVyb3MgICAgICA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBwX3RjcGlwX2hkci0+aXBf cHJvdG8gICA9IElQX1BST1RPX1RDUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNwaXBf aGRyLT5pcF9wYXlsb2FkID0gY3B1X3RvX2JlMTYoaXBfZGF0YV9sZW4pOwogCi0gICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdGNwaGRyKiBwX3RjcF9oZHIgPSAoc3RydWN0IHRjcGhkciop IChsb2NhbF9jaGVja3N1bV9tLm1fZGF0YSsxMik7CisgICAgICAgICAgICAgICAgICAgICAgICB0 Y3BfaGVhZGVyKiBwX3RjcF9oZHIgPSAodGNwX2hlYWRlciAqKSAoZGF0YV90b19jaGVja3N1bSsx Mik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHBfdGNwX2hkci0+dGhfc3VtID0gMDsKIAot ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRjcF9jaGVja3N1bSA9IGNrc3VtKCZsb2NhbF9j aGVja3N1bV9tLCBpcF9kYXRhX2xlbiArIDEyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu dCB0Y3BfY2hlY2tzdW0gPSBpcF9jaGVja3N1bShkYXRhX3RvX2NoZWNrc3VtLCBpcF9kYXRhX2xl biArIDEyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTog KysrIEMrIG1vZGUgVENQIGNoZWNrc3VtICUwNHhcbiIsIHRjcF9jaGVja3N1bSkpOwogCiAgICAg ICAgICAgICAgICAgICAgICAgICBwX3RjcF9oZHItPnRoX3N1bSA9IHRjcF9jaGVja3N1bTsKICAg ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgodHhkdzAg JiBDUF9UWF9VRFBDUykgJiYgaXBfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFApCisgICAgICAgICAg ICAgICAgICAgIGVsc2UgaWYgKCh0eGR3MCAmIENQX1RYX1VEUENTKSAmJiBpcF9wcm90b2NvbCA9 PSBJUF9QUk9UT19VRFApCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgIERFQlVHX1BSSU5UKCgiUlRMODEzOTogKysrIEMrIG1vZGUgY2FsY3VsYXRpbmcgVURQ IGNoZWNrc3VtIGZvciBwYWNrZXQgd2l0aCAlZCBieXRlcyBkYXRhXG4iLCBpcF9kYXRhX2xlbikp OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwaXBoZHIgKiBwX3VkcGlwX2hk ciA9IChzdHJ1Y3QgdWRwaXBoZHIgKilsb2NhbF9jaGVja3N1bV9tLm1fZGF0YTsKLSAgICAgICAg ICAgICAgICAgICAgICAgIHBfdWRwaXBfaGRyLT51aV94MSA9IDA7Ci0gICAgICAgICAgICAgICAg ICAgICAgICBwX3VkcGlwX2hkci0+dWlfcHIgPSBJUFBST1RPX1VEUDsKLSAgICAgICAgICAgICAg ICAgICAgICAgIHBfdWRwaXBfaGRyLT51aV9sZW4gPSBodG9ucyhpcF9kYXRhX2xlbik7CisgICAg ICAgICAgICAgICAgICAgICAgICBpcF9wc2V1ZG9faGVhZGVyICpwX3VkcGlwX2hkciA9IChpcF9w c2V1ZG9faGVhZGVyICopZGF0YV90b19jaGVja3N1bTsKKyAgICAgICAgICAgICAgICAgICAgICAg IHBfdWRwaXBfaGRyLT56ZXJvcyAgICAgID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBf dWRwaXBfaGRyLT5pcF9wcm90byAgID0gSVBfUFJPVE9fVURQOworICAgICAgICAgICAgICAgICAg ICAgICAgcF91ZHBpcF9oZHItPmlwX3BheWxvYWQgPSBjcHVfdG9fYmUxNihpcF9kYXRhX2xlbik7 CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBoZHIqIHBfdWRwX2hkciA9IChz dHJ1Y3QgdWRwaGRyKikgKGxvY2FsX2NoZWNrc3VtX20ubV9kYXRhKzEyKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHVkcF9oZWFkZXIgKnBfdWRwX2hkciA9ICh1ZHBfaGVhZGVyICopIChkYXRh X3RvX2NoZWNrc3VtKzEyKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9sZF9jc3Vt ID0gcF91ZHBfaGRyLT51aF9zdW07CiAgICAgICAgICAgICAgICAgICAgICAgICBwX3VkcF9oZHIt PnVoX3N1bSA9IDA7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB1ZHBfY2hlY2tzdW0g PSBja3N1bSgmbG9jYWxfY2hlY2tzdW1fbSwgaXBfZGF0YV9sZW4gKyAxMik7CisgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgdWRwX2NoZWNrc3VtID0gaXBfY2hlY2tzdW0oZGF0YV90b19jaGVj a3N1bSwgaXBfZGF0YV9sZW4gKyAxMik7CiAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR19Q UklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIFVEUCBjaGVja3N1bSAlMDR4XG4iLCB1ZHBfY2hl Y2tzdW0pKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZF9jc3VtICE9IHVkcF9j aGVja3N1bSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIFVEUCBjaGVja3N1bSBt aXNtYXRjaCBvbGQ9JTA0eCBuZXc9JTA0eFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2xkX2NzdW0sIHVkcF9jaGVja3N1bSkpOwotICAgICAgICAgICAgICAg ICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgICAgICAgICBwX3VkcF9oZHItPnVoX3N1bSA9 IHVkcF9jaGVja3N1bTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg ICAgIC8qIHJlc3RvcmUgSVAgaGVhZGVyICovCi0gICAgICAgICAgICAgICAgICAgIG1lbWNweShs b2NhbF9tLm1fZGF0YSwgc2F2ZWRfaXBfaGVhZGVyLCBobGVuKTsKKyAgICAgICAgICAgICAgICAg ICAgbWVtY3B5KGV0aF9wYXlsb2FkX2RhdGEsIHNhdmVkX2lwX2hlYWRlciwgaGxlbik7CiAgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDg1LDE2ICsyMjkx LDcgQEAKIAogICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIHRyYW5z bWl0dGluZyAlZCBieXRlcyBwYWNrZXRcbiIsIHNhdmVkX3NpemUpKTsKIAotICAgICAgICBpZiAo VHhMb29wQmFjayA9PSAocy0+VHhDb25maWcgJiBUeExvb3BCYWNrKSkKLSAgICAgICAgewotICAg ICAgICAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiArKysgQysgdHJhbnNtaXQgbG9vcGJhY2sg bW9kZVxuIikpOwotICAgICAgICAgICAgcnRsODEzOV9yZWNlaXZlKHMsIHNhdmVkX2J1ZmZlciwg c2F2ZWRfc2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAg ICAgICAvKiB0cmFuc21pdCB0aGUgcGFja2V0ICovCi0gICAgICAgICAgICBxZW11X3NlbmRfcGFj a2V0KHMtPnZjLCBzYXZlZF9idWZmZXIsIHNhdmVkX3NpemUpOwotICAgICAgICB9CisgICAgICAg IHJ0bDgxMzlfdHJhbnNmZXJfZnJhbWUocywgc2F2ZWRfYnVmZmVyLCBzYXZlZF9zaXplLCAxKTsK IAogICAgICAgICAvKiByZXN0b3JlIGNhcmQgc3BhY2UgaWYgdGhlcmUgd2FzIG5vIHJlY3Vyc2lv biBhbmQgcmVzZXQgb2Zmc2V0ICovCiAgICAgICAgIGlmICghcy0+Y3BsdXNfdHhidWZmZXIpCg== ------=_Part_21287_27504290.1152436859989--