From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 2/5] drm/i915/gtt: Read-only pages for insert_entries on bdw+ Date: Thu, 14 Jun 2018 12:59:39 +0100 Message-ID: <20180614115942.27773-2-chris@chris-wilson.co.uk> References: <20180614115942.27773-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 594CE6E745 for ; Thu, 14 Jun 2018 12:00:03 +0000 (UTC) In-Reply-To: <20180614115942.27773-1-chris@chris-wilson.co.uk> 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 RnJvbTogSm9uIEJsb29tZmllbGQgPGpvbi5ibG9vbWZpZWxkQGludGVsLmNvbT4KCkhvb2sgdXAg dGhlIGZsYWdzIHRvIGFsbG93IHJlYWQtb25seSBwcEdUVCBtYXBwaW5ncyBmb3IgZ2VuOCsKCnYy OiBJbmNsdWRlIGEgc2VsZnRlc3QgdG8gY2hlY2sgdGhhdCB3cml0ZXMgdG8gYSByZWFkb25seSBQ VEUgYXJlCmRyb3BwZWQKClNpZ25lZC1vZmYtYnk6IEpvbiBCbG9vbWZpZWxkIDxqb24uYmxvb21m aWVsZEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXgu aW50ZWwuY29tPgpDYzogTWF0dGhldyBBdWxkIDxtYXR0aGV3LndpbGxpYW0uYXVsZEBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5p bnRlbC5jb20+ICN2MQotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAg ICAgICAgICB8ICA0NSArKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o ICAgICAgICAgICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jICAgICAgIHwgIDExICstCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9j b250ZXh0LmMgfCAxMzggKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE4MiBp bnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCmluZGV4IGYzMDc4NjFjMzM3NC4uY2E4NDYxNmZiZTI0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBpbnQgcHBndHRfYmluZF92 bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJCQlyZXR1cm4gZXJyOwogCX0KIAotCS8qIEN1cnJl bnRseSBhcHBsaWNhYmxlIG9ubHkgdG8gVkxWICovCisJLyogQXBwbGljYWJsZSB0byBWTFYsIGFu ZCBnZW44KyAqLwogCXB0ZV9mbGFncyA9IDA7CiAJaWYgKHZtYS0+b2JqLT5ndF9ybykKIAkJcHRl X2ZsYWdzIHw9IFBURV9SRUFEX09OTFk7CkBAIC05NTIsMTAgKzk1MiwxMSBAQCBnZW44X3BwZ3R0 X2luc2VydF9wdGVfZW50cmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCiAJCQkgICAg ICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAsCiAJCQkgICAgICBzdHJ1 Y3Qgc2d0X2RtYSAqaXRlciwKIAkJCSAgICAgIHN0cnVjdCBnZW44X2luc2VydF9wdGUgKmlkeCwK LQkJCSAgICAgIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCkKKwkJCSAgICAgIGVu dW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKKwkJCSAgICAgIHUzMiBmbGFncykKIHsK IAlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQ7Ci0JY29uc3QgZ2VuOF9wdGVfdCBwdGVf ZW5jb2RlID0gZ2VuOF9wdGVfZW5jb2RlKDAsIGNhY2hlX2xldmVsLCAwKTsKKwljb25zdCBnZW44 X3B0ZV90IHB0ZV9lbmNvZGUgPSBnZW44X3B0ZV9lbmNvZGUoMCwgY2FjaGVfbGV2ZWwsIGZsYWdz KTsKIAlnZW44X3B0ZV90ICp2YWRkcjsKIAlib29sIHJldDsKIApAQCAtMTAwNiwxNCArMTAwNywx NCBAQCBnZW44X3BwZ3R0X2luc2VydF9wdGVfZW50cmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQsCiBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2luc2VydF8zbHZsKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAogCQkJCSAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJCSAgIGVu dW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKLQkJCQkgICB1MzIgdW51c2VkKQorCQkJ CSAgIHUzMiBmbGFncykKIHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBpOTE1X3Zt X3RvX3BwZ3R0KHZtKTsKIAlzdHJ1Y3Qgc2d0X2RtYSBpdGVyID0gc2d0X2RtYSh2bWEpOwogCXN0 cnVjdCBnZW44X2luc2VydF9wdGUgaWR4ID0gZ2VuOF9pbnNlcnRfcHRlKHZtYS0+bm9kZS5zdGFy dCk7CiAKIAlnZW44X3BwZ3R0X2luc2VydF9wdGVfZW50cmllcyhwcGd0dCwgJnBwZ3R0LT5wZHAs ICZpdGVyLCAmaWR4LAotCQkJCSAgICAgIGNhY2hlX2xldmVsKTsKKwkJCQkgICAgICBjYWNoZV9s ZXZlbCwgZmxhZ3MpOwogCiAJdm1hLT5wYWdlX3NpemVzLmd0dCA9IEk5MTVfR1RUX1BBR0VfU0la RTsKIH0KQEAgLTEwMjEsOSArMTAyMiwxMCBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2luc2Vy dF8zbHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogc3RhdGljIHZvaWQgZ2VuOF9w cGd0dF9pbnNlcnRfaHVnZV9lbnRyaWVzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJCQkgICBz dHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICoqcGRwcywKIAkJCQkJICAgc3RydWN0 IHNndF9kbWEgKml0ZXIsCi0JCQkJCSAgIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZl bCkKKwkJCQkJICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAorCQkJCQkgICB1 MzIgZmxhZ3MpCiB7Ci0JY29uc3QgZ2VuOF9wdGVfdCBwdGVfZW5jb2RlID0gZ2VuOF9wdGVfZW5j b2RlKDAsIGNhY2hlX2xldmVsLCAwKTsKKwljb25zdCBnZW44X3B0ZV90IHB0ZV9lbmNvZGUgPSBn ZW44X3B0ZV9lbmNvZGUoMCwgY2FjaGVfbGV2ZWwsIGZsYWdzKTsKIAl1NjQgc3RhcnQgPSB2bWEt Pm5vZGUuc3RhcnQ7CiAJZG1hX2FkZHJfdCByZW0gPSBpdGVyLT5zZy0+bGVuZ3RoOwogCkBAIC0x MTM5LDE5ICsxMTQxLDIxIEBAIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0X2h1Z2VfZW50 cmllcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIHN0YXRpYyB2b2lkIGdlbjhfcHBndHRfaW5zZXJ0 XzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJICAgc3RydWN0IGk5MTVf dm1hICp2bWEsCiAJCQkJICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAotCQkJ CSAgIHUzMiB1bnVzZWQpCisJCQkJICAgdTMyIGZsYWdzKQogewogCXN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm0pOwogCXN0cnVjdCBzZ3RfZG1hIGl0ZXIg PSBzZ3RfZG1hKHZtYSk7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqKnBk cHMgPSBwcGd0dC0+cG1sNC5wZHBzOwogCiAJaWYgKHZtYS0+cGFnZV9zaXplcy5zZyA+IEk5MTVf R1RUX1BBR0VfU0laRSkgewotCQlnZW44X3BwZ3R0X2luc2VydF9odWdlX2VudHJpZXModm1hLCBw ZHBzLCAmaXRlciwgY2FjaGVfbGV2ZWwpOworCQlnZW44X3BwZ3R0X2luc2VydF9odWdlX2VudHJp ZXModm1hLCBwZHBzLCAmaXRlciwgY2FjaGVfbGV2ZWwsCisJCQkJCSAgICAgICBmbGFncyk7CiAJ fSBlbHNlIHsKIAkJc3RydWN0IGdlbjhfaW5zZXJ0X3B0ZSBpZHggPSBnZW44X2luc2VydF9wdGUo dm1hLT5ub2RlLnN0YXJ0KTsKIAogCQl3aGlsZSAoZ2VuOF9wcGd0dF9pbnNlcnRfcHRlX2VudHJp ZXMocHBndHQsIHBkcHNbaWR4LnBtbDRlKytdLAotCQkJCQkJICAgICAmaXRlciwgJmlkeCwgY2Fj aGVfbGV2ZWwpKQorCQkJCQkJICAgICAmaXRlciwgJmlkeCwgY2FjaGVfbGV2ZWwsCisJCQkJCQkg ICAgIGZsYWdzKSkKIAkJCUdFTV9CVUdfT04oaWR4LnBtbDRlID49IEdFTjhfUE1MNEVTX1BFUl9Q TUw0KTsKIAogCQl2bWEtPnBhZ2Vfc2l6ZXMuZ3R0ID0gSTkxNV9HVFRfUEFHRV9TSVpFOwpAQCAt MTU2NCw2ICsxNTY4LDkgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpnZW44X3BwZ3R0 X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAkJMVVMTCA8PCA0OCA6CiAJ CTFVTEwgPDwgMzI7CiAKKwkvKiBGcm9tIGJkdywgdGhlcmUgaXMgc3VwcG9ydCBmb3IgcmVhZC1v bmx5IHBhZ2VzIGluIHRoZSBQUEdUVCAqLworCXBwZ3R0LT52bS5oYXNfcmVhZF9vbmx5ID0gdHJ1 ZTsKKwogCS8qIFRoZXJlIGFyZSBvbmx5IGZldyBleGNlcHRpb25zIGZvciBnZW4gPj02LiBjaHYg YW5kIGJ4dC4KIAkgKiBBbmQgd2UgYXJlIG5vdCBzdXJlIGFib3V0IHRoZSBsYXR0ZXIgc28gcGxh eSBzYWZlIGZvciBub3cuCiAJICovCkBAIC0yNDAxLDcgKzI0MDgsNyBAQCBzdGF0aWMgdm9pZCBn ZW44X2dndHRfaW5zZXJ0X3BhZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiBzdGF0 aWMgdm9pZCBnZW44X2dndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCQkJICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAkJCQkgICAgIGVudW0gaTkx NV9jYWNoZV9sZXZlbCBsZXZlbCwKLQkJCQkgICAgIHUzMiB1bnVzZWQpCisJCQkJICAgICB1MzIg ZmxhZ3MpCiB7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9IGk5MTVfdm1fdG9fZ2d0dCh2bSk7 CiAJc3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwpAQCAtMjQwOSw2ICsyNDE2LDkgQEAgc3RhdGlj IHZvaWQgZ2VuOF9nZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAogCWNvbnN0IGdlbjhfcHRlX3QgcHRlX2VuY29kZSA9IGdlbjhfcHRlX2VuY29kZSgwLCBs ZXZlbCwgMCk7CiAJZG1hX2FkZHJfdCBhZGRyOwogCisJLyogVGhlIEdUVCBkb2VzIG5vdCBzdXBw b3J0IHJlYWQtb25seSBtYXBwaW5ncyAqLworCUdFTV9CVUdfT04oZmxhZ3MgJiBQVEVfUkVBRF9P TkxZKTsKKwogCWd0dF9lbnRyaWVzID0gKGdlbjhfcHRlX3QgX19pb21lbSAqKWdndHQtPmdzbTsK IAlndHRfZW50cmllcyArPSB2bWEtPm5vZGUuc3RhcnQgPj4gUEFHRV9TSElGVDsKIAlmb3JfZWFj aF9zZ3RfZG1hKGFkZHIsIHNndF9pdGVyLCB2bWEtPnBhZ2VzKQpAQCAtMjUzNSwxMyArMjU0NSwx NCBAQCBzdHJ1Y3QgaW5zZXJ0X2VudHJpZXMgewogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWVudW0gaTkxNV9jYWNoZV9sZXZlbCBsZXZl bDsKKwl1MzIgZmxhZ3M7CiB9OwogCiBzdGF0aWMgaW50IGJ4dF92dGRfZ2d0dF9pbnNlcnRfZW50 cmllc19fY2Iodm9pZCAqX2FyZykKIHsKIAlzdHJ1Y3QgaW5zZXJ0X2VudHJpZXMgKmFyZyA9IF9h cmc7CiAKLQlnZW44X2dndHRfaW5zZXJ0X2VudHJpZXMoYXJnLT52bSwgYXJnLT52bWEsIGFyZy0+ bGV2ZWwsIDApOworCWdlbjhfZ2d0dF9pbnNlcnRfZW50cmllcyhhcmctPnZtLCBhcmctPnZtYSwg YXJnLT5sZXZlbCwgYXJnLT5mbGFncyk7CiAJYnh0X3Z0ZF9nZ3R0X3dhKGFyZy0+dm0pOwogCiAJ cmV0dXJuIDA7CkBAIC0yNTUwLDkgKzI1NjEsOSBAQCBzdGF0aWMgaW50IGJ4dF92dGRfZ2d0dF9p bnNlcnRfZW50cmllc19fY2Iodm9pZCAqX2FyZykKIHN0YXRpYyB2b2lkIGJ4dF92dGRfZ2d0dF9p bnNlcnRfZW50cmllc19fQktMKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJCQkg ICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJCQkgICAgIGVudW0gaTkxNV9jYWNoZV9sZXZl bCBsZXZlbCwKLQkJCQkJICAgICB1MzIgdW51c2VkKQorCQkJCQkgICAgIHUzMiBmbGFncykKIHsK LQlzdHJ1Y3QgaW5zZXJ0X2VudHJpZXMgYXJnID0geyB2bSwgdm1hLCBsZXZlbCB9OworCXN0cnVj dCBpbnNlcnRfZW50cmllcyBhcmcgPSB7IHZtLCB2bWEsIGxldmVsLCBmbGFncyB9OwogCiAJc3Rv cF9tYWNoaW5lKGJ4dF92dGRfZ2d0dF9pbnNlcnRfZW50cmllc19fY2IsICZhcmcsIE5VTEwpOwog fQpAQCAtMjY0Myw3ICsyNjU0LDcgQEAgc3RhdGljIGludCBnZ3R0X2JpbmRfdm1hKHN0cnVjdCBp OTE1X3ZtYSAqdm1hLAogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9i ajsKIAl1MzIgcHRlX2ZsYWdzOwogCi0JLyogQ3VycmVudGx5IGFwcGxpY2FibGUgb25seSB0byBW TFYgKi8KKwkvKiBBcHBsaWNhYmxlIHRvIFZMViAoZ2VuOCsgZG8gbm90IHN1cHBvcnQgUk8gaW4g dGhlIEdHVFQpICovCiAJcHRlX2ZsYWdzID0gMDsKIAlpZiAob2JqLT5ndF9ybykKIAkJcHRlX2Zs YWdzIHw9IFBURV9SRUFEX09OTFk7CkBAIC0zNTI1LDYgKzM1MzYsMTAgQEAgaW50IGk5MTVfZ2d0 dF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKi8KIAltdXRl eF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJaTkxNV9hZGRyZXNzX3NwYWNl X2luaXQoJmdndHQtPnZtLCBkZXZfcHJpdiwgIltnbG9iYWxdIik7CisKKwkvKiBPbmx5IFZMViBz dXBwb3J0cyByZWFkLW9ubHkgR0dUVCBtYXBwaW5ncyAqLworCWdndHQtPnZtLmhhc19yZWFkX29u bHkgPSBJU19WQUxMRVlWSUVXKGRldl9wcml2KTsKKwogCWlmICghSEFTX0xMQyhkZXZfcHJpdikg JiYgIVVTRVNfUFBHVFQoZGV2X3ByaXYpKQogCQlnZ3R0LT52bS5tbS5jb2xvcl9hZGp1c3QgPSBp OTE1X2d0dF9jb2xvcl9hZGp1c3Q7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDRmNmY0NTk1Yzll OS4uOWRlMzdkY2FhNWFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtMzI1 LDcgKzMyNSwxMiBAQCBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIHsKIAlzdHJ1Y3QgbGlzdF9o ZWFkIHVuYm91bmRfbGlzdDsKIAogCXN0cnVjdCBwYWdldmVjIGZyZWVfcGFnZXM7Ci0JYm9vbCBw dF9rbWFwX3djOworCisJLyogU29tZSBzeXN0ZW1zIHJlcXVpcmUgdW5jYWNoZWQgdXBkYXRlcyBv ZiB0aGUgcGFnZSBkaXJlY3RvcmllcyAqLworCWJvb2wgcHRfa21hcF93YzoxOworCisJLyogU29t ZSBzeXN0ZW1zIHN1cHBvcnQgcmVhZC1vbmx5IG1hcHBpbmdzIGZvciBHR1RUIGFuZC9vciBQUEdU VCAqLworCWJvb2wgaGFzX3JlYWRfb25seToxOwogCiAJLyogRklYTUU6IE5lZWQgYSBtb3JlIGdl bmVyaWMgcmV0dXJuIHR5cGUgKi8KIAlnZW42X3B0ZV90ICgqcHRlX2VuY29kZSkoZG1hX2FkZHJf dCBhZGRyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGVmM2M3 NjQyNTg0My4uODg1M2E1ZTZkNDIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCkBAIC0xMDk3LDYgKzEwOTcsNyBAQCB2b2lkIGludGVsX3JpbmdfdW5waW4oc3RydWN0 IGludGVsX3JpbmcgKnJpbmcpCiBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICoKIGludGVsX3Jpbmdf Y3JlYXRlX3ZtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBzaXplKQog eworCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmRldl9wcml2LT5nZ3R0LnZtOwog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7 CiAKQEAgLTExMDYsMTAgKzExMDcsMTQgQEAgaW50ZWxfcmluZ19jcmVhdGVfdm1hKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHNpemUpCiAJaWYgKElTX0VSUihvYmopKQog CQlyZXR1cm4gRVJSX0NBU1Qob2JqKTsKIAotCS8qIG1hcmsgcmluZyBidWZmZXJzIGFzIHJlYWQt b25seSBmcm9tIEdQVSBzaWRlIGJ5IGRlZmF1bHQgKi8KLQlvYmotPmd0X3JvID0gMTsKKwkvKgor CSAqIE1hcmsgcmluZyBidWZmZXJzIGFzIHJlYWQtb25seSBmcm9tIEdQVSBzaWRlIChzbyBubyBz dHJheSBvdmVyd3JpdGVzKQorCSAqIGlmIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0ncyBHR1RU LgorCSAqLworCWlmICh2bS0+aGFzX3JlYWRfb25seSkKKwkJb2JqLT5ndF9ybyA9IDE7CiAKLQl2 bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZkZXZfcHJpdi0+Z2d0dC52bSwgTlVMTCk7CisJ dm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2bSwgTlVMTCk7CiAJaWYgKElTX0VSUih2bWEp KQogCQlnb3RvIGVycjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb250ZXh0LmMKaW5kZXggODM2ZjFhZjhiODMzLi41YmFlNTIwNjg5MjYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwpA QCAtMjMsNiArMjMsNyBAQAogICovCiAKICNpbmNsdWRlICIuLi9pOTE1X3NlbGZ0ZXN0LmgiCisj aW5jbHVkZSAiaTkxNV9yYW5kb20uaCIKICNpbmNsdWRlICJpZ3RfZmx1c2hfdGVzdC5oIgogCiAj aW5jbHVkZSAibW9ja19kcm0uaCIKQEAgLTI2Niw2ICsyNjcsNDEgQEAgc3RhdGljIGludCBjcHVf Y2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IG1heCkK IAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgaW50IHJvX2NoZWNrKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBtYXgpCit7CisJdW5zaWduZWQgaW50IG4sIG0s IG5lZWRzX2ZsdXNoOworCWludCBlcnI7CisKKwllcnIgPSBpOTE1X2dlbV9vYmpfcHJlcGFyZV9z aG1lbV9yZWFkKG9iaiwgJm5lZWRzX2ZsdXNoKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOwor CisJZm9yIChuID0gMDsgbiA8IHJlYWxfcGFnZV9jb3VudChvYmopOyBuKyspIHsKKwkJdTMyICpt YXA7CisKKwkJbWFwID0ga21hcF9hdG9taWMoaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwg bikpOworCQlpZiAobmVlZHNfZmx1c2ggJiBDTEZMVVNIX0JFRk9SRSkKKwkJCWRybV9jbGZsdXNo X3ZpcnRfcmFuZ2UobWFwLCBQQUdFX1NJWkUpOworCisJCWZvciAobSA9IDA7IG0gPCBEV19QRVJf UEFHRTsgbSsrKSB7CisJCQlpZiAobWFwW21dICE9IDB4ZGVhZGJlZWYpIHsKKwkJCQlwcl9lcnIo IkludmFsaWQgdmFsdWUgKG92ZXJ3cml0dGVuKSBhdCBwYWdlICVkLCBvZmZzZXQgJWQ6IGZvdW5k ICUwOHggZXhwZWN0ZWQgJTA4eFxuIiwKKwkJCQkgICAgICAgbiwgbSwgbWFwW21dLCAweGRlYWRi ZWVmKTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJCWdvdG8gb3V0X3VubWFwOworCQkJfQorCQl9 CisKK291dF91bm1hcDoKKwkJa3VubWFwX2F0b21pYyhtYXApOworCQlpZiAoZXJyKQorCQkJYnJl YWs7CisJfQorCisJaTkxNV9nZW1fb2JqX2ZpbmlzaF9zaG1lbV9hY2Nlc3Mob2JqKTsKKwlyZXR1 cm4gZXJyOworfQorCiBzdGF0aWMgaW50IGZpbGVfYWRkX29iamVjdChzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUsCiAJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKQEAgLTQy MSw2ICs0NTcsMTA3IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKIAlyZXR1 cm4gZXJyOwogfQogCitzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOworCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBOVUxMOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKKwlJOTE1X1JO RF9TVEFURShwcm5nKTsKKwlJR1RfVElNRU9VVChlbmRfdGltZSk7CisJTElTVF9IRUFEKG9iamVj dHMpOworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0OworCXVuc2lnbmVkIGxvbmcgbmR3b3JkcywgZHc7CisJaW50IGVyciA9IC1FTk9E RVY7CisKKwkvKiBDcmVhdGUgYSBmZXcgZGlmZmVyZW50IGNvbnRleHRzICh3aXRoIGRpZmZlcmVu dCBtbSkgYW5kIHdyaXRlCisJICogdGhyb3VnaCBlYWNoIGN0eC9tbSB1c2luZyB0aGUgR1BVIG1h a2luZyBzdXJlIHRob3NlIHdyaXRlcyBlbmQKKwkgKiB1cCBpbiB0aGUgZXhwZWN0ZWQgcGFnZXMg b2Ygb3VyIG9iai4KKwkgKi8KKworCWZpbGUgPSBtb2NrX2ZpbGUoaTkxNSk7CisJaWYgKElTX0VS UihmaWxlKSkKKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisKKwltdXRleF9sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKKworCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUs IGZpbGUtPmRyaXZlcl9wcml2KTsKKwlpZiAoSVNfRVJSKGN0eCkpIHsKKwkJZXJyID0gUFRSX0VS UihjdHgpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJcHBndHQgPSBjdHgtPnBwZ3R0ID86 IGk5MTUtPm1tLmFsaWFzaW5nX3BwZ3R0OworCWlmICghcHBndHQgfHwgIXBwZ3R0LT52bS5oYXNf cmVhZF9vbmx5KSB7CisJCWVyciA9IDA7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKKwluZHdv cmRzID0gMDsKKwlkdyA9IDA7CisJd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIGVuZF90aW1l KSkgeworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJCXVuc2lnbmVkIGludCBp ZDsKKworCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQkJaWYgKCFpbnRl bF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpCisJCQkJY29udGludWU7CisKKwkJCWlm ICghb2JqKSB7CisJCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmlsZSwgJm9iamVj dHMpOworCQkJCWlmIChJU19FUlIob2JqKSkgeworCQkJCQllcnIgPSBQVFJfRVJSKG9iaik7CisJ CQkJCWdvdG8gb3V0X3VubG9jazsKKwkJCQl9CisKKwkJCQlvYmotPmd0X3JvID0gcHJhbmRvbV91 MzJfc3RhdGUoJnBybmcpOworCQkJfQorCisJCQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsK KwkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsKKwkJCWludGVsX3J1bnRp bWVfcG1fcHV0KGk5MTUpOworCQkJaWYgKGVycikgeworCQkJCXByX2VycigiRmFpbGVkIHRvIGZp bGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRoIGdwdSAoJXMpIGluIGN0eCAldSBbZnVsbC1wcGd0 dD8gJXNdLCBlcnI9JWRcbiIsCisJCQkJICAgICAgIG5kd29yZHMsIGR3LCBtYXhfZHdvcmRzKG9i aiksCisJCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4LT5od19pZCwKKwkJCQkgICAgICAgeWVz bm8oISFjdHgtPnBwZ3R0KSwgZXJyKTsKKwkJCQlnb3RvIG91dF91bmxvY2s7CisJCQl9CisKKwkJ CWlmICgrK2R3ID09IG1heF9kd29yZHMob2JqKSkgeworCQkJCW9iaiA9IE5VTEw7CisJCQkJZHcg PSAwOworCQkJfQorCQkJbmR3b3JkcysrOworCQl9CisJfQorCXByX2luZm8oIlN1Ym1pdHRlZCAl bHUgZHdvcmRzIChhY3Jvc3MgJXUgZW5naW5lcylcbiIsCisJICAgICAgIAluZHdvcmRzLCBJTlRF TF9JTkZPKGk5MTUpLT5udW1fcmluZ3MpOworCisJZHcgPSAwOworCWxpc3RfZm9yX2VhY2hfZW50 cnkob2JqLCAmb2JqZWN0cywgc3RfbGluaykgeworCQl1bnNpZ25lZCBpbnQgcmVtID0KKwkJCW1p bl90KHVuc2lnbmVkIGludCwgbmR3b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikpOworCisJCWlm IChvYmotPmd0X3JvKQorCQkJZXJyID0gcm9fY2hlY2sob2JqLCByZW0pOworCQllbHNlCisJCQll cnIgPSBjcHVfY2hlY2sob2JqLCByZW0pOworCQlpZiAoZXJyKQorCQkJYnJlYWs7CisKKwkJZHcg Kz0gcmVtOworCX0KKworb3V0X3VubG9jazoKKwlpZiAoaWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkx NV9XQUlUX0xPQ0tFRCkpCisJCWVyciA9IC1FSU87CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKKworCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOworCXJldHVybiBl cnI7Cit9CisKIHN0YXRpYyBfX21heWJlX3VudXNlZCBjb25zdCBjaGFyICoKIF9fZW5naW5lX25h bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBlbmdpbmVzKQog ewpAQCAtNTk1LDYgKzczMiw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2xpdmVfc2VsZnRlc3Rz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewogCQlTVUJURVNUKGlndF9zd2l0Y2hfdG9fa2VybmVs X2NvbnRleHQpLAogCQlTVUJURVNUKGlndF9jdHhfZXhlYyksCisJCVNVQlRFU1QoaWd0X2N0eF9y ZWFkb25seSksCiAJfTsKIAlib29sIGZha2VfYWxpYXMgPSBmYWxzZTsKIAlpbnQgZXJyOwotLSAK Mi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK