From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH v4 1/3] drm/i915: simplify allocation of driver-internal requests Date: Tue, 19 Jan 2016 19:02:53 +0000 Message-ID: <1453230175-19330-2-git-send-email-david.s.gordon@intel.com> References: <1453230175-19330-1-git-send-email-david.s.gordon@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 9F8CD6E0B1 for ; Tue, 19 Jan 2016 11:03:00 -0800 (PST) In-Reply-To: <1453230175-19330-1-git-send-email-david.s.gordon@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 VGhlcmUgYXJlIGEgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSB0aGUgZHJpdmVyIG5lZWRzIGEgcmVx dWVzdCwgYnV0IGlzbid0Cndvcmtpbmcgb24gYmVoYWxmIG9mIGFueSBzcGVjaWZpYyB1c2VyIG9y IGluIGEgc3BlY2lmaWMgY29udGV4dC4gQXQKcHJlc2VudCwgd2UgYXNzb2NpYXRlIHRoZW0gd2l0 aCB0aGUgcGVyLWVuZ2luZSBkZWZhdWx0IGNvbnRleHQuIEEgZnV0dXJlCnBhdGNoIHdpbGwgYWJv bGlzaCB0aG9zZSBwZXItZW5naW5lIGNvbnRleHQgcG9pbnRlcnM7IGJ1dCB3ZSBjYW4gYWxyZWFk eQplbGltaW5hdGUgYSBsb3Qgb2YgdGhlIHJlZmVyZW5jZXMgdG8gdGhlbSwganVzdCBieSBtYWtp bmcgdGhlIGFsbG9jYXRvcgphbGxvdyBOVUxMIGFzIGEgc2hvcnRoYW5kIGZvciAiYW4gYXBwcm9w cmlhdGUgY29udGV4dCBmb3IgdGhpcyByaW5nIiwKd2hpY2ggd2lsbCBtZWFuIHRoYXQgdGhlIGNh bGxlcnMgZG9uJ3QgbmVlZCB0byBrbm93IGFueXRoaW5nIGFib3V0IGhvdwp0aGUgImFwcHJvcHJp YXRlIGNvbnRleHQiIGlzIGZvdW5kIChlLmcuIHBlci1yaW5nIHZzIHBlci1kZXZpY2UsIGV0Yyku CgpTbyB0aGlzIHBhdGNoIHJlbmFtZXMgdGhlIGV4aXN0aW5nIGk5MTVfZ2VtX3JlcXVlc3RfYWxs b2MoKSwgYW5kIG1ha2VzCml0IGxvY2FsIChzdGF0aWMgaW5saW5lKSwgYW5kIHJlcGxhY2VzIGl0 IHdpdGggYSB3cmFwcGVyIHRoYXQgcHJvdmlkZXMKYSBkZWZhdWx0IGlmIHRoZSBjb250ZXh0IGlz IE5VTEwsIGFuZCBhbHNvIGhhcyBhIG5pY2VyIGNhbGxpbmcKY29udmVudGlvbiAoZG9lc24ndCBy ZXF1aXJlIGEgcG9pbnRlciB0byBhbiBvdXRwdXQgcGFyYW1ldGVyKS4gVGhlbiB3ZQpjaGFuZ2Ug YWxsIGNhbGxlcnMgdG8gdXNlIHRoZSBuZXcgY29udmVudGlvbjoKT0xEOgoJZXJyID0gaTkxNV9n ZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCB1c2VyX2N0eCwgJnJlcSk7CglpZiAoZXJyKSAuLi4KTkVX OgoJcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCB1c2VyX2N0eCk7CglpZiAoSVNf RVJSKHJlcSkpIC4uLgpPTEQ6CgllcnIgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJp bmctPmRlZmF1bHRfY29udGV4dCwgJnJlcSk7CglpZiAoZXJyKSAuLi4KTkVXOgoJcmVxID0gaTkx NV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBOVUxMKTsKCWlmIChJU19FUlIocmVxKSkgLi4uCgp2 NDoJUmViYXNlZAoKU2lnbmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGlu dGVsLmNvbT4KUmV2aWV3ZWQtYnk6IE5pY2sgSG9hdGggPG5pY2hvbGFzLmhvYXRoQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgNiAr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCA1NSArKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYyB8IDE0ICsrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgICAgICAgfCAgNiArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YyAgICAgICAgICAgfCAgOSArKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zlcmxh eS5jICAgICAgIHwgMjQgKysrKysrLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRp b25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBhZjMw MTQ4Li5kZmViZjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIyNzksOSArMjI3OSw5 IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7CiAKIH07CiAKLWludCBpOTE1X2dlbV9y ZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCi0JCQkgICBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY3R4LAotCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoq cmVxX291dCk7CitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKiBfX211c3RfY2hlY2sKK2k5 MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkg ICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7CiB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rf Y2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKIHZvaWQgaTkxNV9nZW1f cmVxdWVzdF9mcmVlKHN0cnVjdCBrcmVmICpyZXFfcmVmKTsKIGludCBpOTE1X2dlbV9yZXF1ZXN0 X2FkZF90b19jbGllbnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwppbmRleCA2YjAxMDJkLi44ZTcxNmI2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKQEAgLTI2OTAsOSArMjY5MCwxMCBAQCB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJlZShz dHJ1Y3Qga3JlZiAqcmVxX3JlZikKIAlrbWVtX2NhY2hlX2ZyZWUocmVxLT5pOTE1LT5yZXF1ZXN0 cywgcmVxKTsKIH0KIAotaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKLQkJCSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCi0JCQkgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipyZXFfb3V0KQorc3RhdGljIGlubGluZSBpbnQK K19faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAor CQkJIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCisJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICoqcmVxX291dCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHJpbmctPmRldik7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7 CkBAIC0yNzU1LDYgKzI3NTYsMzEgQEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAlyZXR1cm4gcmV0OwogfQogCisvKioKKyAqIGk5MTVf Z2VtX3JlcXVlc3RfYWxsb2MgLSBhbGxvY2F0ZSBhIHJlcXVlc3Qgc3RydWN0dXJlCisgKgorICog QGVuZ2luZTogZW5naW5lIHRoYXQgd2Ugd2lzaCB0byBpc3N1ZSB0aGUgcmVxdWVzdCBvbi4KKyAq IEBjdHg6IGNvbnRleHQgdGhhdCB0aGUgcmVxdWVzdCB3aWxsIGJlIGFzc29jaWF0ZWQgd2l0aC4K KyAqICAgICAgIFRoaXMgY2FuIGJlIE5VTEwgaWYgdGhlIHJlcXVlc3QgaXMgbm90IGRpcmVjdGx5 IHJlbGF0ZWQgdG8KKyAqICAgICAgIGFueSBzcGVjaWZpYyB1c2VyIGNvbnRleHQsIGluIHdoaWNo IGNhc2UgdGhpcyBmdW5jdGlvbiB3aWxsCisgKiAgICAgICBjaG9vc2UgYW4gYXBwcm9wcmlhdGUg Y29udGV4dCB0byB1c2UuCisgKgorICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRl ZCByZXF1ZXN0IGlmIHN1Y2Nlc3NmdWwsCisgKiBvciBhbiBlcnJvciBjb2RlIGlmIG5vdC4KKyAq Lworc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKK2k5MTVfZ2VtX3JlcXVlc3RfYWxsb2Mo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkgICAgICAgc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKKwlpbnQg ZXJyOworCisJaWYgKGN0eCA9PSBOVUxMKQorCQljdHggPSBlbmdpbmUtPmRlZmF1bHRfY29udGV4 dDsKKwllcnIgPSBfX2k5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgsICZyZXEpOwor CXJldHVybiBlcnIgPyBFUlJfUFRSKGVycikgOiByZXE7Cit9CisKIHZvaWQgaTkxNV9nZW1fcmVx dWVzdF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJaW50ZWxf cmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmVxLT5yaW5nYnVmKTsKQEAgLTMxNzIsOSArMzE5 OCwxMyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCQly ZXR1cm4gMDsKIAogCQlpZiAoKnRvX3JlcSA9PSBOVUxMKSB7Ci0JCQlyZXQgPSBpOTE1X2dlbV9y ZXF1ZXN0X2FsbG9jKHRvLCB0by0+ZGVmYXVsdF9jb250ZXh0LCB0b19yZXEpOwotCQkJaWYgKHJl dCkKLQkJCQlyZXR1cm4gcmV0OworCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7 CisKKwkJCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2ModG8sIE5VTEwpOworCQkJaWYgKElT X0VSUihyZXEpKQorCQkJCXJldHVybiBQVFJfRVJSKHJlcSk7CisKKwkJCSp0b19yZXEgPSByZXE7 CiAJCX0KIAogCQl0cmFjZV9pOTE1X2dlbV9yaW5nX3N5bmNfdG8oKnRvX3JlcSwgZnJvbSwgZnJv bV9yZXEpOwpAQCAtMzM3NCw5ICszNDA0LDkgQEAgaW50IGk5MTVfZ3B1X2lkbGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKIAkJCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwogCi0JCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0 X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1bHRfY29udGV4dCwgJnJlcSk7Ci0JCQlpZiAocmV0KQot CQkJCXJldHVybiByZXQ7CisJCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIE5V TEwpOworCQkJaWYgKElTX0VSUihyZXEpKQorCQkJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKIAkJ CXJldCA9IGk5MTVfc3dpdGNoX2NvbnRleHQocmVxKTsKIAkJCWlmIChyZXQpIHsKQEAgLTQ4NzEs MTAgKzQ5MDEsOSBAQCBpbnQgaTkxNV9nZW1faW5pdF9yaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKIAkJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXE7CiAKLQkJV0FSTl9PTighcmluZy0+ZGVmYXVsdF9jb250ZXh0 KTsKLQotCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1bHRf Y29udGV4dCwgJnJlcSk7Ci0JCWlmIChyZXQpIHsKKwkJcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9h bGxvYyhyaW5nLCBOVUxMKTsKKwkJaWYgKElTX0VSUihyZXEpKSB7CisJCQlyZXQgPSBQVFJfRVJS KHJlcSk7CiAJCQlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKIAkJCWdvdG8gb3V0 OwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXgg NGVkZjFjMC4uZGMzMjAxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwpAQCAtMTM4MSw2ICsxMzgxLDcgQEAgc3RhdGljIGludCBnZW44X2Rpc3BhdGNoX2Jz ZF9yaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiAqZXhlYykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxID0gTlVMTDsKIAlzdHJ1Y3QgZWJfdm1hcyAqZWI7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmJhdGNoX29iajsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBzaGFk b3dfZXhlY19lbnRyeTsKQEAgLTE2MDIsMTEgKzE2MDMsMTMgQEAgc3RhdGljIGludCBnZW44X2Rp c3BhdGNoX2JzZF9yaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXBhcmFtcy0+YmF0Y2hf b2JqX3ZtX29mZnNldCA9IGk5MTVfZ2VtX29ial9vZmZzZXQoYmF0Y2hfb2JqLCB2bSk7CiAKIAkv KiBBbGxvY2F0ZSBhIHJlcXVlc3QgZm9yIHRoaXMgYmF0Y2ggYnVmZmVyIG5pY2UgYW5kIGVhcmx5 LiAqLwotCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgY3R4LCAmcGFyYW1zLT5y ZXF1ZXN0KTsKLQlpZiAocmV0KQorCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywg Y3R4KTsKKwlpZiAoSVNfRVJSKHJlcSkpIHsKKwkJcmV0ID0gUFRSX0VSUihyZXEpOwogCQlnb3Rv IGVycl9iYXRjaF91bnBpbjsKKwl9CiAKLQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FkZF90b19j bGllbnQocGFyYW1zLT5yZXF1ZXN0LCBmaWxlKTsKKwlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2Fk ZF90b19jbGllbnQocmVxLCBmaWxlKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9iYXRjaF91bnBp bjsKIApAQCAtMTYyMiw2ICsxNjI1LDcgQEAgc3RhdGljIGludCBnZW44X2Rpc3BhdGNoX2JzZF9y aW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcGFyYW1zLT5kaXNwYXRjaF9mbGFncyAgICAg ICAgICA9IGRpc3BhdGNoX2ZsYWdzOwogCXBhcmFtcy0+YmF0Y2hfb2JqICAgICAgICAgICAgICAg PSBiYXRjaF9vYmo7CiAJcGFyYW1zLT5jdHggICAgICAgICAgICAgICAgICAgICA9IGN0eDsKKwlw YXJhbXMtPnJlcXVlc3QgICAgICAgICAgICAgICAgID0gcmVxOwogCiAJcmV0ID0gZGV2X3ByaXYt Pmd0LmV4ZWNidWZfc3VibWl0KHBhcmFtcywgYXJncywgJmViLT52bWFzKTsKIApAQCAtMTY0NSw4 ICsxNjQ5LDggQEAgc3RhdGljIGludCBnZW44X2Rpc3BhdGNoX2JzZF9yaW5nKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJICogbXVzdCBiZSBmcmVlZCBhZ2Fpbi4gSWYgaXQgd2FzIHN1Ym1pdHRl ZCB0aGVuIGl0IGlzIGJlaW5nIHRyYWNrZWQKIAkgKiBvbiB0aGUgYWN0aXZlIHJlcXVlc3QgbGlz dCBhbmQgbm8gY2xlYW4gdXAgaXMgcmVxdWlyZWQgaGVyZS4KIAkgKi8KLQlpZiAocmV0ICYmIHBh cmFtcy0+cmVxdWVzdCkKLQkJaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwocGFyYW1zLT5yZXF1ZXN0 KTsKKwlpZiAocmV0ICYmIHJlcSkKKwkJaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwocmVxKTsKIAog CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKaW5kZXggYTg1MWNiNy4uOTkxZmRhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwpAQCAtMTE3MDksOSArMTE3MDksMTEgQEAgc3RhdGljIGludCBpbnRlbF9j cnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCW9iai0+bGFzdF93cml0 ZV9yZXEpOwogCX0gZWxzZSB7CiAJCWlmICghcmVxdWVzdCkgewotCQkJcmV0ID0gaTkxNV9nZW1f cmVxdWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXF1ZXN0KTsKLQkJ CWlmIChyZXQpCisJCQlyZXF1ZXN0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBOVUxM KTsKKwkJCWlmIChJU19FUlIocmVxdWVzdCkpIHsKKwkJCQlyZXQgPSBQVFJfRVJSKHJlcXVlc3Qp OwogCQkJCWdvdG8gY2xlYW51cF91bnBpbjsKKwkJCX0KIAkJfQogCiAJCXJldCA9IGRldl9wcml2 LT5kaXNwbGF5LnF1ZXVlX2ZsaXAoZGV2LCBjcnRjLCBmYiwgb2JqLCByZXF1ZXN0LApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwppbmRleCBmYWFmNDkwLi5lYzI0ODJkYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKQEAgLTI1MjAsMTEgKzI1MjAsMTAgQEAgaW50IGludGVsX2xyX2NvbnRleHRf ZGVmZXJyZWRfYWxsb2Moc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKIAlpZiAoY3R4ICE9IHJp bmctPmRlZmF1bHRfY29udGV4dCAmJiByaW5nLT5pbml0X2NvbnRleHQpIHsKIAkJc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7CiAKLQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxv YyhyaW5nLAotCQkJY3R4LCAmcmVxKTsKLQkJaWYgKHJldCkgewotCQkJRFJNX0VSUk9SKCJyaW5n IGNyZWF0ZSByZXE6ICVkXG4iLAotCQkJCXJldCk7CisJCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3Rf YWxsb2MocmluZywgY3R4KTsKKwkJaWYgKElTX0VSUihyZXEpKSB7CisJCQlyZXQgPSBQVFJfRVJS KHJlcSk7CisJCQlEUk1fRVJST1IoInJpbmcgY3JlYXRlIHJlcTogJWRcbiIsIHJldCk7CiAJCQln b3RvIGVycm9yX3JpbmdidWY7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5j CmluZGV4IDc2ZjE5ODAuLjkxNjg0MTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5 LmMKQEAgLTI0MCw5ICsyNDAsOSBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0 IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCiAJV0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwogCVdB Uk5fT04oSVNfSTgzMChkZXYpICYmICEoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJUEVBX0ZP UkNFKSk7CiAKLQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1 bHRfY29udGV4dCwgJnJlcSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlyZXEgPSBpOTE1 X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIE5VTEwpOworCWlmIChJU19FUlIocmVxKSkKKwkJcmV0 dXJuIFBUUl9FUlIocmVxKTsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKIAlp ZiAocmV0KSB7CkBAIC0yODMsOSArMjgzLDkgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2Nv bnRpbnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCWlmICh0bXAgJiAoMSA8PCAx NykpCiAJCURSTV9ERUJVRygib3ZlcmxheSB1bmRlcnJ1biwgRE9WU1RBOiAleFxuIiwgdG1wKTsK IAotCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgcmluZy0+ZGVmYXVsdF9jb250 ZXh0LCAmcmVxKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCXJlcSA9IGk5MTVfZ2VtX3Jl cXVlc3RfYWxsb2MocmluZywgTlVMTCk7CisJaWYgKElTX0VSUihyZXEpKQorCQlyZXR1cm4gUFRS X0VSUihyZXEpOwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDIpOwogCWlmIChyZXQp IHsKQEAgLTM0OSw5ICszNDksOSBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb2ZmKHN0cnVj dCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQogCSAqIG9mIHRoZSBody4gRG8gaXQgaW4gYm90aCBj YXNlcyAqLwogCWZsaXBfYWRkciB8PSBPRkNfVVBEQVRFOwogCi0JcmV0ID0gaTkxNV9nZW1fcmVx dWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXEpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7CisJcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBOVUxM KTsKKwlpZiAoSVNfRVJSKHJlcSkpCisJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKIAlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcSwgNik7CiAJaWYgKHJldCkgewpAQCAtNDIzLDkgKzQyMyw5IEBA IHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQoc3RydWN0IGludGVsX292 ZXJsYXkgKm92ZXJsYXkpCiAJCS8qIHN5bmNocm9ub3VzIHNsb3dwYXRoICovCiAJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwogCi0JCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxs b2MocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0LCAmcmVxKTsKLQkJaWYgKHJldCkKLQkJCXJl dHVybiByZXQ7CisJCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgTlVMTCk7CisJ CWlmIChJU19FUlIocmVxKSkKKwkJCXJldHVybiBQVFJfRVJSKHJlcSk7CiAKIAkJcmV0ID0gaW50 ZWxfcmluZ19iZWdpbihyZXEsIDIpOwogCQlpZiAocmV0KSB7Ci0tIAoxLjkuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK