From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2 6/9] viridian: separate time related enlightenment implementations... Date: Wed, 31 Oct 2018 12:43:32 +0000 Message-ID: <20181031124335.23867-7-paul.durrant@citrix.com> References: <20181031124335.23867-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gHpqZ-0005vC-2L for xen-devel@lists.xenproject.org; Wed, 31 Oct 2018 12:43:43 +0000 In-Reply-To: <20181031124335.23867-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4uaW50byBuZXcgJ3RpbWUnIG1vZHVsZS4KClRoaXMgcGF0Y2ggcmVkdWNlcyB0aGUgc2l6ZSBv ZiB0aGUgbWFpbiB2aXJpZGlhbiBzb3VyY2UgbW9kdWxlIGJ5Cm1vdmluZyB0aW1lIHJlbGF0ZWQg ZW5saWdodGVubWVudHMgaW50byB0aGVpciBvd24gc291cmNlIG1vZHVsZS4gVGhpcyBpcwpkb25l IGluIGFudGljaXBhdGlvbiBvZiBpbXBsZW1lbnRhdGlvbiBvZiBtb3JlIHN1Y2ggZW5pZ2h0ZW5t ZW50cyBhbmQKYSBkZXNpcmUgdG8gbm90IGZ1cnRoZXIgbGVuZ3RoZW4gdGhlIG1haW4gc291cmNl IG1vZHVsZSB3aGVuIHRoaXMgd29yawppcyBkb25lLgoKV2hpbGUgbW92aW5nIHRoZSBjb2RlOgoK LSBNb3ZlIHRoZSBkZWNsYXJhdGlvbiBvZiBIVl9SRUZFUkVOQ0VfVFNDX1BBR0UgZnJvbSB0aGUg aGVhZGVyIGZpbGUgaW50bwogIHRoZSBuZXcgc291cmNlIG1vZHVsZSwgc2luY2UgaXQgaXMgb25s eSB1c2VkIHRoZXJlLgotIENsZWFuIHVwIGEgYm9vbF90LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBE dXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJl dWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXgu Y29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KCnYyOgogLSBTb3J0IGhlYWRl cnMgYWxwaGFiZXRpY2FsbHkgYW5kIHNlcGFyYXRlIGFzbS8gYW1kIHhlbi8gc2VjdGlvbnMKIC0g Q29uc3RpZnkgZG9tYWluIGNvbnRleHQgZHVyaW5nIGxvYWQKLS0tCiB4ZW4vYXJjaC94ODYvaHZt L3ZpcmlkaWFuL01ha2VmaWxlICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi90 aW1lLmMgICAgIHwgMjQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v YXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMgfCAxNzQgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCAgIHwgIDE3ICsrLQog NCBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0aW9ucygrKSwgMTc2IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdGltZS5jCgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9o dm0vdmlyaWRpYW4vTWFrZWZpbGUKaW5kZXggZmNhOGUxNmUyMC4uM2VjZGZmZTJmNiAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94 ODYvaHZtL3ZpcmlkaWFuL01ha2VmaWxlCkBAIC0xLDIgKzEsMyBAQAogb2JqLXkgKz0gc3luaWMu bworb2JqLXkgKz0gdGltZS5vCiBvYmoteSArPSB2aXJpZGlhbi5vCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4v dGltZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg4ZmNkNzY0OTUK LS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYwpAQCAt MCwwICsxLDI0NSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogdGltZS5jCisgKgorICogQW4g aW1wbGVtZW50YXRpb24gb2Ygc29tZSB0aW1lIHJlbGF0ZWQgVmlyaWRpYW4gZW5saWdodGVubWVu dHMuCisgKiBTZWUgTWljcm9zb2Z0J3MgSHlwZXJ2aXNvciBUb3AgTGV2ZWwgRnVuY3Rpb25hbCBT cGVjaWZpY2F0aW9uLgorICogZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKworI2luY2x1ZGUg PHhlbi9kb21haW5fcGFnZS5oPgorI2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KKyNpbmNsdWRl IDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4vdmVyc2lvbi5oPgorCisjaW5jbHVkZSA8YXNt L2FwaWMuaD4KKyNpbmNsdWRlIDxhc20vaHZtL3N1cHBvcnQuaD4KKwordHlwZWRlZiBzdHJ1Y3Qg X0hWX1JFRkVSRU5DRV9UU0NfUEFHRQoreworICAgIHVpbnQzMl90IFRzY1NlcXVlbmNlOworICAg IHVpbnQzMl90IFJlc2VydmVkMTsKKyAgICB1aW50NjRfdCBUc2NTY2FsZTsKKyAgICBpbnQ2NF90 ICBUc2NPZmZzZXQ7CisgICAgdWludDY0X3QgUmVzZXJ2ZWQyWzUwOV07Cit9IEhWX1JFRkVSRU5D RV9UU0NfUEFHRSwgKlBIVl9SRUZFUkVOQ0VfVFNDX1BBR0U7CisKK3N0YXRpYyB2b2lkIGR1bXBf cmVmZXJlbmNlX3RzYyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIGNvbnN0IHVuaW9u IHZpcmlkaWFuX3BhZ2VfbXNyICpydCA9ICZkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2Vf dHNjOworCisgICAgaWYgKCAhcnQtPmZpZWxkcy5lbmFibGVkICkKKyAgICAgICAgcmV0dXJuOwor CisgICAgcHJpbnRrKFhFTkxPR19HX0lORk8gImQlZDogVklSSURJQU4gUkVGRVJFTkNFX1RTQzog cGZuOiAlbHhcbiIsCisgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgKHVuc2lnbmVkIGxvbmcpcnQt PmZpZWxkcy5wZm4pOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1 Y3QgZG9tYWluICpkLCBib29sIGluaXRpYWxpemUpCit7CisgICAgdW5zaWduZWQgbG9uZyBnbWZu ID0gZC0+YXJjaC5odm0udmlyaWRpYW4ucmVmZXJlbmNlX3RzYy5maWVsZHMucGZuOworICAgIHN0 cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCBnbWZuLCBOVUxMLCBQ Mk1fQUxMT0MpOworICAgIEhWX1JFRkVSRU5DRV9UU0NfUEFHRSAqcDsKKworICAgIGlmICggIXBh Z2UgfHwgIWdldF9wYWdlX3R5cGUocGFnZSwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICB7Cisg ICAgICAgIGlmICggcGFnZSApCisgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKKyAgICAgICAg Z2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlIyJQUklfZ2ZuIiAoTUZOICUjIlBS SV9tZm4iKVxuIiwKKyAgICAgICAgICAgICAgICAgZ21mbiwgbWZuX3gocGFnZSA/IHBhZ2VfdG9f bWZuKHBhZ2UpIDogSU5WQUxJRF9NRk4pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg IHAgPSBfX21hcF9kb21haW5fcGFnZShwYWdlKTsKKworICAgIGlmICggaW5pdGlhbGl6ZSApCisg ICAgICAgIGNsZWFyX3BhZ2UocCk7CisKKyAgICAvKgorICAgICAqIFRoaXMgZW5saWdodGVubWVu dCBtdXN0IGJlIGRpc2FibGVkIGlzIHRoZSBob3N0IFRTQyBpcyBub3QgaW52YXJpYW50LgorICAg ICAqIEhvd2V2ZXIgaXQgaXMgYWxzbyBkaXNhYmxlZCBpZiB2dHNjIGlzIHRydWUgKHdoaWNoIG1l YW5zIHJkdHNjIGlzCisgICAgICogYmVpbmcgZW11bGF0ZWQpLiBUaGlzIGdlbmVyYWxseSBoYXBw ZW5zIHdoZW4gZ3Vlc3QgVFNDIGZyZXEgYW5kIGhvc3QKKyAgICAgKiBUU0MgZnJlcSBkb24ndCBt YXRjaC4gVGhlIFRzY1NjYWxlIHZhbHVlIGNvdWxkIGJlIGFkanVzdGVkIHRvIGNvcGUKKyAgICAg KiB3aXRoIHRoaXMsIGFsbG93aW5nIHZ0c2MgdG8gYmUgdHVybmVkIG9mZiwgYnV0IHN1cHBvcnQg Zm9yIHRoaXMgaXMKKyAgICAgKiBub3QgeWV0IHByZXNlbnQgaW4gdGhlIGh5cGVydmlzb3IuIFRo dXMgaXMgaXQgaXMgcG9zc2libGUgdGhhdAorICAgICAqIG1pZ3JhdGluZyBhIFdpbmRvd3MgVk0g YmV0d2VlbiBob3N0cyBvZiBkaWZmZXJpbmcgVFNDIGZyZXF1ZW5jaWVzCisgICAgICogbWF5IHJl c3VsdCBpbiBsYXJnZSBkaWZmZXJlbmNlcyBpbiBndWVzdCBwZXJmb3JtYW5jZS4KKyAgICAgKi8K KyAgICBpZiAoICFob3N0X3RzY19pc19zYWZlKCkgfHwgZC0+YXJjaC52dHNjICkKKyAgICB7Cisg ICAgICAgIC8qCisgICAgICAgICAqIFRoZSBzcGVjaWZpY2F0aW9uIHN0YXRlcyB0aGF0IHZhbGlk IHZhbHVlcyBvZiBUc2NTZXF1ZW5jZSByYW5nZQorICAgICAgICAgKiBmcm9tIDAgdG8gMHhGRkZG RkZGRS4gVGhlIHZhbHVlIDB4RkZGRkZGRkYgaXMgdXNlZCB0byBpbmRpY2F0ZQorICAgICAgICAg KiB0aGlzIG1lY2hhbmlzbSBpcyBubyBsb25nZXIgYSByZWxpYWJsZSBzb3VyY2Ugb2YgdGltZSBh bmQgdGhhdAorICAgICAgICAgKiB0aGUgVk0gc2hvdWxkIGZhbGwgYmFjayB0byBhIGRpZmZlcmVu dCBzb3VyY2UuCisgICAgICAgICAqCisgICAgICAgICAqIFNlcnZlciAyMDEyICg2LjIga2VybmVs KSBhbmQgMjAxMiBSMiAoNi4zIGtlcm5lbCkgYWN0dWFsbHkKKyAgICAgICAgICogdmlvbGF0ZSB0 aGUgc3BlYy4gYW5kIHJlbHkgb24gYSB2YWx1ZSBvZiAwIHRvIGluZGljYXRlIHRoYXQgdGhpcwor ICAgICAgICAgKiBlbmxpZ2h0ZW5tZW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4KKyAgICAg ICAgICovCisgICAgICAgIHAtPlRzY1NlcXVlbmNlID0gMDsKKworICAgICAgICBwcmludGsoWEVO TE9HX0dfSU5GTyAiZCVkOiBWSVJJRElBTiBSRUZFUkVOQ0VfVFNDOiBpbnZhbGlkYXRlZFxuIiwK KyAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0K KworICAgIC8qCisgICAgICogVGhlIGd1ZXN0IHdpbGwgY2FsY3VsYXRlIHJlZmVyZW5jZSB0aW1l IGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nCisgICAgICogZm9ybXVsYToKKyAgICAgKgorICAg ICAqIFJlZmVyZW5jZVRpbWUgPSAoKFJEVFNDKCkgKiBUc2NTY2FsZSkgPj4gNjQpICsgVHNjT2Zm c2V0CisgICAgICoKKyAgICAgKiBXaW5kb3dzIHVzZXMgYSAxMDBucyB0aWNrLCBzbyB3ZSBuZWVk IGEgc2NhbGUgd2hpY2ggaXMgY3B1CisgICAgICogdGlja3MgcGVyIDEwMG5zIHNoaWZ0ZWQgbGVm dCBieSA2NC4KKyAgICAgKi8KKyAgICBwLT5Uc2NTY2FsZSA9ICgoMTAwMDB1bCA8PCAzMikgLyBk LT5hcmNoLnRzY19raHopIDw8IDMyOworCisgICAgcC0+VHNjU2VxdWVuY2UrKzsKKyAgICBpZiAo IHAtPlRzY1NlcXVlbmNlID09IDB4RkZGRkZGRkYgfHwKKyAgICAgICAgIHAtPlRzY1NlcXVlbmNl ID09IDAgKSAvKiBBdm9pZCBib3RoICdpbnZhbGlkJyB2YWx1ZXMgKi8KKyAgICAgICAgcC0+VHNj U2VxdWVuY2UgPSAxOworCisgb3V0OgorICAgIHVubWFwX2RvbWFpbl9wYWdlKHApOworCisgICAg cHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHJhd190cmNfdmFs KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgdWludDY0X3QgdHNjOworICAgIHN0cnVjdCB0aW1l X3NjYWxlIHRzY190b19uczsKKworICAgIHRzYyA9IGh2bV9nZXRfZ3Vlc3RfdHNjKHB0X2dsb2Jh bF92Y3B1X3RhcmdldChkKSk7CisKKyAgICAvKiBjb252ZXJ0IHRzYyB0byBjb3VudCBvZiAxMDBu cyBwZXJpb2RzICovCisgICAgc2V0X3RpbWVfc2NhbGUoJnRzY190b19ucywgZC0+YXJjaC50c2Nf a2h6ICogMTAwMHVsKTsKKyAgICByZXR1cm4gc2NhbGVfZGVsdGEodHNjLCAmdHNjX3RvX25zKSAv IDEwMHVsOworfQorCit2b2lkIHZpcmlkaWFuX3RpbWVfcmVmX2NvdW50X2ZyZWV6ZShzdHJ1Y3Qg ZG9tYWluICpkKQoreworICAgIHN0cnVjdCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudCAqdHJjOwor CisgICAgdHJjID0gJmQtPmFyY2guaHZtLnZpcmlkaWFuLnRpbWVfcmVmX2NvdW50OworCisgICAg aWYgKCB0ZXN0X2FuZF9jbGVhcl9iaXQoX1RSQ19ydW5uaW5nLCAmdHJjLT5mbGFncykgKQorICAg ICAgICB0cmMtPnZhbCA9IHJhd190cmNfdmFsKGQpICsgdHJjLT5vZmY7Cit9CisKK3ZvaWQgdmly aWRpYW5fdGltZV9yZWZfY291bnRfdGhhdyhzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHN0cnVj dCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudCAqdHJjOworCisgICAgdHJjID0gJmQtPmFyY2guaHZt LnZpcmlkaWFuLnRpbWVfcmVmX2NvdW50OworCisgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93 biAmJgorICAgICAgICAgIXRlc3RfYW5kX3NldF9iaXQoX1RSQ19ydW5uaW5nLCAmdHJjLT5mbGFn cykgKQorICAgICAgICB0cmMtPm9mZiA9IChpbnQ2NF90KXRyYy0+dmFsIC0gcmF3X3RyY192YWwo ZCk7Cit9CisKK2ludCB2aXJpZGlhbl90aW1lX3dybXNyKHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJf dCBpZHgsIHVpbnQ2NF90IHZhbCkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWlu OworCisgICAgc3dpdGNoICggaWR4ICkKKyAgICB7CisgICAgY2FzZSBIVl9YNjRfTVNSX1JFRkVS RU5DRV9UU0M6CisgICAgICAgIGlmICggISh2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1Q Vl9yZWZlcmVuY2VfdHNjKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047 CisKKyAgICAgICAgZC0+YXJjaC5odm0udmlyaWRpYW4ucmVmZXJlbmNlX3RzYy5yYXcgPSB2YWw7 CisgICAgICAgIGR1bXBfcmVmZXJlbmNlX3RzYyhkKTsKKyAgICAgICAgaWYgKCBkLT5hcmNoLmh2 bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLmZpZWxkcy5lbmFibGVkICkKKyAgICAgICAgICAgIHVw ZGF0ZV9yZWZlcmVuY2VfdHNjKGQsIHRydWUpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1 bHQ6CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLAorICAgICAgICAgICAgICAgICAiJXM6 IHVuaW1wbGVtZW50ZWQgTVNSICUjeCAoJTAxNiJQUkl4NjQiKVxuIiwKKyAgICAgICAgICAgICAg ICAgX19mdW5jX18sIGlkeCwgdmFsKTsKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9O OworICAgIH0KKworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK2ludCB2aXJpZGlhbl90 aW1lX3JkbXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2 YWwpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKworICAgIHN3aXRjaCAo IGlkeCApCisgICAgeworICAgIGNhc2UgSFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZOgorICAgICAg ICBpZiAoIHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX25vX2ZyZXEgKQorICAgICAg ICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgICAgICp2YWwgPSAodWludDY0 X3QpZC0+YXJjaC50c2Nfa2h6ICogMTAwMHVsbDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl IEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1k6CisgICAgICAgIGlmICggdmlyaWRpYW5fZmVhdHVy ZV9tYXNrKGQpICYgSFZNUFZfbm9fZnJlcSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9F WENFUFRJT047CisKKyAgICAgICAgKnZhbCA9IDEwMDAwMDAwMDB1bGwgLyBBUElDX0JVU19DWUNM RV9OUzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhWX1g2NF9NU1JfUkVGRVJFTkNFX1RT QzoKKyAgICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3JlZmVy ZW5jZV90c2MpICkKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAg ICAgICAqdmFsID0gZC0+YXJjaC5odm0udmlyaWRpYW4ucmVmZXJlbmNlX3RzYy5yYXc7CisgICAg ICAgIGJyZWFrOworCisgICAgY2FzZSBIVl9YNjRfTVNSX1RJTUVfUkVGX0NPVU5UOgorICAgIHsK KyAgICAgICAgc3RydWN0IHZpcmlkaWFuX3RpbWVfcmVmX2NvdW50ICp0cmMgPQorICAgICAgICAg ICAgJmQtPmFyY2guaHZtLnZpcmlkaWFuLnRpbWVfcmVmX2NvdW50OworCisgICAgICAgIGlmICgg ISh2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl90aW1lX3JlZl9jb3VudCkgKQorICAg ICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgICAgIGlmICggIXRlc3Rf YW5kX3NldF9iaXQoX1RSQ19hY2Nlc3NlZCwgJnRyYy0+ZmxhZ3MpICkKKyAgICAgICAgICAgIHBy aW50ayhYRU5MT0dfR19JTkZPICJkJWQ6IFZJUklESUFOIE1TUl9USU1FX1JFRl9DT1VOVDogYWNj ZXNzZWRcbiIsCisgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkKTsKKworICAgICAgICAq dmFsID0gcmF3X3RyY192YWwoZCkgKyB0cmMtPm9mZjsKKyAgICAgICAgYnJlYWs7CisgICAgfQor CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sCisgICAgICAgICAg ICAgICAgICIlczogdW5pbXBsZW1lbnRlZCBNU1IgJSN4XG4iLAorICAgICAgICAgICAgICAgICBf X2Z1bmNfXywgaWR4KTsKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworICAgIH0K KworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK3ZvaWQgdmlyaWRpYW5fdGltZV9zYXZl X2RvbWFpbl9jdHh0KAorICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBodm1fdmly aWRpYW5fZG9tYWluX2NvbnRleHQgKmN0eHQpCit7CisgICAgY3R4dC0+dGltZV9yZWZfY291bnQg PSBkLT5hcmNoLmh2bS52aXJpZGlhbi50aW1lX3JlZl9jb3VudC52YWw7CisgICAgY3R4dC0+cmVm ZXJlbmNlX3RzYyA9IGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5jZV90c2MucmF3OworfQor Cit2b2lkIHZpcmlkaWFuX3RpbWVfbG9hZF9kb21haW5fY3R4dCgKKyAgICBzdHJ1Y3QgZG9tYWlu ICpkLCBjb25zdCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX2RvbWFpbl9jb250ZXh0ICpjdHh0KQorewor ICAgIGQtPmFyY2guaHZtLnZpcmlkaWFuLnRpbWVfcmVmX2NvdW50LnZhbCA9IGN0eHQtPnRpbWVf cmVmX2NvdW50OworICAgIGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5jZV90c2MucmF3ID0g Y3R4dC0+cmVmZXJlbmNlX3RzYzsKKworICAgIGlmICggZC0+YXJjaC5odm0udmlyaWRpYW4ucmVm ZXJlbmNlX3RzYy5maWVsZHMuZW5hYmxlZCApCisgICAgICAgIHVwZGF0ZV9yZWZlcmVuY2VfdHNj KGQsIGZhbHNlKTsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAq IGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6 IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zp cmlkaWFuL3ZpcmlkaWFuLmMKaW5kZXggY2YyNzg5ZThhZS4uNzM2NjFiMGFlZiAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4uYwpAQCAtMjQzLDE3ICsyNDMsNiBAQCBzdGF0aWMgdm9p ZCBkdW1wX2h5cGVyY2FsbChjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICBoZy0+ ZmllbGRzLmVuYWJsZWQsICh1bnNpZ25lZCBsb25nKWhnLT5maWVsZHMucGZuKTsKIH0KIAotc3Rh dGljIHZvaWQgZHVtcF9yZWZlcmVuY2VfdHNjKGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCi17Ci0g ICAgY29uc3QgdW5pb24gdmlyaWRpYW5fcGFnZV9tc3IgKnJ0OwotCi0gICAgcnQgPSAmZC0+YXJj aC5odm0udmlyaWRpYW4ucmVmZXJlbmNlX3RzYzsKLQotICAgIHByaW50ayhYRU5MT0dfR19JTkZP ICJkJWQ6IFZJUklESUFOIFJFRkVSRU5DRV9UU0M6IGVuYWJsZWQ6ICV4IHBmbjogJWx4XG4iLAot ICAgICAgICAgICBkLT5kb21haW5faWQsCi0gICAgICAgICAgIHJ0LT5maWVsZHMuZW5hYmxlZCwg KHVuc2lnbmVkIGxvbmcpcnQtPmZpZWxkcy5wZm4pOwotfQotCiBzdGF0aWMgdm9pZCBlbmFibGVf aHlwZXJjYWxsX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGdt Zm4gPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5oeXBlcmNhbGxfZ3BhLmZpZWxkcy5wZm47CkBAIC0y ODgsODAgKzI3Nyw2IEBAIHN0YXRpYyB2b2lkIGVuYWJsZV9oeXBlcmNhbGxfcGFnZShzdHJ1Y3Qg ZG9tYWluICpkKQogICAgIHB1dF9wYWdlX2FuZF90eXBlKHBhZ2UpOwogfQogCi1zdGF0aWMgdm9p ZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLCBib29sX3QgaW5pdGlhbGl6 ZSkKLXsKLSAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZl cmVuY2VfdHNjLmZpZWxkcy5wZm47Ci0gICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdldF9w YWdlX2Zyb21fZ2ZuKGQsIGdtZm4sIE5VTEwsIFAyTV9BTExPQyk7Ci0gICAgSFZfUkVGRVJFTkNF X1RTQ19QQUdFICpwOwotCi0gICAgaWYgKCAhcGFnZSB8fCAhZ2V0X3BhZ2VfdHlwZShwYWdlLCBQ R1Rfd3JpdGFibGVfcGFnZSkgKQotICAgIHsKLSAgICAgICAgaWYgKCBwYWdlICkKLSAgICAgICAg ICAgIHB1dF9wYWdlKHBhZ2UpOwotICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJh ZCBHTUZOICUjIlBSSV9nZm4iIChNRk4gJSMiUFJJX21mbiIpXG4iLAotICAgICAgICAgICAgICAg ICBnbWZuLCBtZm5feChwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTikpOwot ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcCA9IF9fbWFwX2RvbWFpbl9wYWdlKHBhZ2Up OwotCi0gICAgaWYgKCBpbml0aWFsaXplICkKLSAgICAgICAgY2xlYXJfcGFnZShwKTsKLQotICAg IC8qCi0gICAgICogVGhpcyBlbmxpZ2h0ZW5tZW50IG11c3QgYmUgZGlzYWJsZWQgaXMgdGhlIGhv c3QgVFNDIGlzIG5vdAotICAgICAqIGludmFyaWFudC4gSG93ZXZlciBpdCBpcyBhbHNvIGRpc2Fi bGVkIGlmIHZ0c2MgaXMgdHJ1ZSAod2hpY2gKLSAgICAgKiBtZWFucyByZHRzYyBpcyBiZWluZyBl bXVsYXRlZCkuIFRoaXMgZ2VuZXJhbGx5IGhhcHBlbnMgd2hlbiBndWVzdAotICAgICAqIFRTQyBm cmVxIGFuZCBob3N0IFRTQyBmcmVxIGRvbid0IG1hdGNoLiBUaGUgVHNjU2NhbGUgdmFsdWUgY291 bGQgYmUKLSAgICAgKiBhZGp1c3RlZCB0byBjb3BlIHdpdGggdGhpcywgYWxsb3dpbmcgdnRzYyB0 byBiZSB0dXJuZWQgb2ZmLCBidXQKLSAgICAgKiBzdXBwb3J0IGZvciB0aGlzIGlzIG5vdCB5ZXQg cHJlc2VudCBpbiB0aGUgaHlwZXJ2aXNvci4gVGh1cyBpcyBpdAotICAgICAqIGlzIHBvc3NpYmxl IHRoYXQgbWlncmF0aW5nIGEgV2luZG93cyBWTSBiZXR3ZWVuIGhvc3RzIG9mIGRpZmZlcmluZwot ICAgICAqIFRTQyBmcmVxdWVuY2llcyBtYXkgcmVzdWx0IGluIGxhcmdlIGRpZmZlcmVuY2VzIGlu IGd1ZXN0Ci0gICAgICogcGVyZm9ybWFuY2UuCi0gICAgICovCi0gICAgaWYgKCAhaG9zdF90c2Nf aXNfc2FmZSgpIHx8IGQtPmFyY2gudnRzYyApCi0gICAgewotICAgICAgICAvKgotICAgICAgICAg KiBUaGUgc3BlY2lmaWNhdGlvbiBzdGF0ZXMgdGhhdCB2YWxpZCB2YWx1ZXMgb2YgVHNjU2VxdWVu Y2UgcmFuZ2UKLSAgICAgICAgICogZnJvbSAwIHRvIDB4RkZGRkZGRkUuIFRoZSB2YWx1ZSAweEZG RkZGRkZGIGlzIHVzZWQgdG8gaW5kaWNhdGUKLSAgICAgICAgICogdGhpcyBtZWNoYW5pc20gaXMg bm8gbG9uZ2VyIGEgcmVsaWFibGUgc291cmNlIG9mIHRpbWUgYW5kIHRoYXQKLSAgICAgICAgICog dGhlIFZNIHNob3VsZCBmYWxsIGJhY2sgdG8gYSBkaWZmZXJlbnQgc291cmNlLgotICAgICAgICAg KgotICAgICAgICAgKiBTZXJ2ZXIgMjAxMiAoNi4yIGtlcm5lbCkgYW5kIDIwMTIgUjIgKDYuMyBr ZXJuZWwpIGFjdHVhbGx5Ci0gICAgICAgICAqIHZpb2xhdGUgdGhlIHNwZWNpZmljYXRpb24gYW5k IHJlbHkgb24gYSB2YWx1ZSBvZiAwIHRvIGluZGljYXRlCi0gICAgICAgICAqIHRoYXQgdGhpcyBl bmxpZ2h0ZW5tZW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4gVGhlc2UgdHdvCi0gICAgICAg ICAqIGtlcm5lbCB2ZXJzaW9ucyBhcmUgY3VycmVudGx5IHRoZSBvbmx5IG9uZXMgdG8gbWFrZSB1 c2Ugb2YgdGhpcwotICAgICAgICAgKiBlbmxpZ2h0ZW5tZW50LCBzbyBqdXN0IHVzZSAwIGhlcmUu Ci0gICAgICAgICAqLwotICAgICAgICBwLT5Uc2NTZXF1ZW5jZSA9IDA7Ci0KLSAgICAgICAgcHJp bnRrKFhFTkxPR19HX0lORk8gImQlZDogVklSSURJQU4gUkVGRVJFTkNFX1RTQzogaW52YWxpZGF0 ZWRcbiIsCi0gICAgICAgICAgICAgICBkLT5kb21haW5faWQpOwotICAgICAgICBnb3RvIG91dDsK LSAgICB9Ci0KLSAgICAvKgotICAgICAqIFRoZSBndWVzdCB3aWxsIGNhbGN1bGF0ZSByZWZlcmVu Y2UgdGltZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZwotICAgICAqIGZvcm11bGE6Ci0gICAg ICoKLSAgICAgKiBSZWZlcmVuY2VUaW1lID0gKChSRFRTQygpICogVHNjU2NhbGUpID4+IDY0KSAr IFRzY09mZnNldAotICAgICAqCi0gICAgICogV2luZG93cyB1c2VzIGEgMTAwbnMgdGljaywgc28g d2UgbmVlZCBhIHNjYWxlIHdoaWNoIGlzIGNwdQotICAgICAqIHRpY2tzIHBlciAxMDBucyBzaGlm dGVkIGxlZnQgYnkgNjQuCi0gICAgICovCi0gICAgcC0+VHNjU2NhbGUgPSAoKDEwMDAwdWwgPDwg MzIpIC8gZC0+YXJjaC50c2Nfa2h6KSA8PCAzMjsKLQotICAgIHAtPlRzY1NlcXVlbmNlKys7Ci0g ICAgaWYgKCBwLT5Uc2NTZXF1ZW5jZSA9PSAweEZGRkZGRkZGIHx8Ci0gICAgICAgICBwLT5Uc2NT ZXF1ZW5jZSA9PSAwICkgLyogQXZvaWQgYm90aCAnaW52YWxpZCcgdmFsdWVzICovCi0gICAgICAg IHAtPlRzY1NlcXVlbmNlID0gMTsKLQotIG91dDoKLSAgICB1bm1hcF9kb21haW5fcGFnZShwKTsK LQotICAgIHB1dF9wYWdlX2FuZF90eXBlKHBhZ2UpOwotfQotCiBpbnQgZ3Vlc3Rfd3Jtc3Jfdmly aWRpYW4oc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQogewogICAg IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CkBAIC0zOTIsMTQgKzMwNyw3IEBAIGludCBn dWVzdF93cm1zcl92aXJpZGlhbihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRf dCB2YWwpCiAgICAgICAgIHJldHVybiB2aXJpZGlhbl9zeW5pY193cm1zcih2LCBpZHgsIHZhbCk7 CiAKICAgICBjYXNlIEhWX1g2NF9NU1JfUkVGRVJFTkNFX1RTQzoKLSAgICAgICAgaWYgKCAhKHZp cmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3JlZmVyZW5jZV90c2MpICkKLSAgICAgICAg ICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKLQotICAgICAgICBkLT5hcmNoLmh2bS52aXJp ZGlhbi5yZWZlcmVuY2VfdHNjLnJhdyA9IHZhbDsKLSAgICAgICAgZHVtcF9yZWZlcmVuY2VfdHNj KGQpOwotICAgICAgICBpZiAoIGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5jZV90c2MuZmll bGRzLmVuYWJsZWQgKQotICAgICAgICAgICAgdXBkYXRlX3JlZmVyZW5jZV90c2MoZCwgMSk7Ci0g ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdmlyaWRpYW5fdGltZV93cm1zcih2LCBpZHgs IHZhbCk7CiAKICAgICBjYXNlIEhWX1g2NF9NU1JfQ1JBU0hfUDA6CiAgICAgY2FzZSBIVl9YNjRf TVNSX0NSQVNIX1AxOgpAQCAtNDQ1LDM5ICszNTMsNiBAQCBpbnQgZ3Vlc3Rfd3Jtc3JfdmlyaWRp YW4oc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQogICAgIHJldHVy biBYODZFTVVMX09LQVk7CiB9CiAKLXN0YXRpYyBpbnQ2NF90IHJhd190cmNfdmFsKHN0cnVjdCBk b21haW4gKmQpCi17Ci0gICAgdWludDY0X3QgdHNjOwotICAgIHN0cnVjdCB0aW1lX3NjYWxlIHRz Y190b19uczsKLQotICAgIHRzYyA9IGh2bV9nZXRfZ3Vlc3RfdHNjKHB0X2dsb2JhbF92Y3B1X3Rh cmdldChkKSk7Ci0KLSAgICAvKiBjb252ZXJ0IHRzYyB0byBjb3VudCBvZiAxMDBucyBwZXJpb2Rz ICovCi0gICAgc2V0X3RpbWVfc2NhbGUoJnRzY190b19ucywgZC0+YXJjaC50c2Nfa2h6ICogMTAw MHVsKTsKLSAgICByZXR1cm4gc2NhbGVfZGVsdGEodHNjLCAmdHNjX3RvX25zKSAvIDEwMHVsOwot fQotCi12b2lkIHZpcmlkaWFuX3RpbWVfcmVmX2NvdW50X2ZyZWV6ZShzdHJ1Y3QgZG9tYWluICpk KQotewotICAgIHN0cnVjdCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudCAqdHJjOwotCi0gICAgdHJj ID0gJmQtPmFyY2guaHZtLnZpcmlkaWFuLnRpbWVfcmVmX2NvdW50OwotCi0gICAgaWYgKCB0ZXN0 X2FuZF9jbGVhcl9iaXQoX1RSQ19ydW5uaW5nLCAmdHJjLT5mbGFncykgKQotICAgICAgICB0cmMt PnZhbCA9IHJhd190cmNfdmFsKGQpICsgdHJjLT5vZmY7Ci19Ci0KLXZvaWQgdmlyaWRpYW5fdGlt ZV9yZWZfY291bnRfdGhhdyhzdHJ1Y3QgZG9tYWluICpkKQotewotICAgIHN0cnVjdCB2aXJpZGlh bl90aW1lX3JlZl9jb3VudCAqdHJjOwotCi0gICAgdHJjID0gJmQtPmFyY2guaHZtLnZpcmlkaWFu LnRpbWVfcmVmX2NvdW50OwotCi0gICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJgotICAg ICAgICAgIXRlc3RfYW5kX3NldF9iaXQoX1RSQ19ydW5uaW5nLCAmdHJjLT5mbGFncykgKQotICAg ICAgICB0cmMtPm9mZiA9IChpbnQ2NF90KXRyYy0+dmFsIC0gcmF3X3RyY192YWwoZCk7Ci19Ci0K IGludCBndWVzdF9yZG1zcl92aXJpZGlhbihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3Qg aWR4LCB1aW50NjRfdCAqdmFsKQogewogICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47 CkBAIC00OTgsNDkgKzM3MywxNyBAQCBpbnQgZ3Vlc3RfcmRtc3JfdmlyaWRpYW4oY29uc3Qgc3Ry dWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgKnZhbCkKICAgICAgICAgKnZhbCA9 IHYtPnZjcHVfaWQ7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIVl9YNjRfTVNSX1RTQ19G UkVRVUVOQ1k6Ci0gICAgICAgIGlmICggdmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZf bm9fZnJlcSApCi0gICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047Ci0KLSAgICAg ICAgKnZhbCA9ICh1aW50NjRfdClkLT5hcmNoLnRzY19raHogKiAxMDAwdWxsOwotICAgICAgICBi cmVhazsKLQotICAgIGNhc2UgSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWToKLSAgICAgICAgaWYg KCB2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9ub19mcmVxICkKLSAgICAgICAgICAg IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKLQotICAgICAgICAqdmFsID0gMTAwMDAwMDAwMHVs bCAvIEFQSUNfQlVTX0NZQ0xFX05TOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgSFZfWDY0 X01TUl9FT0k6CiAgICAgY2FzZSBIVl9YNjRfTVNSX0lDUjoKICAgICBjYXNlIEhWX1g2NF9NU1Jf VFBSOgogICAgIGNhc2UgSFZfWDY0X01TUl9WUF9BU1NJU1RfUEFHRToKICAgICAgICAgcmV0dXJu IHZpcmlkaWFuX3N5bmljX3JkbXNyKHYsIGlkeCwgdmFsKTsKIAorICAgIGNhc2UgSFZfWDY0X01T Ul9UU0NfRlJFUVVFTkNZOgorICAgIGNhc2UgSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWToKICAg ICBjYXNlIEhWX1g2NF9NU1JfUkVGRVJFTkNFX1RTQzoKLSAgICAgICAgaWYgKCAhKHZpcmlkaWFu X2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3JlZmVyZW5jZV90c2MpICkKLSAgICAgICAgICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKLQotICAgICAgICAqdmFsID0gZC0+YXJjaC5odm0udmly aWRpYW4ucmVmZXJlbmNlX3RzYy5yYXc7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBIVl9Y NjRfTVNSX1RJTUVfUkVGX0NPVU5UOgotICAgIHsKLSAgICAgICAgc3RydWN0IHZpcmlkaWFuX3Rp bWVfcmVmX2NvdW50ICp0cmM7Ci0KLSAgICAgICAgdHJjID0gJmQtPmFyY2guaHZtLnZpcmlkaWFu LnRpbWVfcmVmX2NvdW50OwotCi0gICAgICAgIGlmICggISh2aXJpZGlhbl9mZWF0dXJlX21hc2so ZCkgJiBIVk1QVl90aW1lX3JlZl9jb3VudCkgKQotICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxf RVhDRVBUSU9OOwotCi0gICAgICAgIGlmICggIXRlc3RfYW5kX3NldF9iaXQoX1RSQ19hY2Nlc3Nl ZCwgJnRyYy0+ZmxhZ3MpICkKLSAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19JTkZPICJkJWQ6 IFZJUklESUFOIE1TUl9USU1FX1JFRl9DT1VOVDogYWNjZXNzZWRcbiIsCi0gICAgICAgICAgICAg ICAgICAgZC0+ZG9tYWluX2lkKTsKLQotICAgICAgICAqdmFsID0gcmF3X3RyY192YWwoZCkgKyB0 cmMtPm9mZjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgICAgICByZXR1cm4gdmlyaWRpYW5f dGltZV9yZG1zcih2LCBpZHgsIHZhbCk7CiAKICAgICBjYXNlIEhWX1g2NF9NU1JfQ1JBU0hfUDA6 CiAgICAgY2FzZSBIVl9YNjRfTVNSX0NSQVNIX1AxOgpAQCAtNzQ4LDE1ICs1OTEsMTUgQEAgc3Rh dGljIGludCB2aXJpZGlhbl9zYXZlX2RvbWFpbl9jdHh0KHN0cnVjdCB2Y3B1ICp2LAogewogICAg IGNvbnN0IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CiAgICAgc3RydWN0IGh2bV92aXJp ZGlhbl9kb21haW5fY29udGV4dCBjdHh0ID0gewotICAgICAgICAudGltZV9yZWZfY291bnQgPSBk LT5hcmNoLmh2bS52aXJpZGlhbi50aW1lX3JlZl9jb3VudC52YWwsCiAgICAgICAgIC5oeXBlcmNh bGxfZ3BhICA9IGQtPmFyY2guaHZtLnZpcmlkaWFuLmh5cGVyY2FsbF9ncGEucmF3LAogICAgICAg ICAuZ3Vlc3Rfb3NfaWQgICAgPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5ndWVzdF9vc19pZC5yYXcs Ci0gICAgICAgIC5yZWZlcmVuY2VfdHNjICA9IGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5j ZV90c2MucmF3LAogICAgIH07CiAKICAgICBpZiAoICFpc192aXJpZGlhbl9kb21haW4oZCkgKQog ICAgICAgICByZXR1cm4gMDsKIAorICAgIHZpcmlkaWFuX3RpbWVfc2F2ZV9kb21haW5fY3R4dChk LCAmY3R4dCk7CisKICAgICByZXR1cm4gKGh2bV9zYXZlX2VudHJ5KFZJUklESUFOX0RPTUFJTiwg MCwgaCwgJmN0eHQpICE9IDApOwogfQogCkBAIC03NjgsMTMgKzYxMSwxMCBAQCBzdGF0aWMgaW50 IHZpcmlkaWFuX2xvYWRfZG9tYWluX2N0eHQoc3RydWN0IGRvbWFpbiAqZCwKICAgICBpZiAoIGh2 bV9sb2FkX2VudHJ5X3plcm9leHRlbmQoVklSSURJQU5fRE9NQUlOLCBoLCAmY3R4dCkgIT0gMCAp CiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgZC0+YXJjaC5odm0udmlyaWRpYW4udGlt ZV9yZWZfY291bnQudmFsID0gY3R4dC50aW1lX3JlZl9jb3VudDsKICAgICBkLT5hcmNoLmh2bS52 aXJpZGlhbi5oeXBlcmNhbGxfZ3BhLnJhdyAgPSBjdHh0Lmh5cGVyY2FsbF9ncGE7CiAgICAgZC0+ YXJjaC5odm0udmlyaWRpYW4uZ3Vlc3Rfb3NfaWQucmF3ICAgID0gY3R4dC5ndWVzdF9vc19pZDsK LSAgICBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLnJhdyAgPSBjdHh0LnJlZmVy ZW5jZV90c2M7CiAKLSAgICBpZiAoIGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5jZV90c2Mu ZmllbGRzLmVuYWJsZWQgKQotICAgICAgICB1cGRhdGVfcmVmZXJlbmNlX3RzYyhkLCAwKTsKKyAg ICB2aXJpZGlhbl90aW1lX2xvYWRfZG9tYWluX2N0eHQoZCwgJmN0eHQpOwogCiAgICAgcmV0dXJu IDA7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaAppbmRleCA3ZTIxY2E1NTM3Li45YTI2 ZjZiZWQwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKQEAgLTEyNSwxNSArMTI1LDYg QEAgc3RydWN0IHZpcmlkaWFuX3RpbWVfcmVmX2NvdW50CiAgICAgaW50NjRfdCBvZmY7CiB9Owog Ci10eXBlZGVmIHN0cnVjdCBfSFZfUkVGRVJFTkNFX1RTQ19QQUdFCi17Ci0gICAgdWludDMyX3Qg VHNjU2VxdWVuY2U7Ci0gICAgdWludDMyX3QgUmVzZXJ2ZWQxOwotICAgIHVpbnQ2NF90IFRzY1Nj YWxlOwotICAgIGludDY0X3QgIFRzY09mZnNldDsKLSAgICB1aW50NjRfdCBSZXNlcnZlZDJbNTA5 XTsKLX0gSFZfUkVGRVJFTkNFX1RTQ19QQUdFLCAqUEhWX1JFRkVSRU5DRV9UU0NfUEFHRTsKLQog c3RydWN0IHZpcmlkaWFuX2RvbWFpbgogewogICAgIHVuaW9uIHZpcmlkaWFuX2d1ZXN0X29zX2lk X21zciBndWVzdF9vc19pZDsKQEAgLTE1NCw2ICsxNDUsMTQgQEAgdmlyaWRpYW5faHlwZXJjYWxs KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKTsKIHZvaWQgdmlyaWRpYW5fdGltZV9yZWZfY291 bnRfZnJlZXplKHN0cnVjdCBkb21haW4gKmQpOwogdm9pZCB2aXJpZGlhbl90aW1lX3JlZl9jb3Vu dF90aGF3KHN0cnVjdCBkb21haW4gKmQpOwogCitpbnQgdmlyaWRpYW5fdGltZV93cm1zcihzdHJ1 Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpOworaW50IHZpcmlkaWFuX3Rp bWVfcmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgKnZh bCk7CisKK3ZvaWQgdmlyaWRpYW5fdGltZV9zYXZlX2RvbWFpbl9jdHh0KAorICAgIGNvbnN0IHN0 cnVjdCBkb21haW4gKmQsIHN0cnVjdCBodm1fdmlyaWRpYW5fZG9tYWluX2NvbnRleHQgKmN0eHQp Owordm9pZCB2aXJpZGlhbl90aW1lX2xvYWRfZG9tYWluX2N0eHQoCisgICAgc3RydWN0IGRvbWFp biAqZCwgY29uc3Qgc3RydWN0IGh2bV92aXJpZGlhbl9kb21haW5fY29udGV4dCAqY3R4dCk7CisK IHZvaWQgdmlyaWRpYW5fdmNwdV9kZWluaXQoc3RydWN0IHZjcHUgKnYpOwogdm9pZCB2aXJpZGlh bl9kb21haW5fZGVpbml0KHN0cnVjdCBkb21haW4gKmQpOwogCi0tIAoyLjExLjAKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs