From mboxrd@z Thu Jan 1 00:00:00 1970 From: John.C.Harrison@Intel.com Subject: [RFC 34/37] drm/i915/preempt: scheduler logic for postprocessing preemptive requests Date: Mon, 23 Nov 2015 11:42:09 +0000 Message-ID: <1448278932-31551-35-git-send-email-John.C.Harrison@Intel.com> References: <1448278932-31551-1-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 7FF796E554 for ; Mon, 23 Nov 2015 03:42:53 -0800 (PST) In-Reply-To: <1448278932-31551-1-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KClRoaXMgcGF0Y2gg YWRkcyB0aGUgc2NoZWR1bGVyIGxvZ2ljIGZvciBwb3N0cHJvY2Vzc2luZyBvZiBjb21wbGV0ZWQK cHJlZW1wdGlvbiByZXF1ZXN0cy4gSXQgY2xlYW5zIG91dCBib3RoIHRoZSBmZW5jZV9zaWduYWwg bGlzdCAoZHJvcHBpbmcKcmVmZXJlbmNlcyBhcyBpdCBnb2VzKSBhbmQgdGhlIHByaW1hcnkgcmVx dWVzdF9saXN0LiBSZXF1ZXN0cyB0aGF0CmRpZG4ndCBjb21wbGV0ZSBhcmUgcHV0IGludG8gdGhl ICdwcmVlbXB0ZWQnIHN0YXRlIGZvciByZXN1Ym1pc3Npb24gYnkKdGhlIHNjaGVkdWxlciwgYW5k IHRoZWlyIHJpbmdidWZmZXJzIGFyZSBlbXB0aWVkIGJ5IHNldHRpbmcgaGVhZD09dGFpbApzbyB0 aGVycyBpcyBubyBwZW5kaW5nIHdvcmsgaW4gYW55IHByZWVtcHRlZCBjb250ZXh0LiBUaGUgKGR1 bW15KQpwcmVlbXB0aW9uIHJlcXVlc3QgaXRzZWxmIGlzIGFsc28gcmVjeWNsZWQgaW4gdGhlIHNh bWUgd2F5LCBhbmQgc2hvdWxkCnRoZW4gYmUgKHJlKXNlbGVjdGVkIGJ5IHRoZSBzY2hlZHVsZXIg dG8gYmUgc3VibWl0dGVkIG5leHQgKHVubGVzcwphbnl0aGluZyB3aXRoIGV2ZW4gaG9naGVyIHBy aW9yaXR5IGFzIGJlZW4gcXVldWVkIGluIHRoZSBtZWFudGltZSk7IGJ1dApiZWNhdXNlIHRoZXJl IGFyZSBub3cgbm8gcmVxdWVzdHMgZmx5aW5nLCB0aGUgbmV4dC1zdWJtaXR0ZWQgYmF0Y2ggd2ls bApub3QgbmVlZCB0byBwcmVlbXB0LCBhbmQgc28gd2lsbCBiZSBsYXVuY2hlZCAnZm9yIHJlYWwn IGFzIGEgcmVndWxhcgpub24tcHJlZW1wdGl2ZSBiYXRjaC4KCkFjdHVhbGx5LXByZWVtcHRpdmUg cmVxdWVzdHMgYXJlIHN0aWxsIGRpc2FibGVkIHZpYSBhIG1vZHVsZSBwYXJhbWV0ZXIKYXQgdGhp cyBzdGFnZSwgYXMgd2UgZG9uJ3QgeWV0IGhhdmUgdGhlIGNvZGUgdG8gZW1pdCBwcmVlbXB0aW9u IHJlcXVlc3RzCmludG8gdGhlIHJpbmdidWZmZXIuCgpGb3I6IFZJWi0yMDIxClNpZ25lZC1vZmYt Ynk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyAgICAgICB8ICAzMyArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3NjaGVkdWxlci5jIHwgMTYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAppbmRleCA3YjU3NzhiLi4wNmFlM2Y1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTIzNDEsNyArMjM0MSw3IEBAIGludCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9j KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJCQkgICBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4LAogCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCk7CiB2 b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKTsKLQordm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2RlcXVldWUoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpOwogdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CiB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX2lu dGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgICAgICAgYm9v bCBmZW5jZV9sb2NrZWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggNTlkZTE4ZS4uZDRh MjM2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0xMjI0LDYgKzEyMjQsNyBAQCBpbnQg X19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlt aWdodF9zbGVlcCgpOwogCVdBUk4oIWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdiksICJJUlFz IGRpc2FibGVkIik7CiAKKwkvKiBMaWdodHdlaWdodCBjaGVjayBmaXJzdCBvZiBhbGwgKi8KIAlp ZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKIAkJcmV0dXJuIDA7CiAKQEAgLTEy MzIsNiArMTIzMyw3IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAogCSAqLwogCWZlbmNlX2VuYWJsZV9zd19zaWduYWxpbmcoJnJlcS0+ ZmVuY2UpOwogCisJLyogUmVjaGVjayAtIGNhbGwgYWJvdmUgbWF5IGhhdmUgdXBkYXRlZCBjb21w bGV0aW9uIHN0YXR1cyAqLwogCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQog CQlyZXR1cm4gMDsKIApAQCAtMTQwNSw2ICsxNDA3LDExIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2Vt X3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAkg Ki8KIAlyZXF1ZXN0LT5yaW5nYnVmLT5sYXN0X3JldGlyZWRfaGVhZCA9IHJlcXVlc3QtPnBvc3Rm aXg7CiAKKwkvKgorCSAqIE11c3QgdXNlIGxpc3RfZGVsX2luaXQoKSBub3QgbGlzdF9kZWwoKSBi ZWNhdXNlIHNvbWUgb3RoZXIKKwkgKiBjb2RlIHRlc3RzIChsaXN0X2VtcHR5KCZyZXF1ZXN0LT5s aXN0KSkgdG8gc2VlIHdoZXRoZXIgdGhlCisJICogcmVxdWVzdCBpcyAoc3RpbGwpIG9uIHRoZSBy aW5nLT5yZXF1ZXN0X2xpc3QhCisJICovCiAJbGlzdF9kZWxfaW5pdCgmcmVxdWVzdC0+bGlzdCk7 CiAJaTkxNV9nZW1fcmVxdWVzdF9yZW1vdmVfZnJvbV9jbGllbnQocmVxdWVzdCk7CiAKQEAgLTE0 MzUsMTAgKzE0NDIsMTggQEAgX19pOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV9fdXB0byhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2lu ZS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCisJLyoKKwkgKiBJZiB0aGUgcmVxdWVzdCBpcyBub3Qg b24gYW55IGxpc3QsIHRoZW4gcHJlc3VtYWJseQorCSAqIGl0J3MgYWxyZWFkeSBiZWVuIHJldGly ZWQ/CisJICogKi8KIAlpZiAobGlzdF9lbXB0eSgmcmVxLT5saXN0KSkKIAkJcmV0dXJuOwogCiAJ ZG8geworCQkvKiBEb24ndCBibGluZGx5IGFzc3VtZSB0aGF0IHRoZSByZXF1ZXN0IHdpbGwgYmUg Zm91bmQhICovCisJCWlmIChXQVJOX09OKGxpc3RfZW1wdHkoJmVuZ2luZS0+cmVxdWVzdF9saXN0 KSkpCisJCQlicmVhazsKKwogCQl0bXAgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUtPnJlcXVl c3RfbGlzdCwKIAkJCQkgICAgICAgdHlwZW9mKCp0bXApLCBsaXN0KTsKIApAQCAtMjY2Niw2ICsy NjgxLDI0IEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCwKIAlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2VuZChyaW5nYnVmKTsK IH0KIAordm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2RlcXVldWUoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXF1ZXN0KQoreworCS8qCisJICogVGhlIHJlcXVlc3QgaGFzIGJlZW4gZGUtcXVl dWVkIGZyb20gdGhlIGhhcmR3YXJlIGluIHNvbWUgbWFubmVyCisJICogKGUuZy4gdGhyb3VnaCBw cmUtZW1wdGlvbikuIFNvIGl0IG5lZWRzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUKKwkgKiBhY3Rp dmUgcmVxdWVzdCBsaXN0ICh0aGUgcmVxdWVzdCBsaXN0IGRvZXNuJ3QgY29udHJpYnV0ZSB0bwor CSAqIHJlZmNvdW50aW5nLCBzbyB3ZSBkb24ndCBhbHNvIGhhdmUgdG8gdW5yZWZlcmVuY2UgaXQg aGVyZSkuCisJICoKKwkgKiBJdCBhbHNvIG5lZWRzIHRvIGhhdmUgaXRzIHNlcW5vIGNsZWFyZWQg YXMgdGhhdCB3aWxsIG5vdCBiZQorCSAqIHZhbGlkIGFueSBsb25nZXIuIEhvd2V2ZXIsIHRoZSBl eHBlY3RhdGlvbiBpcyB0aGF0IHRoZSByZXF1ZXN0CisJICogd2lsbCBiZSByZXN1Ym1pdHRlZCBs YXRlci4gQXQgdGhhdCB0aW1lIGl0IHdpbGwgYmUgYXNzaWduZWQgYQorCSAqIHNoaW55IG5ldyBz ZXFuby4KKwkgKi8KKwlXQVJOX09OKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3Qp KTsKKwlsaXN0X2RlbF9pbml0KCZyZXF1ZXN0LT5saXN0KTsKKwlyZXF1ZXN0LT5zZXFubyA9IDA7 Cit9CisKIHN0YXRpYyBib29sIGk5MTVfY29udGV4dF9pc19iYW5uZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHgpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwppbmRleCBlMWQ5MzkwLi42 NWUzMjFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKQEAgLTU1MSw2ICs1 NTEsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3NjaGVkdWxlcl9ub2RlX3JlcXVldWUoc3RydWN0IGk5 MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICpub2RlKQogCUJVR19PTighbm9kZSk7CiAJQlVHX09O KCFJOTE1X1NRU19JU19GTFlJTkcobm9kZSkpOwogCisJbm9kZS0+cGFyYW1zLnJlcXVlc3QtPnNl cW5vID0gMDsJLyogd2lsbCBiZSByZWFzc2lnbmVkIG9uIHJlbGF1bmNoICovCiAJbm9kZS0+c3Rh dHVzID0gaTkxNV9zcXNfcXVldWVkOwogCW5vZGUtPnBhcmFtcy5yZXF1ZXN0LT5zZXFubyA9IDA7 CiAJdHJhY2VfaTkxNV9zY2hlZHVsZXJfdW5mbHkobm9kZS0+cGFyYW1zLnJpbmcsIG5vZGUpOwpA QCAtNjkyLDYgKzY5MywxNjIgQEAgdm9pZCBpOTE1X2dlbV9zY2hlZHVsZXJfY2xlYW5fbm9kZShz dHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgKm5vZGUpCiAJfQogfQogCisvKgorICog QXQgdGhpcyBwb2ludCwgcHJlZW1wdGlvbiBoYXMgb2NjdXJyZWQuCisgKgorICogQWxsIHRoZSBy ZXF1ZXN0cyB0aGF0IGhhZCBhbHJlYWR5IGNvbXBsZXRlZCBiZWZvcmUgcHJlZW1wdGlvbiB3aWxs CisgKiBoYXZlIGJlZW4gdGFrZW4gb2ZmIHRoZSBmZW5jZV9zaWduYWxfbGlzdCwgc2lnbmFsbGVk LCBhbmQgcHV0IG9udG8KKyAqIHRoZSBmZW5jZV91bnNpZ25hbF9saXN0IGZvciBjbGVhbnVwLiAg VGhlIHByZWVwdGluZyByZXF1ZXN0IGl0c2VsZgorICogc2hvdWxkIGhvd2V2ZXIgc3RpbGwgYmUg b24gdGhlIGZlbmNlX3NpZ25hbF9saXN0IChhbmQgaGFzIG5vdCBiZWVuCisgKiBzaWduYWxsZWQp LiBUaGVyZSBtYXkgYWxzbyBiZSBhZGRpdGlvbmFsIHJlcXVlc3RzIG9uIHRoaXMgbGlzdDsgdGhl eQorICogaGF2ZSBiZWVuIHByZWVtcHRlZC4KKyAqCisgKiBUaGUgcmVxdWVzdF9saXN0IGhhcyBu b3QgeWV0IGJlZW4gcHJvY2Vzc2VkLCBzbyBpdCBtYXkgc3RpbGwgY29udGFpbgorICogcmVxdWVz dHMgdGhhdCBoYXZlIGFscmVhZHkgY29tcGxldGVkLiBJdCBzaG91bGQgYWxzbyBjb250YWluIHRo ZQorICogcHJlZW1wdGluZyByZXF1ZXN0IChub3QgY29tcGxldGVkKSwgYW5kIG1heWJlIGFkZGl0 aW9uYWwgcmVxdWVzdHM7CisgKiBhZ2FpbiwgdGhlc2UgaGF2ZSBiZWVuIHByZWVtcHRlZCBhbmQg bmVlZCB0byBiZSByZWN5Y2xlZCB0aHJvdWdoIHRoZQorICogc2NoZWR1bGVyLgorICovCitub2lu bGluZQorc3RhdGljIHZvaWQKK2k5MTVfc2NoZWR1bGVyX3ByZWVtcHRpb25fcG9zdHByb2Nlc3Mo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpOTE1X3NjaGVk dWxlciAqc2NoZWR1bGVyID0gZGV2X3ByaXYtPnNjaGVkdWxlcjsKKwlzdHJ1Y3QgaTkxNV9zY2hl ZHVsZXJfcXVldWVfZW50cnkgKnBub2RlID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnByZXEgPSBOVUxMOworCXN0cnVjdCBpOTE1X3NjaGVkdWxlcl9zdGF0cyAqc3RhdHM7 CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlpbnQgcHJlZW1wdGVkID0gMCwgcHJlZW1wdGl2ZSA9 IDA7CisKKwltdXRleF9sb2NrKCZyaW5nLT5kZXYtPnN0cnVjdF9tdXRleCk7CisKKwkvKiBGSVhN RTogZ3JhYiAmIGVtcHR5IGZlbmNlX3NpZ25hbF9saXN0IHdpdGggc3BpbmxvY2ssIHRoZW4gaXRl cmF0ZSBhZnRlcj8gKi8KKwlzcGluX2xvY2tfaXJxc2F2ZSgmcmluZy0+ZmVuY2VfbG9jaywgZmxh Z3MpOworCXdoaWxlICghbGlzdF9lbXB0eSgmcmluZy0+ZmVuY2Vfc2lnbmFsX2xpc3QpKSB7CisJ CXN0cnVjdCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqbm9kZTsKKwkJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXE7CisJCXJlcSA9IGxpc3RfZmlyc3RfZW50cnkoJnJpbmctPmZl bmNlX3NpZ25hbF9saXN0LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qs CisJCQkJICAgICAgIHNpZ25hbF9saW5rKTsKKwkJbGlzdF9kZWxfaW5pdCgmcmVxLT5zaWduYWxf bGluayk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmZlbmNlX2xvY2ssIGZsYWdz KTsKKworCQkvKiBXZSBzaG91bGQgZmluZCBvbmx5IHRyYWNrZWQgdW5zaWduYWxsZWQgcmVxdWVz dHMgKi8KKwkJbm9kZSA9IHJlcS0+c2NoZWR1bGVyX3FlOworCQlXQVJOKCFub2RlIHx8IGk5MTVf Z2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkgfHwKKwkJICAgICAobm9kZS0+c3RhdHVzID09IGk5 MTVfc3FzX3ByZWVtcHRlZCksCisJCSAgICAgIkludmFsaWQgbm9kZSBzdGF0ZTogJXMgW3JlcSA9 ICVkOiVkXVxuIiwKKwkJICAgICBub2RlID8gaTkxNV9zY2hlZHVsZXJfcXVldWVfc3RhdHVzX3N0 cihub2RlLT5zdGF0dXMpIDogIk5VTEwiLAorCQkgICAgIHJlcS0+dW5pcSwgcmVxLT5zZXFubyk7 CisKKwkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOworCisJCXNwaW5fbG9ja19p cnFzYXZlKCZyaW5nLT5mZW5jZV9sb2NrLCBmbGFncyk7CisJfQorCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJnJpbmctPmZlbmNlX2xvY2ssIGZsYWdzKTsKKwkvKiBGZW5jZSBzaWduYWwgbGlzdCBt dXN0IG5vdyBiZSBlbXB0eSAqLworCisJLyoKKwkgKiBUaGUgcHJlZW1wdGl2ZSByZXF1ZXN0IGFu ZCBhbGwgb3RoZXIgcmVxdWVzdHMgcmVtYWluaW5nIG9uIHRoZQorCSAqIGVuZ2luZSdzIHdvcmst aW4tcHJvZ3Jlc3MgbGlzdCBtdXN0IGJlIG1hcmtlZCBhcyBwcmVlbXB0ZWQsIHNvCisJICogdGhl IHNjaGVkdWxlciB3aWxsIHJlc2VsZWN0IGFuZCByZXN1Ym1pdCB0aGVtIC4uLgorCSAqLworCXNw aW5fbG9ja19pcnFzYXZlKCZzY2hlZHVsZXItPmxvY2ssIGZsYWdzKTsKKworCXsKKwkJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsICpuZXh0OworCisJCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShyZXEsIG5leHQsICZyaW5nLT5yZXF1ZXN0X2xpc3QsIGxpc3QpIHsKKwkJCXN0cnVj dCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqbm9kZTsKKwkJCW5vZGUgPSByZXEtPnNjaGVk dWxlcl9xZTsKKwkJCWlmIChXQVJOX09OKHJlcS0+cmluZyAhPSByaW5nKSkKKwkJCQljb250aW51 ZTsKKwkJCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQorCQkJCWNvbnRpbnVl OworCQkJLyogTGV0J3MgaG9wZSB0aGVyZSBhcmVuJ3QgYW55IHVudHJhY2tlZCBub2RlcyBoZXJl ISAqLworCQkJaWYgKFdBUk5fT04oIW5vZGUpKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAobm9k ZS0+c3RhdHVzID09IGk5MTVfc3FzX3ByZWVtcHRlZCkgeworCQkJCS8qIEFscmVhZHkgcHJvY2Vz c2VkIGluIF9ub3RpZnkoKSBhYm92ZSAqLworCQkJCXByZWVtcHRpdmUgKz0gMTsKKwkJCQlwcmVx ID0gcmVxOworCQkJCXBub2RlID0gcmVxLT5zY2hlZHVsZXJfcWU7CisJCQl9IGVsc2UgaWYgKCFX QVJOX09OKCFJOTE1X1NRU19JU19GTFlJTkcobm9kZSkpKSB7CisJCQkJcHJlZW1wdGVkICs9IDE7 CisJCQkJbm9kZS0+c3RhdHVzID0gaTkxNV9zcXNfcHJlZW1wdGVkOworCQkJCXRyYWNlX2k5MTVf c2NoZWR1bGVyX3VuZmx5KHJpbmcsIG5vZGUpOworCQkJCXRyYWNlX2k5MTVfc2NoZWR1bGVyX25v ZGVfc3RhdGVfY2hhbmdlKHJpbmcsIG5vZGUpOworCQkJCS8qIEVtcHR5IHRoZSBwcmVlbXB0ZWQg cmluZ2J1ZmZlciAqLworCQkJCWludGVsX2xyX2NvbnRleHRfcmVzeW5jKHJlcS0+Y3R4LCByaW5n LCBmYWxzZSk7CisJCQl9CisKKwkJCWk5MTVfZ2VtX3JlcXVlc3RfZGVxdWV1ZShyZXEpOworCQl9 CisJfQorCisJLyogV2Ugc2hvdWxkIGhhdmUgZm91bmQgZXhhY3RseSBPTkUgcHJlZW1wdGl2ZSBy ZXF1ZXN0ICovCisJV0FSTihwcmVlbXB0aXZlICE9IDEsICJHb3QgdW5leHBlY3RlZCBwcmVlbXB0 aXZlIGNvdW50IElJOiAlZCFcbiIsIHByZWVtcHRpdmUpOworCXN0YXRzID0gJnNjaGVkdWxlci0+ c3RhdHNbcmluZy0+aWRdOworCXN0YXRzLT5wcmVlbXB0ZWQgKz0gcHJlZW1wdGVkOworCWlmIChz dGF0cy0+bWF4X3ByZWVtcHRlZCA8IHByZWVtcHRlZCkKKwkJc3RhdHMtPm1heF9wcmVlbXB0ZWQg PSBwcmVlbXB0ZWQ7CisKKwl7CisJCS8qIFhYWDogU2t5IHNob3VsZCBiZSBlbXB0eSBub3cgKi8K KwkJc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICpub2RlOworCQlsaXN0X2Zvcl9l YWNoX2VudHJ5KG5vZGUsICZzY2hlZHVsZXItPm5vZGVfcXVldWVbcmluZy0+aWRdLCBsaW5rKQor CQkJV0FSTl9PTihJOTE1X1NRU19JU19GTFlJTkcobm9kZSkpOworCX0KKworCS8qIEFueXRoaW5n IGVsc2UgdG8gZG8gaGVyZSAuLi4gPyAqLworCisJLyoKKwkgKiBQb3N0cHJvY2Vzc2luZyBjb21w bGV0ZTsgdGhlIHNjaGVkdWxlciBpcyBub3cgYmFjayBpbgorCSAqIG5vcm1hbCBub24tcHJlZW1w dGl2ZSBzdGF0ZSBhbmQgY2FuIHN1Ym1pdCBtb3JlIHJlcXVlc3RzCisJICovCisJc2NoZWR1bGVy LT5mbGFnc1tyaW5nLT5pZF0gJj0gfihpOTE1X3NmX3ByZWVtcHRpbmd8aTkxNV9zZl9wcmVlbXB0 ZWQpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWR1bGVyLT5sb2NrLCBmbGFncyk7 CisKKwkvKiBYWFg6IFNob3VsZCBiZSBub3RoaW5nIG91dHN0YW5kaW5nIG9uIHJlcXVlc3QgbGlz dCAqLworCXsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7CisJCWxpc3RfZm9y X2VhY2hfZW50cnkocmVxLCAmcmluZy0+cmVxdWVzdF9saXN0LCBsaXN0KSB7CisJCQlXQVJOX09O KCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKTsKKwkJfQorCX0KKworCS8qIEFueXRo aW5nIGVsc2UgdG8gZG8gaGVyZSAuLi4gPyAqLworCWlmICghV0FSTl9PTihwbm9kZSA9PSBOVUxM IHx8IHByZXEgPT0gTlVMTCkpIHsKKwkJV0FSTl9PTihwbm9kZS0+cGFyYW1zLnJlcXVlc3QgIT0g cHJlcSk7CisJCVdBUk5fT04ocHJlcS0+c2NoZWR1bGVyX3FlICE9IHBub2RlKTsKKwkJV0FSTl9P TihwcmVxLT5zZXFubyk7CisKKwkJLyoKKwkJICogRklYTUU6IGFzc2lnbiBhIG5ldyByZXNlcnZl ZCBzZXFubyBoZXJlIHRvIGVuc3VyZQorCQkgKiB3ZSBkb24ndCByZWxhdW5jaCB0aGlzIHJlcXVl c3Qgd2l0aCB0aGUgc2FtZSBzZXFubworCQkgKiBGSVhNRTogY2FuIHdlIGp1c3QgY2xlYXIgaXQg aGVyZSBpbnN0ZWFkPworCQkgKi8KKwkJaWYgKGRldl9wcml2LT5uZXh0X3NlcW5vID09IDApCisJ CQlkZXZfcHJpdi0+bmV4dF9zZXFubyA9IDE7CisJCWRldl9wcml2LT5sYXN0X3NlcW5vID0gZGV2 X3ByaXYtPm5leHRfc2Vxbm8rKzsKKwkJRFJNX0RFQlVHX0RSSVZFUigicmVhc3NpZ25pbmcgcmVz ZXJ2ZWQgc2Vxbm8gJTA4eC0+JTA4eCwgKHNlcW5vICUwOHgsIHVuaXEgJWQpXG4iLAorCQkJcHJl cS0+cmVzZXJ2ZWRfc2Vxbm8sIGRldl9wcml2LT5sYXN0X3NlcW5vLAorCQkJcHJlcS0+c2Vxbm8s IHByZXEtPnVuaXEpOworCQlwcmVxLT5yZXNlcnZlZF9zZXFubyA9IGRldl9wcml2LT5sYXN0X3Nl cW5vOworCisJCS8qIEZJWE1FOiBkb24ndCBzbGVlcCwgZG9uJ3QgZW1wdHkgY29udGV4dD8gKi8K KwkJbXNsZWVwKDEpOworCQkvKiBFbXB0eSB0aGUgcHJlZW1wdGVkIHJpbmdidWZmZXIgKi8KKwkJ aW50ZWxfbHJfY29udGV4dF9yZXN5bmMocHJlcS0+Y3R4LCByaW5nLCBmYWxzZSk7CisJfQorCisJ bXV0ZXhfdW5sb2NrKCZyaW5nLT5kZXYtPnN0cnVjdF9tdXRleCk7Cit9CisKK25vaW5saW5lCiBz dGF0aWMgaW50IGk5MTVfc2NoZWR1bGVyX3JlbW92ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ ZGV2X3ByaXZhdGU7CkBAIC04MzQsMTMgKzk5MSwxNyBAQCB2b2lkIGk5MTVfZ2VtX3NjaGVkdWxl cl93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgICpyaW5nOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsK KwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXIgICAqc2NoZWR1bGVyOwogCXN0cnVjdCBkcm1fZGV2aWNl ICAgICAgICpkZXY7CiAJaW50ICAgICAgICAgICAgICAgICAgICAgaTsKIAogCWRldl9wcml2ID0g Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLCBtbS5zY2hlZHVsZXJf d29yayk7CisJc2NoZWR1bGVyID0gZGV2X3ByaXYtPnNjaGVkdWxlcjsKIAlkZXYgPSBkZXZfcHJp di0+ZGV2OwogCiAJZm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkgeworCQlpZiAoc2No ZWR1bGVyLT5mbGFnc1tyaW5nLT5pZF0gJiBpOTE1X3NmX3ByZWVtcHRlZCkKKwkJCWk5MTVfc2No ZWR1bGVyX3ByZWVtcHRpb25fcG9zdHByb2Nlc3MocmluZyk7CiAJCWk5MTVfc2NoZWR1bGVyX3Jl bW92ZShyaW5nKTsKIAl9CiB9Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK