From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH RFC 1/4] tmem: Move global stats in a tmem_statistics structure Date: Mon, 16 May 2016 11:58:28 -0400 Message-ID: <1463414311-10677-2-git-send-email-konrad.wilk@oracle.com> References: <1463414311-10677-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2Kut-0003p8-PZ for xen-devel@lists.xenproject.org; Mon, 16 May 2016 15:58:47 +0000 In-Reply-To: <1463414311-10677-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, wei.liu2@citrix.com, jbeulich@suse.com, Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org QW5kIGFkanVzdCB0aGUgbWFjcm86IGF0b21pY19pbmNfYW5kX21heCB0byB1cGRhdGUgdGhlIHN0 cnVjdHVyZS4KClNhZGx5IG9uZSBlbnRyeTogcG9vbC0+cGdwX2NvdW50IGNhbm5vdCB1c2UgdGhp cyBtYWNybyBhbnltb3JlCnNvIHVucm9sbCB0aGUgbWFjcm8gZm9yIHRoaXMgaW5zdGFuY2UuCgpO byBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIG5hbWUgaGFzIHRoZSAndG1lbV9zdGF0cycgYXMgaXQg d2lsbApiZSBldmVudHVhbGx5IG5vbi1sb2NhbC4KClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVz enV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KLS0tCiB4ZW4vY29tbW9uL3RtZW0u YyB8IDEzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3RtZW0uYyBiL3hlbi9jb21tb24vdG1lbS5jCmluZGV4 IDE2ZTI0OWEuLmQzNjJlYWUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdG1lbS5jCisrKyBiL3hl bi9jb21tb24vdG1lbS5jCkBAIC0yOCwyNSArMjgsMzIgQEAKICNkZWZpbmUgVE1FTV9TUEVDX1ZF UlNJT04gMQogCiAvKiBHbG9iYWwgc3RhdGlzdGljcyAobm9uZSBuZWVkIHRvIGJlIGxvY2tlZCku ICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZyB0b3RhbF90bWVtX29wcyA9IDA7Ci1zdGF0aWMgdW5z aWduZWQgbG9uZyBlcnJvcmVkX3RtZW1fb3BzID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIHRv dGFsX2ZsdXNoX3Bvb2wgPSAwOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgYWxsb2NfZmFpbGVkID0g MCwgYWxsb2NfcGFnZV9mYWlsZWQgPSAwOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZXZpY3RlZF9w Z3MgPSAwLCBldmljdF9hdHRlbXB0cyA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWxpbnFf cGdzID0gMCwgcmVsaW5xX2F0dGVtcHRzID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1heF9l dmljdHNfcGVyX3JlbGlucSA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBsb3dfb25fbWVtb3J5 ID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGRlZHVwZWRfcHV0cyA9IDA7Ci1zdGF0aWMgdW5z aWduZWQgbG9uZyB0b3RfZ29vZF9lcGhfcHV0cyA9IDA7Ci1zdGF0aWMgaW50IGdsb2JhbF9vYmpf Y291bnRfbWF4ID0gMDsKLXN0YXRpYyBpbnQgZ2xvYmFsX3BncF9jb3VudF9tYXggPSAwOwotc3Rh dGljIGludCBnbG9iYWxfcGNkX2NvdW50X21heCA9IDA7Ci1zdGF0aWMgaW50IGdsb2JhbF9wYWdl X2NvdW50X21heCA9IDA7Ci1zdGF0aWMgaW50IGdsb2JhbF9ydHJlZV9ub2RlX2NvdW50X21heCA9 IDA7Ci1zdGF0aWMgbG9uZyBnbG9iYWxfZXBoX2NvdW50X21heCA9IDA7Ci1zdGF0aWMgdW5zaWdu ZWQgbG9uZyBmYWlsZWRfY29waWVzOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgcGNkX3RvdF90emVf c2l6ZSA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBwY2RfdG90X2NzaXplID0gMDsKK3N0cnVj dCB0bWVtX3N0YXRpc3RpY3MgeworICAgIHVuc2lnbmVkIGxvbmcgdG90YWxfdG1lbV9vcHM7Cisg ICAgdW5zaWduZWQgbG9uZyBlcnJvcmVkX3RtZW1fb3BzOworICAgIHVuc2lnbmVkIGxvbmcgdG90 YWxfZmx1c2hfcG9vbDsKKyAgICB1bnNpZ25lZCBsb25nIGFsbG9jX2ZhaWxlZDsKKyAgICB1bnNp Z25lZCBsb25nIGFsbG9jX3BhZ2VfZmFpbGVkOworICAgIHVuc2lnbmVkIGxvbmcgZXZpY3RlZF9w Z3M7CisgICAgdW5zaWduZWQgbG9uZyBldmljdF9hdHRlbXB0czsKKyAgICB1bnNpZ25lZCBsb25n IHJlbGlucV9wZ3M7CisgICAgdW5zaWduZWQgbG9uZyByZWxpbnFfYXR0ZW1wdHM7CisgICAgdW5z aWduZWQgbG9uZyBtYXhfZXZpY3RzX3Blcl9yZWxpbnE7CisgICAgdW5zaWduZWQgbG9uZyBsb3df b25fbWVtb3J5OworICAgIHVuc2lnbmVkIGxvbmcgZGVkdXBlZF9wdXRzOworICAgIHVuc2lnbmVk IGxvbmcgdG90X2dvb2RfZXBoX3B1dHM7CisgICAgaW50IGdsb2JhbF9vYmpfY291bnRfbWF4Owor ICAgIGludCBnbG9iYWxfcGdwX2NvdW50X21heDsKKyAgICBpbnQgZ2xvYmFsX3BjZF9jb3VudF9t YXg7CisgICAgaW50IGdsb2JhbF9wYWdlX2NvdW50X21heDsKKyAgICBpbnQgZ2xvYmFsX3J0cmVl X25vZGVfY291bnRfbWF4OworICAgIGxvbmcgZ2xvYmFsX2VwaF9jb3VudF9tYXg7CisgICAgdW5z aWduZWQgbG9uZyBmYWlsZWRfY29waWVzOworICAgIHVuc2lnbmVkIGxvbmcgcGNkX3RvdF90emVf c2l6ZTsKKyAgICB1bnNpZ25lZCBsb25nIHBjZF90b3RfY3NpemU7Cit9OworCitzdGF0aWMgc3Ry dWN0IHRtZW1fc3RhdGlzdGljcyB0bWVtX3N0YXRzOwogCiAvKioqKioqKioqKioqIENPUkUgREFU QSBTVFJVQ1RVUkVTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAt MjI1LDggKzIzMiw4IEBAIHN0YXRpYyBhdG9taWNfdCBnbG9iYWxfcnRyZWVfbm9kZV9jb3VudCA9 IEFUT01JQ19JTklUKDApOwogCiAjZGVmaW5lIGF0b21pY19pbmNfYW5kX21heChfYykgZG8geyBc CiAgICAgYXRvbWljX2luYygmX2MpOyBcCi0gICAgaWYgKCBfYXRvbWljX3JlYWQoX2MpID4gX2Mj I19tYXggKSBcCi0gICAgICAgIF9jIyNfbWF4ID0gX2F0b21pY19yZWFkKF9jKTsgXAorICAgIGlm ICggX2F0b21pY19yZWFkKF9jKSA+IHRtZW1fc3RhdHMuX2MjI19tYXggKSBcCisgICAgICAgIHRt ZW1fc3RhdHMuX2MjI19tYXggPSBfYXRvbWljX3JlYWQoX2MpOyBcCiB9IHdoaWxlICgwKQogCiAj ZGVmaW5lIGF0b21pY19kZWNfYW5kX2Fzc2VydChfYykgZG8geyBcCkBAIC0yNzMsNyArMjgwLDcg QEAgc3RhdGljIHZvaWQgKnRtZW1fbWFsbG9jKHNpemVfdCBzaXplLCBzdHJ1Y3QgdG1lbV9wb29s ICpwb29sKQogICAgICAgICB2ID0geG1lbV9wb29sX2FsbG9jKHNpemUsIHRtZW1fbWVtcG9vbCk7 CiAgICAgfQogICAgIGlmICggdiA9PSBOVUxMICkKLSAgICAgICAgYWxsb2NfZmFpbGVkKys7Cisg ICAgICAgIHRtZW1fc3RhdHMuYWxsb2NfZmFpbGVkKys7CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAg LTMwMCw3ICszMDcsNyBAQCBzdGF0aWMgc3RydWN0IHBhZ2VfaW5mbyAqdG1lbV9hbGxvY19wYWdl KHN0cnVjdCB0bWVtX3Bvb2wgKnBvb2wpCiAgICAgZWxzZQogICAgICAgICBwZnAgPSBfX3RtZW1f YWxsb2NfcGFnZSgpOwogICAgIGlmICggcGZwID09IE5VTEwgKQotICAgICAgICBhbGxvY19wYWdl X2ZhaWxlZCsrOworICAgICAgICB0bWVtX3N0YXRzLmFsbG9jX3BhZ2VfZmFpbGVkKys7CiAgICAg ZWxzZQogICAgICAgICBhdG9taWNfaW5jX2FuZF9tYXgoZ2xvYmFsX3BhZ2VfY291bnQpOwogICAg IHJldHVybiBwZnA7CkBAIC00MzcsMjAgKzQ0NCwyMCBAQCBzdGF0aWMgdm9pZCBwY2RfZGlzYXNz b2NpYXRlKHN0cnVjdCB0bWVtX3BhZ2VfZGVzY3JpcHRvciAqcGdwLCBzdHJ1Y3QgdG1lbV9wb29s CiAgICAgewogICAgICAgICAvKiBDb21wcmVzc2VkIGRhdGEuICovCiAgICAgICAgIHRtZW1fZnJl ZShwY2RfY2RhdGEsIHBvb2wpOwotICAgICAgICBwY2RfdG90X2NzaXplIC09IHBjZF9jc2l6ZTsK KyAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90X2NzaXplIC09IHBjZF9jc2l6ZTsKICAgICB9CiAg ICAgZWxzZSBpZiAoIHBjZF9zaXplICE9IFBBR0VfU0laRSApCiAgICAgewogICAgICAgICAvKiBU cmFpbGluZyB6ZXJvIGRhdGEuICovCi0gICAgICAgIHBjZF90b3RfdHplX3NpemUgLT0gcGNkX3Np emU7CisgICAgICAgIHRtZW1fc3RhdHMucGNkX3RvdF90emVfc2l6ZSAtPSBwY2Rfc2l6ZTsKICAg ICAgICAgaWYgKCBwY2Rfc2l6ZSApCiAgICAgICAgICAgICB0bWVtX2ZyZWUocGNkX3R6ZSwgcG9v bCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogUmVhbCBwaHlzaWNhbCBwYWdlLiAqLwogICAg ICAgICBpZiAoIHRtZW1fdHplX2VuYWJsZWQoKSApCi0gICAgICAgICAgICBwY2RfdG90X3R6ZV9z aXplIC09IFBBR0VfU0laRTsKKyAgICAgICAgICAgIHRtZW1fc3RhdHMucGNkX3RvdF90emVfc2l6 ZSAtPSBQQUdFX1NJWkU7CiAgICAgICAgIGlmICggdG1lbV9jb21wcmVzc2lvbl9lbmFibGVkKCkg KQotICAgICAgICAgICAgcGNkX3RvdF9jc2l6ZSAtPSBQQUdFX1NJWkU7CisgICAgICAgICAgICB0 bWVtX3N0YXRzLnBjZF90b3RfY3NpemUgLT0gUEFHRV9TSVpFOwogICAgICAgICB0bWVtX2ZyZWVf cGFnZShwb29sLHBmcCk7CiAgICAgfQogICAgIHdyaXRlX3VubG9jaygmcGNkX3RyZWVfcndsb2Nr c1tmaXJzdGJ5dGVdKTsKQEAgLTUzMyw3ICs1NDAsNyBAQCBzdGF0aWMgaW50IHBjZF9hc3NvY2lh dGUoc3RydWN0IHRtZW1fcGFnZV9kZXNjcmlwdG9yICpwZ3AsIGNoYXIgKmNkYXRhLCBwYWdlc2l6 ZQogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoIGNkYXRhID09IE5VTEwgKQogICAg ICAgICAgICAgICAgIHRtZW1fZnJlZV9wYWdlKHBncC0+dXMub2JqLT5wb29sLHBncC0+cGZwKTsK LSAgICAgICAgICAgIGRlZHVwZWRfcHV0cysrOworICAgICAgICAgICAgdG1lbV9zdGF0cy5kZWR1 cGVkX3B1dHMrKzsKICAgICAgICAgICAgIGdvdG8gbWF0Y2g7CiAgICAgICAgIH0KICAgICB9CkBA IC01NTksNyArNTY2LDcgQEAgc3RhdGljIGludCBwY2RfYXNzb2NpYXRlKHN0cnVjdCB0bWVtX3Bh Z2VfZGVzY3JpcHRvciAqcGdwLCBjaGFyICpjZGF0YSwgcGFnZXNpemUKICAgICB7CiAgICAgICAg IG1lbWNweShwY2QtPmNkYXRhLGNkYXRhLGNzaXplKTsKICAgICAgICAgcGNkLT5zaXplID0gY3Np emU7Ci0gICAgICAgIHBjZF90b3RfY3NpemUgKz0gY3NpemU7CisgICAgICAgIHRtZW1fc3RhdHMu cGNkX3RvdF9jc2l6ZSArPSBjc2l6ZTsKICAgICB9IGVsc2UgaWYgKCBwZnBfc2l6ZSA9PSAwICkg ewogICAgICAgICBBU1NFUlQodG1lbV90emVfZW5hYmxlZCgpKTsKICAgICAgICAgcGNkLT5zaXpl ID0gMDsKQEAgLTU2OCwxNSArNTc1LDE1IEBAIHN0YXRpYyBpbnQgcGNkX2Fzc29jaWF0ZShzdHJ1 Y3QgdG1lbV9wYWdlX2Rlc2NyaXB0b3IgKnBncCwgY2hhciAqY2RhdGEsIHBhZ2VzaXplCiAgICAg ICAgICAoKHBjZC0+dHplID0gdG1lbV9tYWxsb2MocGZwX3NpemUscGdwLT51cy5vYmotPnBvb2wp KSAhPSBOVUxMKSApIHsKICAgICAgICAgdG1lbV90emVfY29weV9mcm9tX3BmcChwY2QtPnR6ZSxw Z3AtPnBmcCxwZnBfc2l6ZSk7CiAgICAgICAgIHBjZC0+c2l6ZSA9IHBmcF9zaXplOwotICAgICAg ICBwY2RfdG90X3R6ZV9zaXplICs9IHBmcF9zaXplOworICAgICAgICB0bWVtX3N0YXRzLnBjZF90 b3RfdHplX3NpemUgKz0gcGZwX3NpemU7CiAgICAgICAgIHRtZW1fZnJlZV9wYWdlKHBncC0+dXMu b2JqLT5wb29sLHBncC0+cGZwKTsKICAgICB9IGVsc2UgewogICAgICAgICBwY2QtPnBmcCA9IHBn cC0+cGZwOwogICAgICAgICBwY2QtPnNpemUgPSBQQUdFX1NJWkU7CiAgICAgICAgIGlmICggdG1l bV90emVfZW5hYmxlZCgpICkKLSAgICAgICAgICAgIHBjZF90b3RfdHplX3NpemUgKz0gUEFHRV9T SVpFOworICAgICAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90X3R6ZV9zaXplICs9IFBBR0VfU0la RTsKICAgICAgICAgaWYgKCB0bWVtX2NvbXByZXNzaW9uX2VuYWJsZWQoKSApCi0gICAgICAgICAg ICBwY2RfdG90X2NzaXplICs9IFBBR0VfU0laRTsKKyAgICAgICAgICAgIHRtZW1fc3RhdHMucGNk X3RvdF9jc2l6ZSArPSBQQUdFX1NJWkU7CiAgICAgfQogICAgIHJiX2xpbmtfbm9kZSgmcGNkLT5w Y2RfcmJfdHJlZV9ub2RlLCBwYXJlbnQsIG5ldyk7CiAgICAgcmJfaW5zZXJ0X2NvbG9yKCZwY2Qt PnBjZF9yYl90cmVlX25vZGUsIHJvb3QpOwpAQCAtNjIwLDcgKzYyNyw5IEBAIHN0YXRpYyBzdHJ1 Y3QgdG1lbV9wYWdlX2Rlc2NyaXB0b3IgKnBncF9hbGxvYyhzdHJ1Y3QgdG1lbV9vYmplY3Rfcm9v dCAqb2JqKQogICAgIHBncC0+aW5kZXggPSAtMTsKICAgICBwZ3AtPnRpbWVzdGFtcCA9IGdldF9j eWNsZXMoKTsKICAgICBhdG9taWNfaW5jX2FuZF9tYXgoZ2xvYmFsX3BncF9jb3VudCk7Ci0gICAg YXRvbWljX2luY19hbmRfbWF4KHBvb2wtPnBncF9jb3VudCk7CisgICAgYXRvbWljX2luYygmcG9v bC0+cGdwX2NvdW50KTsKKyAgICBpZiAoIF9hdG9taWNfcmVhZChwb29sLT5wZ3BfY291bnQpID4g cG9vbC0+cGdwX2NvdW50X21heCApCisgICAgICAgIHBvb2wtPnBncF9jb3VudF9tYXggPSBfYXRv bWljX3JlYWQocG9vbC0+cGdwX2NvdW50KTsKICAgICByZXR1cm4gcGdwOwogfQogCkBAIC0xMjk1 LDcgKzEzMDQsNyBAQCBzdGF0aWMgaW50IHRtZW1fZXZpY3Qodm9pZCkKICAgICBpbnQgcmV0ID0g MDsKICAgICBib29sX3QgaG9sZF9wb29sX3J3bG9jayA9IDA7CiAKLSAgICBldmljdF9hdHRlbXB0 cysrOworICAgIHRtZW1fc3RhdHMuZXZpY3RfYXR0ZW1wdHMrKzsKICAgICBzcGluX2xvY2soJmVw aF9saXN0c19zcGlubG9jayk7CiAgICAgaWYgKCAoY2xpZW50ICE9IE5VTEwpICYmIGNsaWVudF9v dmVyX3F1b3RhKGNsaWVudCkgJiYKICAgICAgICAgICFsaXN0X2VtcHR5KCZjbGllbnQtPmVwaGVt ZXJhbF9wYWdlX2xpc3QpICkKQEAgLTEzNTMsNyArMTM2Miw3IEBAIGZvdW5kOgogICAgICAgICBz cGluX3VubG9jaygmb2JqLT5vYmpfc3BpbmxvY2spOwogICAgIGlmICggaG9sZF9wb29sX3J3bG9j ayApCiAgICAgICAgIHdyaXRlX3VubG9jaygmcG9vbC0+cG9vbF9yd2xvY2spOwotICAgIGV2aWN0 ZWRfcGdzKys7CisgICAgdG1lbV9zdGF0cy5ldmljdGVkX3BncysrOwogICAgIHJldCA9IDE7CiBv dXQ6CiAgICAgcmV0dXJuIHJldDsKQEAgLTE1MTIsNyArMTUyMSw3IEBAIGRvbmU6CiAgICAgcmV0 dXJuIDE7CiAKIGJhZF9jb3B5OgotICAgIGZhaWxlZF9jb3BpZXMrKzsKKyAgICB0bWVtX3N0YXRz LmZhaWxlZF9jb3BpZXMrKzsKICAgICBnb3RvIGNsZWFudXA7CiAKIGZhaWxlZF9kdXA6CkBAIC0x NjUwLDggKzE2NTksOCBAQCBpbnNlcnRfcGFnZToKICAgICAgICAgc3Bpbl9sb2NrKCZlcGhfbGlz dHNfc3BpbmxvY2spOwogICAgICAgICBsaXN0X2FkZF90YWlsKCZwZ3AtPmdsb2JhbF9lcGhfcGFn ZXMsCiAgICAgICAgICAgICAmZ2xvYmFsX2VwaGVtZXJhbF9wYWdlX2xpc3QpOwotICAgICAgICBp ZiAoKytnbG9iYWxfZXBoX2NvdW50ID4gZ2xvYmFsX2VwaF9jb3VudF9tYXgpCi0gICAgICAgICAg ICBnbG9iYWxfZXBoX2NvdW50X21heCA9IGdsb2JhbF9lcGhfY291bnQ7CisgICAgICAgIGlmICgr K2dsb2JhbF9lcGhfY291bnQgPiB0bWVtX3N0YXRzLmdsb2JhbF9lcGhfY291bnRfbWF4KQorICAg ICAgICAgICAgdG1lbV9zdGF0cy5nbG9iYWxfZXBoX2NvdW50X21heCA9IGdsb2JhbF9lcGhfY291 bnQ7CiAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnBncC0+dXMuY2xpZW50X2VwaF9wYWdlcywKICAg ICAgICAgICAgICZjbGllbnQtPmVwaGVtZXJhbF9wYWdlX2xpc3QpOwogICAgICAgICBpZiAoKytj bGllbnQtPmVwaF9jb3VudCA+IGNsaWVudC0+ZXBoX2NvdW50X21heCkKQEAgLTE2NzYsMTEgKzE2 ODUsMTEgQEAgaW5zZXJ0X3BhZ2U6CiAgICAgaWYgKCBpc19wZXJzaXN0ZW50KHBvb2wpICkKICAg ICAgICAgY2xpZW50LT5zdWNjX3BlcnNfcHV0cysrOwogICAgIGVsc2UKLSAgICAgICAgdG90X2dv b2RfZXBoX3B1dHMrKzsKKyAgICAgICAgdG1lbV9zdGF0cy50b3RfZ29vZF9lcGhfcHV0cysrOwog ICAgIHJldHVybiAxOwogCiBiYWRfY29weToKLSAgICBmYWlsZWRfY29waWVzKys7CisgICAgdG1l bV9zdGF0cy5mYWlsZWRfY29waWVzKys7CiAKIGRlbF9wZ3BfZnJvbV9vYmo6CiAgICAgQVNTRVJU KChvYmogIT0gTlVMTCkgJiYgKHBncCAhPSBOVUxMKSAmJiAocGdwLT5pbmRleCAhPSAtMSkpOwpA QCAtMTc3OCw3ICsxNzg3LDcgQEAgc3RhdGljIGludCBkb190bWVtX2dldChzdHJ1Y3QgdG1lbV9w b29sICpwb29sLAogCiBiYWRfY29weToKICAgICBzcGluX3VubG9jaygmb2JqLT5vYmpfc3Bpbmxv Y2spOwotICAgIGZhaWxlZF9jb3BpZXMrKzsKKyAgICB0bWVtX3N0YXRzLmZhaWxlZF9jb3BpZXMr KzsKICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTIxOTAsMjIgKzIxOTksMjQgQEAgc3RhdGljIGlu dCB0bWVtY19saXN0X2dsb2JhbCh0bWVtX2NsaV92YV9wYXJhbV90IGJ1ZiwgaW50IG9mZiwgdWlu dDMyX3QgbGVuLAogICAgIG4gKz0gc2NucHJpbnRmKGluZm8sQlNJWkUsIkc9IgogICAgICAgIlR0 OiVsdSxUZTolbHUsQ2Y6JWx1LEFmOiVsdSxQZjolbHUsVGE6JWx1LCIKICAgICAgICJMbTolbHUs RXQ6JWx1LEVhOiVsdSxSdDolbHUsUmE6JWx1LFJ4OiVsdSxGcDolbHUlYyIsCi0gICAgICB0b3Rh bF90bWVtX29wcywgZXJyb3JlZF90bWVtX29wcywgZmFpbGVkX2NvcGllcywKLSAgICAgIGFsbG9j X2ZhaWxlZCwgYWxsb2NfcGFnZV9mYWlsZWQsIHRtZW1fcGFnZV9saXN0X3BhZ2VzLAotICAgICAg bG93X29uX21lbW9yeSwgZXZpY3RlZF9wZ3MsCi0gICAgICBldmljdF9hdHRlbXB0cywgcmVsaW5x X3BncywgcmVsaW5xX2F0dGVtcHRzLCBtYXhfZXZpY3RzX3Blcl9yZWxpbnEsCi0gICAgICB0b3Rh bF9mbHVzaF9wb29sLCB1c2VfbG9uZyA/ICcsJyA6ICdcbicpOworICAgICAgdG1lbV9zdGF0cy50 b3RhbF90bWVtX29wcywgdG1lbV9zdGF0cy5lcnJvcmVkX3RtZW1fb3BzLCB0bWVtX3N0YXRzLmZh aWxlZF9jb3BpZXMsCisgICAgICB0bWVtX3N0YXRzLmFsbG9jX2ZhaWxlZCwgdG1lbV9zdGF0cy5h bGxvY19wYWdlX2ZhaWxlZCwgdG1lbV9wYWdlX2xpc3RfcGFnZXMsCisgICAgICB0bWVtX3N0YXRz Lmxvd19vbl9tZW1vcnksIHRtZW1fc3RhdHMuZXZpY3RlZF9wZ3MsCisgICAgICB0bWVtX3N0YXRz LmV2aWN0X2F0dGVtcHRzLCB0bWVtX3N0YXRzLnJlbGlucV9wZ3MsIHRtZW1fc3RhdHMucmVsaW5x X2F0dGVtcHRzLAorICAgICAgdG1lbV9zdGF0cy5tYXhfZXZpY3RzX3Blcl9yZWxpbnEsCisgICAg ICB0bWVtX3N0YXRzLnRvdGFsX2ZsdXNoX3Bvb2wsIHVzZV9sb25nID8gJywnIDogJ1xuJyk7CiAg ICAgaWYgKHVzZV9sb25nKQogICAgICAgICBuICs9IHNjbnByaW50ZihpbmZvK24sQlNJWkUtbiwK ICAgICAgICAgICAiRWM6JWxkLEVtOiVsZCxPYzolZCxPbTolZCxOYzolZCxObTolZCxQYzolZCxQ bTolZCwiCiAgICAgICAgICAgIkZjOiVkLEZtOiVkLFNjOiVkLFNtOiVkLEVwOiVsdSxHZDolbHUs WnQ6JWx1LEd6OiVsdVxuIiwKLSAgICAgICAgICBnbG9iYWxfZXBoX2NvdW50LCBnbG9iYWxfZXBo X2NvdW50X21heCwKLSAgICAgICAgICBfYXRvbWljX3JlYWQoZ2xvYmFsX29ial9jb3VudCksIGds b2JhbF9vYmpfY291bnRfbWF4LAotICAgICAgICAgIF9hdG9taWNfcmVhZChnbG9iYWxfcnRyZWVf bm9kZV9jb3VudCksIGdsb2JhbF9ydHJlZV9ub2RlX2NvdW50X21heCwKLSAgICAgICAgICBfYXRv bWljX3JlYWQoZ2xvYmFsX3BncF9jb3VudCksIGdsb2JhbF9wZ3BfY291bnRfbWF4LAotICAgICAg ICAgIF9hdG9taWNfcmVhZChnbG9iYWxfcGFnZV9jb3VudCksIGdsb2JhbF9wYWdlX2NvdW50X21h eCwKLSAgICAgICAgICBfYXRvbWljX3JlYWQoZ2xvYmFsX3BjZF9jb3VudCksIGdsb2JhbF9wY2Rf Y291bnRfbWF4LAotICAgICAgICAgdG90X2dvb2RfZXBoX3B1dHMsZGVkdXBlZF9wdXRzLHBjZF90 b3RfdHplX3NpemUscGNkX3RvdF9jc2l6ZSk7CisgICAgICAgICAgZ2xvYmFsX2VwaF9jb3VudCwg dG1lbV9zdGF0cy5nbG9iYWxfZXBoX2NvdW50X21heCwKKyAgICAgICAgICBfYXRvbWljX3JlYWQo Z2xvYmFsX29ial9jb3VudCksIHRtZW1fc3RhdHMuZ2xvYmFsX29ial9jb3VudF9tYXgsCisgICAg ICAgICAgX2F0b21pY19yZWFkKGdsb2JhbF9ydHJlZV9ub2RlX2NvdW50KSwgdG1lbV9zdGF0cy5n bG9iYWxfcnRyZWVfbm9kZV9jb3VudF9tYXgsCisgICAgICAgICAgX2F0b21pY19yZWFkKGdsb2Jh bF9wZ3BfY291bnQpLCB0bWVtX3N0YXRzLmdsb2JhbF9wZ3BfY291bnRfbWF4LAorICAgICAgICAg IF9hdG9taWNfcmVhZChnbG9iYWxfcGFnZV9jb3VudCksIHRtZW1fc3RhdHMuZ2xvYmFsX3BhZ2Vf Y291bnRfbWF4LAorICAgICAgICAgIF9hdG9taWNfcmVhZChnbG9iYWxfcGNkX2NvdW50KSwgdG1l bV9zdGF0cy5nbG9iYWxfcGNkX2NvdW50X21heCwKKyAgICAgICAgIHRtZW1fc3RhdHMudG90X2dv b2RfZXBoX3B1dHMsdG1lbV9zdGF0cy5kZWR1cGVkX3B1dHMsdG1lbV9zdGF0cy5wY2RfdG90X3R6 ZV9zaXplLAorICAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90X2NzaXplKTsKICAgICBpZiAoIHN1 bSArIG4gPj0gbGVuICkKICAgICAgICAgcmV0dXJuIHN1bTsKICAgICBpZiAoICFjb3B5X3RvX2d1 ZXN0X29mZnNldChidWYsIG9mZiArIHN1bSwgaW5mbywgbiArIDEpICkKQEAgLTI2NTgsMTggKzI2 NjksMTggQEAgbG9uZyBkb190bWVtX29wKHRtZW1fY2xpX29wX3QgdW9wcykKICAgICBpZiAoIHhz bV90bWVtX29wKFhTTV9IT09LKSApCiAgICAgICAgIHJldHVybiAtRVBFUk07CiAKLSAgICB0b3Rh bF90bWVtX29wcysrOworICAgIHRtZW1fc3RhdHMudG90YWxfdG1lbV9vcHMrKzsKIAogICAgIGlm ICggY2xpZW50ICE9IE5VTEwgJiYgY2xpZW50LT5kb21haW4tPmlzX2R5aW5nICkKICAgICB7Ci0g ICAgICAgIGVycm9yZWRfdG1lbV9vcHMrKzsKKyAgICAgICAgdG1lbV9zdGF0cy5lcnJvcmVkX3Rt ZW1fb3BzKys7CiAgICAgICAgIHJldHVybiAtRU5PREVWOwogICAgIH0KIAogICAgIGlmICggdW5s aWtlbHkodG1lbV9nZXRfdG1lbW9wX2Zyb21fY2xpZW50KCZvcCwgdW9wcykgIT0gMCkgKQogICAg IHsKICAgICAgICAgdG1lbV9jbGllbnRfZXJyKCJ0bWVtOiBjYW4ndCBnZXQgdG1lbSBzdHJ1Y3Qg ZnJvbSAlc1xuIiwgdG1lbV9jbGllbnRfc3RyKTsKLSAgICAgICAgZXJyb3JlZF90bWVtX29wcysr OworICAgICAgICB0bWVtX3N0YXRzLmVycm9yZWRfdG1lbV9vcHMrKzsKICAgICAgICAgcmV0dXJu IC1FRkFVTFQ7CiAgICAgfQogCkBAIC0yNzY0LDE0ICsyNzc1LDE0IEBAIGxvbmcgZG9fdG1lbV9v cCh0bWVtX2NsaV9vcF90IHVvcHMpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZWFkX3Vu bG9jaygmdG1lbV9yd2xvY2spOwogICAgICAgICAgICAgaWYgKCByYyA8IDAgKQotICAgICAgICAg ICAgICAgIGVycm9yZWRfdG1lbV9vcHMrKzsKKyAgICAgICAgICAgICAgICB0bWVtX3N0YXRzLmVy cm9yZWRfdG1lbV9vcHMrKzsKICAgICAgICAgICAgIHJldHVybiByYzsKICAgICAgICAgfQogICAg IH0KIG91dDoKICAgICB3cml0ZV91bmxvY2soJnRtZW1fcndsb2NrKTsKICAgICBpZiAoIHJjIDwg MCApCi0gICAgICAgIGVycm9yZWRfdG1lbV9vcHMrKzsKKyAgICAgICAgdG1lbV9zdGF0cy5lcnJv cmVkX3RtZW1fb3BzKys7CiAgICAgcmV0dXJuIHJjOwogfQogCkBAIC0yODA4LDcgKzI4MTksNyBA QCB2b2lkICp0bWVtX3JlbGlucXVpc2hfcGFnZXModW5zaWduZWQgaW50IG9yZGVyLCB1bnNpZ25l ZCBpbnQgbWVtZmxhZ3MpCiAgICAgaWYgKCF0bWVtX2VuYWJsZWQoKSB8fCAhdG1lbV9mcmVlYWJs ZV9wYWdlcygpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlbGlucV9hdHRlbXB0cysr OworICAgIHRtZW1fc3RhdHMucmVsaW5xX2F0dGVtcHRzKys7CiAgICAgaWYgKCBvcmRlciA+IDAg KQogICAgIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yODIzLDEzICsyODM0LDEzIEBAIHZvaWQgKnRt ZW1fcmVsaW5xdWlzaF9wYWdlcyh1bnNpZ25lZCBpbnQgb3JkZXIsIHVuc2lnbmVkIGludCBtZW1m bGFncykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBldmljdHNfcGVyX3JlbGlucSsrOwog ICAgIH0KLSAgICBpZiAoIGV2aWN0c19wZXJfcmVsaW5xID4gbWF4X2V2aWN0c19wZXJfcmVsaW5x ICkKLSAgICAgICAgbWF4X2V2aWN0c19wZXJfcmVsaW5xID0gZXZpY3RzX3Blcl9yZWxpbnE7Cisg ICAgaWYgKCBldmljdHNfcGVyX3JlbGlucSA+IHRtZW1fc3RhdHMubWF4X2V2aWN0c19wZXJfcmVs aW5xICkKKyAgICAgICAgdG1lbV9zdGF0cy5tYXhfZXZpY3RzX3Blcl9yZWxpbnEgPSBldmljdHNf cGVyX3JlbGlucTsKICAgICBpZiAoIHBmcCAhPSBOVUxMICkKICAgICB7CiAgICAgICAgIGlmICgg IShtZW1mbGFncyAmIE1FTUZfdG1lbSkgKQogICAgICAgICAgICAgc2NydWJfb25lX3BhZ2UocGZw KTsKLSAgICAgICAgcmVsaW5xX3BncysrOworICAgICAgICB0bWVtX3N0YXRzLnJlbGlucV9wZ3Mr KzsKICAgICB9CiAKICAgICByZXR1cm4gcGZwOwotLSAKMi41LjUKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=