From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v1 11/13] tools: implemet new get value interface suitable for all psr allocation features Date: Wed, 9 Aug 2017 15:41:50 +0800 Message-ID: <1502264512-4648-12-git-send-email-yi.y.sun@linux.intel.com> References: <1502264512-4648-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dfLsu-0001zl-Az for xen-devel@lists.xenproject.org; Wed, 09 Aug 2017 07:58:32 +0000 In-Reply-To: <1502264512-4648-1-git-send-email-yi.y.sun@linux.intel.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: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IGdldCB2YWx1ZSBpbnRlcmZhY2UgaW4gdG9vbHMg c3VpdGFibGUgZm9yIGFsbCBwc3IKYWxsb2NhdGlvbiBmZWF0dXJlcyBhbmQgdGhlIHdob2xlIGZs b3cuIEl0IGFsc28gZW5hYmxlcyBNQkEgc3VwcG9ydCBpbiB0b29scwp0byBnZXQgTUJBIHZhbHVl LgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQog dG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAgIDcgKy0KIHRvb2xzL2xpYnhjL3hjX3Bz ci5jICAgICAgICAgIHwgICA5ICsrLQogdG9vbHMvbGlieGwvbGlieGxfcHNyLmMgICAgICAgfCAg NTEgKysrKysrKy0tLS0tCiB0b29scy94bC94bC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiB0 b29scy94bC94bF9jbWR0YWJsZS5jICAgICAgICB8ICAgNSArKwogdG9vbHMveGwveGxfcHNyLmMg ICAgICAgICAgICAgfCAxNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tCiA2IGZpbGVzIGNoYW5nZWQsIDE3MyBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhj L2luY2x1ZGUveGVuY3RybC5oCmluZGV4IGYxYzYyOWUuLmQ3ZWFiZmIgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu Y3RybC5oCkBAIC0yNDU1LDYgKzI0NTUsNyBAQCBlbnVtIHhjX3Bzcl92YWxfdHlwZSB7CiAgICAg WENfUFNSX0NBVF9MM19DQk1fQ09ERSA9IDIsCiAgICAgWENfUFNSX0NBVF9MM19DQk1fREFUQSA9 IDMsCiAgICAgWENfUFNSX0NBVF9MMl9DQk0gICAgICA9IDQsCisgICAgWENfUFNSX01CQV9USFJU TCAgICAgICA9IDUsCiB9OwogdHlwZWRlZiBlbnVtIHhjX3Bzcl92YWxfdHlwZSB4Y19wc3JfdmFs X3R5cGU7CiAKQEAgLTI1MDEsOSArMjUwMiw5IEBAIGludCB4Y19wc3JfY210X2VuYWJsZWQoeGNf aW50ZXJmYWNlICp4Y2gpOwogaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4Y19wc3JfdmFsX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ2NF90IGRhdGEpOwotaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFp bl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB4Y19wc3JfdmFsX3R5cGUgdHlwZSwgdWludDMyX3QgdGFyZ2V0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpkYXRhKTsKK2ludCB4Y19w c3JfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl92YWxfdHlwZSB0eXBlLCB1aW50MzJfdCB0 YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqZGF0YSk7CiBpbnQg eGNfcHNyX2dldF9od19pbmZvKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBzb2NrZXQsCiAg ICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl9mZWF0X3R5cGUgdHlwZSwgeGNfcHNyX2h3X2lu Zm8gKmh3X2luZm8pOwogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19wc3IuYyBiL3Rvb2xz L2xpYnhjL3hjX3Bzci5jCmluZGV4IGM2OWU5NDMuLmRlNTAxYjAgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhjL3hjX3Bzci5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3Bzci5jCkBAIC0yODMsOSArMjgz LDkgQEAgaW50IHhjX3Bzcl9jYXRfc2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAqeGNoLCB1 aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gZG9fZG9tY3RsKHhjaCwgJmRvbWN0bCk7CiB9CiAK LWludCB4Y19wc3JfY2F0X2dldF9kb21haW5fZGF0YSh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMy X3QgZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGNfcHNyX3ZhbF90eXBl IHR5cGUsIHVpbnQzMl90IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50NjRfdCAqZGF0YSkKK2ludCB4Y19wc3JfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVyZmFjZSAq eGNoLCB1aW50MzJfdCBkb21pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHhjX3Bzcl92 YWxfdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50NjRfdCAqZGF0YSkKIHsKICAgICBpbnQgcmM7CiAgICAgREVDTEFSRV9ET01DVEw7CkBA IC0zMDUsNiArMzA1LDkgQEAgaW50IHhjX3Bzcl9jYXRfZ2V0X2RvbWFpbl9kYXRhKHhjX2ludGVy ZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICBjYXNlIFhDX1BTUl9DQVRfTDJfQ0JNOgog ICAgICAgICBjbWQgPSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTTsKICAgICAgICAg YnJlYWs7CisgICAgY2FzZSBYQ19QU1JfTUJBX1RIUlRMOgorICAgICAgICBjbWQgPSBYRU5fRE9N Q1RMX1BTUl9NQkFfT1BfR0VUX1RIUlRMOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog ICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGwvbGlieGxfcHNyLmMgYi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwppbmRleCAx ZDc1ZjMzLi40YjkxZTliIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9wc3IuYworKysg Yi90b29scy9saWJ4bC9saWJ4bF9wc3IuYwpAQCAtNzEsMTYgKzcxLDMwIEBAIHN0YXRpYyB2b2lk IGxpYnhsX19wc3JfY210X2xvZ19lcnJfbXNnKGxpYnhsX19nYyAqZ2MsIGludCBlcnIpCiAgICAg TE9HRShFUlJPUiwgIiVzIiwgbXNnKTsKIH0KIAotc3RhdGljIHZvaWQgbGlieGxfX3Bzcl9jYXRf bG9nX2Vycl9tc2cobGlieGxfX2djICpnYywgaW50IGVycikKK3N0YXRpYyB2b2lkIGxpYnhsX19w c3JfYWxsb2NfbG9nX2Vycl9tc2cobGlieGxfX2djICpnYywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfcHNyX2NibV90eXBlIHR5cGUpCiB7CisgICAgLyoKKyAgICAg KiBJbmRleCBpcyAnbGlieGxfcHNyX2NibV90eXBlJyBzbyB3ZSBzZXQgdHdvICdDRFAnIHRvIGNv cnJlc3BvbmQgdG8KKyAgICAgKiBEQVRBIGFuZCBDT0RFLgorICAgICAqLworICAgIGNvbnN0IGNo YXIgKiBjb25zdCBmZWF0X25hbWVbNl0gPSB7CisgICAgICAgICJVTktOT1dOIiwKKyAgICAgICAg IkwzIENBVCIsCisgICAgICAgICJDRFAiLAorICAgICAgICAiQ0RQIiwKKyAgICAgICAgIkwyIENB VCIsCisgICAgICAgICJNQkEiLAorICAgIH07CiAgICAgY2hhciAqbXNnOwogCiAgICAgc3dpdGNo IChlcnIpIHsKICAgICBjYXNlIEVOT0RFVjoKLSAgICAgICAgbXNnID0gIkNBVCBpcyBub3Qgc3Vw cG9ydGVkIGluIHRoaXMgc3lzdGVtIjsKKyAgICAgICAgbXNnID0gImlzIG5vdCBzdXBwb3J0ZWQg aW4gdGhpcyBzeXN0ZW0iOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEVOT0VOVDoKLSAgICAg ICAgbXNnID0gIkNBVCBpcyBub3QgZW5hYmxlZCBvbiB0aGUgc29ja2V0IjsKKyAgICAgICAgbXNn ID0gImlzIG5vdCBlbmFibGVkIG9uIHRoZSBzb2NrZXQiOwogICAgICAgICBicmVhazsKICAgICBj YXNlIEVPVkVSRkxPVzoKICAgICAgICAgbXNnID0gIm5vIGZyZWUgQ09TIGF2YWlsYWJsZSI7CkBA IC0xMDYsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2co bGlieGxfX2djICpnYywgaW50IGVycikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExP R0UoRVJST1IsICIlcyIsIG1zZyk7CisgICAgTE9HRShFUlJPUiwgIiVzOiAlcyIsIGZlYXRfbmFt ZVt0eXBlXSwgbXNnKTsKIH0KIAogc3RhdGljIGludCBsaWJ4bF9fcGlja19zb2NrZXRfY3B1KGxp YnhsX19nYyAqZ2MsIHVpbnQzMl90IHNvY2tldGlkKQpAQCAtMzMzLDcgKzM0Nyw3IEBAIGludCBs aWJ4bF9wc3JfY2F0X3NldF9jYm0obGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkLAogICAg ICAgICB4Y190eXBlID0gbGlieGxfX3Bzcl9jYm1fdHlwZV90b19saWJ4Y19wc3JfdmFsX3R5cGUo dHlwZSk7CiAgICAgICAgIGlmICh4Y19wc3JfY2F0X3NldF9kb21haW5fZGF0YShjdHgtPnhjaCwg ZG9taWQsIHhjX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz b2NrZXRpZCwgY2JtKSkgewotICAgICAgICAgICAgbGlieGxfX3Bzcl9jYXRfbG9nX2Vycl9tc2co Z2MsIGVycm5vKTsKKyAgICAgICAgICAgIGxpYnhsX19wc3JfYWxsb2NfbG9nX2Vycl9tc2coZ2Ms IGVycm5vLCB0eXBlKTsKICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsKICAgICAgICAgfQog ICAgIH0KQEAgLTM0NywxOCArMzYxLDcgQEAgaW50IGxpYnhsX3Bzcl9jYXRfZ2V0X2NibShsaWJ4 bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp YnhsX3Bzcl9jYm1fdHlwZSB0eXBlLCB1aW50MzJfdCB0YXJnZXQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ2NF90ICpjYm1fcikKIHsKLSAgICBHQ19JTklUKGN0eCk7Ci0gICAgaW50 IHJjID0gMDsKLSAgICB4Y19wc3JfdmFsX3R5cGUgeGNfdHlwZSA9IGxpYnhsX19wc3JfY2JtX3R5 cGVfdG9fbGlieGNfcHNyX3ZhbF90eXBlKHR5cGUpOwotCi0gICAgaWYgKHhjX3Bzcl9jYXRfZ2V0 X2RvbWFpbl9kYXRhKGN0eC0+eGNoLCBkb21pZCwgeGNfdHlwZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0LCBjYm1fcikpIHsKLSAgICAgICAgbGlieGxfX3Bzcl9j YXRfbG9nX2Vycl9tc2coZ2MsIGVycm5vKTsKLSAgICAgICAgcmMgPSBFUlJPUl9GQUlMOwotICAg IH0KLQotICAgIEdDX0ZSRUU7Ci0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiBsaWJ4bF9wc3Jf Z2V0X3ZhbChjdHgsIGRvbWlkLCB0eXBlLCB0YXJnZXQsIGNibV9yKTsKIH0KIAogc3RhdGljIGlu bGluZSBpbnQgbGlieGxfX3Bzcl9od19pbmZvX3RvX2xpYnhsX3Bzcl9jYXRfaW5mbygKQEAgLTQz OCw3ICs0NDEsMTkgQEAgaW50IGxpYnhsX3Bzcl9nZXRfdmFsKGxpYnhsX2N0eCAqY3R4LCB1aW50 MzJfdCBkb21pZCwKICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUgdHlw ZSwgdW5zaWduZWQgaW50IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAq dmFsKQogewotICAgIHJldHVybiBFUlJPUl9GQUlMOworICAgIEdDX0lOSVQoY3R4KTsKKyAgICBp bnQgcmMgPSAwOworCisgICAgeGNfcHNyX3ZhbF90eXBlIHhjX3R5cGUgPSBsaWJ4bF9fcHNyX2Ni bV90eXBlX3RvX2xpYnhjX3Bzcl92YWxfdHlwZSh0eXBlKTsKKworICAgIGlmICh4Y19wc3JfZ2V0 X2RvbWFpbl9kYXRhKGN0eC0+eGNoLCBkb21pZCwgeGNfdHlwZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0YXJnZXQsIHZhbCkpIHsKKyAgICAgICAgbGlieGxfX3Bzcl9hbGxvY19s b2dfZXJyX21zZyhnYywgZXJybm8sIHR5cGUpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Cisg ICAgfQorCisgICAgR0NfRlJFRTsKKyAgICByZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbmxpbmUg eGNfcHNyX2ZlYXRfdHlwZSBsaWJ4bF9fcHNyX2ZlYXRfdHlwZV90b19saWJ4Y19wc3JfZmVhdF90 eXBlKApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGwuaCBiL3Rvb2xzL3hsL3hsLmgKaW5kZXggYWE5 NWI3Ny4uNTkwNjVjNCAxMDA2NDQKLS0tIGEvdG9vbHMveGwveGwuaAorKysgYi90b29scy94bC94 bC5oCkBAIC0yMDYsNiArMjA2LDcgQEAgaW50IG1haW5fcHNyX2NtdF9zaG93KGludCBhcmdjLCBj aGFyICoqYXJndik7CiAjaWZkZWYgTElCWExfSEFWRV9QU1JfQ0FUCiBpbnQgbWFpbl9wc3JfY2F0 X2NibV9zZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3Bzcl9jYXRfc2hvdyhp bnQgYXJnYywgY2hhciAqKmFyZ3YpOworaW50IG1haW5fcHNyX21iYV9zaG93KGludCBhcmdjLCBj aGFyICoqYXJndik7CiAjZW5kaWYKIGludCBtYWluX3FlbXVfbW9uaXRvcl9jb21tYW5kKGludCBh cmdjLCBjaGFyICoqYXJndik7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMg Yi90b29scy94bC94bF9jbWR0YWJsZS5jCmluZGV4IDVhYzhhN2UuLjE5ZTUwMDQgMTAwNjQ0Ci0t LSBhL3Rvb2xzL3hsL3hsX2NtZHRhYmxlLmMKKysrIGIvdG9vbHMveGwveGxfY21kdGFibGUuYwpA QCAtNTYyLDYgKzU2MiwxMSBAQCBzdHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAg ICAiW29wdGlvbnNdIDxEb21haW4+IiwKICAgICAgICItbCA8bGV2ZWw+ICAgICAgICBTcGVjaWZ5 IHRoZSBjYWNoZSBsZXZlbCB0byBwcm9jZXNzLCBvdGhlcndpc2UgTDMgY2FjaGUgaXMgcHJvY2Vz c2VkXG4iCiAgICAgfSwKKyAgICB7ICJwc3ItbWJhLXNob3ciLAorICAgICAgJm1haW5fcHNyX21i YV9zaG93LCAwLCAxLAorICAgICAgIlNob3cgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uIGlu Zm9ybWF0aW9uIiwKKyAgICAgICI8RG9tYWluPiIsCisgICAgfSwKIAogI2VuZGlmCiAgICAgeyAi dXNiY3RybC1hdHRhY2giLApkaWZmIC0tZ2l0IGEvdG9vbHMveGwveGxfcHNyLmMgYi90b29scy94 bC94bF9wc3IuYwppbmRleCBiZjQxNzYyLi5kN2VkYWIyIDEwMDY0NAotLS0gYS90b29scy94bC94 bF9wc3IuYworKysgYi90b29scy94bC94bF9wc3IuYwpAQCAtMzMwLDE5ICszMzAsMjEgQEAgb3V0 OgogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgcHNyX2NhdF9wcmludF9vbmVfZG9t YWluX2NibV90eXBlKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfY2JtX3R5cGUg dHlwZSkKK3N0YXRpYyB2b2lkIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKHVpbnQzMl90 IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnhsX3Bzcl9jYm1fdHlwZSB0eXBlKQogewotICAgIHVpbnQ2NF90IGNi bTsKKyAgICB1aW50NjRfdCB2YWw7CiAKLSAgICBpZiAoIWxpYnhsX3Bzcl9jYXRfZ2V0X2NibShj dHgsIGRvbWlkLCB0eXBlLCBzb2NrZXRpZCwgJmNibSkpCi0gICAgICAgIHByaW50ZigiJSMxNiJQ Ukl4NjQsIGNibSk7CisgICAgaWYgKCFsaWJ4bF9wc3JfZ2V0X3ZhbChjdHgsIGRvbWlkLCB0eXBl LCBzb2NrZXRpZCwgJnZhbCkpCisgICAgICAgIHByaW50ZigiJSMxNiJQUkl4NjQsIHZhbCk7CiAg ICAgZWxzZQogICAgICAgICBwcmludGYoIiUxNnMiLCAiZXJyb3IiKTsKIH0KIAotc3RhdGljIHZv aWQgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qg c29ja2V0aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg Y2RwX2VuYWJsZWQsIHVuc2lnbmVkIGludCBsdmwpCitzdGF0aWMgdm9pZCBwc3JfcHJpbnRfb25l X2RvbWFpbl92YWwodWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwpCiB7CiAgICAgY2hhciAqZG9t YWluX25hbWU7CiAKQEAgLTM1MCwxMDYgKzM1MiwxNTIgQEAgc3RhdGljIHZvaWQgcHNyX2NhdF9w cmludF9vbmVfZG9tYWluX2NibSh1aW50MzJfdCBkb21pZCwgdWludDMyX3Qgc29ja2V0aWQsCiAg ICAgcHJpbnRmKCIlNWQlMjVzIiwgZG9taWQsIGRvbWFpbl9uYW1lKTsKICAgICBmcmVlKGRvbWFp bl9uYW1lKTsKIAotICAgIHN3aXRjaCAobHZsKSB7Ci0gICAgY2FzZSAzOgotICAgICAgICBpZiAo IWNkcF9lbmFibGVkKSB7Ci0gICAgICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2Jt X3R5cGUoZG9taWQsIHNvY2tldGlkLAorICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTElC WExfUFNSX0ZFQVRfVFlQRV9DQVRfSU5GTzoKKyAgICAgICAgc3dpdGNoIChsdmwpIHsKKyAgICAg ICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKCFpbmZvLT51LmNhdF9pbmZvLmNkcF9lbmFibGVk KSB7CisgICAgICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5fdmFsX3R5cGUoZG9taWQs IGluZm8tPmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk0pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRvbWlkLCBzb2NrZXRpZCwKKyAg ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHNyX3ByaW50X29uZV9kb21haW5f dmFsX3R5cGUoZG9taWQsIGluZm8tPmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExJQlhMX1BTUl9DQk1fVFlQRV9MM19DQk1fQ09ERSk7Ci0gICAgICAg ICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2JtX3R5cGUoZG9taWQsIHNvY2tldGlkLAor ICAgICAgICAgICAgICAgIHBzcl9wcmludF9vbmVfZG9tYWluX3ZhbF90eXBlKGRvbWlkLCBpbmZv LT5pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJY TF9QU1JfQ0JNX1RZUEVfTDNfQ0JNX0RBVEEpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwot ICAgIGNhc2UgMjoKLSAgICAgICAgcHNyX2NhdF9wcmludF9vbmVfZG9tYWluX2NibV90eXBlKGRv bWlkLCBzb2NrZXRpZCwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlIDI6CisgICAgICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlwZShkb21p ZCwgaW5mby0+aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJYTF9QU1JfQ0JNX1RZUEVfTDJfQ0JNKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk ZWZhdWx0OgorICAgICAgICAgICAgcHJpbnRmKCJJbnB1dCBsdmwgJWQgaXMgd3JvbmchIiwgbHZs KTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBwcmlu dGYoIklucHV0IGx2bCAlZCBpcyB3cm9uZyEiLCBsdmwpOworCisgICAgY2FzZSBMSUJYTF9QU1Jf RkVBVF9UWVBFX01CQV9JTkZPOgorICAgICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWxfdHlw ZShkb21pZCwgaW5mby0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQlhMX1BTUl9DQk1fVFlQRV9NQkFfVEhSVEwpOwogICAgICAgICBicmVhazsKICAgICB9CiAK ICAgICBwcmludGYoIlxuIik7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NhdF9wcmludF9kb21haW5f Y2JtKHVpbnQzMl90IGRvbWlkLCB1aW50MzJfdCBzb2NrZXRpZCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgY2RwX2VuYWJsZWQsIHVuc2lnbmVkIGludCBsdmwpCitz dGF0aWMgaW50IHBzcl9wcmludF9kb21haW5fdmFsKHVpbnQzMl90IGRvbWlkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9wc3JfaHdfaW5mbyAqaW5mbywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbHZsKQogewogICAgIGludCBp LCBucl9kb21haW5zOwogICAgIGxpYnhsX2RvbWluZm8gKmxpc3Q7CiAKICAgICBpZiAoZG9taWQg IT0gSU5WQUxJRF9ET01JRCkgewotICAgICAgICBwc3JfY2F0X3ByaW50X29uZV9kb21haW5fY2Jt KGRvbWlkLCBzb2NrZXRpZCwgY2RwX2VuYWJsZWQsIGx2bCk7CisgICAgICAgIHBzcl9wcmludF9v bmVfZG9tYWluX3ZhbChkb21pZCwgaW5mbywgdHlwZSwgbHZsKTsKICAgICAgICAgcmV0dXJuIDA7 CiAgICAgfQogCiAgICAgaWYgKCEobGlzdCA9IGxpYnhsX2xpc3RfZG9tYWluKGN0eCwgJm5yX2Rv bWFpbnMpKSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgZG9tYWlu IGxpc3QgZm9yIGNibSBkaXNwbGF5XG4iKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgZG9tYWluIGxpc3QgZm9yIHZhbHVlIGRpc3Bs YXlcbiIpOworICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgIH0KIAogICAgIGZvciAo aSA9IDA7IGkgPCBucl9kb21haW5zOyBpKyspCi0gICAgICAgIHBzcl9jYXRfcHJpbnRfb25lX2Rv bWFpbl9jYm0obGlzdFtpXS5kb21pZCwgc29ja2V0aWQsIGNkcF9lbmFibGVkLCBsdmwpOworICAg ICAgICBwc3JfcHJpbnRfb25lX2RvbWFpbl92YWwobGlzdFtpXS5kb21pZCwgaW5mbywgdHlwZSwg bHZsKTsKICAgICBsaWJ4bF9kb21pbmZvX2xpc3RfZnJlZShsaXN0LCBucl9kb21haW5zKTsKIAog ICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHBzcl9jYXRfcHJpbnRfc29ja2V0KHVpbnQz Ml90IGRvbWlkLCBsaWJ4bF9wc3JfY2F0X2luZm8gKmluZm8sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsdmwpCitzdGF0aWMgaW50IHBzcl9wcmludF9zb2Nr ZXQodWludDMyX3QgZG9taWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNy X2h3X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2Zl YXRfdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBs dmwpCiB7Ci0gICAgaW50IHJjOwotICAgIHVpbnQzMl90IGwzX2NhY2hlX3NpemU7Ci0KICAgICBw cmludGYoIiUtMTZzOiAldVxuIiwgIlNvY2tldCBJRCIsIGluZm8tPmlkKTsKIAotICAgIC8qIFNv IGZhciwgQ01UIG9ubHkgc3VwcG9ydHMgTDMgY2FjaGUuICovCi0gICAgaWYgKGx2bCA9PSAzKSB7 Ci0gICAgICAgIHJjID0gbGlieGxfcHNyX2NtdF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm8t PmlkLCAmbDNfY2FjaGVfc2l6ZSk7Ci0gICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gZ2V0IGwzIGNhY2hlIHNpemUgZm9yIHNvY2tldDolZFxu IiwKLSAgICAgICAgICAgICAgICAgICAgaW5mby0+aWQpOwotICAgICAgICAgICAgcmV0dXJuIC0x OworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9DQVRf SU5GTzoKKyAgICB7CisgICAgICAgIGludCByYzsKKyAgICAgICAgdWludDMyX3QgbDNfY2FjaGVf c2l6ZTsKKworICAgICAgICAvKiBTbyBmYXIsIENNVCBvbmx5IHN1cHBvcnRzIEwzIGNhY2hlLiAq LworICAgICAgICBpZiAobHZsID09IDMpIHsKKyAgICAgICAgICAgIHJjID0gbGlieGxfcHNyX2Nt dF9nZXRfbDNfY2FjaGVfc2l6ZShjdHgsIGluZm8tPmlkLCAmbDNfY2FjaGVfc2l6ZSk7CisgICAg ICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl ZCB0byBnZXQgbDMgY2FjaGUgc2l6ZSBmb3Igc29ja2V0OiVkXG4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgaW5mby0+aWQpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIsICJMMyBDYWNoZSIsIGwz X2NhY2hlX3NpemUpOwogICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiJS0xNnM6ICV1S0JcbiIs ICJMMyBDYWNoZSIsIGwzX2NhY2hlX3NpemUpOworCisgICAgICAgIHByaW50ZigiJS0xNnM6ICUj bGx4XG4iLCAiRGVmYXVsdCBDQk0iLAorICAgICAgICAgICAgICAgKDF1bGwgPDwgaW5mby0+dS5j YXRfaW5mby5jYm1fbGVuKSAtIDEpOworICAgICAgICBpZiAoaW5mby0+dS5jYXRfaW5mby5jZHBf ZW5hYmxlZCkKKyAgICAgICAgICAgIHByaW50ZigiJTVzJTI1cyUxNnMlMTZzXG4iLCAiSUQiLCAi TkFNRSIsICJDQk0gKGNvZGUpIiwgIkNCTSAoZGF0YSkiKTsKKyAgICAgICAgZWxzZQorICAgICAg ICAgICAgcHJpbnRmKCIlNXMlMjVzJTE2c1xuIiwgIklEIiwgIk5BTUUiLCAiQ0JNIik7CisKKyAg ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcHJpbnRmKCIlLTE2czogJSNsbHhcbiIsICJEZWZh dWx0IENCTSIsICgxdWxsIDw8IGluZm8tPmNibV9sZW4pIC0gMSk7Ci0gICAgaWYgKGluZm8tPmNk cF9lbmFibGVkKQotICAgICAgICBwcmludGYoIiU1cyUyNXMlMTZzJTE2c1xuIiwgIklEIiwgIk5B TUUiLCAiQ0JNIChjb2RlKSIsICJDQk0gKGRhdGEpIik7Ci0gICAgZWxzZQotICAgICAgICBwcmlu dGYoIiU1cyUyNXMlMTZzXG4iLCAiSUQiLCAiTkFNRSIsICJDQk0iKTsKKyAgICBjYXNlIExJQlhM X1BTUl9GRUFUX1RZUEVfTUJBX0lORk86CisgICAgICAgIHByaW50ZigiJS0xNnM6ICV1XG4iLCAi RGVmYXVsdCBUSFJUTCIsIDApOworICAgICAgICBwcmludGYoIiU1cyUyNXMlMTZzXG4iLCAiSUQi LCAiTkFNRSIsICJUSFJUTCIpOworICAgICAgICBicmVhazsKIAotICAgIHJldHVybiBwc3JfY2F0 X3ByaW50X2RvbWFpbl9jYm0oZG9taWQsIGluZm8tPmlkLCBpbmZvLT5jZHBfZW5hYmxlZCwgbHZs KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIklucHV0IGZlYXR1cmUg dHlwZSAlZCBpcyB3cm9uZ1xuIiwgdHlwZSk7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7 CisgICAgfQorCisgICAgcmV0dXJuIHBzcl9wcmludF9kb21haW5fdmFsKGRvbWlkLCBpbmZvLCB0 eXBlLCBsdmwpOwogfQogCi1zdGF0aWMgaW50IHBzcl9jYXRfc2hvdyh1aW50MzJfdCBkb21pZCwg dW5zaWduZWQgaW50IGx2bCkKK3N0YXRpYyBpbnQgcHNyX3ZhbF9zaG93KHVpbnQzMl90IGRvbWlk LAorICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfcHNyX2ZlYXRfdHlwZSB0eXBlLAorICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx2bCkKIHsKLSAgICBpbnQgaSwgbnI7 CisgICAgdW5zaWduZWQgaW50IGksIG5yOwogICAgIGludCByYzsKLSAgICBsaWJ4bF9wc3JfY2F0 X2luZm8gKmluZm87CisgICAgbGlieGxfcHNyX2h3X2luZm8gKmluZm87CiAKLSAgICBpZiAobHZs ICE9IDIgJiYgbHZsICE9IDMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnB1dCBsdmwg JWQgaXMgd3JvbmdcbiIsIGx2bCk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMSUJY TF9QU1JfRkVBVF9UWVBFX0NBVF9JTkZPOgorICAgICAgICBpZiAobHZsICE9IDIgJiYgbHZsICE9 IDMpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5wdXQgbHZsICVkIGlzIHdyb25n XG4iLCBsdmwpOworICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICAgICAgfQor ICAgICAgICBicmVhazsKKworICAgIGNhc2UgTElCWExfUFNSX0ZFQVRfVFlQRV9NQkFfSU5GTzoK KyAgICAgICAgaWYgKGx2bCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnB1dCBs dmwgJWQgaXMgd3JvbmdcbiIsIGx2bCk7CisgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJF OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgZnBy aW50ZihzdGRlcnIsICJJbnB1dCBmZWF0dXJlIHR5cGUgJWQgaXMgd3JvbmdcbiIsIHR5cGUpOwog ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgIH0KIAotICAgIHJjID0gbGlieGxfcHNy X2NhdF9nZXRfaW5mbyhjdHgsICZpbmZvLCAmbnIsIGx2bCk7CisgICAgcmMgPSBsaWJ4bF9wc3Jf Z2V0X2h3X2luZm8oY3R4LCAmaW5mbywgJm5yLCB0eXBlLCBsdmwpOwogICAgIGlmIChyYykgewot ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBnZXQgJXMgY2F0IGluZm9cbiIsIChs dmwgPT0gMyk/IkwzIjoiTDIiKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8g Z2V0IGluZm9cbiIpOwogICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCiAgICAgZm9yIChpID0g MDsgaSA8IG5yOyBpKyspIHsKLSAgICAgICAgcmMgPSBwc3JfY2F0X3ByaW50X3NvY2tldChkb21p ZCwgaW5mbyArIGksIGx2bCk7CisgICAgICAgIHJjID0gcHNyX3ByaW50X3NvY2tldChkb21pZCwg aW5mbyArIGksIHR5cGUsIGx2bCk7CiAgICAgICAgIGlmIChyYykKICAgICAgICAgICAgIGdvdG8g b3V0OwogICAgIH0KIAogb3V0OgotICAgIGxpYnhsX3Bzcl9jYXRfaW5mb19saXN0X2ZyZWUoaW5m bywgbnIpOworICAgIGxpYnhsX3Bzcl9od19pbmZvX2xpc3RfZnJlZShpbmZvLCBucik7CiAgICAg cmV0dXJuIHJjOwogfQogCkBAIC00NzksNiArNTI3LDI3IEBAIHN0YXRpYyBpbnQgcHNyX2wyX2Nh dF9od2luZm8odm9pZCkKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBtYWluX3Bzcl9tYmFfc2hv dyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgaW50IG9wdDsKKyAgICB1aW50MzJfdCBk b21pZDsKKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQsICIiLCBOVUxMLCAicHNyLW1iYS1z aG93IiwgMCkgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAgfQorCisgICAgaWYgKG9w dGluZCA+PSBhcmdjKQorICAgICAgICBkb21pZCA9IElOVkFMSURfRE9NSUQ7CisgICAgZWxzZSBp ZiAob3B0aW5kID09IGFyZ2MgLSAxKQorICAgICAgICBkb21pZCA9IGZpbmRfZG9tYWluKGFyZ3Zb b3B0aW5kXSk7CisgICAgZWxzZSB7CisgICAgICAgIGhlbHAoInBzci1tYmEtc2hvdyIpOworICAg ICAgICByZXR1cm4gMjsKKyAgICB9CisKKyAgICByZXR1cm4gcHNyX3ZhbF9zaG93KGRvbWlkLCBM SUJYTF9QU1JfRkVBVF9UWVBFX01CQV9JTkZPLCAwKTsKK30KKwogc3RhdGljIGludCBwc3JfbWJh X2h3aW5mbyh2b2lkKQogewogICAgIGludCByYzsKQEAgLTYxOCw3ICs2ODcsNyBAQCBpbnQgbWFp bl9wc3JfY2F0X3Nob3coaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgICAgICByZXR1cm4gMjsK ICAgICB9CiAKLSAgICByZXR1cm4gcHNyX2NhdF9zaG93KGRvbWlkLCBsdmwpOworICAgIHJldHVy biBwc3JfdmFsX3Nob3coZG9taWQsIExJQlhMX1BTUl9GRUFUX1RZUEVfQ0FUX0lORk8sIGx2bCk7 CiB9CiAKIGludCBtYWluX3Bzcl9od2luZm8oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotLSAKMS45 LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK