From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH 02/12] drm/i915/bdw: Abstract PDP usage Date: Fri, 20 Feb 2015 17:45:56 +0000 Message-ID: <1424454366-19006-3-git-send-email-michel.thierry@intel.com> References: <1424454366-19006-1-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 07B056E70D for ; Fri, 20 Feb 2015 09:46:44 -0800 (PST) In-Reply-To: <1424454366-19006-1-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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQmVuIFdpZGF3c2t5IDxiZW5qYW1pbi53aWRhd3NreUBpbnRlbC5jb20+CgpVcCB1bnRp bCBub3csIHBwZ3R0LT5wZHAgaGFzIGFsd2F5cyBiZWVuIHRoZSByb290IG9mIG91ciBwYWdlIHRh Ymxlcy4KTGVnYWN5IDMyYiBhZGRyZXNzZXMgYWN0ZWQgbGlrZSBpdCBoYWQgMSBQRFAgd2l0aCA0 IFBEUEVzLgoKSW4gcHJlcGFyYXRpb24gZm9yIDQgbGV2ZWwgcGFnZSB0YWJsZXMsIHdlIG5lZWQg dG8gc3RvcCB1c2UgcHBndHQtPnBkcApkaXJlY3RseSB1bmxlc3Mgd2Uga25vdyBpdCdzIHdoYXQg d2Ugd2FudC4gVGhlIGZ1dHVyZSBzdHJ1Y3R1cmUgd2lsbCB1c2UKcHBndHQtPnBtbDQgZm9yIHRo ZSB0b3AgbGV2ZWwsIGFuZCB0aGUgcGRwIGlzIGp1c3Qgb25lIG9mIHRoZSBlbnRyaWVzCmJlaW5n IHBvaW50ZWQgdG8gYnkgYSBwbWw0ZS4KCnYyOiBVcGRhdGVkIGFmdGVyIGR5bmFtaWMgcGFnZSBh bGxvY2F0aW9uIGNoYW5nZXMuCgpTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdza3kgPGJlbkBid2lk YXdzay5uZXQ+ClNpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBp bnRlbC5jb20+ICh2MikKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8 IDEyMyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA3MCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5jCmluZGV4IDQ4OWY4ZGIuLmQzYWQ1MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5jCkBAIC01NjAsNiArNTYwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVh cl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIHsKIAlzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQgPQogCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0 LCBiYXNlKTsKKwlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAg PSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4YiAqLwogCWdlbjhfZ3R0X3B0ZV90ICpwdF92YWRk ciwgc2NyYXRjaF9wdGU7CiAJdW5zaWduZWQgcGRwZSA9IHN0YXJ0ID4+IEdFTjhfUERQRV9TSElG VCAmIEdFTjhfUERQRV9NQVNLOwogCXVuc2lnbmVkIHBkZSA9IHN0YXJ0ID4+IEdFTjhfUERFX1NI SUZUICYgR0VOOF9QREVfTUFTSzsKQEAgLTU3NSwxMCArNTc2LDEwIEBAIHN0YXRpYyB2b2lkIGdl bjhfcHBndHRfY2xlYXJfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCXN0 cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0OwogCQlzdHJ1Y3QgcGFnZSAqcGFnZV90YWJs ZTsKIAotCQlpZiAoV0FSTl9PTighcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXSkpCisJ CWlmIChXQVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdKSkKIAkJCWNvbnRpbnVlOwog Ci0JCXBkID0gcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXTsKKwkJcGQgPSBwZHAtPnBh Z2VfZGlyZWN0b3J5W3BkcGVdOwogCiAJCWlmIChXQVJOX09OKCFwZC0+cGFnZV90YWJsZXNbcGRl XSkpCiAJCQljb250aW51ZTsKQEAgLTYyMCw2ICs2MjEsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3Bw Z3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogewogCXN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CiAJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5 MTVfaHdfcHBndHQsIGJhc2UpOworCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJf ZW50cnkgKnBkcCA9ICZwcGd0dC0+cGRwOyAvKiBGSVhNRTogNDhiICovCiAJZ2VuOF9ndHRfcHRl X3QgKnB0X3ZhZGRyOwogCXVuc2lnbmVkIHBkcGUgPSBzdGFydCA+PiBHRU44X1BEUEVfU0hJRlQg JiBHRU44X1BEUEVfTUFTSzsKIAl1bnNpZ25lZCBwZGUgPSBzdGFydCA+PiBHRU44X1BERV9TSElG VCAmIEdFTjhfUERFX01BU0s7CkBAIC02MzAsNyArNjMyLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9w cGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAogCWZv cl9lYWNoX3NnX3BhZ2UocGFnZXMtPnNnbCwgJnNnX2l0ZXIsIHBhZ2VzLT5uZW50cywgMCkgewog CQlpZiAocHRfdmFkZHIgPT0gTlVMTCkgewotCQkJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf ZW50cnkgKnBkID0gcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXTsKKwkJCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZCA9IHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV07 CiAJCQlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwdCA9IHBkLT5wYWdlX3RhYmxlc1tw ZGVdOwogCQkJc3RydWN0IHBhZ2UgKnBhZ2VfdGFibGUgPSBwdC0+cGFnZTsKIApAQCAtNzA4LDE2 ICs3MTAsMTcgQEAgc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHN0cnVjdCBpOTE1 X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZCwgc3RydWN0IGQKIHN0YXRpYyB2b2lkIGdlbjhfcHBn dHRfdW5tYXBfcGFnZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogewogCXN0cnVjdCBw Y2lfZGV2ICpod2RldiA9IHBwZ3R0LT5iYXNlLmRldi0+cGRldjsKKwlzdHJ1Y3QgaTkxNV9wYWdl X2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAgPSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4 YiAqLwogCWludCBpLCBqOwogCi0JZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRf cGRwZXMsCisJZm9yX2VhY2hfc2V0X2JpdChpLCBwZHAtPnVzZWRfcGRwZXMsCiAJCQlJOTE1X1BE UEVTX1BFUl9QRFAocHBndHQtPmJhc2UuZGV2KSkgewogCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeV9lbnRyeSAqcGQ7CiAKLQkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rv cnlbaV0pKQorCQlpZiAoV0FSTl9PTighcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSkpCiAJCQljb250 aW51ZTsKIAotCQlwZCA9IHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV07CisJCXBkID0gcGRw LT5wYWdlX2RpcmVjdG9yeVtpXTsKIAkJaWYgKCFwZC0+ZGFkZHIpCiAJCQlwY2lfdW5tYXBfcGFn ZShod2RldiwgcGQtPmRhZGRyLCBQQUdFX1NJWkUsCiAJCQkJCVBDSV9ETUFfQklESVJFQ1RJT05B TCk7CkBAIC03NDMsMTUgKzc0NiwyMSBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2ZyZWUoc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogewogCWludCBpOwogCi0JZm9yX2VhY2hfc2V0X2Jp dChpLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMsCi0JCQkJSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0 LT5iYXNlLmRldikpIHsKLQkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJlY3Rvcnlb aV0pKQotCQkJY29udGludWU7CisJaWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJh c2UuZGV2KSkgeworCQlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywK KwkJCQkgSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5iYXNlLmRldikpIHsKKwkJCWlmIChXQVJO X09OKCFwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldKSkKKwkJCQljb250aW51ZTsKIAotCQln ZW44X2ZyZWVfcGFnZV90YWJsZXMocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXSwgcHBndHQt PmJhc2UuZGV2KTsKLQkJdW5tYXBfYW5kX2ZyZWVfcGQocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9y eVtpXSwgcHBndHQtPmJhc2UuZGV2KTsKKwkJCWdlbjhfZnJlZV9wYWdlX3RhYmxlcyhwcGd0dC0+ cGRwLnBhZ2VfZGlyZWN0b3J5W2ldLAorCQkJCQkgICAgICBwcGd0dC0+YmFzZS5kZXYpOworCQkJ dW5tYXBfYW5kX2ZyZWVfcGQocHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXSwKKwkJCQkJICBw cGd0dC0+YmFzZS5kZXYpOworCQl9CisJCXVubWFwX2FuZF9mcmVlX3BkcCgmcHBndHQtPnBkcCwg cHBndHQtPmJhc2UuZGV2KTsKKwl9IGVsc2UgeworCQlCVUcoKTsgLyogdG8gYmUgaW1wbGVtZW50 ZWQgbGF0ZXIgKi8KIAl9Ci0JdW5tYXBfYW5kX2ZyZWVfcGRwKCZwcGd0dC0+cGRwLCBwcGd0dC0+ YmFzZS5kZXYpOwogfQogCiBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0pCkBAIC03NjUsNyArNzc0LDcgQEAgc3RhdGljIHZvaWQgZ2Vu OF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogCiAvKioKICAq IGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnMoKSAtIEFsbG9jYXRlIHBhZ2UgdGFibGVzIGZvciBW QSByYW5nZS4KLSAqIEBwcGd0dDoJTWFzdGVyIHBwZ3R0IHN0cnVjdHVyZS4KKyAqIEB2bToJCU1h c3RlciB2bSBzdHJ1Y3R1cmUuCiAgKiBAcGQ6CQlQYWdlIGRpcmVjdG9yeSBmb3IgdGhpcyBhZGRy ZXNzIHJhbmdlLgogICogQHN0YXJ0OglTdGFydGluZyB2aXJ0dWFsIGFkZHJlc3MgdG8gYmVnaW4g YWxsb2NhdGlvbnMuCiAgKiBAbGVuZ3RoCVNpemUgb2YgdGhlIGFsbG9jYXRpb25zLgpAQCAtNzgx LDEyICs3OTAsMTMgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtKQogICoKICAqIFJldHVybjogMCBpZiBzdWNjZXNzOyBuZWdhdGl2 ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwotc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9j X3BhZ2V0YWJzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKK3N0YXRpYyBpbnQgZ2VuOF9w cGd0dF9hbGxvY19wYWdldGFicyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQkg ICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZCwKIAkJCQkgICAgIHVpbnQ2 NF90IHN0YXJ0LAogCQkJCSAgICAgdWludDY0X3QgbGVuZ3RoLAogCQkJCSAgICAgdW5zaWduZWQg bG9uZyAqbmV3X3B0cykKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0tPmRldjsKIAlz dHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwdDsKIAl1aW50NjRfdCB0ZW1wOwogCXVpbnQz Ml90IHBkZTsKQEAgLTc5OSw3ICs4MDksNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2Nf cGFnZXRhYnMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAogCQkJY29udGludWU7CiAJCX0K IAotCQlwdCA9IGFsbG9jX3B0X3NpbmdsZShwcGd0dC0+YmFzZS5kZXYpOworCQlwdCA9IGFsbG9j X3B0X3NpbmdsZShkZXYpOwogCQlpZiAoSVNfRVJSKHB0KSkKIAkJCWdvdG8gdW53aW5kX291dDsK IApAQCAtODExLDE0ICs4MjEsMTQgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0 YWJzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAogdW53aW5kX291dDoKIAlmb3JfZWFj aF9zZXRfYml0KHBkZSwgbmV3X3B0cywgR0VOOF9QREVTX1BFUl9QQUdFKQotCQl1bm1hcF9hbmRf ZnJlZV9wdChwZC0+cGFnZV90YWJsZXNbcGRlXSwgcHBndHQtPmJhc2UuZGV2KTsKKwkJdW5tYXBf YW5kX2ZyZWVfcHQocGQtPnBhZ2VfdGFibGVzW3BkZV0sIGRldik7CiAKIAlyZXR1cm4gLUVOT01F TTsKIH0KIAogLyoqCiAgKiBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoKSAtIEFs bG9jYXRlIHBhZ2UgZGlyZWN0b3JpZXMgZm9yIFZBIHJhbmdlLgotICogQHBwZ3R0OglNYXN0ZXIg cHBndHQgc3RydWN0dXJlLgorICogQHZtOgkJTWFzdGVyIHZtIHN0cnVjdHVyZS4KICAqIEBwZHA6 CVBhZ2UgZGlyZWN0b3J5IHBvaW50ZXIgZm9yIHRoaXMgYWRkcmVzcyByYW5nZS4KICAqIEBzdGFy dDoJU3RhcnRpbmcgdmlydHVhbCBhZGRyZXNzIHRvIGJlZ2luIGFsbG9jYXRpb25zLgogICogQGxl bmd0aAlTaXplIG9mIHRoZSBhbGxvY2F0aW9ucy4KQEAgLTgzOSwxNiArODQ5LDE3IEBAIHVud2lu ZF9vdXQ6CiAgKgogICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3M7IG5lZ2F0aXZlIGVycm9yIGNvZGUg b3RoZXJ3aXNlLgogICovCi1zdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3Rv cmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCitzdGF0aWMgaW50IGdlbjhfcHBndHRf YWxsb2NfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJ CQkgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnkgKnBkcCwKIAkJ CQkgICAgIHVpbnQ2NF90IHN0YXJ0LAogCQkJCSAgICAgdWludDY0X3QgbGVuZ3RoLAogCQkJCSAg ICAgdW5zaWduZWQgbG9uZyAqbmV3X3BkcykKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g dm0tPmRldjsKIAlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQ7CiAJdWludDY0 X3QgdGVtcDsKIAl1aW50MzJfdCBwZHBlOwotCXNpemVfdCBwZHBlcyA9ICBJOTE1X1BEUEVTX1BF Ul9QRFAocHBndHQtPmJhc2UuZGV2KTsKKwlzaXplX3QgcGRwZXMgPSAgSTkxNV9QRFBFU19QRVJf UERQKHZtLT5kZXYpOwogCiAJQlVHX09OKCFiaXRtYXBfZW1wdHkobmV3X3BkcywgcGRwZXMpKTsK IApAQCAtODU5LDcgKzg3MCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2Rp cmVjdG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJaWYgKHBkKQogCQkJY29u dGludWU7CiAKLQkJcGQgPSBhbGxvY19wZF9zaW5nbGUocHBndHQtPmJhc2UuZGV2KTsKKwkJcGQg PSBhbGxvY19wZF9zaW5nbGUoZGV2KTsKIAkJaWYgKElTX0VSUihwZCkpCiAJCQlnb3RvIHVud2lu ZF9vdXQ7CiAKQEAgLTg3MSw3ICs4ODIsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2Nf cGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAKIHVud2luZF9v dXQ6CiAJZm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGRzLCBwZHBlcykKLQkJdW5tYXBfYW5k X2ZyZWVfcGQocGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXSwgcHBndHQtPmJhc2UuZGV2KTsKKwkJ dW5tYXBfYW5kX2ZyZWVfcGQocGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXSwgZGV2KTsKIAogCXJl dHVybiAtRU5PTUVNOwogfQpAQCAtOTI2LDEzICs5MzcsMTMgQEAgZXJyX291dDoKIAlyZXR1cm4g LUVOT01FTTsKIH0KIAotc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLAotCQkJICAgICAgIHVpbnQ2NF90IHN0YXJ0LAotCQkJICAgICAg IHVpbnQ2NF90IGxlbmd0aCkKK3N0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAorCQkJCSAgICBzdHJ1Y3QgaTkxNV9wYWdlX2Rp cmVjdG9yeV9wb2ludGVyX2VudHJ5ICpwZHAsCisJCQkJICAgIHVpbnQ2NF90IHN0YXJ0LAorCQkJ CSAgICB1aW50NjRfdCBsZW5ndGgpCiB7Ci0Jc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0K LQkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CiAJdW5zaWdu ZWQgbG9uZyAqbmV3X3BhZ2VfZGlycywgKipuZXdfcGFnZV90YWJsZXM7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHZtLT5kZXY7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkg KnBkOwogCWNvbnN0IHVpbnQ2NF90IG9yaWdfc3RhcnQgPSBzdGFydDsKIAljb25zdCB1aW50NjRf dCBvcmlnX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTk2MSwxNyArOTcyLDE1IEBAIHN0YXRpYyBpbnQg Z2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJcmV0 dXJuIHJldDsKIAogCS8qIERvIHRoZSBhbGxvY2F0aW9ucyBmaXJzdCBzbyB3ZSBjYW4gZWFzaWx5 IGJhaWwgb3V0ICovCi0JcmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVzKHBw Z3R0LCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCwKLQkJCQkJbmV3X3BhZ2VfZGlycyk7CisJ cmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVzKHZtLCBwZHAsIHN0YXJ0LCBs ZW5ndGgsIG5ld19wYWdlX2RpcnMpOwogCWlmIChyZXQpIHsKIAkJZnJlZV9nZW44X3RlbXBfYml0 bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMsIHBkcGVzKTsKIAkJcmV0dXJuIHJl dDsKIAl9CiAKLQkvKiBGb3IgZXZlcnkgcGFnZSBkaXJlY3RvcnkgcmVmZXJlbmNlZCwgYWxsb2Nh dGUgcGFnZSB0YWJsZXMgKi8KLQlnZW44X2Zvcl9lYWNoX3BkcGUocGQsICZwcGd0dC0+cGRwLCBz dGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBlKSB7CisJZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAs IHN0YXJ0LCBsZW5ndGgsIHRlbXAsIHBkcGUpIHsKIAkJYml0bWFwX3plcm8obmV3X3BhZ2VfdGFi bGVzW3BkcGVdLCBHRU44X1BERVNfUEVSX1BBR0UpOwotCQlyZXQgPSBnZW44X3BwZ3R0X2FsbG9j X3BhZ2V0YWJzKHBwZ3R0LCBwZCwgc3RhcnQsIGxlbmd0aCwKKwkJcmV0ID0gZ2VuOF9wcGd0dF9h bGxvY19wYWdldGFicyh2bSwgcGQsIHN0YXJ0LCBsZW5ndGgsCiAJCQkJCQluZXdfcGFnZV90YWJs ZXNbcGRwZV0pOwogCQlpZiAocmV0KQogCQkJZ290byBlcnJfb3V0OwpAQCAtOTgwLDEwICs5ODks NyBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCiAJc3RhcnQgPSBvcmlnX3N0YXJ0OwogCWxlbmd0aCA9IG9yaWdfbGVuZ3RoOwog Ci0JLyogQWxsb2NhdGlvbnMgaGF2ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LCBzbyBzZXQgdGhl IGJpdG1hcHMsIGFuZCBkbwotCSAqIHRoZSBtYXBwaW5ncy4gKi8KLQlnZW44X2Zvcl9lYWNoX3Bk cGUocGQsICZwcGd0dC0+cGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBlKSB7Ci0JCWdlbjhf cHBndHRfcGRlX3QgKmNvbnN0IHBhZ2VfZGlyZWN0b3J5ID0ga21hcF9hdG9taWMocGQtPnBhZ2Up OworCWdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwZHBl KSB7CiAJCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0OwogCQl1aW50NjRfdCBwZF9s ZW4gPSBnZW44X2NsYW1wX3BkKHN0YXJ0LCBsZW5ndGgpOwogCQl1aW50NjRfdCBwZF9zdGFydCA9 IHN0YXJ0OwpAQCAtMTAwNSwyMCArMTAxMSwxMCBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFf cmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAkJCS8qIE91ciBwZGUgaXMg bm93IHBvaW50aW5nIHRvIHRoZSBwYWdldGFibGUsIHB0ICovCiAJCQlzZXRfYml0KHBkZSwgcGQt PnVzZWRfcGRlcyk7Ci0KLQkJCS8qIE1hcCB0aGUgUERFIHRvIHRoZSBwYWdlIHRhYmxlICovCi0J CQlfX2dlbjhfZG9fbWFwX3B0KHBhZ2VfZGlyZWN0b3J5ICsgcGRlLCBwdCwgdm0tPmRldik7Ci0K LQkJCS8qIE5COiBXZSBoYXZlbid0IHlldCBtYXBwZWQgcHRlcyB0byBwYWdlcy4gQXQgdGhpcwot CQkJICogcG9pbnQgd2UncmUgc3RpbGwgcmVseWluZyBvbiBpbnNlcnRfZW50cmllcygpICovCiAJ CX0KIAotCQlpZiAoIUhBU19MTEModm0tPmRldikpCi0JCQlkcm1fY2xmbHVzaF92aXJ0X3Jhbmdl KHBhZ2VfZGlyZWN0b3J5LCBQQUdFX1NJWkUpOwotCi0JCWt1bm1hcF9hdG9taWMocGFnZV9kaXJl Y3RvcnkpOwotCi0JCXNldF9iaXQocGRwZSwgcHBndHQtPnBkcC51c2VkX3BkcGVzKTsKKwkJc2V0 X2JpdChwZHBlLCBwZHAtPnVzZWRfcGRwZXMpOworCQlnZW44X21hcF9wYWdldGFibGVfcmFuZ2Uo cGQsIHN0YXJ0LCBsZW5ndGgsIGRldik7CiAJfQogCiAJZnJlZV9nZW44X3RlbXBfYml0bWFwcyhu ZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMsIHBkcGVzKTsKQEAgLTEwMjcsMTYgKzEwMjMs MzYgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLAogZXJyX291dDoKIAl3aGlsZSAocGRwZS0tKSB7CiAJCWZvcl9lYWNoX3NldF9i aXQodGVtcCwgbmV3X3BhZ2VfdGFibGVzW3BkcGVdLCBHRU44X1BERVNfUEVSX1BBR0UpCi0JCQl1 bm1hcF9hbmRfZnJlZV9wdChwZC0+cGFnZV90YWJsZXNbdGVtcF0sIHZtLT5kZXYpOworCQkJdW5t YXBfYW5kX2ZyZWVfcHQocGQtPnBhZ2VfdGFibGVzW3RlbXBdLCBkZXYpOwogCX0KIAogCWZvcl9l YWNoX3NldF9iaXQocGRwZSwgbmV3X3BhZ2VfZGlycywgcGRwZXMpCi0JCXVubWFwX2FuZF9mcmVl X3BkKHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbcGRwZV0sIHZtLT5kZXYpOworCQl1bm1hcF9h bmRfZnJlZV9wZChwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdLCBkZXYpOwogCiAJZnJlZV9nZW44 X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMsIHBkcGVzKTsKIAly ZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IF9fbm9yZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5n ZV80bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAorCQkJCQkgICAgICAgc3RydWN0 IGk5MTVfcG1sNCAqcG1sNCwKKwkJCQkJICAgICAgIHVpbnQ2NF90IHN0YXJ0LAorCQkJCQkgICAg ICAgdWludDY0X3QgbGVuZ3RoKQoreworCUJVRygpOyAvKiB0byBiZSBpbXBsZW1lbnRlZCBsYXRl ciAqLworfQorCitzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCisJCQkgICAgICAgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbmd0 aCkKK3sKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQorCQljb250YWluZXJfb2Yodm0s IHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNlKTsKKworCWlmICghVVNFU19GVUxMXzQ4QklUX1BQ R1RUKHZtLT5kZXYpKQorCQlyZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHZtLCAmcHBn dHQtPnBkcCwgc3RhcnQsIGxlbmd0aCk7CisJZWxzZQorCQlyZXR1cm4gZ2VuOF9hbGxvY192YV9y YW5nZV80bHZsKHZtLCAmcHBndHQtPnBtbDQsIHN0YXJ0LCBsZW5ndGgpOworfQorCiBzdGF0aWMg dm9pZCBnZW44X3BwZ3R0X2ZpbmlfY29tbW9uKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkK IHsKIAl1bm1hcF9hbmRfZnJlZV9wdChwcGd0dC0+c2NyYXRjaF9wZCwgcHBndHQtPmJhc2UuZGV2 KTsKQEAgLTEwNzksMTIgKzEwOTUsMTMgQEAgc3RhdGljIGludCBnZW44X2FsaWFzaW5nX3BwZ3R0 X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2lu dGVyX2VudHJ5ICpwZHAgPSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4YiAqLwogCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5ICpwZDsKIAl1aW50NjRfdCB0ZW1wLCBzdGFydCA9IDAs IHNpemUgPSBkZXZfcHJpdi0+Z3R0LmJhc2UudG90YWw7CiAJdWludDMyX3QgcGRwZTsKIAlpbnQg cmV0OwogCi0JcmV0ID0gZ2VuOF9wcGd0dF9pbml0X2NvbW1vbihwcGd0dCwgZGV2X3ByaXYtPmd0 dC5iYXNlLnRvdGFsKTsKKwlyZXQgPSBnZW44X3BwZ3R0X2luaXRfY29tbW9uKHBwZ3R0LCBzaXpl KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xMDk3LDggKzExMTQsOCBAQCBzdGF0 aWMgaW50IGdlbjhfYWxpYXNpbmdfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQpCiAJCXJldHVybiByZXQ7CiAJfQogCi0JZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCAmcHBndHQt PnBkcCwgc3RhcnQsIHNpemUsIHRlbXAsIHBkcGUpCi0JCWdlbjhfbWFwX3BhZ2V0YWJsZV9yYW5n ZShwZCwgc3RhcnQsIHNpemUsIHBwZ3R0LT5iYXNlLmRldik7CisJZ2VuOF9mb3JfZWFjaF9wZHBl KHBkLCBwZHAsIHN0YXJ0LCBzaXplLCB0ZW1wLCBwZHBlKQorCQlnZW44X21hcF9wYWdldGFibGVf cmFuZ2UocGQsIHN0YXJ0LCBzaXplLCBkZXYpOwogCiAJcHBndHQtPmJhc2UuYWxsb2NhdGVfdmFf cmFuZ2UgPSBOVUxMOwogCXBwZ3R0LT5iYXNlLmNsZWFyX3JhbmdlID0gZ2VuOF9wcGd0dF9jbGVh cl9yYW5nZTsKLS0gCjIuMS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=