From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 2/6] [RFC]drm: add syncobj timeline support v7 Date: Wed, 19 Sep 2018 17:17:42 +0800 Message-ID: <20180919091742.21827-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 cG9ydCBmbGFncyBpbiBmaW5kX2ZlbmNlLgo0LiBhbGxvdyByZXNldCB0aW1lbGluZS4KCmluZGl2 aWR1YWwgc3luY29iaiBpcyB0ZXN0ZWQgYnkgLi9kZXFwLXZrIC1uIGRFUVAtVksqc2VtYXBob3Jl Kgp0aW1lbGluZSBzeW5jb2JqIGlzIHRlc3RlZCBieSAuL2FtZGdwdV90ZXN0IC1zIDkKClNpZ25l ZC1vZmYtYnk6IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91QGFtZC5jb20+CkNjOiBDaHJpc3Rp YW4gS29uaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KQ2M6IERhdmUgQWlybGllIDxhaXJs aWVkQHJlZGhhdC5jb20+CkNjOiBEYW5pZWwgUmFrb3MgPERhbmllbC5SYWtvc0BhbWQuY29tPgpD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9k cm1fc3luY29iai5jICAgICAgICAgICAgICB8IDI5MyArKysrKysrKysrKysrKysrKystLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICAgMiArLQogaW5jbHVk ZS9kcm0vZHJtX3N5bmNvYmouaCAgICAgICAgICAgICAgICAgIHwgIDY1ICsrLS0tCiBpbmNsdWRl L3VhcGkvZHJtL2RybS5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogNCBmaWxlcyBjaGFu Z2VkLCAyODcgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmou YwppbmRleCBmNzk2YzlmYzM4NTguLjk1YjYwYWMwNDVjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9zeW5jb2JqLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMK QEAgLTU2LDYgKzU2LDkgQEAKICNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKICNpbmNsdWRlIDxk cm0vZHJtX3N5bmNvYmouaD4KIAorLyogbWVyZ2Ugbm9ybWFsIHN5bmNvYmogdG8gdGltZWxpbmUg c3luY29iaiwgdGhlIHBvaW50IGludGVydmFsIGlzIDEgKi8KKyNkZWZpbmUgRFJNX1NZTkNPQkpf SU5ESVZJRFVBTF9QT0lOVCAxCisKIHN0cnVjdCBkcm1fc3luY29ial9zdHViX2ZlbmNlIHsKIAlz dHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7CiAJc3BpbmxvY2tfdCBsb2NrOwpAQCAtODIsNiArODUsMTEg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfZmVuY2Vfb3BzIGRybV9zeW5jb2JqX3N0dWJfZmVu Y2Vfb3BzID0gewogCS5yZWxlYXNlID0gZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9yZWxlYXNlLAog fTsKIAorc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCB7CisJc3RydWN0IGRtYV9mZW5jZV9h cnJheSAqYmFzZTsKKwl1NjQgICAgdmFsdWU7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworfTsK IAogLyoqCiAgKiBkcm1fc3luY29ial9maW5kIC0gbG9va3VwIGFuZCByZWZlcmVuY2UgYSBzeW5j IG9iamVjdC4KQEAgLTEyNCw4ICsxMzIsOCBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2ZlbmNl X2dldF9vcl9hZGRfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogewogCWlu dCByZXQ7CiAKLQkqZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7Ci0JaWYg KCpmZW5jZSkKKwlyZXQgPSBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwg ZmVuY2UpOworCWlmICghcmV0KQogCQlyZXR1cm4gMTsKIAogCXNwaW5fbG9jaygmc3luY29iai0+ bG9jayk7CkBAIC0xMzMsMTAgKzE0MSwxMiBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2ZlbmNl X2dldF9vcl9hZGRfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogCSAqIGhh dmUgdGhlIGxvY2ssIHRyeSBvbmUgbW9yZSB0aW1lIGp1c3QgdG8gYmUgc3VyZSB3ZSBkb24ndCBh ZGQgYQogCSAqIGNhbGxiYWNrIHdoZW4gYSBmZW5jZSBoYXMgYWxyZWFkeSBiZWVuIHNldC4KIAkg Ki8KLQlpZiAoc3luY29iai0+ZmVuY2UpIHsKLQkJKmZlbmNlID0gZG1hX2ZlbmNlX2dldChyY3Vf ZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNvYmotPmZlbmNlLAotCQkJCQkJCQkgbG9ja2RlcF9p c19oZWxkKCZzeW5jb2JqLT5sb2NrKSkpOwotCQlyZXQgPSAxOworCWlmICghbGlzdF9lbXB0eSgm c3luY29iai0+c2lnbmFsX3B0X2xpc3QpKSB7CisJCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2Nr KTsKKwkJZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsIGZlbmNlKTsKKwkJ aWYgKCpmZW5jZSkKKwkJCXJldHVybiAxOworCQlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwog CX0gZWxzZSB7CiAJCSpmZW5jZSA9IE5VTEw7CiAJCWRybV9zeW5jb2JqX2FkZF9jYWxsYmFja19s b2NrZWQoc3luY29iaiwgY2IsIGZ1bmMpOwpAQCAtMTY0LDYgKzE3NCwxNTkgQEAgdm9pZCBkcm1f c3luY29ial9yZW1vdmVfY2FsbGJhY2soc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogCXNw aW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKIH0KIAorc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpf aW5pdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCit7CisJc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKKwlzeW5jb2JqLT50aW1lbGluZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRf YWxsb2MoMSk7CisJc3luY29iai0+dGltZWxpbmUgPSAwOworCXN5bmNvYmotPnNpZ25hbF9wb2lu dCA9IDA7CisJaW5pdF93YWl0cXVldWVfaGVhZCgmc3luY29iai0+d3EpOworCisJSU5JVF9MSVNU X0hFQUQoJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0KTsKKwlzcGluX3VubG9jaygmc3luY29iai0+ bG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIGRybV9zeW5jb2JqX2Zpbmkoc3RydWN0IGRybV9zeW5j b2JqICpzeW5jb2JqKQoreworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9w dCA9IE5VTEwsICp0bXA7CisKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShzaWduYWxfcHQsIHRtcCwKKwkJCQkgJnN5bmNvYmotPnNpZ25hbF9w dF9saXN0LCBsaXN0KSB7CisJCWxpc3RfZGVsKCZzaWduYWxfcHQtPmxpc3QpOworCQlkbWFfZmVu Y2VfcHV0KCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpOworCQlrZnJlZShzaWduYWxfcHQpOworCX0K KwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZG1hX2Zl bmNlCisqZHJtX3N5bmNvYmpfZmluZF9zaWduYWxfcHRfZm9yX3BvaW50KHN0cnVjdCBkcm1fc3lu Y29iaiAqc3luY29iaiwKKwkJCQkgICAgICB1aW50NjRfdCBwb2ludCkKK3sKKwlzdHJ1Y3QgZHJt X3N5bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQ7CisKKwlpZiAoKHN5bmNvYmotPnR5cGUgPT0g RFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgJiYKKwkgICAgKHBvaW50IDw9IHN5bmNvYmotPnRp bWVsaW5lKSkgeworCQlzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSAqZmVuY2UgPQorCQkJ a3phbGxvYyhzaXplb2Yoc3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2UpLAorCQkJCUdGUF9L RVJORUwpOworCisJCWlmICghZmVuY2UpCisJCQlyZXR1cm4gTlVMTDsKKwkJc3Bpbl9sb2NrX2lu aXQoJmZlbmNlLT5sb2NrKTsKKwkJZG1hX2ZlbmNlX2luaXQoJmZlbmNlLT5iYXNlLAorCQkJICAg ICAgICZkcm1fc3luY29ial9zdHViX2ZlbmNlX29wcywKKwkJCSAgICAgICAmZmVuY2UtPmxvY2ss CisJCQkgICAgICAgc3luY29iai0+dGltZWxpbmVfY29udGV4dCwKKwkJCSAgICAgICBwb2ludCk7 CisKKwkJZG1hX2ZlbmNlX3NpZ25hbCgmZmVuY2UtPmJhc2UpOworCQlyZXR1cm4gJmZlbmNlLT5i YXNlOworCX0KKworCWxpc3RfZm9yX2VhY2hfZW50cnkoc2lnbmFsX3B0LCAmc3luY29iai0+c2ln bmFsX3B0X2xpc3QsIGxpc3QpIHsKKwkJaWYgKHBvaW50ID4gc2lnbmFsX3B0LT52YWx1ZSkKKwkJ CWNvbnRpbnVlOworCQlpZiAoKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9JTkRJ VklEVUFMKSAmJgorCQkgICAgKHBvaW50ICE9IHNpZ25hbF9wdC0+dmFsdWUpKQorCQkJY29udGlu dWU7CisJCXJldHVybiBkbWFfZmVuY2VfZ2V0KCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpOworCX0K KwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludCBkcm1fc3luY29ial9jcmVhdGVfc2lnbmFs X3B0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKKwkJCQkJc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2UsCisJCQkJCXU2NCBwb2ludCkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0 ICpzaWduYWxfcHQgPQorCQlremFsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFs X3B0KSwgR0ZQX0tFUk5FTCk7CisJc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqdGFpbF9w dDsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzOworCWludCBudW1fZmVuY2VzID0gMDsKKwlp bnQgcmV0ID0gMCwgaTsKKworCWlmICghc2lnbmFsX3B0KQorCQlyZXR1cm4gLUVOT01FTTsKKwlp ZiAoIWZlbmNlKQorCQlnb3RvIG91dDsKKworCWZlbmNlcyA9IGttYWxsb2NfYXJyYXkoc2l6ZW9m KHZvaWQgKiksIDIsIEdGUF9LRVJORUwpOworCWlmICghZmVuY2VzKSB7CisJCXJldCA9IC1FTk9N RU07CisJCWdvdG8gb3V0OworCX0KKwlmZW5jZXNbbnVtX2ZlbmNlcysrXSA9IGRtYV9mZW5jZV9n ZXQoZmVuY2UpOworCS8qIHRpbWVsaW5lIHN5bmNvYmogbXVzdCB0YWtlIHRoaXMgZGVwZW5kZW5j eSAqLworCWlmIChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpIHsK KwkJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwkJaWYgKCFsaXN0X2VtcHR5KCZzeW5jb2Jq LT5zaWduYWxfcHRfbGlzdCkpIHsKKwkJCXRhaWxfcHQgPSBsaXN0X2xhc3RfZW50cnkoJnN5bmNv YmotPnNpZ25hbF9wdF9saXN0LAorCQkJCQkJICBzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0 LCBsaXN0KTsKKwkJCWZlbmNlc1tudW1fZmVuY2VzKytdID0gZG1hX2ZlbmNlX2dldCgmdGFpbF9w dC0+YmFzZS0+YmFzZSk7CisJCX0KKwkJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOworCX0K KwlzaWduYWxfcHQtPmJhc2UgPSBkbWFfZmVuY2VfYXJyYXlfY3JlYXRlKG51bV9mZW5jZXMsIGZl bmNlcywKKwkJCQkJCSBzeW5jb2JqLT50aW1lbGluZV9jb250ZXh0LAorCQkJCQkJIHBvaW50LCBm YWxzZSk7CisJaWYgKCFzaWduYWxfcHQtPmJhc2UpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290 byBmYWlsOworCX0KKworCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJaWYgKHN5bmNvYmot PnNpZ25hbF9wb2ludCA+PSBwb2ludCkgeworCQlEUk1fV0FSTigiQSBsYXRlciBzaWduYWwgaXMg cmVhZHkhIik7CisJCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwkJZ290byBleGlzdDsK Kwl9CisJc2lnbmFsX3B0LT52YWx1ZSA9IHBvaW50OworCWxpc3RfYWRkX3RhaWwoJnNpZ25hbF9w dC0+bGlzdCwgJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0KTsKKwlzeW5jb2JqLT5zaWduYWxfcG9p bnQgPSBwb2ludDsKKwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisJd2FrZV91cF9hbGwo JnN5bmNvYmotPndxKTsKKworCXJldHVybiAwOworZXhpc3Q6CisJZG1hX2ZlbmNlX3B1dCgmc2ln bmFsX3B0LT5iYXNlLT5iYXNlKTsKK2ZhaWw6CisJZm9yIChpID0gMDsgaSA8IG51bV9mZW5jZXM7 IGkrKykKKwkJZG1hX2ZlbmNlX3B1dChmZW5jZXNbaV0pOworCWtmcmVlKGZlbmNlcyk7CitvdXQ6 CisJa2ZyZWUoc2lnbmFsX3B0KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBkcm1f c3luY29ial9nYXJiYWdlX2NvbGxlY3Rpb24oc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQor eworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdCwgKnRtcCwgKnRhaWxf cHQ7CisKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCXRhaWxfcHQgPSBsaXN0X2xhc3Rf ZW50cnkoJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LAorCQkJCSAgc3RydWN0IGRybV9zeW5jb2Jq X3NpZ25hbF9wdCwKKwkJCQkgIGxpc3QpOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzaWdu YWxfcHQsIHRtcCwKKwkJCQkgJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LCBsaXN0KSB7CisJCWlm IChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfSU5ESVZJRFVBTCAmJgorCQkgICAg c2lnbmFsX3B0ID09IHRhaWxfcHQpCisJCQljb250aW51ZTsKKwkJaWYgKGRtYV9mZW5jZV9pc19z aWduYWxlZCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKSkgeworCQkJc3luY29iai0+dGltZWxpbmUg PSBzaWduYWxfcHQtPnZhbHVlOworCQkJbGlzdF9kZWwoJnNpZ25hbF9wdC0+bGlzdCk7CisJCQlk bWFfZmVuY2VfcHV0KCZzaWduYWxfcHQtPmJhc2UtPmJhc2UpOworCQkJa2ZyZWUoc2lnbmFsX3B0 KTsKKwkJfSBlbHNlIHsKKwkJCS8qc2lnbmFsX3B0IGlzIGluIG9yZGVyIGluIGxpc3QsIGZyb20g c21hbGwgdG8gYmlnLCBzbworCQkJICogdGhlIGxhdGVyIG11c3Qgbm90IGJlIHNpZ25hbCBlaXRo ZXIgKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2sp OworfQogLyoqCiAgKiBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlIC0gcmVwbGFjZSBmZW5jZSBp biBhIHN5bmMgb2JqZWN0LgogICogQHN5bmNvYmo6IFN5bmMgb2JqZWN0IHRvIHJlcGxhY2UgZmVu Y2UgaW4KQEAgLTE3NiwyOCArMzM5LDI5IEBAIHZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5j ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCiAJCQkgICAgICAgdTY0IHBvaW50LAogCQkJ ICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQogewotCXN0cnVjdCBkbWFfZmVuY2UgKm9s ZF9mZW5jZTsKLQlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmN1ciwgKnRtcDsKLQotCWlmIChmZW5j ZSkKLQkJZG1hX2ZlbmNlX2dldChmZW5jZSk7Ci0KLQlzcGluX2xvY2soJnN5bmNvYmotPmxvY2sp OwotCi0Jb2xkX2ZlbmNlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5j ZSwKLQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5sb2NrKSk7Ci0JcmN1X2Fz c2lnbl9wb2ludGVyKHN5bmNvYmotPmZlbmNlLCBmZW5jZSk7CisJdTY0IHB0X3ZhbHVlID0gcG9p bnQ7CisKKwlkcm1fc3luY29ial9nYXJiYWdlX2NvbGxlY3Rpb24oc3luY29iaik7CisJaWYgKHN5 bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9JTkRJVklEVUFMKSB7CisJCWlmICghZmVu Y2UpIHsKKwkJCWRybV9zeW5jb2JqX2Zpbmkoc3luY29iaik7CisJCQlkcm1fc3luY29ial9pbml0 KHN5bmNvYmopOworCQkJcmV0dXJuOworCQl9CisJCXB0X3ZhbHVlID0gc3luY29iai0+c2lnbmFs X3BvaW50ICsKKwkJCURSTV9TWU5DT0JKX0lORElWSURVQUxfUE9JTlQ7CisJfQorCWRybV9zeW5j b2JqX2NyZWF0ZV9zaWduYWxfcHQoc3luY29iaiwgZmVuY2UsIHB0X3ZhbHVlKTsKKwlpZiAoZmVu Y2UpIHsKKwkJc3RydWN0IGRybV9zeW5jb2JqX2NiICpjdXIsICp0bXA7CiAKLQlpZiAoZmVuY2Ug IT0gb2xkX2ZlbmNlKSB7CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CiAJCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShjdXIsIHRtcCwgJnN5bmNvYmotPmNiX2xpc3QsIG5vZGUpIHsKIAkJ CWxpc3RfZGVsX2luaXQoJmN1ci0+bm9kZSk7CiAJCQljdXItPmZ1bmMoc3luY29iaiwgY3VyKTsK IAkJfQorCQlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CiAJfQotCi0Jc3Bpbl91bmxvY2so JnN5bmNvYmotPmxvY2spOwotCi0JZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOwogfQogRVhQT1JU X1NZTUJPTChkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKTsKIApAQCAtMjIwLDYgKzM4NCw1MiBA QCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmopCiAJcmV0dXJuIDA7CiB9CiAKKyNkZWZpbmUgV0FJVF9GT1JfU1VCTUlU X01TRUNTIDEwMDAwCisKK3N0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICoKK2RybV9zeW5jb2JqX3Bv aW50X2dldChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwgdTY0IGZsYWdz KQoreworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCWludCByZXQgPSAwOworCisJaWYgKGZs YWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpIHsKKwkJcmV0ID0g d2FpdF9ldmVudF90aW1lb3V0KHN5bmNvYmotPndxLAorCQkJCQkgcG9pbnQgPD0gc3luY29iai0+ c2lnbmFsX3BvaW50LAorCQkJCQkgbXNlY3NfdG9famlmZmllcyhXQUlUX0ZPUl9TVUJNSVRfTVNF Q1MpKTsKKwkJaWYgKHJldCA8PSAwKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCXNwaW5fbG9jaygm c3luY29iai0+bG9jayk7CisJZmVuY2UgPSBkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3Jf cG9pbnQoc3luY29iaiwgcG9pbnQpOworCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwly ZXR1cm4gZmVuY2U7Cit9CisKK2ludCBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3RydWN0IGRy bV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCisJCQkgICAgIHU2NCBmbGFncywgc3RydWN0 IGRtYV9mZW5jZSAqKmZlbmNlKQoreworCXU2NCBwdF92YWx1ZSA9IHBvaW50OworCWludCByZXQg PSAwOworCisJaWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWRybV9zeW5jb2Jq X2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKKwlpZiAoc3luY29iai0+dHlwZSA9PSBEUk1f U1lOQ09CSl9UWVBFX0lORElWSURVQUwpIHsKKwkJLypJTkRJVklEVUFMIHN5bmNvYmogYWx3YXlz IHdhaXQgb24gbGFzdCBwdCAqLworCQlwdF92YWx1ZSA9IHN5bmNvYmotPnNpZ25hbF9wb2ludDsK KworCQlpZiAocHRfdmFsdWUgPT0gMCkKKwkJCXB0X3ZhbHVlICs9IERSTV9TWU5DT0JKX0lORElW SURVQUxfUE9JTlQ7CisJfQorCSpmZW5jZSA9IGRybV9zeW5jb2JqX3BvaW50X2dldChzeW5jb2Jq LCBwdF92YWx1ZSwgZmxhZ3MpOworCWlmICghKmZlbmNlKSB7CisJCXJldCA9IC1FSU5WQUw7CisJ fQorCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX3NlYXJjaF9mZW5j ZSk7CisKIC8qKgogICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1cCBhbmQgcmVmZXJl bmNlIHRoZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0CiAgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmls ZSBwcml2YXRlIHBvaW50ZXIKQEAgLTIyOCw3ICs0MzgsNyBAQCBzdGF0aWMgaW50IGRybV9zeW5j b2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCiAgKiBA ZmVuY2U6IG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBmZW5jZQogICoKICAqIFRoaXMgaXMganVzdCBh IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY29tYmluZXMgZHJtX3N5bmNvYmpfZmluZCgpIGFu ZAotICogZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KCkuCisgKiBkcm1fc3luY29ial9sb29rdXBfZmVu Y2UoKS4KICAqCiAgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIHZh bHVlIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MgQGZlbmNlCiAgKiBjb250YWlucyBhIHJlZmVyZW5j ZSB0byB0aGUgZmVuY2UsIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQgYnkgY2FsbGluZwpAQCAtMjM5 LDE1ICs0NDksOSBAQCBpbnQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdmF0ZSwKIAkJCSAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKIHsKIAlzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdmF0ZSwg aGFuZGxlKTsKLQlpbnQgcmV0ID0gMDsKLQotCWlmICghc3luY29iaikKLQkJcmV0dXJuIC1FTk9F TlQ7CisJaW50IHJldDsKIAotCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2Jq KTsKLQlpZiAoISpmZW5jZSkgewotCQlyZXQgPSAtRUlOVkFMOwotCX0KKwlyZXQgPSBkcm1fc3lu Y29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgcG9pbnQsIGZsYWdzLCBmZW5jZSk7CiAJZHJtX3N5 bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CiB9CkBAIC0yNjQsNyArNDY4LDcgQEAg dm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogCXN0cnVjdCBkcm1fc3lu Y29iaiAqc3luY29iaiA9IGNvbnRhaW5lcl9vZihrcmVmLAogCQkJCQkJICAgc3RydWN0IGRybV9z eW5jb2JqLAogCQkJCQkJICAgcmVmY291bnQpOwotCWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uo c3luY29iaiwgMCwgTlVMTCk7CisJZHJtX3N5bmNvYmpfZmluaShzeW5jb2JqKTsKIAlrZnJlZShz eW5jb2JqKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7CkBAIC0yOTQsNiAr NDk4LDExIEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0IGRybV9zeW5jb2JqICoqb3V0 X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAogCWtyZWZfaW5pdCgmc3luY29iai0+cmVmY291bnQp OwogCUlOSVRfTElTVF9IRUFEKCZzeW5jb2JqLT5jYl9saXN0KTsKIAlzcGluX2xvY2tfaW5pdCgm c3luY29iai0+bG9jayk7CisJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElN RUxJTkUpCisJCXN5bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FOworCWVs c2UKKwkJc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfSU5ESVZJRFVBTDsKKwlkcm1f c3luY29ial9pbml0KHN5bmNvYmopOwogCiAJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRF X1NJR05BTEVEKSB7CiAJCXJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzeW5j b2JqKTsKQEAgLTU3Niw3ICs3ODUsOCBAQCBkcm1fc3luY29ial9jcmVhdGVfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0dXJuIC1FTk9ERVY7CiAKIAkvKiBu byB2YWxpZCBmbGFncyB5ZXQgKi8KLQlpZiAoYXJncy0+ZmxhZ3MgJiB+RFJNX1NZTkNPQkpfQ1JF QVRFX1NJR05BTEVEKQorCWlmIChhcmdzLT5mbGFncyAmIH4oRFJNX1NZTkNPQkpfQ1JFQVRFX1NJ R05BTEVEIHwKKwkJCSAgICBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElORSkpCiAJCXJl dHVybiAtRUlOVkFMOwogCiAJcmV0dXJuIGRybV9zeW5jb2JqX2NyZWF0ZV9hc19oYW5kbGUoZmls ZV9wcml2YXRlLApAQCAtNjY5LDkgKzg3OSw4IEBAIHN0YXRpYyB2b2lkIHN5bmNvYmpfd2FpdF9z eW5jb2JqX2Z1bmMoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogCXN0cnVjdCBzeW5jb2Jq X3dhaXRfZW50cnkgKndhaXQgPQogCQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBzeW5jb2JqX3dh aXRfZW50cnksIHN5bmNvYmpfY2IpOwogCi0JLyogVGhpcyBoYXBwZW5zIGluc2lkZSB0aGUgc3lu Y29iaiBsb2NrICovCi0Jd2FpdC0+ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHJjdV9kZXJlZmVyZW5j ZV9wcm90ZWN0ZWQoc3luY29iai0+ZmVuY2UsCi0JCQkJCQkJICAgICAgbG9ja2RlcF9pc19oZWxk KCZzeW5jb2JqLT5sb2NrKSkpOworCWRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAw LCAwLCAmd2FpdC0+ZmVuY2UpOworCiAJd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRhc2spOwogfQog CkBAIC02OTgsNyArOTA3LDggQEAgc3RhdGljIHNpZ25lZCBsb25nIGRybV9zeW5jb2JqX2FycmF5 X3dhaXRfdGltZW91dChzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcywKIAlzaWduYWxlZF9j b3VudCA9IDA7CiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKIAkJZW50cmllc1tpXS50 YXNrID0gY3VycmVudDsKLQkJZW50cmllc1tpXS5mZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dl dChzeW5jb2Jqc1tpXSk7CisJCXJldCA9IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2Jq c1tpXSwgMCwgMCwKKwkJCQkJICAgICAgICZlbnRyaWVzW2ldLmZlbmNlKTsKIAkJaWYgKCFlbnRy aWVzW2ldLmZlbmNlKSB7CiAJCQlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dB SVRfRk9SX1NVQk1JVCkgewogCQkJCWNvbnRpbnVlOwpAQCAtOTcwLDEyICsxMTgwLDEzIEBAIGRy bV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAKLQlmb3IgKGkgPSAwOyBpIDwgYXJncy0+ Y291bnRfaGFuZGxlczsgaSsrKQotCQlkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmpz W2ldLCAwLCBOVUxMKTsKLQorCWZvciAoaSA9IDA7IGkgPCBhcmdzLT5jb3VudF9oYW5kbGVzOyBp KyspIHsKKwkJZHJtX3N5bmNvYmpfZmluaShzeW5jb2Jqc1tpXSk7CisJCWRybV9zeW5jb2JqX2lu aXQoc3luY29ianNbaV0pOworCX0KIAlkcm1fc3luY29ial9hcnJheV9mcmVlKHN5bmNvYmpzLCBh cmdzLT5jb3VudF9oYW5kbGVzKTsKIAotCXJldHVybiAwOworCXJldHVybiByZXQ7CiB9CiAKIGlu dApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IDBhOGQy ZDY0ZjM4MC4uOGE4ZDIxYjI0MTE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jCkBAIC0yMTM3LDcgKzIxMzcsNyBAQCBhd2FpdF9mZW5jZV9hcnJheShzdHJ1 Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJaWYgKCEoZmxhZ3MgJiBJOTE1X0VYRUNfRkVOQ0Vf V0FJVCkpCiAJCQljb250aW51ZTsKIAotCQlmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChz eW5jb2JqKTsKKwkJZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsICZmZW5j ZSk7CiAJCWlmICghZmVuY2UpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIApkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX3N5bmNvYmouaCBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKaW5kZXgg MmVkYTQ0ZGVmNjM5Li5hY2YxYzNhNDZkOTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9z eW5jb2JqLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaApAQCAtMzAsNiArMzAsMTEg QEAKIAogc3RydWN0IGRybV9zeW5jb2JqX2NiOwogCitlbnVtIGRybV9zeW5jb2JqX3R5cGUgewor CURSTV9TWU5DT0JKX1RZUEVfSU5ESVZJRFVBTCwKKwlEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5F Cit9OworCiAvKioKICAqIHN0cnVjdCBkcm1fc3luY29iaiAtIHN5bmMgb2JqZWN0LgogICoKQEAg LTQxLDE5ICs0NiwzNiBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmogewogCSAqLwogCXN0cnVjdCBrcmVm IHJlZmNvdW50OwogCS8qKgotCSAqIEBmZW5jZToKLQkgKiBOVUxMIG9yIGEgcG9pbnRlciB0byB0 aGUgZmVuY2UgYm91bmQgdG8gdGhpcyBvYmplY3QuCi0JICoKLQkgKiBUaGlzIGZpZWxkIHNob3Vs ZCBub3QgYmUgdXNlZCBkaXJlY3RseS4gVXNlIGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpCi0JICog YW5kIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UoKSBpbnN0ZWFkLgorCSAqIEB0eXBlOiBpbmRp Y2F0ZSBzeW5jb2JqIHR5cGUKKwkgKi8KKwllbnVtIGRybV9zeW5jb2JqX3R5cGUgdHlwZTsKKwkv KioKKwkgKiBAd3E6IHdhaXQgc2lnbmFsIG9wZXJhdGlvbiB3b3JrIHF1ZXVlCisJICovCisJd2Fp dF9xdWV1ZV9oZWFkX3QJd3E7CisJLyoqCisJICogQHRpbWVsaW5lX2NvbnRleHQ6IGZlbmNlIGNv bnRleHQgdXNlZCBieSB0aW1lbGluZQogCSAqLwotCXN0cnVjdCBkbWFfZmVuY2UgX19yY3UgKmZl bmNlOworCXU2NCB0aW1lbGluZV9jb250ZXh0OwogCS8qKgotCSAqIEBjYl9saXN0OiBMaXN0IG9m IGNhbGxiYWNrcyB0byBjYWxsIHdoZW4gdGhlICZmZW5jZSBnZXRzIHJlcGxhY2VkLgorCSAqIEB0 aW1lbGluZTogc3luY29iaiB0aW1lbGluZSB2YWx1ZSwgd2hpY2ggaW5kaWNhdGVzIHBvaW50IGlz IHNpZ25hbGVkLgogCSAqLworCXU2NCB0aW1lbGluZTsKKwkvKioKKwkgKiBAc2lnbmFsX3BvaW50 OiB3aGljaCBpbmRpY2F0ZXMgdGhlIGxhdGVzdCBzaWduYWxlciBwb2ludC4KKwkgKi8KKwl1NjQg c2lnbmFsX3BvaW50OworCS8qKgorCSAqIEBzaWduYWxfcHRfbGlzdDogc2lnbmFsZXIgcG9pbnQg bGlzdC4KKwkgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9wdF9saXN0OworCisJLyoqCisg ICAgICAgICAqIEBjYl9saXN0OiBMaXN0IG9mIGNhbGxiYWNrcyB0byBjYWxsIHdoZW4gdGhlICZm ZW5jZSBnZXRzIHJlcGxhY2VkLgorICAgICAgICAgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGNiX2xp c3Q7CiAJLyoqCi0JICogQGxvY2s6IFByb3RlY3RzICZjYl9saXN0IGFuZCB3cml0ZS1sb2NrcyAm ZmVuY2UuCisJICogQGxvY2s6IFByb3RlY3RzIHN5bmNvYmogbGlzdCBhbmQgd3JpdGUtbG9ja3Mg JmZlbmNlLgogCSAqLwogCXNwaW5sb2NrX3QgbG9jazsKIAkvKioKQEAgLTY4LDcgKzkwLDcgQEAg dHlwZWRlZiB2b2lkICgqZHJtX3N5bmNvYmpfZnVuY190KShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5 bmNvYmosCiAvKioKICAqIHN0cnVjdCBkcm1fc3luY29ial9jYiAtIGNhbGxiYWNrIGZvciBkcm1f c3luY29ial9hZGRfY2FsbGJhY2sKICAqIEBub2RlOiB1c2VkIGJ5IGRybV9zeW5jb2JfYWRkX2Nh bGxiYWNrIHRvIGFwcGVuZCB0aGlzIHN0cnVjdCB0bwotICoJICAmZHJtX3N5bmNvYmouY2JfbGlz dAorICogICAgICAgJmRybV9zeW5jb2JqLmNiX2xpc3QKICAqIEBmdW5jOiBkcm1fc3luY29ial9m dW5jX3QgdG8gY2FsbAogICoKICAqIFRoaXMgc3RydWN0IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYnkg ZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrLCBhZGRpdGlvbmFsCkBAIC0xMDYsMjkgKzEyOCw2IEBA IGRybV9zeW5jb2JqX3B1dChzdHJ1Y3QgZHJtX3N5bmNvYmogKm9iaikKIAlrcmVmX3B1dCgmb2Jq LT5yZWZjb3VudCwgZHJtX3N5bmNvYmpfZnJlZSk7CiB9CiAKLS8qKgotICogZHJtX3N5bmNvYmpf ZmVuY2VfZ2V0IC0gZ2V0IGEgcmVmZXJlbmNlIHRvIGEgZmVuY2UgaW4gYSBzeW5jIG9iamVjdAot ICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0LgotICoKLSAqIFRoaXMgYWNxdWlyZXMgYWRkaXRpb25h bCByZWZlcmVuY2UgdG8gJmRybV9zeW5jb2JqLmZlbmNlIGNvbnRhaW5lZCBpbiBAb2JqLAotICog aWYgbm90IE5VTEwuIEl0IGlzIGlsbGVnYWwgdG8gY2FsbCB0aGlzIHdpdGhvdXQgYWxyZWFkeSBo b2xkaW5nIGEgcmVmZXJlbmNlLgotICogTm8gbG9ja3MgcmVxdWlyZWQuCi0gKgotICogUmV0dXJu czoKLSAqIEVpdGhlciB0aGUgZmVuY2Ugb2YgQG9iaiBvciBOVUxMIGlmIHRoZXJlJ3Mgbm9uZS4K LSAqLwotc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoKLWRybV9zeW5jb2JqX2ZlbmNl X2dldChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCi17Ci0Jc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2U7Ci0KLQlyY3VfcmVhZF9sb2NrKCk7Ci0JZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9z YWZlKCZzeW5jb2JqLT5mZW5jZSk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7Ci0KLQlyZXR1cm4gZmVu Y2U7Ci19Ci0KIHN0cnVjdCBkcm1fc3luY29iaiAqZHJtX3N5bmNvYmpfZmluZChzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdmF0ZSwKIAkJCQkgICAgIHUzMiBoYW5kbGUpOwogdm9pZCBkcm1fc3lu Y29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50 LApAQCAtMTQyLDUgKzE0MSw3IEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0IGRybV9z eW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAogaW50IGRybV9zeW5jb2JqX2dl dF9oYW5kbGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCiAJCQkgICBzdHJ1Y3QgZHJt X3N5bmNvYmogKnN5bmNvYmosIHUzMiAqaGFuZGxlKTsKIGludCBkcm1fc3luY29ial9nZXRfZmQo c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCBpbnQgKnBfZmQpOworaW50IGRybV9zeW5jb2Jq X3NlYXJjaF9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwgdTY0 IGZsYWdzLAorCQkJICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpOwogCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5o CmluZGV4IDMwMGYzMzY2MzNmMi4uY2ViZGIyNTQxZWI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Vh cGkvZHJtL2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKQEAgLTcxNyw2ICs3MTcs NyBAQCBzdHJ1Y3QgZHJtX3ByaW1lX2hhbmRsZSB7CiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY3JlYXRl IHsKIAlfX3UzMiBoYW5kbGU7CiAjZGVmaW5lIERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCAo MSA8PCAwKQorI2RlZmluZSBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElORSAoMSA8PCAx KQogCV9fdTMyIGZsYWdzOwogfTsKIAotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK