From mboxrd@z Thu Jan 1 00:00:00 1970 From: Praveen Kumar Subject: [PATCH RFC 2/2] xen: credit2: flexible configuration of runqueues Date: Fri, 10 Mar 2017 23:57:38 +0530 Message-ID: <1489170458-22712-1-git-send-email-kpraveen.lkml@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: george.dunlap@eu.citrix.com, dario.faggioli@citrix.com, Praveen Kumar List-Id: xen-devel@lists.xenproject.org VGhlIGlkZWEgaXMgdG8gZ2l2ZSB1c2VyIG1vcmUgZmxleGliaWxpdHkgdG8gY29uZmlndXJlIHJ1 bnF1ZXVlIGZ1cnRoZXIuCkZvciBtb3N0IHdvcmtsb2FkcyBhbmQgaW4gbW9zdCBzeXN0ZW1zLCB1 c2luZyBwZXItY29yZSBtZWFucyBoYXZlIHRvbyBtYW55CnNtYWxsIHJ1bnF1ZXVlcy4gVXNpbmcg cGVyLXNvY2tldCBpcyBhbG1vc3QgYWx3YXlzIGJldHRlciwgYnV0IGl0IG1heSByZXN1bHQKaW4g dG9vIGZldyBiaWcgcnVucXVldWVzLgoKT1BUSU9OIDEgOgotLS0tLS0tLQpUaGUgdXNlciBjYW4g Y3JlYXRlIHJ1bnF1ZXVlIHBlci1jcHUgdXNpbmcgWGVuIGJvb3QgcGFyYW1ldGVyIGxpa2UgYmVs b3c6CgogY3JlZGl0Ml9ydW5xdWV1ZT1jcHUKCndoaWNoIHdvdWxkIG1lYW4gdGhlIGZvbGxvd2lu ZzoKIC0gcENQVSAwIGJlbG9uZyB0byBydW5xdWV1ZSAwCiAtIHBDUFUgMSBiZWxvbmcgdG8gcnVu cXVldWUgMQogLSBwQ1BVIDIgYmVsb25nIHRvIHJ1bnF1ZXVlIDIKIGFuZCBzbyBvbi4KCk9QVElP TiAyIDoKLS0tLS0tLS0KRnVydGhlciB1c2VyIGNhbiBiZSBhbGxvd2VkIHRvIHNheSBzb21ldGhp bmcgc2hvd24gYmVsb3cgOgoKIGNyZWRpdDJfcnVucXVldWU9MCwxLDQsNTsyLDMsNiw3OzgsOSwx MiwxMzsxMCwxMSwxNCwxNQoKb3IgKHdpdGggZXhhY3RseSB0aGUgc2FtZSBtZWFuaW5nLCBidXQg YSBwZXJoYXBzIG1vcmUgY2xlYXIgc3ludGF4KToKCiBjcmVkaXQyX3J1bnF1ZXVlPVtbMCwxLDQs NV1bMiwzLDYsN11bOCw5LDEyLDEzXVsxMCwxMSwxNCwxNV1dCgp3aGljaCB3b3VsZCBtZWFuIHRo ZSBmb2xsb3dpbmc6CiAtIHBDUFVzIDAsIDEsIDQgYW5kIDUgYmVsb25nIHRvIHJ1bnF1ZXVlIDAK IC0gcENQVXMgMiwgMywgNiBhbmQgNyBiZWxvbmcgdG8gcnVucXVldWUgMQogLSBwQ1BVcyA4LCA5 LCAxMiBhbmQgMTMgYmVsb25nIHRvIHJ1bnF1ZXVlIDIKIC0gcENQVXMgMTAsIDExLCAxNCBhbmQg MTUgYmVsb25nIHRvIHJ1bnF1ZXVlIDMKCi0tLQpQQVRDSCAyLzIgZW5hYmxlcyB0byBjcmVhdGUg cnVucXVldWUgYmFzZWQgdXBvbiBbT1BUSU9OIDJdLgotLS0KUkZDIDoKQ3VycmVudCBpbXBsZW1l bnRhdGlvbiBpcyBwYXJzaW5nIHRoZSBkYXRhIGZvciBiZWxvdyBzeW50YXguCiJjcmVkaXQyX3J1 bnF1ZXVlPVtbMCwxLDQsNV1bMiwzLDYsN11bOCw5LDEyLDEzXVsxMCwxMSwxNCwxNV1dIgoKSSBh bSBhbHNvIHdvcmtpbmcgZm9yIHNpbXBsZXIgb25lIGFzIG1lbnRpb25lZCBpbiBhYm92ZSBkZXNj aXB0aW9uLgpTaGFyaW5nIHRoZSBwYXRjaCB0byBnZXQgZnVydGhlciBpbnB1dHMgb3ZlciB0aGUg Y2hhbmdlcy4KLS0tCgpTaWduZWQtb2ZmLWJ5OiBQcmF2ZWVuIEt1bWFyIDxrcHJhdmVlbi5sa21s QGdtYWlsLmNvbT4KCi0tLQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMg Yi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwppbmRleCBhZjQ1N2MxLi41MDVhYTZiIDEwMDY0 NAotLS0gYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYworKysgYi94ZW4vY29tbW9uL3NjaGVk X2NyZWRpdDIuYwpAQCAtMzE4LDYgKzMxOCwxNiBAQCBpbnRlZ2VyX3BhcmFtKCJjcmVkaXQyX2Jh bGFuY2Vfb3ZlciIsIG9wdF9vdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZSk7CiAgKiAgICAgICAg ICAgKGxvZ2ljYWwpIHByb2Nlc3NvcnMgb2YgdGhlIGhvc3QgYmVsb25nLiBUaGlzIHdpbGwgaGFw cGVuIGlmCiAgKiAgICAgICAgICAgdGhlIG9wdF9ydW5xdWV1ZSBwYXJhbWV0ZXIgaXMgc2V0IHRv ICdhbGwnLgogICoKKyAqIC0gY3VzdG9tIDogbWVhbmluZyB0aGF0IHRoZXJlIHdpbGwgYmUgb25l IHJ1bnF1ZXVlIHBlciBzdWJzZXQgYmVpbmcgcGFzc2VkIGFzCisgKiAgICAgICAgICBwYXJhbWV0 ZXIgdG8gY3JlZGl0Ml9ydW5xdWV1ZSBhcyBzaG93biBpbiBiZWxvdyBleGFtcGxlLgorICogICAg ICAgICAgRXhhbXBsZSA6CisgKiAgICAgICAgICBjcmVkaXQyX3J1bnF1ZXVlPVtbY3B1MCxjcHUx XVtjcHUzXVtjcHU0LGNwdTVdXQorICoKKyAqICAgICAgICAgIFRoZSBleGFtcGxlIG1lbnRpb25l ZCBzdGF0ZXMgOgorICogICAgICAgICAgICAgICAgICBjcHUwIGFuZCBjcHUxIGJlbG9uZ3MgdG8g cnVucXVldWUgMAorICogICAgICAgICAgICAgICAgICBjcHUzIGJlbG9uZ3MgdG8gcnVucXVldWUg MQorICogICAgICAgICAgICAgICAgICBjcHU0IGFuZCBjcHU1IGJlbG9uZ3MgdG8gcnVucXVldWUg MgorICoKICAqIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2Ygb3B0X3J1bnF1ZXVlLCB0aGVyZWZv cmUsIGNwdXMgdGhhdCBhcmUgcGFydCBvZgogICogZWl0aGVyIHRoZSBzYW1lIHBoeXNpY2FsIGNv cmUsIHRoZSBzYW1lIHBoeXNpY2FsIHNvY2tldCwgdGhlIHNhbWUgTlVNQQogICogbm9kZSwgb3Ig anVzdCBhbGwgb2YgdGhlbSwgd2lsbCBiZSBwdXQgdG9nZXRoZXIgdG8gZm9ybSBydW5xdWV1ZXMu CkBAIC0zMjYsMTcgKzMzNiw2MiBAQCBpbnRlZ2VyX3BhcmFtKCJjcmVkaXQyX2JhbGFuY2Vfb3Zl ciIsIG9wdF9vdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZSk7CiAjZGVmaW5lIE9QVF9SVU5RVUVV RV9TT0NLRVQgMQogI2RlZmluZSBPUFRfUlVOUVVFVUVfTk9ERSAgIDIKICNkZWZpbmUgT1BUX1JV TlFVRVVFX0FMTCAgICAzCisjZGVmaW5lIE9QVF9SVU5RVUVVRV9DVVNUT00gNAogc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IG9wdF9ydW5xdWV1ZV9zdHJbXSA9IHsKICAgICBbT1BUX1JVTlFVRVVF X0NPUkVdID0gImNvcmUiLAogICAgIFtPUFRfUlVOUVVFVUVfU09DS0VUXSA9ICJzb2NrZXQiLAog ICAgIFtPUFRfUlVOUVVFVUVfTk9ERV0gPSAibm9kZSIsCi0gICAgW09QVF9SVU5RVUVVRV9BTExd ID0gImFsbCIKKyAgICBbT1BUX1JVTlFVRVVFX0FMTF0gPSAiYWxsIiwKKyAgICBbT1BUX1JVTlFV RVVFX0NVU1RPTV0gPSAiY3VzdG9tIgogfTsKIHN0YXRpYyBpbnQgX19yZWFkX21vc3RseSBvcHRf cnVucXVldWUgPSBPUFRfUlVOUVVFVUVfU09DS0VUOwogCitzdGF0aWMgaW50IF9fcmVhZF9tb3N0 bHkgY3VzdG9tX2NwdV9ydW5xdWV1ZVtOUl9DUFVTXTsKKworCisjZGVmaW5lIEdFVFRPS0VOKCB0 b2tlbiwgbGVuLCBzdGFydCwgZW5kICkgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2hhciBfdG1w W2xlbisxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IF9p OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg c2FmZV9zdHJjcHkoX3RtcCwgc3RhcnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgX3RtcFtsZW5dID0gJ1wwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgZm9yICggX2kgPSAwOyBfdG1wW19pXSAhPSAnXDAnOyBfaSsrICkgICAgICAgICAg ICAgICBcCisgICAgICAgIHRva2VuID0gKCAoIHRva2VuICogMTAgKSArICggX3RtcFtfaV0gLSAn MCcgKSApOyBcCit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHRyaW0oY29uc3QgY2hhciAqYywgY2hh ciAqdCwgY2hhciBlbGVtKQoreworICAgIGludCBsID0gc3RybGVuKGMpOworICAgIGNvbnN0IGNo YXIgKnggPSBjIDsKKyAgICBpbnQgaSA9IDA7CisgICAgaWYgKCAhYyB8fCAhdCApCisgICAgICAg IHJldHVybiAtMTsKKyAgICB3aGlsZSAoICp4ICE9ICdcMCcgJiYgaSA8IGwgKQorICAgIHsKKyAg ICAgICAgaWYgKCAqeCAhPSBlbGVtICkKKyAgICAgICAgICAgIHRbaSsrXSA9ICp4OworICAgICAg ICB4Kys7CisgICAgfQorICAgIHRbaV0gPSAnXDAnOworICAgIHJldHVybiAwOworfQorCitzdGF0 aWMgaW5saW5lIGludCBnZXRsZW4oY2hhciAqc3RhcnQsIGNoYXIgKmVuZCkKK3sKKyAgICBpZiAo ICggc3RhcnQgKSAmJiAoIGVuZCApICYmICggZW5kID4gc3RhcnQgKSApCisgICAgICAgIHJldHVy biBlbmQtc3RhcnQ7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gLTE7Cit9CisKIHN0YXRpYyB2 b2lkIHBhcnNlX2NyZWRpdDJfcnVucXVldWUoY29uc3QgY2hhciAqcykKIHsKICAgICB1bnNpZ25l ZCBpbnQgaTsKKyAgICBjb25zdCBjaGFyICpzX2VuZCA9IE5VTEw7CisgICAgY2hhciBtW3N0cmxl bihzKV07CisgICAgY2hhciAqX3MgPSBOVUxMOwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJB WV9TSVpFKG9wdF9ydW5xdWV1ZV9zdHIpOyBpKysgKQogICAgIHsKQEAgLTM0Niw4ICs0MDEsMTE4 IEBAIHN0YXRpYyB2b2lkIHBhcnNlX2NyZWRpdDJfcnVucXVldWUoY29uc3QgY2hhciAqcykKICAg ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKyAgICAvKgorICAgICAqIEF0IHRo aXMgc3RhZ2Ugd2UgYXJlIGVpdGhlciB1bmtub3duIHZhbHVlIG9mIGNyZWRpdDJfcnVucXVldWUg b3Igd2UgY2FuCisgICAgICogY29uc2lkZXIgaXQgdG8gYmUgY3VzdG9tIGNwdS4gTGV0cyB0cnkg cGFyc2luZyB0aGUgc2FtZS4KKyAgICAgKiBSZXNldHRpbmcgdGhlIGN1c3RvbV9jcHVfcnVucXVl dWUgZm9yIGZ1dHVyZSB1c2UuIE9ubHkgdGhlIG5vbi1uZWdhdGl2ZQorICAgICAqIGVudHJpZXMg d2lsbCBiZSB2YWxpZC4gVGhlIGluZGV4ICdpJyBpbiBjdXN0b21fY3B1X3J1bnF1ZXVlIHdpbGwg c3RvcmUKKyAgICAgKiB0aGUgc3BlY2lmaWMgcnVucXVldWUgaXQgYmVsb25ncyB0by4KKyAgICAg KiBFeGFtcGxlOgorICAgICAqICAgICBJZiBjdXN0b21fY3B1X3J1bnF1ZXVlWzNdID09IDIKKyAg ICAgKiAgICAgVGhlbiwgaXQgbWVhbnMgdGhhdCBjcHUgMyBiZWxvbmcgdG8gcnVucXVldWUgMi4K KyAgICAgKiAgICAgSWYgY3VzdG9tX2NwdV9ydW5xdWV1ZVs0XSA9PSAtMQorICAgICAqICAgICBU aGVuLCBpdCBtZWFucyB0aGF0IGNwdSA0IGRvZXNuJ3QgYmVsb25nIHRvIGFueSBydW5xdWV1ZS4K KyAgICAgKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yX2NwdV9pZHM7IGkrKyApCisgICAgICAg IGN1c3RvbV9jcHVfcnVucXVldWVbaV0gPSAtMTsKKworICAgIC8qCisgICAgICogRm9ybWF0IFtb MCwxLDQsNV1bMiwzLDYsN11bOCw5LDEyLDEzXVsxMCwxMSwxNCwxNV1dCisgICAgICovCisgICAg aSA9IDA7CisKKyAgICAvKiBJbiBjYXNlIHVzZXIgaGF2ZSBzcGFjZXMgaW5jbHVkZWQgaW4gdGhl IGlucHV0ICovCisgICAgaWYgKCB0cmltKHMsIG0sICcgJykgIT0gMCApCisgICAgeworICAgICAg ICBwcmludGsgKCAiV0FSTklORyA6ICVzWyVkXSB0cmltIGZhaWxlZC5cbiIsIF9fZnVuY19fLCBf X0xJTkVfXyApOworICAgICAgICBnb3RvIGVyclJldHVybjsKKyAgICB9CisgICAgLyogU3RhcnRp bmcgdG8gcGFyc2UgYW5kIGdldCB0aGUgY3B1IGluZm9ybWF0aW9uIG9uIHRyaW1tZWQgZGF0YSAq LworICAgIF9zID0gbTsKKyAgICBzX2VuZCA9IF9zICsgc3RybGVuKF9zKTsKIAotICAgIHByaW50 aygiV0FSTklORywgdW5yZWNvZ25pemVkIHZhbHVlIG9mIGNyZWRpdDJfcnVucXVldWUgb3B0aW9u IVxuIik7CisgICAgLyogVGhlIHN0YXJ0IGFuZCBzaG91bGQgYWx3YXlzIGJlIGluIGZvcm1hdCBv ZiAnWy4uXScgKi8KKyAgICBpZiAoICggJ1snID09ICpfcyApICYmICggJ10nID09ICooc19lbmQt MSkpICkKKyAgICB7CisgICAgICAgIGNoYXIgKnN0YXJ0ID0gTlVMTCwgKmVuZCA9IE5VTEw7Cisg ICAgICAgIGludCBjcHVfYWRkZWRfdG9fcnVucXVldWUgPSAwOworICAgICAgICBfcysrOworICAg ICAgICB3aGlsZSAoICggX3MgIT0gTlVMTCApICYmICggX3MgPCBzX2VuZCApICkKKyAgICAgICAg eworICAgICAgICAgICAgY2hhciAqdG9rZW5fc3ViX3N0ciA9IE5VTEw7CisgICAgICAgICAgICBz dGFydCA9IHN0cnN0cihfcywgIlsiKTsKKyAgICAgICAgICAgIGVuZCA9IHN0cnN0cihfcywgIl0i KTsKKwkgICAgLyogVmFsaWRhdGlvbiBjaGVja3MgZm9yICdbJyBhbmQgJ10nIHRvIHByb3Blcmx5 IHBhcnNlIHRoZSBlbnRyaWVzCisJICAgICAqLworICAgICAgICAgICAgaWYgKCAoICFzdGFydCAm JiAhZW5kICkgfHwgKCAoIGVuZCA9PSAoIHNfZW5kIC0xICkgKSAmJiBzdGFydCApICkKKyAgICAg ICAgICAgICAgICBnb3RvIGVyclJldHVybjsKKwkgICAgLyogQ2hlY2sgZm9yIGxhc3QgZW50cnkg Ki8KKyAgICAgICAgICAgIGVsc2UgaWYgKCAhc3RhcnQgJiYgKCBlbmQgPT0gKCBzX2VuZCAtMSAp ICkgKQorICAgICAgICAgICAgICAgIGdvdG8gbmV4dFNldDsKKworCSAgICAvKiBJZiB3ZSBoYXZl IFtdIGFzIGVudHJ5LCBtb3ZlIHRvIG5leHRTZXQgKi8KKyAgICAgICAgICAgIGlmICggZ2V0bGVu ICggc3RhcnQsIGVuZCApIDwgMSApCisgICAgICAgICAgICAgICAgZ290byBuZXh0U2V0OworCisJ ICAgIC8qIFN0YXJ0IHRvIHBhcnNlIHRoZSBhY3R1YWwgdmFsdWUgKi8KKyAgICAgICAgICAgIHN0 YXJ0Kys7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogZmluZCB0b2tlbiB3aXRoaW4g dGhlIHN1YnNldAorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGRvCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgaW50IHRva2VuID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgbGVu ID0gMDsKKyAgICAgICAgICAgICAgICAvKiBHZXQgY3B1IGlkcyBzZXBhcmF0ZWQgYnkgJywnIHdp dGhpbiBlYWNoIHNldCAqLworICAgICAgICAgICAgICAgIHRva2VuX3N1Yl9zdHIgPSBzdHJwYnJr KHN0YXJ0LCAiLCIpOworICAgICAgICAgICAgICAgIGlmICggKCAhdG9rZW5fc3ViX3N0ciAmJiBz dGFydCA8IGVuZCApIHx8CisgICAgICAgICAgICAgICAgICAgICggdG9rZW5fc3ViX3N0ciA+IGVu ZCAmJiB0b2tlbl9zdWJfc3RyID4gc3RhcnQgKSApCisgICAgICAgICAgICAgICAgICAgIGxlbiA9 IGdldGxlbihzdGFydCwgZW5kKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgICAgIGxlbiA9IGdldGxlbihzdGFydCwgdG9rZW5fc3ViX3N0cik7CisKKyAgICAgICAgICAg ICAgICBpZiAoIGxlbiA8PSAwICkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgICAgICAgICAgLyogR0VUVE9LRU4gd2lsbCBnZXQgcmV0dXJuIHRoZSBwYXJzZSBhbmQgcG9w dWxhdGUgdGhlIGNwdSBpbgorICAgICAgICAgICAgICAgICAqIHRva2VuCisgICAgICAgICAgICAg ICAgICovCisgICAgICAgICAgICAgICAgR0VUVE9LRU4odG9rZW4sIGxlbiwgc3RhcnQgLCBlbmQg KTsKKworICAgICAgICAgICAgICAgIGlmICggdG9rZW4gPj0gbnJfY3B1X2lkcykKKyAgICAgICAg ICAgICAgICAgICAgZ290byBlcnJSZXR1cm47CisKKwkJLyogSWYgbm90IHNldCBhbHJlYWR5ICov CisgICAgICAgICAgICAgICAgaWYgKCBjdXN0b21fY3B1X3J1bnF1ZXVlW3Rva2VuXSA9PSAtMSAp CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjdXN0b21fY3B1X3J1bnF1 ZXVlW3Rva2VuXSA9IGk7CisgICAgICAgICAgICAgICAgICAgIGNwdV9hZGRlZF90b19ydW5xdWV1 ZSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgICAgICAgICAgZ290byBlcnJSZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoICF0b2tl bl9zdWJfc3RyIHx8IHRva2VuX3N1Yl9zdHIgPiBlbmQgKQorICAgICAgICAgICAgICAgICAgICBn b3RvIG5leHRTZXQ7CisKKyAgICAgICAgICAgICAgICBzdGFydCA9ICsrdG9rZW5fc3ViX3N0cjsK KyAgICAgICAgICAgIH0gd2hpbGUgKCBzdGFydCA8IGVuZCApOworbmV4dFNldDoKKyAgICAgICAg ICAgIGlmICggY3B1X2FkZGVkX3RvX3J1bnF1ZXVlICkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgY3B1X2FkZGVkX3RvX3J1bnF1ZXVlID0gMDsK KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgX3MgPSArK2VuZDsKKyAgICAgICAgfQorICAg ICAgICBvcHRfcnVucXVldWUgPSBPUFRfUlVOUVVFVUVfQ1VTVE9NOworICAgICAgICByZXR1cm47 CisgICAgfQorZXJyUmV0dXJuOgorICAgIC8qIFJlc2V0dGluZyBpbiBjYXNlIG9mIGZhaWx1cmUs IHNvIHRoYXQgd2UgZG9uJ3QgbWVzcy11cCBkdXJpbmcgYW55IGZhaWx1cmUKKyAgICAgKiBkdWUg dG8gd3Jvbmcgb3Igc3B1cmlvdXMgcGF0dGVybiBwYXNzZWQgYnkgdXNlci4KKyAgICAgKi8KKyAg ICBvcHRfcnVucXVldWUgPSBPUFRfUlVOUVVFVUVfU09DS0VUOworICAgIHByaW50aygiV0FSTklO RywgdW5yZWNvZ25pemVkIHZhbHVlIG9mIGNyZWRpdDRfcnVucXVldWUgb3B0aW9uIVxuIik7CiB9 CiBjdXN0b21fcGFyYW0oImNyZWRpdDJfcnVucXVldWUiLCBwYXJzZV9jcmVkaXQyX3J1bnF1ZXVl KTsKIApAQCAtNjU2LDYgKzgyMSwxNSBAQCBjcHVfdG9fcnVucXVldWUoc3RydWN0IGNzY2hlZDJf cHJpdmF0ZSAqcHJ2LCB1bnNpZ25lZCBpbnQgY3B1KQogICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1 ZXVlX2RhdGEgKnJxZDsKICAgICB1bnNpZ25lZCBpbnQgcnFpOwogCisgICAgaWYgKCBvcHRfcnVu cXVldWUgPT0gT1BUX1JVTlFVRVVFX0NVU1RPTSApCisgICAgeworICAgICAgICBpZiAoIGN1c3Rv bV9jcHVfcnVucXVldWVbY3B1XSAhPSAtMSApCisgICAgICAgIHsKKyAgICAgICAgICAgIEJVR19P TihjdXN0b21fY3B1X3J1bnF1ZXVlW2NwdV0gPj0gbnJfY3B1X2lkcyk7CisgICAgICAgICAgICBy ZXR1cm4gY3VzdG9tX2NwdV9ydW5xdWV1ZVtjcHVdOworICAgICAgICB9CisgICAgfQorCiAgICAg Zm9yICggcnFpID0gMDsgcnFpIDwgbnJfY3B1X2lkczsgcnFpKysgKQogICAgIHsKICAgICAgICAg dW5zaWduZWQgaW50IHBlZXJfY3B1OwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==