From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH v4 3/4] Introduce & use new lightweight SGL iterators Date: Fri, 20 May 2016 01:31:29 +0100 Message-ID: <1463704290-3491-3-git-send-email-david.s.gordon@intel.com> References: <1463704290-3491-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 0ADE56EA1D for ; Fri, 20 May 2016 00:31:45 +0000 (UTC) In-Reply-To: <1463704290-3491-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 VGhlIGV4aXN0aW5nIGZvcl9lYWNoX3NnX3BhZ2UoKSBpdGVyYXRvciBpcyBzb21ld2hhdCBoZWF2 eXdlaWdodCwgYW5kIGlzCmxpbWl0aW5nIGk5MTUgZHJpdmVyIHBlcmZvcm1hbmNlIGluIGEgZmV3 IGJlbmNobWFya3MuIFNvIGhlcmUgd2UKaW50cm9kdWNlIHNvbWV3aGF0IGxpZ2h0ZXIgd2VpZ2h0 IGl0ZXJhdG9ycywgcHJpbWFyaWx5IGZvciB1c2Ugd2l0aCBHRU0Kb2JqZWN0cyBvciBvdGhlciBj YXNlIHdoZXJlIHdlIG5lZWQgb25seSBkZWFsIHdpdGggd2hvbGUgYWxpZ25lZCBwYWdlcy4KClVu bGlrZSB0aGUgb2xkIGl0ZXJhdG9yLCB0aGUgbmV3IGl0ZXJhdG9ycyB1c2UgYW4gaW50ZXJuYWwg c3RhdGUKc3RydWN0dXJlIHdoaWNoIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBhY2Nlc3NlZCBieSB0 aGUgY2FsbGVyOyBpbnN0ZWFkCmVhY2ggdGFrZXMgYXMgYSBwYXJhbWV0ZXIgYW4gb3V0cHV0IHZh cmlhYmxlIHdoaWNoIGlzIHNldCBiZWZvcmUgZWFjaAppdGVyYXRpb24uIFRoaXMgbWFrZXMgdGhl bSBwYXJ0aWN1bGFybHkgc2ltcGxlIHRvIHVzZSA6KQoKT25lIG9mIHRoZSBuZXcgaXRlcmF0b3Jz IHByb3ZpZGVzIHRoZSBjYWxsZXIgd2l0aCB0aGUgRE1BIGFkZHJlc3Mgb2YKZWFjaCBwYWdlIGlu IHR1cm47IHRoZSBvdGhlciBwcm92aWRlcyB0aGUgJ3N0cnVjdCBwYWdlJyBwb2ludGVyIHJlcXVp cmVkCmJ5IG1hbnkgbWVtb3J5IG1hbmFnZW1lbnQgb3BlcmF0aW9ucy4KClZhcmlvdXMgdXNlcyBv ZiBmb3JfZWFjaF9zZ19wYWdlKCkgYXJlIHRoZW4gY29udmVydGVkIHRvIHRoZSBuZXcgbWFjcm9z LgoKU2lnbmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4K Q2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8IDYyICsrKysrKysrKysrKysrKysrKysr KysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgMjAgKysr Ky0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jICAgfCAxNCArKyst LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICB8IDc2ICsrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dXNlcnB0ci5jIHwgIDcgKystCiA1IGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCA2 MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA2ODk0ZDhlLi4wMWNk ZTBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTIxMjAsNiArMjEyMCwxMCBAQCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgewogI2RlZmluZSBJTlRFTF9GUk9OVEJVRkZFUl9B TExfTUFTSyhwaXBlKSBcCiAJKDB4ZmYgPDwgKElOVEVMX0ZST05UQlVGRkVSX0JJVFNfUEVSX1BJ UEUgKiAocGlwZSkpKQogCit2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvbGQsCisJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbmV3 LAorCQkgICAgICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cyk7CisKIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0IHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgYmFzZTsKIApAQCAtMjI1MSw5 ICsyMjU1LDYxIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIH07CiAjZGVmaW5lIHRv X2ludGVsX2JvKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwg YmFzZSkKIAotdm9pZCBpOTE1X2dlbV90cmFja19mYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2xkLAotCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm5ldywKLQkJICAg ICAgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOworLyoKKyAqIE5ldyBvcHRpbWlzZWQgU0dM IGl0ZXJhdG9yIGZvciBHRU0gb2JqZWN0cworICovCitzdHJ1Y3Qgc2d0X2l0ZXIgeworCXN0cnVj dCBzY2F0dGVybGlzdCAqc2dwOworCXVuaW9uIHsKKwkJdW5zaWduZWQgbG9uZyBwZm47CisJCXVu c2lnbmVkIGxvbmcgZG1hOworCX0gaXg7CisJdW5zaWduZWQgaW50IGN1cnI7CisJdW5zaWduZWQg aW50IG1heDsKK307CisKKy8qIENvbnN0cnVjdG9yIGZvciBuZXcgaXRlcmF0b3IgKi8KK3N0YXRp YyBpbmxpbmUgc3RydWN0IHNndF9pdGVyCitfX3NndF9pdGVyKHN0cnVjdCBzY2F0dGVybGlzdCAq c2dsLCBib29sIGRtYSkKK3sKKwlzdHJ1Y3Qgc2d0X2l0ZXIgcyA9IHsgLnNncCA9IHNnbCB9Owor CisJaWYgKHMuc2dwKSB7CisJCXMubWF4ID0gcy5jdXJyID0gcy5zZ3AtPm9mZnNldDsKKwkJcy5t YXggKz0gcy5zZ3AtPmxlbmd0aDsKKwkJaWYgKGRtYSkKKwkJCXMuaXguZG1hID0gc2dfZG1hX2Fk ZHJlc3Mocy5zZ3ApOworCQllbHNlCisJCQlzLml4LnBmbiA9IHBhZ2VfdG9fcGZuKHNnX3BhZ2Uo cy5zZ3ApKTsKKwl9CisKKwlyZXR1cm4gczsKK30KKworLyoqCisgKiBmb3JfZWFjaF9zZ3RfZG1h IC0gaXRlcmF0ZSBvdmVyIHRoZSBETUEgYWRkcmVzc2VzIG9mIHRoZSBnaXZlbiBzZ190YWJsZQor ICogQF9fZG1hcDoJRE1BIGFkZHJlc3MgKG91dHB1dCkKKyAqIEBfX2l0ZXI6CSdzdHJ1Y3Qgc2d0 X2l0ZXInIChpdGVyYXRvciBzdGF0ZSwgaW50ZXJuYWwpCisgKiBAX19zZ3Q6CXNnX3RhYmxlIHRv IGl0ZXJhdGUgb3ZlciAoaW5wdXQpCisgKi8KKyNkZWZpbmUgZm9yX2VhY2hfc2d0X2RtYShfX2Rt YXAsIF9faXRlciwgX19zZ3QpCQkJCVwKKwlmb3IgKChfX2l0ZXIpID0gX19zZ3RfaXRlcigoX19z Z3QpLT5zZ2wsIHRydWUpOwkJCVwKKwkgICAgICgoX19kbWFwKSA9IChfX2l0ZXIpLml4LmRtYSAr IChfX2l0ZXIpLmN1cnIpOwkJXAorCSAgICAgKCgoX19pdGVyKS5jdXJyICs9IFBBR0VfU0laRSkg PCAoX19pdGVyKS5tYXgpIHx8CQlcCisJCSgoX19pdGVyKSA9IF9fc2d0X2l0ZXIoc2dfbmV4dCgo X19pdGVyKS5zZ3ApLCB0cnVlKSwgMCkpCisKKy8qKgorICogZm9yX2VhY2hfc2d0X3BhZ2UgLSBp dGVyYXRlIG92ZXIgdGhlIHBhZ2VzIG9mIHRoZSBnaXZlbiBzZ190YWJsZQorICogQF9fcHA6CXBh Z2UgcG9pbnRlciAob3V0cHV0KQorICogQF9faXRlcjoJJ3N0cnVjdCBzZ3RfaXRlcicgKGl0ZXJh dG9yIHN0YXRlLCBpbnRlcm5hbCkKKyAqIEBfX3NndDoJc2dfdGFibGUgdG8gaXRlcmF0ZSBvdmVy IChpbnB1dCkKKyAqLworI2RlZmluZSBmb3JfZWFjaF9zZ3RfcGFnZShfX3BwLCBfX2l0ZXIsIF9f c2d0KQkJCQlcCisJZm9yICgoX19pdGVyKSA9IF9fc2d0X2l0ZXIoKF9fc2d0KS0+c2dsLCBmYWxz ZSk7CQlcCisJICAgICAoKF9fcHApID0gKF9faXRlcikuaXgucGZuID09IDAgPyBOVUxMIDoJCQlc CisJICAgICAgICAgICBwZm5fdG9fcGFnZSgoX19pdGVyKS5peC5wZm4gKyAoKF9faXRlcikuY3Vy ciA+PiBQQUdFX1NISUZUKSkpO1wKKwkgICAgICgoKF9faXRlcikuY3VyciArPSBQQUdFX1NJWkUp IDwgKF9faXRlcikubWF4KSB8fAkJXAorCQkoKF9faXRlcikgPSBfX3NndF9pdGVyKHNnX25leHQo KF9faXRlcikuc2dwKSwgZmFsc2UpLCAwKSkKIAogLyoqCiAgKiBSZXF1ZXN0IHF1ZXVlIHN0cnVj dHVyZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDU3OTdmYTIuLjZhYWIwYjggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjE2NSw3ICsyMTY1LDggQEAgc3RhdGljIHZvaWQgaTkx NV9nZW1fb2JqZWN0X2ZyZWVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIHN0YXRpYyB2b2lkCiBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2d0dChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewotCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRl cjsKKwlzdHJ1Y3Qgc2d0X2l0ZXIgc2d0X2l0ZXI7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJaW50 IHJldDsKIAogCUJVR19PTihvYmotPm1hZHYgPT0gX19JOTE1X01BRFZfUFVSR0VEKTsKQEAgLTIx ODcsOSArMjE4OCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mcmVlX21tYXBfb2Zm c2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaWYgKG9iai0+bWFkdiA9PSBJ OTE1X01BRFZfRE9OVE5FRUQpCiAJCW9iai0+ZGlydHkgPSAwOwogCi0JZm9yX2VhY2hfc2dfcGFn ZShvYmotPnBhZ2VzLT5zZ2wsICZzZ19pdGVyLCBvYmotPnBhZ2VzLT5uZW50cywgMCkgewotCQlz dHJ1Y3QgcGFnZSAqcGFnZSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZzZ19pdGVyKTsKLQorCWZvcl9l YWNoX3NndF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBvYmotPnBhZ2VzKSB7CiAJCWlmIChvYmotPmRp cnR5KQogCQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CiAKQEAgLTIyNDYsNyArMjI0NSw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mcmVlX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CiAJc3Ry dWN0IHNnX3RhYmxlICpzdDsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwotCXN0cnVjdCBzZ19w YWdlX2l0ZXIgc2dfaXRlcjsKKwlzdHJ1Y3Qgc2d0X2l0ZXIgc2d0X2l0ZXI7CiAJc3RydWN0IHBh Z2UgKnBhZ2U7CiAJdW5zaWduZWQgbG9uZyBsYXN0X3BmbiA9IDA7CS8qIHN1cHByZXNzIGdjYyB3 YXJuaW5nICovCiAJaW50IHJldDsKQEAgLTIzNDMsOCArMjM0Miw4IEBAIHN0YXRpYyB2b2lkIGk5 MTVfZ2VtX29iamVjdF9mcmVlX21tYXBfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCiAKIGVycl9wYWdlczoKIAlzZ19tYXJrX2VuZChzZyk7Ci0JZm9yX2VhY2hfc2dfcGFn ZShzdC0+c2dsLCAmc2dfaXRlciwgc3QtPm5lbnRzLCAwKQotCQlwdXRfcGFnZShzZ19wYWdlX2l0 ZXJfcGFnZSgmc2dfaXRlcikpOworCWZvcl9lYWNoX3NndF9wYWdlKHBhZ2UsIHNndF9pdGVyLCBz dCkKKwkJcHV0X3BhZ2UocGFnZSk7CiAJc2dfZnJlZV90YWJsZShzdCk7CiAJa2ZyZWUoc3QpOwog CkBAIC0yNDAzLDcgKzI0MDIsOCBAQCBzdGF0aWMgdm9pZCAqaTkxNV9nZW1fb2JqZWN0X21hcChj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXVuc2lnbmVkIGxvbmcg bl9wYWdlcyA9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7CiAJc3RydWN0IHNnX3RhYmxl ICpzZ3QgPSBvYmotPnBhZ2VzOwotCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRlcjsKKwlzdHJ1 Y3Qgc2d0X2l0ZXIgc2d0X2l0ZXI7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJc3RydWN0IHBhZ2Ug KnN0YWNrX3BhZ2VzWzMyXTsKIAlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gc3RhY2tfcGFnZXM7CiAJ dW5zaWduZWQgbG9uZyBpID0gMDsKQEAgLTI0MjAsOCArMjQyMCw4IEBAIHN0YXRpYyB2b2lkICpp OTE1X2dlbV9vYmplY3RfbWFwKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiAJCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlmb3JfZWFjaF9zZ19wYWdlKHNndC0+c2dsLCAmc2df aXRlciwgc2d0LT5uZW50cywgMCkKLQkJcGFnZXNbaSsrXSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZz Z19pdGVyKTsKKwlmb3JfZWFjaF9zZ3RfcGFnZShwYWdlLCBzZ3RfaXRlciwgc2d0KQorCQlwYWdl c1tpKytdID0gcGFnZTsKIAogCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgbnVt YmVyIG9mIHBhZ2VzICovCiAJR0VNX0JVR19PTihpICE9IG5fcGFnZXMpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2ZlbmNlLmMKaW5kZXggYTJiOTM4ZS4uMmI2YmRjMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jCkBAIC03NDUsMTUgKzc0NSwxNSBAQCB2b2lkIGk5MTVf Z2VtX3Jlc3RvcmVfZmVuY2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB2b2lkCiBpOTE1X2dl bV9vYmplY3RfZG9fYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKIHsKLQlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7CisJc3RydWN0IHNndF9pdGVyIHNn dF9pdGVyOworCXN0cnVjdCBwYWdlICpwYWdlOwogCWludCBpOwogCiAJaWYgKG9iai0+Yml0XzE3 ID09IE5VTEwpCiAJCXJldHVybjsKIAogCWkgPSAwOwotCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5w YWdlcy0+c2dsLCAmc2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsIDApIHsKLQkJc3RydWN0IHBh Z2UgKnBhZ2UgPSBzZ19wYWdlX2l0ZXJfcGFnZSgmc2dfaXRlcik7CisJZm9yX2VhY2hfc2d0X3Bh Z2UocGFnZSwgc2d0X2l0ZXIsIG9iai0+cGFnZXMpIHsKIAkJY2hhciBuZXdfYml0XzE3ID0gcGFn ZV90b19waHlzKHBhZ2UpID4+IDE3OwogCQlpZiAoKG5ld19iaXRfMTcgJiAweDEpICE9CiAJCSAg ICAodGVzdF9iaXQoaSwgb2JqLT5iaXRfMTcpICE9IDApKSB7CkBAIC03NzUsNyArNzc1LDggQEAg dm9pZCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogdm9p ZAogaTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIHsKLQlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7CisJc3RydWN0 IHNndF9pdGVyIHNndF9pdGVyOworCXN0cnVjdCBwYWdlICpwYWdlOwogCWludCBwYWdlX2NvdW50 ID0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVDsKIAlpbnQgaTsKIApAQCAtNzkwLDggKzc5 MSw5IEBAIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAl9CiAKIAlpID0gMDsKLQlmb3JfZWFjaF9zZ19wYWdlKG9iai0+cGFnZXMtPnNnbCwgJnNn X2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLCAwKSB7Ci0JCWlmIChwYWdlX3RvX3BoeXMoc2dfcGFn ZV9pdGVyX3BhZ2UoJnNnX2l0ZXIpKSAmICgxIDw8IDE3KSkKKworCWZvcl9lYWNoX3NndF9wYWdl KHBhZ2UsIHNndF9pdGVyLCBvYmotPnBhZ2VzKSB7CisJCWlmIChwYWdlX3RvX3BoeXMocGFnZSkg JiAoMSA8PCAxNykpCiAJCQlfX3NldF9iaXQoaSwgb2JqLT5iaXRfMTcpOwogCQllbHNlCiAJCQlf X2NsZWFyX2JpdChpLCBvYmotPmJpdF8xNyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j CmluZGV4IDdlYWI2MTkuLjQ2Njg0NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j CkBAIC0xODM5LDIwICsxODM5LDE5IEBAIHN0YXRpYyB2b2lkIGdlbjZfcHBndHRfaW5zZXJ0X2Vu dHJpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJICAgICAgZW51bSBpOTE1 X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLCB1MzIgZmxhZ3MpCiB7CiAJc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0ID0gaTkxNV92bV90b19wcGd0dCh2bSk7Ci0JZ2VuNl9wdGVfdCAqcHRfdmFk ZHI7CiAJdW5zaWduZWQgZmlyc3RfZW50cnkgPSBzdGFydCA+PiBQQUdFX1NISUZUOwogCXVuc2ln bmVkIGFjdF9wdCA9IGZpcnN0X2VudHJ5IC8gR0VONl9QVEVTOwogCXVuc2lnbmVkIGFjdF9wdGUg PSBmaXJzdF9lbnRyeSAlIEdFTjZfUFRFUzsKLQlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7 CisJZ2VuNl9wdGVfdCAqcHRfdmFkZHIgPSBOVUxMOworCXN0cnVjdCBzZ3RfaXRlciBzZ3RfaXRl cjsKKwlkbWFfYWRkcl90IGFkZHI7CiAKLQlwdF92YWRkciA9IE5VTEw7Ci0JZm9yX2VhY2hfc2df cGFnZShwYWdlcy0+c2dsLCAmc2dfaXRlciwgcGFnZXMtPm5lbnRzLCAwKSB7CisJZm9yX2VhY2hf c2d0X2RtYShhZGRyLCBzZ3RfaXRlciwgcGFnZXMpIHsKIAkJaWYgKHB0X3ZhZGRyID09IE5VTEwp CiAJCQlwdF92YWRkciA9IGttYXBfcHgocHBndHQtPnBkLnBhZ2VfdGFibGVbYWN0X3B0XSk7CiAK IAkJcHRfdmFkZHJbYWN0X3B0ZV0gPQotCQkJdm0tPnB0ZV9lbmNvZGUoc2dfcGFnZV9pdGVyX2Rt YV9hZGRyZXNzKCZzZ19pdGVyKSwKLQkJCQkgICAgICAgY2FjaGVfbGV2ZWwsIHRydWUsIGZsYWdz KTsKKwkJCXZtLT5wdGVfZW5jb2RlKGFkZHIsIGNhY2hlX2xldmVsLCB0cnVlLCBmbGFncyk7CiAK IAkJaWYgKCsrYWN0X3B0ZSA9PSBHRU42X1BURVMpIHsKIAkJCWt1bm1hcF9weChwcGd0dCwgcHRf dmFkZHIpOwpAQCAtMTg2MSw2ICsxODYwLDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9pbnNl cnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCWFjdF9wdGUgPSAw OwogCQl9CiAJfQorCiAJaWYgKHB0X3ZhZGRyKQogCQlrdW5tYXBfcHgocHBndHQsIHB0X3ZhZGRy KTsKIH0KQEAgLTIzNjIsMjIgKzIzNjIsMjAgQEAgc3RhdGljIHZvaWQgZ2VuOF9nZ3R0X2luc2Vy dF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUodm0tPmRldik7CiAJc3RydWN0IGk5MTVf Z2d0dCAqZ2d0dCA9IGk5MTVfdm1fdG9fZ2d0dCh2bSk7Ci0JdW5zaWduZWQgZmlyc3RfZW50cnkg PSBzdGFydCA+PiBQQUdFX1NISUZUOwotCWdlbjhfcHRlX3QgX19pb21lbSAqZ3R0X2VudHJpZXMg PQotCQkoZ2VuOF9wdGVfdCBfX2lvbWVtICopZ2d0dC0+Z3NtICsgZmlyc3RfZW50cnk7Ci0JaW50 IGkgPSAwOwotCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRlcjsKLQlkbWFfYWRkcl90IGFkZHIg PSAwOyAvKiBzaHV0IHVwIGdjYyAqLworCXN0cnVjdCBzZ3RfaXRlciBzZ3RfaXRlcjsKKwlnZW44 X3B0ZV90IF9faW9tZW0gKmd0dF9lbnRyaWVzOworCWdlbjhfcHRlX3QgZ3R0X2VudHJ5OworCWRt YV9hZGRyX3QgYWRkcjsKIAlpbnQgcnBtX2F0b21pY19zZXE7CisJaW50IGkgPSAwOwogCiAJcnBt X2F0b21pY19zZXEgPSBhc3NlcnRfcnBtX2F0b21pY19iZWdpbihkZXZfcHJpdik7CiAKLQlmb3Jf ZWFjaF9zZ19wYWdlKHN0LT5zZ2wsICZzZ19pdGVyLCBzdC0+bmVudHMsIDApIHsKLQkJYWRkciA9 IHNnX2RtYV9hZGRyZXNzKHNnX2l0ZXIuc2cpICsKLQkJCShzZ19pdGVyLnNnX3Bnb2Zmc2V0IDw8 IFBBR0VfU0hJRlQpOwotCQlnZW44X3NldF9wdGUoJmd0dF9lbnRyaWVzW2ldLAotCQkJICAgICBn ZW44X3B0ZV9lbmNvZGUoYWRkciwgbGV2ZWwsIHRydWUpKTsKLQkJaSsrOworCWd0dF9lbnRyaWVz ID0gKGdlbjhfcHRlX3QgX19pb21lbSAqKWdndHQtPmdzbSArIChzdGFydCA+PiBQQUdFX1NISUZU KTsKKworCWZvcl9lYWNoX3NndF9kbWEoYWRkciwgc2d0X2l0ZXIsIHN0KSB7CisJCWd0dF9lbnRy eSA9IGdlbjhfcHRlX2VuY29kZShhZGRyLCBsZXZlbCwgdHJ1ZSk7CisJCWdlbjhfc2V0X3B0ZSgm Z3R0X2VudHJpZXNbaSsrXSwgZ3R0X2VudHJ5KTsKIAl9CiAKIAkvKgpAQCAtMjM4OCw4ICsyMzg2 LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9nZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAogCSAqIGhhcmR3YXJlIHNob3VsZCB3b3JrLCB3ZSBtdXN0IGtlZXAg dGhpcyBwb3N0aW5nIHJlYWQgZm9yIHBhcmFub2lhLgogCSAqLwogCWlmIChpICE9IDApCi0JCVdB Uk5fT04ocmVhZHEoJmd0dF9lbnRyaWVzW2ktMV0pCi0JCQkhPSBnZW44X3B0ZV9lbmNvZGUoYWRk ciwgbGV2ZWwsIHRydWUpKTsKKwkJV0FSTl9PTihyZWFkcSgmZ3R0X2VudHJpZXNbaS0xXSkgIT0g Z3R0X2VudHJ5KTsKIAogCS8qIFRoaXMgbmV4dCBiaXQgbWFrZXMgdGhlIGFib3ZlIHBvc3Rpbmcg cmVhZCBldmVuIG1vcmUgaW1wb3J0YW50LiBXZQogCSAqIHdhbnQgdG8gZmx1c2ggdGhlIFRMQnMg b25seSBhZnRlciB3ZSdyZSBjZXJ0YWluIGFsbCB0aGUgUFRFIHVwZGF0ZXMKQEAgLTI0NDAsMjAg KzI0MzcsMjAgQEAgc3RhdGljIHZvaWQgZ2VuNl9nZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUodm0tPmRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9IGk5MTVf dm1fdG9fZ2d0dCh2bSk7Ci0JdW5zaWduZWQgZmlyc3RfZW50cnkgPSBzdGFydCA+PiBQQUdFX1NI SUZUOwotCWdlbjZfcHRlX3QgX19pb21lbSAqZ3R0X2VudHJpZXMgPQotCQkoZ2VuNl9wdGVfdCBf X2lvbWVtICopZ2d0dC0+Z3NtICsgZmlyc3RfZW50cnk7Ci0JaW50IGkgPSAwOwotCXN0cnVjdCBz Z19wYWdlX2l0ZXIgc2dfaXRlcjsKLQlkbWFfYWRkcl90IGFkZHIgPSAwOworCXN0cnVjdCBzZ3Rf aXRlciBzZ3RfaXRlcjsKKwlnZW42X3B0ZV90IF9faW9tZW0gKmd0dF9lbnRyaWVzOworCWdlbjZf cHRlX3QgZ3R0X2VudHJ5OworCWRtYV9hZGRyX3QgYWRkcjsKIAlpbnQgcnBtX2F0b21pY19zZXE7 CisJaW50IGkgPSAwOwogCiAJcnBtX2F0b21pY19zZXEgPSBhc3NlcnRfcnBtX2F0b21pY19iZWdp bihkZXZfcHJpdik7CiAKLQlmb3JfZWFjaF9zZ19wYWdlKHN0LT5zZ2wsICZzZ19pdGVyLCBzdC0+ bmVudHMsIDApIHsKLQkJYWRkciA9IHNnX3BhZ2VfaXRlcl9kbWFfYWRkcmVzcygmc2dfaXRlcik7 Ci0JCWlvd3JpdGUzMih2bS0+cHRlX2VuY29kZShhZGRyLCBsZXZlbCwgdHJ1ZSwgZmxhZ3MpLCAm Z3R0X2VudHJpZXNbaV0pOwotCQlpKys7CisJZ3R0X2VudHJpZXMgPSAoZ2VuNl9wdGVfdCBfX2lv bWVtICopZ2d0dC0+Z3NtICsgKHN0YXJ0ID4+IFBBR0VfU0hJRlQpOworCisJZm9yX2VhY2hfc2d0 X2RtYShhZGRyLCBzZ3RfaXRlciwgc3QpIHsKKwkJZ3R0X2VudHJ5ID0gdm0tPnB0ZV9lbmNvZGUo YWRkciwgbGV2ZWwsIHRydWUsIGZsYWdzKTsKKwkJaW93cml0ZTMyKGd0dF9lbnRyeSwgJmd0dF9l bnRyaWVzW2krK10pOwogCX0KIAogCS8qIFhYWDogVGhpcyBzZXJ2ZXMgYXMgYSBwb3N0aW5nIHJl YWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIFBURSBoYXMKQEAgLTI0NjIsMTAgKzI0NTksOCBAQCBz dGF0aWMgdm9pZCBnZW42X2dndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCiAJICogb2YgTlVNQSBhY2Nlc3MgcGF0dGVybnMuIFRoZXJlZm9yZSwgZXZlbiB3 aXRoIHRoZSB3YXkgd2UgYXNzdW1lCiAJICogaGFyZHdhcmUgc2hvdWxkIHdvcmssIHdlIG11c3Qg a2VlcCB0aGlzIHBvc3RpbmcgcmVhZCBmb3IgcGFyYW5vaWEuCiAJICovCi0JaWYgKGkgIT0gMCkg ewotCQl1bnNpZ25lZCBsb25nIGd0dCA9IHJlYWRsKCZndHRfZW50cmllc1tpLTFdKTsKLQkJV0FS Tl9PTihndHQgIT0gdm0tPnB0ZV9lbmNvZGUoYWRkciwgbGV2ZWwsIHRydWUsIGZsYWdzKSk7Ci0J fQorCWlmIChpICE9IDApCisJCVdBUk5fT04ocmVhZGwoJmd0dF9lbnRyaWVzW2ktMV0pICE9IGd0 dF9lbnRyeSk7CiAKIAkvKiBUaGlzIG5leHQgYml0IG1ha2VzIHRoZSBhYm92ZSBwb3N0aW5nIHJl YWQgZXZlbiBtb3JlIGltcG9ydGFudC4gV2UKIAkgKiB3YW50IHRvIGZsdXNoIHRoZSBUTEJzIG9u bHkgYWZ0ZXIgd2UncmUgY2VydGFpbiBhbGwgdGhlIFBURSB1cGRhdGVzCkBAIC0zMzk5LDkgKzMz OTQsMTEgQEAgc3RydWN0IGk5MTVfdm1hICoKIGludGVsX3JvdGF0ZV9mYl9vYmpfcGFnZXMoc3Ry dWN0IGludGVsX3JvdGF0aW9uX2luZm8gKnJvdF9pbmZvLAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQogeworCWNvbnN0IHNpemVfdCBuX3BhZ2VzID0gb2JqLT5iYXNlLnNp emUgLyBQQUdFX1NJWkU7CiAJdW5zaWduZWQgaW50IHNpemVfcGFnZXMgPSByb3RfaW5mby0+cGxh bmVbMF0ud2lkdGggKiByb3RfaW5mby0+cGxhbmVbMF0uaGVpZ2h0OwogCXVuc2lnbmVkIGludCBz aXplX3BhZ2VzX3V2OwotCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRlcjsKKwlzdHJ1Y3Qgc2d0 X2l0ZXIgc2d0X2l0ZXI7CisJZG1hX2FkZHJfdCBkbWFfYWRkcjsKIAl1bnNpZ25lZCBsb25nIGk7 CiAJZG1hX2FkZHJfdCAqcGFnZV9hZGRyX2xpc3Q7CiAJc3RydWN0IHNnX3RhYmxlICpzdDsKQEAg LTM0MTAsNyArMzQwNyw3IEBAIHN0cnVjdCBpOTE1X3ZtYSAqCiAJaW50IHJldCA9IC1FTk9NRU07 CiAKIAkvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBsaXN0IG9mIHNvdXJjZSBwYWdlcyBmb3IgcmFu ZG9tIGFjY2Vzcy4gKi8KLQlwYWdlX2FkZHJfbGlzdCA9IGRybV9tYWxsb2NfZ2ZwKG9iai0+YmFz ZS5zaXplIC8gUEFHRV9TSVpFLAorCXBhZ2VfYWRkcl9saXN0ID0gZHJtX21hbGxvY19nZnAobl9w YWdlcywKIAkJCQkJc2l6ZW9mKGRtYV9hZGRyX3QpLAogCQkJCQlHRlBfVEVNUE9SQVJZKTsKIAlp ZiAoIXBhZ2VfYWRkcl9saXN0KQpAQCAtMzQzMywxMSArMzQzMCwxMCBAQCBzdHJ1Y3QgaTkxNV92 bWEgKgogCiAJLyogUG9wdWxhdGUgc291cmNlIHBhZ2UgbGlzdCBmcm9tIHRoZSBvYmplY3QuICov CiAJaSA9IDA7Ci0JZm9yX2VhY2hfc2dfcGFnZShvYmotPnBhZ2VzLT5zZ2wsICZzZ19pdGVyLCBv YmotPnBhZ2VzLT5uZW50cywgMCkgewotCQlwYWdlX2FkZHJfbGlzdFtpXSA9IHNnX3BhZ2VfaXRl cl9kbWFfYWRkcmVzcygmc2dfaXRlcik7Ci0JCWkrKzsKLQl9CisJZm9yX2VhY2hfc2d0X2RtYShk bWFfYWRkciwgc2d0X2l0ZXIsIG9iai0+cGFnZXMpCisJCXBhZ2VfYWRkcl9saXN0W2krK10gPSBk bWFfYWRkcjsKIAorCUdFTV9CVUdfT04oaSAhPSBuX3BhZ2VzKTsKIAlzdC0+bmVudHMgPSAwOwog CXNnID0gc3QtPnNnbDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fdXNlcnB0ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCmlu ZGV4IGE4NDYyNWIuLjIzMTRjODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3VzZXJwdHIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2Vy cHRyLmMKQEAgLTcwNiw3ICs3MDYsOCBAQCBzdHJ1Y3QgZ2V0X3BhZ2VzX3dvcmsgewogc3RhdGlj IHZvaWQKIGk5MTVfZ2VtX3VzZXJwdHJfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCiB7Ci0Jc3RydWN0IHNnX3BhZ2VfaXRlciBzZ19pdGVyOworCXN0cnVjdCBzZ3Rf aXRlciBzZ3RfaXRlcjsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAogCUJVR19PTihvYmotPnVzZXJw dHIud29yayAhPSBOVUxMKTsKIAlfX2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2FjdGl2ZShvYmosIGZh bHNlKTsKQEAgLTcxNiw5ICs3MTcsNyBAQCBzdHJ1Y3QgZ2V0X3BhZ2VzX3dvcmsgewogCiAJaTkx NV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qob2JqKTsKIAotCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5w YWdlcy0+c2dsLCAmc2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsIDApIHsKLQkJc3RydWN0IHBh Z2UgKnBhZ2UgPSBzZ19wYWdlX2l0ZXJfcGFnZSgmc2dfaXRlcik7Ci0KKwlmb3JfZWFjaF9zZ3Rf cGFnZShwYWdlLCBzZ3RfaXRlciwgb2JqLT5wYWdlcykgewogCQlpZiAob2JqLT5kaXJ0eSkKIAkJ CXNldF9wYWdlX2RpcnR5KHBhZ2UpOwogCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==