From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v7 03/19] drm/i915/gen8: Abstract PDP usage Date: Thu, 30 Jul 2015 11:02:03 +0100 Message-ID: <1438250523-22533-1-git-send-email-michel.thierry@intel.com> References: <1438187043-34267-4-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 436647A11D for ; Thu, 30 Jul 2015 03:02:06 -0700 (PDT) In-Reply-To: <1438187043-34267-4-git-send-email-michel.thierry@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: Akash Goel List-Id: intel-gfx@lists.freedesktop.org VXAgdW50aWwgbm93LCBwcGd0dC0+cGRwIGhhcyBhbHdheXMgYmVlbiB0aGUgcm9vdCBvZiBvdXIg cGFnZSB0YWJsZXMuCkxlZ2FjeSAzMmIgYWRkcmVzc2VzIGFjdGVkIGxpa2UgaXQgaGFkIDEgUERQ IHdpdGggNCBQRFBFcy4KCkluIHByZXBhcmF0aW9uIGZvciA0IGxldmVsIHBhZ2UgdGFibGVzLCB3 ZSBuZWVkIHRvIHN0b3AgdXNpbmcgcHBndHQtPnBkcApkaXJlY3RseSB1bmxlc3Mgd2Uga25vdyBp dCdzIHdoYXQgd2Ugd2FudC4gVGhlIGZ1dHVyZSBzdHJ1Y3R1cmUgd2lsbCB1c2UKcHBndHQtPnBt bDQgZm9yIHRoZSB0b3AgbGV2ZWwsIGFuZCB0aGUgcGRwIGlzIGp1c3Qgb25lIG9mIHRoZSBlbnRy aWVzCmJlaW5nIHBvaW50ZWQgdG8gYnkgYSBwbWw0ZS4gVGhlIHRlbXBvcmFsIHBkcCBsb2NhbCB2 YXJpYWJsZSB3aWxsIGJlCnJlbW92ZWQgb25jZSB0aGUgcmVzdCBvZiB0aGUgNC1sZXZlbCBjb2Rl IGxhbmRzLgoKQWxzbywgc3RhcnQgcGFzc2luZyB0aGUgdm0gcG9pbnRlciB0byB0aGUgYWxsb2Mg ZnVuY3Rpb25zLCBpbnN0ZWFkIG9mCnBwZ3R0LgoKdjI6IFVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBw YWdlIGFsbG9jYXRpb24gY2hhbmdlcy4KdjM6IFJlYmFzZSBhZnRlciBzL3BhZ2VfdGFibGVzL3Bh Z2VfdGFibGUvLgp2NDogUmViYXNlIGFmdGVyIGNoYW5nZXMgaW4gIkR5bmFtaWMgcGFnZSB0YWJs ZSBhbGxvY2F0aW9ucyIgcGF0Y2guCnY1OiBSZWJhc2UgYWZ0ZXIgTWlrYSdzIHBwZ3R0IGNsZWFu dXAgLyBzY3JhdGNoIG1lcmdlIHBhdGNoIHNlcmllcy4KdjY6IFJlYmFzZSBhZnRlciBmaW5hbCBt ZXJnZWQgdmVyc2lvbiBvZiBNaWthJ3MgcHBndHQvc2NyYXRjaCBwYXRjaGVzLgp2NzogS2VlcCBw YWdldGFibGUgbWFwIGluLWxpbmUgKGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSBmb3JfZWFjaF9wZGUK bG9vcHMpLCByZW1vdmUgcmVkdW5kYW50IHBwZ3R0IHBvaW50ZXIgaW4gX2FsbG9jX3BhZ2V0YWJz IChBa2FzaCkKdjg6IEZpeCB0ZXh0IGluZGVudGF0aW9uIGluIF9hbGxvY19wYWdldGFicy9wYWdl X2RpcmVjdG9yaWVzIChDaHJpcykKdjk6IERlZmVyIGdlbjhfYWxsb2NfdmFfcmFuZ2VfNGx2bCBk ZWZpbml0aW9uIHVudGlsIDRsdmwgaXMgaW1wbGVtZW50ZWQsCmNsZWFuLXVwIGdlbjhfcHBndHRf Y2xlYW51cCBbcHVuIGludGVuZGVkXSAoQWthc2gpLgp2MTA6IENsZWFuLXVwIGNvbW1pdCBtZXNz YWdlIChBa2FzaCkuCgpDYzogQWthc2ggR29lbCA8YWthc2guZ29lbEBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KU2lnbmVkLW9mZi1ieTog TWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gKHYyKykKLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDg0ICsrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA0MCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDI4ZjMyMjcu LmJkNTY5NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC02MDcsNiArNjA3 LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKIHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQogCQljb250 YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNlKTsKKwlzdHJ1Y3QgaTkxNV9w YWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAgPSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4YiAq LwogCWdlbjhfcHRlX3QgKnB0X3ZhZGRyLCBzY3JhdGNoX3B0ZTsKIAl1bnNpZ25lZCBwZHBlID0g c3RhcnQgPj4gR0VOOF9QRFBFX1NISUZUICYgR0VOOF9QRFBFX01BU0s7CiAJdW5zaWduZWQgcGRl ID0gc3RhcnQgPj4gR0VOOF9QREVfU0hJRlQgJiBHRU44X1BERV9NQVNLOwpAQCAtNjIxLDEwICs2 MjIsMTAgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwKIAkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkOwogCQlz dHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICpwdDsKIAotCQlpZiAoV0FSTl9PTighcHBndHQtPnBkcC5w YWdlX2RpcmVjdG9yeVtwZHBlXSkpCisJCWlmIChXQVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5 W3BkcGVdKSkKIAkJCWJyZWFrOwogCi0JCXBkID0gcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtw ZHBlXTsKKwkJcGQgPSBwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdOwogCiAJCWlmIChXQVJOX09O KCFwZC0+cGFnZV90YWJsZVtwZGVdKSkKIAkJCWJyZWFrOwpAQCAtNjYyLDYgKzY2Myw3IEBAIHN0 YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCiB7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KIAkJY29udGFpbmVy X29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CisJc3RydWN0IGk5MTVfcGFnZV9k aXJlY3RvcnlfcG9pbnRlciAqcGRwID0gJnBwZ3R0LT5wZHA7IC8qIEZJWE1FOiA0OGIgKi8KIAln ZW44X3B0ZV90ICpwdF92YWRkcjsKIAl1bnNpZ25lZCBwZHBlID0gc3RhcnQgPj4gR0VOOF9QRFBF X1NISUZUICYgR0VOOF9QRFBFX01BU0s7CiAJdW5zaWduZWQgcGRlID0gc3RhcnQgPj4gR0VOOF9Q REVfU0hJRlQgJiBHRU44X1BERV9NQVNLOwpAQCAtNjc1LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lk IGdlbjhfcHBndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s CiAJCQlicmVhazsKIAogCQlpZiAocHRfdmFkZHIgPT0gTlVMTCkgewotCQkJc3RydWN0IGk5MTVf cGFnZV9kaXJlY3RvcnkgKnBkID0gcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXTsKKwkJ CXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCA9IHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRw ZV07CiAJCQlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICpwdCA9IHBkLT5wYWdlX3RhYmxlW3BkZV07 CiAJCQlwdF92YWRkciA9IGttYXBfcHgocHQpOwogCQl9CkBAIC03NTUsMjggKzc1NywyOSBAQCBz dGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pCiB7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KIAkJY29udGFpbmVyX29mKHZt LCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CisJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnlfcG9pbnRlciAqcGRwID0gJnBwZ3R0LT5wZHA7IC8qIEZJWE1FOiA0OGIgKi8KKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcHBndHQtPmJhc2UuZGV2OwogCWludCBpOwogCi0JZm9yX2VhY2hf c2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMsCi0JCQkgSTkxNV9QRFBFU19QRVJfUERQ KHBwZ3R0LT5iYXNlLmRldikpIHsKLQkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJl Y3RvcnlbaV0pKQorCWZvcl9lYWNoX3NldF9iaXQoaSwgcGRwLT51c2VkX3BkcGVzLCBJOTE1X1BE UEVTX1BFUl9QRFAoZGV2KSkgeworCQlpZiAoV0FSTl9PTighcGRwLT5wYWdlX2RpcmVjdG9yeVtp XSkpCiAJCQljb250aW51ZTsKIAotCQlnZW44X2ZyZWVfcGFnZV90YWJsZXMocHBndHQtPmJhc2Uu ZGV2LAotCQkJCSAgICAgIHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pOwotCQlmcmVlX3Bk KHBwZ3R0LT5iYXNlLmRldiwgcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXSk7CisJCWdlbjhf ZnJlZV9wYWdlX3RhYmxlcyhkZXYsIHBkcC0+cGFnZV9kaXJlY3RvcnlbaV0pOworCQlmcmVlX3Bk KGRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSk7CiAJfQogCi0JZnJlZV9wZHAocHBndHQtPmJh c2UuZGV2LCAmcHBndHQtPnBkcCk7CisJZnJlZV9wZHAoZGV2LCBwZHApOworCiAJZ2VuOF9mcmVl X3NjcmF0Y2godm0pOwogfQogCiAvKioKICAqIGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnMoKSAt IEFsbG9jYXRlIHBhZ2UgdGFibGVzIGZvciBWQSByYW5nZS4KLSAqIEBwcGd0dDoJTWFzdGVyIHBw Z3R0IHN0cnVjdHVyZS4KLSAqIEBwZDoJCVBhZ2UgZGlyZWN0b3J5IGZvciB0aGlzIGFkZHJlc3Mg cmFuZ2UuCisgKiBAdm06CU1hc3RlciB2bSBzdHJ1Y3R1cmUuCisgKiBAcGQ6CVBhZ2UgZGlyZWN0 b3J5IGZvciB0aGlzIGFkZHJlc3MgcmFuZ2UuCiAgKiBAc3RhcnQ6CVN0YXJ0aW5nIHZpcnR1YWwg YWRkcmVzcyB0byBiZWdpbiBhbGxvY2F0aW9ucy4KLSAqIEBsZW5ndGgJU2l6ZSBvZiB0aGUgYWxs b2NhdGlvbnMuCisgKiBAbGVuZ3RoOglTaXplIG9mIHRoZSBhbGxvY2F0aW9ucy4KICAqIEBuZXdf cHRzOglCaXRtYXAgc2V0IGJ5IGZ1bmN0aW9uIHdpdGggbmV3IGFsbG9jYXRpb25zLiBMaWtlbHkg dXNlZCBieSB0aGUKICAqCQljYWxsZXIgdG8gZnJlZSBvbiBlcnJvci4KICAqCkBAIC03ODksMTMg Kzc5MiwxMyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0pCiAgKgogICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3M7IG5lZ2F0aXZlIGVy cm9yIGNvZGUgb3RoZXJ3aXNlLgogICovCi1zdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFn ZXRhYnMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAorc3RhdGljIGludCBnZW44X3BwZ3R0 X2FsbG9jX3BhZ2V0YWJzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJCSAgICAg c3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkLAogCQkJCSAgICAgdWludDY0X3Qgc3RhcnQs CiAJCQkJICAgICB1aW50NjRfdCBsZW5ndGgsCiAJCQkJICAgICB1bnNpZ25lZCBsb25nICpuZXdf cHRzKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7CisJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CiAJc3RydWN0IGk5MTVfcGFnZV90YWJsZSAq cHQ7CiAJdWludDY0X3QgdGVtcDsKIAl1aW50MzJfdCBwZGU7CkBAIC04MDQsNyArODA3LDcgQEAg c3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0YWJzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCwKIAkJLyogRG9uJ3QgcmVhbGxvY2F0ZSBwYWdlIHRhYmxlcyAqLwogCQlpZiAodGVz dF9iaXQocGRlLCBwZC0+dXNlZF9wZGVzKSkgewogCQkJLyogU2NyYXRjaCBpcyBuZXZlciBhbGxv Y2F0ZWQgdGhpcyB3YXkgKi8KLQkJCVdBUk5fT04ocHQgPT0gcHBndHQtPmJhc2Uuc2NyYXRjaF9w dCk7CisJCQlXQVJOX09OKHB0ID09IHZtLT5zY3JhdGNoX3B0KTsKIAkJCWNvbnRpbnVlOwogCQl9 CiAKQEAgLTgxMiw3ICs4MTUsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZXRh YnMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCQlpZiAoSVNfRVJSKHB0KSkKIAkJCWdv dG8gdW53aW5kX291dDsKIAotCQlnZW44X2luaXRpYWxpemVfcHQoJnBwZ3R0LT5iYXNlLCBwdCk7 CisJCWdlbjhfaW5pdGlhbGl6ZV9wdCh2bSwgcHQpOwogCQlwZC0+cGFnZV90YWJsZVtwZGVdID0g cHQ7CiAJCV9fc2V0X2JpdChwZGUsIG5ld19wdHMpOwogCX0KQEAgLTgyOCwxMSArODMxLDExIEBA IHVud2luZF9vdXQ6CiAKIC8qKgogICogZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVz KCkgLSBBbGxvY2F0ZSBwYWdlIGRpcmVjdG9yaWVzIGZvciBWQSByYW5nZS4KLSAqIEBwcGd0dDoJ TWFzdGVyIHBwZ3R0IHN0cnVjdHVyZS4KKyAqIEB2bToJTWFzdGVyIHZtIHN0cnVjdHVyZS4KICAq IEBwZHA6CVBhZ2UgZGlyZWN0b3J5IHBvaW50ZXIgZm9yIHRoaXMgYWRkcmVzcyByYW5nZS4KICAq IEBzdGFydDoJU3RhcnRpbmcgdmlydHVhbCBhZGRyZXNzIHRvIGJlZ2luIGFsbG9jYXRpb25zLgot ICogQGxlbmd0aAlTaXplIG9mIHRoZSBhbGxvY2F0aW9ucy4KLSAqIEBuZXdfcGRzCUJpdG1hcCBz ZXQgYnkgZnVuY3Rpb24gd2l0aCBuZXcgYWxsb2NhdGlvbnMuIExpa2VseSB1c2VkIGJ5IHRoZQor ICogQGxlbmd0aDoJU2l6ZSBvZiB0aGUgYWxsb2NhdGlvbnMuCisgKiBAbmV3X3BkczoJQml0bWFw IHNldCBieSBmdW5jdGlvbiB3aXRoIG5ldyBhbGxvY2F0aW9ucy4gTGlrZWx5IHVzZWQgYnkgdGhl CiAgKgkJY2FsbGVyIHRvIGZyZWUgb24gZXJyb3IuCiAgKgogICogQWxsb2NhdGUgdGhlIHJlcXVp cmVkIG51bWJlciBvZiBwYWdlIGRpcmVjdG9yaWVzIHN0YXJ0aW5nIGF0IHRoZSBwZGUgaW5kZXgg b2YKQEAgLTg0OSwxMyArODUyLDE0IEBAIHVud2luZF9vdXQ6CiAgKgogICogUmV0dXJuOiAwIGlm IHN1Y2Nlc3M7IG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgogICovCi1zdGF0aWMgaW50 IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsCi0JCQkJICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAs Ci0JCQkJICAgICB1aW50NjRfdCBzdGFydCwKLQkJCQkgICAgIHVpbnQ2NF90IGxlbmd0aCwKLQkJ CQkgICAgIHVuc2lnbmVkIGxvbmcgKm5ld19wZHMpCitzdGF0aWMgaW50CitnZW44X3BwZ3R0X2Fs bG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkJ ICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAsCisJCQkJICB1aW50NjRf dCBzdGFydCwKKwkJCQkgIHVpbnQ2NF90IGxlbmd0aCwKKwkJCQkgIHVuc2lnbmVkIGxvbmcgKm5l d19wZHMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBwZ3R0LT5iYXNlLmRldjsKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0tPmRldjsKIAlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeSAqcGQ7CiAJdWludDY0X3QgdGVtcDsKIAl1aW50MzJfdCBwZHBlOwpAQCAtODcxLDcgKzg3 NSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVzKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJaWYgKElTX0VSUihwZCkpCiAJCQlnb3RvIHVud2lu ZF9vdXQ7CiAKLQkJZ2VuOF9pbml0aWFsaXplX3BkKCZwcGd0dC0+YmFzZSwgcGQpOworCQlnZW44 X2luaXRpYWxpemVfcGQodm0sIHBkKTsKIAkJcGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXSA9IHBk OwogCQlfX3NldF9iaXQocGRwZSwgbmV3X3Bkcyk7CiAJfQpAQCAtOTQ3LDE4ICs5NTEsMTkgQEAg c3RhdGljIHZvaWQgbWFya190bGJzX2RpcnR5KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkK IH0KIAogc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLAotCQkJICAgICAgIHVpbnQ2NF90IHN0YXJ0LAotCQkJICAgICAgIHVpbnQ2NF90 IGxlbmd0aCkKKwkJCSAgICAgICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbGVuZ3RoKQogewog CXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CiAJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0 IGk5MTVfaHdfcHBndHQsIGJhc2UpOwogCXVuc2lnbmVkIGxvbmcgKm5ld19wYWdlX2RpcnMsICoq bmV3X3BhZ2VfdGFibGVzOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2OworCXN0 cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCA9ICZwcGd0dC0+cGRwOyAvKiBG SVhNRTogNDhiICovCiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkOwogCWNvbnN0IHVp bnQ2NF90IG9yaWdfc3RhcnQgPSBzdGFydDsKIAljb25zdCB1aW50NjRfdCBvcmlnX2xlbmd0aCA9 IGxlbmd0aDsKIAl1aW50NjRfdCB0ZW1wOwogCXVpbnQzMl90IHBkcGU7Ci0JdWludDMyX3QgcGRw ZXMgPSBJOTE1X1BEUEVTX1BFUl9QRFAocHBndHQtPmJhc2UuZGV2KTsKKwl1aW50MzJfdCBwZHBl cyA9IEk5MTVfUERQRVNfUEVSX1BEUChkZXYpOwogCWludCByZXQ7CiAKIAkvKiBXcmFwIGlzIG5l dmVyIG9rYXkgc2luY2Ugd2UgY2FuIG9ubHkgcmVwcmVzZW50IDQ4YiwgYW5kIHdlIGRvbid0CkBA IC05NjcsNyArOTcyLDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCWlmIChXQVJOX09OKHN0YXJ0ICsgbGVuZ3RoIDwgc3Rh cnQpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCWlmIChXQVJOX09OKHN0YXJ0ICsgbGVuZ3RoID4g cHBndHQtPmJhc2UudG90YWwpKQorCWlmIChXQVJOX09OKHN0YXJ0ICsgbGVuZ3RoID4gdm0tPnRv dGFsKSkKIAkJcmV0dXJuIC1FTk9ERVY7CiAKIAlyZXQgPSBhbGxvY19nZW44X3RlbXBfYml0bWFw cygmbmV3X3BhZ2VfZGlycywgJm5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwpAQCAtOTc1LDE2ICs5 ODAsMTYgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAogCQlyZXR1cm4gcmV0OwogCiAJLyogRG8gdGhlIGFsbG9jYXRpb25zIGZp cnN0IHNvIHdlIGNhbiBlYXNpbHkgYmFpbCBvdXQgKi8KLQlyZXQgPSBnZW44X3BwZ3R0X2FsbG9j X3BhZ2VfZGlyZWN0b3JpZXMocHBndHQsICZwcGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoLAotCQkJ CQluZXdfcGFnZV9kaXJzKTsKKwlyZXQgPSBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3Jp ZXModm0sIHBkcCwgc3RhcnQsIGxlbmd0aCwKKwkJCQkJCW5ld19wYWdlX2RpcnMpOwogCWlmIChy ZXQpIHsKIAkJZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90 YWJsZXMsIHBkcGVzKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKIAkvKiBGb3IgZXZlcnkgcGFnZSBk aXJlY3RvcnkgcmVmZXJlbmNlZCwgYWxsb2NhdGUgcGFnZSB0YWJsZXMgKi8KLQlnZW44X2Zvcl9l YWNoX3BkcGUocGQsICZwcGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBlKSB7Ci0J CXJldCA9IGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnMocHBndHQsIHBkLCBzdGFydCwgbGVuZ3Ro LAorCWdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBl KSB7CisJCXJldCA9IGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnModm0sIHBkLCBzdGFydCwgbGVu Z3RoLAogCQkJCQkJbmV3X3BhZ2VfdGFibGVzW3BkcGVdKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8g ZXJyX291dDsKQEAgLTk5NSw3ICsxMDAwLDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3Jh bmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCiAJLyogQWxsb2NhdGlvbnMgaGF2 ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LCBzbyBzZXQgdGhlIGJpdG1hcHMsIGFuZCBkbwogCSAq IHRoZSBtYXBwaW5ncy4gKi8KLQlnZW44X2Zvcl9lYWNoX3BkcGUocGQsICZwcGd0dC0+cGRwLCBz dGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBlKSB7CisJZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAs IHN0YXJ0LCBsZW5ndGgsIHRlbXAsIHBkcGUpIHsKIAkJZ2VuOF9wZGVfdCAqY29uc3QgcGFnZV9k aXJlY3RvcnkgPSBrbWFwX3B4KHBkKTsKIAkJc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqcHQ7CiAJ CXVpbnQ2NF90IHBkX2xlbiA9IGxlbmd0aDsKQEAgLTEwMjgsOCArMTAzMyw3IEBAIHN0YXRpYyBp bnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJ fQogCiAJCWt1bm1hcF9weChwcGd0dCwgcGFnZV9kaXJlY3RvcnkpOwotCi0JCV9fc2V0X2JpdChw ZHBlLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMpOworCQlfX3NldF9iaXQocGRwZSwgcGRwLT51c2Vk X3BkcGVzKTsKIAl9CiAKIAlmcmVlX2dlbjhfdGVtcF9iaXRtYXBzKG5ld19wYWdlX2RpcnMsIG5l d19wYWdlX3RhYmxlcywgcGRwZXMpOwpAQCAtMTAzOSwxMSArMTA0MywxMSBAQCBzdGF0aWMgaW50 IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiBlcnJf b3V0OgogCXdoaWxlIChwZHBlLS0pIHsKIAkJZm9yX2VhY2hfc2V0X2JpdCh0ZW1wLCBuZXdfcGFn ZV90YWJsZXNbcGRwZV0sIEk5MTVfUERFUykKLQkJCWZyZWVfcHQodm0tPmRldiwgcHBndHQtPnBk cC5wYWdlX2RpcmVjdG9yeVtwZHBlXS0+cGFnZV90YWJsZVt0ZW1wXSk7CisJCQlmcmVlX3B0KGRl diwgcGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXS0+cGFnZV90YWJsZVt0ZW1wXSk7CiAJfQogCiAJ Zm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGFnZV9kaXJzLCBwZHBlcykKLQkJZnJlZV9wZCh2 bS0+ZGV2LCBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3BkcGVdKTsKKwkJZnJlZV9wZChkZXYs IHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV0pOwogCiAJZnJlZV9nZW44X3RlbXBfYml0bWFwcyhu ZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMsIHBkcGVzKTsKIAltYXJrX3RsYnNfZGlydHko cHBndHQpOwotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==