From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 5/5] drm: add syncobj timeline support v2 Date: Thu, 23 Aug 2018 16:25:42 +0800 Message-ID: <20180823082542.2998-5-david1.zhou@amd.com> References: <20180823082542.2998-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180823082542.2998-1-david1.zhou-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Chunming Zhou , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Rakos , Daniel Vetter , Dave Airlie , Christian Konig List-Id: dri-devel@lists.freedesktop.org VktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZToKVGhpcyBleHRlbnNpb24gaW50cm9kdWNlcyBhIG5l dyB0eXBlIG9mIHNlbWFwaG9yZSB0aGF0IGhhcyBhbiBpbnRlZ2VyIHBheWxvYWQKaWRlbnRpZnlp bmcgYSBwb2ludCBpbiBhIHRpbWVsaW5lLiBTdWNoIHRpbWVsaW5lIHNlbWFwaG9yZXMgc3VwcG9y dCB0aGUKZm9sbG93aW5nIG9wZXJhdGlvbnM6CiAgICogSG9zdCBxdWVyeSAtIEEgaG9zdCBvcGVy YXRpb24gdGhhdCBhbGxvd3MgcXVlcnlpbmcgdGhlIHBheWxvYWQgb2YgdGhlCiAgICAgdGltZWxp bmUgc2VtYXBob3JlLgogICAqIEhvc3Qgd2FpdCAtIEEgaG9zdCBvcGVyYXRpb24gdGhhdCBhbGxv d3MgYSBibG9ja2luZyB3YWl0IGZvciBhCiAgICAgdGltZWxpbmUgc2VtYXBob3JlIHRvIHJlYWNo IGEgc3BlY2lmaWVkIHZhbHVlLgogICAqIERldmljZSB3YWl0IC0gQSBkZXZpY2Ugb3BlcmF0aW9u IHRoYXQgYWxsb3dzIHdhaXRpbmcgZm9yIGEKICAgICB0aW1lbGluZSBzZW1hcGhvcmUgdG8gcmVh Y2ggYSBzcGVjaWZpZWQgdmFsdWUuCiAgICogRGV2aWNlIHNpZ25hbCAtIEEgZGV2aWNlIG9wZXJh dGlvbiB0aGF0IGFsbG93cyBhZHZhbmNpbmcgdGhlCiAgICAgdGltZWxpbmUgc2VtYXBob3JlIHRv IGEgc3BlY2lmaWVkIHZhbHVlLgoKU2luY2UgaXQncyBhIHRpbWVsaW5lLCB0aGF0IG1lYW5zIHRo ZSBmcm9udCB0aW1lIHBvaW50KFBUKSBhbHdheXMgaXMgc2lnbmFsZWQgYmVmb3JlIHRoZSBsYXRl IFBULgphLiBzaWduYWwgUFQgZGVzaWduOgpTaWduYWwgUFQgZmVuY2UgTiBkZXBlbmRzIG9uIFBU W04tMV0gZmVuY2UgYW5kIHNpZ25hbCBvcGVydGlvbiBmZW5jZSwgd2hlbiBQVFtOXSBmZW5jZSBp cyBzaWduYWxlZCwKdGhlIHRpbWVsaW5lIHdpbGwgaW5jcmVhc2UgdG8gdmFsdWUgb2YgUFRbTl0u CmIuIHdhaXQgUFQgZGVzaWduOgpXYWl0IFBUIGZlbmNlIGlzIHNpZ25hbGVkIGJ5IHJlYWNoaW5n IHRpbWVsaW5lIHBvaW50IHZhbHVlLCB3aGVuIHRpbWVsaW5lIGlzIGluY3JlYXNpbmcsIHdpbGwg Y29tcGFyZQp3YWl0IFBUcyB2YWx1ZSB3aXRoIG5ldyB0aW1lbGluZSB2YWx1ZSwgaWYgUFQgdmFs dWUgaXMgbG93ZXIgdGhhbiB0aW1lbGluZSB2YWx1ZSwgdGhlbiB3YWl0IFBUIHdpbGwgYmUKc2ln bmFsZWQsIG90aGVyd2lzZSBrZWVwIGluIGxpc3QuIHNlbWFwaG9yZSB3YWl0IG9wZXJhdGlvbiBj YW4gd2FpdCBvbiBhbnkgcG9pbnQgb2YgdGltZWxpbmUsCnNvIG5lZWQgYSBSQiB0cmVlIHRvIG9y ZGVyIHRoZW0uIEFuZCB3YWl0IFBUIGNvdWxkIGFoZWFkIG9mIHNpZ25hbCBQVCwgd2UgbmVlZCBh IHN1bWlzc2lvbiBmZW5jZSB0bwpwZXJmb3JtIHRoYXQuCgp2MjoKMS4gcmVtb3ZlIHVudXNlZCBE Uk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9OT1JNQUwuIChDaHJpc3RpYW4pCjIuIG1vdmUgdW5leHBv c2VkIGRlbml0aW9ucyB0byAuYyBmaWxlLiAoRGFuaWVsIFZldHRlcikKMy4gc3BsaXQgdXAgdGhl IGNoYW5nZSB0byBkcm1fc3luY29ial9maW5kX2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4g KENocmlzdGlhbikKNC4gc3BsaXQgdXAgdGhlIGNoYW5nZSB0byBkcm1fc3luY29ial9yZXBsYWNl X2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KNS4gZHJvcCB0aGUgc3VibWlzc2lvbl9mZW5j ZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW5zdGVhZCB1c2Ugd2FpdF9ldmVudCgpIGZvciB0aGF0LiAo Q2hyaXN0aWFuKQo2LiBXQVJOX09OKHBvaW50ICE9IDApIGZvciBOT1JNQUwgdHlwZSBzeW5jb2Jq IGNhc2UuIChEYW5pZWwgVmV0dGVyKQoKVE9ETzoKMS4gQ1BVIHF1ZXJ5IGFuZCB3YWl0IG9uIHRp bWVsaW5lIHNlbWFwaG9yZS4KMi4gdGVzdCBhcHBsaWNhdGlvbiAoRGFuaWVsIFZldHRlcikKClNp Z25lZC1vZmYtYnk6IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+CkNjOiBDaHJp c3RpYW4gS29uaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KQ2M6IERhdmUgQWlybGllIDxh aXJsaWVkQHJlZGhhdC5jb20+CkNjOiBEYW5pZWwgUmFrb3MgPERhbmllbC5SYWtvc0BhbWQuY29t PgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fc3luY29iai5jIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQogaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCAgICAgfCAgMjggKysrCiBpbmNsdWRl L3VhcGkvZHJtL2RybS5oICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDM4OSBpbnNl cnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCmluZGV4IDYyMjdk ZjJjYzBhNC4uZjczOGQ3OGVkZjY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5 bmNvYmouYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAtNTYsNiArNTYs NDQgQEAKICNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKICNpbmNsdWRlIDxkcm0vZHJtX3N5bmNv YmouaD4KIAorc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2UgeworCXN0cnVjdCBkbWFfZmVu Y2UgYmFzZTsKKwlzcGlubG9ja190IGxvY2s7Cit9OworCitzdGF0aWMgY29uc3QgY2hhciAqZHJt X3N5bmNvYmpfc3R1Yl9mZW5jZV9nZXRfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sK KyAgICAgICAgcmV0dXJuICJzeW5jb2Jqc3R1YiI7Cit9CisKK3N0YXRpYyBib29sIGRybV9zeW5j b2JqX3N0dWJfZmVuY2VfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkK K3sKKyAgICByZXR1cm4gIWRtYV9mZW5jZV9pc19zaWduYWxlZChmZW5jZSk7Cit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkcm1fc3luY29ial9zdHViX2ZlbmNlX29wcyA9 IHsKKwkuZ2V0X2RyaXZlcl9uYW1lID0gZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9nZXRfbmFtZSwK KwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBkcm1fc3luY29ial9zdHViX2ZlbmNlX2dldF9uYW1lLAor CS5lbmFibGVfc2lnbmFsaW5nID0gZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9lbmFibGVfc2lnbmFs aW5nLAorCS5yZWxlYXNlID0gTlVMTCwKK307CisKK3N0cnVjdCBkcm1fc3luY29ial93YWl0X3B0 IHsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSBiYXNlOworCXU2NCAgICB2YWx1ZTsK KwlzdHJ1Y3QgcmJfbm9kZSAgIG5vZGU7Cit9Oworc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9w dCB7CisJc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2UgYmFzZTsKKwlzdHJ1Y3QgZG1hX2Zl bmNlICpzaWduYWxfZmVuY2U7CisJc3RydWN0IGRtYV9mZW5jZSAqcHJlX3B0X2Jhc2U7CisJc3Ry dWN0IGRtYV9mZW5jZV9jYiBzaWduYWxfY2I7CisJc3RydWN0IGRtYV9mZW5jZV9jYiBwcmVfcHRf Y2I7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOworCXU2NCAgICB2YWx1ZTsKKwlzdHJ1 Y3QgbGlzdF9oZWFkIGxpc3Q7Cit9OworCiAvKioKICAqIGRybV9zeW5jb2JqX2ZpbmQgLSBsb29r dXAgYW5kIHJlZmVyZW5jZSBhIHN5bmMgb2JqZWN0LgogICogQGZpbGVfcHJpdmF0ZTogZHJtIGZp bGUgcHJpdmF0ZSBwb2ludGVyCkBAIC0xMzcsNiArMTc1LDE1MCBAQCB2b2lkIGRybV9zeW5jb2Jq X3JlbW92ZV9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJc3Bpbl91bmxv Y2soJnN5bmNvYmotPmxvY2spOwogfQogCitzdGF0aWMgdm9pZCBkcm1fc3luY29ial90aW1lbGlu ZV9zaWduYWxfd2FpdF9wdHMoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQoreworCXN0cnVj dCByYl9ub2RlICpub2RlID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdF9wdCAqd2Fp dF9wdCA9IE5VTEw7CisKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCWZvcihub2RlID0g cmJfZmlyc3QoJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUud2FpdF9wdF90cmVlKTsKKwkgICAg bm9kZSAhPSBOVUxMOyApIHsKKwkJd2FpdF9wdCA9IHJiX2VudHJ5KG5vZGUsIHN0cnVjdCBkcm1f c3luY29ial93YWl0X3B0LCBub2RlKTsKKwkJbm9kZSA9IHJiX25leHQobm9kZSk7CisJCWlmICh3 YWl0X3B0LT52YWx1ZSA8PSBzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnRpbWVsaW5lKSB7CisJ CQlkbWFfZmVuY2Vfc2lnbmFsKCZ3YWl0X3B0LT5iYXNlLmJhc2UpOworCQkJcmJfZXJhc2UoJndh aXRfcHQtPm5vZGUsCisJCQkJICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLndhaXRfcHRfdHJl ZSk7CisJCQlSQl9DTEVBUl9OT0RFKCZ3YWl0X3B0LT5ub2RlKTsKKwkJCS8qIGtmcmVlKHdhaXRf cHQpIGlzIGV4Y3V0ZWQgYnkgZmVuY2UgcHV0ICovCisJCQlkbWFfZmVuY2VfcHV0KCZ3YWl0X3B0 LT5iYXNlLmJhc2UpOworCQl9IGVsc2UgeworCQkJLyogdGhlIGxvb3AgaXMgZnJvbSBsZWZ0IHRv IHJpZ2h0LCB0aGUgbGF0ZXIgZW50cnkgdmFsdWUgaXMKKwkJCSAqIGJpZ2dlciwgc28gZG9uJ3Qg bmVlZCB0byBjaGVjayBhbnkgbW9yZSAqLworCQkJYnJlYWs7CisJCX0KKwl9CisJc3Bpbl91bmxv Y2soJnN5bmNvYmotPmxvY2spOworfQorCisKK3N0YXRpYyB2b2lkIHB0X2ZlbmNlX2NiKHN0cnVj dCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdCkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZSA9IE5VTEw7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOworCisJZmVuY2Ug PSBzaWduYWxfcHQtPnNpZ25hbF9mZW5jZTsKKwlzaWduYWxfcHQtPnNpZ25hbF9mZW5jZSA9IE5V TEw7CisJZG1hX2ZlbmNlX3B1dChmZW5jZSk7CisJZmVuY2UgPSBzaWduYWxfcHQtPnByZV9wdF9i YXNlOworCXNpZ25hbF9wdC0+cHJlX3B0X2Jhc2UgPSBOVUxMOworCWRtYV9mZW5jZV9wdXQoZmVu Y2UpOworCisJc3luY29iaiA9IHNpZ25hbF9wdC0+c3luY29iajsKKwlzcGluX2xvY2soJnN5bmNv YmotPmxvY2spOworCWxpc3RfZGVsKCZzaWduYWxfcHQtPmxpc3QpOworCXN5bmNvYmotPnN5bmNv YmpfdGltZWxpbmUudGltZWxpbmUgPSBzaWduYWxfcHQtPnZhbHVlOworCXNwaW5fdW5sb2NrKCZz eW5jb2JqLT5sb2NrKTsKKwkvKiBrZnJlZShzaWduYWxfcHQpIHdpbGwgYmUgIGV4ZWN1dGVkIGJ5 IGJlbG93IGZlbmNlIHB1dCAqLworCWRtYV9mZW5jZV9wdXQoJnNpZ25hbF9wdC0+YmFzZS5iYXNl KTsKKwlkcm1fc3luY29ial90aW1lbGluZV9zaWduYWxfd2FpdF9wdHMoc3luY29iaik7Cit9Citz dGF0aWMgdm9pZCBwdF9zaWduYWxfZmVuY2VfZnVuYyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwK KwkJCQkgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX3Np Z25hbF9wdCAqc2lnbmFsX3B0ID0KKwkJY29udGFpbmVyX29mKGNiLCBzdHJ1Y3QgZHJtX3N5bmNv Ympfc2lnbmFsX3B0LCBzaWduYWxfY2IpOworCisJaWYgKHNpZ25hbF9wdC0+cHJlX3B0X2Jhc2Ug JiYKKwkgICAgIWRtYV9mZW5jZV9pc19zaWduYWxlZChzaWduYWxfcHQtPnByZV9wdF9iYXNlKSkK KwkJcmV0dXJuOworCisJcHRfZmVuY2VfY2Ioc2lnbmFsX3B0KTsKK30KK3N0YXRpYyB2b2lkIHB0 X3ByZV9mZW5jZV9mdW5jKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAorCQkJCSBzdHJ1Y3QgZG1h X2ZlbmNlX2NiICpjYikKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxf cHQgPQorCQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsIHBy ZV9wdF9jYik7CisKKwlpZiAoc2lnbmFsX3B0LT5zaWduYWxfZmVuY2UgJiYKKwkgICAgIWRtYV9m ZW5jZV9pc19zaWduYWxlZChzaWduYWxfcHQtPnByZV9wdF9iYXNlKSkKKwkJcmV0dXJuOworCisJ cHRfZmVuY2VfY2Ioc2lnbmFsX3B0KTsKK30KKworc3RhdGljIGludCBkcm1fc3luY29ial90aW1l bGluZV9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKKwkJCQkJICAg ICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsCisJCQkJCSAgICAgIHU2NCBwb2ludCkKK3sKKwlz dHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQgPQorCQlremFsbG9jKHNpemVv ZihzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0KSwgR0ZQX0tFUk5FTCk7CisJc3RydWN0IGRy bV9zeW5jb2JqX3NpZ25hbF9wdCAqdGFpbF9wdDsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICp0YWlsX3B0 X2ZlbmNlID0gTlVMTDsKKwlpbnQgcmV0ID0gMDsKKworCWlmICghc2lnbmFsX3B0KQorCQlyZXR1 cm4gLUVOT01FTTsKKwlpZiAoc3luY29iai0+c3luY29ial90aW1lbGluZS5zaWduYWxfcG9pbnQg Pj0gcG9pbnQpIHsKKwkJRFJNX1dBUk4oIkEgbGF0ZXIgc2lnbmFsIGlzIHJlYWR5ISIpOworCQln b3RvIG91dDsKKwl9CisJaWYgKGZlbmNlKQorCQlkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKKwlzcGlu X2xvY2soJnN5bmNvYmotPmxvY2spOworCXNwaW5fbG9ja19pbml0KCZzaWduYWxfcHQtPmJhc2Uu bG9jayk7CisJZG1hX2ZlbmNlX2luaXQoJnNpZ25hbF9wdC0+YmFzZS5iYXNlLAorCQkgICAgICAg JmRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzLAorCQkgICAgICAgJnNpZ25hbF9wdC0+YmFzZS5s b2NrLAorCQkgICAgICAgc3luY29iai0+c3luY29ial90aW1lbGluZS50aW1lbGluZV9jb250ZXh0 LCBwb2ludCk7CisJc2lnbmFsX3B0LT5zaWduYWxfZmVuY2UgPQorCQlyY3VfZGVyZWZlcmVuY2Vf cHJvdGVjdGVkKGZlbmNlLAorCQkJCQkgIGxvY2tkZXBfaXNfaGVsZCgmZmVuY2UtPmxvY2spKTsK KwlpZiAoIWxpc3RfZW1wdHkoJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUuc2lnbmFsX3B0X2xp c3QpKSB7CisJCXRhaWxfcHQgPSBsaXN0X2xhc3RfZW50cnkoJnN5bmNvYmotPnN5bmNvYmpfdGlt ZWxpbmUuc2lnbmFsX3B0X2xpc3QsCisJCQkJCSAgc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9w dCwgbGlzdCk7CisJCXRhaWxfcHRfZmVuY2UgPSAmdGFpbF9wdC0+YmFzZS5iYXNlOworCQlpZiAo ZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHRhaWxfcHRfZmVuY2UpKQorCQkJdGFpbF9wdF9mZW5jZSA9 IE5VTEw7CisJfQorCWlmICh0YWlsX3B0X2ZlbmNlKQorCQlzaWduYWxfcHQtPnByZV9wdF9iYXNl ID0KKwkJCWRtYV9mZW5jZV9nZXQocmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCh0YWlsX3B0X2Zl bmNlLAorCQkJCQkJCQlsb2NrZGVwX2lzX2hlbGQoJnRhaWxfcHRfZmVuY2UtPmxvY2spKSk7CisK KwlzaWduYWxfcHQtPnZhbHVlID0gcG9pbnQ7CisJc3luY29iai0+c3luY29ial90aW1lbGluZS5z aWduYWxfcG9pbnQgPSBwb2ludDsKKwlzaWduYWxfcHQtPnN5bmNvYmogPSBzeW5jb2JqOworCUlO SVRfTElTVF9IRUFEKCZzaWduYWxfcHQtPmxpc3QpOworCWxpc3RfYWRkX3RhaWwoJnNpZ25hbF9w dC0+bGlzdCwgJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUuc2lnbmFsX3B0X2xpc3QpOworCXNw aW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwl3YWtlX3VwX2FsbCgmc3luY29iai0+c3luY29i al90aW1lbGluZS53cSk7CisJLyoqCisJICogRXZlcnkgcHQgaXMgZGVwZW5kaW5nIG9uIHNpZ25h bCBmZW5jZSBhbmQgcHJldmlvdXMgcHQgZmVuY2UsIGFkZAorCSAqIGNhbGxiYWNrcyB0byB0aGVt CisJICovCisJaWYgKCFkbWFfZmVuY2VfaXNfc2lnbmFsZWQoc2lnbmFsX3B0LT5zaWduYWxfZmVu Y2UpKQorCQlkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKHNpZ25hbF9wdC0+c2lnbmFsX2ZlbmNlLAor CQkJCSAgICAgICAmc2lnbmFsX3B0LT5zaWduYWxfY2IsCisJCQkJICAgICAgIHB0X3NpZ25hbF9m ZW5jZV9mdW5jKTsKKwllbHNlCisJCXB0X3NpZ25hbF9mZW5jZV9mdW5jKHNpZ25hbF9wdC0+c2ln bmFsX2ZlbmNlLAorCQkJCSAgICAgJnNpZ25hbF9wdC0+c2lnbmFsX2NiKTsKKwlpZiAoc2lnbmFs X3B0LT5wcmVfcHRfYmFzZSAmJiAhZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKHNpZ25hbF9wdC0+cHJl X3B0X2Jhc2UpKQorCQlkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKHNpZ25hbF9wdC0+cHJlX3B0X2Jh c2UsCisJCQkJICAgICAgICZzaWduYWxfcHQtPnByZV9wdF9jYiwKKwkJCQkgICAgICAgcHRfcHJl X2ZlbmNlX2Z1bmMpOworCWVsc2UKKwkJcHRfcHJlX2ZlbmNlX2Z1bmMoc2lnbmFsX3B0LT5wcmVf cHRfYmFzZSwgJnNpZ25hbF9wdC0+cHJlX3B0X2NiKTsKKworCisJcmV0dXJuIDA7CitvdXQ6CisJ a2ZyZWUoc2lnbmFsX3B0KTsKKwlyZXR1cm4gcmV0OworfQorCiAvKioKICAqIGRybV9zeW5jb2Jq X3JlcGxhY2VfZmVuY2UgLSByZXBsYWNlIGZlbmNlIGluIGEgc3luYyBvYmplY3QuCiAgKiBAc3lu Y29iajogU3luYyBvYmplY3QgdG8gcmVwbGFjZSBmZW5jZSBpbgpAQCAtMTUyLDYgKzMzNCwxMSBA QCB2b2lkIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqLAogCXN0cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZTsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmpf Y2IgKmN1ciwgKnRtcDsKIAorCWlmIChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVf VElNRUxJTkUpIHsKKwkJZHJtX3N5bmNvYmpfdGltZWxpbmVfcmVwbGFjZV9mZW5jZShzeW5jb2Jq LCBmZW5jZSwKKwkJCQkJCSAgIHBvaW50KTsKKwkJcmV0dXJuOworCX0KIAlpZiAoZmVuY2UpCiAJ CWRtYV9mZW5jZV9nZXQoZmVuY2UpOwogCkBAIC0xNzQsMjggKzM2MSw2IEBAIHZvaWQgZHJtX3N5 bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiB9CiBFWFBP UlRfU1lNQk9MKGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpOwogCi1zdHJ1Y3QgZHJtX3N5bmNv Ympfc3R1Yl9mZW5jZSB7Ci0Jc3RydWN0IGRtYV9mZW5jZSBiYXNlOwotCXNwaW5sb2NrX3QgbG9j azsKLX07Ci0KLXN0YXRpYyBjb25zdCBjaGFyICpkcm1fc3luY29ial9zdHViX2ZlbmNlX2dldF9u YW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQotewotICAgICAgICByZXR1cm4gInN5bmNvYmpz dHViIjsKLX0KLQotc3RhdGljIGJvb2wgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9lbmFibGVfc2ln bmFsaW5nKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQotewotICAgIHJldHVybiAhZG1hX2ZlbmNl X2lzX3NpZ25hbGVkKGZlbmNlKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfZmVuY2Vf b3BzIGRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzID0gewotCS5nZXRfZHJpdmVyX25hbWUgPSBk cm1fc3luY29ial9zdHViX2ZlbmNlX2dldF9uYW1lLAotCS5nZXRfdGltZWxpbmVfbmFtZSA9IGRy bV9zeW5jb2JqX3N0dWJfZmVuY2VfZ2V0X25hbWUsCi0JLmVuYWJsZV9zaWduYWxpbmcgPSBkcm1f c3luY29ial9zdHViX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcsCi0JLnJlbGVhc2UgPSBOVUxMLAot fTsKLQogc3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqKQogewogCXN0cnVjdCBkcm1fc3luY29ial9zdHViX2ZlbmNlICpm ZW5jZTsKQEAgLTIxNSw2ICszODAsMTIxIEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNzaWdu X251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKIAlyZXR1cm4gMDsKIH0K IAorc3RhdGljIHN0cnVjdCBkcm1fc3luY29ial93YWl0X3B0ICoKK2RybV9zeW5jb2JqX3RpbWVs aW5lX2xvb2t1cF93YWl0X3B0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50 KQoreworICAgIHN0cnVjdCByYl9ub2RlICpub2RlID0gc3luY29iai0+c3luY29ial90aW1lbGlu ZS53YWl0X3B0X3RyZWUucmJfbm9kZTsKKyAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdF9wdCAq d2FpdF9wdCA9IE5VTEw7CisKKworICAgIHNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisgICAg d2hpbGUobm9kZSkgeworCSAgICBpbnQgcmVzdWx0ID0gcG9pbnQgLSB3YWl0X3B0LT52YWx1ZTsK KworCSAgICB3YWl0X3B0ID0gcmJfZW50cnkobm9kZSwgc3RydWN0IGRybV9zeW5jb2JqX3dhaXRf cHQsIG5vZGUpOworCSAgICBpZiAocmVzdWx0IDwgMCkKKwkJICAgIG5vZGUgPSBub2RlLT5yYl9s ZWZ0OworCSAgICBlbHNlIGlmIChyZXN1bHQgPiAwKQorCQkgICAgbm9kZSA9IG5vZGUtPnJiX3Jp Z2h0OworCSAgICBlbHNlCisJCSAgICBicmVhazsKKyAgICB9CisgICAgc3Bpbl91bmxvY2soJnN5 bmNvYmotPmxvY2spOworCisgICAgcmV0dXJuIHdhaXRfcHQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg ZHJtX3N5bmNvYmpfd2FpdF9wdCAqCitkcm1fc3luY29ial90aW1lbGluZV9jcmVhdGVfd2FpdF9w dChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCkKK3sKKwlzdHJ1Y3QgZHJt X3N5bmNvYmpfd2FpdF9wdCAqd2FpdF9wdDsKKwlzdHJ1Y3QgcmJfbm9kZSAqKm5ldyA9ICYoc3lu Y29iai0+c3luY29ial90aW1lbGluZS53YWl0X3B0X3RyZWUucmJfbm9kZSksICpwYXJlbnQgPSBO VUxMOworCisJd2FpdF9wdCA9IGt6YWxsb2Moc2l6ZW9mKCp3YWl0X3B0KSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCF3YWl0X3B0KQorCQlyZXR1cm4gTlVMTDsKKwlzcGluX2xvY2tfaW5pdCgmd2FpdF9w dC0+YmFzZS5sb2NrKTsKKwlkbWFfZmVuY2VfaW5pdCgmd2FpdF9wdC0+YmFzZS5iYXNlLAorCQkg ICAgICAgJmRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzLAorCQkgICAgICAgJndhaXRfcHQtPmJh c2UubG9jaywKKwkJICAgICAgIHN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUudGltZWxpbmVfY29u dGV4dCwgcG9pbnQpOworCXdhaXRfcHQtPnZhbHVlID0gcG9pbnQ7CisKKwkvKiB3YWl0IHB0IG11 c3QgYmUgaW4gYW4gb3JkZXIsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBsb29rdXAgYW5kIHNpZ25h bAorCSAqIGl0ICovCisJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwlpZiAocG9pbnQgPD0g c3luY29iai0+c3luY29ial90aW1lbGluZS50aW1lbGluZSkKKwkJZG1hX2ZlbmNlX3NpZ25hbCgm d2FpdF9wdC0+YmFzZS5iYXNlKTsKKwl3aGlsZSgqbmV3KSB7CisJCXN0cnVjdCBkcm1fc3luY29i al93YWl0X3B0ICp0aGlzID0KKwkJCXJiX2VudHJ5KCpuZXcsIHN0cnVjdCBkcm1fc3luY29ial93 YWl0X3B0LCBub2RlKTsKKwkJaW50IHJlc3VsdCA9IHdhaXRfcHQtPnZhbHVlIC0gdGhpcy0+dmFs dWU7CisKKwkJcGFyZW50ID0gKm5ldzsKKwkJaWYgKHJlc3VsdCA8IDApCisJCQluZXcgPSAmKCgq bmV3KS0+cmJfbGVmdCk7CisJCWVsc2UgaWYgKHJlc3VsdCA+IDApCisJCQluZXcgPSAmKCgqbmV3 KS0+cmJfcmlnaHQpOworCQllbHNlCisJCQlnb3RvIGV4aXN0OworCX0KKworCXJiX2xpbmtfbm9k ZSgmd2FpdF9wdC0+bm9kZSwgcGFyZW50LCBuZXcpOworCXJiX2luc2VydF9jb2xvcigmd2FpdF9w dC0+bm9kZSwgJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUud2FpdF9wdF90cmVlKTsKKwlzcGlu X3VubG9jaygmc3luY29iai0+bG9jayk7CisJcmV0dXJuIHdhaXRfcHQ7CitleGlzdDoKKwlzcGlu X3VubG9jaygmc3luY29iai0+bG9jayk7CisJZG1hX2ZlbmNlX3B1dCgmd2FpdF9wdC0+YmFzZS5i YXNlKTsKKwl3YWl0X3B0ID0gZHJtX3N5bmNvYmpfdGltZWxpbmVfbG9va3VwX3dhaXRfcHQoc3lu Y29iaiwgcG9pbnQpOworCXJldHVybiB3YWl0X3B0OworfQorCitzdGF0aWMgc3RydWN0IGRtYV9m ZW5jZSAqCitkcm1fc3luY29ial90aW1lbGluZV9wb2ludF9nZXQoc3RydWN0IGRybV9zeW5jb2Jq ICpzeW5jb2JqLCB1NjQgcG9pbnQsIHU2NCBmbGFnKQoreworCXN0cnVjdCBkcm1fc3luY29ial93 YWl0X3B0ICp3YWl0X3B0OworCisJLyogYWxyZWFkeSBzaWduYWxlZCwgc2ltcGx5IHJldHVybiBh IHNpZ25hbGVkIHN0dWIgZmVuY2UgKi8KKwlpZiAocG9pbnQgPD0gc3luY29iai0+c3luY29ial90 aW1lbGluZS50aW1lbGluZSkgeworCQlzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSAqZmVu Y2U7CisKKwkJZmVuY2UgPSBremFsbG9jKHNpemVvZigqZmVuY2UpLCBHRlBfS0VSTkVMKTsKKwkJ aWYgKGZlbmNlID09IE5VTEwpCisJCQlyZXR1cm4gTlVMTDsKKworCQlzcGluX2xvY2tfaW5pdCgm ZmVuY2UtPmxvY2spOworCQlkbWFfZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsICZkcm1fc3luY29i al9zdHViX2ZlbmNlX29wcywKKwkJCSAgICAgICAmZmVuY2UtPmxvY2ssIDAsIDApOworCQlkbWFf ZmVuY2Vfc2lnbmFsKCZmZW5jZS0+YmFzZSk7CisJCXJldHVybiAmZmVuY2UtPmJhc2U7CisJfQor CisJLyogY2hlY2sgaWYgdGhlIHdhaXQgcHQgZXhpc3RzICovCisJd2FpdF9wdCA9IGRybV9zeW5j b2JqX3RpbWVsaW5lX2xvb2t1cF93YWl0X3B0KHN5bmNvYmosIHBvaW50KTsKKwlpZiAoIXdhaXRf cHQpIHsKKwkJLyogVGhpcyBpcyBhIG5ldyB3YWl0IHB0LCBzbyBjcmVhdGUgaXQgKi8KKwkJd2Fp dF9wdCA9IGRybV9zeW5jb2JqX3RpbWVsaW5lX2NyZWF0ZV93YWl0X3B0KHN5bmNvYmosIHBvaW50 KTsKKwkJaWYgKCF3YWl0X3B0KQorCQkJcmV0dXJuIE5VTEw7CisJfQorCWlmICh3YWl0X3B0KSB7 CisJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCQlpbnQgcmV0ID0KKwkJCXdhaXRfZXZlbnRf aW50ZXJydXB0aWJsZV90aW1lb3V0KHN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUud3EsCisJCQkJ d2FpdF9wdC0+dmFsdWUgPD0gc3luY29iai0+c3luY29ial90aW1lbGluZS5zaWduYWxfcG9pbnQs CisJCQkJbXNlY3NfdG9famlmZmllcygxMDAwMCkpOyAvKiB3YWl0IDEwcyAqLworCisJCWlmIChy ZXQgPD0gMCkKKwkJCXJldHVybiBOVUxMOworCQlyY3VfcmVhZF9sb2NrKCk7CisJCWZlbmNlID0g ZG1hX2ZlbmNlX2dldF9yY3UoJndhaXRfcHQtPmJhc2UuYmFzZSk7CisJCXJjdV9yZWFkX3VubG9j aygpOworCQlyZXR1cm4gZmVuY2U7CisJfQorCXJldHVybiBOVUxMOworfQorCiAvKioKICAqIGRy bV9zeW5jb2JqX2ZpbmRfZmVuY2UgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSB0aGUgZmVuY2UgaW4g YSBzeW5jIG9iamVjdAogICogQGZpbGVfcHJpdmF0ZTogZHJtIGZpbGUgcHJpdmF0ZSBwb2ludGVy CkBAIC0yNDAsNyArNTIwLDE3IEBAIGludCBkcm1fc3luY29ial9maW5kX2ZlbmNlKHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2YXRlLAogCWlmICghc3luY29iaikKIAkJcmV0dXJuIC1FTk9FTlQ7 CiAKLQkqZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7CisJaWYgKHN5bmNv YmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9OT1JNQUwpIHsKKwkJLyogTk9STUFMIHN5bmNv YmogZG9lc24ndCBjYXJlIHBvaW50IHZhbHVlICovCisJCVdBUk5fT04ocG9pbnQgIT0gMCk7CisJ CSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKKwl9IGVsc2UgaWYgKHN5 bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgeworCQkqZmVuY2UgPSBk cm1fc3luY29ial90aW1lbGluZV9wb2ludF9nZXQoc3luY29iaiwgcG9pbnQsCisJCQkJCQkJRFJN X1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpOworCX0gZWxzZSB7CisJCURSTV9F UlJPUigiRG9uJ3Qgc3VwcG9ydCB0aGlzIHR5cGUgc3luY29ialxuIik7CisJCSpmZW5jZSA9IE5V TEw7CisJfQogCWlmICghKmZlbmNlKSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJfQpAQCAtMjQ5LDYg KzUzOSwzNCBAQCBpbnQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdmF0ZSwKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZF9mZW5jZSk7CiAK K3N0YXRpYyB2b2lkIGRybV9zeW5jb2JqX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGRybV9zeW5jb2Jq ICpzeW5jb2JqLAorCQkJCSAgICAgIHN0cnVjdCBkcm1fc3luY29ial90aW1lbGluZSAqc3luY29i al90aW1lbGluZSkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqbm9kZSA9IE5VTEw7CisJc3RydWN0IGRy bV9zeW5jb2JqX3dhaXRfcHQgKndhaXRfcHQgPSBOVUxMOworCXN0cnVjdCBkcm1fc3luY29ial9z aWduYWxfcHQgKnNpZ25hbF9wdCA9IE5VTEwsICp0bXA7CisKKwlzcGluX2xvY2soJnN5bmNvYmot PmxvY2spOworCWZvcihub2RlID0gcmJfZmlyc3QoJnN5bmNvYmpfdGltZWxpbmUtPndhaXRfcHRf dHJlZSk7CisJICAgIG5vZGUgIT0gTlVMTDsgKSB7CisJCXdhaXRfcHQgPSByYl9lbnRyeShub2Rl LCBzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdF9wdCwgbm9kZSk7CisJCW5vZGUgPSByYl9uZXh0KG5v ZGUpOworCQlyYl9lcmFzZSgmd2FpdF9wdC0+bm9kZSwKKwkJCSAmc3luY29ial90aW1lbGluZS0+ d2FpdF9wdF90cmVlKTsKKwkJUkJfQ0xFQVJfTk9ERSgmd2FpdF9wdC0+bm9kZSk7CisJCS8qIGtm cmVlKHdhaXRfcHQpIGlzIGV4Y3V0ZWQgYnkgZmVuY2UgcHV0ICovCisJCWRtYV9mZW5jZV9wdXQo JndhaXRfcHQtPmJhc2UuYmFzZSk7CisJfQorCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzaWdu YWxfcHQsIHRtcCwKKwkJCQkgJnN5bmNvYmpfdGltZWxpbmUtPnNpZ25hbF9wdF9saXN0LCBsaXN0 KSB7CisJCWxpc3RfZGVsKCZzaWduYWxfcHQtPmxpc3QpOworCQlkbWFfZmVuY2VfcHV0KHNpZ25h bF9wdC0+c2lnbmFsX2ZlbmNlKTsKKwkJZG1hX2ZlbmNlX3B1dChzaWduYWxfcHQtPnByZV9wdF9i YXNlKTsKKwkJZG1hX2ZlbmNlX3B1dCgmc2lnbmFsX3B0LT5iYXNlLmJhc2UpOworCX0KKwlzcGlu X3VubG9jaygmc3luY29iai0+bG9jayk7Cit9CisKIC8qKgogICogZHJtX3N5bmNvYmpfZnJlZSAt IGZyZWUgYSBzeW5jIG9iamVjdC4KICAqIEBrcmVmOiBrcmVmIHRvIGZyZWUuCkBAIC0yNjEsMTAg KzU3OSwyMyBAQCB2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAJCQkJ CQkgICBzdHJ1Y3QgZHJtX3N5bmNvYmosCiAJCQkJCQkgICByZWZjb3VudCk7CiAJZHJtX3N5bmNv YmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqLCBOVUxMLCAwKTsKKwlkcm1fc3luY29ial90aW1lbGlu ZV9maW5pKHN5bmNvYmosICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lKTsKIAlrZnJlZShzeW5j b2JqKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7CiAKK3N0YXRpYyB2b2lk IGRybV9zeW5jb2JqX3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lCisJ CQkJICAgICAgKnN5bmNvYmpfdGltZWxpbmUpCit7CisJc3luY29ial90aW1lbGluZS0+dGltZWxp bmVfY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOworCXN5bmNvYmpfdGltZWxp bmUtPnRpbWVsaW5lID0gMDsKKwlzeW5jb2JqX3RpbWVsaW5lLT5zaWduYWxfcG9pbnQgPSAwOwor CWluaXRfd2FpdHF1ZXVlX2hlYWQoJnN5bmNvYmpfdGltZWxpbmUtPndxKTsKKworCXN5bmNvYmpf dGltZWxpbmUtPndhaXRfcHRfdHJlZSA9IFJCX1JPT1Q7CisJSU5JVF9MSVNUX0hFQUQoJnN5bmNv YmpfdGltZWxpbmUtPnNpZ25hbF9wdF9saXN0KTsKK30KKwogLyoqCiAgKiBkcm1fc3luY29ial9j cmVhdGUgLSBjcmVhdGUgYSBuZXcgc3luY29iagogICogQG91dF9zeW5jb2JqOiByZXR1cm5lZCBz eW5jb2JqCkBAIC0yOTAsNiArNjIxLDEyIEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0 IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAogCWtyZWZfaW5pdCgm c3luY29iai0+cmVmY291bnQpOwogCUlOSVRfTElTVF9IRUFEKCZzeW5jb2JqLT5jYl9saXN0KTsK IAlzcGluX2xvY2tfaW5pdCgmc3luY29iai0+bG9jayk7CisJaWYgKGZsYWdzICYgRFJNX1NZTkNP QkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpIHsKKwkJc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JK X1RZUEVfVElNRUxJTkU7CisJCWRybV9zeW5jb2JqX3RpbWVsaW5lX2luaXQoJnN5bmNvYmotPnN5 bmNvYmpfdGltZWxpbmUpOworCX0gZWxzZSB7CisJCXN5bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09C Sl9UWVBFX05PUk1BTDsKKwl9CiAKIAlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfU0lH TkFMRUQpIHsKIAkJcmV0ID0gZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN5bmNvYmop OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCBiL2luY2x1ZGUvZHJtL2Ry bV9zeW5jb2JqLmgKaW5kZXggMzM1ZWM1MDEwMDFhLi4zNDJiM2NlZDNlNTYgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmou aApAQCAtMzAsNiArMzAsMjUgQEAKIAogc3RydWN0IGRybV9zeW5jb2JqX2NiOwogCitlbnVtIGRy bV9zeW5jb2JqX3R5cGUgeworCURSTV9TWU5DT0JKX1RZUEVfTk9STUFMLAorCURSTV9TWU5DT0JK X1RZUEVfVElNRUxJTkUKK307CisKK3N0cnVjdCBkcm1fc3luY29ial90aW1lbGluZSB7CisJd2Fp dF9xdWV1ZV9oZWFkX3QJd3E7CisJdTY0IHRpbWVsaW5lX2NvbnRleHQ7CisJLyoqCisJICogQHRp bWVsaW5lOiBzeW5jb2JqIHRpbWVsaW5lCisJICovCisJdTY0IHRpbWVsaW5lOworCXU2NCBzaWdu YWxfcG9pbnQ7CisKKworCXN0cnVjdCByYl9yb290IHdhaXRfcHRfdHJlZTsKKwlzdHJ1Y3QgbGlz dF9oZWFkIHNpZ25hbF9wdF9saXN0OworfTsKKwogLyoqCiAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmog LSBzeW5jIG9iamVjdC4KICAqCkBAIC00MCw2ICs1OSwxNSBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmog ewogCSAqIEByZWZjb3VudDogUmVmZXJlbmNlIGNvdW50IG9mIHRoaXMgb2JqZWN0LgogCSAqLwog CXN0cnVjdCBrcmVmIHJlZmNvdW50OworCS8qKgorCSAqIEB0eXBlOiBpbmRpY2F0ZSBzeW5jb2Jq IHR5cGUKKwkgKi8KKwllbnVtIGRybV9zeW5jb2JqX3R5cGUgdHlwZTsKKwkvKioKKwkgKiBAc3lu Y29ial90aW1lbGluZTogdGltZWxpbmUKKwkgKi8KKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfdGltZWxp bmUgc3luY29ial90aW1lbGluZTsKKwogCS8qKgogCSAqIEBmZW5jZToKIAkgKiBOVUxMIG9yIGEg cG9pbnRlciB0byB0aGUgZmVuY2UgYm91bmQgdG8gdGhpcyBvYmplY3QuCmRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkvZHJtL2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaAppbmRleCAzMDBm MzM2NjMzZjIuLmNlYmRiMjU0MWViNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm0u aAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCkBAIC03MTcsNiArNzE3LDcgQEAgc3RydWN0 IGRybV9wcmltZV9oYW5kbGUgewogc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSB7CiAJX191MzIg aGFuZGxlOwogI2RlZmluZSBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQgKDEgPDwgMCkKKyNk ZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUgKDEgPDwgMSkKIAlfX3UzMiBm bGFnczsKIH07CiAKLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cg==