From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH v2 3/6] xen: credit2: soft-affinity awareness in csched2_cpu_pick() Date: Thu, 27 Jul 2017 14:05:53 +0200 Message-ID: <150115715350.6767.2140393293186342043.stgit@Solace> References: <150115657192.6767.15778617807307106582.stgit@Solace> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dahYE-0005Yu-0k for xen-devel@lists.xenproject.org; Thu, 27 Jul 2017 12:05:58 +0000 Received: by mail-wr0-f196.google.com with SMTP id g32so6969076wrd.5 for ; Thu, 27 Jul 2017 05:05:56 -0700 (PDT) In-Reply-To: <150115657192.6767.15778617807307106582.stgit@Solace> 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: "Justin T. Weaver" , George Dunlap , Anshul Makkar List-Id: xen-devel@lists.xenproject.org V2Ugd2FudCB0byBmaW5kIHRoZSBydW5xdWV1ZSB3aXRoIHRoZSBsZWFzdCBhdmVyYWdlIGxvYWQs CmFuZCB0byBkbyB0aGF0LCB3ZSBzY2FuIHRocm91Z2ggYWxsIHRoZSBydW5xdWV1ZXMuCgpJdCBp cywgdGhlcmVmb3JlLCBlbm91Z2ggdGhhdCwgZHVyaW5nIHN1Y2ggc2NhbjoKLSB3ZSBpZGVudGlm eSB0aGUgcnVucXVldWUgd2l0aCB0aGUgbGVhc3QgbG9hZCwgYW1vbmcKICB0aGUgb25lcyB0aGF0 IGhhdmUgcGNwdXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgc29mdAogIGFmZmluaXR5IG9mIHRoZSB2 Y3B1IHdlJ3JlIGNhbGxpbmcgcGljayBvbjsKLSB3ZSBpZGVudGlmeSB0aGUgc2FtZSwgYnV0IGZv ciBoYXJkIGFmZmluaXR5LgoKQXQgdGhpcyBwb2ludCwgd2UgY2FuIGRlY2lkZSB3aGV0aGVyIHRv IGdvIGZvciB0aGUKcnVucXVldWUgd2l0aCB0aGUgbGVhc3QgbG9hZCBhbW9uZyB0aGUgb25lcyB3 aXRoIHNvbWUKc29mdC1hZmZpbml0eSwgb3Igb3ZlcmFsbC4KClRoZXJlZm9yZSwgYXQgdGhlIHBy aWNlIG9mIHNvbWUgY29kZSByZXNodWZmbGluZywgd2UKY2FuIGF2b2lkIHRoZSBsb29wLgoKKEFs c28sIGtpbGwgYSBzcHVyaW91cyAnOycgaW4gdGhlIGRlZmluaXRpb24gb2YgTUFYX0xPQUQuKQoK U2lnbmVkLW9mZi1ieTogRGFyaW8gRmFnZ2lvbGkgPGRhcmlvLmZhZ2dpb2xpQGNpdHJpeC5jb20+ ClNpZ25lZC1vZmYtYnk6IEp1c3RpbiBULiBXZWF2ZXIgPGp0d2VhdmVyQGhhd2FpaS5lZHU+ClJl dmlld2VkLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Ci0tLQpD YzogQW5zaHVsIE1ha2thciA8YW5zaHVsbWFra2FyQGdtYWlsLmNvbT4KLS0tCiB4ZW4vY29tbW9u L3NjaGVkX2NyZWRpdDIuYyB8ICAxMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYyBiL3hlbi9jb21t b24vc2NoZWRfY3JlZGl0Mi5jCmluZGV4IGFhOGYxNjkuLjgyMzdhMGEgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCisrKyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5j CkBAIC0xNzYxLDE0ICsxNzYxLDE2IEBAIGNzY2hlZDJfY29udGV4dF9zYXZlZChjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICB2Y3B1X3NjaGVkdWxlX3Vu bG9ja19pcnEobG9jaywgdmMpOwogfQogCi0jZGVmaW5lIE1BWF9MT0FEIChTVElNRV9NQVgpOwor I2RlZmluZSBNQVhfTE9BRCAoU1RJTUVfTUFYKQogc3RhdGljIGludAogY3NjaGVkMl9jcHVfcGlj ayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKIHsKICAgICBz dHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKLSAgICBpbnQg aSwgbWluX3JxaSA9IC0xLCBuZXdfY3B1LCBjcHUgPSB2Yy0+cHJvY2Vzc29yOworICAgIGludCBp LCBtaW5fcnFpID0gLTEsIG1pbl9zX3JxaSA9IC0xOworICAgIHVuc2lnbmVkIGludCBuZXdfY3B1 LCBjcHUgPSB2Yy0+cHJvY2Vzc29yOwogICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnN2YyA9IGNz Y2hlZDJfdmNwdSh2Yyk7Ci0gICAgc190aW1lX3QgbWluX2F2Z2xvYWQgPSBNQVhfTE9BRDsKKyAg ICBzX3RpbWVfdCBtaW5fYXZnbG9hZCA9IE1BWF9MT0FELCBtaW5fc19hdmdsb2FkID0gTUFYX0xP QUQ7CisgICAgYm9vbCBoYXNfc29mdDsKIAogICAgIEFTU0VSVCghY3B1bWFza19lbXB0eSgmcHJ2 LT5hY3RpdmVfcXVldWVzKSk7CiAKQEAgLTE4MTksMTcgKzE4MjEsMzUgQEAgY3NjaGVkMl9jcHVf cGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICAg ICAgZWxzZSBpZiAoIGNwdW1hc2tfaW50ZXJzZWN0cyhjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSks CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN2Yy0+bWlncmF0ZV9ycWQt PmFjdGl2ZSkgKQogICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSWYg d2UndmUgYmVlbiBhc2tlZCB0byBtb3ZlIHRvIG1pZ3JhdGVfcnFkLCB3ZSBzaG91bGQganVzdCBk bworICAgICAgICAgICAgICogdGhhdCwgd2hpY2ggd2UgYWN0dWFsbHkgZG8gYnkgcmV0dXJuaW5n IG9uZSBjcHUgZnJvbSB0aGF0IHJ1bnEuCisgICAgICAgICAgICAgKiBUaGVyZSBpcyBubyBuZWVk IHRvIHRha2UgY2FyZSBvZiBzb2Z0IGFmZmluaXR5LCBhcyB0aGF0IHdpbGwKKyAgICAgICAgICAg ICAqIGhhcHBlbiBpbiBydW5xX3RpY2tsZSgpLgorICAgICAgICAgICAgICovCiAgICAgICAgICAg ICBjcHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdmMtPm1pZ3JhdGVfcnFkLT5hY3Rp dmUpOwogICAgICAgICAgICAgbmV3X2NwdSA9IGNwdW1hc2tfY3ljbGUoc3ZjLT5taWdyYXRlX3Jx ZC0+cGlja19iaWFzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1bWFz a19zY3JhdGNoX2NwdShjcHUpKTsKKwogICAgICAgICAgICAgc3ZjLT5taWdyYXRlX3JxZC0+cGlj a19iaWFzID0gbmV3X2NwdTsKICAgICAgICAgICAgIGdvdG8gb3V0X3VwOwogICAgICAgICB9CiAg ICAgICAgIC8qIEZhbGwtdGhyb3VnaCB0byBub3JtYWwgY3B1IHBpY2sgKi8KICAgICB9CiAKLSAg ICAvKiBGaW5kIHRoZSBydW5xdWV1ZSB3aXRoIHRoZSBsb3dlc3QgYXZlcmFnZSBsb2FkLiAqLwor ICAgIC8qCisgICAgICogV2hhdCB3ZSB3YW50IGlzOgorICAgICAqICAtIGlmIHdlIGhhdmUgc29m dCBhZmZpbml0eSwgdGhlIHJ1bnF1ZXVlIHdpdGggdGhlIGxvd2VzdCBhdmVyYWdlCisgICAgICog ICAgbG9hZCwgYW1vbmcgdGhlIG9uZXMgdGhhdCBjb250YWluIGNwdXMgaW4gb3VyIHNvZnQgYWZm aW5pdHk7IHRoaXMKKyAgICAgKiAgICByZXByZXNlbnRzIHRoZSBiZXN0IHJ1bnEgb24gd2hpY2gg d2Ugd291bGQgd2FudCB0byBydW4uCisgICAgICogIC0gdGhlIHJ1bnF1ZXVlIHdpdGggdGhlIGxv d2VzdCBhdmVyYWdlIGxvYWQgYW1vbmcgdGhlIG9uZXMgdGhhdAorICAgICAqICAgIGNvbnRhaW5z IGNwdXMgaW4gb3VyIGhhcmQgYWZmaW5pdHk7IHRoaXMgcmVwcmVzZW50IHRoZSBiZXN0IHJ1bnEK KyAgICAgKiAgICBvbiB3aGljaCB3ZSBjYW4gcnVuLgorICAgICAqCisgICAgICogRmluZCBib3Ro IHJ1bnF1ZXVlcyBpbiBvbmUgcGFzcy4KKyAgICAgKi8KKyAgICBoYXNfc29mdCA9IGhhc19zb2Z0 X2FmZmluaXR5KHZjLCB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHkpOwogICAgIGZvcl9lYWNoX2NwdShp LCAmcHJ2LT5hY3RpdmVfcXVldWVzKQogICAgIHsKICAgICAgICAgc3RydWN0IGNzY2hlZDJfcnVu cXVldWVfZGF0YSAqcnFkOwpAQCAtMTgzOCwzMSArMTg1OCw1MSBAQCBjc2NoZWQyX2NwdV9waWNr KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQogICAgICAgICBy cWQgPSBwcnYtPnJxZCArIGk7CiAKICAgICAgICAgLyoKLSAgICAgICAgICogSWYgY2hlY2tpbmcg YSBkaWZmZXJlbnQgcnVucXVldWUsIGdyYWIgdGhlIGxvY2ssIGNoZWNrIGhhcmQKLSAgICAgICAg ICogYWZmaW5pdHksIHJlYWQgdGhlIGF2ZywgYW5kIHRoZW4gcmVsZWFzZSB0aGUgbG9jay4KKyAg ICAgICAgICogSWYgbm9uZSBvZiB0aGUgY3B1cyBvZiB0aGlzIHJ1bnF1ZXVlIGlzIGluIHN2Yydz IGhhcmQtYWZmaW5pdHksCisgICAgICAgICAqIHNraXAgdGhlIHJ1bnF1ZXVlLgorICAgICAgICAg KgorICAgICAgICAgKiBOb3RlIHRoYXQsIGluIGNhc2Ugc3ZjJ3MgaGFyZC1hZmZpbml0eSBoYXMg Y2hhbmdlZCwgdGhpcyBpcyB0aGUKKyAgICAgICAgICogZmlyc3QgdGltZSB3aGVuIHdlIHNlZSBz dWNoIGNoYW5nZSwgc28gaXQgaXMgaW5kZWVkIHBvc3NpYmxlCisgICAgICAgICAqIHRoYXQgd2Ug ZW5kIHVwIHNraXBwaW5nIHN2YydzIGN1cnJlbnQgcnVucXVldWUuCisgICAgICAgICAqLworICAg ICAgICBpZiAoICFjcHVtYXNrX2ludGVyc2VjdHMoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCAm cnFkLT5hY3RpdmUpICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qCisgICAg ICAgICAqIElmIGNoZWNraW5nIGEgZGlmZmVyZW50IHJ1bnF1ZXVlLCBncmFiIHRoZSBsb2NrLCBy ZWFkIHRoZSBhdmcsCisgICAgICAgICAqIGFuZCB0aGVuIHJlbGVhc2UgdGhlIGxvY2suCiAgICAg ICAgICAqCiAgICAgICAgICAqIElmIG9uIG91ciBvd24gcnVucXVldWUsIGRvbid0IGdyYWIgb3Ig cmVsZWFzZSB0aGUgbG9jazsKICAgICAgICAgICogYnV0IHN1YnRyYWN0IG91ciBvd24gbG9hZCBm cm9tIHRoZSBydW5xdWV1ZSBsb2FkIHRvIHNpbXVsYXRlCiAgICAgICAgICAqIGltcGFydGlhbGl0 eS4KLSAgICAgICAgICoKLSAgICAgICAgICogTm90ZSB0aGF0LCBpZiBzdmMncyBoYXJkIGFmZmlu aXR5IGhhcyBjaGFuZ2VkLCB0aGlzIGlzIHRoZQotICAgICAgICAgKiBmaXJzdCB0aW1lIHdoZW4g d2Ugc2VlIHN1Y2ggY2hhbmdlLCBzbyBpdCBpcyBpbmRlZWQgcG9zc2libGUKLSAgICAgICAgICog dGhhdCBub25lIG9mIHRoZSBjcHVzIGluIHN2YydzIGN1cnJlbnQgcnVucXVldWUgaXMgaW4gb3Vy Ci0gICAgICAgICAqIChuZXcpIGhhcmQgYWZmaW5pdHkhCiAgICAgICAgICAqLwogICAgICAgICBp ZiAoIHJxZCA9PSBzdmMtPnJxZCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICggY3B1bWFz a19pbnRlcnNlY3RzKGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgJnJxZC0+YWN0aXZlKSApCi0g ICAgICAgICAgICAgICAgcnFkX2F2Z2xvYWQgPSBtYXhfdChzX3RpbWVfdCwgcnFkLT5iX2F2Z2xv YWQgLSBzdmMtPmF2Z2xvYWQsIDApOworICAgICAgICAgICAgcnFkX2F2Z2xvYWQgPSBtYXhfdChz X3RpbWVfdCwgcnFkLT5iX2F2Z2xvYWQgLSBzdmMtPmF2Z2xvYWQsIDApOwogICAgICAgICB9CiAg ICAgICAgIGVsc2UgaWYgKCBzcGluX3RyeWxvY2soJnJxZC0+bG9jaykgKQogICAgICAgICB7Ci0g ICAgICAgICAgICBpZiAoIGNwdW1hc2tfaW50ZXJzZWN0cyhjcHVtYXNrX3NjcmF0Y2hfY3B1KGNw dSksICZycWQtPmFjdGl2ZSkgKQotICAgICAgICAgICAgICAgIHJxZF9hdmdsb2FkID0gcnFkLT5i X2F2Z2xvYWQ7Ci0KKyAgICAgICAgICAgIHJxZF9hdmdsb2FkID0gcnFkLT5iX2F2Z2xvYWQ7CiAg ICAgICAgICAgICBzcGluX3VubG9jaygmcnFkLT5sb2NrKTsKICAgICAgICAgfQogCisgICAgICAg IC8qCisgICAgICAgICAqIGlmIHN2YyBoYXMgYSBzb2Z0LWFmZmluaXR5LCBhbmQgc29tZSBjcHVz IG9mIHJxZCBhcmUgcGFydCBvZiBpdCwKKyAgICAgICAgICogc2VlIGlmIHdlIG5lZWQgdG8gdXBk YXRlIHRoZSAic29mdC1hZmZpbml0eSBtaW5pbXVtIi4KKyAgICAgICAgICovCisgICAgICAgIGlm ICggaGFzX3NvZnQgJiYKKyAgICAgICAgICAgICBycWRfYXZnbG9hZCA8IG1pbl9zX2F2Z2xvYWQg KQorICAgICAgICB7CisgICAgICAgICAgICBjcHVtYXNrX3QgbWFzazsKKworICAgICAgICAgICAg Y3B1bWFza19hbmQoJm1hc2ssIGNwdW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgJnJxZC0+YWN0aXZl KTsKKyAgICAgICAgICAgIGlmICggY3B1bWFza19pbnRlcnNlY3RzKCZtYXNrLCBzdmMtPnZjcHUt PmNwdV9zb2Z0X2FmZmluaXR5KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWlu X3NfYXZnbG9hZCA9IHJxZF9hdmdsb2FkOworICAgICAgICAgICAgICAgIG1pbl9zX3JxaSA9IGk7 CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogSW4gYW55IGNhc2UsIGtlZXAg dGhlICJoYXJkLWFmZmluaXR5IG1pbmltdW0iIHVwZGF0ZWQgdG9vLiAqLwogICAgICAgICBpZiAo IHJxZF9hdmdsb2FkIDwgbWluX2F2Z2xvYWQgKQogICAgICAgICB7CiAgICAgICAgICAgICBtaW5f YXZnbG9hZCA9IHJxZF9hdmdsb2FkOwpAQCAtMTg3MCwxNyArMTkxMCw1NCBAQCBjc2NoZWQyX2Nw dV9waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQogICAg ICAgICB9CiAgICAgfQogCi0gICAgLyogV2UgZGlkbid0IGZpbmQgYW55b25lIChtb3N0IGxpa2Vs eSBiZWNhdXNlIG9mIHNwaW5sb2NrIGNvbnRlbnRpb24pLiAqLwotICAgIGlmICggbWluX3JxaSA9 PSAtMSApCisgICAgaWYgKCBoYXNfc29mdCAmJiBtaW5fc19ycWkgIT0gLTEgKQorICAgIHsKKyAg ICAgICAgLyoKKyAgICAgICAgICogV2UgaGF2ZSBzb2Z0IGFmZmluaXR5LCBhbmQgd2UgaGF2ZSBh IGNhbmRpZGF0ZSBydW5xLCBzbyBnbyBmb3IgaXQuCisgICAgICAgICAqCisgICAgICAgICAqIE5v dGUgdGhhdCwgdG8gb2J0YWluIHRoZSBzb2Z0LWFmZmluaXR5IG1hc2ssIHdlICJqdXN0IiBwdXQg d2hhdCB3ZQorICAgICAgICAgKiBoYXZlIGluIGNwdW1hc2tfc2NyYXRjaCBpbiAmJiB3aXRoIHZj LT5jcHVfc29mdF9hZmZpbml0eS4gVGhpcyBpcworICAgICAgICAgKiBvayBiZWNhdXNlOgorICAg ICAgICAgKiAtIHdlIGtub3cgdGhhdCB2Yy0+Y3B1X2hhcmRfYWZmaW5pdHkgYW5kIHZjLT5jcHVf c29mdF9hZmZpbml0eSBoYXZlCisgICAgICAgICAqICAgYSBub24tZW1wdHkgaW50ZXJzZWN0aW9u IChiZWNhdXNlIGhhc19zb2Z0IGlzIHRydWUpOworICAgICAgICAgKiAtIHdlIGhhdmUgdmMtPmNw dV9oYXJkX2FmZmluaXR5ICYgY3B1cG9vbF9kb21haW5fY3B1bWFzaygpIGFscmVhZHkKKyAgICAg ICAgICogICBpbiBjcHVtYXNrX3NjcmF0Y2gsIHdlIGRvIHNhdmUgYSBsb3QgZG9pbmcgbGlrZSB0 aGlzLgorICAgICAgICAgKgorICAgICAgICAgKiBJdCdzIGtpbmQgb2YgbGlrZSBvcGVuIGNvZGlu ZyBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2soKSBidXQsIGluCisgICAgICAgICAqIHRoaXMgc3Bl Y2lmaWMgY2FzZSwgY2FsbGluZyB0aGF0IHdvdWxkIG1lYW4gYSBsb3Qgb2YgKHVubmVjZXNzYXJ5 KQorICAgICAgICAgKiBjcHVtYXNrIG9wZXJhdGlvbnMuCisgICAgICAgICAqLworICAgICAgICBj cHVtYXNrX2FuZChjcHVtYXNrX3NjcmF0Y2hfY3B1KGNwdSksIGNwdW1hc2tfc2NyYXRjaF9jcHUo Y3B1KSwKKyAgICAgICAgICAgICAgICAgICAgdmMtPmNwdV9zb2Z0X2FmZmluaXR5KTsKKyAgICAg ICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBjcHVtYXNrX3NjcmF0Y2hf Y3B1KGNwdSksCisgICAgICAgICAgICAgICAgICAgICZwcnYtPnJxZFttaW5fc19ycWldLmFjdGl2 ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKCBtaW5fcnFpICE9IC0xICkKICAgICB7CisgICAgICAg IC8qCisgICAgICAgICAqIEVpdGhlciB3ZSBkb24ndCBoYXZlIHNvZnQtYWZmaW5pdHksIG9yIHdl IGRvLCBidXQgd2UgZGlkIG5vdCBmaW5kCisgICAgICAgICAqIGFueSBzdWl0YWJsZSBydW5xLiBC dXQgd2UgZGlkIGZpbmQgb25lIHdoZW4gY29uc2lkZXJpbmcgaGFyZAorICAgICAgICAgKiBhZmZp bml0eSwgc28gZ28gZm9yIGl0LgorICAgICAgICAgKgorICAgICAgICAgKiBjcHVtYXNrX3NjcmF0 Y2ggYWxyZWFkeSBoYXMgdmMtPmNwdV9oYXJkX2FmZmluaXR5ICYKKyAgICAgICAgICogY3B1cG9v bF9kb21haW5fY3B1bWFzaygpIGluIGl0LCBzbyBpdCdzIGVub3VnaCB0aGF0IHdlIGZpbHRlcgor ICAgICAgICAgKiB3aXRoIHRoZSBjcHVzIG9mIHRoZSBydW5xLgorICAgICAgICAgKi8KKyAgICAg ICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBjcHVtYXNrX3NjcmF0Y2hf Y3B1KGNwdSksCisgICAgICAgICAgICAgICAgICAgICZwcnYtPnJxZFttaW5fcnFpXS5hY3RpdmUp OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBXZSBkaWRu J3QgZmluZCBhbnlvbmUgYXQgYWxsIChtb3N0IGxpa2VseSBiZWNhdXNlIG9mIHNwaW5sb2NrCisg ICAgICAgICAqIGNvbnRlbnRpb24pLgorICAgICAgICAgKi8KICAgICAgICAgbmV3X2NwdSA9IGdl dF9mYWxsYmFja19jcHUoc3ZjKTsKICAgICAgICAgbWluX3JxaSA9IGMycihuZXdfY3B1KTsKICAg ICAgICAgbWluX2F2Z2xvYWQgPSBwcnYtPnJxZFttaW5fcnFpXS5iX2F2Z2xvYWQ7CiAgICAgICAg IGdvdG8gb3V0X3VwOwogICAgIH0KIAotICAgIGNwdW1hc2tfYW5kKGNwdW1hc2tfc2NyYXRjaF9j cHUoY3B1KSwgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLAotICAgICAgICAgICAgICAgICZwcnYt PnJxZFttaW5fcnFpXS5hY3RpdmUpOwogICAgIG5ld19jcHUgPSBjcHVtYXNrX2N5Y2xlKHBydi0+ cnFkW21pbl9ycWldLnBpY2tfYmlhcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVt YXNrX3NjcmF0Y2hfY3B1KGNwdSkpOwogICAgIHBydi0+cnFkW21pbl9ycWldLnBpY2tfYmlhcyA9 IG5ld19jcHU7CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==