From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 6/8] viridian: separate time related enlightenment implementations... Date: Mon, 29 Oct 2018 18:02:09 +0000 Message-ID: <20181029180211.2155-9-paul.durrant@citrix.com> References: <20181029180211.2155-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 1gHBrq-0000RL-RK for xen-devel@lists.xenproject.org; Mon, 29 Oct 2018 18:02:22 +0000 In-Reply-To: <20181029180211.2155-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 Y29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYv aHZtL3ZpcmlkaWFuL01ha2VmaWxlICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L2h2bS92aXJpZGlh bi90aW1lLmMgICAgIHwgMjQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMgfCAxNzQgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCAgIHwgIDE3ICsr LQogNCBmaWxlcyBjaGFuZ2VkLCAyNjAgaW5zZXJ0aW9ucygrKSwgMTc2IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdGltZS5jCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4 Ni9odm0vdmlyaWRpYW4vTWFrZWZpbGUKaW5kZXggZmNhOGUxNmUyMC4uM2VjZGZmZTJmNiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9NYWtlZmlsZQorKysgYi94ZW4vYXJj aC94ODYvaHZtL3ZpcmlkaWFuL01ha2VmaWxlCkBAIC0xLDIgKzEsMyBAQAogb2JqLXkgKz0gc3lu aWMubworb2JqLXkgKz0gdGltZS5vCiBvYmoteSArPSB2aXJpZGlhbi5vCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRp YW4vdGltZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFhMzJlOTNm OWYKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYwpA QCAtMCwwICsxLDI0NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogdGltZS5jCisgKgorICog QW4gaW1wbGVtZW50YXRpb24gb2Ygc29tZSB0aW1lIHJlbGF0ZWQgVmlyaWRpYW4gZW5saWdodGVu bWVudHMuCisgKiBTZWUgTWljcm9zb2Z0J3MgSHlwZXJ2aXNvciBUb3AgTGV2ZWwgRnVuY3Rpb25h bCBTcGVjaWZpY2F0aW9uLgorICogZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KKworI2luY2x1 ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi92ZXJzaW9uLmg+CisjaW5jbHVkZSA8eGVu L2h5cGVyY2FsbC5oPgorI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgorI2luY2x1ZGUgPGFz bS9hcGljLmg+CisjaW5jbHVkZSA8YXNtL2h2bS9zdXBwb3J0Lmg+CisKK3R5cGVkZWYgc3RydWN0 IF9IVl9SRUZFUkVOQ0VfVFNDX1BBR0UKK3sKKyAgICB1aW50MzJfdCBUc2NTZXF1ZW5jZTsKKyAg ICB1aW50MzJfdCBSZXNlcnZlZDE7CisgICAgdWludDY0X3QgVHNjU2NhbGU7CisgICAgaW50NjRf dCAgVHNjT2Zmc2V0OworICAgIHVpbnQ2NF90IFJlc2VydmVkMls1MDldOworfSBIVl9SRUZFUkVO Q0VfVFNDX1BBR0UsICpQSFZfUkVGRVJFTkNFX1RTQ19QQUdFOworCitzdGF0aWMgdm9pZCBkdW1w X3JlZmVyZW5jZV90c2MoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBjb25zdCB1bmlv biB2aXJpZGlhbl9wYWdlX21zciAqcnQgPSAmZC0+YXJjaC5odm0udmlyaWRpYW4ucmVmZXJlbmNl X3RzYzsKKworICAgIGlmICggIXJ0LT5maWVsZHMuZW5hYmxlZCApCisgICAgICAgIHJldHVybjsK KworICAgIHByaW50ayhYRU5MT0dfR19JTkZPICJkJWQ6IFZJUklESUFOIFJFRkVSRU5DRV9UU0M6 IHBmbjogJWx4XG4iLAorICAgICAgICAgICBkLT5kb21haW5faWQsICh1bnNpZ25lZCBsb25nKXJ0 LT5maWVsZHMucGZuKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlX3JlZmVyZW5jZV90c2Moc3Ry dWN0IGRvbWFpbiAqZCwgYm9vbCBpbml0aWFsaXplKQoreworICAgIHVuc2lnbmVkIGxvbmcgZ21m biA9IGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5jZV90c2MuZmllbGRzLnBmbjsKKyAgICBz dHJ1Y3QgcGFnZV9pbmZvICpwYWdlID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgZ21mbiwgTlVMTCwg UDJNX0FMTE9DKTsKKyAgICBIVl9SRUZFUkVOQ0VfVFNDX1BBR0UgKnA7CisKKyAgICBpZiAoICFw YWdlIHx8ICFnZXRfcGFnZV90eXBlKHBhZ2UsIFBHVF93cml0YWJsZV9wYWdlKSApCisgICAgewor ICAgICAgICBpZiAoIHBhZ2UgKQorICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7CisgICAgICAg IGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQmFkIEdNRk4gJSMiUFJJX2dmbiIgKE1GTiAlIyJQ UklfbWZuIilcbiIsCisgICAgICAgICAgICAgICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3Rv X21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg ICBwID0gX19tYXBfZG9tYWluX3BhZ2UocGFnZSk7CisKKyAgICBpZiAoIGluaXRpYWxpemUgKQor ICAgICAgICBjbGVhcl9wYWdlKHApOworCisgICAgLyoKKyAgICAgKiBUaGlzIGVubGlnaHRlbm1l bnQgbXVzdCBiZSBkaXNhYmxlZCBpcyB0aGUgaG9zdCBUU0MgaXMgbm90IGludmFyaWFudC4KKyAg ICAgKiBIb3dldmVyIGl0IGlzIGFsc28gZGlzYWJsZWQgaWYgdnRzYyBpcyB0cnVlICh3aGljaCBt ZWFucyByZHRzYyBpcworICAgICAqIGJlaW5nIGVtdWxhdGVkKS4gVGhpcyBnZW5lcmFsbHkgaGFw cGVucyB3aGVuIGd1ZXN0IFRTQyBmcmVxIGFuZCBob3N0CisgICAgICogVFNDIGZyZXEgZG9uJ3Qg bWF0Y2guIFRoZSBUc2NTY2FsZSB2YWx1ZSBjb3VsZCBiZSBhZGp1c3RlZCB0byBjb3BlCisgICAg ICogd2l0aCB0aGlzLCBhbGxvd2luZyB2dHNjIHRvIGJlIHR1cm5lZCBvZmYsIGJ1dCBzdXBwb3J0 IGZvciB0aGlzIGlzCisgICAgICogbm90IHlldCBwcmVzZW50IGluIHRoZSBoeXBlcnZpc29yLiBU aHVzIGlzIGl0IGlzIHBvc3NpYmxlIHRoYXQKKyAgICAgKiBtaWdyYXRpbmcgYSBXaW5kb3dzIFZN IGJldHdlZW4gaG9zdHMgb2YgZGlmZmVyaW5nIFRTQyBmcmVxdWVuY2llcworICAgICAqIG1heSBy ZXN1bHQgaW4gbGFyZ2UgZGlmZmVyZW5jZXMgaW4gZ3Vlc3QgcGVyZm9ybWFuY2UuCisgICAgICov CisgICAgaWYgKCAhaG9zdF90c2NfaXNfc2FmZSgpIHx8IGQtPmFyY2gudnRzYyApCisgICAgewor ICAgICAgICAvKgorICAgICAgICAgKiBUaGUgc3BlY2lmaWNhdGlvbiBzdGF0ZXMgdGhhdCB2YWxp ZCB2YWx1ZXMgb2YgVHNjU2VxdWVuY2UgcmFuZ2UKKyAgICAgICAgICogZnJvbSAwIHRvIDB4RkZG RkZGRkUuIFRoZSB2YWx1ZSAweEZGRkZGRkZGIGlzIHVzZWQgdG8gaW5kaWNhdGUKKyAgICAgICAg ICogdGhpcyBtZWNoYW5pc20gaXMgbm8gbG9uZ2VyIGEgcmVsaWFibGUgc291cmNlIG9mIHRpbWUg YW5kIHRoYXQKKyAgICAgICAgICogdGhlIFZNIHNob3VsZCBmYWxsIGJhY2sgdG8gYSBkaWZmZXJl bnQgc291cmNlLgorICAgICAgICAgKgorICAgICAgICAgKiBTZXJ2ZXIgMjAxMiAoNi4yIGtlcm5l bCkgYW5kIDIwMTIgUjIgKDYuMyBrZXJuZWwpIGFjdHVhbGx5CisgICAgICAgICAqIHZpb2xhdGUg dGhlIHNwZWMuIGFuZCByZWx5IG9uIGEgdmFsdWUgb2YgMCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMK KyAgICAgICAgICogZW5saWdodGVubWVudCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuCisgICAg ICAgICAqLworICAgICAgICBwLT5Uc2NTZXF1ZW5jZSA9IDA7CisKKyAgICAgICAgcHJpbnRrKFhF TkxPR19HX0lORk8gImQlZDogVklSSURJQU4gUkVGRVJFTkNFX1RTQzogaW52YWxpZGF0ZWRcbiIs CisgICAgICAgICAgICAgICBkLT5kb21haW5faWQpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9 CisKKyAgICAvKgorICAgICAqIFRoZSBndWVzdCB3aWxsIGNhbGN1bGF0ZSByZWZlcmVuY2UgdGlt ZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZworICAgICAqIGZvcm11bGE6CisgICAgICoKKyAg ICAgKiBSZWZlcmVuY2VUaW1lID0gKChSRFRTQygpICogVHNjU2NhbGUpID4+IDY0KSArIFRzY09m ZnNldAorICAgICAqCisgICAgICogV2luZG93cyB1c2VzIGEgMTAwbnMgdGljaywgc28gd2UgbmVl ZCBhIHNjYWxlIHdoaWNoIGlzIGNwdQorICAgICAqIHRpY2tzIHBlciAxMDBucyBzaGlmdGVkIGxl ZnQgYnkgNjQuCisgICAgICovCisgICAgcC0+VHNjU2NhbGUgPSAoKDEwMDAwdWwgPDwgMzIpIC8g ZC0+YXJjaC50c2Nfa2h6KSA8PCAzMjsKKworICAgIHAtPlRzY1NlcXVlbmNlKys7CisgICAgaWYg KCBwLT5Uc2NTZXF1ZW5jZSA9PSAweEZGRkZGRkZGIHx8CisgICAgICAgICBwLT5Uc2NTZXF1ZW5j ZSA9PSAwICkgLyogQXZvaWQgYm90aCAnaW52YWxpZCcgdmFsdWVzICovCisgICAgICAgIHAtPlRz Y1NlcXVlbmNlID0gMTsKKworIG91dDoKKyAgICB1bm1hcF9kb21haW5fcGFnZShwKTsKKworICAg IHB1dF9wYWdlX2FuZF90eXBlKHBhZ2UpOworfQorCitzdGF0aWMgaW50NjRfdCByYXdfdHJjX3Zh bChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHVpbnQ2NF90IHRzYzsKKyAgICBzdHJ1Y3QgdGlt ZV9zY2FsZSB0c2NfdG9fbnM7CisKKyAgICB0c2MgPSBodm1fZ2V0X2d1ZXN0X3RzYyhwdF9nbG9i YWxfdmNwdV90YXJnZXQoZCkpOworCisgICAgLyogY29udmVydCB0c2MgdG8gY291bnQgb2YgMTAw bnMgcGVyaW9kcyAqLworICAgIHNldF90aW1lX3NjYWxlKCZ0c2NfdG9fbnMsIGQtPmFyY2gudHNj X2toeiAqIDEwMDB1bCk7CisgICAgcmV0dXJuIHNjYWxlX2RlbHRhKHRzYywgJnRzY190b19ucykg LyAxMDB1bDsKK30KKwordm9pZCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudF9mcmVlemUoc3RydWN0 IGRvbWFpbiAqZCkKK3sKKyAgICBzdHJ1Y3QgdmlyaWRpYW5fdGltZV9yZWZfY291bnQgKnRyYzsK KworICAgIHRyYyA9ICZkLT5hcmNoLmh2bS52aXJpZGlhbi50aW1lX3JlZl9jb3VudDsKKworICAg IGlmICggdGVzdF9hbmRfY2xlYXJfYml0KF9UUkNfcnVubmluZywgJnRyYy0+ZmxhZ3MpICkKKyAg ICAgICAgdHJjLT52YWwgPSByYXdfdHJjX3ZhbChkKSArIHRyYy0+b2ZmOworfQorCit2b2lkIHZp cmlkaWFuX3RpbWVfcmVmX2NvdW50X3RoYXcoc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBzdHJ1 Y3QgdmlyaWRpYW5fdGltZV9yZWZfY291bnQgKnRyYzsKKworICAgIHRyYyA9ICZkLT5hcmNoLmh2 bS52aXJpZGlhbi50aW1lX3JlZl9jb3VudDsKKworICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rv d24gJiYKKyAgICAgICAgICF0ZXN0X2FuZF9zZXRfYml0KF9UUkNfcnVubmluZywgJnRyYy0+Zmxh Z3MpICkKKyAgICAgICAgdHJjLT5vZmYgPSAoaW50NjRfdCl0cmMtPnZhbCAtIHJhd190cmNfdmFs KGQpOworfQorCitpbnQgdmlyaWRpYW5fdGltZV93cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMy X3QgaWR4LCB1aW50NjRfdCB2YWwpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFp bjsKKworICAgIHN3aXRjaCAoIGlkeCApCisgICAgeworICAgIGNhc2UgSFZfWDY0X01TUl9SRUZF UkVOQ0VfVFNDOgorICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZN UFZfcmVmZXJlbmNlX3RzYykgKQorICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9O OworCisgICAgICAgIGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5jZV90c2MucmF3ID0gdmFs OworICAgICAgICBkdW1wX3JlZmVyZW5jZV90c2MoZCk7CisgICAgICAgIGlmICggZC0+YXJjaC5o dm0udmlyaWRpYW4ucmVmZXJlbmNlX3RzYy5maWVsZHMuZW5hYmxlZCApCisgICAgICAgICAgICB1 cGRhdGVfcmVmZXJlbmNlX3RzYyhkLCB0cnVlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZh dWx0OgorICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywKKyAgICAgICAgICAgICAgICAgIiVz OiB1bmltcGxlbWVudGVkIE1TUiAlI3ggKCUwMTYiUFJJeDY0IilcbiIsCisgICAgICAgICAgICAg ICAgIF9fZnVuY19fLCBpZHgsIHZhbCk7CisgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElP TjsKKyAgICB9CisKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCitpbnQgdmlyaWRpYW5f dGltZV9yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCAq dmFsKQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisKKyAgICBzd2l0Y2gg KCBpZHggKQorICAgIHsKKyAgICBjYXNlIEhWX1g2NF9NU1JfVFNDX0ZSRVFVRU5DWToKKyAgICAg ICAgaWYgKCB2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9ub19mcmVxICkKKyAgICAg ICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAgICAgICAqdmFsID0gKHVpbnQ2 NF90KWQtPmFyY2gudHNjX2toeiAqIDEwMDB1bGw7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz ZSBIVl9YNjRfTVNSX0FQSUNfRlJFUVVFTkNZOgorICAgICAgICBpZiAoIHZpcmlkaWFuX2ZlYXR1 cmVfbWFzayhkKSAmIEhWTVBWX25vX2ZyZXEgKQorICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxf RVhDRVBUSU9OOworCisgICAgICAgICp2YWwgPSAxMDAwMDAwMDAwdWxsIC8gQVBJQ19CVVNfQ1lD TEVfTlM7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIVl9YNjRfTVNSX1JFRkVSRU5DRV9U U0M6CisgICAgICAgIGlmICggISh2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9yZWZl cmVuY2VfdHNjKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CisKKyAg ICAgICAgKnZhbCA9IGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5jZV90c2MucmF3OworICAg ICAgICBicmVhazsKKworICAgIGNhc2UgSFZfWDY0X01TUl9USU1FX1JFRl9DT1VOVDoKKyAgICB7 CisgICAgICAgIHN0cnVjdCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudCAqdHJjID0KKyAgICAgICAg ICAgICZkLT5hcmNoLmh2bS52aXJpZGlhbi50aW1lX3JlZl9jb3VudDsKKworICAgICAgICBpZiAo ICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfdGltZV9yZWZfY291bnQpICkKKyAg ICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAgICAgICBpZiAoICF0ZXN0 X2FuZF9zZXRfYml0KF9UUkNfYWNjZXNzZWQsICZ0cmMtPmZsYWdzKSApCisgICAgICAgICAgICBw cmludGsoWEVOTE9HX0dfSU5GTyAiZCVkOiBWSVJJRElBTiBNU1JfVElNRV9SRUZfQ09VTlQ6IGFj Y2Vzc2VkXG4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCk7CisKKyAgICAgICAg KnZhbCA9IHJhd190cmNfdmFsKGQpICsgdHJjLT5vZmY7CisgICAgICAgIGJyZWFrOworICAgIH0K KworICAgIGRlZmF1bHQ6CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLAorICAgICAgICAg ICAgICAgICAiJXM6IHVuaW1wbGVtZW50ZWQgTVNSICUjeFxuIiwKKyAgICAgICAgICAgICAgICAg X19mdW5jX18sIGlkeCk7CisgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKyAgICB9 CisKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCit2b2lkIHZpcmlkaWFuX3RpbWVfc2F2 ZV9kb21haW5fY3R4dCgKKyAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgaHZtX3Zp cmlkaWFuX2RvbWFpbl9jb250ZXh0ICpjdHh0KQoreworICAgIGN0eHQtPnRpbWVfcmVmX2NvdW50 ID0gZC0+YXJjaC5odm0udmlyaWRpYW4udGltZV9yZWZfY291bnQudmFsOworICAgIGN0eHQtPnJl ZmVyZW5jZV90c2MgPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLnJhdzsKK30K Kwordm9pZCB2aXJpZGlhbl90aW1lX2xvYWRfZG9tYWluX2N0eHQoCisgICAgc3RydWN0IGRvbWFp biAqZCwgc3RydWN0IGh2bV92aXJpZGlhbl9kb21haW5fY29udGV4dCAqY3R4dCkKK3sKKyAgICBk LT5hcmNoLmh2bS52aXJpZGlhbi50aW1lX3JlZl9jb3VudC52YWwgPSBjdHh0LT50aW1lX3JlZl9j b3VudDsKKyAgICBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLnJhdyA9IGN0eHQt PnJlZmVyZW5jZV90c2M7CisKKyAgICBpZiAoIGQtPmFyY2guaHZtLnZpcmlkaWFuLnJlZmVyZW5j ZV90c2MuZmllbGRzLmVuYWJsZWQgKQorICAgICAgICB1cGRhdGVfcmVmZXJlbmNlX3RzYyhkLCBm YWxzZSk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZp bGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlh bi92aXJpZGlhbi5jCmluZGV4IDNlNjczOTA3MDcuLjM2MzUzNzA1MjggMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4uYworKysgYi94ZW4vYXJjaC94ODYvaHZt L3ZpcmlkaWFuL3ZpcmlkaWFuLmMKQEAgLTI0NSwxNyArMjQ1LDYgQEAgc3RhdGljIHZvaWQgZHVt cF9oeXBlcmNhbGwoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgaGctPmZpZWxk cy5lbmFibGVkLCAodW5zaWduZWQgbG9uZyloZy0+ZmllbGRzLnBmbik7CiB9CiAKLXN0YXRpYyB2 b2lkIGR1bXBfcmVmZXJlbmNlX3RzYyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQotewotICAgIGNv bnN0IHVuaW9uIHZpcmlkaWFuX3BhZ2VfbXNyICpydDsKLQotICAgIHJ0ID0gJmQtPmFyY2guaHZt LnZpcmlkaWFuLnJlZmVyZW5jZV90c2M7Ci0KLSAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAiZCVk OiBWSVJJRElBTiBSRUZFUkVOQ0VfVFNDOiBlbmFibGVkOiAleCBwZm46ICVseFxuIiwKLSAgICAg ICAgICAgZC0+ZG9tYWluX2lkLAotICAgICAgICAgICBydC0+ZmllbGRzLmVuYWJsZWQsICh1bnNp Z25lZCBsb25nKXJ0LT5maWVsZHMucGZuKTsKLX0KLQogc3RhdGljIHZvaWQgZW5hYmxlX2h5cGVy Y2FsbF9wYWdlKHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBnbWZuID0g ZC0+YXJjaC5odm0udmlyaWRpYW4uaHlwZXJjYWxsX2dwYS5maWVsZHMucGZuOwpAQCAtMjkwLDgw ICsyNzksNiBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaHlwZXJjYWxsX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCkKICAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKIH0KIAotc3RhdGljIHZvaWQgdXBk YXRlX3JlZmVyZW5jZV90c2Moc3RydWN0IGRvbWFpbiAqZCwgYm9vbF90IGluaXRpYWxpemUpCi17 Ci0gICAgdW5zaWduZWQgbG9uZyBnbWZuID0gZC0+YXJjaC5odm0udmlyaWRpYW4ucmVmZXJlbmNl X3RzYy5maWVsZHMucGZuOwotICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UgPSBnZXRfcGFnZV9m cm9tX2dmbihkLCBnbWZuLCBOVUxMLCBQMk1fQUxMT0MpOwotICAgIEhWX1JFRkVSRU5DRV9UU0Nf UEFHRSAqcDsKLQotICAgIGlmICggIXBhZ2UgfHwgIWdldF9wYWdlX3R5cGUocGFnZSwgUEdUX3dy aXRhYmxlX3BhZ2UpICkKLSAgICB7Ci0gICAgICAgIGlmICggcGFnZSApCi0gICAgICAgICAgICBw dXRfcGFnZShwYWdlKTsKLSAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01G TiAlIyJQUklfZ2ZuIiAoTUZOICUjIlBSSV9tZm4iKVxuIiwKLSAgICAgICAgICAgICAgICAgZ21m biwgbWZuX3gocGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogSU5WQUxJRF9NRk4pKTsKLSAgICAg ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHAgPSBfX21hcF9kb21haW5fcGFnZShwYWdlKTsKLQot ICAgIGlmICggaW5pdGlhbGl6ZSApCi0gICAgICAgIGNsZWFyX3BhZ2UocCk7Ci0KLSAgICAvKgot ICAgICAqIFRoaXMgZW5saWdodGVubWVudCBtdXN0IGJlIGRpc2FibGVkIGlzIHRoZSBob3N0IFRT QyBpcyBub3QKLSAgICAgKiBpbnZhcmlhbnQuIEhvd2V2ZXIgaXQgaXMgYWxzbyBkaXNhYmxlZCBp ZiB2dHNjIGlzIHRydWUgKHdoaWNoCi0gICAgICogbWVhbnMgcmR0c2MgaXMgYmVpbmcgZW11bGF0 ZWQpLiBUaGlzIGdlbmVyYWxseSBoYXBwZW5zIHdoZW4gZ3Vlc3QKLSAgICAgKiBUU0MgZnJlcSBh bmQgaG9zdCBUU0MgZnJlcSBkb24ndCBtYXRjaC4gVGhlIFRzY1NjYWxlIHZhbHVlIGNvdWxkIGJl Ci0gICAgICogYWRqdXN0ZWQgdG8gY29wZSB3aXRoIHRoaXMsIGFsbG93aW5nIHZ0c2MgdG8gYmUg dHVybmVkIG9mZiwgYnV0Ci0gICAgICogc3VwcG9ydCBmb3IgdGhpcyBpcyBub3QgeWV0IHByZXNl bnQgaW4gdGhlIGh5cGVydmlzb3IuIFRodXMgaXMgaXQKLSAgICAgKiBpcyBwb3NzaWJsZSB0aGF0 IG1pZ3JhdGluZyBhIFdpbmRvd3MgVk0gYmV0d2VlbiBob3N0cyBvZiBkaWZmZXJpbmcKLSAgICAg KiBUU0MgZnJlcXVlbmNpZXMgbWF5IHJlc3VsdCBpbiBsYXJnZSBkaWZmZXJlbmNlcyBpbiBndWVz dAotICAgICAqIHBlcmZvcm1hbmNlLgotICAgICAqLwotICAgIGlmICggIWhvc3RfdHNjX2lzX3Nh ZmUoKSB8fCBkLT5hcmNoLnZ0c2MgKQotICAgIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogVGhl IHNwZWNpZmljYXRpb24gc3RhdGVzIHRoYXQgdmFsaWQgdmFsdWVzIG9mIFRzY1NlcXVlbmNlIHJh bmdlCi0gICAgICAgICAqIGZyb20gMCB0byAweEZGRkZGRkZFLiBUaGUgdmFsdWUgMHhGRkZGRkZG RiBpcyB1c2VkIHRvIGluZGljYXRlCi0gICAgICAgICAqIHRoaXMgbWVjaGFuaXNtIGlzIG5vIGxv bmdlciBhIHJlbGlhYmxlIHNvdXJjZSBvZiB0aW1lIGFuZCB0aGF0Ci0gICAgICAgICAqIHRoZSBW TSBzaG91bGQgZmFsbCBiYWNrIHRvIGEgZGlmZmVyZW50IHNvdXJjZS4KLSAgICAgICAgICoKLSAg ICAgICAgICogU2VydmVyIDIwMTIgKDYuMiBrZXJuZWwpIGFuZCAyMDEyIFIyICg2LjMga2VybmVs KSBhY3R1YWxseQotICAgICAgICAgKiB2aW9sYXRlIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCByZWx5 IG9uIGEgdmFsdWUgb2YgMCB0byBpbmRpY2F0ZQotICAgICAgICAgKiB0aGF0IHRoaXMgZW5saWdo dGVubWVudCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuIFRoZXNlIHR3bwotICAgICAgICAgKiBr ZXJuZWwgdmVyc2lvbnMgYXJlIGN1cnJlbnRseSB0aGUgb25seSBvbmVzIHRvIG1ha2UgdXNlIG9m IHRoaXMKLSAgICAgICAgICogZW5saWdodGVubWVudCwgc28ganVzdCB1c2UgMCBoZXJlLgotICAg ICAgICAgKi8KLSAgICAgICAgcC0+VHNjU2VxdWVuY2UgPSAwOwotCi0gICAgICAgIHByaW50ayhY RU5MT0dfR19JTkZPICJkJWQ6IFZJUklESUFOIFJFRkVSRU5DRV9UU0M6IGludmFsaWRhdGVkXG4i LAotICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkKTsKLSAgICAgICAgZ290byBvdXQ7Ci0gICAg fQotCi0gICAgLyoKLSAgICAgKiBUaGUgZ3Vlc3Qgd2lsbCBjYWxjdWxhdGUgcmVmZXJlbmNlIHRp bWUgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcKLSAgICAgKiBmb3JtdWxhOgotICAgICAqCi0g ICAgICogUmVmZXJlbmNlVGltZSA9ICgoUkRUU0MoKSAqIFRzY1NjYWxlKSA+PiA2NCkgKyBUc2NP ZmZzZXQKLSAgICAgKgotICAgICAqIFdpbmRvd3MgdXNlcyBhIDEwMG5zIHRpY2ssIHNvIHdlIG5l ZWQgYSBzY2FsZSB3aGljaCBpcyBjcHUKLSAgICAgKiB0aWNrcyBwZXIgMTAwbnMgc2hpZnRlZCBs ZWZ0IGJ5IDY0LgotICAgICAqLwotICAgIHAtPlRzY1NjYWxlID0gKCgxMDAwMHVsIDw8IDMyKSAv IGQtPmFyY2gudHNjX2toeikgPDwgMzI7Ci0KLSAgICBwLT5Uc2NTZXF1ZW5jZSsrOwotICAgIGlm ICggcC0+VHNjU2VxdWVuY2UgPT0gMHhGRkZGRkZGRiB8fAotICAgICAgICAgcC0+VHNjU2VxdWVu Y2UgPT0gMCApIC8qIEF2b2lkIGJvdGggJ2ludmFsaWQnIHZhbHVlcyAqLwotICAgICAgICBwLT5U c2NTZXF1ZW5jZSA9IDE7Ci0KLSBvdXQ6Ci0gICAgdW5tYXBfZG9tYWluX3BhZ2UocCk7Ci0KLSAg ICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKLX0KLQogaW50IGd1ZXN0X3dybXNyX3ZpcmlkaWFu KHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbCkKIHsKICAgICBzdHJ1 Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwpAQCAtMzk0LDE0ICszMDksNyBAQCBpbnQgZ3Vlc3Rf d3Jtc3JfdmlyaWRpYW4oc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFs KQogICAgICAgICByZXR1cm4gdmlyaWRpYW5fc3luaWNfd3Jtc3IodiwgaWR4LCB2YWwpOwogCiAg ICAgY2FzZSBIVl9YNjRfTVNSX1JFRkVSRU5DRV9UU0M6Ci0gICAgICAgIGlmICggISh2aXJpZGlh bl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9yZWZlcmVuY2VfdHNjKSApCi0gICAgICAgICAgICBy ZXR1cm4gWDg2RU1VTF9FWENFUFRJT047Ci0KLSAgICAgICAgZC0+YXJjaC5odm0udmlyaWRpYW4u cmVmZXJlbmNlX3RzYy5yYXcgPSB2YWw7Ci0gICAgICAgIGR1bXBfcmVmZXJlbmNlX3RzYyhkKTsK LSAgICAgICAgaWYgKCBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLmZpZWxkcy5l bmFibGVkICkKLSAgICAgICAgICAgIHVwZGF0ZV9yZWZlcmVuY2VfdHNjKGQsIDEpOwotICAgICAg ICBicmVhazsKKyAgICAgICAgcmV0dXJuIHZpcmlkaWFuX3RpbWVfd3Jtc3IodiwgaWR4LCB2YWwp OwogCiAgICAgY2FzZSBIVl9YNjRfTVNSX0NSQVNIX1AwOgogICAgIGNhc2UgSFZfWDY0X01TUl9D UkFTSF9QMToKQEAgLTQ0NywzOSArMzU1LDYgQEAgaW50IGd1ZXN0X3dybXNyX3ZpcmlkaWFuKHN0 cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbCkKICAgICByZXR1cm4gWDg2 RU1VTF9PS0FZOwogfQogCi1zdGF0aWMgaW50NjRfdCByYXdfdHJjX3ZhbChzdHJ1Y3QgZG9tYWlu ICpkKQotewotICAgIHVpbnQ2NF90IHRzYzsKLSAgICBzdHJ1Y3QgdGltZV9zY2FsZSB0c2NfdG9f bnM7Ci0KLSAgICB0c2MgPSBodm1fZ2V0X2d1ZXN0X3RzYyhwdF9nbG9iYWxfdmNwdV90YXJnZXQo ZCkpOwotCi0gICAgLyogY29udmVydCB0c2MgdG8gY291bnQgb2YgMTAwbnMgcGVyaW9kcyAqLwot ICAgIHNldF90aW1lX3NjYWxlKCZ0c2NfdG9fbnMsIGQtPmFyY2gudHNjX2toeiAqIDEwMDB1bCk7 Ci0gICAgcmV0dXJuIHNjYWxlX2RlbHRhKHRzYywgJnRzY190b19ucykgLyAxMDB1bDsKLX0KLQot dm9pZCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudF9mcmVlemUoc3RydWN0IGRvbWFpbiAqZCkKLXsK LSAgICBzdHJ1Y3QgdmlyaWRpYW5fdGltZV9yZWZfY291bnQgKnRyYzsKLQotICAgIHRyYyA9ICZk LT5hcmNoLmh2bS52aXJpZGlhbi50aW1lX3JlZl9jb3VudDsKLQotICAgIGlmICggdGVzdF9hbmRf Y2xlYXJfYml0KF9UUkNfcnVubmluZywgJnRyYy0+ZmxhZ3MpICkKLSAgICAgICAgdHJjLT52YWwg PSByYXdfdHJjX3ZhbChkKSArIHRyYy0+b2ZmOwotfQotCi12b2lkIHZpcmlkaWFuX3RpbWVfcmVm X2NvdW50X3RoYXcoc3RydWN0IGRvbWFpbiAqZCkKLXsKLSAgICBzdHJ1Y3QgdmlyaWRpYW5fdGlt ZV9yZWZfY291bnQgKnRyYzsKLQotICAgIHRyYyA9ICZkLT5hcmNoLmh2bS52aXJpZGlhbi50aW1l X3JlZl9jb3VudDsKLQotICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYKLSAgICAgICAg ICF0ZXN0X2FuZF9zZXRfYml0KF9UUkNfcnVubmluZywgJnRyYy0+ZmxhZ3MpICkKLSAgICAgICAg dHJjLT5vZmYgPSAoaW50NjRfdCl0cmMtPnZhbCAtIHJhd190cmNfdmFsKGQpOwotfQotCiBpbnQg Z3Vlc3RfcmRtc3JfdmlyaWRpYW4oY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwg dWludDY0X3QgKnZhbCkKIHsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwpAQCAt NTAwLDQ5ICszNzUsMTcgQEAgaW50IGd1ZXN0X3JkbXNyX3ZpcmlkaWFuKGNvbnN0IHN0cnVjdCB2 Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpCiAgICAgICAgICp2YWwgPSB2LT52 Y3B1X2lkOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSFZfWDY0X01TUl9UU0NfRlJFUVVF TkNZOgotICAgICAgICBpZiAoIHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX25vX2Zy ZXEgKQotICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwotCi0gICAgICAgICp2 YWwgPSAodWludDY0X3QpZC0+YXJjaC50c2Nfa2h6ICogMTAwMHVsbDsKLSAgICAgICAgYnJlYWs7 Ci0KLSAgICBjYXNlIEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1k6Ci0gICAgICAgIGlmICggdmly aWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfbm9fZnJlcSApCi0gICAgICAgICAgICByZXR1 cm4gWDg2RU1VTF9FWENFUFRJT047Ci0KLSAgICAgICAgKnZhbCA9IDEwMDAwMDAwMDB1bGwgLyBB UElDX0JVU19DWUNMRV9OUzsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIEhWX1g2NF9NU1Jf RU9JOgogICAgIGNhc2UgSFZfWDY0X01TUl9JQ1I6CiAgICAgY2FzZSBIVl9YNjRfTVNSX1RQUjoK ICAgICBjYXNlIEhWX1g2NF9NU1JfVlBfQVNTSVNUX1BBR0U6CiAgICAgICAgIHJldHVybiB2aXJp ZGlhbl9zeW5pY19yZG1zcih2LCBpZHgsIHZhbCk7CiAKKyAgICBjYXNlIEhWX1g2NF9NU1JfVFND X0ZSRVFVRU5DWToKKyAgICBjYXNlIEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1k6CiAgICAgY2Fz ZSBIVl9YNjRfTVNSX1JFRkVSRU5DRV9UU0M6Ci0gICAgICAgIGlmICggISh2aXJpZGlhbl9mZWF0 dXJlX21hc2soZCkgJiBIVk1QVl9yZWZlcmVuY2VfdHNjKSApCi0gICAgICAgICAgICByZXR1cm4g WDg2RU1VTF9FWENFUFRJT047Ci0KLSAgICAgICAgKnZhbCA9IGQtPmFyY2guaHZtLnZpcmlkaWFu LnJlZmVyZW5jZV90c2MucmF3OwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgSFZfWDY0X01T Ul9USU1FX1JFRl9DT1VOVDoKLSAgICB7Ci0gICAgICAgIHN0cnVjdCB2aXJpZGlhbl90aW1lX3Jl Zl9jb3VudCAqdHJjOwotCi0gICAgICAgIHRyYyA9ICZkLT5hcmNoLmh2bS52aXJpZGlhbi50aW1l X3JlZl9jb3VudDsKLQotICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYg SFZNUFZfdGltZV9yZWZfY291bnQpICkKLSAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQ VElPTjsKLQotICAgICAgICBpZiAoICF0ZXN0X2FuZF9zZXRfYml0KF9UUkNfYWNjZXNzZWQsICZ0 cmMtPmZsYWdzKSApCi0gICAgICAgICAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAiZCVkOiBWSVJJ RElBTiBNU1JfVElNRV9SRUZfQ09VTlQ6IGFjY2Vzc2VkXG4iLAotICAgICAgICAgICAgICAgICAg IGQtPmRvbWFpbl9pZCk7Ci0KLSAgICAgICAgKnZhbCA9IHJhd190cmNfdmFsKGQpICsgdHJjLT5v ZmY7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHZpcmlkaWFuX3RpbWVf cmRtc3IodiwgaWR4LCB2YWwpOwogCiAgICAgY2FzZSBIVl9YNjRfTVNSX0NSQVNIX1AwOgogICAg IGNhc2UgSFZfWDY0X01TUl9DUkFTSF9QMToKQEAgLTc1MCwxNSArNTkzLDE1IEBAIHN0YXRpYyBp bnQgdmlyaWRpYW5fc2F2ZV9kb21haW5fY3R4dChzdHJ1Y3QgdmNwdSAqdiwKIHsKICAgICBjb25z dCBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVjdCBodm1fdmlyaWRpYW5f ZG9tYWluX2NvbnRleHQgY3R4dCA9IHsKLSAgICAgICAgLnRpbWVfcmVmX2NvdW50ID0gZC0+YXJj aC5odm0udmlyaWRpYW4udGltZV9yZWZfY291bnQudmFsLAogICAgICAgICAuaHlwZXJjYWxsX2dw YSAgPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5oeXBlcmNhbGxfZ3BhLnJhdywKICAgICAgICAgLmd1 ZXN0X29zX2lkICAgID0gZC0+YXJjaC5odm0udmlyaWRpYW4uZ3Vlc3Rfb3NfaWQucmF3LAotICAg ICAgICAucmVmZXJlbmNlX3RzYyAgPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNj LnJhdywKICAgICB9OwogCiAgICAgaWYgKCAhaXNfdmlyaWRpYW5fZG9tYWluKGQpICkKICAgICAg ICAgcmV0dXJuIDA7CiAKKyAgICB2aXJpZGlhbl90aW1lX3NhdmVfZG9tYWluX2N0eHQoZCwgJmN0 eHQpOworCiAgICAgcmV0dXJuIChodm1fc2F2ZV9lbnRyeShWSVJJRElBTl9ET01BSU4sIDAsIGgs ICZjdHh0KSAhPSAwKTsKIH0KIApAQCAtNzcwLDEzICs2MTMsMTAgQEAgc3RhdGljIGludCB2aXJp ZGlhbl9sb2FkX2RvbWFpbl9jdHh0KHN0cnVjdCBkb21haW4gKmQsCiAgICAgaWYgKCBodm1fbG9h ZF9lbnRyeV96ZXJvZXh0ZW5kKFZJUklESUFOX0RPTUFJTiwgaCwgJmN0eHQpICE9IDAgKQogICAg ICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgIGQtPmFyY2guaHZtLnZpcmlkaWFuLnRpbWVfcmVm X2NvdW50LnZhbCA9IGN0eHQudGltZV9yZWZfY291bnQ7CiAgICAgZC0+YXJjaC5odm0udmlyaWRp YW4uaHlwZXJjYWxsX2dwYS5yYXcgID0gY3R4dC5oeXBlcmNhbGxfZ3BhOwogICAgIGQtPmFyY2gu aHZtLnZpcmlkaWFuLmd1ZXN0X29zX2lkLnJhdyAgICA9IGN0eHQuZ3Vlc3Rfb3NfaWQ7Ci0gICAg ZC0+YXJjaC5odm0udmlyaWRpYW4ucmVmZXJlbmNlX3RzYy5yYXcgID0gY3R4dC5yZWZlcmVuY2Vf dHNjOwogCi0gICAgaWYgKCBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLmZpZWxk cy5lbmFibGVkICkKLSAgICAgICAgdXBkYXRlX3JlZmVyZW5jZV90c2MoZCwgMCk7CisgICAgdmly aWRpYW5fdGltZV9sb2FkX2RvbWFpbl9jdHh0KGQsICZjdHh0KTsKIAogICAgIHJldHVybiAwOwog fQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKaW5kZXggMzQ4M2FlZGI5YS4uZGVjMDAzZjc0 YyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCkBAIC0xMjUsMTUgKzEyNSw2IEBAIHN0 cnVjdCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudAogICAgIGludDY0X3Qgb2ZmOwogfTsKIAotdHlw ZWRlZiBzdHJ1Y3QgX0hWX1JFRkVSRU5DRV9UU0NfUEFHRQotewotICAgIHVpbnQzMl90IFRzY1Nl cXVlbmNlOwotICAgIHVpbnQzMl90IFJlc2VydmVkMTsKLSAgICB1aW50NjRfdCBUc2NTY2FsZTsK LSAgICBpbnQ2NF90ICBUc2NPZmZzZXQ7Ci0gICAgdWludDY0X3QgUmVzZXJ2ZWQyWzUwOV07Ci19 IEhWX1JFRkVSRU5DRV9UU0NfUEFHRSwgKlBIVl9SRUZFUkVOQ0VfVFNDX1BBR0U7Ci0KIHN0cnVj dCB2aXJpZGlhbl9kb21haW4KIHsKICAgICB1bmlvbiB2aXJpZGlhbl9ndWVzdF9vc19pZF9tc3Ig Z3Vlc3Rfb3NfaWQ7CkBAIC0xNTQsNiArMTQ1LDE0IEBAIHZpcmlkaWFuX2h5cGVyY2FsbChzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CiB2b2lkIHZpcmlkaWFuX3RpbWVfcmVmX2NvdW50X2Zy ZWV6ZShzdHJ1Y3QgZG9tYWluICpkKTsKIHZvaWQgdmlyaWRpYW5fdGltZV9yZWZfY291bnRfdGhh dyhzdHJ1Y3QgZG9tYWluICpkKTsKIAoraW50IHZpcmlkaWFuX3RpbWVfd3Jtc3Ioc3RydWN0IHZj cHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKTsKK2ludCB2aXJpZGlhbl90aW1lX3Jk bXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpOwor Cit2b2lkIHZpcmlkaWFuX3RpbWVfc2F2ZV9kb21haW5fY3R4dCgKKyAgICBjb25zdCBzdHJ1Y3Qg ZG9tYWluICpkLCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX2RvbWFpbl9jb250ZXh0ICpjdHh0KTsKK3Zv aWQgdmlyaWRpYW5fdGltZV9sb2FkX2RvbWFpbl9jdHh0KAorICAgIHN0cnVjdCBkb21haW4gKmQs IHN0cnVjdCBodm1fdmlyaWRpYW5fZG9tYWluX2NvbnRleHQgKmN0eHQpOworCiB2b2lkIHZpcmlk aWFuX3ZjcHVfZGVpbml0KHN0cnVjdCB2Y3B1ICp2KTsKIHZvaWQgdmlyaWRpYW5fZG9tYWluX2Rl aW5pdChzdHJ1Y3QgZG9tYWluICpkKTsKIAotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==