From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v1 3/4] tmem: Move global_ individual variables in a global structure. Date: Thu, 2 Jun 2016 11:04:19 -0400 Message-ID: <1464879860-25554-4-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 1b8UBP-0005eA-38 for xen-devel@lists.xenproject.org; Thu, 02 Jun 2016 15:05:15 +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 UHV0IHRoZW0gYWxsIGluIG9uZSBzdHJ1Y3R1cmUgdG8gbWFrZSBpdCBlYXNpZXIgdG8KZmlndXJl IG91dCB3aGF0IGNhbiBiZSByZW1vdmVkLiBUaGUgc3RydWN0dXJlIGlzIGNhbGxlZAondG1lbV9n bG9iYWwnIGFzIGl0IHdpbGwgYmUgZXZlbnR1YWxseSBub24tc3RhdGljLgoKU2lnbmVkLW9mZi1i eTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpSZXZpZXdl ZC1ieTogRG91ZyBHb2xkc3RlaW4gPGNhcmRvZUBjYXJkb2UuY29tPgoKLS0tCkNjOiAgQW5kcmV3 IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6ICBKYW4gQmV1bGljaCA8amJl dWxpY2hAc3VzZS5jb20+CkNjOiAgV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ2M6ICBE b3VnIEdvbGRzdGVpbiA8Y2FyZG9lQGNhcmRvZS5jb20+Cgp2MTogRmlyc3QgcG9zdGluZyBhcyBu b24tUkZDCi0tLQogeGVuL2NvbW1vbi90bWVtLmMgfCA3NiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDAgaW5z ZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi90bWVt LmMgYi94ZW4vY29tbW9uL3RtZW0uYwppbmRleCBiNThhYjRkLi43MGNiNjFlIDEwMDY0NAotLS0g YS94ZW4vY29tbW9uL3RtZW0uYworKysgYi94ZW4vY29tbW9uL3RtZW0uYwpAQCAtMjIyLDEzICsy MjIsNiBAQCBzdHJ1Y3QgdG1lbV9wYWdlX2NvbnRlbnRfZGVzY3JpcHRvciB7CiBzdHJ1Y3QgcmJf cm9vdCBwY2RfdHJlZV9yb290c1syNTZdOyAvKiBDaG9vc2UgYmFzZWQgb24gZmlyc3QgYnl0ZSBv ZiBwYWdlLiAqLwogcndsb2NrX3QgcGNkX3RyZWVfcndsb2Nrc1syNTZdOyAvKiBQb29yIG1hbidz IGNvbmN1cnJlbmN5IGZvciBub3cuICovCiAKLXN0YXRpYyBMSVNUX0hFQUQoZ2xvYmFsX2VwaGVt ZXJhbF9wYWdlX2xpc3QpOyAvKiBBbGwgcGFnZXMgaW4gZXBoZW1lcmFsIHBvb2xzLiAqLwotCi1z dGF0aWMgTElTVF9IRUFEKGdsb2JhbF9jbGllbnRfbGlzdCk7Ci0KLXN0YXRpYyBzdHJ1Y3QgdG1l bV9wb29sICpnbG9iYWxfc2hhcmVkX3Bvb2xzW01BWF9HTE9CQUxfU0hBUkVEX1BPT0xTXSA9IHsg MCB9Owotc3RhdGljIGJvb2xfdCBnbG9iYWxfc2hhcmVkX2F1dGggPSAwOwotc3RhdGljIGF0b21p Y190IGNsaWVudF93ZWlnaHRfdG90YWwgPSBBVE9NSUNfSU5JVCgwKTsKIHN0YXRpYyBpbnQgdG1l bV9pbml0aWFsaXplZCA9IDA7CiAKIHN0cnVjdCB4bWVtX3Bvb2wgKnRtZW1fbWVtcG9vbCA9IDA7 CkBAIC0yNDUsOCArMjM4LDIwIEBAIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0socGVyc19saXN0c19z cGlubG9jayk7CiAjZGVmaW5lIEFTU0VSVF9TUElOTE9DSyhfbCkgQVNTRVJUKHNwaW5faXNfbG9j a2VkKF9sKSkKICNkZWZpbmUgQVNTRVJUX1dSSVRFTE9DSyhfbCkgQVNTRVJUKHJ3X2lzX3dyaXRl X2xvY2tlZChfbCkpCiAKLXN0YXRpYyBsb25nIGdsb2JhbF9lcGhfY291bnQ7IC8qIEF0b21pY2l0 eSBkZXBlbmRzIG9uIGVwaF9saXN0c19zcGlubG9jay4gKi8KK3N0cnVjdCB0bWVtX2dsb2JhbCB7 CisgICAgc3RydWN0IGxpc3RfaGVhZCBlcGhlbWVyYWxfcGFnZV9saXN0OyAgLyogQWxsIHBhZ2Vz IGluIGVwaGVtZXJhbCBwb29scy4gKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNsaWVudF9saXN0 OworICAgIHN0cnVjdCB0bWVtX3Bvb2wgKnNoYXJlZF9wb29sc1tNQVhfR0xPQkFMX1NIQVJFRF9Q T09MU107CisgICAgYm9vbF90IHNoYXJlZF9hdXRoOworICAgIGF0b21pY190IGNsaWVudF93ZWln aHRfdG90YWw7CisgICAgbG9uZyBlcGhfY291bnQ7ICAvKiBBdG9taWNpdHkgZGVwZW5kcyBvbiBl cGhfbGlzdHNfc3BpbmxvY2suICovCit9OwogCitzdHJ1Y3QgdG1lbV9nbG9iYWwgdG1lbV9nbG9i YWwgPSB7CisgICAgLmVwaGVtZXJhbF9wYWdlX2xpc3QgPSBMSVNUX0hFQURfSU5JVCh0bWVtX2ds b2JhbC5lcGhlbWVyYWxfcGFnZV9saXN0KSwKKyAgICAuY2xpZW50X2xpc3QgPSBMSVNUX0hFQURf SU5JVCh0bWVtX2dsb2JhbC5jbGllbnRfbGlzdCksCisgICAgLmNsaWVudF93ZWlnaHRfdG90YWwg PSBBVE9NSUNfSU5JVCgwKSwKK307CiAKIC8qCiAgKiBUaGVyZSB0d28gdHlwZXMgb2YgbWVtb3J5 IGFsbG9jYXRpb24gaW50ZXJmYWNlcyBpbiB0bWVtLgpAQCAtNzI0LDggKzcyOSw4IEBAIHN0YXRp YyB2b2lkIHBncF9kZWxpc3RfZnJlZShzdHJ1Y3QgdG1lbV9wYWdlX2Rlc2NyaXB0b3IgKnBncCkK ICAgICAgICAgQVNTRVJUKGNsaWVudC0+ZXBoX2NvdW50ID49IDApOwogICAgICAgICBsaXN0X2Rl bF9pbml0KCZwZ3AtPnVzLmNsaWVudF9lcGhfcGFnZXMpOwogICAgICAgICBpZiAoICFsaXN0X2Vt cHR5KCZwZ3AtPmdsb2JhbF9lcGhfcGFnZXMpICkKLSAgICAgICAgICAgIGdsb2JhbF9lcGhfY291 bnQtLTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbF9lcGhfY291bnQgPj0gMCk7CisgICAgICAgICAg ICB0bWVtX2dsb2JhbC5lcGhfY291bnQtLTsKKyAgICAgICAgQVNTRVJUKHRtZW1fZ2xvYmFsLmVw aF9jb3VudCA+PSAwKTsKICAgICAgICAgbGlzdF9kZWxfaW5pdCgmcGdwLT5nbG9iYWxfZXBoX3Bh Z2VzKTsKICAgICAgICAgc3Bpbl91bmxvY2soJmVwaF9saXN0c19zcGlubG9jayk7CiAgICAgfQpA QCAtMTEyNiw5ICsxMTMxLDkgQEAgc3RhdGljIGludCBzaGFyZWRfcG9vbF9xdWl0KHN0cnVjdCB0 bWVtX3Bvb2wgKnBvb2wsIGRvbWlkX3QgY2xpX2lkKQogICAgICAgICBpZiAocG9vbC0+c2hhcmVk X2NvdW50KQogICAgICAgICAgICAgcmV0dXJuIHBvb2wtPnNoYXJlZF9jb3VudDsKICAgICAgICAg Zm9yIChzX3Bvb2xpZCA9IDA7IHNfcG9vbGlkIDwgTUFYX0dMT0JBTF9TSEFSRURfUE9PTFM7IHNf cG9vbGlkKyspCi0gICAgICAgICAgICBpZiAoIChnbG9iYWxfc2hhcmVkX3Bvb2xzW3NfcG9vbGlk XSkgPT0gcG9vbCApCisgICAgICAgICAgICBpZiAoICh0bWVtX2dsb2JhbC5zaGFyZWRfcG9vbHNb c19wb29saWRdKSA9PSBwb29sICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbG9i YWxfc2hhcmVkX3Bvb2xzW3NfcG9vbGlkXSA9IE5VTEw7CisgICAgICAgICAgICAgICAgdG1lbV9n bG9iYWwuc2hhcmVkX3Bvb2xzW3NfcG9vbGlkXSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTIwOSw3ICsxMjE0LDcg QEAgc3RhdGljIHN0cnVjdCBjbGllbnQgKmNsaWVudF9jcmVhdGUoZG9taWRfdCBjbGlfaWQpCiAg ICAgZm9yICggaSA9IDA7IGkgPCBNQVhfR0xPQkFMX1NIQVJFRF9QT09MUzsgaSsrKQogICAgICAg ICBjbGllbnQtPnNoYXJlZF9hdXRoX3V1aWRbaV1bMF0gPQogICAgICAgICAgICAgY2xpZW50LT5z aGFyZWRfYXV0aF91dWlkW2ldWzFdID0gLTFMOwotICAgIGxpc3RfYWRkX3RhaWwoJmNsaWVudC0+ Y2xpZW50X2xpc3QsICZnbG9iYWxfY2xpZW50X2xpc3QpOworICAgIGxpc3RfYWRkX3RhaWwoJmNs aWVudC0+Y2xpZW50X2xpc3QsICZ0bWVtX2dsb2JhbC5jbGllbnRfbGlzdCk7CiAgICAgSU5JVF9M SVNUX0hFQUQoJmNsaWVudC0+ZXBoZW1lcmFsX3BhZ2VfbGlzdCk7CiAgICAgSU5JVF9MSVNUX0hF QUQoJmNsaWVudC0+cGVyc2lzdGVudF9pbnZhbGlkYXRlZF9saXN0KTsKICAgICB0bWVtX2NsaWVu dF9pbmZvKCJva1xuIik7CkBAIC0xMjQ1LDEzICsxMjUwLDEzIEBAIHN0YXRpYyB2b2lkIGNsaWVu dF9mbHVzaChzdHJ1Y3QgY2xpZW50ICpjbGllbnQpCiAKIHN0YXRpYyBib29sX3QgY2xpZW50X292 ZXJfcXVvdGEoc3RydWN0IGNsaWVudCAqY2xpZW50KQogewotICAgIGludCB0b3RhbCA9IF9hdG9t aWNfcmVhZChjbGllbnRfd2VpZ2h0X3RvdGFsKTsKKyAgICBpbnQgdG90YWwgPSBfYXRvbWljX3Jl YWQodG1lbV9nbG9iYWwuY2xpZW50X3dlaWdodF90b3RhbCk7CiAKICAgICBBU1NFUlQoY2xpZW50 ICE9IE5VTEwpOwogICAgIGlmICggKHRvdGFsID09IDApIHx8IChjbGllbnQtPndlaWdodCA9PSAw KSB8fAogICAgICAgICAgIChjbGllbnQtPmVwaF9jb3VudCA9PSAwKSApCiAgICAgICAgIHJldHVy biAwOwotICAgIHJldHVybiAoICgoZ2xvYmFsX2VwaF9jb3VudCoxMDBMKSAvIGNsaWVudC0+ZXBo X2NvdW50ICkgPgorICAgIHJldHVybiAoICgodG1lbV9nbG9iYWwuZXBoX2NvdW50KjEwMEwpIC8g Y2xpZW50LT5lcGhfY291bnQgKSA+CiAgICAgICAgICAgICAgKCh0b3RhbCoxMDBMKSAvIGNsaWVu dC0+d2VpZ2h0KSApOwogfQogCkBAIC0xMjgwLDcgKzEyODUsNyBAQCBzdGF0aWMgYm9vbF90IHRt ZW1fdHJ5X3RvX2V2aWN0X3BncChzdHJ1Y3QgdG1lbV9wYWdlX2Rlc2NyaXB0b3IgKnBncCwgYm9v bF90ICpobwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHBncC0+ZXZpY3Rpb25fYXR0 ZW1wdGVkKys7CiAgICAgICAgICAgICAgICAgbGlzdF9kZWwoJnBncC0+Z2xvYmFsX2VwaF9wYWdl cyk7Ci0gICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcGdwLT5nbG9iYWxfZXBoX3BhZ2Vz LCZnbG9iYWxfZXBoZW1lcmFsX3BhZ2VfbGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdF9hZGRf dGFpbCgmcGdwLT5nbG9iYWxfZXBoX3BhZ2VzLCZ0bWVtX2dsb2JhbC5lcGhlbWVyYWxfcGFnZV9s aXN0KTsKICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmcGdwLT51cy5jbGllbnRfZXBoX3BhZ2Vz KTsKICAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZwZ3AtPnVzLmNsaWVudF9lcGhfcGFn ZXMsJmNsaWVudC0+ZXBoZW1lcmFsX3BhZ2VfbGlzdCk7CiAgICAgICAgICAgICAgICAgZ290byBw Y2RfdW5sb2NrOwpAQCAtMTMyMCw5ICsxMzI1LDkgQEAgc3RhdGljIGludCB0bWVtX2V2aWN0KHZv aWQpCiAgICAgICAgICAgICBpZiAoIHRtZW1fdHJ5X3RvX2V2aWN0X3BncChwZ3AsICZob2xkX3Bv b2xfcndsb2NrKSApCiAgICAgICAgICAgICAgICAgZ290byBmb3VuZDsKICAgICB9Ci0gICAgZWxz ZSBpZiAoICFsaXN0X2VtcHR5KCZnbG9iYWxfZXBoZW1lcmFsX3BhZ2VfbGlzdCkgKQorICAgIGVs c2UgaWYgKCAhbGlzdF9lbXB0eSgmdG1lbV9nbG9iYWwuZXBoZW1lcmFsX3BhZ2VfbGlzdCkgKQog ICAgIHsKLSAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShwZ3AsICZnbG9iYWxfZXBoZW1lcmFs X3BhZ2VfbGlzdCwgZ2xvYmFsX2VwaF9wYWdlcykKKyAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRy eShwZ3AsICZ0bWVtX2dsb2JhbC5lcGhlbWVyYWxfcGFnZV9saXN0LCBnbG9iYWxfZXBoX3BhZ2Vz KQogICAgICAgICAgICAgaWYgKCB0bWVtX3RyeV90b19ldmljdF9wZ3AocGdwLCAmaG9sZF9wb29s X3J3bG9jaykgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNsaWVudCA9IHBncC0+ dXMub2JqLT5wb29sLT5jbGllbnQ7CkBAIC0xMzM4LDggKzEzNDMsOCBAQCBmb3VuZDoKICAgICBs aXN0X2RlbF9pbml0KCZwZ3AtPnVzLmNsaWVudF9lcGhfcGFnZXMpOwogICAgIGNsaWVudC0+ZXBo X2NvdW50LS07CiAgICAgbGlzdF9kZWxfaW5pdCgmcGdwLT5nbG9iYWxfZXBoX3BhZ2VzKTsKLSAg ICBnbG9iYWxfZXBoX2NvdW50LS07Ci0gICAgQVNTRVJUKGdsb2JhbF9lcGhfY291bnQgPj0gMCk7 CisgICAgdG1lbV9nbG9iYWwuZXBoX2NvdW50LS07CisgICAgQVNTRVJUKHRtZW1fZ2xvYmFsLmVw aF9jb3VudCA+PSAwKTsKICAgICBBU1NFUlQoY2xpZW50LT5lcGhfY291bnQgPj0gMCk7CiAgICAg c3Bpbl91bmxvY2soJmVwaF9saXN0c19zcGlubG9jayk7CiAKQEAgLTE2NjQsMTAgKzE2NjksOSBA QCBpbnNlcnRfcGFnZToKICAgICBpZiAoICFpc19wZXJzaXN0ZW50KHBvb2wpICkKICAgICB7CiAg ICAgICAgIHNwaW5fbG9jaygmZXBoX2xpc3RzX3NwaW5sb2NrKTsKLSAgICAgICAgbGlzdF9hZGRf dGFpbCgmcGdwLT5nbG9iYWxfZXBoX3BhZ2VzLAotICAgICAgICAgICAgJmdsb2JhbF9lcGhlbWVy YWxfcGFnZV9saXN0KTsKLSAgICAgICAgaWYgKCsrZ2xvYmFsX2VwaF9jb3VudCA+IHRtZW1fc3Rh dHMuZ2xvYmFsX2VwaF9jb3VudF9tYXgpCi0gICAgICAgICAgICB0bWVtX3N0YXRzLmdsb2JhbF9l cGhfY291bnRfbWF4ID0gZ2xvYmFsX2VwaF9jb3VudDsKKyAgICAgICAgbGlzdF9hZGRfdGFpbCgm cGdwLT5nbG9iYWxfZXBoX3BhZ2VzLCAmdG1lbV9nbG9iYWwuZXBoZW1lcmFsX3BhZ2VfbGlzdCk7 CisgICAgICAgIGlmICgrK3RtZW1fZ2xvYmFsLmVwaF9jb3VudCA+IHRtZW1fc3RhdHMuZ2xvYmFs X2VwaF9jb3VudF9tYXgpCisgICAgICAgICAgICB0bWVtX3N0YXRzLmdsb2JhbF9lcGhfY291bnRf bWF4ID0gdG1lbV9nbG9iYWwuZXBoX2NvdW50OwogICAgICAgICBsaXN0X2FkZF90YWlsKCZwZ3At PnVzLmNsaWVudF9lcGhfcGFnZXMsCiAgICAgICAgICAgICAmY2xpZW50LT5lcGhlbWVyYWxfcGFn ZV9saXN0KTsKICAgICAgICAgaWYgKCsrY2xpZW50LT5lcGhfY291bnQgPiBjbGllbnQtPmVwaF9j b3VudF9tYXgpCkBAIC0xNzc0LDcgKzE3NzgsNyBAQCBzdGF0aWMgaW50IGRvX3RtZW1fZ2V0KHN0 cnVjdCB0bWVtX3Bvb2wgKnBvb2wsCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzcGlu X2xvY2soJmVwaF9saXN0c19zcGlubG9jayk7CiAgICAgICAgICAgICBsaXN0X2RlbCgmcGdwLT5n bG9iYWxfZXBoX3BhZ2VzKTsKLSAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnBncC0+Z2xvYmFs X2VwaF9wYWdlcywmZ2xvYmFsX2VwaGVtZXJhbF9wYWdlX2xpc3QpOworICAgICAgICAgICAgbGlz dF9hZGRfdGFpbCgmcGdwLT5nbG9iYWxfZXBoX3BhZ2VzLCZ0bWVtX2dsb2JhbC5lcGhlbWVyYWxf cGFnZV9saXN0KTsKICAgICAgICAgICAgIGxpc3RfZGVsKCZwZ3AtPnVzLmNsaWVudF9lcGhfcGFn ZXMpOwogICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcGdwLT51cy5jbGllbnRfZXBoX3BhZ2Vz LCZjbGllbnQtPmVwaGVtZXJhbF9wYWdlX2xpc3QpOwogICAgICAgICAgICAgc3Bpbl91bmxvY2so JmVwaF9saXN0c19zcGlubG9jayk7CkBAIC0xOTYyLDcgKzE5NjYsNyBAQCBzdGF0aWMgaW50IGRv X3RtZW1fbmV3X3Bvb2woZG9taWRfdCB0aGlzX2NsaV9pZCwKICAgICAgICAgICAgIHBvb2wtPnNo YXJlZCA9IDA7CiAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgfQotICAgICAgICBpZiAo IGNsaWVudC0+c2hhcmVkX2F1dGhfcmVxdWlyZWQgJiYgIWdsb2JhbF9zaGFyZWRfYXV0aCApCisg ICAgICAgIGlmICggY2xpZW50LT5zaGFyZWRfYXV0aF9yZXF1aXJlZCAmJiAhdG1lbV9nbG9iYWwu c2hhcmVkX2F1dGggKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE1B WF9HTE9CQUxfU0hBUkVEX1BPT0xTOyBpKyspCiAgICAgICAgICAgICAgICAgaWYgKCAoY2xpZW50 LT5zaGFyZWRfYXV0aF91dWlkW2ldWzBdID09IHV1aWRfbG8pICYmCkBAIC0xOTgzLDcgKzE5ODcs NyBAQCBzdGF0aWMgaW50IGRvX3RtZW1fbmV3X3Bvb2woZG9taWRfdCB0aGlzX2NsaV9pZCwKICAg ICAgICAgZmlyc3RfdW51c2VkX3NfcG9vbGlkID0gTUFYX0dMT0JBTF9TSEFSRURfUE9PTFM7CiAg ICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX0dMT0JBTF9TSEFSRURfUE9PTFM7IGkrKyApCiAg ICAgICAgIHsKLSAgICAgICAgICAgIGlmICggKHNocG9vbCA9IGdsb2JhbF9zaGFyZWRfcG9vbHNb aV0pICE9IE5VTEwgKQorICAgICAgICAgICAgaWYgKCAoc2hwb29sID0gdG1lbV9nbG9iYWwuc2hh cmVkX3Bvb2xzW2ldKSAhPSBOVUxMICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBp ZiAoIHNocG9vbC0+dXVpZFswXSA9PSB1dWlkX2xvICYmIHNocG9vbC0+dXVpZFsxXSA9PSB1dWlk X2hpICkKICAgICAgICAgICAgICAgICB7CkBAIC0yMDIwLDcgKzIwMjQsNyBAQCBzdGF0aWMgaW50 IGRvX3RtZW1fbmV3X3Bvb2woZG9taWRfdCB0aGlzX2NsaV9pZCwKICAgICAgICAgICAgIHBvb2wt PnNoYXJlZF9jb3VudCA9IDA7CiAgICAgICAgICAgICBpZiAoIHNoYXJlZF9wb29sX2pvaW4ocG9v bCwgY2xpZW50KSApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgZ2xv YmFsX3NoYXJlZF9wb29sc1tmaXJzdF91bnVzZWRfc19wb29saWRdID0gcG9vbDsKKyAgICAgICAg ICAgIHRtZW1fZ2xvYmFsLnNoYXJlZF9wb29sc1tmaXJzdF91bnVzZWRfc19wb29saWRdID0gcG9v bDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjA0Niw3ICsyMDUwLDcgQEAgc3RhdGljIGludCB0 bWVtY19mcmVlemVfcG9vbHMoZG9taWRfdCBjbGlfaWQsIGludCBhcmcpCiAgICAgcyA9IGRlc3Ry b3kgPyAiZGVzdHJveWVkIiA6ICggZnJlZXplID8gImZyb3plbiIgOiAidGhhd2VkIiApOwogICAg IGlmICggY2xpX2lkID09IFRNRU1fQ0xJX0lEX05VTEwgKQogICAgIHsKLSAgICAgICAgbGlzdF9m b3JfZWFjaF9lbnRyeShjbGllbnQsJmdsb2JhbF9jbGllbnRfbGlzdCxjbGllbnRfbGlzdCkKKyAg ICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShjbGllbnQsJnRtZW1fZ2xvYmFsLmNsaWVudF9saXN0 LGNsaWVudF9saXN0KQogICAgICAgICAgICAgY2xpZW50LT5mcm96ZW4gPSBmcmVlemU7CiAgICAg ICAgIHRtZW1fY2xpZW50X2luZm8oInRtZW06IGFsbCBwb29scyAlcyBmb3IgYWxsICVzc1xuIiwg cywgdG1lbV9jbGllbnRfc3RyKTsKICAgICB9CkBAIC0yMTUyLDcgKzIxNTYsNyBAQCBzdGF0aWMg aW50IHRtZW1jX2xpc3Rfc2hhcmVkKHRtZW1fY2xpX3ZhX3BhcmFtX3QgYnVmLCBpbnQgb2ZmLCB1 aW50MzJfdCBsZW4sCiAKICAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9HTE9CQUxfU0hBUkVEX1BP T0xTOyBpKysgKQogICAgIHsKLSAgICAgICAgaWYgKCAocCA9IGdsb2JhbF9zaGFyZWRfcG9vbHNb aV0pID09IE5VTEwgKQorICAgICAgICBpZiAoIChwID0gdG1lbV9nbG9iYWwuc2hhcmVkX3Bvb2xz W2ldKSA9PSBOVUxMICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBuID0gc2NucHJp bnRmKGluZm8rbixCU0laRS1uLCJTPVNJOiVkLFBUOiVjJWMsVTA6JSJQUkl4NjQiLFUxOiUiUFJJ eDY0LAogICAgICAgICAgICAgICAgICAgICAgIGksIGlzX3BlcnNpc3RlbnQocCkgPyAnUCcgOiAn RScsCkBAIC0yMjE2LDcgKzIyMjAsNyBAQCBzdGF0aWMgaW50IHRtZW1jX2xpc3RfZ2xvYmFsKHRt ZW1fY2xpX3ZhX3BhcmFtX3QgYnVmLCBpbnQgb2ZmLCB1aW50MzJfdCBsZW4sCiAgICAgICAgIG4g Kz0gc2NucHJpbnRmKGluZm8rbixCU0laRS1uLAogICAgICAgICAgICJFYzolbGQsRW06JWxkLE9j OiVkLE9tOiVkLE5jOiVkLE5tOiVkLFBjOiVkLFBtOiVkLCIKICAgICAgICAgICAiRmM6JWQsRm06 JWQsU2M6JWQsU206JWQsRXA6JWx1LEdkOiVsdSxadDolbHUsR3o6JWx1XG4iLAotICAgICAgICAg IGdsb2JhbF9lcGhfY291bnQsIHRtZW1fc3RhdHMuZ2xvYmFsX2VwaF9jb3VudF9tYXgsCisgICAg ICAgICAgdG1lbV9nbG9iYWwuZXBoX2NvdW50LCB0bWVtX3N0YXRzLmdsb2JhbF9lcGhfY291bnRf bWF4LAogICAgICAgICAgIF9hdG9taWNfcmVhZCh0bWVtX3N0YXRzLmdsb2JhbF9vYmpfY291bnQp LCB0bWVtX3N0YXRzLmdsb2JhbF9vYmpfY291bnRfbWF4LAogICAgICAgICAgIF9hdG9taWNfcmVh ZCh0bWVtX3N0YXRzLmdsb2JhbF9ydHJlZV9ub2RlX2NvdW50KSwgdG1lbV9zdGF0cy5nbG9iYWxf cnRyZWVfbm9kZV9jb3VudF9tYXgsCiAgICAgICAgICAgX2F0b21pY19yZWFkKHRtZW1fc3RhdHMu Z2xvYmFsX3BncF9jb3VudCksIHRtZW1fc3RhdHMuZ2xvYmFsX3BncF9jb3VudF9tYXgsCkBAIC0y MjQwLDcgKzIyNDQsNyBAQCBzdGF0aWMgaW50IHRtZW1jX2xpc3QoZG9taWRfdCBjbGlfaWQsIHRt ZW1fY2xpX3ZhX3BhcmFtX3QgYnVmLCB1aW50MzJfdCBsZW4sCiAgICAgaWYgKCBjbGlfaWQgPT0g VE1FTV9DTElfSURfTlVMTCApIHsKICAgICAgICAgb2ZmID0gdG1lbWNfbGlzdF9nbG9iYWwoYnVm LDAsbGVuLHVzZV9sb25nKTsKICAgICAgICAgb2ZmICs9IHRtZW1jX2xpc3Rfc2hhcmVkKGJ1Zixv ZmYsbGVuLW9mZix1c2VfbG9uZyk7Ci0gICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoY2xpZW50 LCZnbG9iYWxfY2xpZW50X2xpc3QsY2xpZW50X2xpc3QpCisgICAgICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkoY2xpZW50LCZ0bWVtX2dsb2JhbC5jbGllbnRfbGlzdCxjbGllbnRfbGlzdCkKICAgICAg ICAgICAgIG9mZiArPSB0bWVtY19saXN0X2NsaWVudChjbGllbnQsIGJ1Ziwgb2ZmLCBsZW4tb2Zm LCB1c2VfbG9uZyk7CiAgICAgICAgIG9mZiArPSB0bWVtY19saXN0X2dsb2JhbF9wZXJmKGJ1Zixv ZmYsbGVuLW9mZix1c2VfbG9uZyk7CiAgICAgfQpAQCAtMjI2NCw4ICsyMjY4LDggQEAgc3RhdGlj IGludCBfX3RtZW1jX3NldF92YXIoc3RydWN0IGNsaWVudCAqY2xpZW50LCB1aW50MzJfdCBzdWJv cCwgdWludDMyX3QgYXJnMSkKICAgICAgICAgY2xpZW50LT53ZWlnaHQgPSBhcmcxOwogICAgICAg ICB0bWVtX2NsaWVudF9pbmZvKCJ0bWVtOiB3ZWlnaHQgc2V0IHRvICVkIGZvciAlcz0lZFxuIiwK ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzEsIHRtZW1fY2xpX2lkX3N0ciwgY2xpX2lkKTsK LSAgICAgICAgYXRvbWljX3N1YihvbGRfd2VpZ2h0LCZjbGllbnRfd2VpZ2h0X3RvdGFsKTsKLSAg ICAgICAgYXRvbWljX2FkZChjbGllbnQtPndlaWdodCwmY2xpZW50X3dlaWdodF90b3RhbCk7Cisg ICAgICAgIGF0b21pY19zdWIob2xkX3dlaWdodCwmdG1lbV9nbG9iYWwuY2xpZW50X3dlaWdodF90 b3RhbCk7CisgICAgICAgIGF0b21pY19hZGQoY2xpZW50LT53ZWlnaHQsJnRtZW1fZ2xvYmFsLmNs aWVudF93ZWlnaHRfdG90YWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFhFTl9TWVNDVExf VE1FTV9PUF9TRVRfQ0FQOgogICAgICAgICBjbGllbnQtPmNhcCA9IGFyZzE7CkBAIC0yMjk4LDcg KzIzMDIsNyBAQCBzdGF0aWMgaW50IHRtZW1jX3NldF92YXIoZG9taWRfdCBjbGlfaWQsIHVpbnQz Ml90IHN1Ym9wLCB1aW50MzJfdCBhcmcxKQogCiAgICAgaWYgKCBjbGlfaWQgPT0gVE1FTV9DTElf SURfTlVMTCApCiAgICAgewotICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsaWVudCwmZ2xv YmFsX2NsaWVudF9saXN0LGNsaWVudF9saXN0KQorICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 KGNsaWVudCwmdG1lbV9nbG9iYWwuY2xpZW50X2xpc3QsY2xpZW50X2xpc3QpCiAgICAgICAgIHsK ICAgICAgICAgICAgIHJldCA9ICBfX3RtZW1jX3NldF92YXIoY2xpZW50LCBzdWJvcCwgYXJnMSk7 CiAgICAgICAgICAgICBpZiAocmV0KQpAQCAtMjMyMiw3ICsyMzI2LDcgQEAgc3RhdGljIGludCB0 bWVtY19zaGFyZWRfcG9vbF9hdXRoKGRvbWlkX3QgY2xpX2lkLCB1aW50NjRfdCB1dWlkX2xvLAog CiAgICAgaWYgKCBjbGlfaWQgPT0gVE1FTV9DTElfSURfTlVMTCApCiAgICAgewotICAgICAgICBn bG9iYWxfc2hhcmVkX2F1dGggPSBhdXRoOworICAgICAgICB0bWVtX2dsb2JhbC5zaGFyZWRfYXV0 aCA9IGF1dGg7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBjbGllbnQgPSB0bWVtX2Ns aWVudF9mcm9tX2NsaV9pZChjbGlfaWQpOwotLSAKMi41LjUKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=