From mboxrd@z Thu Jan 1 00:00:00 1970 From: akash.goel@intel.com Subject: [PATCH 07/19] relay: Use per CPU constructs for the relay channel buffer pointers Date: Fri, 19 Aug 2016 14:13:06 +0530 Message-ID: <1471596198-30748-8-git-send-email-akash.goel@intel.com> References: <1471596198-30748-1-git-send-email-akash.goel@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 BED2C6EBA6 for ; Fri, 19 Aug 2016 08:29:50 +0000 (UTC) In-Reply-To: <1471596198-30748-1-git-send-email-akash.goel@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 Cc: Akash Goel List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWthc2ggR29lbCA8YWthc2guZ29lbEBpbnRlbC5jb20+CgpyZWxheSBlc3NlbnRpYWxs eSBuZWVkcyB0byBtYWludGFpbiB0aGUgcGVyIENQVSBhcnJheSBvZiBjaGFubmVsIGJ1ZmZlcgpw b2ludGVycyBidXQgaXQgbWFudWFsbHkgY3JlYXRlcyB0aGF0IGFycmF5LgpJbnN0ZWFkIGl0cyBi ZXR0ZXIgdG8gYXZhaWwgdGhlIHBlciBDUFUgY29uc3RydWN0cywgcHJvdmlkZWQgYnkgdGhlCmtl cm5lbCwgdG8gYWxsb2NhdGUgJiBhY2Nlc3MgdGhlIGFycmF5IG9mIHBvaW50ZXIgdG8gY2hhbm5l bCBidWZmZXJzLgoKdjI6IEluY2x1ZGUgPGxpbnV4L3BlcmNwdS5oPiBpbiByZWxheS5oIHNvIHRo YXQgaXQgcHVsbHMgaW4gdGhlIHBlcmNwdQogICAgYXBpIGV4cGxpY2l0bHkuIChDaHJpcykKCkNj OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFR2cnRrbyBVcnN1 bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFrYXNoIEdvZWwg PGFrYXNoLmdvZWxAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Ci0tLQogaW5jbHVkZS9saW51eC9yZWxheS5oIHwgMTcgKysrKysr Ky0tLS0tCiBrZXJuZWwvcmVsYXkuYyAgICAgICAgfCA3NCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0 aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWxh eS5oIGIvaW5jbHVkZS9saW51eC9yZWxheS5oCmluZGV4IGQ3YzgzNTkuLmViMjk1ZTMgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvcmVsYXkuaAorKysgYi9pbmNsdWRlL2xpbnV4L3JlbGF5LmgK QEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4 L3BvbGwuaD4KICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+CisjaW5jbHVkZSA8bGludXgvcGVyY3B1 Lmg+CiAKIC8qCiAgKiBUcmFja3MgY2hhbmdlcyB0byByY2hhbi9yY2hhbl9idWYgc3RydWN0cwpA QCAtNjMsNyArNjQsNyBAQCBzdHJ1Y3QgcmNoYW4KIAlzdHJ1Y3Qga3JlZiBrcmVmOwkJLyogY2hh bm5lbCByZWZjb3VudCAqLwogCXZvaWQgKnByaXZhdGVfZGF0YTsJCS8qIGZvciB1c2VyLWRlZmlu ZWQgZGF0YSAqLwogCXNpemVfdCBsYXN0X3Rvb2JpZzsJCS8qIHRyaWVkIHRvIGxvZyBldmVudCA+ IHN1YmJ1ZiBzaXplICovCi0Jc3RydWN0IHJjaGFuX2J1ZiAqYnVmW05SX0NQVVNdOyAvKiBwZXIt Y3B1IGNoYW5uZWwgYnVmZmVycyAqLworCXN0cnVjdCByY2hhbl9idWYgKiogX19wZXJjcHUgYnVm OyAvKiBwZXItY3B1IGNoYW5uZWwgYnVmZmVycyAqLwogCWludCBpc19nbG9iYWw7CQkJLyogT25l IGdsb2JhbCBidWZmZXIgPyAqLwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsJCS8qIGZvciBjaGFu bmVsIGxpc3QgKi8KIAlzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQ7CQkvKiBwYXJlbnQgZGVudHJ5IHBh c3NlZCB0byBvcGVuICovCkBAIC0yMDQsNyArMjA1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJl bGF5X3dyaXRlKHN0cnVjdCByY2hhbiAqY2hhbiwKIAlzdHJ1Y3QgcmNoYW5fYnVmICpidWY7CiAK IAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7Ci0JYnVmID0gY2hhbi0+YnVmW3NtcF9wcm9jZXNzb3Jf aWQoKV07CisJYnVmID0gKnRoaXNfY3B1X3B0cihjaGFuLT5idWYpOwogCWlmICh1bmxpa2VseShi dWYtPm9mZnNldCArIGxlbmd0aCA+IGNoYW4tPnN1YmJ1Zl9zaXplKSkKIAkJbGVuZ3RoID0gcmVs YXlfc3dpdGNoX3N1YmJ1ZihidWYsIGxlbmd0aCk7CiAJbWVtY3B5KGJ1Zi0+ZGF0YSArIGJ1Zi0+ b2Zmc2V0LCBkYXRhLCBsZW5ndGgpOwpAQCAtMjMwLDEyICsyMzEsMTIgQEAgc3RhdGljIGlubGlu ZSB2b2lkIF9fcmVsYXlfd3JpdGUoc3RydWN0IHJjaGFuICpjaGFuLAogewogCXN0cnVjdCByY2hh bl9idWYgKmJ1ZjsKIAotCWJ1ZiA9IGNoYW4tPmJ1ZltnZXRfY3B1KCldOworCWJ1ZiA9ICpnZXRf Y3B1X3B0cihjaGFuLT5idWYpOwogCWlmICh1bmxpa2VseShidWYtPm9mZnNldCArIGxlbmd0aCA+ IGJ1Zi0+Y2hhbi0+c3ViYnVmX3NpemUpKQogCQlsZW5ndGggPSByZWxheV9zd2l0Y2hfc3ViYnVm KGJ1ZiwgbGVuZ3RoKTsKIAltZW1jcHkoYnVmLT5kYXRhICsgYnVmLT5vZmZzZXQsIGRhdGEsIGxl bmd0aCk7CiAJYnVmLT5vZmZzZXQgKz0gbGVuZ3RoOwotCXB1dF9jcHUoKTsKKwlwdXRfY3B1X3B0 cihjaGFuLT5idWYpOwogfQogCiAvKioKQEAgLTI1MSwxNyArMjUyLDE5IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBfX3JlbGF5X3dyaXRlKHN0cnVjdCByY2hhbiAqY2hhbiwKICAqLwogc3RhdGljIGlu bGluZSB2b2lkICpyZWxheV9yZXNlcnZlKHN0cnVjdCByY2hhbiAqY2hhbiwgc2l6ZV90IGxlbmd0 aCkKIHsKLQl2b2lkICpyZXNlcnZlZDsKLQlzdHJ1Y3QgcmNoYW5fYnVmICpidWYgPSBjaGFuLT5i dWZbc21wX3Byb2Nlc3Nvcl9pZCgpXTsKKwl2b2lkICpyZXNlcnZlZCA9IE5VTEw7CisJc3RydWN0 IHJjaGFuX2J1ZiAqYnVmID0gKmdldF9jcHVfcHRyKGNoYW4tPmJ1Zik7CiAKIAlpZiAodW5saWtl bHkoYnVmLT5vZmZzZXQgKyBsZW5ndGggPiBidWYtPmNoYW4tPnN1YmJ1Zl9zaXplKSkgewogCQls ZW5ndGggPSByZWxheV9zd2l0Y2hfc3ViYnVmKGJ1ZiwgbGVuZ3RoKTsKIAkJaWYgKCFsZW5ndGgp Ci0JCQlyZXR1cm4gTlVMTDsKKwkJCWdvdG8gZW5kOwogCX0KIAlyZXNlcnZlZCA9IGJ1Zi0+ZGF0 YSArIGJ1Zi0+b2Zmc2V0OwogCWJ1Zi0+b2Zmc2V0ICs9IGxlbmd0aDsKIAorZW5kOgorCXB1dF9j cHVfcHRyKGNoYW4tPmJ1Zik7CiAJcmV0dXJuIHJlc2VydmVkOwogfQogCmRpZmYgLS1naXQgYS9r ZXJuZWwvcmVsYXkuYyBiL2tlcm5lbC9yZWxheS5jCmluZGV4IGQ3OTc1MDIuLmY1NWFiODIgMTAw NjQ0Ci0tLSBhL2tlcm5lbC9yZWxheS5jCisrKyBiL2tlcm5lbC9yZWxheS5jCkBAIC0yMTQsNyAr MjE0LDcgQEAgc3RhdGljIHZvaWQgcmVsYXlfZGVzdHJveV9idWYoc3RydWN0IHJjaGFuX2J1ZiAq YnVmKQogCQkJX19mcmVlX3BhZ2UoYnVmLT5wYWdlX2FycmF5W2ldKTsKIAkJcmVsYXlfZnJlZV9w YWdlX2FycmF5KGJ1Zi0+cGFnZV9hcnJheSk7CiAJfQotCWNoYW4tPmJ1ZltidWYtPmNwdV0gPSBO VUxMOworCSpwZXJfY3B1X3B0cihjaGFuLT5idWYsIGJ1Zi0+Y3B1KSA9IE5VTEw7CiAJa2ZyZWUo YnVmLT5wYWRkaW5nKTsKIAlrZnJlZShidWYpOwogCWtyZWZfcHV0KCZjaGFuLT5rcmVmLCByZWxh eV9kZXN0cm95X2NoYW5uZWwpOwpAQCAtMzgyLDIwICszODIsMjEgQEAgc3RhdGljIHZvaWQgX19y ZWxheV9yZXNldChzdHJ1Y3QgcmNoYW5fYnVmICpidWYsIHVuc2lnbmVkIGludCBpbml0KQogICov CiB2b2lkIHJlbGF5X3Jlc2V0KHN0cnVjdCByY2hhbiAqY2hhbikKIHsKKwlzdHJ1Y3QgcmNoYW5f YnVmICpidWY7CiAJdW5zaWduZWQgaW50IGk7CiAKIAlpZiAoIWNoYW4pCiAJCXJldHVybjsKIAot CWlmIChjaGFuLT5pc19nbG9iYWwgJiYgY2hhbi0+YnVmWzBdKSB7Ci0JCV9fcmVsYXlfcmVzZXQo Y2hhbi0+YnVmWzBdLCAwKTsKKwlpZiAoY2hhbi0+aXNfZ2xvYmFsICYmIChidWYgPSAqcGVyX2Nw dV9wdHIoY2hhbi0+YnVmLCAwKSkpIHsKKwkJX19yZWxheV9yZXNldChidWYsIDApOwogCQlyZXR1 cm47CiAJfQogCiAJbXV0ZXhfbG9jaygmcmVsYXlfY2hhbm5lbHNfbXV0ZXgpOwogCWZvcl9lYWNo X3Bvc3NpYmxlX2NwdShpKQotCQlpZiAoY2hhbi0+YnVmW2ldKQotCQkJX19yZWxheV9yZXNldChj aGFuLT5idWZbaV0sIDApOworCQlpZiAoKGJ1ZiA9ICpwZXJfY3B1X3B0cihjaGFuLT5idWYsIGkp KSkKKwkJCV9fcmVsYXlfcmVzZXQoYnVmLCAwKTsKIAltdXRleF91bmxvY2soJnJlbGF5X2NoYW5u ZWxzX211dGV4KTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHJlbGF5X3Jlc2V0KTsKQEAgLTQ0MCw3 ICs0NDEsNyBAQCBzdGF0aWMgc3RydWN0IHJjaGFuX2J1ZiAqcmVsYXlfb3Blbl9idWYoc3RydWN0 IHJjaGFuICpjaGFuLCB1bnNpZ25lZCBpbnQgY3B1KQogCXN0cnVjdCBkZW50cnkgKmRlbnRyeTsK IAogIAlpZiAoY2hhbi0+aXNfZ2xvYmFsKQotCQlyZXR1cm4gY2hhbi0+YnVmWzBdOworCQlyZXR1 cm4gKnBlcl9jcHVfcHRyKGNoYW4tPmJ1ZiwgMCk7CiAKIAlidWYgPSByZWxheV9jcmVhdGVfYnVm KGNoYW4pOwogCWlmICghYnVmKQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcmNo YW5fYnVmICpyZWxheV9vcGVuX2J1ZihzdHJ1Y3QgcmNoYW4gKmNoYW4sIHVuc2lnbmVkIGludCBj cHUpCiAgCV9fcmVsYXlfcmVzZXQoYnVmLCAxKTsKIAogIAlpZihjaGFuLT5pc19nbG9iYWwpIHsK LSAJCWNoYW4tPmJ1ZlswXSA9IGJ1ZjsKKwkJKnBlcl9jcHVfcHRyKGNoYW4tPmJ1ZiwgMCkgPSBi dWY7CiAgCQlidWYtPmNwdSA9IDA7CiAgIAl9CiAKQEAgLTUyNiwyMiArNTI3LDI0IEBAIHN0YXRp YyBpbnQgcmVsYXlfaG90Y3B1X2NhbGxiYWNrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCiB7 CiAJdW5zaWduZWQgaW50IGhvdGNwdSA9ICh1bnNpZ25lZCBsb25nKWhjcHU7CiAJc3RydWN0IHJj aGFuICpjaGFuOworCXN0cnVjdCByY2hhbl9idWYgKmJ1ZjsKIAogCXN3aXRjaChhY3Rpb24pIHsK IAljYXNlIENQVV9VUF9QUkVQQVJFOgogCWNhc2UgQ1BVX1VQX1BSRVBBUkVfRlJPWkVOOgogCQlt dXRleF9sb2NrKCZyZWxheV9jaGFubmVsc19tdXRleCk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnko Y2hhbiwgJnJlbGF5X2NoYW5uZWxzLCBsaXN0KSB7Ci0JCQlpZiAoY2hhbi0+YnVmW2hvdGNwdV0p CisJCQlpZiAoKGJ1ZiA9ICpwZXJfY3B1X3B0cihjaGFuLT5idWYsIGhvdGNwdSkpKQogCQkJCWNv bnRpbnVlOwotCQkJY2hhbi0+YnVmW2hvdGNwdV0gPSByZWxheV9vcGVuX2J1ZihjaGFuLCBob3Rj cHUpOwotCQkJaWYoIWNoYW4tPmJ1Zltob3RjcHVdKSB7CisJCQlidWYgPSByZWxheV9vcGVuX2J1 ZihjaGFuLCBob3RjcHUpOworCQkJaWYoIWJ1ZikgewogCQkJCXByaW50ayhLRVJOX0VSUgogCQkJ CQkicmVsYXlfaG90Y3B1X2NhbGxiYWNrOiBjcHUgJWQgYnVmZmVyICIKIAkJCQkJImNyZWF0aW9u IGZhaWxlZFxuIiwgaG90Y3B1KTsKIAkJCQltdXRleF91bmxvY2soJnJlbGF5X2NoYW5uZWxzX211 dGV4KTsKIAkJCQlyZXR1cm4gbm90aWZpZXJfZnJvbV9lcnJubygtRU5PTUVNKTsKIAkJCX0KKwkJ CSpwZXJfY3B1X3B0cihjaGFuLT5idWYsIGhvdGNwdSkgPSBidWY7CiAJCX0KIAkJbXV0ZXhfdW5s b2NrKCZyZWxheV9jaGFubmVsc19tdXRleCk7CiAJCWJyZWFrOwpAQCAtNTgzLDYgKzU4Niw3IEBA IHN0cnVjdCByY2hhbiAqcmVsYXlfb3Blbihjb25zdCBjaGFyICpiYXNlX2ZpbGVuYW1lLAogewog CXVuc2lnbmVkIGludCBpOwogCXN0cnVjdCByY2hhbiAqY2hhbjsKKwlzdHJ1Y3QgcmNoYW5fYnVm ICpidWY7CiAKIAlpZiAoIShzdWJidWZfc2l6ZSAmJiBuX3N1YmJ1ZnMpKQogCQlyZXR1cm4gTlVM TDsKQEAgLTU5Myw2ICs1OTcsNyBAQCBzdHJ1Y3QgcmNoYW4gKnJlbGF5X29wZW4oY29uc3QgY2hh ciAqYmFzZV9maWxlbmFtZSwKIAlpZiAoIWNoYW4pCiAJCXJldHVybiBOVUxMOwogCisJY2hhbi0+ YnVmID0gYWxsb2NfcGVyY3B1KHN0cnVjdCByY2hhbl9idWYgKik7CiAJY2hhbi0+dmVyc2lvbiA9 IFJFTEFZRlNfQ0hBTk5FTF9WRVJTSU9OOwogCWNoYW4tPm5fc3ViYnVmcyA9IG5fc3ViYnVmczsK IAljaGFuLT5zdWJidWZfc2l6ZSA9IHN1YmJ1Zl9zaXplOwpAQCAtNjA4LDkgKzYxMywxMCBAQCBz dHJ1Y3QgcmNoYW4gKnJlbGF5X29wZW4oY29uc3QgY2hhciAqYmFzZV9maWxlbmFtZSwKIAogCW11 dGV4X2xvY2soJnJlbGF5X2NoYW5uZWxzX211dGV4KTsKIAlmb3JfZWFjaF9vbmxpbmVfY3B1KGkp IHsKLQkJY2hhbi0+YnVmW2ldID0gcmVsYXlfb3Blbl9idWYoY2hhbiwgaSk7Ci0JCWlmICghY2hh bi0+YnVmW2ldKQorCQlidWYgPSByZWxheV9vcGVuX2J1ZihjaGFuLCBpKTsKKwkJaWYgKCFidWYp CiAJCQlnb3RvIGZyZWVfYnVmczsKKwkJKnBlcl9jcHVfcHRyKGNoYW4tPmJ1ZiwgaSkgPSBidWY7 CiAJfQogCWxpc3RfYWRkKCZjaGFuLT5saXN0LCAmcmVsYXlfY2hhbm5lbHMpOwogCW11dGV4X3Vu bG9jaygmcmVsYXlfY2hhbm5lbHNfbXV0ZXgpOwpAQCAtNjE5LDggKzYyNSw4IEBAIHN0cnVjdCBy Y2hhbiAqcmVsYXlfb3Blbihjb25zdCBjaGFyICpiYXNlX2ZpbGVuYW1lLAogCiBmcmVlX2J1ZnM6 CiAJZm9yX2VhY2hfcG9zc2libGVfY3B1KGkpIHsKLQkJaWYgKGNoYW4tPmJ1ZltpXSkKLQkJCXJl bGF5X2Nsb3NlX2J1ZihjaGFuLT5idWZbaV0pOworCQlpZiAoKGJ1ZiA9ICpwZXJfY3B1X3B0cihj aGFuLT5idWYsIGkpKSkKKwkJCXJlbGF5X2Nsb3NlX2J1ZihidWYpOwogCX0KIAogCWtyZWZfcHV0 KCZjaGFuLT5rcmVmLCByZWxheV9kZXN0cm95X2NoYW5uZWwpOwpAQCAtNjY2LDYgKzY3Miw3IEBA IGludCByZWxheV9sYXRlX3NldHVwX2ZpbGVzKHN0cnVjdCByY2hhbiAqY2hhbiwKIAl1bnNpZ25l ZCBpbnQgaSwgY3Vycl9jcHU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgZGVudHJ5 ICpkZW50cnk7CisJc3RydWN0IHJjaGFuX2J1ZiAqYnVmOwogCXN0cnVjdCByY2hhbl9wZXJjcHVf YnVmX2Rpc3BhdGNoZXIgZGlzcDsKIAogCWlmICghY2hhbiB8fCAhYmFzZV9maWxlbmFtZSkKQEAg LTY4NCwxMCArNjkxLDExIEBAIGludCByZWxheV9sYXRlX3NldHVwX2ZpbGVzKHN0cnVjdCByY2hh biAqY2hhbiwKIAogCWlmIChjaGFuLT5pc19nbG9iYWwpIHsKIAkJZXJyID0gLUVJTlZBTDsKLQkJ aWYgKCFXQVJOX09OX09OQ0UoIWNoYW4tPmJ1ZlswXSkpIHsKLQkJCWRlbnRyeSA9IHJlbGF5X2Ny ZWF0ZV9idWZfZmlsZShjaGFuLCBjaGFuLT5idWZbMF0sIDApOworCQlidWYgPSAqcGVyX2NwdV9w dHIoY2hhbi0+YnVmLCAwKTsKKwkJaWYgKCFXQVJOX09OX09OQ0UoIWJ1ZikpIHsKKwkJCWRlbnRy eSA9IHJlbGF5X2NyZWF0ZV9idWZfZmlsZShjaGFuLCBidWYsIDApOwogCQkJaWYgKGRlbnRyeSAm JiAhV0FSTl9PTl9PTkNFKCFjaGFuLT5pc19nbG9iYWwpKSB7Ci0JCQkJcmVsYXlfc2V0X2J1Zl9k ZW50cnkoY2hhbi0+YnVmWzBdLCBkZW50cnkpOworCQkJCXJlbGF5X3NldF9idWZfZGVudHJ5KGJ1 ZiwgZGVudHJ5KTsKIAkJCQllcnIgPSAwOwogCQkJfQogCQl9CkBAIC03MDIsMTMgKzcxMCwxNCBA QCBpbnQgcmVsYXlfbGF0ZV9zZXR1cF9maWxlcyhzdHJ1Y3QgcmNoYW4gKmNoYW4sCiAJICogb24g YWxsIGN1cnJlbnRseSBvbmxpbmUgQ1BVcy4KIAkgKi8KIAlmb3JfZWFjaF9vbmxpbmVfY3B1KGkp IHsKLQkJaWYgKHVubGlrZWx5KCFjaGFuLT5idWZbaV0pKSB7CisJCWJ1ZiA9ICpwZXJfY3B1X3B0 cihjaGFuLT5idWYsIGkpOworCQlpZiAodW5saWtlbHkoIWJ1ZikpIHsKIAkJCVdBUk5fT05DRSgx LCBLRVJOX0VSUiAiQ1BVIGhhcyBubyBidWZmZXIhXG4iKTsKIAkJCWVyciA9IC1FSU5WQUw7CiAJ CQlicmVhazsKIAkJfQogCi0JCWRlbnRyeSA9IHJlbGF5X2NyZWF0ZV9idWZfZmlsZShjaGFuLCBj aGFuLT5idWZbaV0sIGkpOworCQlkZW50cnkgPSByZWxheV9jcmVhdGVfYnVmX2ZpbGUoY2hhbiwg YnVmLCBpKTsKIAkJaWYgKHVubGlrZWx5KCFkZW50cnkpKSB7CiAJCQllcnIgPSAtRUlOVkFMOwog CQkJYnJlYWs7CkBAIC03MTYsMTAgKzcyNSwxMCBAQCBpbnQgcmVsYXlfbGF0ZV9zZXR1cF9maWxl cyhzdHJ1Y3QgcmNoYW4gKmNoYW4sCiAKIAkJaWYgKGN1cnJfY3B1ID09IGkpIHsKIAkJCWxvY2Fs X2lycV9zYXZlKGZsYWdzKTsKLQkJCXJlbGF5X3NldF9idWZfZGVudHJ5KGNoYW4tPmJ1ZltpXSwg ZGVudHJ5KTsKKwkJCXJlbGF5X3NldF9idWZfZGVudHJ5KGJ1ZiwgZGVudHJ5KTsKIAkJCWxvY2Fs X2lycV9yZXN0b3JlKGZsYWdzKTsKIAkJfSBlbHNlIHsKLQkJCWRpc3AuYnVmID0gY2hhbi0+YnVm W2ldOworCQkJZGlzcC5idWYgPSBidWY7CiAJCQlkaXNwLmRlbnRyeSA9IGRlbnRyeTsKIAkJCXNt cF9tYigpOwogCQkJLyogcmVsYXlfY2hhbm5lbHNfbXV0ZXggbXVzdCBiZSBoZWxkLCBzbyB3YWl0 LiAqLwpAQCAtODIyLDExICs4MzEsMTAgQEAgdm9pZCByZWxheV9zdWJidWZzX2NvbnN1bWVkKHN0 cnVjdCByY2hhbiAqY2hhbiwKIAlpZiAoIWNoYW4pCiAJCXJldHVybjsKIAotCWlmIChjcHUgPj0g TlJfQ1BVUyB8fCAhY2hhbi0+YnVmW2NwdV0gfHwKLQkJCQkJc3ViYnVmc19jb25zdW1lZCA+IGNo YW4tPm5fc3ViYnVmcykKKwlidWYgPSAqcGVyX2NwdV9wdHIoY2hhbi0+YnVmLCBjcHUpOworCWlm IChjcHUgPj0gTlJfQ1BVUyB8fCAhYnVmIHx8IHN1YmJ1ZnNfY29uc3VtZWQgPiBjaGFuLT5uX3N1 YmJ1ZnMpCiAJCXJldHVybjsKIAotCWJ1ZiA9IGNoYW4tPmJ1ZltjcHVdOwogCWlmIChzdWJidWZz X2NvbnN1bWVkID4gYnVmLT5zdWJidWZzX3Byb2R1Y2VkIC0gYnVmLT5zdWJidWZzX2NvbnN1bWVk KQogCQlidWYtPnN1YmJ1ZnNfY29uc3VtZWQgPSBidWYtPnN1YmJ1ZnNfcHJvZHVjZWQ7CiAJZWxz ZQpAQCAtODQyLDE4ICs4NTAsMTkgQEAgRVhQT1JUX1NZTUJPTF9HUEwocmVsYXlfc3ViYnVmc19j b25zdW1lZCk7CiAgKi8KIHZvaWQgcmVsYXlfY2xvc2Uoc3RydWN0IHJjaGFuICpjaGFuKQogewor CXN0cnVjdCByY2hhbl9idWYgKmJ1ZjsKIAl1bnNpZ25lZCBpbnQgaTsKIAogCWlmICghY2hhbikK IAkJcmV0dXJuOwogCiAJbXV0ZXhfbG9jaygmcmVsYXlfY2hhbm5lbHNfbXV0ZXgpOwotCWlmIChj aGFuLT5pc19nbG9iYWwgJiYgY2hhbi0+YnVmWzBdKQotCQlyZWxheV9jbG9zZV9idWYoY2hhbi0+ YnVmWzBdKTsKKwlpZiAoY2hhbi0+aXNfZ2xvYmFsICYmIChidWYgPSAqcGVyX2NwdV9wdHIoY2hh bi0+YnVmLCAwKSkpCisJCXJlbGF5X2Nsb3NlX2J1ZihidWYpOwogCWVsc2UKIAkJZm9yX2VhY2hf cG9zc2libGVfY3B1KGkpCi0JCQlpZiAoY2hhbi0+YnVmW2ldKQotCQkJCXJlbGF5X2Nsb3NlX2J1 ZihjaGFuLT5idWZbaV0pOworCQkJaWYgKChidWYgPSAqcGVyX2NwdV9wdHIoY2hhbi0+YnVmLCBp KSkpCisJCQkJcmVsYXlfY2xvc2VfYnVmKGJ1Zik7CiAKIAlpZiAoY2hhbi0+bGFzdF90b29iaWcp CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgInJlbGF5OiBvbmUgb3IgbW9yZSBpdGVtcyBub3QgbG9n Z2VkICIKQEAgLTg3NCwyMCArODgzLDIxIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJlbGF5X2Nsb3Nl KTsKICAqLwogdm9pZCByZWxheV9mbHVzaChzdHJ1Y3QgcmNoYW4gKmNoYW4pCiB7CisJc3RydWN0 IHJjaGFuX2J1ZiAqYnVmOwogCXVuc2lnbmVkIGludCBpOwogCiAJaWYgKCFjaGFuKQogCQlyZXR1 cm47CiAKLQlpZiAoY2hhbi0+aXNfZ2xvYmFsICYmIGNoYW4tPmJ1ZlswXSkgewotCQlyZWxheV9z d2l0Y2hfc3ViYnVmKGNoYW4tPmJ1ZlswXSwgMCk7CisJaWYgKGNoYW4tPmlzX2dsb2JhbCAmJiAo YnVmID0gKnBlcl9jcHVfcHRyKGNoYW4tPmJ1ZiwgMCkpKSB7CisJCXJlbGF5X3N3aXRjaF9zdWJi dWYoYnVmLCAwKTsKIAkJcmV0dXJuOwogCX0KIAogCW11dGV4X2xvY2soJnJlbGF5X2NoYW5uZWxz X211dGV4KTsKIAlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoaSkKLQkJaWYgKGNoYW4tPmJ1ZltpXSkK LQkJCXJlbGF5X3N3aXRjaF9zdWJidWYoY2hhbi0+YnVmW2ldLCAwKTsKKwkJaWYgKChidWYgPSAq cGVyX2NwdV9wdHIoY2hhbi0+YnVmLCBpKSkpCisJCQlyZWxheV9zd2l0Y2hfc3ViYnVmKGJ1Ziwg MCk7CiAJbXV0ZXhfdW5sb2NrKCZyZWxheV9jaGFubmVsc19tdXRleCk7CiB9CiBFWFBPUlRfU1lN Qk9MX0dQTChyZWxheV9mbHVzaCk7Ci0tIAoxLjkuMgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==