From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 2/7] drm: add syncobj timeline support v8 Date: Mon, 15 Oct 2018 16:55:48 +0800 Message-ID: <20181015085553.30656-2-david1.zhou@amd.com> References: <20181015085553.30656-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: <20181015085553.30656-1-david1.zhou@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: amd-gfx@lists.freedesktop.org, Daniel Rakos , Dave Airlie , Christian Konig List-Id: dri-devel@lists.freedesktop.org VGhpcyBwYXRjaCBpcyBmb3IgVktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZSBleHRlbnNpb24sIHNl bWFwaG9yZSBpcyBjYWxsZWQgc3luY29iaiBpbiBrZXJuZWwgc2lkZToKVGhpcyBleHRlbnNpb24g aW50cm9kdWNlcyBhIG5ldyB0eXBlIG9mIHN5bmNvYmogdGhhdCBoYXMgYW4gaW50ZWdlciBwYXls b2FkCmlkZW50aWZ5aW5nIGEgcG9pbnQgaW4gYSB0aW1lbGluZS4gU3VjaCB0aW1lbGluZSBzeW5j b2JqcyBzdXBwb3J0IHRoZQpmb2xsb3dpbmcgb3BlcmF0aW9uczoKICAgKiBDUFUgcXVlcnkgLSBB IGhvc3Qgb3BlcmF0aW9uIHRoYXQgYWxsb3dzIHF1ZXJ5aW5nIHRoZSBwYXlsb2FkIG9mIHRoZQog ICAgIHRpbWVsaW5lIHN5bmNvYmouCiAgICogQ1BVIHdhaXQgLSBBIGhvc3Qgb3BlcmF0aW9uIHRo YXQgYWxsb3dzIGEgYmxvY2tpbmcgd2FpdCBmb3IgYQogICAgIHRpbWVsaW5lIHN5bmNvYmogdG8g cmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCiAgICogRGV2aWNlIHdhaXQgLSBBIGRldmljZSBvcGVy YXRpb24gdGhhdCBhbGxvd3Mgd2FpdGluZyBmb3IgYQogICAgIHRpbWVsaW5lIHN5bmNvYmogdG8g cmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCiAgICogRGV2aWNlIHNpZ25hbCAtIEEgZGV2aWNlIG9w ZXJhdGlvbiB0aGF0IGFsbG93cyBhZHZhbmNpbmcgdGhlCiAgICAgdGltZWxpbmUgc3luY29iaiB0 byBhIHNwZWNpZmllZCB2YWx1ZS4KCnYxOgpTaW5jZSBpdCdzIGEgdGltZWxpbmUsIHRoYXQgbWVh bnMgdGhlIGZyb250IHRpbWUgcG9pbnQoUFQpIGFsd2F5cyBpcyBzaWduYWxlZCBiZWZvcmUgdGhl IGxhdGUgUFQuCmEuIHNpZ25hbCBQVCBkZXNpZ246ClNpZ25hbCBQVCBmZW5jZSBOIGRlcGVuZHMg b24gUFRbTi0xXSBmZW5jZSBhbmQgc2lnbmFsIG9wZXJ0aW9uIGZlbmNlLCB3aGVuIFBUW05dIGZl bmNlIGlzIHNpZ25hbGVkLAp0aGUgdGltZWxpbmUgd2lsbCBpbmNyZWFzZSB0byB2YWx1ZSBvZiBQ VFtOXS4KYi4gd2FpdCBQVCBkZXNpZ246CldhaXQgUFQgZmVuY2UgaXMgc2lnbmFsZWQgYnkgcmVh Y2hpbmcgdGltZWxpbmUgcG9pbnQgdmFsdWUsIHdoZW4gdGltZWxpbmUgaXMgaW5jcmVhc2luZywg d2lsbCBjb21wYXJlCndhaXQgUFRzIHZhbHVlIHdpdGggbmV3IHRpbWVsaW5lIHZhbHVlLCBpZiBQ VCB2YWx1ZSBpcyBsb3dlciB0aGFuIHRpbWVsaW5lIHZhbHVlLCB0aGVuIHdhaXQgUFQgd2lsbCBi ZQpzaWduYWxlZCwgb3RoZXJ3aXNlIGtlZXAgaW4gbGlzdC4gc3luY29iaiB3YWl0IG9wZXJhdGlv biBjYW4gd2FpdCBvbiBhbnkgcG9pbnQgb2YgdGltZWxpbmUsCnNvIG5lZWQgYSBSQiB0cmVlIHRv IG9yZGVyIHRoZW0uIEFuZCB3YWl0IFBUIGNvdWxkIGFoZWFkIG9mIHNpZ25hbCBQVCwgd2UgbmVl ZCBhIHN1bWlzc2lvbiBmZW5jZSB0bwpwZXJmb3JtIHRoYXQuCgp2MjoKMS4gcmVtb3ZlIHVudXNl ZCBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9OT1JNQUwuIChDaHJpc3RpYW4pCjIuIG1vdmUgdW5l eHBvc2VkIGRlbml0aW9ucyB0byAuYyBmaWxlLiAoRGFuaWVsIFZldHRlcikKMy4gc3BsaXQgdXAg dGhlIGNoYW5nZSB0byBkcm1fc3luY29ial9maW5kX2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRj aC4gKENocmlzdGlhbikKNC4gc3BsaXQgdXAgdGhlIGNoYW5nZSB0byBkcm1fc3luY29ial9yZXBs YWNlX2ZlbmNlKCkgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KNS4gZHJvcCB0aGUgc3VibWlzc2lvbl9m ZW5jZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW5zdGVhZCB1c2Ugd2FpdF9ldmVudCgpIGZvciB0aGF0 LiAoQ2hyaXN0aWFuKQo2LiBXQVJOX09OKHBvaW50ICE9IDApIGZvciBOT1JNQUwgdHlwZSBzeW5j b2JqIGNhc2UuIChEYW5pZWwgVmV0dGVyKQoKdjM6CjEuIHJlcGxhY2Ugbm9ybWFsIHN5bmNvYmog d2l0aCB0aW1lbGluZSBpbXBsZW1lbmF0aW9uLiAoVmV0dGVyIGFuZCBDaHJpc3RpYW4pCiAgICBh LiBub3JtYWwgc3luY29iaiBzaWduYWwgb3Agd2lsbCBjcmVhdGUgYSBzaWduYWwgUFQgdG8gdGFp bCBvZiBzaWduYWwgcHQgbGlzdC4KICAgIGIuIG5vcm1hbCBzeW5jb2JqIHdhaXQgb3Agd2lsbCBj cmVhdGUgYSB3YWl0IHB0IHdpdGggbGFzdCBzaWduYWwgcG9pbnQsIGFuZCB0aGlzIHdhaXQgUFQg aXMgb25seSBzaWduYWxlZCBieSByZWxhdGVkIHNpZ25hbCBwb2ludCBQVC4KMi4gbWFueSBidWcg Zml4IGFuZCBjbGVhbiB1cAozLiBzdHViIGZlbmNlIG1vdmluZyBpcyBtb3ZlZCB0byBvdGhlciBw YXRjaC4KCnY077yaCjEuIGZpeCBSQiB0cmVlIGxvb3Agd2l0aCB3aGlsZShub2RlPXJiX2ZpcnN0 KC4uLikpLiAoQ2hyaXN0aWFuKQoyLiBmaXggc3luY29iaiBsaWZlY3ljbGUuIChDaHJpc3RpYW4p CjMuIG9ubHkgZW5hYmxlX3NpZ25hbGluZyB3aGVuIHRoZXJlIGlzIHdhaXRfcHQuIChDaHJpc3Rp YW4pCjQuIGZpeCB0aW1lbGluZSBwYXRoIGlzc3Vlcy4KNS4gd3JpdGUgYSB0aW1lbGluZSB0ZXN0 IGluIGxpYmRybQoKdjU6IChDaHJpc3RpYW4pCjEuIHNlbWFwaG9yZSBpcyBjYWxsZWQgc3luY29i aiBpbiBrZXJuZWwgc2lkZS4KMi4gZG9uJ3QgbmVlZCAndGltZWxpbmUnIGNoYXJhY3RlcnMgaW4g c29tZSBmdW5jdGlvbiBuYW1lLgozLiBrZWVwIHN5bmNvYmogY2IuCgp2NjogKENocmlzdGlhbikK MS4gbWVyZ2Ugc3luY29ial90aW1lbGluZSB0byBzeW5jb2JqIHN0cnVjdHVyZS4KMi4gc2ltcGxp Znkgc29tZSBjaGVjayBzZW50ZW5jZXMuCjMuIHNvbWUgbWlzYyBjaGFuZ2UuCjQuIGZpeCBDVFMg ZmFpbGVkIGlzc3VlLgoKdjc6IChDaHJpc3RpYW4pCjEuIGVycm9yIGhhbmRsaW5nIHdoZW4gY3Jl YXRpbmcgc2lnbmFsIHB0LgoyLiByZW1vdmUgdGltZWxpbmUgbmFtaW5nIGluIGZ1bmMuCjMuIGV4 cG9ydCBmbGFncyBpbiBmaW5kX2ZlbmNlLgo0LiBhbGxvdyByZXNldCB0aW1lbGluZS4KCnY4Ogox LiB1c2Ugd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlIHdpdGhvdXQgdGltZW91dAoyLiByZW5hbWUg X1RZUEVfSU5ESVZJRFVBTCB0byBfVFlQRV9CSU5BUlkKCmluZGl2aWR1YWwgc3luY29iaiBpcyB0 ZXN0ZWQgYnkgLi9kZXFwLXZrIC1uIGRFUVAtVksqc2VtYXBob3JlKgp0aW1lbGluZSBzeW5jb2Jq IGlzIHRlc3RlZCBieSAuL2FtZGdwdV90ZXN0IC1zIDkKClNpZ25lZC1vZmYtYnk6IENodW5taW5n IFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+CkNjOiBDaHJpc3RpYW4gS29uaWcgPGNocmlzdGlh bi5rb2VuaWdAYW1kLmNvbT4KQ2M6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CkNj OiBEYW5pZWwgUmFrb3MgPERhbmllbC5SYWtvc0BhbWQuY29tPgpDYzogRGFuaWVsIFZldHRlciA8 ZGFuaWVsQGZmd2xsLmNoPgpSZXZpZXdlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFu LmtvZW5pZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jICAgICAg ICAgICAgICB8IDI4NyArKysrKysrKysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICAgMiArLQogaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmou aCAgICAgICAgICAgICAgICAgIHwgIDY1ICsrLS0tCiBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9u cygrKSwgNzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9z eW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwppbmRleCBmNzk2YzlmYzM4 NTguLjY3NDcyYmQ3N2M4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2Jq LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKQEAgLTU2LDYgKzU2LDkgQEAK ICNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKICNpbmNsdWRlIDxkcm0vZHJtX3N5bmNvYmouaD4K IAorLyogbWVyZ2Ugbm9ybWFsIHN5bmNvYmogdG8gdGltZWxpbmUgc3luY29iaiwgdGhlIHBvaW50 IGludGVydmFsIGlzIDEgKi8KKyNkZWZpbmUgRFJNX1NZTkNPQkpfQklOQVJZX1BPSU5UIDEKKwog c3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2UgewogCXN0cnVjdCBkbWFfZmVuY2UgYmFzZTsK IAlzcGlubG9ja190IGxvY2s7CkBAIC04Miw2ICs4NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGRtYV9mZW5jZV9vcHMgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9vcHMgPSB7CiAJLnJlbGVhc2Ug PSBkcm1fc3luY29ial9zdHViX2ZlbmNlX3JlbGVhc2UsCiB9OwogCitzdHJ1Y3QgZHJtX3N5bmNv Ympfc2lnbmFsX3B0IHsKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2FycmF5ICpiYXNlOworCXU2NCAgICB2 YWx1ZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cit9OwogCiAvKioKICAqIGRybV9zeW5jb2Jq X2ZpbmQgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSBhIHN5bmMgb2JqZWN0LgpAQCAtMTI0LDggKzEz Miw4IEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhz dHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiB7CiAJaW50IHJldDsKIAotCSpmZW5jZSA9IGRy bV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKLQlpZiAoKmZlbmNlKQorCXJldCA9IGRybV9z eW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAwLCAwLCBmZW5jZSk7CisJaWYgKCFyZXQpCiAJ CXJldHVybiAxOwogCiAJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKQEAgLTEzMywxMCArMTQx LDEyIEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhz dHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJICogaGF2ZSB0aGUgbG9jaywgdHJ5IG9uZSBt b3JlIHRpbWUganVzdCB0byBiZSBzdXJlIHdlIGRvbid0IGFkZCBhCiAJICogY2FsbGJhY2sgd2hl biBhIGZlbmNlIGhhcyBhbHJlYWR5IGJlZW4gc2V0LgogCSAqLwotCWlmIChzeW5jb2JqLT5mZW5j ZSkgewotCQkqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQo c3luY29iai0+ZmVuY2UsCi0JCQkJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJnN5bmNvYmotPmxvY2sp KSk7Ci0JCXJldCA9IDE7CisJaWYgKCFsaXN0X2VtcHR5KCZzeW5jb2JqLT5zaWduYWxfcHRfbGlz dCkpIHsKKwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOworCQlkcm1fc3luY29ial9zZWFy Y2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgZmVuY2UpOworCQlpZiAoKmZlbmNlKQorCQkJcmV0dXJu IDE7CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CiAJfSBlbHNlIHsKIAkJKmZlbmNlID0g TlVMTDsKIAkJZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tlZChzeW5jb2JqLCBjYiwgZnVu Yyk7CkBAIC0xNjQsNiArMTc0LDE1OSBAQCB2b2lkIGRybV9zeW5jb2JqX3JlbW92ZV9jYWxsYmFj ayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxv Y2spOwogfQogCitzdGF0aWMgdm9pZCBkcm1fc3luY29ial9pbml0KHN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaikKK3sKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCXN5bmNvYmotPnRp bWVsaW5lX2NvbnRleHQgPSBkbWFfZmVuY2VfY29udGV4dF9hbGxvYygxKTsKKwlzeW5jb2JqLT50 aW1lbGluZSA9IDA7CisJc3luY29iai0+c2lnbmFsX3BvaW50ID0gMDsKKwlpbml0X3dhaXRxdWV1 ZV9oZWFkKCZzeW5jb2JqLT53cSk7CisKKwlJTklUX0xJU1RfSEVBRCgmc3luY29iai0+c2lnbmFs X3B0X2xpc3QpOworCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKK30KKworc3RhdGljIHZv aWQgZHJtX3N5bmNvYmpfZmluaShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCit7CisJc3Ry dWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0ID0gTlVMTCwgKnRtcDsKKworCXNw aW5fbG9jaygmc3luY29iai0+bG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25h bF9wdCwgdG1wLAorCQkJCSAmc3luY29iai0+c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsKKwkJbGlz dF9kZWwoJnNpZ25hbF9wdC0+bGlzdCk7CisJCWRtYV9mZW5jZV9wdXQoJnNpZ25hbF9wdC0+YmFz ZS0+YmFzZSk7CisJCWtmcmVlKHNpZ25hbF9wdCk7CisJfQorCXNwaW5fdW5sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKK30KKworc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UKKypkcm1fc3luY29ial9maW5k X3NpZ25hbF9wdF9mb3JfcG9pbnQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCSAg ICAgIHVpbnQ2NF90IHBvaW50KQoreworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNp Z25hbF9wdDsKKworCWlmICgoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVM SU5FKSAmJgorCSAgICAocG9pbnQgPD0gc3luY29iai0+dGltZWxpbmUpKSB7CisJCXN0cnVjdCBk cm1fc3luY29ial9zdHViX2ZlbmNlICpmZW5jZSA9CisJCQlremFsbG9jKHNpemVvZihzdHJ1Y3Qg ZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSksCisJCQkJR0ZQX0tFUk5FTCk7CisKKwkJaWYgKCFmZW5j ZSkKKwkJCXJldHVybiBOVUxMOworCQlzcGluX2xvY2tfaW5pdCgmZmVuY2UtPmxvY2spOworCQlk bWFfZmVuY2VfaW5pdCgmZmVuY2UtPmJhc2UsCisJCQkgICAgICAgJmRybV9zeW5jb2JqX3N0dWJf ZmVuY2Vfb3BzLAorCQkJICAgICAgICZmZW5jZS0+bG9jaywKKwkJCSAgICAgICBzeW5jb2JqLT50 aW1lbGluZV9jb250ZXh0LAorCQkJICAgICAgIHBvaW50KTsKKworCQlkbWFfZmVuY2Vfc2lnbmFs KCZmZW5jZS0+YmFzZSk7CisJCXJldHVybiAmZmVuY2UtPmJhc2U7CisJfQorCisJbGlzdF9mb3Jf ZWFjaF9lbnRyeShzaWduYWxfcHQsICZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwgbGlzdCkgewor CQlpZiAocG9pbnQgPiBzaWduYWxfcHQtPnZhbHVlKQorCQkJY29udGludWU7CisJCWlmICgoc3lu Y29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0JJTkFSWSkgJiYKKwkJICAgIChwb2ludCAh PSBzaWduYWxfcHQtPnZhbHVlKSkKKwkJCWNvbnRpbnVlOworCQlyZXR1cm4gZG1hX2ZlbmNlX2dl dCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRp YyBpbnQgZHJtX3N5bmNvYmpfY3JlYXRlX3NpZ25hbF9wdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5 bmNvYmosCisJCQkJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAorCQkJCQl1NjQgcG9pbnQpCit7 CisJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0ID0KKwkJa3phbGxvYyhz aXplb2Yoc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCksIEdGUF9LRVJORUwpOworCXN0cnVj dCBkcm1fc3luY29ial9zaWduYWxfcHQgKnRhaWxfcHQ7CisJc3RydWN0IGRtYV9mZW5jZSAqKmZl bmNlczsKKwlpbnQgbnVtX2ZlbmNlcyA9IDA7CisJaW50IHJldCA9IDAsIGk7CisKKwlpZiAoIXNp Z25hbF9wdCkKKwkJcmV0dXJuIC1FTk9NRU07CisJaWYgKCFmZW5jZSkKKwkJZ290byBvdXQ7CisK KwlmZW5jZXMgPSBrbWFsbG9jX2FycmF5KHNpemVvZih2b2lkICopLCAyLCBHRlBfS0VSTkVMKTsK KwlpZiAoIWZlbmNlcykgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisJZmVu Y2VzW251bV9mZW5jZXMrK10gPSBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKKwkvKiB0aW1lbGluZSBz eW5jb2JqIG11c3QgdGFrZSB0aGlzIGRlcGVuZGVuY3kgKi8KKwlpZiAoc3luY29iai0+dHlwZSA9 PSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FKSB7CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9j ayk7CisJCWlmICghbGlzdF9lbXB0eSgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QpKSB7CisJCQl0 YWlsX3B0ID0gbGlzdF9sYXN0X2VudHJ5KCZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwKKwkJCQkJ CSAgc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCwgbGlzdCk7CisJCQlmZW5jZXNbbnVtX2Zl bmNlcysrXSA9IGRtYV9mZW5jZV9nZXQoJnRhaWxfcHQtPmJhc2UtPmJhc2UpOworCQl9CisJCXNw aW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwl9CisJc2lnbmFsX3B0LT5iYXNlID0gZG1hX2Zl bmNlX2FycmF5X2NyZWF0ZShudW1fZmVuY2VzLCBmZW5jZXMsCisJCQkJCQkgc3luY29iai0+dGlt ZWxpbmVfY29udGV4dCwKKwkJCQkJCSBwb2ludCwgZmFsc2UpOworCWlmICghc2lnbmFsX3B0LT5i YXNlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbDsKKwl9CisKKwlzcGluX2xvY2so JnN5bmNvYmotPmxvY2spOworCWlmIChzeW5jb2JqLT5zaWduYWxfcG9pbnQgPj0gcG9pbnQpIHsK KwkJRFJNX1dBUk4oIkEgbGF0ZXIgc2lnbmFsIGlzIHJlYWR5ISIpOworCQlzcGluX3VubG9jaygm c3luY29iai0+bG9jayk7CisJCWdvdG8gZXhpc3Q7CisJfQorCXNpZ25hbF9wdC0+dmFsdWUgPSBw b2ludDsKKwlsaXN0X2FkZF90YWlsKCZzaWduYWxfcHQtPmxpc3QsICZzeW5jb2JqLT5zaWduYWxf cHRfbGlzdCk7CisJc3luY29iai0+c2lnbmFsX3BvaW50ID0gcG9pbnQ7CisJc3Bpbl91bmxvY2so JnN5bmNvYmotPmxvY2spOworCXdha2VfdXBfYWxsKCZzeW5jb2JqLT53cSk7CisKKwlyZXR1cm4g MDsKK2V4aXN0OgorCWRtYV9mZW5jZV9wdXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CitmYWls OgorCWZvciAoaSA9IDA7IGkgPCBudW1fZmVuY2VzOyBpKyspCisJCWRtYV9mZW5jZV9wdXQoZmVu Y2VzW2ldKTsKKwlrZnJlZShmZW5jZXMpOworb3V0OgorCWtmcmVlKHNpZ25hbF9wdCk7CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfZ2FyYmFnZV9jb2xsZWN0aW9u KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2ln bmFsX3B0ICpzaWduYWxfcHQsICp0bXAsICp0YWlsX3B0OworCisJc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKKwl0YWlsX3B0ID0gbGlzdF9sYXN0X2VudHJ5KCZzeW5jb2JqLT5zaWduYWxfcHRf bGlzdCwKKwkJCQkgIHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsCisJCQkJICBsaXN0KTsK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2lnbmFsX3B0LCB0bXAsCisJCQkJICZzeW5jb2Jq LT5zaWduYWxfcHRfbGlzdCwgbGlzdCkgeworCQlpZiAoc3luY29iai0+dHlwZSA9PSBEUk1fU1lO Q09CSl9UWVBFX0JJTkFSWSAmJgorCQkgICAgc2lnbmFsX3B0ID09IHRhaWxfcHQpCisJCQljb250 aW51ZTsKKwkJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNl KSkgeworCQkJc3luY29iai0+dGltZWxpbmUgPSBzaWduYWxfcHQtPnZhbHVlOworCQkJbGlzdF9k ZWwoJnNpZ25hbF9wdC0+bGlzdCk7CisJCQlkbWFfZmVuY2VfcHV0KCZzaWduYWxfcHQtPmJhc2Ut PmJhc2UpOworCQkJa2ZyZWUoc2lnbmFsX3B0KTsKKwkJfSBlbHNlIHsKKwkJCS8qc2lnbmFsX3B0 IGlzIGluIG9yZGVyIGluIGxpc3QsIGZyb20gc21hbGwgdG8gYmlnLCBzbworCQkJICogdGhlIGxh dGVyIG11c3Qgbm90IGJlIHNpZ25hbCBlaXRoZXIgKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJ c3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOworfQogLyoqCiAgKiBkcm1fc3luY29ial9yZXBs YWNlX2ZlbmNlIC0gcmVwbGFjZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0LgogICogQHN5bmNvYmo6 IFN5bmMgb2JqZWN0IHRvIHJlcGxhY2UgZmVuY2UgaW4KQEAgLTE3NiwyOCArMzM5LDI5IEBAIHZv aWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmos CiAJCQkgICAgICAgdTY0IHBvaW50LAogCQkJICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl KQogewotCXN0cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZTsKLQlzdHJ1Y3QgZHJtX3N5bmNvYmpf Y2IgKmN1ciwgKnRtcDsKLQotCWlmIChmZW5jZSkKLQkJZG1hX2ZlbmNlX2dldChmZW5jZSk7Ci0K LQlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwotCi0Jb2xkX2ZlbmNlID0gcmN1X2RlcmVmZXJl bmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxk KCZzeW5jb2JqLT5sb2NrKSk7Ci0JcmN1X2Fzc2lnbl9wb2ludGVyKHN5bmNvYmotPmZlbmNlLCBm ZW5jZSk7CisJdTY0IHB0X3ZhbHVlID0gcG9pbnQ7CisKKwlkcm1fc3luY29ial9nYXJiYWdlX2Nv bGxlY3Rpb24oc3luY29iaik7CisJaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQ RV9CSU5BUlkpIHsKKwkJaWYgKCFmZW5jZSkgeworCQkJZHJtX3N5bmNvYmpfZmluaShzeW5jb2Jq KTsKKwkJCWRybV9zeW5jb2JqX2luaXQoc3luY29iaik7CisJCQlyZXR1cm47CisJCX0KKwkJcHRf dmFsdWUgPSBzeW5jb2JqLT5zaWduYWxfcG9pbnQgKworCQkJRFJNX1NZTkNPQkpfQklOQVJZX1BP SU5UOworCX0KKwlkcm1fc3luY29ial9jcmVhdGVfc2lnbmFsX3B0KHN5bmNvYmosIGZlbmNlLCBw dF92YWx1ZSk7CisJaWYgKGZlbmNlKSB7CisJCXN0cnVjdCBkcm1fc3luY29ial9jYiAqY3VyLCAq dG1wOwogCi0JaWYgKGZlbmNlICE9IG9sZF9mZW5jZSkgeworCQlzcGluX2xvY2soJnN5bmNvYmot PmxvY2spOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0bXAsICZzeW5jb2JqLT5j Yl9saXN0LCBub2RlKSB7CiAJCQlsaXN0X2RlbF9pbml0KCZjdXItPm5vZGUpOwogCQkJY3VyLT5m dW5jKHN5bmNvYmosIGN1cik7CiAJCX0KKwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwog CX0KLQotCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKLQotCWRtYV9mZW5jZV9wdXQob2xk X2ZlbmNlKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSk7CiAK QEAgLTIyMCw2ICszODQsNDYgQEAgc3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9o YW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQogCXJldHVybiAwOwogfQogCitzdGF0 aWMgaW50Citkcm1fc3luY29ial9wb2ludF9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2Jq LCB1NjQgcG9pbnQsIHU2NCBmbGFncywKKwkJICAgICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNl KQoreworCWludCByZXQgPSAwOworCisJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFH U19XQUlUX0ZPUl9TVUJNSVQpIHsKKwkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKHN5 bmNvYmotPndxLAorCQkJCQkgICAgICAgcG9pbnQgPD0gc3luY29iai0+c2lnbmFsX3BvaW50KTsK KwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCX0KKwlzcGluX2xvY2soJnN5bmNvYmot PmxvY2spOworCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZpbmRfc2lnbmFsX3B0X2Zvcl9wb2ludChz eW5jb2JqLCBwb2ludCk7CisJaWYgKCEqZmVuY2UpCisJCXJldCA9IC1FSU5WQUw7CisJc3Bpbl91 bmxvY2soJnN5bmNvYmotPmxvY2spOworCXJldHVybiByZXQ7Cit9CisKK2ludCBkcm1fc3luY29i al9zZWFyY2hfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCisJ CQkgICAgIHU2NCBmbGFncywgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQoreworCXU2NCBwdF92 YWx1ZSA9IHBvaW50OworCisJaWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWRy bV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKKwlpZiAoc3luY29iai0+dHlw ZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0JJTkFSWSkgeworCQkvKkJJTkFSWSBzeW5jb2JqIGFsd2F5 cyB3YWl0IG9uIGxhc3QgcHQgKi8KKwkJcHRfdmFsdWUgPSBzeW5jb2JqLT5zaWduYWxfcG9pbnQ7 CisKKwkJaWYgKHB0X3ZhbHVlID09IDApCisJCQlwdF92YWx1ZSArPSBEUk1fU1lOQ09CSl9CSU5B UllfUE9JTlQ7CisJfQorCXJldHVybiBkcm1fc3luY29ial9wb2ludF9nZXQoc3luY29iaiwgcHRf dmFsdWUsIGZsYWdzLCBmZW5jZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX3NlYXJj aF9mZW5jZSk7CisKIC8qKgogICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1cCBhbmQg cmVmZXJlbmNlIHRoZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0CiAgKiBAZmlsZV9wcml2YXRlOiBk cm0gZmlsZSBwcml2YXRlIHBvaW50ZXIKQEAgLTIyOCw3ICs0MzIsNyBAQCBzdGF0aWMgaW50IGRy bV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmop CiAgKiBAZmVuY2U6IG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBmZW5jZQogICoKICAqIFRoaXMgaXMg anVzdCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY29tYmluZXMgZHJtX3N5bmNvYmpfZmlu ZCgpIGFuZAotICogZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KCkuCisgKiBkcm1fc3luY29ial9sb29r dXBfZmVuY2UoKS4KICAqCiAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVy cm9yIHZhbHVlIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MgQGZlbmNlCiAgKiBjb250YWlucyBhIHJl ZmVyZW5jZSB0byB0aGUgZmVuY2UsIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQgYnkgY2FsbGluZwpA QCAtMjM5LDE1ICs0NDMsOSBAQCBpbnQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdmF0ZSwKIAkJCSAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKIHsK IAlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJp dmF0ZSwgaGFuZGxlKTsKLQlpbnQgcmV0ID0gMDsKLQotCWlmICghc3luY29iaikKLQkJcmV0dXJu IC1FTk9FTlQ7CisJaW50IHJldDsKIAotCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChz eW5jb2JqKTsKLQlpZiAoISpmZW5jZSkgewotCQlyZXQgPSAtRUlOVkFMOwotCX0KKwlyZXQgPSBk cm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgcG9pbnQsIGZsYWdzLCBmZW5jZSk7CiAJ ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CiB9CkBAIC0yNjQsNyArNDYy LDcgQEAgdm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogCXN0cnVjdCBk cm1fc3luY29iaiAqc3luY29iaiA9IGNvbnRhaW5lcl9vZihrcmVmLAogCQkJCQkJICAgc3RydWN0 IGRybV9zeW5jb2JqLAogCQkJCQkJICAgcmVmY291bnQpOwotCWRybV9zeW5jb2JqX3JlcGxhY2Vf ZmVuY2Uoc3luY29iaiwgMCwgTlVMTCk7CisJZHJtX3N5bmNvYmpfZmluaShzeW5jb2JqKTsKIAlr ZnJlZShzeW5jb2JqKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7CkBAIC0y OTQsNiArNDkyLDExIEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0IGRybV9zeW5jb2Jq ICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAogCWtyZWZfaW5pdCgmc3luY29iai0+cmVm Y291bnQpOwogCUlOSVRfTElTVF9IRUFEKCZzeW5jb2JqLT5jYl9saXN0KTsKIAlzcGluX2xvY2tf aW5pdCgmc3luY29iai0+bG9jayk7CisJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZ UEVfVElNRUxJTkUpCisJCXN5bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5F OworCWVsc2UKKwkJc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfQklOQVJZOworCWRy bV9zeW5jb2JqX2luaXQoc3luY29iaik7CiAKIAlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVB VEVfU0lHTkFMRUQpIHsKIAkJcmV0ID0gZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN5 bmNvYmopOwpAQCAtNTc2LDcgKzc3OSw4IEBAIGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlyZXR1cm4gLUVOT0RFVjsKIAogCS8q IG5vIHZhbGlkIGZsYWdzIHlldCAqLwotCWlmIChhcmdzLT5mbGFncyAmIH5EUk1fU1lOQ09CSl9D UkVBVEVfU0lHTkFMRUQpCisJaWYgKGFyZ3MtPmZsYWdzICYgfihEUk1fU1lOQ09CSl9DUkVBVEVf U0lHTkFMRUQgfAorCQkJICAgIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5FKSkKIAkJ cmV0dXJuIC1FSU5WQUw7CiAKIAlyZXR1cm4gZHJtX3N5bmNvYmpfY3JlYXRlX2FzX2hhbmRsZShm aWxlX3ByaXZhdGUsCkBAIC02NjksOSArODczLDggQEAgc3RhdGljIHZvaWQgc3luY29ial93YWl0 X3N5bmNvYmpfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJc3RydWN0IHN5bmNv Ympfd2FpdF9lbnRyeSAqd2FpdCA9CiAJCWNvbnRhaW5lcl9vZihjYiwgc3RydWN0IHN5bmNvYmpf d2FpdF9lbnRyeSwgc3luY29ial9jYik7CiAKLQkvKiBUaGlzIGhhcHBlbnMgaW5zaWRlIHRoZSBz eW5jb2JqIGxvY2sgKi8KLQl3YWl0LT5mZW5jZSA9IGRtYV9mZW5jZV9nZXQocmN1X2RlcmVmZXJl bmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJCQkgICAgICBsb2NrZGVwX2lzX2hl bGQoJnN5bmNvYmotPmxvY2spKSk7CisJZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmos IDAsIDAsICZ3YWl0LT5mZW5jZSk7CisKIAl3YWtlX3VwX3Byb2Nlc3Mod2FpdC0+dGFzayk7CiB9 CiAKQEAgLTY5OCw3ICs5MDEsOCBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgZHJtX3N5bmNvYmpfYXJy YXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzLAogCXNpZ25hbGVk X2NvdW50ID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogCQllbnRyaWVzW2ld LnRhc2sgPSBjdXJyZW50OwotCQllbnRyaWVzW2ldLmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2Vf Z2V0KHN5bmNvYmpzW2ldKTsKKwkJcmV0ID0gZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNv YmpzW2ldLCAwLCAwLAorCQkJCQkgICAgICAgJmVudHJpZXNbaV0uZmVuY2UpOwogCQlpZiAoIWVu dHJpZXNbaV0uZmVuY2UpIHsKIAkJCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1Nf V0FJVF9GT1JfU1VCTUlUKSB7CiAJCQkJY29udGludWU7CkBAIC05NzAsMTIgKzExNzQsMTMgQEAg ZHJtX3N5bmNvYmpfcmVzZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAotCWZvciAoaSA9IDA7IGkgPCBhcmdz LT5jb3VudF9oYW5kbGVzOyBpKyspCi0JCWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29i anNbaV0sIDAsIE5VTEwpOwotCisJZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7 IGkrKykgeworCQlkcm1fc3luY29ial9maW5pKHN5bmNvYmpzW2ldKTsKKwkJZHJtX3N5bmNvYmpf aW5pdChzeW5jb2Jqc1tpXSk7CisJfQogCWRybV9zeW5jb2JqX2FycmF5X2ZyZWUoc3luY29ianMs IGFyZ3MtPmNvdW50X2hhbmRsZXMpOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KIAog aW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggMGE4 ZDJkNjRmMzgwLi44YThkMjFiMjQxMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKQEAgLTIxMzcsNyArMjEzNyw3IEBAIGF3YWl0X2ZlbmNlX2FycmF5KHN0 cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCQlpZiAoIShmbGFncyAmIEk5MTVfRVhFQ19GRU5D RV9XQUlUKSkKIAkJCWNvbnRpbnVlOwogCi0JCWZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0 KHN5bmNvYmopOworCQlkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgJmZl bmNlKTsKIAkJaWYgKCFmZW5jZSkKIAkJCXJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fc3luY29iai5oIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAppbmRl eCAyZWRhNDRkZWY2MzkuLjg1YjM2ZDRlNTNlZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJt X3N5bmNvYmouaAorKysgYi9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oCkBAIC0zMCw2ICszMCwx MSBAQAogCiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2I7CiAKK2VudW0gZHJtX3N5bmNvYmpfdHlwZSB7 CisJRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlksCisJRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORQor fTsKKwogLyoqCiAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmogLSBzeW5jIG9iamVjdC4KICAqCkBAIC00 MSwxOSArNDYsMzYgQEAgc3RydWN0IGRybV9zeW5jb2JqIHsKIAkgKi8KIAlzdHJ1Y3Qga3JlZiBy ZWZjb3VudDsKIAkvKioKLQkgKiBAZmVuY2U6Ci0JICogTlVMTCBvciBhIHBvaW50ZXIgdG8gdGhl IGZlbmNlIGJvdW5kIHRvIHRoaXMgb2JqZWN0LgotCSAqCi0JICogVGhpcyBmaWVsZCBzaG91bGQg bm90IGJlIHVzZWQgZGlyZWN0bHkuIFVzZSBkcm1fc3luY29ial9mZW5jZV9nZXQoKQotCSAqIGFu ZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKCkgaW5zdGVhZC4KKwkgKiBAdHlwZTogaW5kaWNh dGUgc3luY29iaiB0eXBlCisJICovCisJZW51bSBkcm1fc3luY29ial90eXBlIHR5cGU7CisJLyoq CisJICogQHdxOiB3YWl0IHNpZ25hbCBvcGVyYXRpb24gd29yayBxdWV1ZQorCSAqLworCXdhaXRf cXVldWVfaGVhZF90CXdxOworCS8qKgorCSAqIEB0aW1lbGluZV9jb250ZXh0OiBmZW5jZSBjb250 ZXh0IHVzZWQgYnkgdGltZWxpbmUKIAkgKi8KLQlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpmZW5j ZTsKKwl1NjQgdGltZWxpbmVfY29udGV4dDsKIAkvKioKLQkgKiBAY2JfbGlzdDogTGlzdCBvZiBj YWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0cyByZXBsYWNlZC4KKwkgKiBAdGlt ZWxpbmU6IHN5bmNvYmogdGltZWxpbmUgdmFsdWUsIHdoaWNoIGluZGljYXRlcyBwb2ludCBpcyBz aWduYWxlZC4KIAkgKi8KKwl1NjQgdGltZWxpbmU7CisJLyoqCisJICogQHNpZ25hbF9wb2ludDog d2hpY2ggaW5kaWNhdGVzIHRoZSBsYXRlc3Qgc2lnbmFsZXIgcG9pbnQuCisJICovCisJdTY0IHNp Z25hbF9wb2ludDsKKwkvKioKKwkgKiBAc2lnbmFsX3B0X2xpc3Q6IHNpZ25hbGVyIHBvaW50IGxp c3QuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBzaWduYWxfcHRfbGlzdDsKKworCS8qKgorICAg ICAgICAgKiBAY2JfbGlzdDogTGlzdCBvZiBjYWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVu Y2UgZ2V0cyByZXBsYWNlZC4KKyAgICAgICAgICovCiAJc3RydWN0IGxpc3RfaGVhZCBjYl9saXN0 OwogCS8qKgotCSAqIEBsb2NrOiBQcm90ZWN0cyAmY2JfbGlzdCBhbmQgd3JpdGUtbG9ja3MgJmZl bmNlLgorCSAqIEBsb2NrOiBQcm90ZWN0cyBzeW5jb2JqIGxpc3QgYW5kIHdyaXRlLWxvY2tzICZm ZW5jZS4KIAkgKi8KIAlzcGlubG9ja190IGxvY2s7CiAJLyoqCkBAIC02OCw3ICs5MCw3IEBAIHR5 cGVkZWYgdm9pZCAoKmRybV9zeW5jb2JqX2Z1bmNfdCkoc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqLAogLyoqCiAgKiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgLSBjYWxsYmFjayBmb3IgZHJtX3N5 bmNvYmpfYWRkX2NhbGxiYWNrCiAgKiBAbm9kZTogdXNlZCBieSBkcm1fc3luY29iX2FkZF9jYWxs YmFjayB0byBhcHBlbmQgdGhpcyBzdHJ1Y3QgdG8KLSAqCSAgJmRybV9zeW5jb2JqLmNiX2xpc3QK KyAqICAgICAgICZkcm1fc3luY29iai5jYl9saXN0CiAgKiBAZnVuYzogZHJtX3N5bmNvYmpfZnVu Y190IHRvIGNhbGwKICAqCiAgKiBUaGlzIHN0cnVjdCB3aWxsIGJlIGluaXRpYWxpemVkIGJ5IGRy bV9zeW5jb2JqX2FkZF9jYWxsYmFjaywgYWRkaXRpb25hbApAQCAtMTA2LDI5ICsxMjgsNiBAQCBk cm1fc3luY29ial9wdXQoc3RydWN0IGRybV9zeW5jb2JqICpvYmopCiAJa3JlZl9wdXQoJm9iai0+ cmVmY291bnQsIGRybV9zeW5jb2JqX2ZyZWUpOwogfQogCi0vKioKLSAqIGRybV9zeW5jb2JqX2Zl bmNlX2dldCAtIGdldCBhIHJlZmVyZW5jZSB0byBhIGZlbmNlIGluIGEgc3luYyBvYmplY3QKLSAq IEBzeW5jb2JqOiBzeW5jIG9iamVjdC4KLSAqCi0gKiBUaGlzIGFjcXVpcmVzIGFkZGl0aW9uYWwg cmVmZXJlbmNlIHRvICZkcm1fc3luY29iai5mZW5jZSBjb250YWluZWQgaW4gQG9iaiwKLSAqIGlm IG5vdCBOVUxMLiBJdCBpcyBpbGxlZ2FsIHRvIGNhbGwgdGhpcyB3aXRob3V0IGFscmVhZHkgaG9s ZGluZyBhIHJlZmVyZW5jZS4KLSAqIE5vIGxvY2tzIHJlcXVpcmVkLgotICoKLSAqIFJldHVybnM6 Ci0gKiBFaXRoZXIgdGhlIGZlbmNlIG9mIEBvYmogb3IgTlVMTCBpZiB0aGVyZSdzIG5vbmUuCi0g Ki8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRtYV9mZW5jZSAqCi1kcm1fc3luY29ial9mZW5jZV9n ZXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQotewotCXN0cnVjdCBkbWFfZmVuY2UgKmZl bmNlOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCWZlbmNlID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2Fm ZSgmc3luY29iai0+ZmVuY2UpOwotCXJjdV9yZWFkX3VubG9jaygpOwotCi0JcmV0dXJuIGZlbmNl OwotfQotCiBzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5jb2JqX2ZpbmQoc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXZhdGUsCiAJCQkJICAgICB1MzIgaGFuZGxlKTsKIHZvaWQgZHJtX3N5bmNv YmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwK QEAgLTE0Miw1ICsxNDEsNyBAQCBpbnQgZHJtX3N5bmNvYmpfY3JlYXRlKHN0cnVjdCBkcm1fc3lu Y29iaiAqKm91dF9zeW5jb2JqLCB1aW50MzJfdCBmbGFncywKIGludCBkcm1fc3luY29ial9nZXRf aGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAogCQkJICAgc3RydWN0IGRybV9z eW5jb2JqICpzeW5jb2JqLCB1MzIgKmhhbmRsZSk7CiBpbnQgZHJtX3N5bmNvYmpfZ2V0X2ZkKHN0 cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgaW50ICpwX2ZkKTsKK2ludCBkcm1fc3luY29ial9z ZWFyY2hfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsIHU2NCBm bGFncywKKwkJCSAgICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKTsKIAogI2VuZGlmCmRpZmYg LS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApp bmRleCAzMDBmMzM2NjMzZjIuLmNlYmRiMjU0MWViNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBp L2RybS9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCkBAIC03MTcsNiArNzE3LDcg QEAgc3RydWN0IGRybV9wcmltZV9oYW5kbGUgewogc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSB7 CiAJX191MzIgaGFuZGxlOwogI2RlZmluZSBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQgKDEg PDwgMCkKKyNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUgKDEgPDwgMSkK IAlfX3UzMiBmbGFnczsKIH07CiAKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==