From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v1 1/4] tmem: Move global stats in a tmem_statistics structure Date: Thu, 2 Jun 2016 11:04:17 -0400 Message-ID: <1464879860-25554-2-git-send-email-konrad.wilk@oracle.com> References: <1464879860-25554-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.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b8UBL-0005cY-4W for xen-devel@lists.xenproject.org; Thu, 02 Jun 2016 15:05:11 +0000 In-Reply-To: <1464879860-25554-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: Doug Goldstein , Andrew Cooper , Wei Liu , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org QW5kIGFkanVzdCB0aGUgbWFjcm86IGF0b21pY19pbmNfYW5kX21heCB0byB1cGRhdGUgdGhlIHN0 cnVjdHVyZS4KClNhZGx5IG9uZSBlbnRyeTogcG9vbC0+cGdwX2NvdW50IGNhbm5vdCB1c2UgdGhp cyBtYWNybyBhbnltb3JlCnNvIHVucm9sbCB0aGUgbWFjcm8gZm9yIHRoaXMgaW5zdGFuY2UuCgpO byBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIG5hbWUgaGFzIHRoZSAndG1lbV9zdGF0cycgYXMgaXQg d2lsbApiZSBldmVudHVhbGx5IG5vbi1sb2NhbC4KClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVz enV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IERvdWcgR29s ZHN0ZWluIDxjYXJkb2VAY2FyZG9lLmNvbT4KCi0tLQpDYzogIEFuZHJldyBDb29wZXIgPGFuZHJl dy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t PgpDYzogIFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiAgRG91ZyBHb2xkc3RlaW4g PGNhcmRvZUBjYXJkb2UuY29tPgoKdjE6IFBvc3RpbmcgYXMgbm9uLVJGQwotLS0KIHhlbi9jb21t b24vdG1lbS5jIHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDYyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdG1lbS5jIGIveGVuL2NvbW1vbi90bWVt LmMKaW5kZXggMTZlMjQ5YS4uZDM2MmVhZSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi90bWVtLmMK KysrIGIveGVuL2NvbW1vbi90bWVtLmMKQEAgLTI4LDI1ICsyOCwzMiBAQAogI2RlZmluZSBUTUVN X1NQRUNfVkVSU0lPTiAxCiAKIC8qIEdsb2JhbCBzdGF0aXN0aWNzIChub25lIG5lZWQgdG8gYmUg bG9ja2VkKS4gKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHRvdGFsX3RtZW1fb3BzID0gMDsKLXN0 YXRpYyB1bnNpZ25lZCBsb25nIGVycm9yZWRfdG1lbV9vcHMgPSAwOwotc3RhdGljIHVuc2lnbmVk IGxvbmcgdG90YWxfZmx1c2hfcG9vbCA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBhbGxvY19m YWlsZWQgPSAwLCBhbGxvY19wYWdlX2ZhaWxlZCA9IDA7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBl dmljdGVkX3BncyA9IDAsIGV2aWN0X2F0dGVtcHRzID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25n IHJlbGlucV9wZ3MgPSAwLCByZWxpbnFfYXR0ZW1wdHMgPSAwOwotc3RhdGljIHVuc2lnbmVkIGxv bmcgbWF4X2V2aWN0c19wZXJfcmVsaW5xID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGxvd19v bl9tZW1vcnkgPSAwOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZGVkdXBlZF9wdXRzID0gMDsKLXN0 YXRpYyB1bnNpZ25lZCBsb25nIHRvdF9nb29kX2VwaF9wdXRzID0gMDsKLXN0YXRpYyBpbnQgZ2xv YmFsX29ial9jb3VudF9tYXggPSAwOwotc3RhdGljIGludCBnbG9iYWxfcGdwX2NvdW50X21heCA9 IDA7Ci1zdGF0aWMgaW50IGdsb2JhbF9wY2RfY291bnRfbWF4ID0gMDsKLXN0YXRpYyBpbnQgZ2xv YmFsX3BhZ2VfY291bnRfbWF4ID0gMDsKLXN0YXRpYyBpbnQgZ2xvYmFsX3J0cmVlX25vZGVfY291 bnRfbWF4ID0gMDsKLXN0YXRpYyBsb25nIGdsb2JhbF9lcGhfY291bnRfbWF4ID0gMDsKLXN0YXRp YyB1bnNpZ25lZCBsb25nIGZhaWxlZF9jb3BpZXM7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyBwY2Rf dG90X3R6ZV9zaXplID0gMDsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIHBjZF90b3RfY3NpemUgPSAw Oworc3RydWN0IHRtZW1fc3RhdGlzdGljcyB7CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbF90bWVt X29wczsKKyAgICB1bnNpZ25lZCBsb25nIGVycm9yZWRfdG1lbV9vcHM7CisgICAgdW5zaWduZWQg bG9uZyB0b3RhbF9mbHVzaF9wb29sOworICAgIHVuc2lnbmVkIGxvbmcgYWxsb2NfZmFpbGVkOwor ICAgIHVuc2lnbmVkIGxvbmcgYWxsb2NfcGFnZV9mYWlsZWQ7CisgICAgdW5zaWduZWQgbG9uZyBl dmljdGVkX3BnczsKKyAgICB1bnNpZ25lZCBsb25nIGV2aWN0X2F0dGVtcHRzOworICAgIHVuc2ln bmVkIGxvbmcgcmVsaW5xX3BnczsKKyAgICB1bnNpZ25lZCBsb25nIHJlbGlucV9hdHRlbXB0czsK KyAgICB1bnNpZ25lZCBsb25nIG1heF9ldmljdHNfcGVyX3JlbGlucTsKKyAgICB1bnNpZ25lZCBs b25nIGxvd19vbl9tZW1vcnk7CisgICAgdW5zaWduZWQgbG9uZyBkZWR1cGVkX3B1dHM7CisgICAg dW5zaWduZWQgbG9uZyB0b3RfZ29vZF9lcGhfcHV0czsKKyAgICBpbnQgZ2xvYmFsX29ial9jb3Vu dF9tYXg7CisgICAgaW50IGdsb2JhbF9wZ3BfY291bnRfbWF4OworICAgIGludCBnbG9iYWxfcGNk X2NvdW50X21heDsKKyAgICBpbnQgZ2xvYmFsX3BhZ2VfY291bnRfbWF4OworICAgIGludCBnbG9i YWxfcnRyZWVfbm9kZV9jb3VudF9tYXg7CisgICAgbG9uZyBnbG9iYWxfZXBoX2NvdW50X21heDsK KyAgICB1bnNpZ25lZCBsb25nIGZhaWxlZF9jb3BpZXM7CisgICAgdW5zaWduZWQgbG9uZyBwY2Rf dG90X3R6ZV9zaXplOworICAgIHVuc2lnbmVkIGxvbmcgcGNkX3RvdF9jc2l6ZTsKK307CisKK3N0 YXRpYyBzdHJ1Y3QgdG1lbV9zdGF0aXN0aWNzIHRtZW1fc3RhdHM7CiAKIC8qKioqKioqKioqKiog Q09SRSBEQVRBIFNUUlVDVFVSRVMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogCkBAIC0yMjUsOCArMjMyLDggQEAgc3RhdGljIGF0b21pY190IGdsb2JhbF9ydHJlZV9ub2Rl X2NvdW50ID0gQVRPTUlDX0lOSVQoMCk7CiAKICNkZWZpbmUgYXRvbWljX2luY19hbmRfbWF4KF9j KSBkbyB7IFwKICAgICBhdG9taWNfaW5jKCZfYyk7IFwKLSAgICBpZiAoIF9hdG9taWNfcmVhZChf YykgPiBfYyMjX21heCApIFwKLSAgICAgICAgX2MjI19tYXggPSBfYXRvbWljX3JlYWQoX2MpOyBc CisgICAgaWYgKCBfYXRvbWljX3JlYWQoX2MpID4gdG1lbV9zdGF0cy5fYyMjX21heCApIFwKKyAg ICAgICAgdG1lbV9zdGF0cy5fYyMjX21heCA9IF9hdG9taWNfcmVhZChfYyk7IFwKIH0gd2hpbGUg KDApCiAKICNkZWZpbmUgYXRvbWljX2RlY19hbmRfYXNzZXJ0KF9jKSBkbyB7IFwKQEAgLTI3Myw3 ICsyODAsNyBAQCBzdGF0aWMgdm9pZCAqdG1lbV9tYWxsb2Moc2l6ZV90IHNpemUsIHN0cnVjdCB0 bWVtX3Bvb2wgKnBvb2wpCiAgICAgICAgIHYgPSB4bWVtX3Bvb2xfYWxsb2Moc2l6ZSwgdG1lbV9t ZW1wb29sKTsKICAgICB9CiAgICAgaWYgKCB2ID09IE5VTEwgKQotICAgICAgICBhbGxvY19mYWls ZWQrKzsKKyAgICAgICAgdG1lbV9zdGF0cy5hbGxvY19mYWlsZWQrKzsKICAgICByZXR1cm4gdjsK IH0KIApAQCAtMzAwLDcgKzMwNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGFnZV9pbmZvICp0bWVtX2Fs bG9jX3BhZ2Uoc3RydWN0IHRtZW1fcG9vbCAqcG9vbCkKICAgICBlbHNlCiAgICAgICAgIHBmcCA9 IF9fdG1lbV9hbGxvY19wYWdlKCk7CiAgICAgaWYgKCBwZnAgPT0gTlVMTCApCi0gICAgICAgIGFs bG9jX3BhZ2VfZmFpbGVkKys7CisgICAgICAgIHRtZW1fc3RhdHMuYWxsb2NfcGFnZV9mYWlsZWQr KzsKICAgICBlbHNlCiAgICAgICAgIGF0b21pY19pbmNfYW5kX21heChnbG9iYWxfcGFnZV9jb3Vu dCk7CiAgICAgcmV0dXJuIHBmcDsKQEAgLTQzNywyMCArNDQ0LDIwIEBAIHN0YXRpYyB2b2lkIHBj ZF9kaXNhc3NvY2lhdGUoc3RydWN0IHRtZW1fcGFnZV9kZXNjcmlwdG9yICpwZ3AsIHN0cnVjdCB0 bWVtX3Bvb2wKICAgICB7CiAgICAgICAgIC8qIENvbXByZXNzZWQgZGF0YS4gKi8KICAgICAgICAg dG1lbV9mcmVlKHBjZF9jZGF0YSwgcG9vbCk7Ci0gICAgICAgIHBjZF90b3RfY3NpemUgLT0gcGNk X2NzaXplOworICAgICAgICB0bWVtX3N0YXRzLnBjZF90b3RfY3NpemUgLT0gcGNkX2NzaXplOwog ICAgIH0KICAgICBlbHNlIGlmICggcGNkX3NpemUgIT0gUEFHRV9TSVpFICkKICAgICB7CiAgICAg ICAgIC8qIFRyYWlsaW5nIHplcm8gZGF0YS4gKi8KLSAgICAgICAgcGNkX3RvdF90emVfc2l6ZSAt PSBwY2Rfc2l6ZTsKKyAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90X3R6ZV9zaXplIC09IHBjZF9z aXplOwogICAgICAgICBpZiAoIHBjZF9zaXplICkKICAgICAgICAgICAgIHRtZW1fZnJlZShwY2Rf dHplLCBwb29sKTsKICAgICB9IGVsc2UgewogICAgICAgICAvKiBSZWFsIHBoeXNpY2FsIHBhZ2Uu ICovCiAgICAgICAgIGlmICggdG1lbV90emVfZW5hYmxlZCgpICkKLSAgICAgICAgICAgIHBjZF90 b3RfdHplX3NpemUgLT0gUEFHRV9TSVpFOworICAgICAgICAgICAgdG1lbV9zdGF0cy5wY2RfdG90 X3R6ZV9zaXplIC09IFBBR0VfU0laRTsKICAgICAgICAgaWYgKCB0bWVtX2NvbXByZXNzaW9uX2Vu YWJsZWQoKSApCi0gICAgICAgICAgICBwY2RfdG90X2NzaXplIC09IFBBR0VfU0laRTsKKyAgICAg ICAgICAgIHRtZW1fc3RhdHMucGNkX3RvdF9jc2l6ZSAtPSBQQUdFX1NJWkU7CiAgICAgICAgIHRt ZW1fZnJlZV9wYWdlKHBvb2wscGZwKTsKICAgICB9CiAgICAgd3JpdGVfdW5sb2NrKCZwY2RfdHJl ZV9yd2xvY2tzW2ZpcnN0Ynl0ZV0pOwpAQCAtNTMzLDcgKzU0MCw3IEBAIHN0YXRpYyBpbnQgcGNk X2Fzc29jaWF0ZShzdHJ1Y3QgdG1lbV9wYWdlX2Rlc2NyaXB0b3IgKnBncCwgY2hhciAqY2RhdGEs IHBhZ2VzaXplCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmICggY2RhdGEgPT0gTlVM TCApCiAgICAgICAgICAgICAgICAgdG1lbV9mcmVlX3BhZ2UocGdwLT51cy5vYmotPnBvb2wscGdw LT5wZnApOwotICAgICAgICAgICAgZGVkdXBlZF9wdXRzKys7CisgICAgICAgICAgICB0bWVtX3N0 YXRzLmRlZHVwZWRfcHV0cysrOwogICAgICAgICAgICAgZ290byBtYXRjaDsKICAgICAgICAgfQog ICAgIH0KQEAgLTU1OSw3ICs1NjYsNyBAQCBzdGF0aWMgaW50IHBjZF9hc3NvY2lhdGUoc3RydWN0 IHRtZW1fcGFnZV9kZXNjcmlwdG9yICpwZ3AsIGNoYXIgKmNkYXRhLCBwYWdlc2l6ZQogICAgIHsK ICAgICAgICAgbWVtY3B5KHBjZC0+Y2RhdGEsY2RhdGEsY3NpemUpOwogICAgICAgICBwY2QtPnNp emUgPSBjc2l6ZTsKLSAgICAgICAgcGNkX3RvdF9jc2l6ZSArPSBjc2l6ZTsKKyAgICAgICAgdG1l bV9zdGF0cy5wY2RfdG90X2NzaXplICs9IGNzaXplOwogICAgIH0gZWxzZSBpZiAoIHBmcF9zaXpl ID09IDAgKSB7CiAgICAgICAgIEFTU0VSVCh0bWVtX3R6ZV9lbmFibGVkKCkpOwogICAgICAgICBw Y2QtPnNpemUgPSAwOwpAQCAtNTY4LDE1ICs1NzUsMTUgQEAgc3RhdGljIGludCBwY2RfYXNzb2Np YXRlKHN0cnVjdCB0bWVtX3BhZ2VfZGVzY3JpcHRvciAqcGdwLCBjaGFyICpjZGF0YSwgcGFnZXNp emUKICAgICAgICAgICgocGNkLT50emUgPSB0bWVtX21hbGxvYyhwZnBfc2l6ZSxwZ3AtPnVzLm9i ai0+cG9vbCkpICE9IE5VTEwpICkgewogICAgICAgICB0bWVtX3R6ZV9jb3B5X2Zyb21fcGZwKHBj ZC0+dHplLHBncC0+cGZwLHBmcF9zaXplKTsKICAgICAgICAgcGNkLT5zaXplID0gcGZwX3NpemU7 Ci0gICAgICAgIHBjZF90b3RfdHplX3NpemUgKz0gcGZwX3NpemU7CisgICAgICAgIHRtZW1fc3Rh dHMucGNkX3RvdF90emVfc2l6ZSArPSBwZnBfc2l6ZTsKICAgICAgICAgdG1lbV9mcmVlX3BhZ2Uo cGdwLT51cy5vYmotPnBvb2wscGdwLT5wZnApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHBjZC0+ cGZwID0gcGdwLT5wZnA7CiAgICAgICAgIHBjZC0+c2l6ZSA9IFBBR0VfU0laRTsKICAgICAgICAg aWYgKCB0bWVtX3R6ZV9lbmFibGVkKCkgKQotICAgICAgICAgICAgcGNkX3RvdF90emVfc2l6ZSAr PSBQQUdFX1NJWkU7CisgICAgICAgICAgICB0bWVtX3N0YXRzLnBjZF90b3RfdHplX3NpemUgKz0g UEFHRV9TSVpFOwogICAgICAgICBpZiAoIHRtZW1fY29tcHJlc3Npb25fZW5hYmxlZCgpICkKLSAg ICAgICAgICAgIHBjZF90b3RfY3NpemUgKz0gUEFHRV9TSVpFOworICAgICAgICAgICAgdG1lbV9z dGF0cy5wY2RfdG90X2NzaXplICs9IFBBR0VfU0laRTsKICAgICB9CiAgICAgcmJfbGlua19ub2Rl KCZwY2QtPnBjZF9yYl90cmVlX25vZGUsIHBhcmVudCwgbmV3KTsKICAgICByYl9pbnNlcnRfY29s b3IoJnBjZC0+cGNkX3JiX3RyZWVfbm9kZSwgcm9vdCk7CkBAIC02MjAsNyArNjI3LDkgQEAgc3Rh dGljIHN0cnVjdCB0bWVtX3BhZ2VfZGVzY3JpcHRvciAqcGdwX2FsbG9jKHN0cnVjdCB0bWVtX29i amVjdF9yb290ICpvYmopCiAgICAgcGdwLT5pbmRleCA9IC0xOwogICAgIHBncC0+dGltZXN0YW1w ID0gZ2V0X2N5Y2xlcygpOwogICAgIGF0b21pY19pbmNfYW5kX21heChnbG9iYWxfcGdwX2NvdW50 KTsKLSAgICBhdG9taWNfaW5jX2FuZF9tYXgocG9vbC0+cGdwX2NvdW50KTsKKyAgICBhdG9taWNf aW5jKCZwb29sLT5wZ3BfY291bnQpOworICAgIGlmICggX2F0b21pY19yZWFkKHBvb2wtPnBncF9j b3VudCkgPiBwb29sLT5wZ3BfY291bnRfbWF4ICkKKyAgICAgICAgcG9vbC0+cGdwX2NvdW50X21h eCA9IF9hdG9taWNfcmVhZChwb29sLT5wZ3BfY291bnQpOwogICAgIHJldHVybiBwZ3A7CiB9CiAK QEAgLTEyOTUsNyArMTMwNCw3IEBAIHN0YXRpYyBpbnQgdG1lbV9ldmljdCh2b2lkKQogICAgIGlu dCByZXQgPSAwOwogICAgIGJvb2xfdCBob2xkX3Bvb2xfcndsb2NrID0gMDsKIAotICAgIGV2aWN0 X2F0dGVtcHRzKys7CisgICAgdG1lbV9zdGF0cy5ldmljdF9hdHRlbXB0cysrOwogICAgIHNwaW5f bG9jaygmZXBoX2xpc3RzX3NwaW5sb2NrKTsKICAgICBpZiAoIChjbGllbnQgIT0gTlVMTCkgJiYg Y2xpZW50X292ZXJfcXVvdGEoY2xpZW50KSAmJgogICAgICAgICAgIWxpc3RfZW1wdHkoJmNsaWVu dC0+ZXBoZW1lcmFsX3BhZ2VfbGlzdCkgKQpAQCAtMTM1Myw3ICsxMzYyLDcgQEAgZm91bmQ6CiAg ICAgICAgIHNwaW5fdW5sb2NrKCZvYmotPm9ial9zcGlubG9jayk7CiAgICAgaWYgKCBob2xkX3Bv b2xfcndsb2NrICkKICAgICAgICAgd3JpdGVfdW5sb2NrKCZwb29sLT5wb29sX3J3bG9jayk7Ci0g ICAgZXZpY3RlZF9wZ3MrKzsKKyAgICB0bWVtX3N0YXRzLmV2aWN0ZWRfcGdzKys7CiAgICAgcmV0 ID0gMTsKIG91dDoKICAgICByZXR1cm4gcmV0OwpAQCAtMTUxMiw3ICsxNTIxLDcgQEAgZG9uZToK ICAgICByZXR1cm4gMTsKIAogYmFkX2NvcHk6Ci0gICAgZmFpbGVkX2NvcGllcysrOworICAgIHRt ZW1fc3RhdHMuZmFpbGVkX2NvcGllcysrOwogICAgIGdvdG8gY2xlYW51cDsKIAogZmFpbGVkX2R1 cDoKQEAgLTE2NTAsOCArMTY1OSw4IEBAIGluc2VydF9wYWdlOgogICAgICAgICBzcGluX2xvY2so JmVwaF9saXN0c19zcGlubG9jayk7CiAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnBncC0+Z2xvYmFs X2VwaF9wYWdlcywKICAgICAgICAgICAgICZnbG9iYWxfZXBoZW1lcmFsX3BhZ2VfbGlzdCk7Ci0g ICAgICAgIGlmICgrK2dsb2JhbF9lcGhfY291bnQgPiBnbG9iYWxfZXBoX2NvdW50X21heCkKLSAg ICAgICAgICAgIGdsb2JhbF9lcGhfY291bnRfbWF4ID0gZ2xvYmFsX2VwaF9jb3VudDsKKyAgICAg ICAgaWYgKCsrZ2xvYmFsX2VwaF9jb3VudCA+IHRtZW1fc3RhdHMuZ2xvYmFsX2VwaF9jb3VudF9t YXgpCisgICAgICAgICAgICB0bWVtX3N0YXRzLmdsb2JhbF9lcGhfY291bnRfbWF4ID0gZ2xvYmFs X2VwaF9jb3VudDsKICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcGdwLT51cy5jbGllbnRfZXBoX3Bh Z2VzLAogICAgICAgICAgICAgJmNsaWVudC0+ZXBoZW1lcmFsX3BhZ2VfbGlzdCk7CiAgICAgICAg IGlmICgrK2NsaWVudC0+ZXBoX2NvdW50ID4gY2xpZW50LT5lcGhfY291bnRfbWF4KQpAQCAtMTY3 NiwxMSArMTY4NSwxMSBAQCBpbnNlcnRfcGFnZToKICAgICBpZiAoIGlzX3BlcnNpc3RlbnQocG9v bCkgKQogICAgICAgICBjbGllbnQtPnN1Y2NfcGVyc19wdXRzKys7CiAgICAgZWxzZQotICAgICAg ICB0b3RfZ29vZF9lcGhfcHV0cysrOworICAgICAgICB0bWVtX3N0YXRzLnRvdF9nb29kX2VwaF9w dXRzKys7CiAgICAgcmV0dXJuIDE7CiAKIGJhZF9jb3B5OgotICAgIGZhaWxlZF9jb3BpZXMrKzsK KyAgICB0bWVtX3N0YXRzLmZhaWxlZF9jb3BpZXMrKzsKIAogZGVsX3BncF9mcm9tX29iajoKICAg ICBBU1NFUlQoKG9iaiAhPSBOVUxMKSAmJiAocGdwICE9IE5VTEwpICYmIChwZ3AtPmluZGV4ICE9 IC0xKSk7CkBAIC0xNzc4LDcgKzE3ODcsNyBAQCBzdGF0aWMgaW50IGRvX3RtZW1fZ2V0KHN0cnVj dCB0bWVtX3Bvb2wgKnBvb2wsCiAKIGJhZF9jb3B5OgogICAgIHNwaW5fdW5sb2NrKCZvYmotPm9i al9zcGlubG9jayk7Ci0gICAgZmFpbGVkX2NvcGllcysrOworICAgIHRtZW1fc3RhdHMuZmFpbGVk X2NvcGllcysrOwogICAgIHJldHVybiByYzsKIH0KIApAQCAtMjE5MCwyMiArMjE5OSwyNCBAQCBz dGF0aWMgaW50IHRtZW1jX2xpc3RfZ2xvYmFsKHRtZW1fY2xpX3ZhX3BhcmFtX3QgYnVmLCBpbnQg b2ZmLCB1aW50MzJfdCBsZW4sCiAgICAgbiArPSBzY25wcmludGYoaW5mbyxCU0laRSwiRz0iCiAg ICAgICAiVHQ6JWx1LFRlOiVsdSxDZjolbHUsQWY6JWx1LFBmOiVsdSxUYTolbHUsIgogICAgICAg IkxtOiVsdSxFdDolbHUsRWE6JWx1LFJ0OiVsdSxSYTolbHUsUng6JWx1LEZwOiVsdSVjIiwKLSAg ICAgIHRvdGFsX3RtZW1fb3BzLCBlcnJvcmVkX3RtZW1fb3BzLCBmYWlsZWRfY29waWVzLAotICAg ICAgYWxsb2NfZmFpbGVkLCBhbGxvY19wYWdlX2ZhaWxlZCwgdG1lbV9wYWdlX2xpc3RfcGFnZXMs Ci0gICAgICBsb3dfb25fbWVtb3J5LCBldmljdGVkX3BncywKLSAgICAgIGV2aWN0X2F0dGVtcHRz LCByZWxpbnFfcGdzLCByZWxpbnFfYXR0ZW1wdHMsIG1heF9ldmljdHNfcGVyX3JlbGlucSwKLSAg ICAgIHRvdGFsX2ZsdXNoX3Bvb2wsIHVzZV9sb25nID8gJywnIDogJ1xuJyk7CisgICAgICB0bWVt X3N0YXRzLnRvdGFsX3RtZW1fb3BzLCB0bWVtX3N0YXRzLmVycm9yZWRfdG1lbV9vcHMsIHRtZW1f c3RhdHMuZmFpbGVkX2NvcGllcywKKyAgICAgIHRtZW1fc3RhdHMuYWxsb2NfZmFpbGVkLCB0bWVt X3N0YXRzLmFsbG9jX3BhZ2VfZmFpbGVkLCB0bWVtX3BhZ2VfbGlzdF9wYWdlcywKKyAgICAgIHRt ZW1fc3RhdHMubG93X29uX21lbW9yeSwgdG1lbV9zdGF0cy5ldmljdGVkX3BncywKKyAgICAgIHRt ZW1fc3RhdHMuZXZpY3RfYXR0ZW1wdHMsIHRtZW1fc3RhdHMucmVsaW5xX3BncywgdG1lbV9zdGF0 cy5yZWxpbnFfYXR0ZW1wdHMsCisgICAgICB0bWVtX3N0YXRzLm1heF9ldmljdHNfcGVyX3JlbGlu cSwKKyAgICAgIHRtZW1fc3RhdHMudG90YWxfZmx1c2hfcG9vbCwgdXNlX2xvbmcgPyAnLCcgOiAn XG4nKTsKICAgICBpZiAodXNlX2xvbmcpCiAgICAgICAgIG4gKz0gc2NucHJpbnRmKGluZm8rbixC U0laRS1uLAogICAgICAgICAgICJFYzolbGQsRW06JWxkLE9jOiVkLE9tOiVkLE5jOiVkLE5tOiVk LFBjOiVkLFBtOiVkLCIKICAgICAgICAgICAiRmM6JWQsRm06JWQsU2M6JWQsU206JWQsRXA6JWx1 LEdkOiVsdSxadDolbHUsR3o6JWx1XG4iLAotICAgICAgICAgIGdsb2JhbF9lcGhfY291bnQsIGds b2JhbF9lcGhfY291bnRfbWF4LAotICAgICAgICAgIF9hdG9taWNfcmVhZChnbG9iYWxfb2JqX2Nv dW50KSwgZ2xvYmFsX29ial9jb3VudF9tYXgsCi0gICAgICAgICAgX2F0b21pY19yZWFkKGdsb2Jh bF9ydHJlZV9ub2RlX2NvdW50KSwgZ2xvYmFsX3J0cmVlX25vZGVfY291bnRfbWF4LAotICAgICAg ICAgIF9hdG9taWNfcmVhZChnbG9iYWxfcGdwX2NvdW50KSwgZ2xvYmFsX3BncF9jb3VudF9tYXgs Ci0gICAgICAgICAgX2F0b21pY19yZWFkKGdsb2JhbF9wYWdlX2NvdW50KSwgZ2xvYmFsX3BhZ2Vf Y291bnRfbWF4LAotICAgICAgICAgIF9hdG9taWNfcmVhZChnbG9iYWxfcGNkX2NvdW50KSwgZ2xv YmFsX3BjZF9jb3VudF9tYXgsCi0gICAgICAgICB0b3RfZ29vZF9lcGhfcHV0cyxkZWR1cGVkX3B1 dHMscGNkX3RvdF90emVfc2l6ZSxwY2RfdG90X2NzaXplKTsKKyAgICAgICAgICBnbG9iYWxfZXBo X2NvdW50LCB0bWVtX3N0YXRzLmdsb2JhbF9lcGhfY291bnRfbWF4LAorICAgICAgICAgIF9hdG9t aWNfcmVhZChnbG9iYWxfb2JqX2NvdW50KSwgdG1lbV9zdGF0cy5nbG9iYWxfb2JqX2NvdW50X21h eCwKKyAgICAgICAgICBfYXRvbWljX3JlYWQoZ2xvYmFsX3J0cmVlX25vZGVfY291bnQpLCB0bWVt X3N0YXRzLmdsb2JhbF9ydHJlZV9ub2RlX2NvdW50X21heCwKKyAgICAgICAgICBfYXRvbWljX3Jl YWQoZ2xvYmFsX3BncF9jb3VudCksIHRtZW1fc3RhdHMuZ2xvYmFsX3BncF9jb3VudF9tYXgsCisg ICAgICAgICAgX2F0b21pY19yZWFkKGdsb2JhbF9wYWdlX2NvdW50KSwgdG1lbV9zdGF0cy5nbG9i YWxfcGFnZV9jb3VudF9tYXgsCisgICAgICAgICAgX2F0b21pY19yZWFkKGdsb2JhbF9wY2RfY291 bnQpLCB0bWVtX3N0YXRzLmdsb2JhbF9wY2RfY291bnRfbWF4LAorICAgICAgICAgdG1lbV9zdGF0 cy50b3RfZ29vZF9lcGhfcHV0cyx0bWVtX3N0YXRzLmRlZHVwZWRfcHV0cyx0bWVtX3N0YXRzLnBj ZF90b3RfdHplX3NpemUsCisgICAgICAgICB0bWVtX3N0YXRzLnBjZF90b3RfY3NpemUpOwogICAg IGlmICggc3VtICsgbiA+PSBsZW4gKQogICAgICAgICByZXR1cm4gc3VtOwogICAgIGlmICggIWNv cHlfdG9fZ3Vlc3Rfb2Zmc2V0KGJ1Ziwgb2ZmICsgc3VtLCBpbmZvLCBuICsgMSkgKQpAQCAtMjY1 OCwxOCArMjY2OSwxOCBAQCBsb25nIGRvX3RtZW1fb3AodG1lbV9jbGlfb3BfdCB1b3BzKQogICAg IGlmICggeHNtX3RtZW1fb3AoWFNNX0hPT0spICkKICAgICAgICAgcmV0dXJuIC1FUEVSTTsKIAot ICAgIHRvdGFsX3RtZW1fb3BzKys7CisgICAgdG1lbV9zdGF0cy50b3RhbF90bWVtX29wcysrOwog CiAgICAgaWYgKCBjbGllbnQgIT0gTlVMTCAmJiBjbGllbnQtPmRvbWFpbi0+aXNfZHlpbmcgKQog ICAgIHsKLSAgICAgICAgZXJyb3JlZF90bWVtX29wcysrOworICAgICAgICB0bWVtX3N0YXRzLmVy cm9yZWRfdG1lbV9vcHMrKzsKICAgICAgICAgcmV0dXJuIC1FTk9ERVY7CiAgICAgfQogCiAgICAg aWYgKCB1bmxpa2VseSh0bWVtX2dldF90bWVtb3BfZnJvbV9jbGllbnQoJm9wLCB1b3BzKSAhPSAw KSApCiAgICAgewogICAgICAgICB0bWVtX2NsaWVudF9lcnIoInRtZW06IGNhbid0IGdldCB0bWVt IHN0cnVjdCBmcm9tICVzXG4iLCB0bWVtX2NsaWVudF9zdHIpOwotICAgICAgICBlcnJvcmVkX3Rt ZW1fb3BzKys7CisgICAgICAgIHRtZW1fc3RhdHMuZXJyb3JlZF90bWVtX29wcysrOwogICAgICAg ICByZXR1cm4gLUVGQVVMVDsKICAgICB9CiAKQEAgLTI3NjQsMTQgKzI3NzUsMTQgQEAgbG9uZyBk b190bWVtX29wKHRtZW1fY2xpX29wX3QgdW9wcykKICAgICAgICAgICAgIH0KICAgICAgICAgICAg IHJlYWRfdW5sb2NrKCZ0bWVtX3J3bG9jayk7CiAgICAgICAgICAgICBpZiAoIHJjIDwgMCApCi0g ICAgICAgICAgICAgICAgZXJyb3JlZF90bWVtX29wcysrOworICAgICAgICAgICAgICAgIHRtZW1f c3RhdHMuZXJyb3JlZF90bWVtX29wcysrOwogICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAg ICB9CiAgICAgfQogb3V0OgogICAgIHdyaXRlX3VubG9jaygmdG1lbV9yd2xvY2spOwogICAgIGlm ICggcmMgPCAwICkKLSAgICAgICAgZXJyb3JlZF90bWVtX29wcysrOworICAgICAgICB0bWVtX3N0 YXRzLmVycm9yZWRfdG1lbV9vcHMrKzsKICAgICByZXR1cm4gcmM7CiB9CiAKQEAgLTI4MDgsNyAr MjgxOSw3IEBAIHZvaWQgKnRtZW1fcmVsaW5xdWlzaF9wYWdlcyh1bnNpZ25lZCBpbnQgb3JkZXIs IHVuc2lnbmVkIGludCBtZW1mbGFncykKICAgICBpZiAoIXRtZW1fZW5hYmxlZCgpIHx8ICF0bWVt X2ZyZWVhYmxlX3BhZ2VzKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVsaW5xX2F0 dGVtcHRzKys7CisgICAgdG1lbV9zdGF0cy5yZWxpbnFfYXR0ZW1wdHMrKzsKICAgICBpZiAoIG9y ZGVyID4gMCApCiAgICAgewogI2lmbmRlZiBOREVCVUcKQEAgLTI4MjMsMTMgKzI4MzQsMTMgQEAg dm9pZCAqdG1lbV9yZWxpbnF1aXNoX3BhZ2VzKHVuc2lnbmVkIGludCBvcmRlciwgdW5zaWduZWQg aW50IG1lbWZsYWdzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGV2aWN0c19wZXJfcmVs aW5xKys7CiAgICAgfQotICAgIGlmICggZXZpY3RzX3Blcl9yZWxpbnEgPiBtYXhfZXZpY3RzX3Bl cl9yZWxpbnEgKQotICAgICAgICBtYXhfZXZpY3RzX3Blcl9yZWxpbnEgPSBldmljdHNfcGVyX3Jl bGlucTsKKyAgICBpZiAoIGV2aWN0c19wZXJfcmVsaW5xID4gdG1lbV9zdGF0cy5tYXhfZXZpY3Rz X3Blcl9yZWxpbnEgKQorICAgICAgICB0bWVtX3N0YXRzLm1heF9ldmljdHNfcGVyX3JlbGlucSA9 IGV2aWN0c19wZXJfcmVsaW5xOwogICAgIGlmICggcGZwICE9IE5VTEwgKQogICAgIHsKICAgICAg ICAgaWYgKCAhKG1lbWZsYWdzICYgTUVNRl90bWVtKSApCiAgICAgICAgICAgICBzY3J1Yl9vbmVf cGFnZShwZnApOwotICAgICAgICByZWxpbnFfcGdzKys7CisgICAgICAgIHRtZW1fc3RhdHMucmVs aW5xX3BncysrOwogICAgIH0KIAogICAgIHJldHVybiBwZnA7Ci0tIAoyLjUuNQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==