From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 10/11] viridian: add implementation of synthetic timers Date: Thu, 7 Mar 2019 14:09:04 +0000 Message-ID: <20190307140906.1932-11-paul.durrant@citrix.com> References: <20190307140906.1932-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 1h1tzu-0003bv-CZ for xen-devel@lists.xenproject.org; Thu, 07 Mar 2019 14:27:46 +0000 In-Reply-To: <20190307140906.1932-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: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTVElNRVIwLTE1 X0NPTkZJRy9DT1VOVCBNU1JzCmFuZCBoZW5jZSBhIHRoZSBmaXJzdCBTeW5JQyBtZXNzYWdlIHNv dXJjZS4KClRoZSBuZXcgKGFuZCBkb2N1bWVudGVkKSAnc3RpbWVyJyB2aXJpZGlhbiBlbmxpZ2h0 ZW5tZW50IGdyb3VwIG1heSBiZQpzcGVjaWZpZWQgdG8gZW5hYmxlIHRoaXMgZmVhdHVyZS4KCldo aWxlIGluIHRoZSBuZWlnaGJvdXJob29kLCB0aGlzIHBhdGNoIGFkZHMgYSBtaXNzaW5nIGNoZWNr IGZvciBhbgphdHRlbXB0IHRvIHdyaXRlIHRoZSB0aW1lIHJlZmVyZW5jZSBjb3VudCBNU1IsIHdo aWNoIHNob3VsZCByZXN1bHQgaW4gYW4KZXhjZXB0aW9uIChidXQgbm90IGJlIHJlcG9ydGVkIGFz IGFuIHVuaW1wbGVtZW50ZWQgTVNSKS4KCk5PVEU6IEl0IGlzIG5lY2Vzc2FyeSBmb3IgY29ycmVj dCBvcGVyYXRpb24gdGhhdCB0aW1lciBleHBpcmF0aW9uIGFuZAogICAgICBtZXNzYWdlIGRlbGl2 ZXJ5IHRpbWUtc3RhbXBpbmcgdXNlIHRoZSBzYW1lIHRpbWUgc291cmNlIGFzIHRoZSBndWVzdC4K ICAgICAgVGhlIHNwZWNpZmljYXRpb24gaXMgYW1iaWd1b3VzIGJ1dCB0ZXN0aW5nIHdpdGggYSBX aW5kb3dzIDEwIDE4MDMKICAgICAgZ3Vlc3QgaGFzIHNob3duIHRoYXQgdXNpbmcgdGhlIHBhcnRp dGlvbiByZWZlcmVuY2UgY291bnRlciBhcyBhCiAgICAgIHNvdXJjZSB3aGlsc3QgdGhlIGd1ZXN0 IGlzIHVzaW5nIFJEVFNDIGFuZCB0aGUgcmVmZXJlbmNlIHRzYyBwYWdlCiAgICAgIGRvZXMgbm90 IHdvcmsgY29ycmVjdGx5LiBUaGVyZWZvcmUgdGhlIHRpbWVfbm93KCkgZnVuY3Rpb24gaXMgdXNl ZC4KICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBhbGdvcml0aG0gZm9yIGFjcXVpcmluZyBwYXJ0 aXRpb24gcmVmZXJlbmNlIHRpbWUKICAgICAgdGhhdCBpcyBkb2N1bWVudGVkIGluIHRoZSBzcGVj aWZpY3Rpb24uCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRy aXguY29tPgpBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNjOiBJ YW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEFuZHJldyBDb29wZXIg PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVu bGFwQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNj OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiAi Um9nZXIgUGF1IE1vbm7DqSIgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgoKdjQ6CiAtIEFkZHJlc3Mg Y29tbWVudHMgZnJvbSBKYW4KCnYzOgogLSBSZS13b3JrZWQgbWlzc2VkIHRpY2tzIGNhbGN1bGF0 aW9uCi0tLQogZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluICAgICAgICAgICAgICAgfCAgMTIgKy0K IHRvb2xzL2xpYnhsL2xpYnhsLmggICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIHRvb2xzL2xp YnhsL2xpYnhsX2RvbS5jICAgICAgICAgICAgICAgIHwgICA0ICsKIHRvb2xzL2xpYnhsL2xpYnhs X3R5cGVzLmlkbCAgICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4v cHJpdmF0ZS5oICAgIHwgICA5ICstCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMg ICAgICB8ICA1MyArKystCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYyAgICAgICB8 IDM4NiArKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFu L3ZpcmlkaWFuLmMgICB8ICAxOSArKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4u aCAgICAgfCAgMzIgKy0KIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oIHwg ICAyICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9odm0vcGFyYW1zLmggICAgICAgIHwgICA3ICstCiAx MSBmaWxlcyBjaGFuZ2VkLCA1MjMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2NzL21hbi94bC5jZmcuNS5wb2QuaW4gYi9kb2NzL21hbi94bC5jZmcuNS5wb2Qu aW4KaW5kZXggYWQ4MWFmMWVkOC4uMzU1YzY1NDY5MyAxMDA2NDQKLS0tIGEvZG9jcy9tYW4veGwu Y2ZnLjUucG9kLmluCisrKyBiL2RvY3MvbWFuL3hsLmNmZy41LnBvZC5pbgpAQCAtMjE2NywxMSAr MjE2NywxOSBAQCBUaGlzIGdyb3VwIGluY29ycG9yYXRlcyB0aGUgY3Jhc2ggY29udHJvbCBNU1Jz LiBUaGVzZSBlbmxpZ2h0ZW5tZW50cwogYWxsb3cgV2luZG93cyB0byB3cml0ZSBjcmFzaCBpbmZv cm1hdGlvbiBzdWNoIHRoYXQgaXQgY2FuIGJlIGxvZ2dlZAogYnkgWGVuLgogCis9aXRlbSBCPHN0 aW1lcj4KKworVGhpcyBzZXQgaW5jb3Jwb3JhdGVzIHRoZSBTeW5JQyBhbmQgc3ludGhldGljIHRp bWVyIE1TUnMuIFdpbmRvd3Mgd2lsbAordXNlIHN5bnRoZXRpYyB0aW1lcnMgaW4gcHJlZmVyZW5j ZSB0byBlbXVsYXRlZCBIUEVUIGZvciBhIHNvdXJjZSBvZgordGlja3MgYW5kIGhlbmNlIGVuYWJs aW5nIHRoaXMgZ3JvdXAgd2lsbCBlbnN1cmUgdGhhdCB0aWNrcyB3aWxsIGJlCitjb25zaXN0ZW50 IHdpdGggdXNlIG9mIGFuIGVubGlnaHRlbmVkIHRpbWUgc291cmNlIChCPHRpbWVfcmVmX2NvdW50 PiBvcgorQjxyZWZlcmVuY2VfdHNjPikuCisKID1pdGVtIEI8ZGVmYXVsdHM+CiAKIFRoaXMgaXMg YSBzcGVjaWFsIHZhbHVlIHRoYXQgZW5hYmxlcyB0aGUgZGVmYXVsdCBzZXQgb2YgZ3JvdXBzLCB3 aGljaAotaXMgY3VycmVudGx5IHRoZSBCPGJhc2U+LCBCPGZyZXE+LCBCPHRpbWVfcmVmX2NvdW50 PiwgQjxhcGljX2Fzc2lzdD4KLWFuZCBCPGNyYXNoX2N0bD4gZ3JvdXBzLgoraXMgY3VycmVudGx5 IHRoZSBCPGJhc2U+LCBCPGZyZXE+LCBCPHRpbWVfcmVmX2NvdW50PiwgQjxhcGljX2Fzc2lzdD4s CitCPGNyYXNoX2N0bD4gYW5kIEI8c3RpbWVyPiBncm91cHMuCiAKID1pdGVtIEI8YWxsPgogCmRp ZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMvbGlieGwvbGlieGwuaAppbmRl eCBhOTIzYTM4MGQzLi5jOGYyMTliMGQzIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bC5o CisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKQEAgLTMyNCw2ICszMjQsMTIgQEAKICAqLwogI2Rl ZmluZSBMSUJYTF9IQVZFX1ZJUklESUFOX1NZTklDIDEKIAorLyoKKyAqIExJQlhMX0hBVkVfVklS SURJQU5fU1RJTUVSIGluZGljYXRlcyB0aGF0IHRoZSAnc3RpbWVyJyB2YWx1ZQorICogaXMgcHJl c2VudCBpbiB0aGUgdmlyaWRpYW4gZW5saWdodGVubWVudCBlbnVtZXJhdGlvbi4KKyAqLworI2Rl ZmluZSBMSUJYTF9IQVZFX1ZJUklESUFOX1NUSU1FUiAxCisKIC8qCiAgKiBMSUJYTF9IQVZFX0JV SUxESU5GT19IVk1fQUNQSV9MQVBUT1BfU0xBVEUgaW5kaWNhdGVzIHRoYXQKICAqIGxpYnhsX2Rv bWFpbl9idWlsZF9pbmZvIGhhcyB0aGUgdS5odm0uYWNwaV9sYXB0b3Bfc2xhdGUgZmllbGQuCmRp ZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kb20uYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2Rv bS5jCmluZGV4IGZiNzU4ZDJhYzMuLjJlZTBmODJlZTcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhs L2xpYnhsX2RvbS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jCkBAIC0yNjksNiArMjY5 LDcgQEAgc3RhdGljIGludCBodm1fc2V0X3ZpcmlkaWFuX2ZlYXR1cmVzKGxpYnhsX19nYyAqZ2Ms IHVpbnQzMl90IGRvbWlkLAogICAgICAgICBsaWJ4bF9iaXRtYXBfc2V0KCZlbmxpZ2h0ZW5tZW50 cywgTElCWExfVklSSURJQU5fRU5MSUdIVEVOTUVOVF9USU1FX1JFRl9DT1VOVCk7CiAgICAgICAg IGxpYnhsX2JpdG1hcF9zZXQoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9WSVJJRElBTl9FTkxJR0hU RU5NRU5UX0FQSUNfQVNTSVNUKTsKICAgICAgICAgbGlieGxfYml0bWFwX3NldCgmZW5saWdodGVu bWVudHMsIExJQlhMX1ZJUklESUFOX0VOTElHSFRFTk1FTlRfQ1JBU0hfQ1RMKTsKKyAgICAgICAg bGlieGxfYml0bWFwX3NldCgmZW5saWdodGVubWVudHMsIExJQlhMX1ZJUklESUFOX0VOTElHSFRF Tk1FTlRfU1RJTUVSKTsKICAgICB9CiAKICAgICBsaWJ4bF9mb3JfZWFjaF9zZXRfYml0KHYsIGlu Zm8tPnUuaHZtLnZpcmlkaWFuX2VuYWJsZSkgewpAQCAtMzIwLDYgKzMyMSw5IEBAIHN0YXRpYyBp bnQgaHZtX3NldF92aXJpZGlhbl9mZWF0dXJlcyhsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21p ZCwKICAgICBpZiAobGlieGxfYml0bWFwX3Rlc3QoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9WSVJJ RElBTl9FTkxJR0hURU5NRU5UX1NZTklDKSkKICAgICAgICAgbWFzayB8PSBIVk1QVl9zeW5pYzsK IAorICAgIGlmIChsaWJ4bF9iaXRtYXBfdGVzdCgmZW5saWdodGVubWVudHMsIExJQlhMX1ZJUklE SUFOX0VOTElHSFRFTk1FTlRfU1RJTUVSKSkKKyAgICAgICAgbWFzayB8PSBIVk1QVl90aW1lX3Jl Zl9jb3VudCB8IEhWTVBWX3N5bmljIHwgSFZNUFZfc3RpbWVyOworCiAgICAgaWYgKG1hc2sgIT0g MCAmJgogICAgICAgICB4Y19odm1fcGFyYW1fc2V0KENUWC0+eGNoLAogICAgICAgICAgICAgICAg ICAgICAgICAgIGRvbWlkLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRs IGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCmluZGV4IDk4NjBiY2FmNWYuLjFjY2UyNDlk ZTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAorKysgYi90b29scy9s aWJ4bC9saWJ4bF90eXBlcy5pZGwKQEAgLTIzNiw2ICsyMzYsNyBAQCBsaWJ4bF92aXJpZGlhbl9l bmxpZ2h0ZW5tZW50ID0gRW51bWVyYXRpb24oInZpcmlkaWFuX2VubGlnaHRlbm1lbnQiLCBbCiAg ICAgKDUsICJhcGljX2Fzc2lzdCIpLAogICAgICg2LCAiY3Jhc2hfY3RsIiksCiAgICAgKDcsICJz eW5pYyIpLAorICAgICg4LCAic3RpbWVyIiksCiAgICAgXSkKIAogbGlieGxfaGR0eXBlID0gRW51 bWVyYXRpb24oImhkdHlwZSIsIFsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRp YW4vcHJpdmF0ZS5oIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9wcml2YXRlLmgKaW5kZXgg OTZhNzg0Yjg0MC4uYzI3MmMzNGNkYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92aXJp ZGlhbi9wcml2YXRlLmgKKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9wcml2YXRlLmgK QEAgLTc0LDYgKzc0LDExIEBACiBpbnQgdmlyaWRpYW5fc3luaWNfd3Jtc3Ioc3RydWN0IHZjcHUg KnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKTsKIGludCB2aXJpZGlhbl9zeW5pY19yZG1z cihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCAqdmFsKTsKIAor Ym9vbCB2aXJpZGlhbl9zeW5pY19kZWxpdmVyX3RpbWVyX21zZyhzdHJ1Y3QgdmNwdSAqdiwgdW5z aWduZWQgaW50IHNpbnR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ2NF90IGV4cGlyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IGRlbGl2ZXJ5KTsKKwogaW50IHZpcmlkaWFuX3N5bmljX3ZjcHVfaW5pdChj b25zdCBzdHJ1Y3QgdmNwdSAqdik7CiBpbnQgdmlyaWRpYW5fc3luaWNfZG9tYWluX2luaXQoY29u c3Qgc3RydWN0IGRvbWFpbiAqZCk7CiAKQEAgLTkzLDcgKzk4LDkgQEAgdm9pZCB2aXJpZGlhbl9z eW5pY19sb2FkX2RvbWFpbl9jdHh0KAogaW50IHZpcmlkaWFuX3RpbWVfd3Jtc3Ioc3RydWN0IHZj cHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKTsKIGludCB2aXJpZGlhbl90aW1lX3Jk bXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpOwog Ci1pbnQgdmlyaWRpYW5fdGltZV92Y3B1X2luaXQoY29uc3Qgc3RydWN0IHZjcHUgKnYpOwordm9p ZCB2aXJpZGlhbl90aW1lX3BvbGxfdGltZXJzKHN0cnVjdCB2Y3B1ICp2KTsKKworaW50IHZpcmlk aWFuX3RpbWVfdmNwdV9pbml0KHN0cnVjdCB2Y3B1ICp2KTsKIGludCB2aXJpZGlhbl90aW1lX2Rv bWFpbl9pbml0KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpOwogCiB2b2lkIHZpcmlkaWFuX3RpbWVf dmNwdV9kZWluaXQoY29uc3Qgc3RydWN0IHZjcHUgKnYpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9zeW5p Yy5jCmluZGV4IGY0NTEwZDM4MjkuLmI1ZjNhNzk1NTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdmlyaWRpYW4vc3luaWMuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5 bmljLmMKQEAgLTM0MCw5ICszNDAsNTggQEAgdm9pZCB2aXJpZGlhbl9zeW5pY19kb21haW5fZGVp bml0KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCiB7CiB9CiAKLXZvaWQgdmlyaWRpYW5fc3luaWNf cG9sbF9tZXNzYWdlcyhjb25zdCBzdHJ1Y3QgdmNwdSAqdikKK3ZvaWQgdmlyaWRpYW5fc3luaWNf cG9sbF9tZXNzYWdlcyhzdHJ1Y3QgdmNwdSAqdikKIHsKLSAgICAvKiBUaGVyZSBhcmUgY3VycmVu dGx5IG5vIG1lc3NhZ2Ugc291cmNlcyAqLworICAgIHZpcmlkaWFuX3RpbWVfcG9sbF90aW1lcnMo dik7Cit9CisKK2Jvb2wgdmlyaWRpYW5fc3luaWNfZGVsaXZlcl90aW1lcl9tc2coc3RydWN0IHZj cHUgKnYsIHVuc2lnbmVkIGludCBzaW50eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50NjRfdCBleHBpcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCBkZWxpdmVyeSkKK3sKKyAgICBzdHJ1Y3QgdmlyaWRpYW5f dmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAgICBjb25zdCB1bmlvbiB2aXJpZGlh bl9zaW50X21zciAqdnMgPSAmdnYtPnNpbnRbc2ludHhdOworICAgIEhWX01FU1NBR0UgKm1zZyA9 IHZ2LT5zaW1wLnB0cjsKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBUaW1lckluZGV4 OworICAgICAgICB1aW50MzJfdCBSZXNlcnZlZDsKKyAgICAgICAgdWludDY0X3QgRXhwaXJhdGlv blRpbWU7CisgICAgICAgIHVpbnQ2NF90IERlbGl2ZXJ5VGltZTsKKyAgICB9IHBheWxvYWQgPSB7 CisgICAgICAgIC5UaW1lckluZGV4ID0gaW5kZXgsCisgICAgICAgIC5FeHBpcmF0aW9uVGltZSA9 IGV4cGlyYXRpb24sCisgICAgICAgIC5EZWxpdmVyeVRpbWUgPSBkZWxpdmVyeSwKKyAgICB9Owor CisgICAgaWYgKCB0ZXN0X2JpdChzaW50eCwgJnZ2LT5tc2dfcGVuZGluZykgKQorICAgICAgICBy ZXR1cm4gZmFsc2U7CisKKyAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKCptc2cpICE9IEhWX01FU1NB R0VfU0laRSk7CisgICAgbXNnICs9IHNpbnR4OworCisgICAgLyoKKyAgICAgKiBUbyBhdm9pZCB1 c2luZyBhbiBhdG9taWMgdGVzdC1hbmQtc2V0LCBhbmQgYmFycmllciBiZWZvcmUgY2FsbGluZwor ICAgICAqIHZsYXBpY19zZXRfaXJxKCksIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgaW4g Y29udGV4dCBvZiB0aGUKKyAgICAgKiB2Y3B1IHJlY2VpdmluZyB0aGUgbWVzc2FnZS4KKyAgICAg Ki8KKyAgICBBU1NFUlQodiA9PSBjdXJyZW50KTsKKyAgICBpZiAoIG1zZy0+SGVhZGVyLk1lc3Nh Z2VUeXBlICE9IEh2TWVzc2FnZVR5cGVOb25lICkKKyAgICB7CisgICAgICAgIG1zZy0+SGVhZGVy Lk1lc3NhZ2VGbGFncy5NZXNzYWdlUGVuZGluZyA9IDE7CisgICAgICAgIF9fc2V0X2JpdChzaW50 eCwgJnZ2LT5tc2dfcGVuZGluZyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg ICBtc2ctPkhlYWRlci5NZXNzYWdlVHlwZSA9IEh2TWVzc2FnZVRpbWVyRXhwaXJlZDsKKyAgICBt c2ctPkhlYWRlci5NZXNzYWdlRmxhZ3MuTWVzc2FnZVBlbmRpbmcgPSAwOworICAgIG1zZy0+SGVh ZGVyLlBheWxvYWRTaXplID0gc2l6ZW9mKHBheWxvYWQpOworICAgIG1lbWNweShtc2ctPlBheWxv YWQsICZwYXlsb2FkLCBzaXplb2YocGF5bG9hZCkpOworCisgICAgaWYgKCAhdnMtPm1hc2sgKQor ICAgICAgICB2bGFwaWNfc2V0X2lycSh2Y3B1X3ZsYXBpYyh2KSwgdnMtPnZlY3RvciwgMCk7CisK KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCB2aXJpZGlhbl9zeW5pY19pc19hdXRvX2VvaV9z aW50KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92 aXJpZGlhbi90aW1lLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYwppbmRleCA3 MTI5MWQ5MjFjLi44M2I3ZDJjNjdmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Zpcmlk aWFuL3RpbWUuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3RpbWUuYwpAQCAtMTIs NiArMTIsNyBAQAogI2luY2x1ZGUgPHhlbi92ZXJzaW9uLmg+CiAKICNpbmNsdWRlIDxhc20vYXBp Yy5oPgorI2luY2x1ZGUgPGFzbS9ldmVudC5oPgogI2luY2x1ZGUgPGFzbS9odm0vc3VwcG9ydC5o PgogCiAjaW5jbHVkZSAicHJpdmF0ZS5oIgpAQCAtNzIsNiArNzMsNyBAQCBzdGF0aWMgdm9pZCB1 cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLCBib29sIGluaXRpYWxpemUpCiAg ICAgICogdGlja3MgcGVyIDEwMG5zIHNoaWZ0ZWQgbGVmdCBieSA2NC4KICAgICAgKi8KICAgICBw LT5Uc2NTY2FsZSA9ICgoMTAwMDB1bCA8PCAzMikgLyBkLT5hcmNoLnRzY19raHopIDw8IDMyOwor ICAgIHNtcF93bWIoKTsKIAogICAgIHAtPlRzY1NlcXVlbmNlKys7CiAgICAgaWYgKCBwLT5Uc2NT ZXF1ZW5jZSA9PSAweEZGRkZGRkZGIHx8CkBAIC0xMTgsMTggKzEyMCwyNjUgQEAgc3RhdGljIGlu dDY0X3QgdGltZV9yZWZfY291bnQoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4g cmF3X3RyY192YWwoZCkgKyB0cmMtPm9mZjsKIH0KIAorLyoKKyAqIFRoZSBzcGVjaWZpY2F0aW9u IHNheXM6ICJUaGUgcGFydGl0aW9uIHJlZmVyZW5jZSB0aW1lIGlzIGNvbXB1dGVkCisgKiBieSB0 aGUgZm9sbG93aW5nIGZvcm11bGE6CisgKgorICogUmVmZXJlbmNlVGltZSA9ICgoVmlydHVhbFRz YyAqIFRzY1NjYWxlKSA+PiA2NCkgKyBUc2NPZmZzZXQKKyAqCisgKiBUaGUgbXVsdGlwbGljYXRp b24gaXMgYSA2NCBiaXQgbXVsdGlwbGljYXRpb24sIHdoaWNoIHJlc3VsdHMgaW4gYQorICogMTI4 IGJpdCBudW1iZXIgd2hpY2ggaXMgdGhlbiBzaGlmdGVkIDY0IHRpbWVzIHRvIHRoZSByaWdodCB0 byBvYnRhaW4KKyAqIHRoZSBoaWdoIDY0IGJpdHMuIgorICovCitzdGF0aWMgdWludDY0X3Qgc2Nh bGVfdHNjKHVpbnQ2NF90IHRzYywgdWludDY0X3Qgc2NhbGUsIHVpbnQ2NF90IG9mZnNldCkKK3sK KyAgICB1aW50NjRfdCByZXN1bHQ7CisKKyAgICAvKgorICAgICAqIFF1YWR3b3JkIE1VTCB0YWtl cyBhbiBpbXBsaWNpdCBvcGVyYW5kIGluIFJBWCwgYW5kIHB1dHMgdGhlIHJlc3VsdAorICAgICAq IGluIFJEWDpSQVguIEJlY2F1c2Ugd2Ugb25seSB3YW50IHRoZSByZXN1bHQgb2YgdGhlIG11bHRp cGxpY2F0aW9uCisgICAgICogYWZ0ZXIgc2hpZnRpbmcgcmlnaHQgYnkgNjQgYml0cywgd2UgdGhl cmVmb3JlIG9ubHkgbmVlZCB0aGUgY29udGVudAorICAgICAqIG9mIFJEWC4KKyAgICAgKi8KKyAg ICBhc20gKCAibXVscSAlW3NjYWxlXSIKKyAgICAgICAgICA6ICIrYSIgKHRzYyksICI9ZCIgKHJl c3VsdCkKKyAgICAgICAgICA6IFtzY2FsZV0gInJtIiAoc2NhbGUpICk7CisKKyAgICByZXR1cm4g cmVzdWx0ICsgb2Zmc2V0OworfQorCitzdGF0aWMgdWludDY0X3QgdGltZV9ub3coc3RydWN0IGRv bWFpbiAqZCkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgdmlyaWRpYW5fcGFnZSAqcnQgPSAmZC0+YXJj aC5odm0udmlyaWRpYW4tPnJlZmVyZW5jZV90c2M7CisgICAgSFZfUkVGRVJFTkNFX1RTQ19QQUdF ICpwID0gcnQtPnB0cjsKKyAgICB1aW50MzJfdCBzdGFydCwgZW5kOworICAgIHVpbnQ2NF90IHRz YzsKKyAgICB1aW50NjRfdCBzY2FsZTsKKyAgICB1aW50NjRfdCBvZmZzZXQ7CisKKyAgICAvKgor ICAgICAqIElmIHRoZSByZWZlcmVuY2UgVFNDIHBhZ2UgaXMgbm90IGVuYWJsZWQsIG9yIGhhcyBi ZWVuIGludmFsaWRhdGVkCisgICAgICogZmFsbCBiYWNrIHRvIHRoZSBwYXJ0aXRpb24gcmVmZXJl bmNlIGNvdW50ZXIuCisgICAgICovCisgICAgaWYgKCAhcCB8fCAhcC0+VHNjU2VxdWVuY2UgKQor ICAgICAgICByZXR1cm4gdGltZV9yZWZfY291bnQoZCk7CisKKyAgICAvKgorICAgICAqIFRoZSBm b2xsb3dpbmcgc2FtcGxpbmcgYWxnb3JpdGhtIGZvciB0c2MsIHNjYWxlIGFuZCBvZmZzZXQgaXMK KyAgICAgKiBkb2N1bWVudGVkIGluIHRoZSBzcGVjaWZpY3Rpb24uCisgICAgICovCisgICAgZG8g eworICAgICAgICBzdGFydCA9IHAtPlRzY1NlcXVlbmNlOworICAgICAgICBzbXBfcm1iKCk7CisK KyAgICAgICAgdHNjID0gcmR0c2MoKTsKKyAgICAgICAgc2NhbGUgPSBwLT5Uc2NTY2FsZTsKKyAg ICAgICAgb2Zmc2V0ID0gcC0+VHNjT2Zmc2V0OworCisgICAgICAgIHNtcF9ybWIoKTsKKyAgICAg ICAgZW5kID0gcC0+VHNjU2VxdWVuY2U7CisgICAgfSB3aGlsZSAoZW5kICE9IHN0YXJ0KTsKKwor ICAgIHJldHVybiBzY2FsZV90c2ModHNjLCBzY2FsZSwgb2Zmc2V0KTsKK30KKworc3RhdGljIHZv aWQgc3RvcF9zdGltZXIoc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMpCit7CisgICAgY29uc3Qg c3RydWN0IHZjcHUgKnYgPSB2cy0+djsKKyAgICBzdHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2 LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAgICB1bnNpZ25lZCBpbnQgc3RpbWVyeCA9IHZzIC0gJnZ2 LT5zdGltZXJbMF07CisKKyAgICBpZiAoICF2cy0+c3RhcnRlZCApCisgICAgICAgIHJldHVybjsK KworICAgIHN0b3BfdGltZXIoJnZzLT50aW1lcik7CisgICAgY2xlYXJfYml0KHN0aW1lcngsICZ2 di0+c3RpbWVyX3BlbmRpbmcpOworICAgIHZzLT5zdGFydGVkID0gZmFsc2U7Cit9CisKK3N0YXRp YyB2b2lkIHN0aW1lcl9leHBpcmUodm9pZCAqZGF0YSkKK3sKKyAgICBjb25zdCBzdHJ1Y3Qgdmly aWRpYW5fc3RpbWVyICp2cyA9IGRhdGE7CisgICAgc3RydWN0IHZjcHUgKnYgPSB2cy0+djsKKyAg ICBzdHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAgICB1 bnNpZ25lZCBpbnQgc3RpbWVyeCA9IHZzIC0gJnZ2LT5zdGltZXJbMF07CisKKyAgICBpZiAoICF2 cy0+Y29uZmlnLmZpZWxkcy5lbmFibGVkICkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0X2Jp dChzdGltZXJ4LCAmdnYtPnN0aW1lcl9wZW5kaW5nKTsKKyAgICB2Y3B1X2tpY2sodik7Cit9CisK K3N0YXRpYyB2b2lkIHN0YXJ0X3N0aW1lcihzdHJ1Y3QgdmlyaWRpYW5fc3RpbWVyICp2cykKK3sK KyAgICBjb25zdCBzdHJ1Y3QgdmNwdSAqdiA9IHZzLT52OworICAgIHN0cnVjdCB2aXJpZGlhbl92 Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOworICAgIHVuc2lnbmVkIGludCBzdGltZXJ4 ID0gdnMgLSAmdnYtPnN0aW1lclswXTsKKyAgICBpbnQ2NF90IG5vdyA9IHRpbWVfbm93KHYtPmRv bWFpbik7CisgICAgc190aW1lX3QgdGltZW91dDsKKworICAgIGlmICggIXRlc3RfYW5kX3NldF9i aXQoc3RpbWVyeCwgJnZ2LT5zdGltZXJfZW5hYmxlZCkgKQorICAgICAgICBwcmludGsoWEVOTE9H X0dfSU5GTyAiJXB2OiBWSVJJRElBTiBTVElNRVIldTogZW5hYmxlZFxuIiwgdiwKKyAgICAgICAg ICAgICAgIHN0aW1lcngpOworCisgICAgaWYgKCB2cy0+Y29uZmlnLmZpZWxkcy5wZXJpb2RpYyAp CisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgbWlzc2VkID0gMDsKKyAgICAgICAgaW50NjRf dCBuZXh0OworCisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMg dGhhdCBpZiB0aGUgdGltZXIgaXMgbGF6eSB0aGVuIHdlCisgICAgICAgICAqIHNraXAgb3ZlciBh bnkgbWlzc2VkIGV4cGlyYXRpb25zIHNvIHdlIGNhbiB0cmVhdCB0aGlzIGNhc2UKKyAgICAgICAg ICogYXMgdGhlIHNhbWUgYXMgaWYgdGhlIHRpbWVyIGlzIGN1cnJlbnRseSBzdG9wcGVkLCBpLmUu IHdlCisgICAgICAgICAqIGp1c3Qgc2NoZWR1bGUgZXhwaXJhdGlvbiB0byBiZSAnY291bnQnIHRp Y2tzIGZyb20gbm93LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAhdnMtPnN0YXJ0ZWQgfHwg dnMtPmNvbmZpZy5maWVsZHMubGF6eSApCisgICAgICAgICAgICBuZXh0ID0gbm93ICsgdnMtPmNv dW50OworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg ICAgKiBUaGUgdGltZXIgaXMgYWxyZWFkeSBzdGFydGVkLCBzbyB3ZSdyZSByZS1zY2hlZHVsaW5n LgorICAgICAgICAgICAgICogSGVuY2UgYWR2YW5jZSB0aGUgdGltZXIgZXhwaXJhdGlvbiBieSBv bmUgdGljay4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbmV4dCA9IHZzLT5leHBpcmF0 aW9uICsgdnMtPmNvdW50OworCisgICAgICAgICAgICAvKiBOb3cgY2hlY2sgdG8gc2VlIGlmIGFu eSBleHBpcmF0aW9ucyBoYXZlIGJlZW4gbWlzc2VkICovCisgICAgICAgICAgICBpZiAoIG5vdyAt IG5leHQgPiAwICkKKyAgICAgICAgICAgICAgICBtaXNzZWQgPSAobm93IC0gbmV4dCkgLyB2cy0+ Y291bnQ7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBUaGUgc3BlY2lmaWNhdGlv biBzYXlzIHRoYXQgaWYgdGhlIHRpbWVyIGlzIG5vdCBsYXp5IHRoZW4KKyAgICAgICAgICAgICAq IGEgbm9uLXplcm8gbWlzc2VkIGNvdW50IHNob3VsZCBiZSB1c2VkIHRvIHJlZHVjZSB0aGUgcGVy aW9kCisgICAgICAgICAgICAgKiBvZiB0aGUgdGltZXIgdW50aWwgaXQgY2F0Y2hlcyB1cCwgdW5s ZXNzIHRoZSBjb3VudCBoYXMKKyAgICAgICAgICAgICAqIHJlYWNoZWQgYSAnc2lnbmlmaWNhbnQg bnVtYmVyJywgaW4gd2hpY2ggY2FzZSB0aGUgdGltZXIKKyAgICAgICAgICAgICAqIHNob3VsZCBi ZSB0cmVhdGVkIGFzIGxhenkuIFVuZm9ydHVuYXRlbHkgdGhlIHNwZWNpZmljYXRpb24KKyAgICAg ICAgICAgICAqIGRvZXMgbm90IHN0YXRlIHdoYXQgdGhhdCBudW1iZXIgaXMgc28gdGhlIGNob2lj ZSBvZiBudW1iZXIKKyAgICAgICAgICAgICAqIGhlcmUgaXMgYSBwdXJlIGd1ZXNzLgorICAgICAg ICAgICAgICovCisgICAgICAgICAgICBpZiAoIG1pc3NlZCA+IDMgKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIG1pc3NlZCA9IDA7CisgICAgICAgICAgICAgICAgbmV4dCA9IG5vdyAr IHZzLT5jb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZzLT5leHBp cmF0aW9uID0gbmV4dDsKKyAgICAgICAgdGltZW91dCA9ICgobmV4dCAtIG5vdykgKiAxMDB1bGwp IC8gKG1pc3NlZCArIDEpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB2cy0+ZXhw aXJhdGlvbiA9IHZzLT5jb3VudDsKKyAgICAgICAgaWYgKCB2cy0+Y291bnQgLSBub3cgPD0gMCAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHNldF9iaXQoc3RpbWVyeCwgJnZ2LT5zdGltZXJfcGVu ZGluZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aW1lb3V0 ID0gKHZzLT5leHBpcmF0aW9uIC0gbm93KSAqIDEwMHVsbDsKKyAgICB9CisKKyAgICB2cy0+c3Rh cnRlZCA9IHRydWU7CisgICAgbWlncmF0ZV90aW1lcigmdnMtPnRpbWVyLCBzbXBfcHJvY2Vzc29y X2lkKCkpOworICAgIHNldF90aW1lcigmdnMtPnRpbWVyLCB0aW1lb3V0ICsgTk9XKCkpOworfQor CitzdGF0aWMgdm9pZCBwb2xsX3N0aW1lcihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHN0 aW1lcngpCit7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmly aWRpYW47CisgICAgc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMgPSAmdnYtPnN0aW1lcltzdGlt ZXJ4XTsKKworICAgIGlmICggIXRlc3RfYml0KHN0aW1lcngsICZ2di0+c3RpbWVyX3BlbmRpbmcp ICkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCAhdmlyaWRpYW5fc3luaWNfZGVsaXZlcl90 aW1lcl9tc2codiwgdnMtPmNvbmZpZy5maWVsZHMuc2ludHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RpbWVyeCwgdnMtPmV4cGlyYXRpb24sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9ub3codi0+ZG9tYWluKSkg KQorICAgICAgICByZXR1cm47CisKKyAgICBjbGVhcl9iaXQoc3RpbWVyeCwgJnZ2LT5zdGltZXJf cGVuZGluZyk7CisKKyAgICBpZiAoIHZzLT5jb25maWcuZmllbGRzLnBlcmlvZGljICkKKyAgICAg ICAgc3RhcnRfc3RpbWVyKHZzKTsKKyAgICBlbHNlCisgICAgICAgIHZzLT5jb25maWcuZmllbGRz LmVuYWJsZWQgPSAwOworfQorCit2b2lkIHZpcmlkaWFuX3RpbWVfcG9sbF90aW1lcnMoc3RydWN0 IHZjcHUgKnYpCit7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0u dmlyaWRpYW47CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBpZiAoICF2di0+c3RpbWVyX3Bl bmRpbmcgKQorICAgICAgIHJldHVybjsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0la RSh2di0+c3RpbWVyKTsgaSsrICkKKyAgICAgICAgcG9sbF9zdGltZXIodiwgaSk7Cit9CisKK3Zv aWQgdmlyaWRpYW5fdGltZV92Y3B1X2ZyZWV6ZShzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICBzdHJ1 Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAgICB1bnNpZ25l ZCBpbnQgaTsKKworICAgIGlmICggIWlzX3ZpcmlkaWFuX3ZjcHUodikgKQorICAgICAgICByZXR1 cm47CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodnYtPnN0aW1lcik7IGkrKyAp CisgICAgeworICAgICAgICBzdHJ1Y3QgdmlyaWRpYW5fc3RpbWVyICp2cyA9ICZ2di0+c3RpbWVy W2ldOworCisgICAgICAgIGlmICggdnMtPnN0YXJ0ZWQgKQorICAgICAgICAgICAgc3RvcF90aW1l cigmdnMtPnRpbWVyKTsKKyAgICB9Cit9CisKK3ZvaWQgdmlyaWRpYW5fdGltZV92Y3B1X3RoYXco c3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJj aC5odm0udmlyaWRpYW47CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBpZiAoICFpc192aXJp ZGlhbl92Y3B1KHYpICkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICggaSA9IDA7IGkgPCBB UlJBWV9TSVpFKHZ2LT5zdGltZXIpOyBpKysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHZpcmlk aWFuX3N0aW1lciAqdnMgPSAmdnYtPnN0aW1lcltpXTsKKworICAgICAgICBpZiAoIHZzLT5jb25m aWcuZmllbGRzLmVuYWJsZWQgKQorICAgICAgICAgICAgc3RhcnRfc3RpbWVyKHZzKTsKKyAgICB9 Cit9CisKIHZvaWQgdmlyaWRpYW5fdGltZV9kb21haW5fZnJlZXplKGNvbnN0IHN0cnVjdCBkb21h aW4gKmQpCiB7CisgICAgc3RydWN0IHZjcHUgKnY7CisKKyAgICBpZiAoICFpc192aXJpZGlhbl9k b21haW4oZCkgKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiAp CisgICAgICAgIHZpcmlkaWFuX3RpbWVfdmNwdV9mcmVlemUodik7CisKICAgICB0aW1lX3JlZl9j b3VudF9mcmVlemUoZCk7CiB9CiAKIHZvaWQgdmlyaWRpYW5fdGltZV9kb21haW5fdGhhdyhjb25z dCBzdHJ1Y3QgZG9tYWluICpkKQogeworICAgIHN0cnVjdCB2Y3B1ICp2OworCisgICAgaWYgKCAh aXNfdmlyaWRpYW5fZG9tYWluKGQpICkKKyAgICAgICAgcmV0dXJuOworCiAgICAgdGltZV9yZWZf Y291bnRfdGhhdyhkKTsKKworICAgIGZvcl9lYWNoX3ZjcHUgKCBkLCB2ICkKKyAgICAgICAgdmly aWRpYW5fdGltZV92Y3B1X3RoYXcodik7CiB9CiAKIGludCB2aXJpZGlhbl90aW1lX3dybXNyKHN0 cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbCkKIHsKKyAgICBzdHJ1Y3Qg dmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKICAgICBzdHJ1Y3QgZG9t YWluICpkID0gdi0+ZG9tYWluOwogICAgIHN0cnVjdCB2aXJpZGlhbl9kb21haW4gKnZkID0gZC0+ YXJjaC5odm0udmlyaWRpYW47CiAKQEAgLTE0OSw2ICszOTgsNjMgQEAgaW50IHZpcmlkaWFuX3Rp bWVfd3Jtc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQogICAg ICAgICB9CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBIVl9YNjRfTVNSX1RJTUVfUkVGX0NP VU5UOgorICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CisKKyAgICBjYXNlIEhWX1g2 NF9NU1JfU1RJTUVSMF9DT05GSUc6CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjFfQ09ORklH OgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIyX0NPTkZJRzoKKyAgICBjYXNlIEhWX1g2NF9N U1JfU1RJTUVSM19DT05GSUc6CisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc3RpbWVyeCA9 CisgICAgICAgICAgICBhcnJheV9pbmRleF9ub3NwZWMoKGlkeCAtIEhWX1g2NF9NU1JfU1RJTUVS MF9DT05GSUcpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpF KHZ2LT5zdGltZXIpKTsKKyAgICAgICAgc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMgPSAmdnYt PnN0aW1lcltzdGltZXJ4XTsKKworICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNr KGQpICYgSFZNUFZfc3RpbWVyKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJ T047CisKKyAgICAgICAgc3RvcF9zdGltZXIodnMpOworCisgICAgICAgIHZzLT5jb25maWcucmF3 ID0gdmFsOworCisgICAgICAgIGlmICggIXZzLT5jb25maWcuZmllbGRzLnNpbnR4ICkKKyAgICAg ICAgICAgIHZzLT5jb25maWcuZmllbGRzLmVuYWJsZWQgPSAwOworCisgICAgICAgIGlmICggdnMt PmNvbmZpZy5maWVsZHMuZW5hYmxlZCApCisgICAgICAgICAgICBzdGFydF9zdGltZXIodnMpOwor CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIwX0NP VU5UOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPVU5UOgorICAgIGNhc2UgSFZfWDY0 X01TUl9TVElNRVIyX0NPVU5UOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIzX0NPVU5UOgor ICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0aW1lcnggPQorICAgICAgICAgICAgYXJyYXlf aW5kZXhfbm9zcGVjKChpZHggLSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHKSAvIDIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRSh2di0+c3RpbWVyKSk7CisgICAg ICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGltZXJbc3RpbWVyeF07CisK KyAgICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3N0aW1lcikg KQorICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgICAgIHN0b3Bf c3RpbWVyKHZzKTsKKworICAgICAgICB2cy0+Y291bnQgPSB2YWw7CisKKyAgICAgICAgaWYgKCAh dnMtPmNvdW50ICApCisgICAgICAgICAgICB2cy0+Y29uZmlnLmZpZWxkcy5lbmFibGVkID0gMDsK KyAgICAgICAgZWxzZSBpZiAoIHZzLT5jb25maWcuZmllbGRzLmF1dG9fZW5hYmxlICkKKyAgICAg ICAgICAgIHZzLT5jb25maWcuZmllbGRzLmVuYWJsZWQgPSAxOworCisgICAgICAgIGlmICggdnMt PmNvbmZpZy5maWVsZHMuZW5hYmxlZCApCisgICAgICAgICAgICBzdGFydF9zdGltZXIodnMpOwor CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGdkcHJpbnRr KFhFTkxPR19JTkZPLCAiJXM6IHVuaW1wbGVtZW50ZWQgTVNSICUjeCAoJTAxNiJQUkl4NjQiKVxu IiwKICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGlkeCwgdmFsKTsKQEAgLTE2MCw2ICs0NjYs NyBAQCBpbnQgdmlyaWRpYW5fdGltZV93cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4 LCB1aW50NjRfdCB2YWwpCiAKIGludCB2aXJpZGlhbl90aW1lX3JkbXNyKGNvbnN0IHN0cnVjdCB2 Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpCiB7CisgICAgc3RydWN0IHZpcmlk aWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47CiAgICAgY29uc3Qgc3RydWN0IGRv bWFpbiAqZCA9IHYtPmRvbWFpbjsKICAgICBzdHJ1Y3QgdmlyaWRpYW5fZG9tYWluICp2ZCA9IGQt PmFyY2guaHZtLnZpcmlkaWFuOwogCkBAIC0yMDEsNiArNTA4LDM3IEBAIGludCB2aXJpZGlhbl90 aW1lX3JkbXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2 YWwpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIw X0NPTkZJRzoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMV9DT05GSUc6CisgICAgY2FzZSBI Vl9YNjRfTVNSX1NUSU1FUjJfQ09ORklHOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIzX0NP TkZJRzoKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGltZXJ4ID0KKyAgICAgICAgICAg IGFycmF5X2luZGV4X25vc3BlYygoaWR4IC0gSFZfWDY0X01TUl9TVElNRVIwX0NPTkZJRykgLyAy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUodnYtPnN0aW1lcikp OzsKKworICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3Rp bWVyKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CisKKyAgICAgICAg KnZhbCA9IHZ2LT5zdGltZXJbc3RpbWVyeF0uY29uZmlnLnJhdzsKKyAgICAgICAgYnJlYWs7Cisg ICAgfQorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIwX0NPVU5UOgorICAgIGNhc2UgSFZfWDY0 X01TUl9TVElNRVIxX0NPVU5UOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIyX0NPVU5UOgor ICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIzX0NPVU5UOgorICAgIHsKKyAgICAgICAgdW5zaWdu ZWQgaW50IHN0aW1lcnggPQorICAgICAgICAgICAgYXJyYXlfaW5kZXhfbm9zcGVjKChpZHggLSBI Vl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQVJSQVlfU0laRSh2di0+c3RpbWVyKSk7OworCisgICAgICAgIGlmICggISh2aXJpZGlh bl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9zdGltZXIpICkKKyAgICAgICAgICAgIHJldHVybiBY ODZFTVVMX0VYQ0VQVElPTjsKKworICAgICAgICAqdmFsID0gdnYtPnN0aW1lcltzdGltZXJ4XS5j b3VudDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgZ2Rw cmludGsoWEVOTE9HX0lORk8sICIlczogdW5pbXBsZW1lbnRlZCBNU1IgJSN4XG4iLCBfX2Z1bmNf XywgaWR4KTsKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwpAQCAtMjA5LDggKzU0 NywxOSBAQCBpbnQgdmlyaWRpYW5fdGltZV9yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWlu dDMyX3QgaWR4LCB1aW50NjRfdCAqdmFsKQogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiB9CiAK LWludCB2aXJpZGlhbl90aW1lX3ZjcHVfaW5pdChjb25zdCBzdHJ1Y3QgdmNwdSAqdikKK2ludCB2 aXJpZGlhbl90aW1lX3ZjcHVfaW5pdChzdHJ1Y3QgdmNwdSAqdikKIHsKKyAgICBzdHJ1Y3Qgdmly aWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAgICB1bnNpZ25lZCBpbnQg aTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2di0+c3RpbWVyKTsgaSsrICkK KyAgICB7CisgICAgICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGltZXJb aV07CisKKyAgICAgICAgdnMtPnYgPSB2OworICAgICAgICBpbml0X3RpbWVyKCZ2cy0+dGltZXIs IHN0aW1lcl9leHBpcmUsIHZzLCB2LT5wcm9jZXNzb3IpOworICAgIH0KKwogICAgIHJldHVybiAw OwogfQogCkBAIC0yMjEsNiArNTcwLDE2IEBAIGludCB2aXJpZGlhbl90aW1lX2RvbWFpbl9pbml0 KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCiAKIHZvaWQgdmlyaWRpYW5fdGltZV92Y3B1X2RlaW5p dChjb25zdCBzdHJ1Y3QgdmNwdSAqdikKIHsKKyAgICBzdHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYg PSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAo IGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2di0+c3RpbWVyKTsgaSsrICkKKyAgICB7CisgICAgICAg IHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGltZXJbaV07CisKKyAgICAgICAg a2lsbF90aW1lcigmdnMtPnRpbWVyKTsKKyAgICAgICAgdnMtPnYgPSBOVUxMOworICAgIH0KIH0K IAogdm9pZCB2aXJpZGlhbl90aW1lX2RvbWFpbl9kZWluaXQoY29uc3Qgc3RydWN0IGRvbWFpbiAq ZCkKQEAgLTIzMSwxMSArNTkwLDM2IEBAIHZvaWQgdmlyaWRpYW5fdGltZV9kb21haW5fZGVpbml0 KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCiB2b2lkIHZpcmlkaWFuX3RpbWVfc2F2ZV92Y3B1X2N0 eHQoCiAgICAgY29uc3Qgc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9j b250ZXh0ICpjdHh0KQogeworICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2gu aHZtLnZpcmlkaWFuOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgQlVJTERfQlVHX09OKEFS UkFZX1NJWkUodnYtPnN0aW1lcikgIT0KKyAgICAgICAgICAgICAgICAgQVJSQVlfU0laRShjdHh0 LT5zdGltZXJfY29uZmlnX21zcikpOworICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHZ2LT5z dGltZXIpICE9CisgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoY3R4dC0+c3RpbWVyX2NvdW50 X21zcikpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZ2LT5zdGltZXIpOyBp KysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMgPSAmdnYtPnN0 aW1lcltpXTsKKworICAgICAgICBjdHh0LT5zdGltZXJfY29uZmlnX21zcltpXSA9IHZzLT5jb25m aWcucmF3OworICAgICAgICBjdHh0LT5zdGltZXJfY291bnRfbXNyW2ldID0gdnMtPmNvdW50Owor ICAgIH0KIH0KIAogdm9pZCB2aXJpZGlhbl90aW1lX2xvYWRfdmNwdV9jdHh0KAogICAgIHN0cnVj dCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCAqY3R4dCkK IHsKKyAgICBzdHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsK KyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2 di0+c3RpbWVyKTsgaSsrICkKKyAgICB7CisgICAgICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIg KnZzID0gJnZ2LT5zdGltZXJbaV07CisKKyAgICAgICAgdnMtPmNvbmZpZy5yYXcgPSBjdHh0LT5z dGltZXJfY29uZmlnX21zcltpXTsKKyAgICAgICAgdnMtPmNvdW50ID0gY3R4dC0+c3RpbWVyX2Nv dW50X21zcltpXTsKKyAgICB9CiB9CiAKIHZvaWQgdmlyaWRpYW5fdGltZV9zYXZlX2RvbWFpbl9j dHh0KApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jIGIv eGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jCmluZGV4IDY3ZDAxMjE5MjQuLmVj NzljZDlmMTUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4u YworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMKQEAgLTE4MSw2ICsx ODEsOCBAQCB2b2lkIGNwdWlkX3ZpcmlkaWFuX2xlYXZlcyhjb25zdCBzdHJ1Y3QgdmNwdSAqdiwg dWludDMyX3QgbGVhZiwKICAgICAgICAgICAgIG1hc2suQWNjZXNzUGFydGl0aW9uUmVmZXJlbmNl VHNjID0gMTsKICAgICAgICAgaWYgKCB2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9z eW5pYyApCiAgICAgICAgICAgICBtYXNrLkFjY2Vzc1N5bmljUmVncyA9IDE7CisgICAgICAgIGlm ICggdmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3RpbWVyICkKKyAgICAgICAgICAg IG1hc2suQWNjZXNzU3ludGhldGljVGltZXJSZWdzID0gMTsKIAogICAgICAgICB1Lm1hc2sgPSBt YXNrOwogCkBAIC0zMjIsNiArMzI0LDE1IEBAIGludCBndWVzdF93cm1zcl92aXJpZGlhbihzdHJ1 Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpCiAgICAgY2FzZSBIVl9YNjRf TVNSX1RTQ19GUkVRVUVOQ1k6CiAgICAgY2FzZSBIVl9YNjRfTVNSX0FQSUNfRlJFUVVFTkNZOgog ICAgIGNhc2UgSFZfWDY0X01TUl9SRUZFUkVOQ0VfVFNDOgorICAgIGNhc2UgSFZfWDY0X01TUl9U SU1FX1JFRl9DT1VOVDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMF9DT05GSUc6CisgICAg Y2FzZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09VTlQ6CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1F UjFfQ09ORklHOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPVU5UOgorICAgIGNhc2Ug SFZfWDY0X01TUl9TVElNRVIyX0NPTkZJRzoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMl9D T1VOVDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSM19DT05GSUc6CisgICAgY2FzZSBIVl9Y NjRfTVNSX1NUSU1FUjNfQ09VTlQ6CiAgICAgICAgIHJldHVybiB2aXJpZGlhbl90aW1lX3dybXNy KHYsIGlkeCwgdmFsKTsKIAogICAgIGNhc2UgSFZfWDY0X01TUl9DUkFTSF9QMDoKQEAgLTQwMyw2 ICs0MTQsMTQgQEAgaW50IGd1ZXN0X3JkbXNyX3ZpcmlkaWFuKGNvbnN0IHN0cnVjdCB2Y3B1ICp2 LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpCiAgICAgY2FzZSBIVl9YNjRfTVNSX0FQSUNf RlJFUVVFTkNZOgogICAgIGNhc2UgSFZfWDY0X01TUl9SRUZFUkVOQ0VfVFNDOgogICAgIGNhc2Ug SFZfWDY0X01TUl9USU1FX1JFRl9DT1VOVDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMF9D T05GSUc6CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09VTlQ6CisgICAgY2FzZSBIVl9Y NjRfTVNSX1NUSU1FUjFfQ09ORklHOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPVU5U OgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIyX0NPTkZJRzoKKyAgICBjYXNlIEhWX1g2NF9N U1JfU1RJTUVSMl9DT1VOVDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSM19DT05GSUc6Cisg ICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjNfQ09VTlQ6CiAgICAgICAgIHJldHVybiB2aXJpZGlh bl90aW1lX3JkbXNyKHYsIGlkeCwgdmFsKTsKIAogICAgIGNhc2UgSFZfWDY0X01TUl9DUkFTSF9Q MDoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmggYi94ZW4v aW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCmluZGV4IDc0NDZiZTQ5MmIuLmM5Y2FiMzJl MDYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaApAQCAtNDAsNiArNDAsMzMgQEAgdW5p b24gdmlyaWRpYW5fc2ludF9tc3IKICAgICB9OwogfTsKIAordW5pb24gdmlyaWRpYW5fc3RpbWVy X2NvbmZpZ19tc3IKK3sKKyAgICB1aW50NjRfdCByYXc7CisgICAgc3RydWN0CisgICAgeworICAg ICAgICB1aW50NjRfdCBlbmFibGVkOjE7CisgICAgICAgIHVpbnQ2NF90IHBlcmlvZGljOjE7Cisg ICAgICAgIHVpbnQ2NF90IGxhenk6MTsKKyAgICAgICAgdWludDY0X3QgYXV0b19lbmFibGU6MTsK KyAgICAgICAgdWludDY0X3QgdmVjdG9yOjg7CisgICAgICAgIHVpbnQ2NF90IGRpcmVjdF9tb2Rl OjE7CisgICAgICAgIHVpbnQ2NF90IHJlc2VydmVkX3plcm8xOjM7CisgICAgICAgIHVpbnQ2NF90 IHNpbnR4OjQ7CisgICAgICAgIHVpbnQ2NF90IHJlc2VydmVkX3plcm8yOjQ0OworICAgIH0gZmll bGRzOworfTsKKworc3RydWN0IHZpcmlkaWFuX3N0aW1lciB7CisgICAgc3RydWN0IHZjcHUgKnY7 CisgICAgc3RydWN0IHRpbWVyIHRpbWVyOworICAgIHVuaW9uIHZpcmlkaWFuX3N0aW1lcl9jb25m aWdfbXNyIGNvbmZpZzsKKyAgICB1aW50NjRfdCBjb3VudDsKKyAgICB1aW50NjRfdCBleHBpcmF0 aW9uOworICAgIHNfdGltZV90IHRpbWVvdXQ7CisgICAgYm9vbCBzdGFydGVkOworfTsKKwogc3Ry dWN0IHZpcmlkaWFuX3ZjcHUKIHsKICAgICBzdHJ1Y3QgdmlyaWRpYW5fcGFnZSB2cF9hc3Npc3Q7 CkBAIC01MCw2ICs3Nyw5IEBAIHN0cnVjdCB2aXJpZGlhbl92Y3B1CiAgICAgdW5pb24gdmlyaWRp YW5fc2ludF9tc3Igc2ludFsxNl07CiAgICAgdWludDhfdCB2ZWN0b3JfdG9fc2ludHhbMjU2XTsK ICAgICB1bnNpZ25lZCBsb25nIG1zZ19wZW5kaW5nOworICAgIHN0cnVjdCB2aXJpZGlhbl9zdGlt ZXIgc3RpbWVyWzRdOworICAgIHVuc2lnbmVkIGxvbmcgc3RpbWVyX2VuYWJsZWQ7CisgICAgdW5z aWduZWQgbG9uZyBzdGltZXJfcGVuZGluZzsKICAgICB1aW50NjRfdCBjcmFzaF9wYXJhbVs1XTsK IH07CiAKQEAgLTExMiw3ICsxNDIsNyBAQCB2b2lkIHZpcmlkaWFuX2FwaWNfYXNzaXN0X2NsZWFy KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsKIAogYm9vbCB2aXJpZGlhbl9zeW5pY19pc19hdXRvX2Vv aV9zaW50KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IpOwotdm9pZCB2aXJpZGlhbl9zeW5pY19wb2xs X21lc3NhZ2VzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsKK3ZvaWQgdmlyaWRpYW5fc3luaWNfcG9s bF9tZXNzYWdlcyhzdHJ1Y3QgdmNwdSAqdik7CiB2b2lkIHZpcmlkaWFuX3N5bmljX2Fja19zaW50 KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgdmVjdG9yKTsKIAogI2VuZGlmIC8q IF9fQVNNX1g4Nl9IVk1fVklSSURJQU5fSF9fICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9w dWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9o dm0vc2F2ZS5oCmluZGV4IGVjM2U0ZGYxMmMuLjgzNDRhYTQ3MWYgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oCisrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9hcmNoLXg4Ni9odm0vc2F2ZS5oCkBAIC02MDQsNiArNjA0LDggQEAgc3RydWN0IGh2bV92aXJp ZGlhbl92Y3B1X2NvbnRleHQgewogICAgIHVpbnQ4X3QgIF9wYWRbN107CiAgICAgdWludDY0X3Qg c2ltcF9tc3I7CiAgICAgdWludDY0X3Qgc2ludF9tc3JbMTZdOworICAgIHVpbnQ2NF90IHN0aW1l cl9jb25maWdfbXNyWzRdOworICAgIHVpbnQ2NF90IHN0aW1lcl9jb3VudF9tc3JbNF07CiB9Owog CiBERUNMQVJFX0hWTV9TQVZFX1RZUEUoVklSSURJQU5fVkNQVSwgMTcsIHN0cnVjdCBodm1fdmly aWRpYW5fdmNwdV9jb250ZXh0KTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0v cGFyYW1zLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oCmluZGV4IGU3ZTNjN2M4 OTIuLmUwNmIwOTQyZDAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vcGFyYW1z LmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaApAQCAtMTUwLDYgKzE1MCwx MCBAQAogI2RlZmluZSBfSFZNUFZfc3luaWMgNwogI2RlZmluZSBIVk1QVl9zeW5pYyAoMSA8PCBf SFZNUFZfc3luaWMpCiAKKy8qIEVuYWJsZSBTVElNRVIgTVNScyAqLworI2RlZmluZSBfSFZNUFZf c3RpbWVyIDgKKyNkZWZpbmUgSFZNUFZfc3RpbWVyICgxIDw8IF9IVk1QVl9zdGltZXIpCisKICNk ZWZpbmUgSFZNUFZfZmVhdHVyZV9tYXNrIFwKICAgICAgICAgKEhWTVBWX2Jhc2VfZnJlcSB8IFwK ICAgICAgICAgIEhWTVBWX25vX2ZyZXEgfCBcCkBAIC0xNTgsNyArMTYyLDggQEAKICAgICAgICAg IEhWTVBWX2hjYWxsX3JlbW90ZV90bGJfZmx1c2ggfCBcCiAgICAgICAgICBIVk1QVl9hcGljX2Fz c2lzdCB8IFwKICAgICAgICAgIEhWTVBWX2NyYXNoX2N0bCB8IFwKLSAgICAgICAgIEhWTVBWX3N5 bmljKQorICAgICAgICAgSFZNUFZfc3luaWMgfCBcCisgICAgICAgICBIVk1QVl9zdGltZXIpCiAK ICNlbmRpZgogCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs