From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [RFC 3/4] drm/i915/gen9: Expose top-most universal plane as cursor Date: Wed, 26 Oct 2016 15:51:30 -0700 Message-ID: <1477522291-10874-4-git-send-email-matthew.d.roper@intel.com> References: <1477522291-10874-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 03A8E6E19A for ; Wed, 26 Oct 2016 22:52:49 +0000 (UTC) In-Reply-To: <1477522291-10874-1-git-send-email-matthew.d.roper@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 Cc: Lyude Paul , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org R2VuOSBoYXMgYSB0cmFkaXRpb25hbCBjdXJzb3IgcGxhbmUgdGhhdCBpcyBtdXR1YWxseSBleGNs dXNpdmUgd2l0aCB0aGUKc3lzdGVtJ3MgdG9wLW1vc3QgInVuaXZlcnNhbCIgcGxhbmU7IGl0IHNl ZW1zIGxpa2VseSB0aGF0IHR3byBwbGFuZXMgYXJlCnJlYWxseSBhIHNpbmdsZSBzaGFyZWQgaGFy ZHdhcmUgdW5pdCB3aXRoIHR3byBkaWZmZXJlbnQgcmVnaXN0ZXIKaW50ZXJmYWNlcy4gIFRodXMg ZmFyIGk5MTUgaGFzIGV4cG9zZWQgYSBjdXJzb3IgcGxhbmUgdG8gdXNlcnNwYWNlCnRoYXQncyBo b29rZWQgdXAgdG8gdGhlIG9sZC1zdHlsZSBjdXJzb3IgcmVnaXN0ZXJzOyB3ZSBqdXN0IHByZXRl bmRlZAp0aGF0IHRoZSB0b3AtbW9zdCB1bml2ZXJzYWwgcGxhbmUgZGlkbid0IGV4aXN0IGFuZCBy ZXBvcnRlZCBvbmUgZmV3ZXIKInNwcml0ZS9vdmVybGF5IiBwbGFuZXMgZm9yIGVhY2ggcGlwZSB0 aGFuIHRoZSBwbGF0Zm9ybSB0ZWNobmljYWxseSBoYXMuCkxldCdzIHN3aXRjaCB0aGlzIGFyb3Vu ZCBzbyB0aGF0IHRoZSBjdXJzb3IgZXhwb3NlZCB0byB1c2Vyc3BhY2UgaXMKYWN0dWFsbHkgd2ly ZWQgdXAgdG8gdG9wLW1vc3QgdW5pdmVyc2FsIHBsYW5lIHJlZ2lzdGVycy4gIFdlJ2xsIGNvbnRp bnVlCnRvIHByZXNlbnQgdGhlIHNhbWUgY3Vyc29yIEFCSSB0byB1c2Vyc3BhY2UgdGhhdCB3ZSBh bHdheXMgaGF2ZSwgYnV0CmludGVybmFsbHkgd2UnbGwganVzdCBiZSBwcm9ncmFtbWluZyBhIGRp ZmZlcmVudCBzZXQgb2YgcmVnaXN0ZXJzIGFuZApkb2luZyBzbyBpbiBhIHdheSB0aGF0J3MgbW9y ZSBjb25zaXN0ZW50IHdpdGggaG93IGFsbCB0aGUgb3RoZXIgZ2VuOQpwbGFuZXMgd29yayAtLS0g bGVzcyBjdXJzb3Itc3BlY2lmaWMgc3BlY2lhbCBjYXNlcyB0aHJvdWdob3V0IHRoZSBjb2RlLgoK QXNpZGUgZnJvbSBtYWtpbmcgdGhlIGNvZGUgYSBiaXQgc2ltcGxlciAoZmV3ZXIgY3Vyc29yLXNw ZWNpZmljIHNwZWNpYWwKY2FzZXMpLCB0aGlzIHdpbGwgYWxzbyBwYXZlIHRoZSB3YXkgdG8gZXZl bnR1YWxseSBleHBvc2luZyB0aGUgdG9wLW1vc3QKcGxhbmUgaW4gYSBtb3JlIGZ1bGwtZmVhdHVy ZWQgbWFubmVyIHRvIHVzZXJzcGFjZSBjbGllbnRzIHRoYXQgZG9uJ3QKbmVlZCBhIHRyYWRpdGlv bmFsIGN1cnNvciBhbmQgd2lzaCB0byBvcHQgaW50byBoYXZpbmcgYWNjZXNzIHRvIGFuCmFkZGl0 aW9uYWwgc3ByaXRlL292ZXJsYXktc3R5bGUgcGxhbmUgaW5zdGVhZC4KCkl0J3Mgd29ydGggbm90 aW5nIHRoYXQgYSBsb3Qgb2YgdGhlIHNwZWNpYWwtY2FzZWQgY3Vyc29yLXNwZWNpZmljIGNvZGUK d2FzIGluIHRoZSBnZW45IHdhdGVybWFyayBwcm9ncmFtbWluZy4gIEl0J3MgZ29vZCB0byBzaW1w bGlmeSB0aGF0IGNvZGUsCmJ1dCB3ZSBzaG91bGQga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgdW53 YW50ZWQgc2lkZSBlZmZlY3RzIG9mIHRoaXMKcGF0Y2g7IHNpbmNlIHNwcml0ZXMvb3ZlcmxheXMg dGVuZCB0byBnZXQgdXNlZCBsZXNzIHRoYW4gY3Vyc29ycywgaXQncwpwb3NzaWJsZSB0aGF0IHRo aXMgY291bGQgaGVscCB1cyB1bmNvdmVyIGFkZGl0aW9uYWwgdW5kZXJydW5zIHRoYXQKbm9ib2R5 IGhhZCBydW4gYWNyb3NzIHlldC4gIE9yIGl0IGNvdWxkIGhhdmUgdGhlIG9wcG9zaXRlIGVmZmVj dCBhbmQKZWxpbWluYXRlIHNvbWUgb2YgdGhlIHVuZGVycnVucyB0aGF0IHdlIGhhdmVuJ3QgYmVl biBhYmxlIHRvIGdldCByaWQgb2YKeWV0LgoKQ2M6IEJvYiBQYWF1d2UgPGJvYi5qLnBhYXV3ZUBp bnRlbC5jb20+CkNjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgpDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+CkNj OiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVy IDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jICAgICAgfCAgNCAtLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgICAgICB8IDExICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9p bmZvLmMgfCAzOCArKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgICAgIHwgOTcgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgfCAgNyArKysKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgfCA4NSArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgIHwgIDYgKy0KIDcg ZmlsZXMgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMTU1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggOWY1YTM5Mi4uMGJiYTQ3MiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTM0NjksMTAgKzM0NjksNiBAQCBzdGF0aWMgaW50 IGk5MTVfZGRiX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJCQkJICAg ZW50cnktPnN0YXJ0LCBlbnRyeS0+ZW5kLAogCQkJCSAgIHNrbF9kZGJfZW50cnlfc2l6ZShlbnRy eSkpOwogCQl9Ci0KLQkJZW50cnkgPSAmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOwot CQlzZXFfcHJpbnRmKG0sICIgICUtMTNzJTh1JTh1JTh1XG4iLCAiQ3Vyc29yIiwgZW50cnktPnN0 YXJ0LAotCQkJICAgZW50cnktPmVuZCwgc2tsX2RkYl9lbnRyeV9zaXplKGVudHJ5KSk7CiAJfQog CiAJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5k ZXggNDcxNDA1MS4uODNhYWVkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xNzgsNyAr MTc4LDcgQEAgZW51bSBwbGFuZSB7CiAJUExBTkVfQSA9IDAsCiAJUExBTkVfQiwKIAlQTEFORV9D LAotCVBMQU5FX0NVUlNPUiwKKwlQTEFORV9ELAogCUk5MTVfTUFYX1BMQU5FUywKIH07CiAjZGVm aW5lIHBsYW5lX25hbWUocCkgKChwKSArICdBJykKQEAgLTMxNiw5ICszMTYsMTUgQEAgc3RydWN0 IGk5MTVfaG90cGx1ZyB7CiAJZm9yICgoX19wKSA9IDA7CQkJCQkJCVwKIAkgICAgIChfX3ApIDwg SU5URUxfSU5GTyhfX2Rldl9wcml2KS0+bnVtX3Nwcml0ZXNbKF9fcGlwZSldICsgMTsJXAogCSAg ICAgKF9fcCkrKykKKworLyoKKyAqIE9ubHkgaXRlcmF0ZSBvdmVyIHNwcml0ZXMgZXhwb3NlZCBh cyBzcHJpdGVzOyBvbWl0IHNwcml0ZXMgdGhhdAorICogYXJlIGJlaW5nIHJlcHVycG9zZWQgdG8g c2ltdWxhdGUgYSBjdXJzb3IuCisgKi8KICNkZWZpbmUgZm9yX2VhY2hfc3ByaXRlKF9fZGV2X3By aXYsIF9fcCwgX19zKQkJCQlcCiAJZm9yICgoX19zKSA9IDA7CQkJCQkJCVwKLQkgICAgIChfX3Mp IDwgSU5URUxfSU5GTyhfX2Rldl9wcml2KS0+bnVtX3Nwcml0ZXNbKF9fcCldOwlcCisJICAgICAo X19zKSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9zcHJpdGVzWyhfX3ApXSAtCVwKKwkg ICAgICAgICAgICAgKElOVEVMX0lORk8oX19kZXZfcHJpdiktPmhhc19yZWFsX2N1cnNvciA/IDAg OiAxKTsJXAogCSAgICAgKF9fcykrKykKIAogI2RlZmluZSBmb3JfZWFjaF9wb3J0X21hc2tlZChf X3BvcnQsIF9fcG9ydHNfbWFzaykgXApAQCAtNjg3LDYgKzY5Myw3IEBAIHN0cnVjdCBpbnRlbF9j c3IgewogCWZ1bmMoaGFzX3Bzcik7IFwKIAlmdW5jKGhhc19yYzYpOyBcCiAJZnVuYyhoYXNfcmM2 cCk7IFwKKwlmdW5jKGhhc19yZWFsX2N1cnNvcik7IFwKIAlmdW5jKGhhc19yZXNvdXJjZV9zdHJl YW1lcik7IFwKIAlmdW5jKGhhc19ydW50aW1lX3BtKTsgXAogCWZ1bmMoaGFzX3Nub29wKTsgXApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKaW5kZXggZDZhOGYxMS4uYTQ2 NGUwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCkBAIC0yNzEs MjMgKzI3MSwzOSBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZW51bSBwaXBlIHBpcGU7CiAKIAkvKgotCSAq IFNreWxha2UgYW5kIEJyb3h0b24gY3VycmVudGx5IGRvbid0IGV4cG9zZSB0aGUgdG9wbW9zdCBw bGFuZSBhcyBpdHMKLQkgKiB1c2UgaXMgZXhjbHVzaXZlIHdpdGggdGhlIGxlZ2FjeSBjdXJzb3Ig YW5kIHdlIG9ubHkgd2FudCB0byBleHBvc2UKLQkgKiBvbmUgb2YgdGhvc2UsIG5vdCBib3RoLiBV bnRpbCB3ZSBjYW4gc2FmZWx5IGV4cG9zZSB0aGUgdG9wbW9zdCBwbGFuZQotCSAqIGFzIGEgRFJN X1BMQU5FX1RZUEVfQ1VSU09SIHdpdGggYWxsIHRoZSBmZWF0dXJlcyBleHBvc2VkL3N1cHBvcnRl ZCwKLQkgKiB3ZSBkb24ndCBleHBvc2UgdGhlIHRvcG1vc3QgcGxhbmUgYXQgYWxsIHRvIHByZXZl bnQgQUJJIGJyZWFrYWdlCi0JICogZG93biB0aGUgbGluZS4KKwkgKiBHZW45IHBsYXRmb3JtcyBo YXZlIGEgdG9wLW1vc3QgdW5pdmVyc2FsIChpLmUuLCBzcHJpdGUpIHBsYW5lIGFuZCBhCisJICog Y3Vyc29yIHBsYW5lIHRoYXQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gIElmIHdlIHVzZSB0aGUg Y3Vyc29yCisJICogcGxhbmUgd2UgcGVybWFuZW50bHkgbG9zZSB0aGUgYWJpbGl0eSB0byBtYWtl IHVzZSBvZiB0aGUgbW9yZQorCSAqIGZ1bGwtZmVhdHVyZWQgdW5pdmVyc2FsIHBsYW5lLiAgU28g aW5zdGVhZCBsZXQncyB1c2UgYWxsIG9mIHRoZQorCSAqIHVuaXZlcnNhbCBwbGFuZXMsIGlnbm9y ZSB0aGUgY3Vyc29yIHBsYW5lLCBidXQgaG9vayB0aGUgdG9wLW1vc3QKKwkgKiB1bml2ZXJzYWwg cGxhbmUgdXAgdG8gdGhlIGxlZ2FjeSBjdXJzb3IgaW9jdGwncyBhbmQgZXhwb3NlIGl0IHRvCisJ ICogdXNlcnNwYWNlIGFzIERSTV9QTEFORV9UWVBFX0NVUlNPUi4gIFRoaXMgd29uJ3QgcmVzdWx0 IGluIGFueQorCSAqIHZpc2libGUgYmVoYXZpb3IgY2hhbmdlIHRvIHVzZXJzcGFjZTsgd2UncmUg anVzdCBpbnRlcm5hbGx5CisJICogcHJvZ3JhbW1pbmcgYSBkaWZmZXJlbnQgc2V0IG9mIHJlZ2lz dGVycy4KKwkgKgorCSAqIEZvciB0aGUgcHVycG9zZXMgb2YgZGV2aWNlX2luZm8sIHdlJ3JlIG9u bHkgY29uY2VybmVkIHdpdGggdGhlCisJICogbnVtYmVyIG9mIHVuaXZlcnNhbCBwbGFuZXMgd2Un cmUgcHJvZ3JhbW1pbmcsIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkKKwkgKiBnZXQgbWFwcGVkIHRv IHVzZXJzcGFjZSBpbnRlcmZhY2VzLCBzbyB3ZSdsbCByZXBvcnQgdGhlIHRydWUgbnVtYmVyIG9m CisJICogdW5pdmVyc2FsIHBsYW5lcyBmb3IgZ2VuOS4KIAkgKi8KIAlpZiAoSVNfQlJPWFRPTihk ZXZfcHJpdikpIHsKLQkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9BXSA9IDI7Ci0JCWluZm8tPm51 bV9zcHJpdGVzW1BJUEVfQl0gPSAyOwotCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0NdID0gMTsK LQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQorCQlpbmZvLT5oYXNfcmVhbF9jdXJzb3IgPSAwOworCQlpbmZvLT5udW1fc3ByaXRl c1tQSVBFX0FdID0gMzsKKwkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9CXSA9IDM7CisJCWluZm8t Pm51bV9zcHJpdGVzW1BJUEVfQ10gPSAyOworCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikp IHsKKwkJaW5mby0+aGFzX3JlYWxfY3Vyc29yID0gMDsKIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJp diwgcGlwZSkKIAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMjsKLQllbHNlCisJfSBlbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkg eworCQlpbmZvLT5oYXNfcmVhbF9jdXJzb3IgPSAxOworCQlmb3JfZWFjaF9waXBlKGRldl9wcml2 LCBwaXBlKQorCQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOworCX0gZWxzZSB7CisJCWlu Zm8tPmhhc19yZWFsX2N1cnNvciA9IDE7CiAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUp CiAJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDE7CisJfQogCiAJaWYgKGk5MTUuZGlzYWJs ZV9kaXNwbGF5KSB7CiAJCURSTV9JTkZPKCJEaXNwbGF5IGRpc2FibGVkIChtb2R1bGUgcGFyYW1l dGVyKVxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggY2I3ZGQxMS4u OWE4YzJiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTIzMiw2ICsx MjMyLDIzIEBAIHZvaWQgYXNzZXJ0X3BhbmVsX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCiAJICAgICBwaXBlX25hbWUocGlwZSkpOwog fQogCisvKgorICogQ3Vyc29yIHN0YXRlIGZvciBwbGF0Zm9ybXMgdGhhdCB1c2UgYSB1bml2ZXJz YWwgcGxhbmUgYXMgYSBjdXJzb3IuCisgKiBQcmltYXJ5IGlzIHVuaXZlcnNhbCAjMCwgb3RoZXJz IGFyZSB1bml2ZXJzYWwgIzEtbnVtc3ByaXRlcy4gIEN1cnNvcgorICogd2lsbCBiZSB0aGUgZmlu YWwgdW5pdmVyc2FsIHBsYW5lIGZvciB0aGUgcGlwZS4KKyAqLworc3RhdGljIGJvb2wKK3VuaXZl cnNhbF9jdXJzb3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkg ICAgICAgZW51bSBwaXBlIHBpcGUpCit7CisJdW5zaWduZWQgaW50IHBsYW5lbnVtID0gSU5URUxf SU5GTyhkZXZfcHJpdiktPm51bV9zcHJpdGVzW3BpcGVdOworCXUzMiB2YWw7CisKKwl2YWwgPSBJ OTE1X1JFQUQoUExBTkVfQ1RMKHBpcGUsIHBsYW5lbnVtKSk7CisKKwlyZXR1cm4gdmFsICYgUExB TkVfQ1RMX0VOQUJMRTsKK30KKwogc3RhdGljIHZvaWQgYXNzZXJ0X2N1cnNvcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRl KQogewpAQCAtMTIzOSw2ICsxMjU2LDggQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2N1cnNvcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlpZiAoSVNfODQ1RyhkZXZfcHJpdikg fHwgSVNfSTg2NUcoZGV2X3ByaXYpKQogCQljdXJfc3RhdGUgPSBJOTE1X1JFQUQoQ1VSQ05UUihQ SVBFX0EpKSAmIENVUlNPUl9FTkFCTEU7CisJZWxzZSBpZiAoIUlOVEVMX0lORk8oZGV2X3ByaXYp LT5oYXNfcmVhbF9jdXJzb3IpCisJCWN1cl9zdGF0ZSA9IHVuaXZlcnNhbF9jdXJzb3Jfc3RhdGUo ZGV2X3ByaXYsIHBpcGUpOwogCWVsc2UKIAkJY3VyX3N0YXRlID0gSTkxNV9SRUFEKENVUkNOVFIo cGlwZSkpICYgQ1VSU09SX01PREU7CiAKQEAgLTEwODQxLDE1ICsxMDg2MCwxNiBAQCBzdGF0aWMg dm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgYmFzZSwK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwotCWNvbnN0IHN0cnVj dCBza2xfd21fdmFsdWVzICp3bSA9ICZkZXZfcHJpdi0+d20uc2tsX3Jlc3VsdHM7Ci0JY29uc3Qg c3RydWN0IHNrbF9wbGFuZV93bSAqcF93bSA9Ci0JCSZjc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBs YW5lc1tQTEFORV9DVVJTT1JdOwogCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAl1aW50 MzJfdCBjbnRsID0gMDsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgd20tPmRp cnR5X3BpcGVzICYgZHJtX2NydGNfbWFzayhjcnRjKSkKLQkJc2tsX3dyaXRlX2N1cnNvcl93bShp bnRlbF9jcnRjLCBwX3dtLCAmd20tPmRkYik7CisJLyoKKwkgKiBBbHRob3VnaCBnZW45IGhhcyBs ZWdhY3kgY3Vyc29yIHJlZ2lzdGVycywgdGhlaXIgdXNlIGlzIG11dHVhbGx5CisJICogZXhjbHVz aXZlIHdpdGggdGhlIHRvcC1tb3N0IHVuaXZlcnNhbCBwbGFuZS4gIFdlJ2xsIGp1c3QgdXNlIHRo ZQorCSAqIHVuaXZlcnNhbCBwbGFuZSB0byBzaW11bGF0ZSB0aGUgbGVnYWN5IGN1cnNvciBpbnRl cmZhY2UgaW5zdGVhZCwKKwkgKiB3aGljaCBtZWFucyB3ZSdsbCBuZXZlciBlbnRlciBoZXJlIG9u IGdlbjkgcGxhdGZvcm1zLgorCSAqLworCVdBUk5fT04oSVNfR0VOOShkZXZfcHJpdikpOwogCiAJ aWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKIAkJY250bCA9 IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwpAQCAtMTM1MjgsNTYgKzEzNTQ4LDYgQEAgc3RhdGljIHZv aWQgdmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgIGh3X2RkYl9l bnRyeS0+c3RhcnQsIGh3X2RkYl9lbnRyeS0+ZW5kKTsKIAkJfQogCX0KLQotCS8qCi0JICogY3Vy c29yCi0JICogSWYgdGhlIGN1cnNvciBwbGFuZSBpc24ndCBhY3RpdmUsIHdlIG1heSBub3QgaGF2 ZSB1cGRhdGVkIGl0J3MgZGRiCi0JICogYWxsb2NhdGlvbi4gSW4gdGhhdCBjYXNlIHNpbmNlIHRo ZSBkZGIgYWxsb2NhdGlvbiB3aWxsIGJlIHVwZGF0ZWQKLQkgKiBvbmNlIHRoZSBwbGFuZSBiZWNv bWVzIHZpc2libGUsIHdlIGNhbiBza2lwIHRoaXMgY2hlY2sKLQkgKi8KLQlpZiAoaW50ZWxfY3J0 Yy0+Y3Vyc29yX2FkZHIpIHsKLQkJaHdfcGxhbmVfd20gPSAmaHdfd20ucGxhbmVzW1BMQU5FX0NV UlNPUl07Ci0JCXN3X3BsYW5lX3dtID0gJnN3X3dtLT5wbGFuZXNbUExBTkVfQ1VSU09SXTsKLQot CQkvKiBXYXRlcm1hcmtzICovCi0JCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7 IGxldmVsKyspIHsKLQkJCWlmIChza2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFuZV93bS0+d21b bGV2ZWxdLAotCQkJCQkJJnN3X3BsYW5lX3dtLT53bVtsZXZlbF0pKQotCQkJCWNvbnRpbnVlOwot Ci0JCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIFdNIHBpcGUgJWMgY3Vyc29yIGxldmVsICVkIChl eHBlY3RlZCBlPSVkIGI9JXUgbD0ldSwgZ290IGU9JWQgYj0ldSBsPSV1KVxuIiwKLQkJCQkgIHBp cGVfbmFtZShwaXBlKSwgbGV2ZWwsCi0JCQkJICBzd19wbGFuZV93bS0+d21bbGV2ZWxdLnBsYW5l X2VuLAotCQkJCSAgc3dfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9yZXNfYiwKLQkJCQkgIHN3 X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2wsCi0JCQkJICBod19wbGFuZV93bS0+d21b bGV2ZWxdLnBsYW5lX2VuLAotCQkJCSAgaHdfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9yZXNf YiwKLQkJCQkgIGh3X3BsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2wpOwotCQl9Ci0KLQkJ aWYgKCFza2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFuZV93bS0+dHJhbnNfd20sCi0JCQkJCSAm c3dfcGxhbmVfd20tPnRyYW5zX3dtKSkgewotCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiB0cmFu cyBXTSBwaXBlICVjIGN1cnNvciAoZXhwZWN0ZWQgZT0lZCBiPSV1IGw9JXUsIGdvdCBlPSVkIGI9 JXUgbD0ldSlcbiIsCi0JCQkJICBwaXBlX25hbWUocGlwZSksCi0JCQkJICBzd19wbGFuZV93bS0+ dHJhbnNfd20ucGxhbmVfZW4sCi0JCQkJICBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVz X2IsCi0JCQkJICBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2wsCi0JCQkJICBod19w bGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4sCi0JCQkJICBod19wbGFuZV93bS0+dHJhbnNfd20u cGxhbmVfcmVzX2IsCi0JCQkJICBod19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2wpOwot CQl9Ci0KLQkJLyogRERCICovCi0JCWh3X2RkYl9lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1b UExBTkVfQ1VSU09SXTsKLQkJc3dfZGRiX2VudHJ5ID0gJnN3X2RkYi0+cGxhbmVbcGlwZV1bUExB TkVfQ1VSU09SXTsKLQotCQlpZiAoIXNrbF9kZGJfZW50cnlfZXF1YWwoaHdfZGRiX2VudHJ5LCBz d19kZGJfZW50cnkpKSB7Ci0JCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIEREQiBzdGF0ZSBwaXBl ICVjIGN1cnNvciAoZXhwZWN0ZWQgKCV1LCV1KSwgZm91bmQgKCV1LCV1KSlcbiIsCi0JCQkJICBw aXBlX25hbWUocGlwZSksCi0JCQkJICBzd19kZGJfZW50cnktPnN0YXJ0LCBzd19kZGJfZW50cnkt PmVuZCwKLQkJCQkgIGh3X2RkYl9lbnRyeS0+c3RhcnQsIGh3X2RkYl9lbnRyeS0+ZW5kKTsKLQkJ fQotCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTE1MjE1LDExICsxNTE4NSwxOCBAQCBzdGF0aWMg c3RydWN0IGRybV9wbGFuZSAqaW50ZWxfY3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCWN1cnNvci0+Y2FuX3NjYWxlID0gZmFsc2U7CiAJY3Vyc29yLT5tYXhfZG93 bnNjYWxlID0gMTsKIAljdXJzb3ItPnBpcGUgPSBwaXBlOwotCWN1cnNvci0+cGxhbmUgPSBwaXBl OwogCWN1cnNvci0+ZnJvbnRidWZmZXJfYml0ID0gSU5URUxfRlJPTlRCVUZGRVJfQ1VSU09SKHBp cGUpOwotCWN1cnNvci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmU7Ci0J Y3Vyc29yLT51cGRhdGVfcGxhbmUgPSBpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lOwotCWN1cnNv ci0+ZGlzYWJsZV9wbGFuZSA9IGludGVsX2Rpc2FibGVfY3Vyc29yX3BsYW5lOworCWlmIChJTlRF TF9JTkZPKGRldiktPmhhc19yZWFsX2N1cnNvcikgeworCQljdXJzb3ItPnBsYW5lID0gcGlwZTsg IC8qIHVudXNlZD8gKi8KKwkJY3Vyc29yLT5jaGVja19wbGFuZSA9IGludGVsX2NoZWNrX2N1cnNv cl9wbGFuZTsKKwkJY3Vyc29yLT51cGRhdGVfcGxhbmUgPSBpbnRlbF91cGRhdGVfY3Vyc29yX3Bs YW5lOworCQljdXJzb3ItPmRpc2FibGVfcGxhbmUgPSBpbnRlbF9kaXNhYmxlX2N1cnNvcl9wbGFu ZTsKKwl9IGVsc2UgeworCQljdXJzb3ItPnBsYW5lID0gSU5URUxfSU5GTyhkZXYpLT5udW1fc3By aXRlc1twaXBlXSAtIDE7CisJCWN1cnNvci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19zcHJp dGVfcGxhbmU7CisJCWN1cnNvci0+dXBkYXRlX3BsYW5lID0gc2tsX3VwZGF0ZV9wbGFuZTsKKwkJ Y3Vyc29yLT5kaXNhYmxlX3BsYW5lID0gc2tsX2Rpc2FibGVfcGxhbmU7CisJfQogCiAJcmV0ID0g ZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgJmN1cnNvci0+YmFzZSwgMCwKIAkJCQkgICAg ICAgJmludGVsX3BsYW5lX2Z1bmNzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBjMzFm ZGRkLi41MDg3NGUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTc5MCw2ICsxNzkw LDEzIEBAIGludCBpbnRlbF9zcHJpdGVfc2V0X2NvbG9ya2V5KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiB2 b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKIHZv aWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3Qg aW50ZWxfZmxpcF93b3JrICp3b3JrKTsKK2ludCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAorCQkJICAgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKTsKK3Zv aWQgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCisJCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKK3ZvaWQgc2tsX2Rpc2Fi bGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMp OwogCiAvKiBpbnRlbF90di5jICovCiB2b2lkIGludGVsX3R2X2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCA2ZjE5ZTYwLi5lNzVmNmQ4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTI4NjMsOSArMjg2Myw3IEBAIGJvb2wgaWxrX2Rp c2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogLyoKICAqIFJldHVybiB0aGUg aW5kZXggb2YgYSBwbGFuZSBpbiB0aGUgU0tMIEREQiBhbmQgd20gcmVzdWx0IGFycmF5cy4gIFBy aW1hcnkKLSAqIHBsYW5lIGlzIGFsd2F5cyBpbiBzbG90IDAsIGN1cnNvciBpcyBhbHdheXMgaW4g c2xvdCBJOTE1X01BWF9QTEFORVMtMSwgYW5kCi0gKiBvdGhlciB1bml2ZXJzYWwgcGxhbmVzIGFy ZSBpbiBpbmRpY2VzIDEuLm4uICBOb3RlIHRoYXQgdGhpcyBtYXkgbGVhdmUgdW51c2VkCi0gKiBp bmRpY2VzIGJldHdlZW4gdGhlIHRvcCAic3ByaXRlIiBwbGFuZSBhbmQgdGhlIGN1cnNvci4KKyAq IHBsYW5lIGlzIGFsd2F5cyBpbiBzbG90IDAgYW5kIG90aGVyIHVuaXZlcnNhbCBwbGFuZXMgYXJl IGluIGluZGljZXMgMS4ubi4KICAqLwogc3RhdGljIGludAogc2tsX3dtX3BsYW5lX2lkKGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCkBAIC0yODc0LDcgKzI4NzIsNiBAQCBza2xfd21f cGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKIAljYXNlIERSTV9QTEFO RV9UWVBFX1BSSU1BUlk6CiAJCXJldHVybiAwOwogCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09S OgotCQlyZXR1cm4gUExBTkVfQ1VSU09SOwogCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToK IAkJcmV0dXJuIHBsYW5lLT5wbGFuZSArIDE7CiAJZGVmYXVsdDoKQEAgLTMxMjgsMTQgKzMxMjUs NiBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJYWxsb2MtPmVuZCA9IGFsbG9jLT5zdGFydCArIHBpcGVfc2l6ZTsKIH0KIAotc3Rh dGljIHVuc2lnbmVkIGludCBza2xfY3Vyc29yX2FsbG9jYXRpb24oaW50IG51bV9hY3RpdmUpCi17 Ci0JaWYgKG51bV9hY3RpdmUgPT0gMSkKLQkJcmV0dXJuIDMyOwotCi0JcmV0dXJuIDg7Ci19Ci0K IHN0YXRpYyB2b2lkIHNrbF9kZGJfZW50cnlfaW5pdF9mcm9tX2h3KHN0cnVjdCBza2xfZGRiX2Vu dHJ5ICplbnRyeSwgdTMyIHJlZykKIHsKIAllbnRyeS0+c3RhcnQgPSByZWcgJiAweDNmZjsKQEAg LTMxNjYsMTAgKzMxNTUsNiBAQCB2b2lkIHNrbF9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJCSAgIHZhbCk7CiAJCX0KIAotCQl2YWwgPSBJ OTE1X1JFQUQoQ1VSX0JVRl9DRkcocGlwZSkpOwotCQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9o dygmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLAotCQkJCQkgICB2YWwpOwotCiAJCWlu dGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwogCX0KIH0KQEAg LTMyMjcsOCArMzIxMiw2IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAogCWlmICghaW50ZWxfcHN0YXRlLT5iYXNl LnZpc2libGUpCiAJCXJldHVybiAwOwotCWlmIChwc3RhdGUtPnBsYW5lLT50eXBlID09IERSTV9Q TEFORV9UWVBFX0NVUlNPUikKLQkJcmV0dXJuIDA7CiAJaWYgKHkgJiYgZm9ybWF0ICE9IERSTV9G T1JNQVRfTlYxMikKIAkJcmV0dXJuIDA7CiAKQEAgLTMzODYsNyArMzM2OSw3IEBAIHNrbF9hbGxv Y2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7CiAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNzdGF0ZS0+d20uc2tsLmRkYjsK LQl1aW50MTZfdCBhbGxvY19zaXplLCBzdGFydCwgY3Vyc29yX2Jsb2NrczsKKwl1aW50MTZfdCBh bGxvY19zaXplLCBzdGFydDsKIAl1aW50MTZfdCAqbWluaW11bSA9IGNzdGF0ZS0+d20uc2tsLm1p bmltdW1fYmxvY2tzOwogCXVpbnQxNl90ICp5X21pbmltdW0gPSBjc3RhdGUtPndtLnNrbC5taW5p bXVtX3lfYmxvY2tzOwogCXVuc2lnbmVkIGludCB0b3RhbF9kYXRhX3JhdGU7CkBAIC0zNDEyLDEy ICszMzk1LDYgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCiAJCXJldHVybiAwOwogCX0KIAotCWN1cnNvcl9ibG9ja3MgPSBza2xfY3Vyc29y X2FsbG9jYXRpb24obnVtX2FjdGl2ZSk7Ci0JZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1Jd LnN0YXJ0ID0gYWxsb2MtPmVuZCAtIGN1cnNvcl9ibG9ja3M7Ci0JZGRiLT5wbGFuZVtwaXBlXVtQ TEFORV9DVVJTT1JdLmVuZCA9IGFsbG9jLT5lbmQ7Ci0KLQlhbGxvY19zaXplIC09IGN1cnNvcl9i bG9ja3M7Ci0KIAkvKiAxLiBBbGxvY2F0ZSB0aGUgbWluaW51bSByZXF1aXJlZCBibG9ja3MgZm9y IGVhY2ggYWN0aXZlIHBsYW5lICovCiAJZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBs YW5lLCBwc3RhdGUsIGkpIHsKIAkJaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7 CkBAIC0zNDMxLDE3ICszNDA4LDEyIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJeV9taW5pbXVtW2lkXSA9IDA7CiAJCQljb250aW51 ZTsKIAkJfQotCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7Ci0J CQltaW5pbXVtW2lkXSA9IDA7Ci0JCQl5X21pbmltdW1baWRdID0gMDsKLQkJCWNvbnRpbnVlOwot CQl9CiAKIAkJbWluaW11bVtpZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUsIDApOwogCQl5 X21pbmltdW1baWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAxKTsKIAl9CiAKLQlmb3Ig KGkgPSAwOyBpIDwgUExBTkVfQ1VSU09SOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9N QVhfUExBTkVTOyBpKyspIHsKIAkJYWxsb2Nfc2l6ZSAtPSBtaW5pbXVtW2ldOwogCQlhbGxvY19z aXplIC09IHlfbWluaW11bVtpXTsKIAl9CkBAIC0zODY2LDI2ICszODM4LDYgQEAgdm9pZCBza2xf d3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJCQkgICAgJmRk Yi0+eV9wbGFuZVtwaXBlXVtwbGFuZV0pOwogfQogCi12b2lkIHNrbF93cml0ZV9jdXJzb3Jfd20o c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCi0JCQkgY29uc3Qgc3RydWN0IHNrbF9wbGFu ZV93bSAqd20sCi0JCQkgY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiKQotewot CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwotCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwotCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9s ZXZlbChkZXZfcHJpdik7Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCi0J Zm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewotCQlza2xfd3Jp dGVfd21fbGV2ZWwoZGV2X3ByaXYsIENVUl9XTShwaXBlLCBsZXZlbCksCi0JCQkJICAgJndtLT53 bVtsZXZlbF0pOwotCX0KLQlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIENVUl9XTV9UUkFO UyhwaXBlKSwgJndtLT50cmFuc193bSk7Ci0KLQlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2 LCBDVVJfQlVGX0NGRyhwaXBlKSwKLQkJCSAgICAmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJT T1JdKTsKLX0KLQogYm9vbCBza2xfd21fbGV2ZWxfZXF1YWxzKGNvbnN0IHN0cnVjdCBza2xfd21f bGV2ZWwgKmwxLAogCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKmwyKQogewpAQCAtNDEy MiwxOSArNDA3NCwxMSBAQCBza2xfcHJpbnRfd21fY2hhbmdlcyhjb25zdCBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCiAJCQlpZiAoc2tsX2RkYl9lbnRyeV9lcXVhbChvbGQsIG5ldykp CiAJCQkJY29udGludWU7CiAKLQkJCWlmIChpZCAhPSBQTEFORV9DVVJTT1IpIHsKLQkJCQlEUk1f REVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6cGxhbmUgJWQlY10gZGRiICglZCAtICVkKSAtPiAoJWQg LSAlZClcbiIsCi0JCQkJCQkgcGxhbmUtPmJhc2UuaWQsIGlkICsgMSwKLQkJCQkJCSBwaXBlX25h bWUocGlwZSksCi0JCQkJCQkgb2xkLT5zdGFydCwgb2xkLT5lbmQsCi0JCQkJCQkgbmV3LT5zdGFy dCwgbmV3LT5lbmQpOwotCQkJfSBlbHNlIHsKLQkJCQlEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6 JWQ6Y3Vyc29yICVjXSBkZGIgKCVkIC0gJWQpIC0+ICglZCAtICVkKVxuIiwKLQkJCQkJCSBwbGFu ZS0+YmFzZS5pZCwKLQkJCQkJCSBwaXBlX25hbWUocGlwZSksCi0JCQkJCQkgb2xkLT5zdGFydCwg b2xkLT5lbmQsCi0JCQkJCQkgbmV3LT5zdGFydCwgbmV3LT5lbmQpOwotCQkJfQorCQkJRFJNX0RF QlVHX0FUT01JQygiW1BMQU5FOiVkOnBsYW5lICVkJWNdIGRkYiAoJWQgLSAlZCkgLT4gKCVkIC0g JWQpXG4iLAorCQkJCQkgcGxhbmUtPmJhc2UuaWQsIGlkICsgMSwKKwkJCQkJIHBpcGVfbmFtZShw aXBlKSwKKwkJCQkJIG9sZC0+c3RhcnQsIG9sZC0+ZW5kLAorCQkJCQkgbmV3LT5zdGFydCwgbmV3 LT5lbmQpOwogCQl9CiAJfQogfQpAQCAtNDIzNSw5ICs0MTc5LDYgQEAgc3RhdGljIHZvaWQgc2ts X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCWZvcl9lYWNoX3VuaXZlcnNhbF9w bGFuZShkZXZfcHJpdiwgcGlwZSwgcGxhbmUpCiAJCQlza2xfd3JpdGVfcGxhbmVfd20oaW50ZWxf Y3J0YywgJnBpcGVfd20tPnBsYW5lc1twbGFuZV0sCiAJCQkJCSAgICZyZXN1bHRzLT5kZGIsIHBs YW5lKTsKLQotCQlza2xfd3JpdGVfY3Vyc29yX3dtKGludGVsX2NydGMsICZwaXBlX3dtLT5wbGFu ZXNbUExBTkVfQ1VSU09SXSwKLQkJCQkgICAgJnJlc3VsdHMtPmRkYik7CiAJfQogCiAJc2tsX2Nv cHlfd21fZm9yX3BpcGUoaHdfdmFscywgcmVzdWx0cywgcGlwZSk7CkBAIC00MzUwLDE4ICs0Mjkx LDEyIEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAkJd20gPSAmb3V0LT5wbGFuZXNbaWRdOwogCiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8 PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKLQkJCWlmIChpZCAhPSBQTEFORV9DVVJTT1IpCi0JCQkJ dmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNKHBpcGUsIGlkLCBsZXZlbCkpOwotCQkJZWxzZQotCQkJ CXZhbCA9IEk5MTVfUkVBRChDVVJfV00ocGlwZSwgbGV2ZWwpKTsKKwkJCXZhbCA9IEk5MTVfUkVB RChQTEFORV9XTShwaXBlLCBpZCwgbGV2ZWwpKTsKIAogCQkJc2tsX3dtX2xldmVsX2Zyb21fcmVn X3ZhbCh2YWwsICZ3bS0+d21bbGV2ZWxdKTsKIAkJfQogCi0JCWlmIChpZCAhPSBQTEFORV9DVVJT T1IpCi0JCQl2YWwgPSBJOTE1X1JFQUQoUExBTkVfV01fVFJBTlMocGlwZSwgaWQpKTsKLQkJZWxz ZQotCQkJdmFsID0gSTkxNV9SRUFEKENVUl9XTV9UUkFOUyhwaXBlKSk7CisJCXZhbCA9IEk5MTVf UkVBRChQTEFORV9XTV9UUkFOUyhwaXBlLCBpZCkpOwogCiAJCXNrbF93bV9sZXZlbF9mcm9tX3Jl Z192YWwodmFsLCAmd20tPnRyYW5zX3dtKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jCmluZGV4IDQzZDAzNTAuLjllNjQwNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0 IGludGVsX2NydGMgKmNydGMsIHN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcmsKIAl9CiB9CiAK LXN0YXRpYyB2b2lkCit2b2lkCiBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRy bV9wbGFuZSwKIAkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CQkgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKQEAgLTI4NSw3 ICsyODUsNyBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwK IAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwogfQogCi1zdGF0aWMgdm9p ZAordm9pZAogc2tsX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRwbGFuZS0+ ZGV2OwpAQCAtNzUyLDcgKzc1Miw3IEBAIGlsa19kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJUE9TVElOR19SRUFEKERWU1NVUkYo cGlwZSkpOwogfQogCi1zdGF0aWMgaW50CitpbnQKIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKIAkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQotLSAKMi4xLjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=