From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhi Wang Subject: [RFCv2 08/14] drm/i915: Support per-PPGTT address space mode Date: Thu, 18 Feb 2016 19:42:15 +0800 Message-ID: <1455795741-3487-9-git-send-email-zhi.a.wang@intel.com> References: <1455795741-3487-1-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 14A026EB71 for ; Thu, 18 Feb 2016 11:45:08 +0000 (UTC) In-Reply-To: <1455795741-3487-1-git-send-email-zhi.a.wang@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, igvt-g@lists.01.org Cc: daniel.vetter@ffwll.ch, david.j.cowperthwaite@intel.com, zhiyuan.lv@intel.com List-Id: intel-gfx@lists.freedesktop.org UHJldmlvdXNseSB0aGUgYWRkcmVzcyBzcGFjZSBtb2RlIG9mIGVhY2ggUFBHVFQgaW5zdGFuY2Ug aXMgaGFyZC1jb2RlZCB0bwpob3N0IHN5c3RlbSBjb25maWd1cmF0aW9uLCBlLmcuIGlmIHRoZSBo b3N0IHN5c3RlbSBpcyBjb25maWd1cmVkIHRvIHVzZQo0OGJpdCBmdWxsIFBQR1RULCB0aGVuIGFk ZHJlc3Mgc3BhY2UgbW9kZSBvZiBhbGwgUFBHVFQgaW5zdGFuY2VzIGlzIDQ4Yml0LgoKUGVyIERh bmllbCBhbmQgS2V2aW4ncyBhZHZpY2UsIEdWVC1nIHdpbGwgbGV2ZXJhZ2UgaTkxNSBQUEdUVCBp bnRlcmZhY2UgdG8KcG9wdWxhdGUgaXRzIHNoYWRvdyBQUEdUVCBwYWdlIHRhYmxlLiBVbmRlciBH VlQtZyB0aGUgYWRkcmVzcyBzcGFjZSBtb2RlCm9mIFBQR1RUIGluc3RhbmNlcyBjb3VsZCBiZSB2 YXJpb3VzLCBzb21lIGd1ZXN0IG1heSB1c2UgMzJiaXQsIHNvbWUgZ3Vlc3QKbWF5IHVzZSA0OGJp dC4KCldlIHN0b3JlIHRoZSBhZGRyZXNzIHNwYWNlIG1vZGUgaW50byBpOTE1X2h3X3BwZ3R0LCBh bmQgbGV0IGk5MTUgcGFnZQp0YWJsZSBtYW5pcHVsYXRpb24gcm91dGluZXMgLyBMUkMgY29udGV4 dCBwb3B1bGF0aW9uIHJvdXRpbmVzIHJlYWQgdGhlCmFkZHJlc3Mgc3BhY2UgbW9kZSBmcm9tIGl0 IGluc3RlYWQgb2YgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLgoKU2lnbmVkLW9mZi1ieTogWmhp IFdhbmcgPHpoaS5hLndhbmdAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIHwgODEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAgMyArKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgfCAgNiArLS0KIDMgZmlsZXMgY2hhbmdlZCwgNTEgaW5z ZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YwppbmRleCBkZTA5ZGQ0Li43ZjA0M2Y1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YwpAQCAtNTY0LDIyICs1NjQsMjIgQEAgc3RhdGljIHZvaWQgX19wZHBfZmluaShzdHJ1Y3QgaTkx NV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCiB9CiAKIHN0YXRpYyBzdHJ1Y3QKLWk5MTVf cGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqYWxsb2NfcGRwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CitpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKmFsbG9jX3BkcChzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQpCiB7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRw OwogCWludCByZXQgPSAtRU5PTUVNOwogCi0JV0FSTl9PTighVVNFU19GVUxMXzQ4QklUX1BQR1RU KGRldikpOworCVdBUk5fT04oIUlTXzQ4QklUX1BQR1RUKHBwZ3R0KSk7CiAKIAlwZHAgPSBremFs bG9jKHNpemVvZigqcGRwKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFwZHApCiAJCXJldHVybiBFUlJf UFRSKC1FTk9NRU0pOwogCi0JcmV0ID0gX19wZHBfaW5pdChkZXYsIHBkcCk7CisJcmV0ID0gX19w ZHBfaW5pdChwcGd0dC0+YmFzZS5kZXYsIHBkcCk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsX2Jp dG1hcDsKIAotCXJldCA9IHNldHVwX3B4KGRldiwgcGRwKTsKKwlyZXQgPSBzZXR1cF9weChwcGd0 dC0+YmFzZS5kZXYsIHBkcCk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsX3BhZ2VfbTsKIApAQCAt NTkzLDEyICs1OTMsMTIgQEAgZmFpbF9iaXRtYXA6CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0K IAotc3RhdGljIHZvaWQgZnJlZV9wZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyB2 b2lkIGZyZWVfcGRwKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIAkJICAgICBzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCiB7CiAJX19wZHBfZmluaShwZHApOwot CWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2KSkgewotCQljbGVhbnVwX3B4KGRldiwgcGRw KTsKKwlpZiAoSVNfNDhCSVRfUFBHVFQocHBndHQpKSB7CisJCWNsZWFudXBfcHgocHBndHQtPmJh c2UuZGV2LCBwZHApOwogCQlrZnJlZShwZHApOwogCX0KIH0KQEAgLTYzMiw3ICs2MzIsNyBAQCBn ZW44X3NldHVwX3BhZ2VfZGlyZWN0b3J5KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKIHsK IAlnZW44X3BwZ3R0X3BkcGVfdCAqcGFnZV9kaXJlY3RvcnlwbzsKIAotCWlmICghVVNFU19GVUxM XzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpCisJaWYgKCFJU180OEJJVF9QUEdUVChwcGd0 dCkpCiAJCXJldHVybjsKIAogCXBhZ2VfZGlyZWN0b3J5cG8gPSBrbWFwX3B4KHBkcCk7CkBAIC02 NDgsNyArNjQ4LDcgQEAgZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeV9wb2ludGVyKHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCwKIHsKIAlnZW44X3BwZ3R0X3BtbDRlX3QgKnBhZ2VtYXAgPSBr bWFwX3B4KHBtbDQpOwogCi0JV0FSTl9PTighVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5i YXNlLmRldikpOworCVdBUk5fT04oIUlTXzQ4QklUX1BQR1RUKHBwZ3R0KSk7CiAJcGFnZW1hcFtp bmRleF0gPSBnZW44X3BtbDRlX2VuY29kZShweF9kbWEocGRwKSwgSTkxNV9DQUNIRV9MTEMpOwog CWt1bm1hcF9weChwcGd0dCwgcGFnZW1hcCk7CiB9CkBAIC03NjcsNyArNzY3LDcgQEAgc3RhdGlj IHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKIAlnZW44X3B0ZV90IHNjcmF0Y2hfcHRlID0gZ2VuOF9wdGVfZW5jb2RlKHB4X2RtYSh2bS0+ c2NyYXRjaF9wYWdlKSwKIAkJCQkJCSBJOTE1X0NBQ0hFX0xMQywgdXNlX3NjcmF0Y2gpOwogCi0J aWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikpIHsKKwlpZiAoIUlTXzQ4QklUX1BQ R1RUKHBwZ3R0KSkgewogCQlnZW44X3BwZ3R0X2NsZWFyX3B0ZV9yYW5nZSh2bSwgJnBwZ3R0LT5w ZHAsIHN0YXJ0LCBsZW5ndGgsCiAJCQkJCSAgIHNjcmF0Y2hfcHRlKTsKIAl9IGVsc2UgewpAQCAt ODM1LDcgKzgzNSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2VudHJpZXMoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAlfX3NnX3BhZ2VfaXRlcl9zdGFydCgmc2df aXRlciwgcGFnZXMtPnNnbCwgc2dfbmVudHMocGFnZXMtPnNnbCksIDApOwogCi0JaWYgKCFVU0VT X0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikpIHsKKwlpZiAoIUlTXzQ4QklUX1BQR1RUKHBwZ3R0 KSkgewogCQlnZW44X3BwZ3R0X2luc2VydF9wdGVfZW50cmllcyh2bSwgJnBwZ3R0LT5wZHAsICZz Z19pdGVyLCBzdGFydCwKIAkJCQkJICAgICAgY2FjaGVfbGV2ZWwpOwogCX0gZWxzZSB7CkBAIC04 NjksNiArODY5LDggQEAgc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAKIHN0YXRpYyBpbnQgZ2VuOF9pbml0X3NjcmF0Y2goc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0pCiB7CisJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0K KwkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CiAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CiAKIAl2bS0+c2NyYXRjaF9wYWdlID0gYWxsb2Nf c2NyYXRjaF9wYWdlKGRldik7CkBAIC04ODgsOCArODkwLDggQEAgc3RhdGljIGludCBnZW44X2lu aXRfc2NyYXRjaChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKIAkJcmV0dXJuIFBUUl9F UlIodm0tPnNjcmF0Y2hfcGQpOwogCX0KIAotCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2 KSkgewotCQl2bS0+c2NyYXRjaF9wZHAgPSBhbGxvY19wZHAoZGV2KTsKKwlpZiAoSVNfNDhCSVRf UFBHVFQocHBndHQpKSB7CisJCXZtLT5zY3JhdGNoX3BkcCA9IGFsbG9jX3BkcChwcGd0dCk7CiAJ CWlmIChJU19FUlIodm0tPnNjcmF0Y2hfcGRwKSkgewogCQkJZnJlZV9wZChkZXYsIHZtLT5zY3Jh dGNoX3BkKTsKIAkJCWZyZWVfcHQoZGV2LCB2bS0+c2NyYXRjaF9wdCk7CkBAIC05MDAsNyArOTAy LDcgQEAgc3RhdGljIGludCBnZW44X2luaXRfc2NyYXRjaChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSkKIAogCWdlbjhfaW5pdGlhbGl6ZV9wdCh2bSwgdm0tPnNjcmF0Y2hfcHQpOwogCWdl bjhfaW5pdGlhbGl6ZV9wZCh2bSwgdm0tPnNjcmF0Y2hfcGQpOwotCWlmIChVU0VTX0ZVTExfNDhC SVRfUFBHVFQoZGV2KSkKKwlpZiAoSVNfNDhCSVRfUFBHVFQocHBndHQpKQogCQlnZW44X2luaXRp YWxpemVfcGRwKHZtLCB2bS0+c2NyYXRjaF9wZHApOwogCiAJcmV0dXJuIDA7CkBAIC05MTMsNyAr OTE1LDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X25vdGlmeV92Z3Qoc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0LCBib29sIGNyZWF0ZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWludCBpOwogCi0JaWYgKFVTRVNfRlVMTF80OEJJ VF9QUEdUVChkZXYpKSB7CisJaWYgKElTXzQ4QklUX1BQR1RUKHBwZ3R0KSkgewogCQl1NjQgZGFk ZHIgPSBweF9kbWEoJnBwZ3R0LT5wbWw0KTsKIAogCQlJOTE1X1dSSVRFKHZndGlmX3JlZyhwZHBb MF0ubG8pLCBsb3dlcl8zMl9iaXRzKGRhZGRyKSk7CkBAIC05NDIsMTQgKzk0NCwxNyBAQCBzdGF0 aWMgdm9pZCBnZW44X2ZyZWVfc2NyYXRjaChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkK IHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0tPmRldjsKIAotCWlmIChVU0VTX0ZVTExf NDhCSVRfUFBHVFQoZGV2KSkKLQkJZnJlZV9wZHAoZGV2LCB2bS0+c2NyYXRjaF9wZHApOworCXN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CisJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5 MTVfaHdfcHBndHQsIGJhc2UpOworCisJaWYgKElTXzQ4QklUX1BQR1RUKHBwZ3R0KSkKKwkJZnJl ZV9wZHAocHBndHQsIHZtLT5zY3JhdGNoX3BkcCk7CiAJZnJlZV9wZChkZXYsIHZtLT5zY3JhdGNo X3BkKTsKIAlmcmVlX3B0KGRldiwgdm0tPnNjcmF0Y2hfcHQpOwogCWZyZWVfc2NyYXRjaF9wYWdl KGRldiwgdm0tPnNjcmF0Y2hfcGFnZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xl YW51cF8zbHZsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCitzdGF0aWMgdm9pZCBnZW44X3BwZ3R0 X2NsZWFudXBfM2x2bChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJCQkJICAgIHN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCkKIHsKIAlpbnQgaTsKQEAgLTk1OCwx MSArOTYzLDExIEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cF8zbHZsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCWlmIChXQVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5W2ldKSkK IAkJCWNvbnRpbnVlOwogCi0JCWdlbjhfZnJlZV9wYWdlX3RhYmxlcyhkZXYsIHBkcC0+cGFnZV9k aXJlY3RvcnlbaV0pOwotCQlmcmVlX3BkKGRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSk7CisJ CWdlbjhfZnJlZV9wYWdlX3RhYmxlcyhwcGd0dC0+YmFzZS5kZXYsIHBkcC0+cGFnZV9kaXJlY3Rv cnlbaV0pOworCQlmcmVlX3BkKHBwZ3R0LT5iYXNlLmRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtp XSk7CiAJfQogCi0JZnJlZV9wZHAoZGV2LCBwZHApOworCWZyZWVfcGRwKHBwZ3R0LCBwZHApOwog fQogCiBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfNGx2bChzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQpCkBAIC05NzMsNyArOTc4LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9j bGVhbnVwXzRsdmwoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCQlpZiAoV0FSTl9PTigh cHBndHQtPnBtbDQucGRwc1tpXSkpCiAJCQljb250aW51ZTsKIAotCQlnZW44X3BwZ3R0X2NsZWFu dXBfM2x2bChwcGd0dC0+YmFzZS5kZXYsIHBwZ3R0LT5wbWw0LnBkcHNbaV0pOworCQlnZW44X3Bw Z3R0X2NsZWFudXBfM2x2bChwcGd0dCwgcHBndHQtPnBtbDQucGRwc1tpXSk7CiAJfQogCiAJY2xl YW51cF9weChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cG1sNCk7CkBAIC05ODcsOCArOTkyLDgg QEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtKQogCWlmIChpbnRlbF92Z3B1X2FjdGl2ZSh2bS0+ZGV2KSkKIAkJZ2VuOF9wcGd0dF9u b3RpZnlfdmd0KHBwZ3R0LCBmYWxzZSk7CiAKLQlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChw cGd0dC0+YmFzZS5kZXYpKQotCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bChwcGd0dC0+YmFzZS5k ZXYsICZwcGd0dC0+cGRwKTsKKwlpZiAoIUlTXzQ4QklUX1BQR1RUKHBwZ3R0KSkKKwkJZ2VuOF9w cGd0dF9jbGVhbnVwXzNsdmwocHBndHQsICZwcGd0dC0+cGRwKTsKIAllbHNlCiAJCWdlbjhfcHBn dHRfY2xlYW51cF80bHZsKHBwZ3R0KTsKIApAQCAtMTEzMyw3ICsxMTM4LDggQEAgZ2VuOF9wcGd0 dF9hbGxvY19wYWdlX2RpcnBvaW50ZXJzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAog CQkJCSAgdWludDY0X3QgbGVuZ3RoLAogCQkJCSAgdW5zaWduZWQgbG9uZyAqbmV3X3BkcHMpCiB7 Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CisJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0ID0KKwkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFz ZSk7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOwogCXVpbnQzMl90 IHBtbDRlOwogCkBAIC0xMTQxLDcgKzExNDcsNyBAQCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGly cG9pbnRlcnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAlnZW44X2Zvcl9lYWNo X3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgcG1sNGUpIHsKIAkJaWYgKCF0ZXN0X2Jp dChwbWw0ZSwgcG1sNC0+dXNlZF9wbWw0ZXMpKSB7Ci0JCQlwZHAgPSBhbGxvY19wZHAoZGV2KTsK KwkJCXBkcCA9IGFsbG9jX3BkcChwcGd0dCk7CiAJCQlpZiAoSVNfRVJSKHBkcCkpCiAJCQkJZ290 byB1bndpbmRfb3V0OwogCkBAIC0xMTU5LDcgKzExNjUsNyBAQCBnZW44X3BwZ3R0X2FsbG9jX3Bh Z2VfZGlycG9pbnRlcnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIHVud2luZF9v dXQ6CiAJZm9yX2VhY2hfc2V0X2JpdChwbWw0ZSwgbmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9Q TUw0KQotCQlmcmVlX3BkcChkZXYsIHBtbDQtPnBkcHNbcG1sNGVdKTsKKwkJZnJlZV9wZHAocHBn dHQsIHBtbDQtPnBkcHNbcG1sNGVdKTsKIAogCXJldHVybiAtRU5PTUVNOwogfQpAQCAtMTM2OCw3 ICsxMzc0LDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIGVycl9vdXQ6CiAJZm9yX2VhY2hfc2V0X2JpdChwbWw0 ZSwgbmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KQotCQlnZW44X3BwZ3R0X2NsZWFudXBf M2x2bCh2bS0+ZGV2LCBwbWw0LT5wZHBzW3BtbDRlXSk7CisJCWdlbjhfcHBndHRfY2xlYW51cF8z bHZsKHBwZ3R0LCBwbWw0LT5wZHBzW3BtbDRlXSk7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTM3 OSw3ICsxMzg1LDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLAogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9CiAJCWNv bnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwogCi0JaWYgKFVTRVNf RlVMTF80OEJJVF9QUEdUVCh2bS0+ZGV2KSkKKwlpZiAoSVNfNDhCSVRfUFBHVFQocHBndHQpKQog CQlyZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5nZV80bHZsKHZtLCAmcHBndHQtPnBtbDQsIHN0YXJ0 LCBsZW5ndGgpOwogCWVsc2UKIAkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwg JnBwZ3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgpOwpAQCAtMTQ1MCw3ICsxNDU2LDcgQEAgc3RhdGlj IHZvaWQgZ2VuOF9kdW1wX3BwZ3R0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgc3RydWN0 IHNlcV9maWxlICptKQogCWdlbjhfcHRlX3Qgc2NyYXRjaF9wdGUgPSBnZW44X3B0ZV9lbmNvZGUo cHhfZG1hKHZtLT5zY3JhdGNoX3BhZ2UpLAogCQkJCQkJIEk5MTVfQ0FDSEVfTExDLCB0cnVlKTsK IAotCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHZtLT5kZXYpKSB7CisJaWYgKCFJU180OEJJ VF9QUEdUVChwcGd0dCkpIHsKIAkJZ2VuOF9kdW1wX3BkcCgmcHBndHQtPnBkcCwgc3RhcnQsIGxl bmd0aCwgc2NyYXRjaF9wdGUsIG0pOwogCX0gZWxzZSB7CiAJCXVpbnQ2NF90IHBtbDRlOwpAQCAt MTUwMSw3ICsxNTA3LDcgQEAgc3RhdGljIGludCBnZW44X3ByZWFsbG9jYXRlX3RvcF9sZXZlbF9w ZHBzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKICAqIHNwYWNlLgogICoKICAqLwotc3Rh dGljIGludCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQorc3Rh dGljIGludCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBpbnQg YWRkcmVzc19zcGFjZV9tb2RlKQogewogCWludCByZXQ7CiAKQEAgLTE1MTgsNyArMTUyNCw3IEBA IHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkK IAlwcGd0dC0+YmFzZS5iaW5kX3ZtYSA9IHBwZ3R0X2JpbmRfdm1hOwogCXBwZ3R0LT5kZWJ1Z19k dW1wID0gZ2VuOF9kdW1wX3BwZ3R0OwogCi0JaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0 dC0+YmFzZS5kZXYpKSB7CisJaWYgKGFkZHJlc3Nfc3BhY2VfbW9kZSA9PSA0OCkgewogCQlyZXQg PSBzZXR1cF9weChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cG1sNCk7CiAJCWlmIChyZXQpCiAJ CQlnb3RvIGZyZWVfc2NyYXRjaDsKQEAgLTE1NDUsNiArMTU1MSw4IEBAIHN0YXRpYyBpbnQgZ2Vu OF9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAkJfQogCX0KIAorCXBw Z3R0LT5hZGRyZXNzX3NwYWNlX21vZGUgPSBhZGRyZXNzX3NwYWNlX21vZGU7CisKIAlpZiAoaW50 ZWxfdmdwdV9hY3RpdmUocHBndHQtPmJhc2UuZGV2KSkKIAkJZ2VuOF9wcGd0dF9ub3RpZnlfdmd0 KHBwZ3R0LCB0cnVlKTsKIApAQCAtMjExMiwxNCArMjEyMCwxNSBAQCBzdGF0aWMgaW50IGdlbjZf cHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBpbnQgX19od19wcGd0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKK3N0YXRpYyBpbnQgX19od19wcGd0dF9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCisJCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgaW50IGFk ZHJlc3Nfc3BhY2VfbW9kZSkKIHsKIAlwcGd0dC0+YmFzZS5kZXYgPSBkZXY7CiAKIAlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPCA4KQogCQlyZXR1cm4gZ2VuNl9wcGd0dF9pbml0KHBwZ3R0KTsK IAllbHNlCi0JCXJldHVybiBnZW44X3BwZ3R0X2luaXQocHBndHQpOworCQlyZXR1cm4gZ2VuOF9w cGd0dF9pbml0KHBwZ3R0LCBhZGRyZXNzX3NwYWNlX21vZGUpOwogfQogCiBzdGF0aWMgdm9pZCBp OTE1X2FkZHJlc3Nfc3BhY2VfaW5pdChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKQEAg LTIxNTYsNyArMjE2NSw3IEBAIGludCBpOTE1X3BwZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJaW50IHJldCA9IDA7CiAKLQlyZXQg PSBfX2h3X3BwZ3R0X2luaXQoZGV2LCBwcGd0dCk7CisJcmV0ID0gX19od19wcGd0dF9pbml0KGRl diwgcHBndHQsIFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpID8gNDggOiAzMik7CiAJaWYgKHJl dCA9PSAwKSB7CiAJCWtyZWZfaW5pdCgmcHBndHQtPnJlZik7CiAJCWk5MTVfYWRkcmVzc19zcGFj ZV9pbml0KCZwcGd0dC0+YmFzZSwgZGV2X3ByaXYpOwpAQCAtMjc3OSw3ICsyNzg4LDcgQEAgc3Rh dGljIGludCBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJCWlmICghcHBndHQpCiAJCQlyZXR1cm4gLUVOT01FTTsKIAotCQlyZXQgPSBfX2h3X3BwZ3R0 X2luaXQoZGV2LCBwcGd0dCk7CisJCXJldCA9IF9faHdfcHBndHRfaW5pdChkZXYsIHBwZ3R0LCAz Mik7CiAJCWlmIChyZXQpIHsKIAkJCXBwZ3R0LT5iYXNlLmNsZWFudXAoJnBwZ3R0LT5iYXNlKTsK IAkJCWtmcmVlKHBwZ3R0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKaW5kZXggNjZh NmRhMi4uMDNlZjkyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKQEAgLTExMCw2 ICsxMTAsNyBAQCB0eXBlZGVmIHVpbnQ2NF90IGdlbjhfcHBndHRfcG1sNGVfdDsKIAogI2RlZmlu ZSBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KSAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikgP1wK IAkJCQkgR0VOOF9QTUw0RVNfUEVSX1BNTDQgOiBHRU44X0xFR0FDWV9QRFBFUykKKyNkZWZpbmUg SVNfNDhCSVRfUFBHVFQocHBndHQpCSgocHBndHQpICYmICgocHBndHQpLT5hZGRyZXNzX3NwYWNl X21vZGUgPT0gNDgpKQogCiAjZGVmaW5lIFBQQVRfVU5DQUNIRURfSU5ERVgJCShfUEFHRV9QV1Qg fCBfUEFHRV9QQ0QpCiAjZGVmaW5lIFBQQVRfQ0FDSEVEX1BERV9JTkRFWAkJMCAvKiBXQiBMTEMg Ki8KQEAgLTM3Miw2ICszNzMsOCBAQCBzdHJ1Y3QgaTkxNV9od19wcGd0dCB7CiAJCXN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5IHBkOwkJLyogR0VONi03ICovCiAJfTsKIAorCWludCBhZGRyZXNz X3NwYWNlX21vZGU7CisKIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7 CiAKIAlnZW42X3B0ZV90IF9faW9tZW0gKnBkX2FkZHI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CmluZGV4IDU5OTY4N2YuLjYyMTU4YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0z OTUsNyArMzk1LDcgQEAgc3RhdGljIGludCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKIAogCXJlZ19zdGF0ZVtDVFhfUklOR19UQUlMKzFd ID0gcnEtPnRhaWw7CiAKLQlpZiAocHBndHQgJiYgIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0 dC0+YmFzZS5kZXYpKSB7CisJaWYgKHBwZ3R0ICYmICFJU180OEJJVF9QUEdUVChwcGd0dCkpIHsK IAkJLyogVHJ1ZSAzMmIgUFBHVFQgd2l0aCBkeW5hbWljIHBhZ2UgYWxsb2NhdGlvbjogdXBkYXRl IFBEUAogCQkgKiByZWdpc3RlcnMgYW5kIHBvaW50IHRoZSB1bmFsbG9jYXRlZCBQRFBzIHRvIHNj cmF0Y2ggcGFnZS4KIAkJICogUE1MNCBpcyBhbGxvY2F0ZWQgZHVyaW5nIHBwZ3R0IGluaXQsIHNv IHRoaXMgaXMgbm90IG5lZWRlZApAQCAtMTY3NCw3ICsxNjc0LDcgQEAgc3RhdGljIGludCBnZW44 X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJICogbm90 IG5lZWRlZCBpbiA0OC1iaXQuKi8KIAlpZiAocmVxLT5jdHgtPnBwZ3R0ICYmCiAJICAgIChpbnRl bF9yaW5nX2ZsYWcocmVxLT5yaW5nKSAmIHJlcS0+Y3R4LT5wcGd0dC0+cGRfZGlydHlfcmluZ3Mp KSB7Ci0JCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHJlcS0+aTkxNSkgJiYKKwkJaWYgKCFJ U180OEJJVF9QUEdUVChyZXEtPmN0eC0+cHBndHQpICYmCiAJCSAgICAhaW50ZWxfdmdwdV9hY3Rp dmUocmVxLT5pOTE1LT5kZXYpKSB7CiAJCQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9w ZHBzKHJlcSk7CiAJCQlpZiAocmV0KQpAQCAtMjQwOCw3ICsyNDA4LDcgQEAgcG9wdWxhdGVfbHJf Y29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqY3R4X28KIAlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9QRFAwX1VEVywgR0VO OF9SSU5HX1BEUF9VRFcocmluZywgMCksIDApOwogCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwg Q1RYX1BEUDBfTERXLCBHRU44X1JJTkdfUERQX0xEVyhyaW5nLCAwKSwgMCk7CiAKLQlpZiAoVVNF U19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKKwlpZiAoSVNfNDhCSVRfUFBH VFQocHBndHQpKSB7CiAJCS8qIDY0YiBQUEdUVCAoNDhiaXQgY2Fub25pY2FsKQogCQkgKiBQRFAw X0RFU0NSSVBUT1IgY29udGFpbnMgdGhlIGJhc2UgYWRkcmVzcyB0byBQTUw0IGFuZAogCQkgKiBv dGhlciBQRFAgRGVzY3JpcHRvcnMgYXJlIGlnbm9yZWQuCi0tIAoxLjkuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==