From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 1/2] drm/i915: Support per-PPGTT address space mode Date: Tue, 26 Apr 2016 16:17:51 +0100 Message-ID: <1461683872-13868-1-git-send-email-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 3AE9E6E2CE for ; Tue, 26 Apr 2016 15:18:22 +0000 (UTC) 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 RnJvbTogIldhbmcsIFpoaSBBIiA8emhpLmEud2FuZ0BpbnRlbC5jb20+CgpQcmV2aW91c2x5IHRo ZSBhZGRyZXNzIHNwYWNlIG1vZGUgb2YgZWFjaCBQUEdUVCBpbnN0YW5jZSBpcyBoYXJkLWNvZGVk IHRvCmhvc3Qgc3lzdGVtIGNvbmZpZ3VyYXRpb24sIGUuZy4gaWYgdGhlIGhvc3Qgc3lzdGVtIGlz IGNvbmZpZ3VyZWQgdG8gdXNlCjQ4Yml0IGZ1bGwgUFBHVFQsIHRoZW4gYWRkcmVzcyBzcGFjZSBt b2RlIG9mIGFsbCBQUEdUVCBpbnN0YW5jZXMgaXMgNDhiaXQuCgpQZXIgRGFuaWVsIGFuZCBLZXZp bidzIGFkdmljZSwgR1ZULWcgd2lsbCBsZXZlcmFnZSBpOTE1IFBQR1RUIGludGVyZmFjZSB0bwpw b3B1bGF0ZSBpdHMgc2hhZG93IFBQR1RUIHBhZ2UgdGFibGUuIFVuZGVyIEdWVC1nIHRoZSBhZGRy ZXNzIHNwYWNlIG1vZGUKb2YgUFBHVFQgaW5zdGFuY2VzIGNvdWxkIGJlIHZhcmlvdXMsIHNvbWUg Z3Vlc3QgbWF5IHVzZSAzMmJpdCwgc29tZSBndWVzdAptYXkgdXNlIDQ4Yml0LgoKV2Ugc3RvcmUg dGhlIGFkZHJlc3Mgc3BhY2UgbW9kZSBpbnRvIGk5MTVfaHdfcHBndHQsIGFuZCBsZXQgaTkxNSBw YWdlCnRhYmxlIG1hbmlwdWxhdGlvbiByb3V0aW5lcyAvIExSQyBjb250ZXh0IHBvcHVsYXRpb24g cm91dGluZXMgcmVhZCB0aGUKYWRkcmVzcyBzcGFjZSBtb2RlIGZyb20gaXQgaW5zdGVhZCBvZiB0 aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCgp2MjoKKE1hdHRoZXcgQXVsZCkKICAtIHJlYmFzZSBv biBsYXRlc3QgLW5pZ2h0bHkKICAtIHByZWZlciBpOTE1X3ZtX3RvX3BwZ3R0IGluc3RlYWQgb2Yg Y29udGFpbmVyX29mCiAgLSBpbml0aWFsaXNlIGFkZHJlc3Nfc3BhY2VfbW9kZSBfYmVmb3JlXyB3 ZSBhdHRlbXB0IHRvIGluaXQKICAgIHNjcmF0Y2gsIG90aGVyd2lzZSBicmVha2FnZSB3aWxsIGVu c3VlCgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKb29u YXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTog WmhpIFdhbmcgPHpoaS5hLndhbmdAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jIHwgODQgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAgMyArKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgfCAgNiArLS0KIDMgZmlsZXMgY2hhbmdlZCwgNTAg aW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwppbmRleCAwZDY2NmIzLi45OTE5ZmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwpAQCAtNTY0LDIyICs1NjQsMjIgQEAgc3RhdGljIHZvaWQgX19wZHBfZmluaShzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCiB9CiAKIHN0YXRpYyBzdHJ1Y3QKLWk5 MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqYWxsb2NfcGRwKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCitpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKmFsbG9jX3BkcChzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQpCiB7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAq cGRwOwogCWludCByZXQgPSAtRU5PTUVNOwogCi0JV0FSTl9PTighVVNFU19GVUxMXzQ4QklUX1BQ R1RUKGRldikpOworCVdBUk5fT04oIUlTXzQ4QklUX1BQR1RUKHBwZ3R0KSk7CiAKIAlwZHAgPSBr emFsbG9jKHNpemVvZigqcGRwKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwZHApCiAJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwogCi0JcmV0ID0gX19wZHBfaW5pdChkZXYsIHBkcCk7CisJcmV0ID0g X19wZHBfaW5pdChwcGd0dC0+YmFzZS5kZXYsIHBkcCk7CiAJaWYgKHJldCkKIAkJZ290byBmYWls X2JpdG1hcDsKIAotCXJldCA9IHNldHVwX3B4KGRldiwgcGRwKTsKKwlyZXQgPSBzZXR1cF9weChw cGd0dC0+YmFzZS5kZXYsIHBkcCk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsX3BhZ2VfbTsKIApA QCAtNTkzLDEyICs1OTMsMTIgQEAgZmFpbF9iaXRtYXA6CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsK IH0KIAotc3RhdGljIHZvaWQgZnJlZV9wZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRp YyB2b2lkIGZyZWVfcGRwKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJICAgICBzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCiB7CiAJX19wZHBfZmluaShwZHAp OwotCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkgewotCQljbGVhbnVwX3B4KGRldiwg cGRwKTsKKwlpZiAoSVNfNDhCSVRfUFBHVFQocHBndHQpKSB7CisJCWNsZWFudXBfcHgocHBndHQt PmJhc2UuZGV2LCBwZHApOwogCQlrZnJlZShwZHApOwogCX0KIH0KQEAgLTYzMiw3ICs2MzIsNyBA QCBnZW44X3NldHVwX3BhZ2VfZGlyZWN0b3J5KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwK IHsKIAlnZW44X3BwZ3R0X3BkcGVfdCAqcGFnZV9kaXJlY3RvcnlwbzsKIAotCWlmICghVVNFU19G VUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpCisJaWYgKCFJU180OEJJVF9QUEdUVChw cGd0dCkpCiAJCXJldHVybjsKIAogCXBhZ2VfZGlyZWN0b3J5cG8gPSBrbWFwX3B4KHBkcCk7CkBA IC02NDgsNyArNjQ4LDcgQEAgZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeV9wb2ludGVyKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIHsKIAlnZW44X3BwZ3R0X3BtbDRlX3QgKnBhZ2VtYXAg PSBrbWFwX3B4KHBtbDQpOwogCi0JV0FSTl9PTighVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0 LT5iYXNlLmRldikpOworCVdBUk5fT04oIUlTXzQ4QklUX1BQR1RUKHBwZ3R0KSk7CiAJcGFnZW1h cFtpbmRleF0gPSBnZW44X3BtbDRlX2VuY29kZShweF9kbWEocGRwKSwgSTkxNV9DQUNIRV9MTEMp OwogCWt1bm1hcF9weChwcGd0dCwgcGFnZW1hcCk7CiB9CkBAIC03NjUsNyArNzY1LDcgQEAgc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwKIAlnZW44X3B0ZV90IHNjcmF0Y2hfcHRlID0gZ2VuOF9wdGVfZW5jb2RlKHB4X2RtYSh2 bS0+c2NyYXRjaF9wYWdlKSwKIAkJCQkJCSBJOTE1X0NBQ0hFX0xMQywgdXNlX3NjcmF0Y2gpOwog Ci0JaWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikpIHsKKwlpZiAoIUlTXzQ4QklU X1BQR1RUKHBwZ3R0KSkgewogCQlnZW44X3BwZ3R0X2NsZWFyX3B0ZV9yYW5nZSh2bSwgJnBwZ3R0 LT5wZHAsIHN0YXJ0LCBsZW5ndGgsCiAJCQkJCSAgIHNjcmF0Y2hfcHRlKTsKIAl9IGVsc2UgewpA QCAtODMxLDcgKzgzMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2VudHJpZXMo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAlfX3NnX3BhZ2VfaXRlcl9zdGFydCgm c2dfaXRlciwgcGFnZXMtPnNnbCwgc2dfbmVudHMocGFnZXMtPnNnbCksIDApOwogCi0JaWYgKCFV U0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikpIHsKKwlpZiAoIUlTXzQ4QklUX1BQR1RUKHBw Z3R0KSkgewogCQlnZW44X3BwZ3R0X2luc2VydF9wdGVfZW50cmllcyh2bSwgJnBwZ3R0LT5wZHAs ICZzZ19pdGVyLCBzdGFydCwKIAkJCQkJICAgICAgY2FjaGVfbGV2ZWwpOwogCX0gZWxzZSB7CkBA IC04NjUsNiArODY1LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAKIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3NjcmF0Y2goc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiB7CisJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 ID0gaTkxNV92bV90b19wcGd0dCh2bSk7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZtLT5k ZXY7CiAKIAl2bS0+c2NyYXRjaF9wYWdlID0gYWxsb2Nfc2NyYXRjaF9wYWdlKGRldik7CkBAIC04 ODQsOCArODg1LDggQEAgc3RhdGljIGludCBnZW44X2luaXRfc2NyYXRjaChzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSkKIAkJcmV0dXJuIFBUUl9FUlIodm0tPnNjcmF0Y2hfcGQpOwogCX0K IAotCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkgewotCQl2bS0+c2NyYXRjaF9wZHAg PSBhbGxvY19wZHAoZGV2KTsKKwlpZiAoSVNfNDhCSVRfUFBHVFQocHBndHQpKSB7CisJCXZtLT5z Y3JhdGNoX3BkcCA9IGFsbG9jX3BkcChwcGd0dCk7CiAJCWlmIChJU19FUlIodm0tPnNjcmF0Y2hf cGRwKSkgewogCQkJZnJlZV9wZChkZXYsIHZtLT5zY3JhdGNoX3BkKTsKIAkJCWZyZWVfcHQoZGV2 LCB2bS0+c2NyYXRjaF9wdCk7CkBAIC04OTYsNyArODk3LDcgQEAgc3RhdGljIGludCBnZW44X2lu aXRfc2NyYXRjaChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIAogCWdlbjhfaW5pdGlh bGl6ZV9wdCh2bSwgdm0tPnNjcmF0Y2hfcHQpOwogCWdlbjhfaW5pdGlhbGl6ZV9wZCh2bSwgdm0t PnNjcmF0Y2hfcGQpOwotCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkKKwlpZiAoSVNf NDhCSVRfUFBHVFQocHBndHQpKQogCQlnZW44X2luaXRpYWxpemVfcGRwKHZtLCB2bS0+c2NyYXRj aF9wZHApOwogCiAJcmV0dXJuIDA7CkBAIC05MDgsNyArOTA5LDcgQEAgc3RhdGljIGludCBnZW44 X3BwZ3R0X25vdGlmeV92Z3Qoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBib29sIGNyZWF0 ZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBwZ3R0LT5i YXNlLmRldik7CiAJaW50IGk7CiAKLQlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldl9wcml2 KSkgeworCWlmIChJU180OEJJVF9QUEdUVChwcGd0dCkpIHsKIAkJdTY0IGRhZGRyID0gcHhfZG1h KCZwcGd0dC0+cG1sNCk7CiAKIAkJSTkxNV9XUklURSh2Z3RpZl9yZWcocGRwWzBdLmxvKSwgbG93 ZXJfMzJfYml0cyhkYWRkcikpOwpAQCAtOTM2LDE1ICs5MzcsMTYgQEAgc3RhdGljIGludCBnZW44 X3BwZ3R0X25vdGlmeV92Z3Qoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBib29sIGNyZWF0 ZSkKIHN0YXRpYyB2b2lkIGdlbjhfZnJlZV9zY3JhdGNoKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2OworCXN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm0pOwogCi0JaWYgKFVTRVNf RlVMTF80OEJJVF9QUEdUVChkZXYpKQotCQlmcmVlX3BkcChkZXYsIHZtLT5zY3JhdGNoX3BkcCk7 CisJaWYgKElTXzQ4QklUX1BQR1RUKHBwZ3R0KSkKKwkJZnJlZV9wZHAocHBndHQsIHZtLT5zY3Jh dGNoX3BkcCk7CiAJZnJlZV9wZChkZXYsIHZtLT5zY3JhdGNoX3BkKTsKIAlmcmVlX3B0KGRldiwg dm0tPnNjcmF0Y2hfcHQpOwogCWZyZWVfc2NyYXRjaF9wYWdlKGRldiwgdm0tPnNjcmF0Y2hfcGFn ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cF8zbHZsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCitzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfM2x2bChzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQsCiAJCQkJICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5 X3BvaW50ZXIgKnBkcCkKIHsKIAlpbnQgaTsKQEAgLTk1MywxMSArOTU1LDExIEBAIHN0YXRpYyB2 b2lkIGdlbjhfcHBndHRfY2xlYW51cF8zbHZsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlm IChXQVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5W2ldKSkKIAkJCWNvbnRpbnVlOwogCi0JCWdl bjhfZnJlZV9wYWdlX3RhYmxlcyhkZXYsIHBkcC0+cGFnZV9kaXJlY3RvcnlbaV0pOwotCQlmcmVl X3BkKGRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSk7CisJCWdlbjhfZnJlZV9wYWdlX3RhYmxl cyhwcGd0dC0+YmFzZS5kZXYsIHBkcC0+cGFnZV9kaXJlY3RvcnlbaV0pOworCQlmcmVlX3BkKHBw Z3R0LT5iYXNlLmRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSk7CiAJfQogCi0JZnJlZV9wZHAo ZGV2LCBwZHApOworCWZyZWVfcGRwKHBwZ3R0LCBwZHApOwogfQogCiBzdGF0aWMgdm9pZCBnZW44 X3BwZ3R0X2NsZWFudXBfNGx2bChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCkBAIC05Njgs NyArOTcwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzRsdmwoc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0KQogCQlpZiAoV0FSTl9PTighcHBndHQtPnBtbDQucGRwc1tpXSkp CiAJCQljb250aW51ZTsKIAotCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bChwcGd0dC0+YmFzZS5k ZXYsIHBwZ3R0LT5wbWw0LnBkcHNbaV0pOworCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bChwcGd0 dCwgcHBndHQtPnBtbDQucGRwc1tpXSk7CiAJfQogCiAJY2xlYW51cF9weChwcGd0dC0+YmFzZS5k ZXYsICZwcGd0dC0+cG1sNCk7CkBAIC05ODEsOCArOTgzLDggQEAgc3RhdGljIHZvaWQgZ2VuOF9w cGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogCWlmIChpbnRlbF92 Z3B1X2FjdGl2ZSh2bS0+ZGV2KSkKIAkJZ2VuOF9wcGd0dF9ub3RpZnlfdmd0KHBwZ3R0LCBmYWxz ZSk7CiAKLQlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKQotCQln ZW44X3BwZ3R0X2NsZWFudXBfM2x2bChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cGRwKTsKKwlp ZiAoIUlTXzQ4QklUX1BQR1RUKHBwZ3R0KSkKKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBn dHQsICZwcGd0dC0+cGRwKTsKIAllbHNlCiAJCWdlbjhfcHBndHRfY2xlYW51cF80bHZsKHBwZ3R0 KTsKIApAQCAtMTEyNyw3ICsxMTI5LDcgQEAgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcnBvaW50 ZXJzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJCSAgdWludDY0X3QgbGVuZ3Ro LAogCQkJCSAgdW5zaWduZWQgbG9uZyAqbmV3X3BkcHMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IHZtLT5kZXY7CisJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gaTkxNV92bV90 b19wcGd0dCh2bSk7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOwog CXVpbnQzMl90IHBtbDRlOwogCkBAIC0xMTM1LDcgKzExMzcsNyBAQCBnZW44X3BwZ3R0X2FsbG9j X3BhZ2VfZGlycG9pbnRlcnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAlnZW44 X2Zvcl9lYWNoX3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgcG1sNGUpIHsKIAkJaWYg KCF0ZXN0X2JpdChwbWw0ZSwgcG1sNC0+dXNlZF9wbWw0ZXMpKSB7Ci0JCQlwZHAgPSBhbGxvY19w ZHAoZGV2KTsKKwkJCXBkcCA9IGFsbG9jX3BkcChwcGd0dCk7CiAJCQlpZiAoSVNfRVJSKHBkcCkp CiAJCQkJZ290byB1bndpbmRfb3V0OwogCkBAIC0xMTUzLDcgKzExNTUsNyBAQCBnZW44X3BwZ3R0 X2FsbG9jX3BhZ2VfZGlycG9pbnRlcnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAK IHVud2luZF9vdXQ6CiAJZm9yX2VhY2hfc2V0X2JpdChwbWw0ZSwgbmV3X3BkcHMsIEdFTjhfUE1M NEVTX1BFUl9QTUw0KQotCQlmcmVlX3BkcChkZXYsIHBtbDQtPnBkcHNbcG1sNGVdKTsKKwkJZnJl ZV9wZHAocHBndHQsIHBtbDQtPnBkcHNbcG1sNGVdKTsKIAogCXJldHVybiAtRU5PTUVNOwogfQpA QCAtMTM2MCw3ICsxMzYyLDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIGVycl9vdXQ6CiAJZm9yX2VhY2hfc2V0 X2JpdChwbWw0ZSwgbmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KQotCQlnZW44X3BwZ3R0 X2NsZWFudXBfM2x2bCh2bS0+ZGV2LCBwbWw0LT5wZHBzW3BtbDRlXSk7CisJCWdlbjhfcHBndHRf Y2xlYW51cF8zbHZsKHBwZ3R0LCBwbWw0LT5wZHBzW3BtbDRlXSk7CiAKIAlyZXR1cm4gcmV0Owog fQpAQCAtMTM3MCw3ICsxMzcyLDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogewogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm0pOwogCi0JaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdU VCh2bS0+ZGV2KSkKKwlpZiAoSVNfNDhCSVRfUFBHVFQocHBndHQpKQogCQlyZXR1cm4gZ2VuOF9h bGxvY192YV9yYW5nZV80bHZsKHZtLCAmcHBndHQtPnBtbDQsIHN0YXJ0LCBsZW5ndGgpOwogCWVs c2UKIAkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwgJnBwZ3R0LT5wZHAsIHN0 YXJ0LCBsZW5ndGgpOwpAQCAtMTQ0MSw3ICsxNDQzLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9kdW1w X3BwZ3R0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgc3RydWN0IHNlcV9maWxlICptKQog CWdlbjhfcHRlX3Qgc2NyYXRjaF9wdGUgPSBnZW44X3B0ZV9lbmNvZGUocHhfZG1hKHZtLT5zY3Jh dGNoX3BhZ2UpLAogCQkJCQkJIEk5MTVfQ0FDSEVfTExDLCB0cnVlKTsKIAotCWlmICghVVNFU19G VUxMXzQ4QklUX1BQR1RUKHZtLT5kZXYpKSB7CisJaWYgKCFJU180OEJJVF9QUEdUVChwcGd0dCkp IHsKIAkJZ2VuOF9kdW1wX3BkcCgmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCwgc2NyYXRjaF9w dGUsIG0pOwogCX0gZWxzZSB7CiAJCXVpbnQ2NF90IHBtbDRlOwpAQCAtMTQ5MiwxNCArMTQ5NCwx MCBAQCBzdGF0aWMgaW50IGdlbjhfcHJlYWxsb2NhdGVfdG9wX2xldmVsX3BkcHMoc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0KQogICogc3BhY2UuCiAgKgogICovCi1zdGF0aWMgaW50IGdlbjhf cHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCitzdGF0aWMgaW50IGdlbjhf cHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIGludCBhZGRyZXNzX3NwYWNl X21vZGUpCiB7CiAJaW50IHJldDsKIAotCXJldCA9IGdlbjhfaW5pdF9zY3JhdGNoKCZwcGd0dC0+ YmFzZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCXBwZ3R0LT5iYXNlLnN0YXJ0ID0g MDsKIAlwcGd0dC0+YmFzZS5jbGVhbnVwID0gZ2VuOF9wcGd0dF9jbGVhbnVwOwogCXBwZ3R0LT5i YXNlLmFsbG9jYXRlX3ZhX3JhbmdlID0gZ2VuOF9hbGxvY192YV9yYW5nZTsKQEAgLTE1MDgsOCAr MTUwNiwxMyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQpCiAJcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IHBwZ3R0X3VuYmluZF92bWE7CiAJ cHBndHQtPmJhc2UuYmluZF92bWEgPSBwcGd0dF9iaW5kX3ZtYTsKIAlwcGd0dC0+ZGVidWdfZHVt cCA9IGdlbjhfZHVtcF9wcGd0dDsKKwlwcGd0dC0+YWRkcmVzc19zcGFjZV9tb2RlID0gYWRkcmVz c19zcGFjZV9tb2RlOworCisJcmV0ID0gZ2VuOF9pbml0X3NjcmF0Y2goJnBwZ3R0LT5iYXNlKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OwogCi0JaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChw cGd0dC0+YmFzZS5kZXYpKSB7CisJaWYgKElTXzQ4QklUX1BQR1RUKHBwZ3R0KSkgewogCQlyZXQg PSBzZXR1cF9weChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cG1sNCk7CiAJCWlmIChyZXQpCiAJ CQlnb3RvIGZyZWVfc2NyYXRjaDsKQEAgLTIxMDEsMTQgKzIxMDQsMTUgQEAgc3RhdGljIGludCBn ZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXJldHVybiAwOwog fQogCi1zdGF0aWMgaW50IF9faHdfcHBndHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCitzdGF0aWMgaW50IF9faHdfcHBndHRfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIGlu dCBhZGRyZXNzX3NwYWNlX21vZGUpCiB7CiAJcHBndHQtPmJhc2UuZGV2ID0gZGV2OwogCiAJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCkKIAkJcmV0dXJuIGdlbjZfcHBndHRfaW5pdChwcGd0 dCk7CiAJZWxzZQotCQlyZXR1cm4gZ2VuOF9wcGd0dF9pbml0KHBwZ3R0KTsKKwkJcmV0dXJuIGdl bjhfcHBndHRfaW5pdChwcGd0dCwgYWRkcmVzc19zcGFjZV9tb2RlKTsKIH0KIAogc3RhdGljIHZv aWQgaTkxNV9hZGRyZXNzX3NwYWNlX2luaXQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s CkBAIC0yMTQ1LDcgKzIxNDksNyBAQCBpbnQgaTkxNV9wcGd0dF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWludCByZXQgPSAwOwogCi0J cmV0ID0gX19od19wcGd0dF9pbml0KGRldiwgcHBndHQpOworCXJldCA9IF9faHdfcHBndHRfaW5p dChkZXYsIHBwZ3R0LCBVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSA/IDQ4IDogMzIpOwogCWlm IChyZXQgPT0gMCkgewogCQlrcmVmX2luaXQoJnBwZ3R0LT5yZWYpOwogCQlpOTE1X2FkZHJlc3Nf c3BhY2VfaW5pdCgmcHBndHQtPmJhc2UsIGRldl9wcml2KTsKQEAgLTI3NzIsNyArMjc3Niw3IEBA IHN0YXRpYyBpbnQgaTkxNV9nZW1fc2V0dXBfZ2xvYmFsX2d0dChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQlpZiAoIXBwZ3R0KQogCQkJcmV0dXJuIC1FTk9NRU07CiAKLQkJcmV0ID0gX19od19w cGd0dF9pbml0KGRldiwgcHBndHQpOworCQlyZXQgPSBfX2h3X3BwZ3R0X2luaXQoZGV2LCBwcGd0 dCwgMzIpOwogCQlpZiAocmV0KSB7CiAJCQlwcGd0dC0+YmFzZS5jbGVhbnVwKCZwcGd0dC0+YmFz ZSk7CiAJCQlrZnJlZShwcGd0dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4 IGQ3ZGQzZDguLmUyNmQ5Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC0x MTAsNiArMTEwLDcgQEAgdHlwZWRlZiB1aW50NjRfdCBnZW44X3BwZ3R0X3BtbDRlX3Q7CiAKICNk ZWZpbmUgSTkxNV9QRFBFU19QRVJfUERQKGRldikgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYp ID9cCiAJCQkJIEdFTjhfUE1MNEVTX1BFUl9QTUw0IDogR0VOOF9MRUdBQ1lfUERQRVMpCisjZGVm aW5lIElTXzQ4QklUX1BQR1RUKHBwZ3R0KQkoKHBwZ3R0KSAmJiAoKHBwZ3R0KS0+YWRkcmVzc19z cGFjZV9tb2RlID09IDQ4KSkKIAogI2RlZmluZSBQUEFUX1VOQ0FDSEVEX0lOREVYCQkoX1BBR0Vf UFdUIHwgX1BBR0VfUENEKQogI2RlZmluZSBQUEFUX0NBQ0hFRF9QREVfSU5ERVgJCTAgLyogV0Ig TExDICovCkBAIC0zNzIsNiArMzczLDggQEAgc3RydWN0IGk5MTVfaHdfcHBndHQgewogCQlzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSBwZDsJCS8qIEdFTjYtNyAqLwogCX07CiAKKwlpbnQgYWRk cmVzc19zcGFjZV9tb2RlOworCiAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9w cml2OwogCiAJZ2VuNl9wdGVfdCBfX2lvbWVtICpwZF9hZGRyOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwppbmRleCAyYjdlNmJiLi4xM2NiMWIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpA QCAtNDA3LDcgKzQwNyw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogCSAqIFBNTDQgaXMgYWxsb2NhdGVkIGR1 cmluZyBwcGd0dCBpbml0LCBzbyB0aGlzIGlzIG5vdCBuZWVkZWQKIAkgKiBpbiA0OC1iaXQgbW9k ZS4KIAkgKi8KLQlpZiAocHBndHQgJiYgIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFz ZS5kZXYpKQorCWlmIChwcGd0dCAmJiAhSVNfNDhCSVRfUFBHVFQocHBndHQpKQogCQlleGVjbGlz dHNfdXBkYXRlX2NvbnRleHRfcGRwcyhwcGd0dCwgcmVnX3N0YXRlKTsKIH0KIApAQCAtMTcwNiw3 ICsxNzA2LDcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiAJICogbm90IG5lZWRlZCBpbiA0OC1iaXQuKi8KIAlpZiAocmVx LT5jdHgtPnBwZ3R0ICYmCiAJICAgIChpbnRlbF9lbmdpbmVfZmxhZyhyZXEtPmVuZ2luZSkgJiBy ZXEtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3JpbmdzKSkgewotCQlpZiAoIVVTRVNfRlVMTF80OEJJ VF9QUEdUVChyZXEtPmk5MTUpICYmCisJCWlmICghSVNfNDhCSVRfUFBHVFQocmVxLT5jdHgtPnBw Z3R0KSAmJgogCQkgICAgIWludGVsX3ZncHVfYWN0aXZlKHJlcS0+aTkxNS0+ZGV2KSkgewogCQkJ cmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhyZXEpOwogCQkJaWYgKHJldCkKQEAg LTI1MzksNyArMjUzOSw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCwKIAlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9QRFAwX0xEVywgR0VOOF9S SU5HX1BEUF9MRFcoZW5naW5lLCAwKSwKIAkJICAgICAgIDApOwogCi0JaWYgKFVTRVNfRlVMTF80 OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKSB7CisJaWYgKElTXzQ4QklUX1BQR1RUKHBwZ3R0 KSkgewogCQkvKiA2NGIgUFBHVFQgKDQ4Yml0IGNhbm9uaWNhbCkKIAkJICogUERQMF9ERVNDUklQ VE9SIGNvbnRhaW5zIHRoZSBiYXNlIGFkZHJlc3MgdG8gUE1MNCBhbmQKIAkJICogb3RoZXIgUERQ IERlc2NyaXB0b3JzIGFyZSBpZ25vcmVkLgotLSAKMi40LjExCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK