From mboxrd@z Thu Jan 1 00:00:00 1970 From: Praveen Kumar Subject: [RFC PATCH v4] xen: credit2: provide custom option to create runqueue Date: Wed, 19 Apr 2017 23:15:18 +0530 Message-ID: <20170419174518.986-1-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: george.dunlap@eu.citrix.com, dario.faggioli@citrix.com Cc: Praveen Kumar , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcsIHZlcnkgZmxleGlibGUgd2F5IG9mIGFycmFuZ2lu ZyBydW5xdWV1ZXMgaW4gQ3JlZGl0Mi4KSXQgYWxsb3dzIHRvIHNwZWNpZnksIGV4cGxpY2l0bHkg YW5kIHByZWNpc2VseSwgd2hhdCBwQ1BVcyBzaG91bGQgYmVsb25nIHRvCndoaWNoIHJ1bnF1ZXVl LgoKU2lnbmVkLW9mZi1ieTogUHJhdmVlbiBLdW1hciA8a3ByYXZlZW4ubGttbEBnbWFpbC5jb20+ Ci0tLQogZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gfCAgMTAgKystCiB4ZW4v Y29tbW9uL3NjaGVkX2NyZWRpdDIuYyAgICAgICAgICB8IDE2NyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTc0IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFy a2Rvd24gYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCAzM2U1NGFl ZjYzLi5mMmVlNGFkOTcyIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93bgorKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtNTI1 LDcgKzUyNSw3IEBAIGFsc28gc2xvdyBpbiByZXNwb25kaW5nIHRvIGxvYWQgY2hhbmdlcy4KIFRo ZSBkZWZhdWx0IHZhbHVlIG9mIGAxIHNlY2AgaXMgcmF0aGVyIGxvbmcuCiAKICMjIyBjcmVkaXQy XF9ydW5xdWV1ZQotPiBgPSBjcHUgfCBjb3JlIHwgc29ja2V0IHwgbm9kZSB8IGFsbGAKKz4gYD0g Y3B1IHwgY29yZSB8IHNvY2tldCB8IG5vZGUgfCBhbGwgfCA8Y3VzdG9tPmAKIAogPiBEZWZhdWx0 OiBgc29ja2V0YAogCkBAIC01NDMsNiArNTQzLDE0IEBAIEF2YWlsYWJsZSBhbHRlcm5hdGl2ZXMs IHdpdGggdGhlaXIgbWVhbmluZywgYXJlOgogKiBgbm9kZWA6IG9uZSBydW5xdWV1ZSBwZXIgZWFj aCBOVU1BIG5vZGUgb2YgdGhlIGhvc3Q7CiAqIGBhbGxgOiBqdXN0IG9uZSBydW5xdWV1ZSBzaGFy ZWQgYnkgYWxsIHRoZSBsb2dpY2FsIHBDUFVzIG9mCiAgICAgICAgICB0aGUgaG9zdAorKiBgPGN1 c3RvbT5gOiBvbmUgcnVucXVldWUgcGVyIG1lbnRpb25lZCBzdWJzZXQuIFRoZSBzdWJzZXQgY2Fu IGJlIGRlZmluZWQgYXMKKyAgICAgICAgICAgICAgYXMgc2hvd24gaW4gYmVsb3cgZXhhbXBsZToK KyAgICAgICAgICAgICAgY3JlZGl0Ml9ydW5xdWV1ZT1bWzAsMSxdWzIsNl1bMyw1XVs0LDddXSAs IG9yIDAsMVw7Miw2XDszLDVcOzQsNworICAgICAgICAgICAgICB3aGljaCBtZWFucyA6CisgICAg ICAgICAgICAgICAgICAtIHBDUFVzIDAgYW5kIDEgYmVsb25nIHRvIHJ1bnF1ZXVlIDAKKyAgICAg ICAgICAgICAgICAgIC0gcENQVXMgMiBhbmQgNiBiZWxvbmcgdG8gcnVucXVldWUgMQorICAgICAg ICAgICAgICAgICAgLSBwQ1BVcyAzIGFuZCA1IGJlbG9uZyB0byBydW5xdWV1ZSAyCisgICAgICAg ICAgICAgICAgICAtIHBDUFVzIDQgYW5kIDcgYmVsb25nIHRvIHJ1bnF1ZXVlIDMKIAogIyMjIGRi Z3AKID4gYD0gZWhjaVsgPGludGVnZXI+IHwgQHBjaTxidXM+OjxzbG90Pi48ZnVuYz4gXWAKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9zY2hlZF9j cmVkaXQyLmMKaW5kZXggYjliOTI4MzQ3Zi4uZWJlYzMzZjQ1MCAxMDA2NDQKLS0tIGEveGVuL2Nv bW1vbi9zY2hlZF9jcmVkaXQyLmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMKQEAg LTMyMSw2ICszMjEsMTYgQEAgaW50ZWdlcl9wYXJhbSgiY3JlZGl0Ml9iYWxhbmNlX292ZXIiLCBv cHRfb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2UpOwogICogICAgICAgICAgIChsb2dpY2FsKSBw cm9jZXNzb3JzIG9mIHRoZSBob3N0IGJlbG9uZy4gVGhpcyB3aWxsIGhhcHBlbiBpZgogICogICAg ICAgICAgIHRoZSBvcHRfcnVucXVldWUgcGFyYW1ldGVyIGlzIHNldCB0byAnYWxsJy4KICAqCisg KiAtIGN1c3RvbTogbWVhbmluZyB0aGF0IHRoZXJlIHdpbGwgYmUgb25lIHJ1bnF1ZXVlIHBlciBz dWJzZXQgYmVpbmcgcGFzc2VkIGFzCisgKiAgICAgICAgICAgcGFyYW1ldGVyIHRvIGNyZWRpdDJf cnVucXVldWUgYXMgc2hvd24gaW4gYmVsb3cgZXhhbXBsZS4KKyAqICAgICAgICAgICBFeGFtcGxl OgorICogICAgICAgICAgIGNyZWRpdDJfcnVucXVldWU9W1tjcHUwLGNwdTFdW2NwdTNdW2NwdTQs Y3B1NV1dIG9yCisgKiAgICAgICAgICAgY3JlZGl0Ml9ydW5xdWV1ZT0wLDFcOzNcOzQsNQorICog ICAgICAgICAgIFRoZSBleGFtcGxlIG1lbnRpb25lZCBzdGF0ZXMgOgorICogICAgICAgICAgICAg ICBjcHUwIGFuZCBjcHUxIGJlbG9uZ3MgdG8gcnVucXVldWUgMAorICogICAgICAgICAgICAgICBj cHUzIGJlbG9uZ3MgdG8gcnVucXVldWUgMQorICogICAgICAgICAgICAgICBjcHU0IGFuZCBjcHU1 IGJlbG9uZ3MgdG8gcnVucXVldWUgMgorICoKICAqIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2Yg b3B0X3J1bnF1ZXVlLCB0aGVyZWZvcmUsIGNwdXMgdGhhdCBhcmUgcGFydCBvZgogICogZWl0aGVy IHRoZSBzYW1lIHBoeXNpY2FsIGNvcmUsIHRoZSBzYW1lIHBoeXNpY2FsIHNvY2tldCwgdGhlIHNh bWUgTlVNQQogICogbm9kZSwgb3IganVzdCBhbGwgb2YgdGhlbSwgd2lsbCBiZSBwdXQgdG9nZXRo ZXIgdG8gZm9ybSBydW5xdWV1ZXMuCkBAIC0zMzAsMTUgKzM0MCwxMzggQEAgaW50ZWdlcl9wYXJh bSgiY3JlZGl0Ml9iYWxhbmNlX292ZXIiLCBvcHRfb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2Up OwogI2RlZmluZSBPUFRfUlVOUVVFVUVfU09DS0VUIDIKICNkZWZpbmUgT1BUX1JVTlFVRVVFX05P REUgICAzCiAjZGVmaW5lIE9QVF9SVU5RVUVVRV9BTEwgICAgNAorI2RlZmluZSBPUFRfUlVOUVVF VUVfQ1VTVE9NIDUKIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBvcHRfcnVucXVldWVfc3RyW10g PSB7CiAgICAgW09QVF9SVU5RVUVVRV9DUFVdID0gImNwdSIsCiAgICAgW09QVF9SVU5RVUVVRV9D T1JFXSA9ICJjb3JlIiwKICAgICBbT1BUX1JVTlFVRVVFX1NPQ0tFVF0gPSAic29ja2V0IiwKICAg ICBbT1BUX1JVTlFVRVVFX05PREVdID0gIm5vZGUiLAotICAgIFtPUFRfUlVOUVVFVUVfQUxMXSA9 ICJhbGwiCisgICAgW09QVF9SVU5RVUVVRV9BTExdID0gImFsbCIsCisgICAgW09QVF9SVU5RVUVV RV9DVVNUT01dID0gImN1c3RvbSIKIH07CiBzdGF0aWMgaW50IF9fcmVhZF9tb3N0bHkgb3B0X3J1 bnF1ZXVlID0gT1BUX1JVTlFVRVVFX1NPQ0tFVDsKIAorc3RhdGljIHVuc2lnbmVkIGxvbmcgX19y ZWFkX21vc3RseSBjdXN0b21fY3B1X3J1bnF1ZXVlW05SX0NQVVNdOworCitzdGF0aWMgaW5saW5l IGludCBnZXRsZW4oY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCkKK3sKKyAgICBp ZiAoICggc3RhcnQgKSAmJiAoIGVuZCApICYmICggZW5kID4gc3RhcnQgKSApCisgICAgICAgIHJl dHVybiBlbmQtc3RhcnQ7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRp YyBpbnQgcGFyc2VfY3VzdG9tX3J1bnF1ZXVlX29wdGlvbihjb25zdCBjaGFyICpzKQoreworICAg IGNvbnN0IGNoYXIgKnBhcnNlID0gTlVMTCwgKnNfZW5kID0gTlVMTDsKKyAgICBjb25zdCBjaGFy ICpzdGFydCA9IE5VTEwsICplbmQgPSBOVUxMOworICAgIGNoYXIgZGVsaW1pdGVyWzJdID0gezB9 OworICAgIGludCBjcHVfYWRkZWRfdG9fcnVucXVldWUgPSAwOworICAgIGludCBydW5xdWV1ZSA9 IDA7CisKKyAgICAvKiBGb3JtYXQgc3VwcG9ydGVkIDoKKyAgICAgKiBbWzAsMSw0LDVdWzIsMyw2 LDddWzgsOSwxMiwxM11bMTAsMTEsMTQsMTVdXQorICAgICAqICAgICAgICAgICAgICAgICAgb3IK KyAgICAgKiAwLDEsNCw1XDsyLDMsNiw3XDs4LDksMTIsMTNcOzEwLDExLDE0LDE1CisgICAgICov CisgICAgcGFyc2UgPSBzOworICAgIHNfZW5kID0gcyArIHN0cmxlbihzKTsKKyAgICAvKiBUaGUg c3RhcnQgYW5kIHNob3VsZCBhbHdheXMgYmUgaW4gZm9ybWF0IG9mICdbLi5dJyAqLworICAgIGlm ICggKCAnWycgPT0gKnBhcnNlICkgJiYgKCAnXScgPT0gKihzX2VuZC0xKSkgKQorICAgIHsKKyAg ICAgICAgZGVsaW1pdGVyWzBdID0gJ1snOworICAgICAgICBkZWxpbWl0ZXJbMV0gPSAnXDAnOwor ICAgICAgICBwYXJzZSsrOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBkZWxpbWl0 ZXJbMF0gPSAnOyc7CisgICAgICAgIGRlbGltaXRlclsxXSA9ICdcMCc7CisgICAgfQorCisgICAg d2hpbGUgKCAoIHBhcnNlICE9IE5VTEwgKSAmJiAoIHBhcnNlIDwgc19lbmQgKSApCisgICAgewor ICAgICAgICBjb25zdCBjaGFyICp0b2tlbl9zdWJfc3RyID0gTlVMTDsKKworICAgICAgICB3aGls ZSAoICpwYXJzZSA9PSAnWycgKQorICAgICAgICAgICAgcGFyc2UrKzsKKworICAgICAgICBzdGFy dCA9IHBhcnNlOworICAgICAgICBlbmQgPSBzdHJzdHIocGFyc2UsIGRlbGltaXRlcik7CisKKyAg ICAgICAgLyogQ2hlY2sgaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgZGVsaW1pdGVyICovCisgICAgICAg IGlmICggIWVuZCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIElmIHdlIGRvbid0IGhhdmUg ZGVsaW1pdGVyLCB0aGVuIGJyZWFrLCBpZiBzdGFydCBpcyBncmVhdGVyIHRoYW4KKyAgICAgICAg ICAgICAqIG9yIGVxdWFsIHRvIHNfZW5kLCBhcyB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZC4KKyAg ICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBzdGFydCA+PSBzX2VuZCApCisgICAgICAg ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8qIFdlIG5lZWQgdG8gcGFyc2UgdGlsbCBz X2VuZCwgYXMgd2UgaGF2ZSB0aGUgbGFzdCBzZXQgKi8KKyAgICAgICAgICAgIGVuZCA9IHNfZW5k OworICAgICAgICB9CisKKyAgICAgICAgLyogSnVzdCBtb3ZlIHRvIG5leHQsIGFzIHdlIGhhdmUg ZW1wdHkgc2V0IGxpa2UgW10gb3IgOzsgKi8KKyAgICAgICAgaWYgKCBnZXRsZW4gKCBzdGFydCwg ZW5kICkgPCAxICkKKyAgICAgICAgICAgIGdvdG8gbmV4dDsKKworICAgICAgICAvKgorICAgICAg ICAgKiBmaW5kIHRva2VuIHdpdGhpbiB0aGUgc3Vic2V0CisgICAgICAgICAqLworICAgICAgICBk bworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHRva2VuID0gMDsKKworICAg ICAgICAgICAgLyogR2V0IGNwdSBpZHMgc2VwYXJhdGVkIGJ5ICcsJyB3aXRoaW4gZWFjaCBzZXQg Ki8KKyAgICAgICAgICAgIHRva2VuX3N1Yl9zdHIgPSBzdHJwYnJrKHN0YXJ0LCAiLCIpOworCisg ICAgICAgICAgICAvKiBCYXNpYyBjaGVja3MgdG8gdmFsaWRhdGUgdGhlIGxhc3QgZW50cnkgaW4g c3Vic2V0ICovCisgICAgICAgICAgICBpZiAoICggIXRva2VuX3N1Yl9zdHIgJiYgc3RhcnQgPCBl bmQgKSB8fAorICAgICAgICAgICAgICAgICggdG9rZW5fc3ViX3N0ciA+IGVuZCAmJiB0b2tlbl9z dWJfc3RyID4gc3RhcnQgKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCAo IGRlbGltaXRlclswXSA9PSAnWycgKSAmJiAoIHN0YXJ0ID09IHNfZW5kIC0gMSApICkKKyAgICAg ICAgICAgICAgICAgICAgZ290byBuZXh0OworCisgICAgICAgICAgICAgICAgdG9rZW5fc3ViX3N0 ciA9IGVuZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSnVzdCBtb3ZlIHRvIG5l eHQsIGFzIHdlIGhhdmUgZW1wdHkgc2V0IGxpa2UgW10gb3IgOzsgKi8KKyAgICAgICAgICAgIGlm ICggZ2V0bGVuKHN0YXJ0LCB0b2tlbl9zdWJfc3RyKSA8IDEgKQorICAgICAgICAgICAgICAgIGdv dG8gbmV4dDsKKworICAgICAgICAgICAgdG9rZW4gPSBzaW1wbGVfc3RydG91bChzdGFydCAsJnRv a2VuX3N1Yl9zdHIsIDApOworCisgICAgICAgICAgICBpZiAoIHRva2VuID49IG5yX2NwdV9pZHMp CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICAvKiBJZiBub3Qgc2V0 IGFscmVhZHkgKi8KKyAgICAgICAgICAgIGlmICggY3VzdG9tX2NwdV9ydW5xdWV1ZVt0b2tlbl0g PT0gLTEgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGN1c3RvbV9jcHVfcnVucXVl dWVbdG9rZW5dID0gcnVucXVldWU7CisgICAgICAgICAgICAgICAgY3B1X2FkZGVkX3RvX3J1bnF1 ZXVlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg ICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgIGlmICggIXRva2VuX3N1Yl9zdHIgfHwgdG9rZW5f c3ViX3N0ciA+IGVuZCApCisgICAgICAgICAgICAgICAgZ290byBuZXh0OworCisgICAgICAgICAg ICBzdGFydCA9ICsrdG9rZW5fc3ViX3N0cjsKKyAgICAgICAgfSB3aGlsZSAoIHN0YXJ0IDwgZW5k ICk7CituZXh0OgorICAgICAgICBpZiAoIGNwdV9hZGRlZF90b19ydW5xdWV1ZSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHJ1bnF1ZXVlKys7CisgICAgICAgICAgICBjcHVfYWRkZWRfdG9fcnVu cXVldWUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgcGFyc2UgPSArK2VuZDsKKyAgICB9Cisg ICAgb3B0X3J1bnF1ZXVlID0gT1BUX1JVTlFVRVVFX0NVU1RPTTsKKyAgICByZXR1cm4gMDsKK30K Kwogc3RhdGljIHZvaWQgcGFyc2VfY3JlZGl0Ml9ydW5xdWV1ZShjb25zdCBjaGFyICpzKQogewog ICAgIHVuc2lnbmVkIGludCBpOwpAQCAtMzUxLDggKzQ4NCwyOSBAQCBzdGF0aWMgdm9pZCBwYXJz ZV9jcmVkaXQyX3J1bnF1ZXVlKGNvbnN0IGNoYXIgKnMpCiAgICAgICAgICAgICByZXR1cm47CiAg ICAgICAgIH0KICAgICB9CisgICAgLyoKKyAgICAgKiBBdCB0aGlzIHN0YWdlIHdlIGFyZSBlaXRo ZXIgdW5rbm93biB2YWx1ZSBvZiBjcmVkaXQyX3J1bnF1ZXVlIG9yIHdlIGNhbgorICAgICAqIGNv bnNpZGVyIGl0IHRvIGJlIGN1c3RvbSBjcHUuIExldHMgdHJ5IHBhcnNpbmcgdGhlIHNhbWUuCisg ICAgICogUmVzZXR0aW5nIHRoZSBjdXN0b21fY3B1X3J1bnF1ZXVlIGZvciBmdXR1cmUgdXNlLiBP bmx5IHRoZSBub24tbmVnYXRpdmUKKyAgICAgKiBlbnRyaWVzIHdpbGwgYmUgdmFsaWQuIFRoZSBp bmRleCAnaScgaW4gY3VzdG9tX2NwdV9ydW5xdWV1ZSB3aWxsIHN0b3JlCisgICAgICogdGhlIHNw ZWNpZmljIHJ1bnF1ZXVlIGl0IGJlbG9uZ3MgdG8uCisgICAgICogRXhhbXBsZToKKyAgICAgKiAg ICAgSWYgY3VzdG9tX2NwdV9ydW5xdWV1ZVszXSA9PSAyCisgICAgICogICAgIFRoZW4sIGl0IG1l YW5zIHRoYXQgY3B1IDMgYmVsb25nIHRvIHJ1bnF1ZXVlIDIuCisgICAgICogICAgIElmIGN1c3Rv bV9jcHVfcnVucXVldWVbNF0gPT0gLTEKKyAgICAgKiAgICAgVGhlbiwgaXQgbWVhbnMgdGhhdCBj cHUgNCBkb2Vzbid0IGJlbG9uZyB0byBhbnkgcnVucXVldWUuCisgICAgICovCisgICAgZm9yICgg aSA9IDA7IGkgPCBucl9jcHVfaWRzOyBpKysgKQorICAgICAgICBjdXN0b21fY3B1X3J1bnF1ZXVl W2ldID0gLTE7CiAKLSAgICBwcmludGsoIldBUk5JTkcsIHVucmVjb2duaXplZCB2YWx1ZSBvZiBj cmVkaXQyX3J1bnF1ZXVlIG9wdGlvbiFcbiIpOworICAgIGlmICggcGFyc2VfY3VzdG9tX3J1bnF1 ZXVlX29wdGlvbihzKSAhPSAwICkKKyAgICB7CisgICAgICAgIC8qIFJlc2V0dGluZyBpbiBjYXNl IG9mIGZhaWx1cmUsIHNvIHRoYXQgd2UgZG9uJ3QgbWVzcy11cCBkdXJpbmcgYW55IGZhaWx1cmUK KyAgICAgICAgICogZHVlIHRvIHdyb25nIG9yIHNwdXJpb3VzIHBhdHRlcm4gcGFzc2VkIGJ5IHVz ZXIuCisgICAgICAgICAqLworICAgICAgICBvcHRfcnVucXVldWUgPSBPUFRfUlVOUVVFVUVfU09D S0VUOworICAgICAgICBwcmludGsoIldBUk5JTkcsIHVucmVjb2duaXplZCB2YWx1ZSBvZiBjcmVk aXQyX3J1bnF1ZXVlIG9wdGlvbiFcbiIpOworICAgIH0KIH0KIGN1c3RvbV9wYXJhbSgiY3JlZGl0 Ml9ydW5xdWV1ZSIsIHBhcnNlX2NyZWRpdDJfcnVucXVldWUpOwogCkBAIC02NjIsNiArODE2LDE1 IEBAIGNwdV90b19ydW5xdWV1ZShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYsIHVuc2lnbmVk IGludCBjcHUpCiAgICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkOwogICAgIHVu c2lnbmVkIGludCBycWk7CiAKKyAgICBpZiAoIG9wdF9ydW5xdWV1ZSA9PSBPUFRfUlVOUVVFVUVf Q1VTVE9NICkKKyAgICB7CisgICAgICAgIGlmICggY3VzdG9tX2NwdV9ydW5xdWV1ZVtjcHVdICE9 IC0xICkKKyAgICAgICAgeworICAgICAgICAgICAgQlVHX09OKGN1c3RvbV9jcHVfcnVucXVldWVb Y3B1XSA+PSBucl9jcHVfaWRzKTsKKyAgICAgICAgICAgIHJldHVybiBjdXN0b21fY3B1X3J1bnF1 ZXVlW2NwdV07CisgICAgICAgIH0KKyAgICB9CisKICAgICBmb3IgKCBycWkgPSAwOyBycWkgPCBu cl9jcHVfaWRzOyBycWkrKyApCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgcGVlcl9jcHU7 Ci0tIAoyLjEyLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK