From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v4 04/18] drm/i915/gen8: Abstract PDP usage Date: Tue, 7 Jul 2015 16:14:49 +0100 Message-ID: <1436282103-5854-5-git-send-email-michel.thierry@intel.com> References: <1436282103-5854-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 671F76EA43 for ; Tue, 7 Jul 2015 08:15:09 -0700 (PDT) In-Reply-To: <1436282103-5854-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 Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org VXAgdW50aWwgbm93LCBwcGd0dC0+cGRwIGhhcyBhbHdheXMgYmVlbiB0aGUgcm9vdCBvZiBvdXIg cGFnZSB0YWJsZXMuCkxlZ2FjeSAzMmIgYWRkcmVzc2VzIGFjdGVkIGxpa2UgaXQgaGFkIDEgUERQ IHdpdGggNCBQRFBFcy4KCkluIHByZXBhcmF0aW9uIGZvciA0IGxldmVsIHBhZ2UgdGFibGVzLCB3 ZSBuZWVkIHRvIHN0b3AgdXNlIHBwZ3R0LT5wZHAKZGlyZWN0bHkgdW5sZXNzIHdlIGtub3cgaXQn cyB3aGF0IHdlIHdhbnQuIFRoZSBmdXR1cmUgc3RydWN0dXJlIHdpbGwgdXNlCnBwZ3R0LT5wbWw0 IGZvciB0aGUgdG9wIGxldmVsLCBhbmQgdGhlIHBkcCBpcyBqdXN0IG9uZSBvZiB0aGUgZW50cmll cwpiZWluZyBwb2ludGVkIHRvIGJ5IGEgcG1sNGUuCgp2MjogVXBkYXRlZCBhZnRlciBkeW5hbWlj IHBhZ2UgYWxsb2NhdGlvbiBjaGFuZ2VzLgp2MzogUmViYXNlIGFmdGVyIHMvcGFnZV90YWJsZXMv cGFnZV90YWJsZS8uCnY0OiBSZWJhc2UgYWZ0ZXIgY2hhbmdlcyBpbiAiRHluYW1pYyBwYWdlIHRh YmxlIGFsbG9jYXRpb25zIiBwYXRjaC4KdjU6IFJlYmFzZSBhZnRlciBNaWthJ3MgcHBndHQgY2xl YW51cCAvIHNjcmF0Y2ggbWVyZ2UgcGF0Y2ggc2VyaWVzLgp2NjogUmViYXNlIGFmdGVyIGZpbmFs IG1lcmdlZCB2ZXJzaW9uIG9mIE1pa2EncyBwcGd0dC9zY3JhdGNoIHBhdGNoZXMuCnY3OiBLZWVw IHBhZ2V0YWJsZSBtYXAgaW4tbGluZSAoYW5kIGF2b2lkIHVubmVjZXNzYXJ5IGZvcl9lYWNoX3Bk ZQpsb29wcyksIHJlbW92ZSByZWR1bmRhbnQgcHBndHQgcG9pbnRlciBpbiBfYWxsb2NfcGFnZXRh YnMgKEFrYXNoKQoKQ2M6IEFrYXNoIEdvZWwgIDxha2FzaC5nb2VsQGludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0PgpTaWduZWQtb2ZmLWJ5OiBN aWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPiAodjIrKQotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHwgMTA3ICsrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDM5IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggZmE2NmRmYS4u YzNjMjcwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTYxNiw2ICs2MTYs NyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAogewogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CiAJCWNvbnRh aW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOworCXN0cnVjdCBpOTE1X3Bh Z2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCA9ICZwcGd0dC0+cGRwOyAvKiBGSVhNRTogNDhiICov CiAJZ2VuOF9wdGVfdCAqcHRfdmFkZHIsIHNjcmF0Y2hfcHRlOwogCXVuc2lnbmVkIHBkcGUgPSBz dGFydCA+PiBHRU44X1BEUEVfU0hJRlQgJiBHRU44X1BEUEVfTUFTSzsKIAl1bnNpZ25lZCBwZGUg PSBzdGFydCA+PiBHRU44X1BERV9TSElGVCAmIEdFTjhfUERFX01BU0s7CkBAIC02MzAsMTAgKzYz MSwxMCBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyX3JhbmdlKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAogCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQ7CiAJCXN0 cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnB0OwogCi0JCWlmIChXQVJOX09OKCFwcGd0dC0+cGRwLnBh Z2VfZGlyZWN0b3J5W3BkcGVdKSkKKwkJaWYgKFdBUk5fT04oIXBkcC0+cGFnZV9kaXJlY3Rvcnlb cGRwZV0pKQogCQkJYnJlYWs7CiAKLQkJcGQgPSBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3Bk cGVdOworCQlwZCA9IHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV07CiAKIAkJaWYgKFdBUk5fT04o IXBkLT5wYWdlX3RhYmxlW3BkZV0pKQogCQkJYnJlYWs7CkBAIC02NzEsNiArNjcyLDcgQEAgc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSwKIHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQogCQljb250YWluZXJf b2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNlKTsKKwlzdHJ1Y3QgaTkxNV9wYWdlX2Rp cmVjdG9yeV9wb2ludGVyICpwZHAgPSAmcHBndHQtPnBkcDsgLyogRklYTUU6IDQ4YiAqLwogCWdl bjhfcHRlX3QgKnB0X3ZhZGRyOwogCXVuc2lnbmVkIHBkcGUgPSBzdGFydCA+PiBHRU44X1BEUEVf U0hJRlQgJiBHRU44X1BEUEVfTUFTSzsKIAl1bnNpZ25lZCBwZGUgPSBzdGFydCA+PiBHRU44X1BE RV9TSElGVCAmIEdFTjhfUERFX01BU0s7CkBAIC02ODEsNyArNjgzLDcgQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK IAogCWZvcl9lYWNoX3NnX3BhZ2UocGFnZXMtPnNnbCwgJnNnX2l0ZXIsIHBhZ2VzLT5uZW50cywg MCkgewogCQlpZiAocHRfdmFkZHIgPT0gTlVMTCkgewotCQkJc3RydWN0IGk5MTVfcGFnZV9kaXJl Y3RvcnkgKnBkID0gcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXTsKKwkJCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCA9IHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV07CiAJCQlz dHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICpwdCA9IHBkLT5wYWdlX3RhYmxlW3BkZV07CiAJCQlwdF92 YWRkciA9IGttYXBfcHgocHQpOwogCQl9CkBAIC03NjMsMjMgKzc2NSwyOCBAQCBzdGF0aWMgdm9p ZCBnZW44X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiAJCWNv bnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwogCWludCBpOwogCi0J Zm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMsCi0JCQkgSTkxNV9QRFBF U19QRVJfUERQKHBwZ3R0LT5iYXNlLmRldikpIHsKLQkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wZHAu cGFnZV9kaXJlY3RvcnlbaV0pKQotCQkJY29udGludWU7CisJaWYgKCFVU0VTX0ZVTExfNDhCSVRf UFBHVFQocHBndHQtPmJhc2UuZGV2KSkgeworCQlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5w ZHAudXNlZF9wZHBlcywKKwkJCQkgSTkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5iYXNlLmRldikp IHsKKwkJCWlmIChXQVJOX09OKCFwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldKSkKKwkJCQlj b250aW51ZTsKIAotCQlnZW44X2ZyZWVfcGFnZV90YWJsZXMocHBndHQtPmJhc2UuZGV2LAotCQkJ CSAgICAgIHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pOwotCQlmcmVlX3BkKHBwZ3R0LT5i YXNlLmRldiwgcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtpXSk7CisJCQlnZW44X2ZyZWVfcGFn ZV90YWJsZXMocHBndHQtPmJhc2UuZGV2LAorCQkJCQkgICAgICBwcGd0dC0+cGRwLnBhZ2VfZGly ZWN0b3J5W2ldKTsKKwkJCWZyZWVfcGQocHBndHQtPmJhc2UuZGV2LAorCQkJCXBwZ3R0LT5wZHAu cGFnZV9kaXJlY3RvcnlbaV0pOworCQl9CisJCWZyZWVfcGRwKHBwZ3R0LT5iYXNlLmRldiwgJnBw Z3R0LT5wZHApOworCX0gZWxzZSB7CisJCVdBUk5fT04oMSk7IC8qIHRvIGJlIGltcGxlbWVudGVk IGxhdGVyICovCiAJfQogCi0JZnJlZV9wZHAocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBkcCk7 CiAJZ2VuOF9mcmVlX3NjcmF0Y2godm0pOwogfQogCiAvKioKICAqIGdlbjhfcHBndHRfYWxsb2Nf cGFnZXRhYnMoKSAtIEFsbG9jYXRlIHBhZ2UgdGFibGVzIGZvciBWQSByYW5nZS4KLSAqIEBwcGd0 dDoJTWFzdGVyIHBwZ3R0IHN0cnVjdHVyZS4KKyAqIEB2bToJCU1hc3RlciB2bSBzdHJ1Y3R1cmUu CiAgKiBAcGQ6CQlQYWdlIGRpcmVjdG9yeSBmb3IgdGhpcyBhZGRyZXNzIHJhbmdlLgogICogQHN0 YXJ0OglTdGFydGluZyB2aXJ0dWFsIGFkZHJlc3MgdG8gYmVnaW4gYWxsb2NhdGlvbnMuCiAgKiBA bGVuZ3RoCVNpemUgb2YgdGhlIGFsbG9jYXRpb25zLgpAQCAtNzk1LDEzICs4MDIsMTMgQEAgc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt KQogICoKICAqIFJldHVybjogMCBpZiBzdWNjZXNzOyBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVy d2lzZS4KICAqLwotc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0YWJzKHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCwKK3N0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wYWdldGFi cyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQkgICAgIHN0cnVjdCBpOTE1X3Bh Z2VfZGlyZWN0b3J5ICpwZCwKIAkJCQkgICAgIHVpbnQ2NF90IHN0YXJ0LAogCQkJCSAgICAgdWlu dDY0X3QgbGVuZ3RoLAogCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqbmV3X3B0cykKIHsKLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gcHBndHQtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSB2bS0+ZGV2OwogCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnB0OwogCXVpbnQ2NF90 IHRlbXA7CiAJdWludDMyX3QgcGRlOwpAQCAtODEwLDcgKzgxNyw3IEBAIHN0YXRpYyBpbnQgZ2Vu OF9wcGd0dF9hbGxvY19wYWdldGFicyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJCS8q IERvbid0IHJlYWxsb2NhdGUgcGFnZSB0YWJsZXMgKi8KIAkJaWYgKHB0KSB7CiAJCQkvKiBTY3Jh dGNoIGlzIG5ldmVyIGFsbG9jYXRlZCB0aGlzIHdheSAqLwotCQkJV0FSTl9PTihwdCA9PSBwcGd0 dC0+YmFzZS5zY3JhdGNoX3B0KTsKKwkJCVdBUk5fT04ocHQgPT0gdm0tPnNjcmF0Y2hfcHQpOwog CQkJY29udGludWU7CiAJCX0KIApAQCAtODE4LDcgKzgyNSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9w cGd0dF9hbGxvY19wYWdldGFicyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJCWlmIChJ U19FUlIocHQpKQogCQkJZ290byB1bndpbmRfb3V0OwogCi0JCWdlbjhfaW5pdGlhbGl6ZV9wdCgm cHBndHQtPmJhc2UsIHB0KTsKKwkJZ2VuOF9pbml0aWFsaXplX3B0KHZtLCBwdCk7CiAJCXBkLT5w YWdlX3RhYmxlW3BkZV0gPSBwdDsKIAkJX19zZXRfYml0KHBkZSwgbmV3X3B0cyk7CiAJfQpAQCAt ODM0LDcgKzg0MSw3IEBAIHVud2luZF9vdXQ6CiAKIC8qKgogICogZ2VuOF9wcGd0dF9hbGxvY19w YWdlX2RpcmVjdG9yaWVzKCkgLSBBbGxvY2F0ZSBwYWdlIGRpcmVjdG9yaWVzIGZvciBWQSByYW5n ZS4KLSAqIEBwcGd0dDoJTWFzdGVyIHBwZ3R0IHN0cnVjdHVyZS4KKyAqIEB2bToJCU1hc3RlciB2 bSBzdHJ1Y3R1cmUuCiAgKiBAcGRwOglQYWdlIGRpcmVjdG9yeSBwb2ludGVyIGZvciB0aGlzIGFk ZHJlc3MgcmFuZ2UuCiAgKiBAc3RhcnQ6CVN0YXJ0aW5nIHZpcnR1YWwgYWRkcmVzcyB0byBiZWdp biBhbGxvY2F0aW9ucy4KICAqIEBsZW5ndGgJU2l6ZSBvZiB0aGUgYWxsb2NhdGlvbnMuCkBAIC04 NTUsMTMgKzg2MiwxNCBAQCB1bndpbmRfb3V0OgogICoKICAqIFJldHVybjogMCBpZiBzdWNjZXNz OyBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwotc3RhdGljIGludCBnZW44X3Bw Z3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAot CQkJCSAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwLAotCQkJCSAg ICAgdWludDY0X3Qgc3RhcnQsCi0JCQkJICAgICB1aW50NjRfdCBsZW5ndGgsCi0JCQkJICAgICB1 bnNpZ25lZCBsb25nICpuZXdfcGRzKQorc3RhdGljIGludAorZ2VuOF9wcGd0dF9hbGxvY19wYWdl X2RpcmVjdG9yaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAorCQkJCSAgc3RydWN0 IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwLAorCQkJCSAgdWludDY0X3Qgc3RhcnQs CisJCQkJICB1aW50NjRfdCBsZW5ndGgsCisJCQkJICB1bnNpZ25lZCBsb25nICpuZXdfcGRzKQog ewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBk OwogCXVpbnQ2NF90IHRlbXA7CiAJdWludDMyX3QgcGRwZTsKQEAgLTg3Nyw3ICs4ODUsNyBAQCBz dGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQsCiAJCWlmIChJU19FUlIocGQpKQogCQkJZ290byB1bndpbmRfb3V0Owog Ci0JCWdlbjhfaW5pdGlhbGl6ZV9wZCgmcHBndHQtPmJhc2UsIHBkKTsKKwkJZ2VuOF9pbml0aWFs aXplX3BkKHZtLCBwZCk7CiAJCXBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV0gPSBwZDsKIAkJX19z ZXRfYml0KHBkcGUsIG5ld19wZHMpOwogCX0KQEAgLTk1MiwxOSArOTYwLDIxIEBAIHN0YXRpYyB2 b2lkIG1hcmtfdGxic19kaXJ0eShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJcHBndHQt PnBkX2RpcnR5X3JpbmdzID0gSU5URUxfSU5GTyhwcGd0dC0+YmFzZS5kZXYpLT5yaW5nX21hc2s7 CiB9CiAKLXN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSwKLQkJCSAgICAgICB1aW50NjRfdCBzdGFydCwKLQkJCSAgICAgICB1aW50NjRf dCBsZW5ndGgpCitzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bChzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKKwkJCQkgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf cG9pbnRlciAqcGRwLAorCQkJCSAgICB1aW50NjRfdCBzdGFydCwKKwkJCQkgICAgdWludDY0X3Qg bGVuZ3RoKQogewogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CiAJCWNvbnRhaW5lcl9v Zih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwogCXVuc2lnbmVkIGxvbmcgKm5ld19w YWdlX2RpcnMsICoqbmV3X3BhZ2VfdGFibGVzOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2 bS0+ZGV2OwogCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKIAljb25zdCB1aW50NjRf dCBvcmlnX3N0YXJ0ID0gc3RhcnQ7CiAJY29uc3QgdWludDY0X3Qgb3JpZ19sZW5ndGggPSBsZW5n dGg7CiAJdWludDY0X3QgdGVtcDsKIAl1aW50MzJfdCBwZHBlOwotCXVpbnQzMl90IHBkcGVzID0g STkxNV9QRFBFU19QRVJfUERQKHBwZ3R0LT5iYXNlLmRldik7CisJdWludDMyX3QgcGRwZXMgPSBJ OTE1X1BEUEVTX1BFUl9QRFAoZGV2KTsKIAlpbnQgcmV0OwogCiAJLyogV3JhcCBpcyBuZXZlciBv a2F5IHNpbmNlIHdlIGNhbiBvbmx5IHJlcHJlc2VudCA0OGIsIGFuZCB3ZSBkb24ndApAQCAtOTcz LDcgKzk4Myw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwKIAlpZiAoV0FSTl9PTihzdGFydCArIGxlbmd0aCA8IHN0YXJ0KSkK IAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlpZiAoV0FSTl9PTihzdGFydCArIGxlbmd0aCA+IHBwZ3R0 LT5iYXNlLnRvdGFsKSkKKwlpZiAoV0FSTl9PTihzdGFydCArIGxlbmd0aCA+IHZtLT50b3RhbCkp CiAJCXJldHVybiAtRU5PREVWOwogCiAJcmV0ID0gYWxsb2NfZ2VuOF90ZW1wX2JpdG1hcHMoJm5l d19wYWdlX2RpcnMsICZuZXdfcGFnZV90YWJsZXMsIHBkcGVzKTsKQEAgLTk4MSwxNiArOTkxLDE1 IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSwKIAkJcmV0dXJuIHJldDsKIAogCS8qIERvIHRoZSBhbGxvY2F0aW9ucyBmaXJzdCBz byB3ZSBjYW4gZWFzaWx5IGJhaWwgb3V0ICovCi0JcmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wYWdl X2RpcmVjdG9yaWVzKHBwZ3R0LCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCwKLQkJCQkJbmV3 X3BhZ2VfZGlycyk7CisJcmV0ID0gZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9yaWVzKHZt LCBwZHAsIHN0YXJ0LCBsZW5ndGgsCisJCQkJCQluZXdfcGFnZV9kaXJzKTsKIAlpZiAocmV0KSB7 CiAJCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVz LCBwZHBlcyk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JLyogRm9yIGV2ZXJ5IHBhZ2UgZGlyZWN0 b3J5IHJlZmVyZW5jZWQsIGFsbG9jYXRlIHBhZ2UgdGFibGVzICovCi0JZ2VuOF9mb3JfZWFjaF9w ZHBlKHBkLCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRwZSkgewotCQlyZXQg PSBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0YWJzKHBwZ3R0LCBwZCwgc3RhcnQsIGxlbmd0aCwKKwln ZW44X2Zvcl9lYWNoX3BkcGUocGQsIHBkcCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRwZSkgewor CQlyZXQgPSBnZW44X3BwZ3R0X2FsbG9jX3BhZ2V0YWJzKHZtLCBwZCwgc3RhcnQsIGxlbmd0aCwK IAkJCQkJCW5ld19wYWdlX3RhYmxlc1twZHBlXSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGVycl9v dXQ7CkBAIC0xMDAxLDcgKzEwMTAsNyBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAkvKiBBbGxvY2F0aW9ucyBoYXZlIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHksIHNvIHNldCB0aGUgYml0bWFwcywgYW5kIGRvCiAJICogdGhl IG1hcHBpbmdzLiAqLwotCWdlbjhfZm9yX2VhY2hfcGRwZShwZCwgJnBwZ3R0LT5wZHAsIHN0YXJ0 LCBsZW5ndGgsIHRlbXAsIHBkcGUpIHsKKwlnZW44X2Zvcl9lYWNoX3BkcGUocGQsIHBkcCwgc3Rh cnQsIGxlbmd0aCwgdGVtcCwgcGRwZSkgewogCQlnZW44X3BkZV90ICpjb25zdCBwYWdlX2RpcmVj dG9yeSA9IGttYXBfcHgocGQpOwogCQlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICpwdDsKIAkJdWlu dDY0X3QgcGRfbGVuID0gbGVuZ3RoOwpAQCAtMTAzNCw4ICsxMDQzLDcgQEAgc3RhdGljIGludCBn ZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQl9CiAK IAkJa3VubWFwX3B4KHBwZ3R0LCBwYWdlX2RpcmVjdG9yeSk7Ci0KLQkJX19zZXRfYml0KHBkcGUs IHBwZ3R0LT5wZHAudXNlZF9wZHBlcyk7CisJCV9fc2V0X2JpdChwZHBlLCBwZHAtPnVzZWRfcGRw ZXMpOwogCX0KIAogCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3Bh Z2VfdGFibGVzLCBwZHBlcyk7CkBAIC0xMDQ1LDE3ICsxMDUzLDM4IEBAIHN0YXRpYyBpbnQgZ2Vu OF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIGVycl9vdXQ6 CiAJd2hpbGUgKHBkcGUtLSkgewogCQlmb3JfZWFjaF9zZXRfYml0KHRlbXAsIG5ld19wYWdlX3Rh Ymxlc1twZHBlXSwgSTkxNV9QREVTKQotCQkJZnJlZV9wdCh2bS0+ZGV2LCBwcGd0dC0+cGRwLnBh Z2VfZGlyZWN0b3J5W3BkcGVdLT5wYWdlX3RhYmxlW3RlbXBdKTsKKwkJCWZyZWVfcHQoZGV2LCBw ZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdLT5wYWdlX3RhYmxlW3RlbXBdKTsKIAl9CiAKIAlmb3Jf ZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wYWdlX2RpcnMsIHBkcGVzKQotCQlmcmVlX3BkKHZtLT5k ZXYsIHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbcGRwZV0pOworCQlmcmVlX3BkKGRldiwgcGRw LT5wYWdlX2RpcmVjdG9yeVtwZHBlXSk7CiAKIAlmcmVlX2dlbjhfdGVtcF9iaXRtYXBzKG5ld19w YWdlX2RpcnMsIG5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwogCW1hcmtfdGxic19kaXJ0eShwcGd0 dCk7CiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlXzRs dmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCisJCQkJICAgIHN0cnVjdCBpOTE1X3Bt bDQgKnBtbDQsCisJCQkJICAgIHVpbnQ2NF90IHN0YXJ0LAorCQkJCSAgICB1aW50NjRfdCBsZW5n dGgpCit7CisJV0FSTl9PTigxKTsgLyogdG8gYmUgaW1wbGVtZW50ZWQgbGF0ZXIgKi8KKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAorCQkJICAgICAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW5n dGgpCit7CisJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KKwkJY29udGFpbmVyX29mKHZt LCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CisKKwlpZiAoIVVTRVNfRlVMTF80OEJJVF9Q UEdUVCh2bS0+ZGV2KSkKKwkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwgJnBw Z3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgpOworCWVsc2UKKwkJcmV0dXJuIGdlbjhfYWxsb2NfdmFf cmFuZ2VfNGx2bCh2bSwgJnBwZ3R0LT5wbWw0LCBzdGFydCwgbGVuZ3RoKTsKK30KKwogLyoKICAq IEdFTjggbGVnYWN5IHBwZ3R0IHByb2dyYW1taW5nIGlzIGFjY29tcGxpc2hlZCB0aHJvdWdoIGEg bWF4IDQgUERQIHJlZ2lzdGVycwogICogd2l0aCBhIG5ldCBlZmZlY3QgcmVzZW1ibGluZyBhIDIt bGV2ZWwgcGFnZSB0YWJsZSBpbiBub3JtYWwgeDg2IHRlcm1zLiBFYWNoCi0tIAoyLjQuNQoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK