From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v5 10/11] viridian: add implementation of synthetic timers Date: Mon, 11 Mar 2019 13:41:31 +0000 Message-ID: <20190311134132.20536-11-paul.durrant@citrix.com> References: <20190311134132.20536-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 1h3LR7-00021O-CT for xen-devel@lists.xenproject.org; Mon, 11 Mar 2019 13:57:49 +0000 In-Reply-To: <20190311134132.20536-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 Um9nZXIgUGF1IE1vbm7DqSIgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgoKdjU6CiAtIEZpeCB0aW1l X25vdygpIHRvIHJlYWQgVFNDIGFzIHRoZSBndWVzdCB3b3VsZCBzZWUgaXQKCnY0OgogLSBBZGRy ZXNzIGNvbW1lbnRzIGZyb20gSmFuCgp2MzoKIC0gUmUtd29ya2VkIG1pc3NlZCB0aWNrcyBjYWxj dWxhdGlvbgotLS0KIGRvY3MvbWFuL3hsLmNmZy41LnBvZC5pbiAgICAgICAgICAgICAgIHwgIDEy ICstCiB0b29scy9saWJ4bC9saWJ4bC5oICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiB0b29s cy9saWJ4bC9saWJ4bF9kb20uYyAgICAgICAgICAgICAgICB8ICAgNCArCiB0b29scy9saWJ4bC9s aWJ4bF90eXBlcy5pZGwgICAgICAgICAgICB8ICAgMSArCiB4ZW4vYXJjaC94ODYvaHZtL3Zpcmlk aWFuL3ByaXZhdGUuaCAgICB8ICAgOSArLQogeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9zeW5p Yy5jICAgICAgfCAgNTMgKysrLQogeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi90aW1lLmMgICAg ICAgfCAzODYgKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gveDg2L2h2bS92aXJp ZGlhbi92aXJpZGlhbi5jICAgfCAgMTkgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3Zpcmlk aWFuLmggICAgIHwgIDMyICstCiB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUu aCB8ICAgMiArCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oICAgICAgICB8ICAgNyAr LQogMTEgZmlsZXMgY2hhbmdlZCwgNTIzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jcy9tYW4veGwuY2ZnLjUucG9kLmluIGIvZG9jcy9tYW4veGwuY2ZnLjUu cG9kLmluCmluZGV4IGFkODFhZjFlZDguLjM1NWM2NTQ2OTMgMTAwNjQ0Ci0tLSBhL2RvY3MvbWFu L3hsLmNmZy41LnBvZC5pbgorKysgYi9kb2NzL21hbi94bC5jZmcuNS5wb2QuaW4KQEAgLTIxNjcs MTEgKzIxNjcsMTkgQEAgVGhpcyBncm91cCBpbmNvcnBvcmF0ZXMgdGhlIGNyYXNoIGNvbnRyb2wg TVNScy4gVGhlc2UgZW5saWdodGVubWVudHMKIGFsbG93IFdpbmRvd3MgdG8gd3JpdGUgY3Jhc2gg aW5mb3JtYXRpb24gc3VjaCB0aGF0IGl0IGNhbiBiZSBsb2dnZWQKIGJ5IFhlbi4KIAorPWl0ZW0g QjxzdGltZXI+CisKK1RoaXMgc2V0IGluY29ycG9yYXRlcyB0aGUgU3luSUMgYW5kIHN5bnRoZXRp YyB0aW1lciBNU1JzLiBXaW5kb3dzIHdpbGwKK3VzZSBzeW50aGV0aWMgdGltZXJzIGluIHByZWZl cmVuY2UgdG8gZW11bGF0ZWQgSFBFVCBmb3IgYSBzb3VyY2Ugb2YKK3RpY2tzIGFuZCBoZW5jZSBl bmFibGluZyB0aGlzIGdyb3VwIHdpbGwgZW5zdXJlIHRoYXQgdGlja3Mgd2lsbCBiZQorY29uc2lz dGVudCB3aXRoIHVzZSBvZiBhbiBlbmxpZ2h0ZW5lZCB0aW1lIHNvdXJjZSAoQjx0aW1lX3JlZl9j b3VudD4gb3IKK0I8cmVmZXJlbmNlX3RzYz4pLgorCiA9aXRlbSBCPGRlZmF1bHRzPgogCiBUaGlz IGlzIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGVuYWJsZXMgdGhlIGRlZmF1bHQgc2V0IG9mIGdyb3Vw cywgd2hpY2gKLWlzIGN1cnJlbnRseSB0aGUgQjxiYXNlPiwgQjxmcmVxPiwgQjx0aW1lX3JlZl9j b3VudD4sIEI8YXBpY19hc3Npc3Q+Ci1hbmQgQjxjcmFzaF9jdGw+IGdyb3Vwcy4KK2lzIGN1cnJl bnRseSB0aGUgQjxiYXNlPiwgQjxmcmVxPiwgQjx0aW1lX3JlZl9jb3VudD4sIEI8YXBpY19hc3Np c3Q+LAorQjxjcmFzaF9jdGw+IGFuZCBCPHN0aW1lcj4gZ3JvdXBzLgogCiA9aXRlbSBCPGFsbD4K IApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgK aW5kZXggYTkyM2EzODBkMy4uYzhmMjE5YjBkMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGli eGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0zMjQsNiArMzI0LDEyIEBACiAgKi8K ICNkZWZpbmUgTElCWExfSEFWRV9WSVJJRElBTl9TWU5JQyAxCiAKKy8qCisgKiBMSUJYTF9IQVZF X1ZJUklESUFOX1NUSU1FUiBpbmRpY2F0ZXMgdGhhdCB0aGUgJ3N0aW1lcicgdmFsdWUKKyAqIGlz IHByZXNlbnQgaW4gdGhlIHZpcmlkaWFuIGVubGlnaHRlbm1lbnQgZW51bWVyYXRpb24uCisgKi8K KyNkZWZpbmUgTElCWExfSEFWRV9WSVJJRElBTl9TVElNRVIgMQorCiAvKgogICogTElCWExfSEFW RV9CVUlMRElORk9fSFZNX0FDUElfTEFQVE9QX1NMQVRFIGluZGljYXRlcyB0aGF0CiAgKiBsaWJ4 bF9kb21haW5fYnVpbGRfaW5mbyBoYXMgdGhlIHUuaHZtLmFjcGlfbGFwdG9wX3NsYXRlIGZpZWxk LgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMgYi90b29scy9saWJ4bC9saWJ4 bF9kb20uYwppbmRleCBmYjc1OGQyYWMzLi4yZWUwZjgyZWU3IDEwMDY0NAotLS0gYS90b29scy9s aWJ4bC9saWJ4bF9kb20uYworKysgYi90b29scy9saWJ4bC9saWJ4bF9kb20uYwpAQCAtMjY5LDYg KzI2OSw3IEBAIHN0YXRpYyBpbnQgaHZtX3NldF92aXJpZGlhbl9mZWF0dXJlcyhsaWJ4bF9fZ2Mg KmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgbGlieGxfYml0bWFwX3NldCgmZW5saWdodGVu bWVudHMsIExJQlhMX1ZJUklESUFOX0VOTElHSFRFTk1FTlRfVElNRV9SRUZfQ09VTlQpOwogICAg ICAgICBsaWJ4bF9iaXRtYXBfc2V0KCZlbmxpZ2h0ZW5tZW50cywgTElCWExfVklSSURJQU5fRU5M SUdIVEVOTUVOVF9BUElDX0FTU0lTVCk7CiAgICAgICAgIGxpYnhsX2JpdG1hcF9zZXQoJmVubGln aHRlbm1lbnRzLCBMSUJYTF9WSVJJRElBTl9FTkxJR0hURU5NRU5UX0NSQVNIX0NUTCk7CisgICAg ICAgIGxpYnhsX2JpdG1hcF9zZXQoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9WSVJJRElBTl9FTkxJ R0hURU5NRU5UX1NUSU1FUik7CiAgICAgfQogCiAgICAgbGlieGxfZm9yX2VhY2hfc2V0X2JpdCh2 LCBpbmZvLT51Lmh2bS52aXJpZGlhbl9lbmFibGUpIHsKQEAgLTMyMCw2ICszMjEsOSBAQCBzdGF0 aWMgaW50IGh2bV9zZXRfdmlyaWRpYW5fZmVhdHVyZXMobGlieGxfX2djICpnYywgdWludDMyX3Qg ZG9taWQsCiAgICAgaWYgKGxpYnhsX2JpdG1hcF90ZXN0KCZlbmxpZ2h0ZW5tZW50cywgTElCWExf VklSSURJQU5fRU5MSUdIVEVOTUVOVF9TWU5JQykpCiAgICAgICAgIG1hc2sgfD0gSFZNUFZfc3lu aWM7CiAKKyAgICBpZiAobGlieGxfYml0bWFwX3Rlc3QoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9W SVJJRElBTl9FTkxJR0hURU5NRU5UX1NUSU1FUikpCisgICAgICAgIG1hc2sgfD0gSFZNUFZfdGlt ZV9yZWZfY291bnQgfCBIVk1QVl9zeW5pYyB8IEhWTVBWX3N0aW1lcjsKKwogICAgIGlmIChtYXNr ICE9IDAgJiYKICAgICAgICAgeGNfaHZtX3BhcmFtX3NldChDVFgtPnhjaCwKICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21pZCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVz LmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCA5ODYwYmNhZjVmLi4xY2Nl MjQ5ZGU0IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKKysrIGIvdG9v bHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC0yMzYsNiArMjM2LDcgQEAgbGlieGxfdmlyaWRp YW5fZW5saWdodGVubWVudCA9IEVudW1lcmF0aW9uKCJ2aXJpZGlhbl9lbmxpZ2h0ZW5tZW50Iiwg WwogICAgICg1LCAiYXBpY19hc3Npc3QiKSwKICAgICAoNiwgImNyYXNoX2N0bCIpLAogICAgICg3 LCAic3luaWMiKSwKKyAgICAoOCwgInN0aW1lciIpLAogICAgIF0pCiAKIGxpYnhsX2hkdHlwZSA9 IEVudW1lcmF0aW9uKCJoZHR5cGUiLCBbCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3Zp cmlkaWFuL3ByaXZhdGUuaCBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vcHJpdmF0ZS5oCmlu ZGV4IDk2YTc4NGI4NDAuLmMyNzJjMzRjZGEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v dmlyaWRpYW4vcHJpdmF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vcHJpdmF0 ZS5oCkBAIC03NCw2ICs3NCwxMSBAQAogaW50IHZpcmlkaWFuX3N5bmljX3dybXNyKHN0cnVjdCB2 Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbCk7CiBpbnQgdmlyaWRpYW5fc3luaWNf cmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgKnZhbCk7 CiAKK2Jvb2wgdmlyaWRpYW5fc3luaWNfZGVsaXZlcl90aW1lcl9tc2coc3RydWN0IHZjcHUgKnYs IHVuc2lnbmVkIGludCBzaW50eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCBleHBpcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBkZWxpdmVyeSk7CisKIGludCB2aXJpZGlhbl9zeW5pY192Y3B1X2lu aXQoY29uc3Qgc3RydWN0IHZjcHUgKnYpOwogaW50IHZpcmlkaWFuX3N5bmljX2RvbWFpbl9pbml0 KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpOwogCkBAIC05Myw3ICs5OCw5IEBAIHZvaWQgdmlyaWRp YW5fc3luaWNfbG9hZF9kb21haW5fY3R4dCgKIGludCB2aXJpZGlhbl90aW1lX3dybXNyKHN0cnVj dCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbCk7CiBpbnQgdmlyaWRpYW5fdGlt ZV9yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCAqdmFs KTsKIAotaW50IHZpcmlkaWFuX3RpbWVfdmNwdV9pbml0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsK K3ZvaWQgdmlyaWRpYW5fdGltZV9wb2xsX3RpbWVycyhzdHJ1Y3QgdmNwdSAqdik7CisKK2ludCB2 aXJpZGlhbl90aW1lX3ZjcHVfaW5pdChzdHJ1Y3QgdmNwdSAqdik7CiBpbnQgdmlyaWRpYW5fdGlt ZV9kb21haW5faW5pdChjb25zdCBzdHJ1Y3QgZG9tYWluICpkKTsKIAogdm9pZCB2aXJpZGlhbl90 aW1lX3ZjcHVfZGVpbml0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vdmlyaWRpYW4vc3luaWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4v c3luaWMuYwppbmRleCBmNDUxMGQzODI5Li5iNWYzYTc5NTU2IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlh bi9zeW5pYy5jCkBAIC0zNDAsOSArMzQwLDU4IEBAIHZvaWQgdmlyaWRpYW5fc3luaWNfZG9tYWlu X2RlaW5pdChjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQogewogfQogCi12b2lkIHZpcmlkaWFuX3N5 bmljX3BvbGxfbWVzc2FnZXMoY29uc3Qgc3RydWN0IHZjcHUgKnYpCit2b2lkIHZpcmlkaWFuX3N5 bmljX3BvbGxfbWVzc2FnZXMoc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgLyogVGhlcmUgYXJlIGN1 cnJlbnRseSBubyBtZXNzYWdlIHNvdXJjZXMgKi8KKyAgICB2aXJpZGlhbl90aW1lX3BvbGxfdGlt ZXJzKHYpOworfQorCitib29sIHZpcmlkaWFuX3N5bmljX2RlbGl2ZXJfdGltZXJfbXNnKHN0cnVj dCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgc2ludHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDY0X3QgZXhwaXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgZGVsaXZlcnkpCit7CisgICAgc3RydWN0IHZpcmlk aWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47CisgICAgY29uc3QgdW5pb24gdmly aWRpYW5fc2ludF9tc3IgKnZzID0gJnZ2LT5zaW50W3NpbnR4XTsKKyAgICBIVl9NRVNTQUdFICpt c2cgPSB2di0+c2ltcC5wdHI7CisgICAgc3RydWN0IHsKKyAgICAgICAgdWludDMyX3QgVGltZXJJ bmRleDsKKyAgICAgICAgdWludDMyX3QgUmVzZXJ2ZWQ7CisgICAgICAgIHVpbnQ2NF90IEV4cGly YXRpb25UaW1lOworICAgICAgICB1aW50NjRfdCBEZWxpdmVyeVRpbWU7CisgICAgfSBwYXlsb2Fk ID0geworICAgICAgICAuVGltZXJJbmRleCA9IGluZGV4LAorICAgICAgICAuRXhwaXJhdGlvblRp bWUgPSBleHBpcmF0aW9uLAorICAgICAgICAuRGVsaXZlcnlUaW1lID0gZGVsaXZlcnksCisgICAg fTsKKworICAgIGlmICggdGVzdF9iaXQoc2ludHgsICZ2di0+bXNnX3BlbmRpbmcpICkKKyAgICAg ICAgcmV0dXJuIGZhbHNlOworCisgICAgQlVJTERfQlVHX09OKHNpemVvZigqbXNnKSAhPSBIVl9N RVNTQUdFX1NJWkUpOworICAgIG1zZyArPSBzaW50eDsKKworICAgIC8qCisgICAgICogVG8gYXZv aWQgdXNpbmcgYW4gYXRvbWljIHRlc3QtYW5kLXNldCwgYW5kIGJhcnJpZXIgYmVmb3JlIGNhbGxp bmcKKyAgICAgKiB2bGFwaWNfc2V0X2lycSgpLCB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVk IGluIGNvbnRleHQgb2YgdGhlCisgICAgICogdmNwdSByZWNlaXZpbmcgdGhlIG1lc3NhZ2UuCisg ICAgICovCisgICAgQVNTRVJUKHYgPT0gY3VycmVudCk7CisgICAgaWYgKCBtc2ctPkhlYWRlci5N ZXNzYWdlVHlwZSAhPSBIdk1lc3NhZ2VUeXBlTm9uZSApCisgICAgeworICAgICAgICBtc2ctPkhl YWRlci5NZXNzYWdlRmxhZ3MuTWVzc2FnZVBlbmRpbmcgPSAxOworICAgICAgICBfX3NldF9iaXQo c2ludHgsICZ2di0+bXNnX3BlbmRpbmcpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor CisgICAgbXNnLT5IZWFkZXIuTWVzc2FnZVR5cGUgPSBIdk1lc3NhZ2VUaW1lckV4cGlyZWQ7Cisg ICAgbXNnLT5IZWFkZXIuTWVzc2FnZUZsYWdzLk1lc3NhZ2VQZW5kaW5nID0gMDsKKyAgICBtc2ct PkhlYWRlci5QYXlsb2FkU2l6ZSA9IHNpemVvZihwYXlsb2FkKTsKKyAgICBtZW1jcHkobXNnLT5Q YXlsb2FkLCAmcGF5bG9hZCwgc2l6ZW9mKHBheWxvYWQpKTsKKworICAgIGlmICggIXZzLT5tYXNr ICkKKyAgICAgICAgdmxhcGljX3NldF9pcnEodmNwdV92bGFwaWModiksIHZzLT52ZWN0b3IsIDAp OworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgdmlyaWRpYW5fc3luaWNfaXNfYXV0b19l b2lfc2ludChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vdmlyaWRpYW4vdGltZS5jIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi90aW1lLmMKaW5k ZXggNzEyOTFkOTIxYy4uMTJjZTZjOGYwMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92 aXJpZGlhbi90aW1lLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi90aW1lLmMKQEAg LTEyLDYgKzEyLDcgQEAKICNpbmNsdWRlIDx4ZW4vdmVyc2lvbi5oPgogCiAjaW5jbHVkZSA8YXNt L2FwaWMuaD4KKyNpbmNsdWRlIDxhc20vZXZlbnQuaD4KICNpbmNsdWRlIDxhc20vaHZtL3N1cHBv cnQuaD4KIAogI2luY2x1ZGUgInByaXZhdGUuaCIKQEAgLTcyLDYgKzczLDcgQEAgc3RhdGljIHZv aWQgdXBkYXRlX3JlZmVyZW5jZV90c2Moc3RydWN0IGRvbWFpbiAqZCwgYm9vbCBpbml0aWFsaXpl KQogICAgICAqIHRpY2tzIHBlciAxMDBucyBzaGlmdGVkIGxlZnQgYnkgNjQuCiAgICAgICovCiAg ICAgcC0+VHNjU2NhbGUgPSAoKDEwMDAwdWwgPDwgMzIpIC8gZC0+YXJjaC50c2Nfa2h6KSA8PCAz MjsKKyAgICBzbXBfd21iKCk7CiAKICAgICBwLT5Uc2NTZXF1ZW5jZSsrOwogICAgIGlmICggcC0+ VHNjU2VxdWVuY2UgPT0gMHhGRkZGRkZGRiB8fApAQCAtMTE4LDE4ICsxMjAsMjY1IEBAIHN0YXRp YyBpbnQ2NF90IHRpbWVfcmVmX2NvdW50KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0 dXJuIHJhd190cmNfdmFsKGQpICsgdHJjLT5vZmY7CiB9CiAKKy8qCisgKiBUaGUgc3BlY2lmaWNh dGlvbiBzYXlzOiAiVGhlIHBhcnRpdGlvbiByZWZlcmVuY2UgdGltZSBpcyBjb21wdXRlZAorICog YnkgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgorICoKKyAqIFJlZmVyZW5jZVRpbWUgPSAoKFZpcnR1 YWxUc2MgKiBUc2NTY2FsZSkgPj4gNjQpICsgVHNjT2Zmc2V0CisgKgorICogVGhlIG11bHRpcGxp Y2F0aW9uIGlzIGEgNjQgYml0IG11bHRpcGxpY2F0aW9uLCB3aGljaCByZXN1bHRzIGluIGEKKyAq IDEyOCBiaXQgbnVtYmVyIHdoaWNoIGlzIHRoZW4gc2hpZnRlZCA2NCB0aW1lcyB0byB0aGUgcmln aHQgdG8gb2J0YWluCisgKiB0aGUgaGlnaCA2NCBiaXRzLiIKKyAqLworc3RhdGljIHVpbnQ2NF90 IHNjYWxlX3RzYyh1aW50NjRfdCB0c2MsIHVpbnQ2NF90IHNjYWxlLCB1aW50NjRfdCBvZmZzZXQp Cit7CisgICAgdWludDY0X3QgcmVzdWx0OworCisgICAgLyoKKyAgICAgKiBRdWFkd29yZCBNVUwg dGFrZXMgYW4gaW1wbGljaXQgb3BlcmFuZCBpbiBSQVgsIGFuZCBwdXRzIHRoZSByZXN1bHQKKyAg ICAgKiBpbiBSRFg6UkFYLiBCZWNhdXNlIHdlIG9ubHkgd2FudCB0aGUgcmVzdWx0IG9mIHRoZSBt dWx0aXBsaWNhdGlvbgorICAgICAqIGFmdGVyIHNoaWZ0aW5nIHJpZ2h0IGJ5IDY0IGJpdHMsIHdl IHRoZXJlZm9yZSBvbmx5IG5lZWQgdGhlIGNvbnRlbnQKKyAgICAgKiBvZiBSRFguCisgICAgICov CisgICAgYXNtICggIm11bHEgJVtzY2FsZV0iCisgICAgICAgICAgOiAiK2EiICh0c2MpLCAiPWQi IChyZXN1bHQpCisgICAgICAgICAgOiBbc2NhbGVdICJybSIgKHNjYWxlKSApOworCisgICAgcmV0 dXJuIHJlc3VsdCArIG9mZnNldDsKK30KKworc3RhdGljIHVpbnQ2NF90IHRpbWVfbm93KHN0cnVj dCBkb21haW4gKmQpCit7CisgICAgY29uc3Qgc3RydWN0IHZpcmlkaWFuX3BhZ2UgKnJ0ID0gJmQt PmFyY2guaHZtLnZpcmlkaWFuLT5yZWZlcmVuY2VfdHNjOworICAgIEhWX1JFRkVSRU5DRV9UU0Nf UEFHRSAqcCA9IHJ0LT5wdHI7CisgICAgdWludDMyX3Qgc3RhcnQsIGVuZDsKKyAgICB1aW50NjRf dCB0c2M7CisgICAgdWludDY0X3Qgc2NhbGU7CisgICAgdWludDY0X3Qgb2Zmc2V0OworCisgICAg LyoKKyAgICAgKiBJZiB0aGUgcmVmZXJlbmNlIFRTQyBwYWdlIGlzIG5vdCBlbmFibGVkLCBvciBo YXMgYmVlbiBpbnZhbGlkYXRlZAorICAgICAqIGZhbGwgYmFjayB0byB0aGUgcGFydGl0aW9uIHJl ZmVyZW5jZSBjb3VudGVyLgorICAgICAqLworICAgIGlmICggIXAgfHwgIXAtPlRzY1NlcXVlbmNl ICkKKyAgICAgICAgcmV0dXJuIHRpbWVfcmVmX2NvdW50KGQpOworCisgICAgLyoKKyAgICAgKiBU aGUgZm9sbG93aW5nIHNhbXBsaW5nIGFsZ29yaXRobSBmb3IgdHNjLCBzY2FsZSBhbmQgb2Zmc2V0 IGlzCisgICAgICogZG9jdW1lbnRlZCBpbiB0aGUgc3BlY2lmaWN0aW9uLgorICAgICAqLworICAg IGRvIHsKKyAgICAgICAgc3RhcnQgPSBwLT5Uc2NTZXF1ZW5jZTsKKyAgICAgICAgc21wX3JtYigp OworCisgICAgICAgIHRzYyA9IGh2bV9nZXRfZ3Vlc3RfdHNjKHB0X2dsb2JhbF92Y3B1X3Rhcmdl dChkKSk7CisgICAgICAgIHNjYWxlID0gcC0+VHNjU2NhbGU7CisgICAgICAgIG9mZnNldCA9IHAt PlRzY09mZnNldDsKKworICAgICAgICBzbXBfcm1iKCk7CisgICAgICAgIGVuZCA9IHAtPlRzY1Nl cXVlbmNlOworICAgIH0gd2hpbGUgKGVuZCAhPSBzdGFydCk7CisKKyAgICByZXR1cm4gc2NhbGVf dHNjKHRzYywgc2NhbGUsIG9mZnNldCk7Cit9CisKK3N0YXRpYyB2b2lkIHN0b3Bfc3RpbWVyKHN0 cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzKQoreworICAgIGNvbnN0IHN0cnVjdCB2Y3B1ICp2ID0g dnMtPnY7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRp YW47CisgICAgdW5zaWduZWQgaW50IHN0aW1lcnggPSB2cyAtICZ2di0+c3RpbWVyWzBdOworCisg ICAgaWYgKCAhdnMtPnN0YXJ0ZWQgKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9wX3RpbWVy KCZ2cy0+dGltZXIpOworICAgIGNsZWFyX2JpdChzdGltZXJ4LCAmdnYtPnN0aW1lcl9wZW5kaW5n KTsKKyAgICB2cy0+c3RhcnRlZCA9IGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBzdGltZXJfZXhw aXJlKHZvaWQgKmRhdGEpCit7CisgICAgY29uc3Qgc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMg PSBkYXRhOworICAgIHN0cnVjdCB2Y3B1ICp2ID0gdnMtPnY7CisgICAgc3RydWN0IHZpcmlkaWFu X3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47CisgICAgdW5zaWduZWQgaW50IHN0aW1l cnggPSB2cyAtICZ2di0+c3RpbWVyWzBdOworCisgICAgaWYgKCAhdnMtPmNvbmZpZy5maWVsZHMu ZW5hYmxlZCApCisgICAgICAgIHJldHVybjsKKworICAgIHNldF9iaXQoc3RpbWVyeCwgJnZ2LT5z dGltZXJfcGVuZGluZyk7CisgICAgdmNwdV9raWNrKHYpOworfQorCitzdGF0aWMgdm9pZCBzdGFy dF9zdGltZXIoc3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMpCit7CisgICAgY29uc3Qgc3RydWN0 IHZjcHUgKnYgPSB2cy0+djsKKyAgICBzdHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNo Lmh2bS52aXJpZGlhbjsKKyAgICB1bnNpZ25lZCBpbnQgc3RpbWVyeCA9IHZzIC0gJnZ2LT5zdGlt ZXJbMF07CisgICAgaW50NjRfdCBub3cgPSB0aW1lX25vdyh2LT5kb21haW4pOworICAgIHNfdGlt ZV90IHRpbWVvdXQ7CisKKyAgICBpZiAoICF0ZXN0X2FuZF9zZXRfYml0KHN0aW1lcngsICZ2di0+ c3RpbWVyX2VuYWJsZWQpICkKKyAgICAgICAgcHJpbnRrKFhFTkxPR19HX0lORk8gIiVwdjogVklS SURJQU4gU1RJTUVSJXU6IGVuYWJsZWRcbiIsIHYsCisgICAgICAgICAgICAgICBzdGltZXJ4KTsK KworICAgIGlmICggdnMtPmNvbmZpZy5maWVsZHMucGVyaW9kaWMgKQorICAgIHsKKyAgICAgICAg dW5zaWduZWQgaW50IG1pc3NlZCA9IDA7CisgICAgICAgIGludDY0X3QgbmV4dDsKKworICAgICAg ICAvKgorICAgICAgICAgKiBUaGUgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgaWYgdGhlIHRpbWVy IGlzIGxhenkgdGhlbiB3ZQorICAgICAgICAgKiBza2lwIG92ZXIgYW55IG1pc3NlZCBleHBpcmF0 aW9ucyBzbyB3ZSBjYW4gdHJlYXQgdGhpcyBjYXNlCisgICAgICAgICAqIGFzIHRoZSBzYW1lIGFz IGlmIHRoZSB0aW1lciBpcyBjdXJyZW50bHkgc3RvcHBlZCwgaS5lLiB3ZQorICAgICAgICAgKiBq dXN0IHNjaGVkdWxlIGV4cGlyYXRpb24gdG8gYmUgJ2NvdW50JyB0aWNrcyBmcm9tIG5vdy4KKyAg ICAgICAgICovCisgICAgICAgIGlmICggIXZzLT5zdGFydGVkIHx8IHZzLT5jb25maWcuZmllbGRz LmxhenkgKQorICAgICAgICAgICAgbmV4dCA9IG5vdyArIHZzLT5jb3VudDsKKyAgICAgICAgZWxz ZQorICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogVGhlIHRpbWVyIGlz IGFscmVhZHkgc3RhcnRlZCwgc28gd2UncmUgcmUtc2NoZWR1bGluZy4KKyAgICAgICAgICAgICAq IEhlbmNlIGFkdmFuY2UgdGhlIHRpbWVyIGV4cGlyYXRpb24gYnkgb25lIHRpY2suCisgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgIG5leHQgPSB2cy0+ZXhwaXJhdGlvbiArIHZzLT5jb3VudDsK KworICAgICAgICAgICAgLyogTm93IGNoZWNrIHRvIHNlZSBpZiBhbnkgZXhwaXJhdGlvbnMgaGF2 ZSBiZWVuIG1pc3NlZCAqLworICAgICAgICAgICAgaWYgKCBub3cgLSBuZXh0ID4gMCApCisgICAg ICAgICAgICAgICAgbWlzc2VkID0gKG5vdyAtIG5leHQpIC8gdnMtPmNvdW50OworCisgICAgICAg ICAgICAvKgorICAgICAgICAgICAgICogVGhlIHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IGlmIHRo ZSB0aW1lciBpcyBub3QgbGF6eSB0aGVuCisgICAgICAgICAgICAgKiBhIG5vbi16ZXJvIG1pc3Nl ZCBjb3VudCBzaG91bGQgYmUgdXNlZCB0byByZWR1Y2UgdGhlIHBlcmlvZAorICAgICAgICAgICAg ICogb2YgdGhlIHRpbWVyIHVudGlsIGl0IGNhdGNoZXMgdXAsIHVubGVzcyB0aGUgY291bnQgaGFz CisgICAgICAgICAgICAgKiByZWFjaGVkIGEgJ3NpZ25pZmljYW50IG51bWJlcicsIGluIHdoaWNo IGNhc2UgdGhlIHRpbWVyCisgICAgICAgICAgICAgKiBzaG91bGQgYmUgdHJlYXRlZCBhcyBsYXp5 LiBVbmZvcnR1bmF0ZWx5IHRoZSBzcGVjaWZpY2F0aW9uCisgICAgICAgICAgICAgKiBkb2VzIG5v dCBzdGF0ZSB3aGF0IHRoYXQgbnVtYmVyIGlzIHNvIHRoZSBjaG9pY2Ugb2YgbnVtYmVyCisgICAg ICAgICAgICAgKiBoZXJlIGlzIGEgcHVyZSBndWVzcy4KKyAgICAgICAgICAgICAqLworICAgICAg ICAgICAgaWYgKCBtaXNzZWQgPiAzICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBt aXNzZWQgPSAwOworICAgICAgICAgICAgICAgIG5leHQgPSBub3cgKyB2cy0+Y291bnQ7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2cy0+ZXhwaXJhdGlvbiA9IG5leHQ7Cisg ICAgICAgIHRpbWVvdXQgPSAoKG5leHQgLSBub3cpICogMTAwdWxsKSAvIChtaXNzZWQgKyAxKTsK KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdnMtPmV4cGlyYXRpb24gPSB2cy0+Y291 bnQ7CisgICAgICAgIGlmICggdnMtPmNvdW50IC0gbm93IDw9IDAgKQorICAgICAgICB7CisgICAg ICAgICAgICBzZXRfYml0KHN0aW1lcngsICZ2di0+c3RpbWVyX3BlbmRpbmcpOworICAgICAgICAg ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGltZW91dCA9ICh2cy0+ZXhwaXJhdGlv biAtIG5vdykgKiAxMDB1bGw7CisgICAgfQorCisgICAgdnMtPnN0YXJ0ZWQgPSB0cnVlOworICAg IG1pZ3JhdGVfdGltZXIoJnZzLT50aW1lciwgc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKyAgICBzZXRf dGltZXIoJnZzLT50aW1lciwgdGltZW91dCArIE5PVygpKTsKK30KKworc3RhdGljIHZvaWQgcG9s bF9zdGltZXIoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBzdGltZXJ4KQoreworICAgIHN0 cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOworICAgIHN0cnVj dCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGltZXJbc3RpbWVyeF07CisKKyAgICBpZiAo ICF0ZXN0X2JpdChzdGltZXJ4LCAmdnYtPnN0aW1lcl9wZW5kaW5nKSApCisgICAgICAgIHJldHVy bjsKKworICAgIGlmICggIXZpcmlkaWFuX3N5bmljX2RlbGl2ZXJfdGltZXJfbXNnKHYsIHZzLT5j b25maWcuZmllbGRzLnNpbnR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0aW1lcngsIHZzLT5leHBpcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpbWVfbm93KHYtPmRvbWFpbikpICkKKyAgICAgICAgcmV0dXJu OworCisgICAgY2xlYXJfYml0KHN0aW1lcngsICZ2di0+c3RpbWVyX3BlbmRpbmcpOworCisgICAg aWYgKCB2cy0+Y29uZmlnLmZpZWxkcy5wZXJpb2RpYyApCisgICAgICAgIHN0YXJ0X3N0aW1lcih2 cyk7CisgICAgZWxzZQorICAgICAgICB2cy0+Y29uZmlnLmZpZWxkcy5lbmFibGVkID0gMDsKK30K Kwordm9pZCB2aXJpZGlhbl90aW1lX3BvbGxfdGltZXJzKHN0cnVjdCB2Y3B1ICp2KQoreworICAg IHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOworICAgIHVu c2lnbmVkIGludCBpOworCisgICAgaWYgKCAhdnYtPnN0aW1lcl9wZW5kaW5nICkKKyAgICAgICBy ZXR1cm47CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodnYtPnN0aW1lcik7IGkr KyApCisgICAgICAgIHBvbGxfc3RpbWVyKHYsIGkpOworfQorCit2b2lkIHZpcmlkaWFuX3RpbWVf dmNwdV9mcmVlemUoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUg KnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBp ZiAoICFpc192aXJpZGlhbl92Y3B1KHYpICkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICgg aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZ2LT5zdGltZXIpOyBpKysgKQorICAgIHsKKyAgICAgICAg c3RydWN0IHZpcmlkaWFuX3N0aW1lciAqdnMgPSAmdnYtPnN0aW1lcltpXTsKKworICAgICAgICBp ZiAoIHZzLT5zdGFydGVkICkKKyAgICAgICAgICAgIHN0b3BfdGltZXIoJnZzLT50aW1lcik7Cisg ICAgfQorfQorCit2b2lkIHZpcmlkaWFuX3RpbWVfdmNwdV90aGF3KHN0cnVjdCB2Y3B1ICp2KQor eworICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOwor ICAgIHVuc2lnbmVkIGludCBpOworCisgICAgaWYgKCAhaXNfdmlyaWRpYW5fdmNwdSh2KSApCisg ICAgICAgIHJldHVybjsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2di0+c3Rp bWVyKTsgaSsrICkKKyAgICB7CisgICAgICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0g JnZ2LT5zdGltZXJbaV07CisKKyAgICAgICAgaWYgKCB2cy0+Y29uZmlnLmZpZWxkcy5lbmFibGVk ICkKKyAgICAgICAgICAgIHN0YXJ0X3N0aW1lcih2cyk7CisgICAgfQorfQorCiB2b2lkIHZpcmlk aWFuX3RpbWVfZG9tYWluX2ZyZWV6ZShjb25zdCBzdHJ1Y3QgZG9tYWluICpkKQogeworICAgIHN0 cnVjdCB2Y3B1ICp2OworCisgICAgaWYgKCAhaXNfdmlyaWRpYW5fZG9tYWluKGQpICkKKyAgICAg ICAgcmV0dXJuOworCisgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQorICAgICAgICB2aXJpZGlh bl90aW1lX3ZjcHVfZnJlZXplKHYpOworCiAgICAgdGltZV9yZWZfY291bnRfZnJlZXplKGQpOwog fQogCiB2b2lkIHZpcmlkaWFuX3RpbWVfZG9tYWluX3RoYXcoY29uc3Qgc3RydWN0IGRvbWFpbiAq ZCkKIHsKKyAgICBzdHJ1Y3QgdmNwdSAqdjsKKworICAgIGlmICggIWlzX3ZpcmlkaWFuX2RvbWFp bihkKSApCisgICAgICAgIHJldHVybjsKKwogICAgIHRpbWVfcmVmX2NvdW50X3RoYXcoZCk7CisK KyAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCisgICAgICAgIHZpcmlkaWFuX3RpbWVfdmNwdV90 aGF3KHYpOwogfQogCiBpbnQgdmlyaWRpYW5fdGltZV93cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWlu dDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpCiB7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2 ID0gdi0+YXJjaC5odm0udmlyaWRpYW47CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFp bjsKICAgICBzdHJ1Y3QgdmlyaWRpYW5fZG9tYWluICp2ZCA9IGQtPmFyY2guaHZtLnZpcmlkaWFu OwogCkBAIC0xNDksNiArMzk4LDYzIEBAIGludCB2aXJpZGlhbl90aW1lX3dybXNyKHN0cnVjdCB2 Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90IHZhbCkKICAgICAgICAgfQogICAgICAgICBi cmVhazsKIAorICAgIGNhc2UgSFZfWDY0X01TUl9USU1FX1JFRl9DT1VOVDoKKyAgICAgICAgcmV0 dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09O RklHOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPTkZJRzoKKyAgICBjYXNlIEhWX1g2 NF9NU1JfU1RJTUVSMl9DT05GSUc6CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjNfQ09ORklH OgorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0aW1lcnggPQorICAgICAgICAgICAgYXJy YXlfaW5kZXhfbm9zcGVjKChpZHggLSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHKSAvIDIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRSh2di0+c3RpbWVyKSk7Cisg ICAgICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGltZXJbc3RpbWVyeF07 CisKKyAgICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3N0aW1l cikgKQorICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgICAgIHN0 b3Bfc3RpbWVyKHZzKTsKKworICAgICAgICB2cy0+Y29uZmlnLnJhdyA9IHZhbDsKKworICAgICAg ICBpZiAoICF2cy0+Y29uZmlnLmZpZWxkcy5zaW50eCApCisgICAgICAgICAgICB2cy0+Y29uZmln LmZpZWxkcy5lbmFibGVkID0gMDsKKworICAgICAgICBpZiAoIHZzLT5jb25maWcuZmllbGRzLmVu YWJsZWQgKQorICAgICAgICAgICAgc3RhcnRfc3RpbWVyKHZzKTsKKworICAgICAgICBicmVhazsK KyAgICB9CisKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMF9DT1VOVDoKKyAgICBjYXNlIEhW X1g2NF9NU1JfU1RJTUVSMV9DT1VOVDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMl9DT1VO VDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSM19DT1VOVDoKKyAgICB7CisgICAgICAgIHVu c2lnbmVkIGludCBzdGltZXJ4ID0KKyAgICAgICAgICAgIGFycmF5X2luZGV4X25vc3BlYygoaWR4 IC0gSFZfWDY0X01TUl9TVElNRVIwX0NPTkZJRykgLyAyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFSUkFZX1NJWkUodnYtPnN0aW1lcikpOworICAgICAgICBzdHJ1Y3QgdmlyaWRp YW5fc3RpbWVyICp2cyA9ICZ2di0+c3RpbWVyW3N0aW1lcnhdOworCisgICAgICAgIGlmICggISh2 aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9zdGltZXIpICkKKyAgICAgICAgICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAgICAgICBzdG9wX3N0aW1lcih2cyk7CisKKyAg ICAgICAgdnMtPmNvdW50ID0gdmFsOworCisgICAgICAgIGlmICggIXZzLT5jb3VudCAgKQorICAg ICAgICAgICAgdnMtPmNvbmZpZy5maWVsZHMuZW5hYmxlZCA9IDA7CisgICAgICAgIGVsc2UgaWYg KCB2cy0+Y29uZmlnLmZpZWxkcy5hdXRvX2VuYWJsZSApCisgICAgICAgICAgICB2cy0+Y29uZmln LmZpZWxkcy5lbmFibGVkID0gMTsKKworICAgICAgICBpZiAoIHZzLT5jb25maWcuZmllbGRzLmVu YWJsZWQgKQorICAgICAgICAgICAgc3RhcnRfc3RpbWVyKHZzKTsKKworICAgICAgICBicmVhazsK KyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBnZHByaW50ayhYRU5MT0dfSU5GTywgIiVz OiB1bmltcGxlbWVudGVkIE1TUiAlI3ggKCUwMTYiUFJJeDY0IilcbiIsCiAgICAgICAgICAgICAg ICAgIF9fZnVuY19fLCBpZHgsIHZhbCk7CkBAIC0xNjAsNiArNDY2LDcgQEAgaW50IHZpcmlkaWFu X3RpbWVfd3Jtc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQog CiBpbnQgdmlyaWRpYW5fdGltZV9yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3Qg aWR4LCB1aW50NjRfdCAqdmFsKQogeworICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYt PmFyY2guaHZtLnZpcmlkaWFuOwogICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21h aW47CiAgICAgc3RydWN0IHZpcmlkaWFuX2RvbWFpbiAqdmQgPSBkLT5hcmNoLmh2bS52aXJpZGlh bjsKIApAQCAtMjAxLDYgKzUwOCwzNyBAQCBpbnQgdmlyaWRpYW5fdGltZV9yZG1zcihjb25zdCBz dHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCAqdmFsKQogICAgICAgICBicmVh azsKICAgICB9CiAKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMF9DT05GSUc6CisgICAgY2Fz ZSBIVl9YNjRfTVNSX1NUSU1FUjFfQ09ORklHOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIy X0NPTkZJRzoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSM19DT05GSUc6CisgICAgeworICAg ICAgICB1bnNpZ25lZCBpbnQgc3RpbWVyeCA9CisgICAgICAgICAgICBhcnJheV9pbmRleF9ub3Nw ZWMoKGlkeCAtIEhWX1g2NF9NU1JfU1RJTUVSMF9DT05GSUcpIC8gMiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKHZ2LT5zdGltZXIpKTs7CisKKyAgICAgICAgaWYg KCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3N0aW1lcikgKQorICAgICAgICAg ICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgICAgICp2YWwgPSB2di0+c3RpbWVy W3N0aW1lcnhdLmNvbmZpZy5yYXc7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEhW X1g2NF9NU1JfU1RJTUVSMF9DT1VOVDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMV9DT1VO VDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMl9DT1VOVDoKKyAgICBjYXNlIEhWX1g2NF9N U1JfU1RJTUVSM19DT1VOVDoKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGltZXJ4ID0K KyAgICAgICAgICAgIGFycmF5X2luZGV4X25vc3BlYygoaWR4IC0gSFZfWDY0X01TUl9TVElNRVIw X0NPTkZJRykgLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUo dnYtPnN0aW1lcikpOzsKKworICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQp ICYgSFZNUFZfc3RpbWVyKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047 CisKKyAgICAgICAgKnZhbCA9IHZ2LT5zdGltZXJbc3RpbWVyeF0uY291bnQ7CisgICAgICAgIGJy ZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZP LCAiJXM6IHVuaW1wbGVtZW50ZWQgTVNSICUjeFxuIiwgX19mdW5jX18sIGlkeCk7CiAgICAgICAg IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKQEAgLTIwOSw4ICs1NDcsMTkgQEAgaW50IHZpcmlk aWFuX3RpbWVfcmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0 X3QgKnZhbCkKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCi1pbnQgdmlyaWRpYW5fdGlt ZV92Y3B1X2luaXQoY29uc3Qgc3RydWN0IHZjcHUgKnYpCitpbnQgdmlyaWRpYW5fdGltZV92Y3B1 X2luaXQoc3RydWN0IHZjcHUgKnYpCiB7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0g di0+YXJjaC5odm0udmlyaWRpYW47CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUodnYtPnN0aW1lcik7IGkrKyApCisgICAgeworICAgICAgICBz dHJ1Y3QgdmlyaWRpYW5fc3RpbWVyICp2cyA9ICZ2di0+c3RpbWVyW2ldOworCisgICAgICAgIHZz LT52ID0gdjsKKyAgICAgICAgaW5pdF90aW1lcigmdnMtPnRpbWVyLCBzdGltZXJfZXhwaXJlLCB2 cywgdi0+cHJvY2Vzc29yKTsKKyAgICB9CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjIxLDYg KzU3MCwxNiBAQCBpbnQgdmlyaWRpYW5fdGltZV9kb21haW5faW5pdChjb25zdCBzdHJ1Y3QgZG9t YWluICpkKQogCiB2b2lkIHZpcmlkaWFuX3RpbWVfdmNwdV9kZWluaXQoY29uc3Qgc3RydWN0IHZj cHUgKnYpCiB7CisgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmly aWRpYW47CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZ X1NJWkUodnYtPnN0aW1lcik7IGkrKyApCisgICAgeworICAgICAgICBzdHJ1Y3QgdmlyaWRpYW5f c3RpbWVyICp2cyA9ICZ2di0+c3RpbWVyW2ldOworCisgICAgICAgIGtpbGxfdGltZXIoJnZzLT50 aW1lcik7CisgICAgICAgIHZzLT52ID0gTlVMTDsKKyAgICB9CiB9CiAKIHZvaWQgdmlyaWRpYW5f dGltZV9kb21haW5fZGVpbml0KGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCkBAIC0yMzEsMTEgKzU5 MCwzNiBAQCB2b2lkIHZpcmlkaWFuX3RpbWVfZG9tYWluX2RlaW5pdChjb25zdCBzdHJ1Y3QgZG9t YWluICpkKQogdm9pZCB2aXJpZGlhbl90aW1lX3NhdmVfdmNwdV9jdHh0KAogICAgIGNvbnN0IHN0 cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCAqY3R4dCkKIHsK KyAgICBzdHJ1Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKworICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHZ2LT5zdGlt ZXIpICE9CisgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoY3R4dC0+c3RpbWVyX2NvbmZpZ19t c3IpKTsKKyAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRSh2di0+c3RpbWVyKSAhPQorICAgICAg ICAgICAgICAgICBBUlJBWV9TSVpFKGN0eHQtPnN0aW1lcl9jb3VudF9tc3IpKTsKKworICAgIGZv ciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2di0+c3RpbWVyKTsgaSsrICkKKyAgICB7CisgICAg ICAgIHN0cnVjdCB2aXJpZGlhbl9zdGltZXIgKnZzID0gJnZ2LT5zdGltZXJbaV07CisKKyAgICAg ICAgY3R4dC0+c3RpbWVyX2NvbmZpZ19tc3JbaV0gPSB2cy0+Y29uZmlnLnJhdzsKKyAgICAgICAg Y3R4dC0+c3RpbWVyX2NvdW50X21zcltpXSA9IHZzLT5jb3VudDsKKyAgICB9CiB9CiAKIHZvaWQg dmlyaWRpYW5fdGltZV9sb2FkX3ZjcHVfY3R4dCgKICAgICBzdHJ1Y3QgdmNwdSAqdiwgY29uc3Qg c3RydWN0IGh2bV92aXJpZGlhbl92Y3B1X2NvbnRleHQgKmN0eHQpCiB7CisgICAgc3RydWN0IHZp cmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47CisgICAgdW5zaWduZWQgaW50 IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodnYtPnN0aW1lcik7IGkrKyAp CisgICAgeworICAgICAgICBzdHJ1Y3QgdmlyaWRpYW5fc3RpbWVyICp2cyA9ICZ2di0+c3RpbWVy W2ldOworCisgICAgICAgIHZzLT5jb25maWcucmF3ID0gY3R4dC0+c3RpbWVyX2NvbmZpZ19tc3Jb aV07CisgICAgICAgIHZzLT5jb3VudCA9IGN0eHQtPnN0aW1lcl9jb3VudF9tc3JbaV07CisgICAg fQogfQogCiB2b2lkIHZpcmlkaWFuX3RpbWVfc2F2ZV9kb21haW5fY3R4dCgKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4uYyBiL3hlbi9hcmNoL3g4Ni9odm0v dmlyaWRpYW4vdmlyaWRpYW4uYwppbmRleCA2N2QwMTIxOTI0Li5lYzc5Y2Q5ZjE1IDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMKKysrIGIveGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jCkBAIC0xODEsNiArMTgxLDggQEAgdm9pZCBjcHVp ZF92aXJpZGlhbl9sZWF2ZXMoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGxlYWYsCiAg ICAgICAgICAgICBtYXNrLkFjY2Vzc1BhcnRpdGlvblJlZmVyZW5jZVRzYyA9IDE7CiAgICAgICAg IGlmICggdmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3luaWMgKQogICAgICAgICAg ICAgbWFzay5BY2Nlc3NTeW5pY1JlZ3MgPSAxOworICAgICAgICBpZiAoIHZpcmlkaWFuX2ZlYXR1 cmVfbWFzayhkKSAmIEhWTVBWX3N0aW1lciApCisgICAgICAgICAgICBtYXNrLkFjY2Vzc1N5bnRo ZXRpY1RpbWVyUmVncyA9IDE7CiAKICAgICAgICAgdS5tYXNrID0gbWFzazsKIApAQCAtMzIyLDYg KzMyNCwxNSBAQCBpbnQgZ3Vlc3Rfd3Jtc3JfdmlyaWRpYW4oc3RydWN0IHZjcHUgKnYsIHVpbnQz Ml90IGlkeCwgdWludDY0X3QgdmFsKQogICAgIGNhc2UgSFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZ OgogICAgIGNhc2UgSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWToKICAgICBjYXNlIEhWX1g2NF9N U1JfUkVGRVJFTkNFX1RTQzoKKyAgICBjYXNlIEhWX1g2NF9NU1JfVElNRV9SRUZfQ09VTlQ6Cisg ICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHOgorICAgIGNhc2UgSFZfWDY0X01TUl9T VElNRVIwX0NPVU5UOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NPTkZJRzoKKyAgICBj YXNlIEhWX1g2NF9NU1JfU1RJTUVSMV9DT1VOVDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVS Ml9DT05GSUc6CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjJfQ09VTlQ6CisgICAgY2FzZSBI Vl9YNjRfTVNSX1NUSU1FUjNfQ09ORklHOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIzX0NP VU5UOgogICAgICAgICByZXR1cm4gdmlyaWRpYW5fdGltZV93cm1zcih2LCBpZHgsIHZhbCk7CiAK ICAgICBjYXNlIEhWX1g2NF9NU1JfQ1JBU0hfUDA6CkBAIC00MDMsNiArNDE0LDE0IEBAIGludCBn dWVzdF9yZG1zcl92aXJpZGlhbihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1 aW50NjRfdCAqdmFsKQogICAgIGNhc2UgSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWToKICAgICBj YXNlIEhWX1g2NF9NU1JfUkVGRVJFTkNFX1RTQzoKICAgICBjYXNlIEhWX1g2NF9NU1JfVElNRV9S RUZfQ09VTlQ6CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHOgorICAgIGNhc2Ug SFZfWDY0X01TUl9TVElNRVIwX0NPVU5UOgorICAgIGNhc2UgSFZfWDY0X01TUl9TVElNRVIxX0NP TkZJRzoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1RJTUVSMV9DT1VOVDoKKyAgICBjYXNlIEhWX1g2 NF9NU1JfU1RJTUVSMl9DT05GSUc6CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjJfQ09VTlQ6 CisgICAgY2FzZSBIVl9YNjRfTVNSX1NUSU1FUjNfQ09ORklHOgorICAgIGNhc2UgSFZfWDY0X01T Ul9TVElNRVIzX0NPVU5UOgogICAgICAgICByZXR1cm4gdmlyaWRpYW5fdGltZV9yZG1zcih2LCBp ZHgsIHZhbCk7CiAKICAgICBjYXNlIEhWX1g2NF9NU1JfQ1JBU0hfUDA6CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vdmlyaWRpYW4uaAppbmRleCA3NDQ2YmU0OTJiLi5jOWNhYjMyZTA2IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL3ZpcmlkaWFuLmgKQEAgLTQwLDYgKzQwLDMzIEBAIHVuaW9uIHZpcmlkaWFuX3NpbnRf bXNyCiAgICAgfTsKIH07CiAKK3VuaW9uIHZpcmlkaWFuX3N0aW1lcl9jb25maWdfbXNyCit7Cisg ICAgdWludDY0X3QgcmF3OworICAgIHN0cnVjdAorICAgIHsKKyAgICAgICAgdWludDY0X3QgZW5h YmxlZDoxOworICAgICAgICB1aW50NjRfdCBwZXJpb2RpYzoxOworICAgICAgICB1aW50NjRfdCBs YXp5OjE7CisgICAgICAgIHVpbnQ2NF90IGF1dG9fZW5hYmxlOjE7CisgICAgICAgIHVpbnQ2NF90 IHZlY3Rvcjo4OworICAgICAgICB1aW50NjRfdCBkaXJlY3RfbW9kZToxOworICAgICAgICB1aW50 NjRfdCByZXNlcnZlZF96ZXJvMTozOworICAgICAgICB1aW50NjRfdCBzaW50eDo0OworICAgICAg ICB1aW50NjRfdCByZXNlcnZlZF96ZXJvMjo0NDsKKyAgICB9IGZpZWxkczsKK307CisKK3N0cnVj dCB2aXJpZGlhbl9zdGltZXIgeworICAgIHN0cnVjdCB2Y3B1ICp2OworICAgIHN0cnVjdCB0aW1l ciB0aW1lcjsKKyAgICB1bmlvbiB2aXJpZGlhbl9zdGltZXJfY29uZmlnX21zciBjb25maWc7Cisg ICAgdWludDY0X3QgY291bnQ7CisgICAgdWludDY0X3QgZXhwaXJhdGlvbjsKKyAgICBzX3RpbWVf dCB0aW1lb3V0OworICAgIGJvb2wgc3RhcnRlZDsKK307CisKIHN0cnVjdCB2aXJpZGlhbl92Y3B1 CiB7CiAgICAgc3RydWN0IHZpcmlkaWFuX3BhZ2UgdnBfYXNzaXN0OwpAQCAtNTAsNiArNzcsOSBA QCBzdHJ1Y3QgdmlyaWRpYW5fdmNwdQogICAgIHVuaW9uIHZpcmlkaWFuX3NpbnRfbXNyIHNpbnRb MTZdOwogICAgIHVpbnQ4X3QgdmVjdG9yX3RvX3NpbnR4WzI1Nl07CiAgICAgdW5zaWduZWQgbG9u ZyBtc2dfcGVuZGluZzsKKyAgICBzdHJ1Y3QgdmlyaWRpYW5fc3RpbWVyIHN0aW1lcls0XTsKKyAg ICB1bnNpZ25lZCBsb25nIHN0aW1lcl9lbmFibGVkOworICAgIHVuc2lnbmVkIGxvbmcgc3RpbWVy X3BlbmRpbmc7CiAgICAgdWludDY0X3QgY3Jhc2hfcGFyYW1bNV07CiB9OwogCkBAIC0xMTIsNyAr MTQyLDcgQEAgdm9pZCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9jbGVhcihjb25zdCBzdHJ1Y3QgdmNw dSAqdik7CiAKIGJvb2wgdmlyaWRpYW5fc3luaWNfaXNfYXV0b19lb2lfc2ludChjb25zdCBzdHJ1 Y3QgdmNwdSAqdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgdmVjdG9yKTsKLXZvaWQgdmlyaWRpYW5fc3luaWNfcG9sbF9tZXNzYWdlcyhjb25zdCBz dHJ1Y3QgdmNwdSAqdik7Cit2b2lkIHZpcmlkaWFuX3N5bmljX3BvbGxfbWVzc2FnZXMoc3RydWN0 IHZjcHUgKnYpOwogdm9pZCB2aXJpZGlhbl9zeW5pY19hY2tfc2ludChjb25zdCBzdHJ1Y3QgdmNw dSAqdiwgdW5zaWduZWQgaW50IHZlY3Rvcik7CiAKICNlbmRpZiAvKiBfX0FTTV9YODZfSFZNX1ZJ UklESUFOX0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2 bS9zYXZlLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaAppbmRleCBl YzNlNGRmMTJjLi44MzQ0YWE0NzFmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJj aC14ODYvaHZtL3NhdmUuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3Nh dmUuaApAQCAtNjA0LDYgKzYwNCw4IEBAIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0 IHsKICAgICB1aW50OF90ICBfcGFkWzddOwogICAgIHVpbnQ2NF90IHNpbXBfbXNyOwogICAgIHVp bnQ2NF90IHNpbnRfbXNyWzE2XTsKKyAgICB1aW50NjRfdCBzdGltZXJfY29uZmlnX21zcls0XTsK KyAgICB1aW50NjRfdCBzdGltZXJfY291bnRfbXNyWzRdOwogfTsKIAogREVDTEFSRV9IVk1fU0FW RV9UWVBFKFZJUklESUFOX1ZDUFUsIDE3LCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4 dCk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oIGIveGVuL2lu Y2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaAppbmRleCBlN2UzYzdjODkyLi5lMDZiMDk0MmQwIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oCisrKyBiL3hlbi9pbmNs dWRlL3B1YmxpYy9odm0vcGFyYW1zLmgKQEAgLTE1MCw2ICsxNTAsMTAgQEAKICNkZWZpbmUgX0hW TVBWX3N5bmljIDcKICNkZWZpbmUgSFZNUFZfc3luaWMgKDEgPDwgX0hWTVBWX3N5bmljKQogCisv KiBFbmFibGUgU1RJTUVSIE1TUnMgKi8KKyNkZWZpbmUgX0hWTVBWX3N0aW1lciA4CisjZGVmaW5l IEhWTVBWX3N0aW1lciAoMSA8PCBfSFZNUFZfc3RpbWVyKQorCiAjZGVmaW5lIEhWTVBWX2ZlYXR1 cmVfbWFzayBcCiAgICAgICAgIChIVk1QVl9iYXNlX2ZyZXEgfCBcCiAgICAgICAgICBIVk1QVl9u b19mcmVxIHwgXApAQCAtMTU4LDcgKzE2Miw4IEBACiAgICAgICAgICBIVk1QVl9oY2FsbF9yZW1v dGVfdGxiX2ZsdXNoIHwgXAogICAgICAgICAgSFZNUFZfYXBpY19hc3Npc3QgfCBcCiAgICAgICAg ICBIVk1QVl9jcmFzaF9jdGwgfCBcCi0gICAgICAgICBIVk1QVl9zeW5pYykKKyAgICAgICAgIEhW TVBWX3N5bmljIHwgXAorICAgICAgICAgSFZNUFZfc3RpbWVyKQogCiAjZW5kaWYKIAotLSAKMi4y MC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==