From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 02/33] drm/i915: Allow a context to define its set of engines Date: Mon, 20 May 2019 09:00:56 +0100 Message-ID: <20190520080127.18255-2-chris@chris-wilson.co.uk> References: <20190520080127.18255-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 712CF8925B for ; Mon, 20 May 2019 08:03:28 +0000 (UTC) In-Reply-To: <20190520080127.18255-1-chris@chris-wilson.co.uk> 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 T3ZlciB0aGUgbGFzdCBmZXcgeWVhcnMsIHdlIGhhdmUgZGViYXRlZCBob3cgdG8gZXh0ZW5kIHRo ZSB1c2VyIEFQSSB0bwpzdXBwb3J0IGFuIGluY3JlYXNlIGluIHRoZSBudW1iZXIgb2YgZW5naW5l cywgdGhhdCBtYXkgYmUgc3BhcnNlIGFuZApldmVuIGJlIGhldGVyb2dlbmVvdXMgd2l0aGluIGEg Y2xhc3MgKG5vdCBhbGwgdmlkZW8gZGVjb2RlcnMgY3JlYXRlZAplcXVhbCkuIFdlIHNldHRsZWQg b24gdXNpbmcgKGNsYXNzLCBpbnN0YW5jZSkgdHVwbGVzIHRvIGlkZW50aWZ5IGEKc3BlY2lmaWMg ZW5naW5lLCB3aXRoIGFuIEFQSSBmb3IgdGhlIHVzZXIgdG8gY29uc3RydWN0IGEgbWFwIG9mIGVu Z2luZXMKdG8gY2FwYWJpbGl0aWVzLiBJbnRvIHRoaXMgcGljdHVyZSwgd2UgdGhlbiBhZGQgYSBj aGFsbGVuZ2Ugb2YgdmlydHVhbAplbmdpbmVzOyBvbmUgdXNlciBlbmdpbmUgdGhhdCBtYXBzIGJl aGluZCB0aGUgc2NlbmVzIHRvIGFueSBudW1iZXIgb2YKcGh5c2ljYWwgZW5naW5lcy4gVG8ga2Vl cCBpdCBnZW5lcmFsLCB3ZSB3YW50IHRoZSB1c2VyIHRvIGhhdmUgZnVsbApjb250cm9sIG92ZXIg dGhhdCBtYXBwaW5nLiBUbyB0aGF0IGVuZCwgd2UgYWxsb3cgdGhlIHVzZXIgdG8gY29uc3RyYWlu IGEKY29udGV4dCB0byBkZWZpbmUgdGhlIHNldCBvZiBlbmdpbmVzIHRoYXQgaXQgY2FuIGFjY2Vz cywgb3JkZXIgZnVsbHkKY29udHJvbGxlZCBieSB0aGUgdXNlciB2aWEgKGNsYXNzLCBpbnN0YW5j ZSkuIFdpdGggc3VjaCBwcmVjaXNlIGNvbnRyb2wKaW4gY29udGV4dCBzZXR1cCwgd2UgY2FuIGNv bnRpbnVlIHRvIHVzZSB0aGUgZXhpc3RpbmcgZXhlY2J1ZiB1QUJJIG9mCnNwZWNpZnlpbmcgYSBz aW5nbGUgaW5kZXg7IG9ubHkgbm93IGl0IGRvZXNuJ3QgYXV0b21hZ2ljYWxseSBtYXAgb250bwp0 aGUgZW5naW5lcywgaXQgdXNlcyB0aGUgdXNlciBkZWZpbmVkIGVuZ2luZSBtYXAgZnJvbSB0aGUg Y29udGV4dC4KCnYyOiBGaXh1cCBmcmVlaW5nIG9mIGxvY2FsIG9uIHN1Y2Nlc3Mgb2YgZ2V0X2Vu Z2luZXMoKQp2MzogQWxsb3cgZW1wdHkgZW5naW5lc1tdCnY0OiBzL25lbmdpbmUvbnVtX2VuZ2lu ZXMvCnY1OiBSZXBsYWNlIDY0IGxpbWl0IG9uIG51bV9lbmdpbmVzIHdpdGggYSBub3RlIHRoYXQg ZXhlY2J1ZiBpcwpjdXJyZW50bHkgbGltaXRlZCB0byBvbmx5IHVzaW5nIHRoZSBmaXJzdCA2NCBl bmdpbmVzLgp2NjogQWN0dWFsbHkgdXNlIHRoZSBlbmdpbmVzX211dGV4IHRvIGd1YXJkIHRoZSBj dHgtPmVuZ2luZXMuCgpUZXN0Y2FzZTogaWd0L2dlbV9jdHhfZW5naW5lcwpTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFR2cnRrbyBVcnN1 bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxp biA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8IDIzOSArKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8ICAxOCArKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dF90eXBlcy5oIHwgICAxICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8ICAgNSArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV91dGlscy5oICAgICAgICAgICAgIHwgIDM0ICsrKwogaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgICAgIHwgIDMxICsrKwogNiBmaWxlcyBjaGFu Z2VkLCAzMTUgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDQxM2M0NTI5MTkxZC4uMjFiZmNkNTI5MDk3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC05MCw3ICs5MCw2IEBA CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAKICNpbmNsdWRlICJndC9pbnRlbF9scmNfcmVn LmgiCi0jaW5jbHVkZSAiZ3QvaW50ZWxfd29ya2Fyb3VuZHMuaCIKIAogI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCkBAIC0xNDEsMTUgKzE0MCwzMSBAQCBz dGF0aWMgdm9pZCBsdXRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIH0KIAog c3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKLWxvb2t1cF91c2VyX2VuZ2luZShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LCB1MTYgY2xhc3MsIHUxNiBpbnN0YW5jZSkKK2xvb2t1cF91 c2VyX2VuZ2luZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICB1bnNpZ25lZCBs b25nIGZsYWdzLAorCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2Ug KmNpKQorI2RlZmluZSBMT09LVVBfVVNFUl9JTkRFWCBCSVQoMCkKIHsKLQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CisJaW50IGlkeDsKIAotCWVuZ2luZSA9IGludGVsX2VuZ2luZV9s b29rdXBfdXNlcihjdHgtPmk5MTUsIGNsYXNzLCBpbnN0YW5jZSk7Ci0JaWYgKCFlbmdpbmUpCisJ aWYgKCEhKGZsYWdzICYgTE9PS1VQX1VTRVJfSU5ERVgpICE9IGk5MTVfZ2VtX2NvbnRleHRfdXNl cl9lbmdpbmVzKGN0eCkpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwogCi0JcmV0dXJuIGk5 MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShjdHgsIGVuZ2luZS0+aWQpOworCWlmICghaTkxNV9n ZW1fY29udGV4dF91c2VyX2VuZ2luZXMoY3R4KSkgeworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisKKwkJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+aTkx NSwKKwkJCQkJCSAgY2ktPmVuZ2luZV9jbGFzcywKKwkJCQkJCSAgY2ktPmVuZ2luZV9pbnN0YW5j ZSk7CisJCWlmICghZW5naW5lKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwkJaWR4 ID0gZW5naW5lLT5pZDsKKwl9IGVsc2UgeworCQlpZHggPSBjaS0+ZW5naW5lX2luc3RhbmNlOwor CX0KKworCXJldHVybiBpOTE1X2dlbV9jb250ZXh0X2dldF9lbmdpbmUoY3R4LCBpZHgpOwogfQog CiBzdGF0aWMgaW5saW5lIGludCBuZXdfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGdmcF90IGdmcCkKQEAgLTI1Nyw2ICsyNzIsMTcgQEAgc3RhdGljIHZvaWQgZnJlZV9lbmdp bmVzKHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplKQogCV9fZnJlZV9lbmdpbmVzKGUsIGUtPm51 bV9lbmdpbmVzKTsKIH0KIAorc3RhdGljIHZvaWQgZnJlZV9lbmdpbmVzX3JjdShzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndyaykKK3sKKwlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZSA9CisJCWNvbnRh aW5lcl9vZih3cmssIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzLCByY3Uud29yayk7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlLT5pOTE1OworCisJbXV0ZXhfbG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7CisJZnJlZV9lbmdpbmVzKGUpOworCW11dGV4X3VubG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5l cyAqZGVmYXVsdF9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiB7CiAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwpAQCAtMTM1Miw5ICsxMzc4LDcgQEAgc3RhdGlj IGludCBzZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCWlmICh1c2VyX3Nz ZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JY2UgPSBs b29rdXBfdXNlcl9lbmdpbmUoY3R4LAotCQkJCXVzZXJfc3NldS5lbmdpbmUuZW5naW5lX2NsYXNz LAotCQkJCXVzZXJfc3NldS5lbmdpbmUuZW5naW5lX2luc3RhbmNlKTsKKwljZSA9IGxvb2t1cF91 c2VyX2VuZ2luZShjdHgsIDAsICZ1c2VyX3NzZXUuZW5naW5lKTsKIAlpZiAoSVNfRVJSKGNlKSkK IAkJcmV0dXJuIFBUUl9FUlIoY2UpOwogCkBAIC0xMzc5LDYgKzE0MDMsMTkxIEBAIHN0YXRpYyBp bnQgc2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlyZXR1cm4gcmV0Owog fQogCitzdHJ1Y3Qgc2V0X2VuZ2luZXMgeworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7 CisJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmVuZ2luZXM7Cit9OworCitzdGF0aWMgY29uc3Qg aTkxNV91c2VyX2V4dGVuc2lvbl9mbiBzZXRfZW5naW5lc19fZXh0ZW5zaW9uc1tdID0geworfTsK Kworc3RhdGljIGludAorc2V0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK KwkgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQorewor CXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyBfX3VzZXIgKnVzZXIgPQorCQl1NjRf dG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpOworCXN0cnVjdCBzZXRfZW5naW5lcyBzZXQgPSB7IC5j dHggPSBjdHggfTsKKwl1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsIG47CisJdTY0IGV4dGVuc2lv bnM7CisJaW50IGVycjsKKworCWlmICghYXJncy0+c2l6ZSkgeyAvKiBzd2l0Y2ggYmFjayB0byBs ZWdhY3kgdXNlcl9yaW5nX21hcCAqLworCQlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdp bmVzKGN0eCkpCisJCQlyZXR1cm4gMDsKKworCQlzZXQuZW5naW5lcyA9IGRlZmF1bHRfZW5naW5l cyhjdHgpOworCQlpZiAoSVNfRVJSKHNldC5lbmdpbmVzKSkKKwkJCXJldHVybiBQVFJfRVJSKHNl dC5lbmdpbmVzKTsKKworCQlnb3RvIHJlcGxhY2U7CisJfQorCisJQlVJTERfQlVHX09OKCFJU19B TElHTkVEKHNpemVvZigqdXNlciksIHNpemVvZigqdXNlci0+ZW5naW5lcykpKTsKKwlpZiAoYXJn cy0+c2l6ZSA8IHNpemVvZigqdXNlcikgfHwKKwkgICAgIUlTX0FMSUdORUQoYXJncy0+c2l6ZSwg c2l6ZW9mKCp1c2VyLT5lbmdpbmVzKSkpIHsKKwkJRFJNX0RFQlVHKCJJbnZhbGlkIHNpemUgZm9y IGVuZ2luZSBhcnJheTogJWRcbiIsCisJCQkgIGFyZ3MtPnNpemUpOworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwkvKgorCSAqIE5vdGUgdGhhdCBJOTE1X0VYRUNfUklOR19NQVNLIGxpbWl0cyBl eGVjYnVmIHRvIG9ubHkgdXNpbmcgdGhlCisJICogZmlyc3QgNjQgZW5naW5lcyBkZWZpbmVkIGhl cmUuCisJICovCisJbnVtX2VuZ2luZXMgPSAoYXJncy0+c2l6ZSAtIHNpemVvZigqdXNlcikpIC8g c2l6ZW9mKCp1c2VyLT5lbmdpbmVzKTsKKworCXNldC5lbmdpbmVzID0ga21hbGxvYyhzdHJ1Y3Rf c2l6ZShzZXQuZW5naW5lcywgZW5naW5lcywgbnVtX2VuZ2luZXMpLAorCQkJICAgICAgR0ZQX0tF Uk5FTCk7CisJaWYgKCFzZXQuZW5naW5lcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlzZXQuZW5n aW5lcy0+aTkxNSA9IGN0eC0+aTkxNTsKKwlmb3IgKG4gPSAwOyBuIDwgbnVtX2VuZ2luZXM7IG4r KykgeworCQlzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgY2k7CisJCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKworCQlpZiAoY29weV9mcm9tX3VzZXIoJmNpLCAmdXNl ci0+ZW5naW5lc1tuXSwgc2l6ZW9mKGNpKSkpIHsKKwkJCV9fZnJlZV9lbmdpbmVzKHNldC5lbmdp bmVzLCBuKTsKKwkJCXJldHVybiAtRUZBVUxUOworCQl9CisKKwkJaWYgKGNpLmVuZ2luZV9jbGFz cyA9PSAodTE2KUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQgJiYKKwkJICAgIGNpLmVuZ2luZV9p bnN0YW5jZSA9PSAodTE2KUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfTk9ORSkgeworCQkJc2V0 LmVuZ2luZXMtPmVuZ2luZXNbbl0gPSBOVUxMOworCQkJY29udGludWU7CisJCX0KKworCQllbmdp bmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1LAorCQkJCQkJICBjaS5lbmdp bmVfY2xhc3MsCisJCQkJCQkgIGNpLmVuZ2luZV9pbnN0YW5jZSk7CisJCWlmICghZW5naW5lKSB7 CisJCQlEUk1fREVCVUcoIkludmFsaWQgZW5naW5lWyVkXTogeyBjbGFzczolZCwgaW5zdGFuY2U6 JWQgfVxuIiwKKwkJCQkgIG4sIGNpLmVuZ2luZV9jbGFzcywgY2kuZW5naW5lX2luc3RhbmNlKTsK KwkJCV9fZnJlZV9lbmdpbmVzKHNldC5lbmdpbmVzLCBuKTsKKwkJCXJldHVybiAtRU5PRU5UOwor CQl9CisKKwkJc2V0LmVuZ2luZXMtPmVuZ2luZXNbbl0gPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShj dHgsIGVuZ2luZSk7CisJCWlmICghc2V0LmVuZ2luZXMtPmVuZ2luZXNbbl0pIHsKKwkJCV9fZnJl ZV9lbmdpbmVzKHNldC5lbmdpbmVzLCBuKTsKKwkJCXJldHVybiAtRU5PTUVNOworCQl9CisJfQor CXNldC5lbmdpbmVzLT5udW1fZW5naW5lcyA9IG51bV9lbmdpbmVzOworCisJZXJyID0gLUVGQVVM VDsKKwlpZiAoIWdldF91c2VyKGV4dGVuc2lvbnMsICZ1c2VyLT5leHRlbnNpb25zKSkKKwkJZXJy ID0gaTkxNV91c2VyX2V4dGVuc2lvbnModTY0X3RvX3VzZXJfcHRyKGV4dGVuc2lvbnMpLAorCQkJ CQkgICBzZXRfZW5naW5lc19fZXh0ZW5zaW9ucywKKwkJCQkJICAgQVJSQVlfU0laRShzZXRfZW5n aW5lc19fZXh0ZW5zaW9ucyksCisJCQkJCSAgICZzZXQpOworCWlmIChlcnIpIHsKKwkJZnJlZV9l bmdpbmVzKHNldC5lbmdpbmVzKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKK3JlcGxhY2U6CisJbXV0 ZXhfbG9jaygmY3R4LT5lbmdpbmVzX211dGV4KTsKKwlpZiAoYXJncy0+c2l6ZSkKKwkJaTkxNV9n ZW1fY29udGV4dF9zZXRfdXNlcl9lbmdpbmVzKGN0eCk7CisJZWxzZQorCQlpOTE1X2dlbV9jb250 ZXh0X2NsZWFyX3VzZXJfZW5naW5lcyhjdHgpOworCXJjdV9zd2FwX3Byb3RlY3RlZChjdHgtPmVu Z2luZXMsIHNldC5lbmdpbmVzLCAxKTsKKwltdXRleF91bmxvY2soJmN0eC0+ZW5naW5lc19tdXRl eCk7CisKKwlJTklUX1JDVV9XT1JLKCZzZXQuZW5naW5lcy0+cmN1LCBmcmVlX2VuZ2luZXNfcmN1 KTsKKwlxdWV1ZV9yY3Vfd29yayhzeXN0ZW1fd3EsICZzZXQuZW5naW5lcy0+cmN1KTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50CitnZXRfZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAorCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3Mp Cit7CisJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzIF9fdXNlciAqdXNlcjsKKwlz dHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZTsKKwlzaXplX3QgbiwgY291bnQsIHNpemU7CisJaW50 IGVyciA9IDA7CisKKwllcnIgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+ZW5naW5l c19tdXRleCk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWlmICghaTkxNV9nZW1fY29u dGV4dF91c2VyX2VuZ2luZXMoY3R4KSkgeworCQlhcmdzLT5zaXplID0gMDsKKwkJZ290byB1bmxv Y2s7CisJfQorCisJZSA9IGk5MTVfZ2VtX2NvbnRleHRfZW5naW5lcyhjdHgpOworCWNvdW50ID0g ZS0+bnVtX2VuZ2luZXM7CisKKwkvKiBCZSBwYXJhbm9pZCBpbiBjYXNlIHdlIGhhdmUgYW4gaW1w ZWRhbmNlIG1pc21hdGNoICovCisJaWYgKCFjaGVja19zdHJ1Y3Rfc2l6ZSh1c2VyLCBlbmdpbmVz LCBjb3VudCwgJnNpemUpKSB7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gdW5sb2NrOworCX0K KwlpZiAob3ZlcmZsb3dzX3R5cGUoc2l6ZSwgYXJncy0+c2l6ZSkpIHsKKwkJZXJyID0gLUVJTlZB TDsKKwkJZ290byB1bmxvY2s7CisJfQorCisJaWYgKCFhcmdzLT5zaXplKSB7CisJCWFyZ3MtPnNp emUgPSBzaXplOworCQlnb3RvIHVubG9jazsKKwl9CisKKwlpZiAoYXJncy0+c2l6ZSA8IHNpemUp IHsKKwkJZXJyID0gLUVJTlZBTDsKKwkJZ290byB1bmxvY2s7CisJfQorCisJdXNlciA9IHU2NF90 b191c2VyX3B0cihhcmdzLT52YWx1ZSk7CisJaWYgKCFhY2Nlc3Nfb2sodXNlciwgc2l6ZSkpIHsK KwkJZXJyID0gLUVGQVVMVDsKKwkJZ290byB1bmxvY2s7CisJfQorCisJaWYgKHB1dF91c2VyKDAs ICZ1c2VyLT5leHRlbnNpb25zKSkgeworCQllcnIgPSAtRUZBVUxUOworCQlnb3RvIHVubG9jazsK Kwl9CisKKwlmb3IgKG4gPSAwOyBuIDwgY291bnQ7IG4rKykgeworCQlzdHJ1Y3QgaTkxNV9lbmdp bmVfY2xhc3NfaW5zdGFuY2UgY2kgPSB7CisJCQkuZW5naW5lX2NsYXNzID0gSTkxNV9FTkdJTkVf Q0xBU1NfSU5WQUxJRCwKKwkJCS5lbmdpbmVfaW5zdGFuY2UgPSBJOTE1X0VOR0lORV9DTEFTU19J TlZBTElEX05PTkUsCisJCX07CisKKwkJaWYgKGUtPmVuZ2luZXNbbl0pIHsKKwkJCWNpLmVuZ2lu ZV9jbGFzcyA9IGUtPmVuZ2luZXNbbl0tPmVuZ2luZS0+dWFiaV9jbGFzczsKKwkJCWNpLmVuZ2lu ZV9pbnN0YW5jZSA9IGUtPmVuZ2luZXNbbl0tPmVuZ2luZS0+aW5zdGFuY2U7CisJCX0KKworCQlp ZiAoY29weV90b191c2VyKCZ1c2VyLT5lbmdpbmVzW25dLCAmY2ksIHNpemVvZihjaSkpKSB7CisJ CQllcnIgPSAtRUZBVUxUOworCQkJZ290byB1bmxvY2s7CisJCX0KKwl9CisKKwlhcmdzLT5zaXpl ID0gc2l6ZTsKKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmY3R4LT5lbmdpbmVzX211dGV4KTsK KwlyZXR1cm4gZXJyOworfQorCiBzdGF0aWMgaW50IGN0eF9zZXRwYXJhbShzdHJ1Y3QgZHJtX2k5 MTVfZmlsZV9wcml2YXRlICpmcHJpdiwKIAkJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs CiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCkBAIC0xNDUyLDYg KzE2NjEsMTAgQEAgc3RhdGljIGludCBjdHhfc2V0cGFyYW0oc3RydWN0IGRybV9pOTE1X2ZpbGVf cHJpdmF0ZSAqZnByaXYsCiAJCXJldCA9IHNldF9wcGd0dChmcHJpdiwgY3R4LCBhcmdzKTsKIAkJ YnJlYWs7CiAKKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTOgorCQlyZXQgPSBzZXRf ZW5naW5lcyhjdHgsIGFyZ3MpOworCQlicmVhazsKKwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFN X0JBTl9QRVJJT0Q6CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKQEAgLTE1OTYsOSArMTgw OSw3IEBAIHN0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK IAlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQogCQlyZXR1cm4gLUVJTlZB TDsKIAotCWNlID0gbG9va3VwX3VzZXJfZW5naW5lKGN0eCwKLQkJCQl1c2VyX3NzZXUuZW5naW5l LmVuZ2luZV9jbGFzcywKLQkJCQl1c2VyX3NzZXUuZW5naW5lLmVuZ2luZV9pbnN0YW5jZSk7CisJ Y2UgPSBsb29rdXBfdXNlcl9lbmdpbmUoY3R4LCAwLCAmdXNlcl9zc2V1LmVuZ2luZSk7CiAJaWYg KElTX0VSUihjZSkpCiAJCXJldHVybiBQVFJfRVJSKGNlKTsKIApAQCAtMTY4Miw2ICsxODkzLDEw IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCXJldCA9IGdldF9wcGd0dChmaWxlX3ByaXYsIGN0eCwgYXJn cyk7CiAJCWJyZWFrOwogCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUzoKKwkJcmV0 ID0gZ2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKKwkJYnJlYWs7CisKIAljYXNlIEk5MTVfQ09OVEVY VF9QQVJBTV9CQU5fUEVSSU9EOgogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5WQUw7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXggMjcyZTE4M2ViYzBjLi45YWQ0YTYz NjI0MzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKQEAgLTExMiw2 ICsxMTIsMjQgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfc2V0X2ZvcmNl X3NpbmdsZV9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2dlbV8KIAlfX3NldF9iaXQoQ09OVEVYVF9G T1JDRV9TSU5HTEVfU1VCTUlTU0lPTiwgJmN0eC0+ZmxhZ3MpOwogfQogCitzdGF0aWMgaW5saW5l IGJvb2wKK2k5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdpbmVzKGNvbnN0IHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgpCit7CisJcmV0dXJuIHRlc3RfYml0KENPTlRFWFRfVVNFUl9FTkdJTkVT LCAmY3R4LT5mbGFncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoraTkxNV9nZW1fY29udGV4 dF9zZXRfdXNlcl9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCit7CisJc2V0 X2JpdChDT05URVhUX1VTRVJfRU5HSU5FUywgJmN0eC0+ZmxhZ3MpOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQKK2k5MTVfZ2VtX2NvbnRleHRfY2xlYXJfdXNlcl9lbmdpbmVzKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpCit7CisJY2xlYXJfYml0KENPTlRFWFRfVVNFUl9FTkdJTkVTLCAm Y3R4LT5mbGFncyk7Cit9CisKIGludCBfX2k5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpOwogc3RhdGljIGlubGluZSBpbnQgaTkxNV9nZW1fY29u dGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAppbmRleCBkNWNiNGYxMjFh YWQuLmZiOTY1ZGVkMjUwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHRfdHlwZXMuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 IHsKICNkZWZpbmUgQ09OVEVYVF9CQU5ORUQJCQkwCiAjZGVmaW5lIENPTlRFWFRfQ0xPU0VECQkJ MQogI2RlZmluZSBDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OCTIKKyNkZWZpbmUgQ09O VEVYVF9VU0VSX0VOR0lORVMJCTMKIAogCS8qKgogCSAqIEBod19pZDogLSB1bmlxdWUgaWRlbnRp ZmllciBmb3IgdGhlIGNvbnRleHQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwppbmRleCA2NzlmN2MxNTYxYmEuLmQ2YzUyMjBhZGRkMCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMjE2NSw3ICsyMTY1LDEwIEBAIGVi X3NlbGVjdF9lbmdpbmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJdW5zaWduZWQgaW50 IGlkeDsKIAlpbnQgZXJyOwogCi0JaWR4ID0gZWJfc2VsZWN0X2xlZ2FjeV9yaW5nKGViLCBmaWxl LCBhcmdzKTsKKwlpZiAoaTkxNV9nZW1fY29udGV4dF91c2VyX2VuZ2luZXMoZWItPmdlbV9jb250 ZXh0KSkKKwkJaWR4ID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLOworCWVsc2UK KwkJaWR4ID0gZWJfc2VsZWN0X2xlZ2FjeV9yaW5nKGViLCBmaWxlLCBhcmdzKTsKIAogCWNlID0g aTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGViLT5nZW1fY29udGV4dCwgaWR4KTsKIAlpZiAo SVNfRVJSKGNlKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaAppbmRleCA1Yzk0YzdhYjQ2MDcu LmU1Mjg2NjA4NDg5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGls cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaApAQCAtMjYsNiArMjYs NyBAQAogI2RlZmluZSBfX0k5MTVfVVRJTFNfSAogCiAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgor I2luY2x1ZGUgPGxpbnV4L292ZXJmbG93Lmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNp bmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgpAQCAt NzgsNiArNzksMzkgQEAKICNkZWZpbmUgb3ZlcmZsb3dzX3R5cGUoeCwgVCkgXAogCShzaXplb2Yo eCkgPiBzaXplb2YoVCkgJiYgKHgpID4+IEJJVFNfUEVSX1RZUEUoVCkpCiAKK3N0YXRpYyBpbmxp bmUgYm9vbAorX19jaGVja19zdHJ1Y3Rfc2l6ZShzaXplX3QgYmFzZSwgc2l6ZV90IGFyciwgc2l6 ZV90IGNvdW50LCBzaXplX3QgKnNpemUpCit7CisJc2l6ZV90IHN6OworCisJaWYgKGNoZWNrX211 bF9vdmVyZmxvdyhjb3VudCwgYXJyLCAmc3opKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoY2hl Y2tfYWRkX292ZXJmbG93KHN6LCBiYXNlLCAmc3opKQorCQlyZXR1cm4gZmFsc2U7CisKKwkqc2l6 ZSA9IHN6OworCXJldHVybiB0cnVlOworfQorCisvKioKKyAqIGNoZWNrX3N0cnVjdF9zaXplKCkg LSBDYWxjdWxhdGUgc2l6ZSBvZiBzdHJ1Y3R1cmUgd2l0aCB0cmFpbGluZyBhcnJheS4KKyAqIEBw OiBQb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUuCisgKiBAbWVtYmVyOiBOYW1lIG9mIHRoZSBhcnJh eSBtZW1iZXIuCisgKiBAbjogTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheS4KKyAqIEBz ejogVG90YWwgc2l6ZSBvZiBzdHJ1Y3R1cmUgYW5kIGFycmF5CisgKgorICogQ2FsY3VsYXRlcyBz aXplIG9mIG1lbW9yeSBuZWVkZWQgZm9yIHN0cnVjdHVyZSBAcCBmb2xsb3dlZCBieSBhbgorICog YXJyYXkgb2YgQG4gQG1lbWJlciBlbGVtZW50cywgbGlrZSBzdHJ1Y3Rfc2l6ZSgpIGJ1dCByZXBv cnRzCisgKiB3aGV0aGVyIGl0IG92ZXJmbG93ZWQsIGFuZCB0aGUgcmVzdWx0YW50IHNpemUgaW4g QHN6CisgKgorICogUmV0dXJuOiBmYWxzZSBpZiB0aGUgY2FsY3VsYXRpb24gb3ZlcmZsb3dlZC4K KyAqLworI2RlZmluZSBjaGVja19zdHJ1Y3Rfc2l6ZShwLCBtZW1iZXIsIG4sIHN6KSBcCisJbGlr ZWx5KF9fY2hlY2tfc3RydWN0X3NpemUoc2l6ZW9mKCoocCkpLCBcCisJCQkJICAgc2l6ZW9mKCoo cCktPm1lbWJlcikgKyBfX211c3RfYmVfYXJyYXkoKHApLT5tZW1iZXIpLCBcCisJCQkJICAgbiwg c3opKQorCiAjZGVmaW5lIHB0cl9tYXNrX2JpdHMocHRyLCBuKSAoewkJCQkJXAogCXVuc2lnbmVk IGxvbmcgX192ID0gKHVuc2lnbmVkIGxvbmcpKHB0cik7CQkJXAogCSh0eXBlb2YocHRyKSkoX192 ICYgLUJJVChuKSk7CQkJCQlcCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggZDZhZDRhMTViMmI5Li44ZTFi YjIyOTI2ZTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9p bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTEzNiw2ICsxMzYsNyBAQCBlbnVtIGRybV9p OTE1X2dlbV9lbmdpbmVfY2xhc3Mgewogc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNl IHsKIAlfX3UxNiBlbmdpbmVfY2xhc3M7IC8qIHNlZSBlbnVtIGRybV9pOTE1X2dlbV9lbmdpbmVf Y2xhc3MgKi8KIAlfX3UxNiBlbmdpbmVfaW5zdGFuY2U7CisjZGVmaW5lIEk5MTVfRU5HSU5FX0NM QVNTX0lOVkFMSURfTk9ORSAtMQogfTsKIAogLyoqCkBAIC0xNTIyLDYgKzE1MjMsMjYgQEAgc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKIAkgKiBTZWUgRFJNX0k5MTVfR0VNX1ZN X0NSRUFURSBhbmQgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1kuCiAJICovCiAjZGVmaW5lIEk5MTVf Q09OVEVYVF9QQVJBTV9WTQkJMHg5CisKKy8qCisgKiBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5F UzoKKyAqCisgKiBCaW5kIHRoaXMgY29udGV4dCB0byBvcGVyYXRlIG9uIHRoaXMgc3Vic2V0IG9m IGF2YWlsYWJsZSBlbmdpbmVzLiBIZW5jZWZvcnRoLAorICogdGhlIEk5MTVfRVhFQ19SSU5HIHNl bGVjdG9yIGZvciBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIgb3BlcmF0ZXMgYXMKKyAq IGFuIGluZGV4IGludG8gdGhpcyBhcnJheSBvZiBlbmdpbmVzOyBJOTE1X0VYRUNfREVGQVVMVCBz ZWxlY3RpbmcgZW5naW5lWzBdCisgKiBhbmQgdXB3YXJkcy4gU2xvdHMgMC4uLk4gYXJlIGZpbGxl ZCBpbiB1c2luZyB0aGUgc3BlY2lmaWVkIChjbGFzcywgaW5zdGFuY2UpLgorICogVXNlCisgKgll bmdpbmVfY2xhc3M6IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQsCisgKgllbmdpbmVfaW5zdGFu Y2U6IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfTk9ORQorICogdG8gc3BlY2lmeSBhIGdhcCBp biB0aGUgYXJyYXkgdGhhdCBjYW4gYmUgZmlsbGVkIGluIGxhdGVyLCBlLmcuIGJ5IGEKKyAqIHZp cnR1YWwgZW5naW5lIHVzZWQgZm9yIGxvYWQgYmFsYW5jaW5nLgorICoKKyAqIFNldHRpbmcgdGhl IG51bWJlciBvZiBlbmdpbmVzIGJvdW5kIHRvIHRoZSBjb250ZXh0IHRvIDAsIGJ5IHBhc3Npbmcg YSB6ZXJvCisgKiBzaXplZCBhcmd1bWVudCwgd2lsbCByZXZlcnQgYmFjayB0byBkZWZhdWx0IHNl dHRpbmdzLgorICoKKyAqIFNlZSBzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMuCisg Ki8KKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMJMHhhCiAvKiBNdXN0IGJlIGtl cHQgY29tcGFjdCAtLSBubyBob2xlcyBhbmQgd2VsbCBkb2N1bWVudGVkICovCiAKIAlfX3U2NCB2 YWx1ZTsKQEAgLTE1ODUsNiArMTYwNiwxNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW1fc3NldSB7CiAJX191MzIgcnN2ZDsKIH07CiAKK3N0cnVjdCBpOTE1X2NvbnRleHRfcGFy YW1fZW5naW5lcyB7CisJX191NjQgZXh0ZW5zaW9uczsgLyogbGlua2VkIGNoYWluIG9mIGV4dGVu c2lvbiBibG9ja3MsIDAgdGVybWluYXRlcyAqLworCXN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19p bnN0YW5jZSBlbmdpbmVzWzBdOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworI2RlZmlu ZSBJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMobmFtZV9fLCBOX18pIHN0cnVjdCB7 IFwKKwlfX3U2NCBleHRlbnNpb25zOyBcCisJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3Rh bmNlIGVuZ2luZXNbTl9fXTsgXAorfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSBuYW1lX18KKwog c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gewogI2RlZmlu ZSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSAwCiAJc3RydWN0IGk5MTVfdXNlcl9l eHRlbnNpb24gYmFzZTsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4