From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH v2 1/6] xen/tools: credit2: soft-affinity awareness in runq_tickle() Date: Thu, 27 Jul 2017 14:05:38 +0200 Message-ID: <150115713877.6767.4795115900091736740.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 1dahfG-0006yA-59 for xen-devel@lists.xenproject.org; Thu, 27 Jul 2017 12:13:14 +0000 Received: by mail-wm0-f66.google.com with SMTP id c184so10950315wmd.1 for ; Thu, 27 Jul 2017 05:13:12 -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: Wei Liu , Ian Jackson , George Dunlap , Anshul Makkar List-Id: xen-devel@lists.xenproject.org U29mdC1hZmZpbml0eSBzdXBwb3J0IGlzIHVzdWFsbHkgaW1wbGVtZW50ZWQgYnkgbWVhbnMKb2Yg YSB0d28gc3RlcCAiYmFsYW5jaW5nIGxvb3AiLCB3aGVyZToKLSBkdXJpbmcgdGhlIGZpcnN0IHN0 ZXAsIHdlIGNvbnNpZGVyIHNvZnQtYWZmaW5pdHkKICAoaWYgdGhlIHZjcHUgaGFzIG9uZSk7Ci0g ZHVyaW5nIHRoZSBzZWNvbmQgKGlmIHdlIGdldCB0byBpdCksIHdlIGNvbnNpZGVyCiAgaGFyZC1h ZmZpbml0eS4KCkluIHJ1bnFfdGlja2xlKCksIHdlIG5lZWQgdG8gZG8gdGhhdCBmb3IgY2hlY2tp bmcKd2hldGhlciB3ZSBjYW4gZXhlY3V0ZSB0aGUgd2FraW5nIHZDUFUgb24gYW4gcENQVQp0aGF0 IGlzIGlkbGUuIEluIGZhY3QsIHdlIHdhbnQgdG8gYmUgc3VyZSB0aGF0LCBpZgp0aGVyZSBpcyBh biBpZGxlIHBDUFUgaW4gdGhlIHZDUFUncyBzb2Z0IGFmZmluaXR5LAp3ZSdsbCB1c2UgaXQuCgpJ ZiB0aGVyZSBhcmUgbm8gc3VjaCBpZGxlIHBDUFVzLCB0aG91Z2gsIGFuZCB3ZQpoYXZlIHRvIGNo ZWNrIG5vbi1pZGxlIG9uZXMsIHdlIGNhbiBhdm9pZCB0aGUgbG9vcAphbmQgdG8gYm90aCBoYXJk IGFuZCBzb2Z0LWFmZmluaXR5IGluIG9uZSBwYXNzLgoKSW4gZmFjdCwgd2UgY2FuIHdlIHNjYW4g cnVucXVldWUgYW5kIGNvbXB1dGUgYQoic2NvcmUiIGZvciBlYWNoIHZDUFUgd2hpY2ggaXMgcnVu bmluZyBvbiBlYWNoIHBDUFUuClRoZSBpZGVhIGlzLCBzaW5jZSB3ZSBtYXkgaGF2ZSB0byBwcmVl bXB0IHNvbWVvbmU6Ci0gdHJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSB3YWtpbmcgdkNQVSB3aWxs IHJ1bgogIGluc2lkZSBpdHMgc29mdC1hZmZpbml0eSwKLSB0cnkgdG8gcHJlZW1wdCBzb21lb25l IHRoYXQgaXMgcnVubmluZyBvdXRzaWRlCiAgb2YgaXRzIG93biBzb2Z0LWFmZmluaXR5LgoKVGhl IHZhbHVlIG9mIHRoZSBzY29yZSBpcyBhZGRlZCB0byBhIHRyYWNlIHJlY29yZCwKc28geGVuYWx5 emUncyBjb2RlIGFuZCB0b29scy94ZW50cmFjZS9mb3JtYXRzIGFyZQp1cGRhdGVkIGFjY29yZGlu Z2x5LgoKU3VnZ2VzdGVkLWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5j b20+ClNpZ25lZC1vZmYtYnk6IERhcmlvIEZhZ2dpb2xpIDxkYXJpby5mYWdnaW9saUBjaXRyaXgu Y29tPgpSZXZpZXdlZC1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29t PgotLS0KQ2M6IEFuc2h1bCBNYWtrYXIgPGFuc2h1bG1ha2thckBnbWFpbC5jb20+CkNjOiBJYW4g SmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+Ci0tLQogdG9vbHMveGVudHJhY2UvZm9ybWF0cyAgICAgfCAgICAyIAogdG9v bHMveGVudHJhY2UveGVuYWx5emUuYyAgfCAgICA3ICsKIHhlbi9jb21tb24vc2NoZWRfY3JlZGl0 Mi5jIHwgIDIxNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCAxNDYgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvdG9vbHMveGVudHJhY2UvZm9ybWF0cyBiL3Rvb2xzL3hlbnRyYWNlL2Zvcm1hdHMK aW5kZXggYzFmNTg0Zi4uZjM5MTgyYSAxMDA2NDQKLS0tIGEvdG9vbHMveGVudHJhY2UvZm9ybWF0 cworKysgYi90b29scy94ZW50cmFjZS9mb3JtYXRzCkBAIC01Myw3ICs1Myw3IEBACiAweDAwMDIy MjAyICBDUFUlKGNwdSlkICAlKHRzYylkICgrJShyZWx0c2MpOGQpICBjc2NoZWQyOnJ1bnFfcG9z ICAgICAgIFsgZG9tOnZjcHUgPSAweCUoMSkwOHgsIHBvcyA9ICUoMilkXQogMHgwMDAyMjIwMyAg Q1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpjcmVkaXQgYnVybiAg ICBbIGRvbTp2Y3B1ID0gMHglKDEpMDh4LCBjcmVkaXQgPSAlKDIpZCwgZGVsdGEgPSAlKDMpZCBd CiAweDAwMDIyMjA0ICBDUFUlKGNwdSlkICAlKHRzYylkICgrJShyZWx0c2MpOGQpICBjc2NoZWQy OmNyZWRpdF9hZGQKLTB4MDAwMjIyMDUgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4 ZCkgIGNzY2hlZDI6dGlja2xlX2NoZWNrICAgWyBkb206dmNwdSA9IDB4JSgxKTA4eCwgY3JlZGl0 ID0gJSgyKWQgXQorMHgwMDAyMjIwNSAgQ1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThk KSAgY3NjaGVkMjp0aWNrbGVfY2hlY2sgICBbIGRvbTp2Y3B1ID0gMHglKDEpMDh4LCBjcmVkaXQg PSAlKDIpZCwgc2NvcmUgPSAlKDMpZCBdCiAweDAwMDIyMjA2ICBDUFUlKGNwdSlkICAlKHRzYylk ICgrJShyZWx0c2MpOGQpICBjc2NoZWQyOnRpY2tsZSAgICAgICAgIFsgY3B1ID0gJSgxKWQgXQog MHgwMDAyMjIwNyAgQ1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpj cmVkaXRfcmVzZXQgICBbIGRvbTp2Y3B1ID0gMHglKDEpMDh4LCBjcl9zdGFydCA9ICUoMilkLCBj cl9lbmQgPSAlKDMpZCwgbXVsdCA9ICUoNClkIF0KIDB4MDAwMjIyMDggIENQVSUoY3B1KWQgICUo dHNjKWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6c2NoZWRfdGFza2xldApkaWZmIC0tZ2l0IGEv dG9vbHMveGVudHJhY2UveGVuYWx5emUuYyBiL3Rvb2xzL3hlbnRyYWNlL3hlbmFseXplLmMKaW5k ZXggMjRjY2UyYS4uMzlmYzM1ZiAxMDA2NDQKLS0tIGEvdG9vbHMveGVudHJhY2UveGVuYWx5emUu YworKysgYi90b29scy94ZW50cmFjZS94ZW5hbHl6ZS5jCkBAIC03NjkyLDExICs3NjkyLDEyIEBA IHZvaWQgc2NoZWRfcHJvY2VzcyhzdHJ1Y3QgcGNwdV9pbmZvICpwKQogICAgICAgICAgICAgaWYo b3B0LmR1bXBfYWxsKSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHZjcHVpZDoxNiwgZG9taWQ6MTY7Ci0gICAgICAgICAgICAgICAg ICAgIGludCBjcmVkaXQ7CisgICAgICAgICAgICAgICAgICAgIGludCBjcmVkaXQsIHNjb3JlOwog ICAgICAgICAgICAgICAgIH0gKnIgPSAodHlwZW9mKHIpKXJpLT5kOwogCi0gICAgICAgICAgICAg ICAgcHJpbnRmKCIgJXMgY3NjaGVkMjp0aWNrbGVfY2hlY2sgZCV1diV1LCBjcmVkaXQgPSAlZFxu IiwKLSAgICAgICAgICAgICAgICAgICAgICAgcmktPmR1bXBfaGVhZGVyLCByLT5kb21pZCwgci0+ dmNwdWlkLCByLT5jcmVkaXQpOworICAgICAgICAgICAgICAgIHByaW50ZigiICVzIGNzY2hlZDI6 dGlja2xlX2NoZWNrIGQldXYldSwgY3JlZGl0ID0gJWQsIHNjb3JlID0gJWRcblxuIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgcmktPmR1bXBfaGVhZGVyLCByLT5kb21pZCwgci0+dmNwdWlkLAor ICAgICAgICAgICAgICAgICAgICAgICByLT5jcmVkaXQsIHItPnNjb3JlKTsKICAgICAgICAgICAg IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRSQ19TQ0hFRF9DTEFTU19FVlQo Q1NDSEVEMiwgNik6IC8qIFRJQ0tMRSAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS94ZW4vY29t bW9uL3NjaGVkX2NyZWRpdDIuYyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCmluZGV4IDI5 YzAwMmEuLjU3ZTc3ZGYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCisr KyBiL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0Mi5jCkBAIC0xMTQ2LDYgKzExNDYsNzMgQEAgdGlj a2xlX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpy cWQpCiB9CiAKIC8qCisgKiBTY29yZSB0byBwcmVlbXB0IHRoZSB0YXJnZXQgY3B1LiAgUmV0dXJu IGEgbmVnYXRpdmUgbnVtYmVyIGlmIHRoZQorICogY3JlZGl0IGlzbid0IGhpZ2ggZW5vdWdoOyBp ZiBpdCBpcywgZmF2b3IgYSBwcmVlbXB0aW9uIG9uIGNwdSBpbgorICogdGhpcyBvcmRlcjoKKyAq IC0gY3B1IGlzIGluIG5ldydzIHNvZnQtYWZmaW5pdHksIG5vdCBpbiBjdXIncyBzb2Z0LWFmZmlu aXR5CisgKiAgICgyIHggQ1NDSEVEMl9DUkVESVRfSU5JVCBzY29yZSBib251cyk7CisgKiAtIGNw dSBpcyBpbiBuZXcncyBzb2Z0LWFmZmluaXR5IGFuZCBjdXIncyBzb2Z0LWFmZmluaXR5LCBvcgor ICogICBjcHUgaXMgbm90IGluIG5ldydzIHNvZnQtYWZmaW5pdHksIG5vciBpbiBjdXIncyBzb2Z0 LWFmZmluaXR5CisgKiAgICgxeCBDU0NIRUQyX0NSRURJVF9JTklUIHNjb3JlIGJvbnVzKTsKKyAq IC0gY3B1IGlzIG5vdCBpbiBuZXcncyBzb2Z0LWFmZmluaXR5LCB3aGlsZSBpdCBpcyBpbiBjdXIn cyBzb2Z0LWFmZmluaXR5CisgKiAgIChubyBib251cykuCisgKgorICogV2l0aGluIHRoZSBzYW1l IGNsYXNzLCB0aGUgaGlnaGVzdCBkaWZmZXJlbmNlIG9mIGNyZWRpdC4KKyAqLworc3RhdGljIHNf dGltZV90IHRpY2tsZV9zY29yZShzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsIHNf dGltZV90IG5vdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNzY2hlZDJf dmNwdSAqbmV3LCB1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUg KiBjdXIgPSBjc2NoZWQyX3ZjcHUoY3Vycl9vbl9jcHUoY3B1KSk7CisgICAgc190aW1lX3Qgc2Nv cmU7CisKKyAgICAvKgorICAgICAqIFdlIGFyZSBkZWFsaW5nIHdpdGggY3B1cyB0aGF0IGFyZSBt YXJrZWQgbm9uLWlkbGUgKGkuZS4sIHRoYXQgYXJlIG5vdAorICAgICAqIGluIHJxZC0+aWRsZSku IEhvd2V2ZXIsIHNvbWUgb2YgdGhlbSBtYXkgYmUgcnVubmluZyB0aGVpciBpZGxlIHZjcHUsCisg ICAgICogaWYgdGFraW5nIGNhcmUgb2YgdGFza2xldHMuIEluIHRoYXQgY2FzZSwgd2Ugd2FudCB0 byBsZWF2ZSBpdCBhbG9uZS4KKyAgICAgKi8KKyAgICBpZiAoIHVubGlrZWx5KGlzX2lkbGVfdmNw dShjdXItPnZjcHUpKSApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGJ1cm5fY3JlZGl0cyhy cWQsIGN1ciwgbm93KTsKKworICAgIHNjb3JlID0gbmV3LT5jcmVkaXQgLSBjdXItPmNyZWRpdDsK KyAgICBpZiAoIG5ldy0+dmNwdS0+cHJvY2Vzc29yICE9IGNwdSApCisgICAgICAgIHNjb3JlIC09 IENTQ0hFRDJfTUlHUkFURV9SRVNJU1Q7CisKKyAgICAvKgorICAgICAqIElmIHNjb3JlIGlzIHBv c2l0aXZlLCBpdCBtZWFucyBuZXcgaGFzIGVub3VnaCBjcmVkaXRzIChpLmUuLAorICAgICAqIG5l dy0+Y3JlZGl0ID4gY3VyLT5jcmVkaXQrQ1NDSEVEMl9NSUdSQVRFX1JFU0lTVCkuCisgICAgICoK KyAgICAgKiBMZXQncyBjb21wdXRlIHRoZSBib251c2VzIGZvciBzb2Z0LWFmZmluaXRpZXMuCisg ICAgICovCisgICAgaWYgKCBzY29yZSA+IDAgKQorICAgIHsKKyAgICAgICAgaWYgKCBjcHVtYXNr X3Rlc3RfY3B1KGNwdSwgbmV3LT52Y3B1LT5jcHVfc29mdF9hZmZpbml0eSkgKQorICAgICAgICAg ICAgc2NvcmUgKz0gQ1NDSEVEMl9DUkVESVRfSU5JVDsKKworICAgICAgICBpZiAoICFjcHVtYXNr X3Rlc3RfY3B1KGNwdSwgY3VyLT52Y3B1LT5jcHVfc29mdF9hZmZpbml0eSkgKQorICAgICAgICAg ICAgc2NvcmUgKz0gQ1NDSEVEMl9DUkVESVRfSU5JVDsKKyAgICB9CisKKyAgICBpZiAoIHVubGlr ZWx5KHRiX2luaXRfZG9uZSkgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg IHVuc2lnbmVkIHZjcHU6MTYsIGRvbToxNjsKKyAgICAgICAgICAgIGludCBjcmVkaXQsIHNjb3Jl OworICAgICAgICB9IGQ7CisgICAgICAgIGQuZG9tID0gY3VyLT52Y3B1LT5kb21haW4tPmRvbWFp bl9pZDsKKyAgICAgICAgZC52Y3B1ID0gY3VyLT52Y3B1LT52Y3B1X2lkOworICAgICAgICBkLmNy ZWRpdCA9IGN1ci0+Y3JlZGl0OworICAgICAgICBkLnNjb3JlID0gc2NvcmU7CisgICAgICAgIF9f dHJhY2VfdmFyKFRSQ19DU0NIRUQyX1RJQ0tMRV9DSEVDSywgMSwKKyAgICAgICAgICAgICAgICAg ICAgc2l6ZW9mKGQpLAorICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSZkKTsK KyAgICB9CisKKyAgICByZXR1cm4gc2NvcmU7Cit9CisKKy8qCiAgKiBDaGVjayB3aGF0IHByb2Nl c3NvciBpdCBpcyBiZXN0IHRvICd3YWtlJywgZm9yIHBpY2tpbmcgdXAgYSB2Y3B1IHRoYXQgaGFz CiAgKiBqdXN0IGJlZW4gcHV0IChiYWNrKSBpbiB0aGUgcnVucXVldWUuIExvZ2ljIGlzIGFzIGZv bGxvd3M6CiAgKiAgMS4gaWYgdGhlcmUgYXJlIGlkbGUgcHJvY2Vzc29ycyBpbiB0aGUgcnVucSwg d2FrZSBvbmUgb2YgdGhlbTsKQEAgLTExNjUsMTEgKzEyMzIsMTEgQEAgc3RhdGljIHZvaWQKIHJ1 bnFfdGlja2xlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IGNzY2hlZDJfdmNw dSAqbmV3LCBzX3RpbWVfdCBub3cpCiB7CiAgICAgaW50IGksIGlwaWQgPSAtMTsKLSAgICBzX3Rp bWVfdCBsb3dlc3QgPSAoMTw8MzApOwotICAgIHVuc2lnbmVkIGludCBjcHUgPSBuZXctPnZjcHUt PnByb2Nlc3NvcjsKKyAgICBzX3RpbWVfdCBtYXggPSAwOworICAgIHVuc2lnbmVkIGludCBicywg Y3B1ID0gbmV3LT52Y3B1LT5wcm9jZXNzb3I7CiAgICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVf ZGF0YSAqcnFkID0gYzJycWQob3BzLCBjcHUpOworICAgIGNwdW1hc2tfdCAqb25saW5lID0gY3B1 cG9vbF9kb21haW5fY3B1bWFzayhuZXctPnZjcHUtPmRvbWFpbik7CiAgICAgY3B1bWFza190IG1h c2s7Ci0gICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGN1cjsKIAogICAgIEFTU0VSVChuZXctPnJx ZCA9PSBycWQpOwogCkBAIC0xMTg5LDEwOSArMTI1NiwxMTAgQEAgcnVucV90aWNrbGUoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpuZXcsIHNfdGltZV90 IG5vdykKICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikmZCk7CiAgICAgfQog Ci0gICAgY3B1bWFza19hbmQoY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBuZXctPnZjcHUtPmNw dV9oYXJkX2FmZmluaXR5LAotICAgICAgICAgICAgICAgIGNwdXBvb2xfZG9tYWluX2NwdW1hc2so bmV3LT52Y3B1LT5kb21haW4pKTsKLQotICAgIC8qCi0gICAgICogRmlyc3Qgb2YgYWxsLCBjb25z aWRlciBpZGxlIGNwdXMsIGNoZWNraW5nIGlmIHdlIGNhbiBqdXN0Ci0gICAgICogcmUtdXNlIHRo ZSBwY3B1IHdoZXJlIHdlIHdlcmUgcnVubmluZyBiZWZvcmUuCi0gICAgICoKLSAgICAgKiBJZiB0 aGVyZSBhcmUgY29yZXMgd2hlcmUgYWxsIHRoZSBzaWJsaW5ncyBhcmUgaWRsZSwgY29uc2lkZXIK LSAgICAgKiB0aGVtIGZpcnN0LCBob25vcmluZyB3aGF0ZXZlciB0aGUgc3ByZWFkaW5nLXZzLWNv bnNvbGlkYXRpb24KLSAgICAgKiBTTVQgcG9saWN5IHdhbnRzIHVzIHRvIGRvLgotICAgICAqLwot ICAgIGlmICggdW5saWtlbHkoc2NoZWRfc210X3Bvd2VyX3NhdmluZ3MpICkKLSAgICAgICAgY3B1 bWFza19hbmRub3QoJm1hc2ssICZycWQtPmlkbGUsICZycWQtPnNtdF9pZGxlKTsKLSAgICBlbHNl Ci0gICAgICAgIGNwdW1hc2tfY29weSgmbWFzaywgJnJxZC0+c210X2lkbGUpOwotICAgIGNwdW1h c2tfYW5kKCZtYXNrLCAmbWFzaywgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsKLSAgICBpID0g Y3B1bWFza190ZXN0X29yX2N5Y2xlKGNwdSwgJm1hc2spOwotICAgIGlmICggaSA8IG5yX2NwdV9p ZHMgKQorICAgIGZvcl9lYWNoX2FmZmluaXR5X2JhbGFuY2Vfc3RlcCggYnMgKQogICAgIHsKLSAg ICAgICAgU0NIRURfU1RBVF9DUkFOSyh0aWNrbGVkX2lkbGVfY3B1KTsKLSAgICAgICAgaXBpZCA9 IGk7Ci0gICAgICAgIGdvdG8gdGlja2xlOworICAgICAgICAvKiBKdXN0IHNraXAgZmlyc3Qgc3Rl cCwgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNvZnQgYWZmaW5pdHkgKi8KKyAgICAgICAgaWYgKCBicyA9 PSBCQUxBTkNFX1NPRlRfQUZGSU5JVFkgJiYKKyAgICAgICAgICAgICAhaGFzX3NvZnRfYWZmaW5p dHkobmV3LT52Y3B1LCBuZXctPnZjcHUtPmNwdV9oYXJkX2FmZmluaXR5KSApCisgICAgICAgICAg ICBjb250aW51ZTsKKworICAgICAgICBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2sobmV3LT52Y3B1 LCBicywgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsKKworICAgICAgICAvKgorICAgICAgICAg KiBGaXJzdCBvZiBhbGwsIGNvbnNpZGVyIGlkbGUgY3B1cywgY2hlY2tpbmcgaWYgd2UgY2FuIGp1 c3QKKyAgICAgICAgICogcmUtdXNlIHRoZSBwY3B1IHdoZXJlIHdlIHdlcmUgcnVubmluZyBiZWZv cmUuCisgICAgICAgICAqCisgICAgICAgICAqIElmIHRoZXJlIGFyZSBjb3JlcyB3aGVyZSBhbGwg dGhlIHNpYmxpbmdzIGFyZSBpZGxlLCBjb25zaWRlcgorICAgICAgICAgKiB0aGVtIGZpcnN0LCBo b25vcmluZyB3aGF0ZXZlciB0aGUgc3ByZWFkaW5nLXZzLWNvbnNvbGlkYXRpb24KKyAgICAgICAg ICogU01UIHBvbGljeSB3YW50cyB1cyB0byBkby4KKyAgICAgICAgICovCisgICAgICAgIGlmICgg dW5saWtlbHkoc2NoZWRfc210X3Bvd2VyX3NhdmluZ3MpICkKKyAgICAgICAgeworICAgICAgICAg ICAgY3B1bWFza19hbmRub3QoJm1hc2ssICZycWQtPmlkbGUsICZycWQtPnNtdF9pZGxlKTsKKyAg ICAgICAgICAgIGNwdW1hc2tfYW5kKCZtYXNrLCAmbWFzaywgb25saW5lKTsKKyAgICAgICAgfQor ICAgICAgICBlbHNlCisgICAgICAgICAgICBjcHVtYXNrX2FuZCgmbWFzaywgJnJxZC0+c210X2lk bGUsIG9ubGluZSk7CisgICAgICAgIGNwdW1hc2tfYW5kKCZtYXNrLCAmbWFzaywgY3B1bWFza19z Y3JhdGNoX2NwdShjcHUpKTsKKyAgICAgICAgaSA9IGNwdW1hc2tfdGVzdF9vcl9jeWNsZShjcHUs ICZtYXNrKTsKKyAgICAgICAgaWYgKCBpIDwgbnJfY3B1X2lkcyApCisgICAgICAgIHsKKyAgICAg ICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodGlja2xlZF9pZGxlX2NwdSk7CisgICAgICAgICAgICBp cGlkID0gaTsKKyAgICAgICAgICAgIGdvdG8gdGlja2xlOworICAgICAgICB9CisKKyAgICAgICAg LyoKKyAgICAgICAgICogSWYgdGhlcmUgYXJlIG5vIGZ1bGx5IGlkbGUgY29yZXMsIGNoZWNrIGFs bCBpZGxlcnMsIGFmdGVyCisgICAgICAgICAqIGhhdmluZyBmaWx0ZXJlZCBvdXQgcGNwdXMgdGhh dCBoYXZlIGJlZW4gdGlja2xlZCBidXQgaGF2ZW4ndAorICAgICAgICAgKiBnb25lIHRocm91Z2gg dGhlIHNjaGVkdWxlciB5ZXQuCisgICAgICAgICAqLworICAgICAgICBjcHVtYXNrX2FuZG5vdCgm bWFzaywgJnJxZC0+aWRsZSwgJnJxZC0+dGlja2xlZCk7CisgICAgICAgIGNwdW1hc2tfYW5kKGNw dW1hc2tfc2NyYXRjaF9jcHUoY3B1KSwgY3B1bWFza19zY3JhdGNoX2NwdShjcHUpLCBvbmxpbmUp OworICAgICAgICBjcHVtYXNrX2FuZCgmbWFzaywgJm1hc2ssIGNwdW1hc2tfc2NyYXRjaF9jcHUo Y3B1KSk7CisgICAgICAgIGkgPSBjcHVtYXNrX3Rlc3Rfb3JfY3ljbGUoY3B1LCAmbWFzayk7Cisg ICAgICAgIGlmICggaSA8IG5yX2NwdV9pZHMgKQorICAgICAgICB7CisgICAgICAgICAgICBTQ0hF RF9TVEFUX0NSQU5LKHRpY2tsZWRfaWRsZV9jcHUpOworICAgICAgICAgICAgaXBpZCA9IGk7Cisg ICAgICAgICAgICBnb3RvIHRpY2tsZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qCi0gICAg ICogSWYgdGhlcmUgYXJlIG5vIGZ1bGx5IGlkbGUgY29yZXMsIGNoZWNrIGFsbCBpZGxlcnMsIGFm dGVyCi0gICAgICogaGF2aW5nIGZpbHRlcmVkIG91dCBwY3B1cyB0aGF0IGhhdmUgYmVlbiB0aWNr bGVkIGJ1dCBoYXZlbid0Ci0gICAgICogZ29uZSB0aHJvdWdoIHRoZSBzY2hlZHVsZXIgeWV0Lgor ICAgICAqIE5vdGUgdGhhdCwgaWYgd2UgYXJlIGhlcmUsIGl0IG1lYW5zIHdlIGhhdmUgZG9uZSB0 aGUgaGFyZC1hZmZpbml0eQorICAgICAqIGJhbGFuY2luZyBzdGVwIG9mIHRoZSBsb29wLCBhbmQg aGVuY2Ugd2hhdCB3ZSBoYXZlIGluIGNwdW1hc2tfc2NyYXRjaAorICAgICAqIGlzIHdoYXQgd2Ug cHV0IHRoZXJlIGZvciBsYXN0LCBpLmUuLCBuZXcncyB2Y3B1X2hhcmRfYWZmaW5pdHkgJiBvbmxp bmUKKyAgICAgKiB3aGljaCBpcyBleGFjdGx5IHdoYXQgd2UgbmVlZCBmb3IgdGhlIG5leHQgcGFy dCBvZiB0aGUgZnVuY3Rpb24uCiAgICAgICovCi0gICAgY3B1bWFza19hbmRub3QoJm1hc2ssICZy cWQtPmlkbGUsICZycWQtPnRpY2tsZWQpOwotICAgIGNwdW1hc2tfYW5kKCZtYXNrLCAmbWFzaywg Y3B1bWFza19zY3JhdGNoX2NwdShjcHUpKTsKLSAgICBpID0gY3B1bWFza190ZXN0X29yX2N5Y2xl KGNwdSwgJm1hc2spOwotICAgIGlmICggaSA8IG5yX2NwdV9pZHMgKQotICAgIHsKLSAgICAgICAg U0NIRURfU1RBVF9DUkFOSyh0aWNrbGVkX2lkbGVfY3B1KTsKLSAgICAgICAgaXBpZCA9IGk7Ci0g ICAgICAgIGdvdG8gdGlja2xlOwotICAgIH0KIAogICAgIC8qCiAgICAgICogT3RoZXJ3aXNlLCBs b29rIGZvciB0aGUgbm9uLWlkbGUgKGFuZCBub24tdGlja2xlZCkgcHJvY2Vzc29ycyB3aXRoCiAg ICAgICogdGhlIGxvd2VzdCBjcmVkaXQsIGFtb25nIHRoZSBvbmVzIG5ldyBpcyBhbGxvd2VkIHRv IHJ1biBvbi4gQWdhaW4sCiAgICAgICogdGhlIGNwdSB3ZXJlIGl0IHdhcyBydW5uaW5nIG9uIHdv dWxkIGJlIHRoZSBiZXN0IGNhbmRpZGF0ZS4KKyAgICAgKgorICAgICAqIEZvciBkZWNpZGluZyB3 aGljaCBjcHUgdG8gdGlja2xlLCB3ZSB1c2UgdGlja2xlX3Njb3JlKCksIHdoaWNoIHdpbGwKKyAg ICAgKiBmYWN0b3IgaW4gYm90aCBuZXcncyBzb2Z0LWFmZmluaXR5LCBhbmQgdGhlIHNvZnQtYWZm aW5pdHkgb2YgdGhlCisgICAgICogdmNwdSBydW5uaW5nIG9uIGVhY2ggY3B1IHRoYXQgd2UgY29u c2lkZXIuCiAgICAgICovCiAgICAgY3B1bWFza19hbmRub3QoJm1hc2ssICZycWQtPmFjdGl2ZSwg JnJxZC0+aWRsZSk7CiAgICAgY3B1bWFza19hbmRub3QoJm1hc2ssICZtYXNrLCAmcnFkLT50aWNr bGVkKTsKICAgICBjcHVtYXNrX2FuZCgmbWFzaywgJm1hc2ssIGNwdW1hc2tfc2NyYXRjaF9jcHUo Y3B1KSk7CiAgICAgaWYgKCBfX2NwdW1hc2tfdGVzdF9hbmRfY2xlYXJfY3B1KGNwdSwgJm1hc2sp ICkKICAgICB7Ci0gICAgICAgIGN1ciA9IGNzY2hlZDJfdmNwdShjdXJyX29uX2NwdShjcHUpKTsK LSAgICAgICAgYnVybl9jcmVkaXRzKHJxZCwgY3VyLCBub3cpOworICAgICAgICBzX3RpbWVfdCBz Y29yZSA9IHRpY2tsZV9zY29yZShycWQsIG5vdywgbmV3LCBjcHUpOwogCi0gICAgICAgIGlmICgg Y3VyLT5jcmVkaXQgPCBuZXctPmNyZWRpdCApCisgICAgICAgIGlmICggc2NvcmUgPiBtYXggKQog ICAgICAgICB7Ci0gICAgICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHRpY2tsZWRfYnVzeV9jcHUp OworICAgICAgICAgICAgbWF4ID0gc2NvcmU7CiAgICAgICAgICAgICBpcGlkID0gY3B1OwotICAg ICAgICAgICAgZ290byB0aWNrbGU7CisKKyAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgaW4gbmV3 J3Mgc29mdCBhZmZpbml0eSwganVzdCB0YWtlIGl0ICovCisgICAgICAgICAgICBpZiAoIGNwdW1h c2tfdGVzdF9jcHUoY3B1LCBuZXctPnZjcHUtPmNwdV9zb2Z0X2FmZmluaXR5KSApCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh0aWNrbGVkX2J1c3lfY3B1 KTsKKyAgICAgICAgICAgICAgICBnb3RvIHRpY2tsZTsKKyAgICAgICAgICAgIH0KICAgICAgICAg fQogICAgIH0KIAogICAgIGZvcl9lYWNoX2NwdShpLCAmbWFzaykKICAgICB7CisgICAgICAgIHNf dGltZV90IHNjb3JlOworCiAgICAgICAgIC8qIEFscmVhZHkgbG9va2VkIGF0IHRoaXMgb25lIGFi b3ZlICovCiAgICAgICAgIEFTU0VSVChpICE9IGNwdSk7CiAKLSAgICAgICAgY3VyID0gY3NjaGVk Ml92Y3B1KGN1cnJfb25fY3B1KGkpKTsKLQotICAgICAgICAvKgotICAgICAgICAgKiBFdmVuIGlm IHRoZSBjcHUgaXMgbm90IGluIHJxZC0+aWRsZSwgaXQgbWF5IGJlIHJ1bm5pbmcgdGhlCi0gICAg ICAgICAqIGlkbGUgdmNwdSwgaWYgaXQncyBkb2luZyB0YXNrbGV0IHdvcmsuIEp1c3Qgc2tpcCBp dC4KLSAgICAgICAgICovCi0gICAgICAgIGlmICggaXNfaWRsZV92Y3B1KGN1ci0+dmNwdSkgKQot ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLyogVXBkYXRlIGNyZWRpdHMgZm9yIGN1 cnJlbnQgdG8gc2VlIGlmIHdlIHdhbnQgdG8gcHJlZW1wdC4gKi8KLSAgICAgICAgYnVybl9jcmVk aXRzKHJxZCwgY3VyLCBub3cpOworICAgICAgICBzY29yZSA9IHRpY2tsZV9zY29yZShycWQsIG5v dywgbmV3LCBpKTsKIAotICAgICAgICBpZiAoIGN1ci0+Y3JlZGl0IDwgbG93ZXN0ICkKKyAgICAg ICAgaWYgKCBzY29yZSA+IG1heCApCiAgICAgICAgIHsKKyAgICAgICAgICAgIG1heCA9IHNjb3Jl OwogICAgICAgICAgICAgaXBpZCA9IGk7Ci0gICAgICAgICAgICBsb3dlc3QgPSBjdXItPmNyZWRp dDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggdW5saWtlbHkodGJfaW5pdF9kb25lKSApCi0g ICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg dmNwdToxNiwgZG9tOjE2OwotICAgICAgICAgICAgICAgIGludCBjcmVkaXQ7Ci0gICAgICAgICAg ICB9IGQ7Ci0gICAgICAgICAgICBkLmRvbSA9IGN1ci0+dmNwdS0+ZG9tYWluLT5kb21haW5faWQ7 Ci0gICAgICAgICAgICBkLnZjcHUgPSBjdXItPnZjcHUtPnZjcHVfaWQ7Ci0gICAgICAgICAgICBk LmNyZWRpdCA9IGN1ci0+Y3JlZGl0OwotICAgICAgICAgICAgX190cmFjZV92YXIoVFJDX0NTQ0hF RDJfVElDS0xFX0NIRUNLLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGQpLAot ICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKikmZCk7CiAgICAgICAgIH0K ICAgICB9CiAKLSAgICAvKgotICAgICAqIE9ubHkgc3dpdGNoIHRvIGFub3RoZXIgcHJvY2Vzc29y IGlmIHRoZSBjcmVkaXQgZGlmZmVyZW5jZSBpcwotICAgICAqIGdyZWF0ZXIgdGhhbiB0aGUgbWln cmF0ZSByZXNpc3RhbmNlLgotICAgICAqLwotICAgIGlmICggaXBpZCA9PSAtMSB8fCBsb3dlc3Qg KyBDU0NIRUQyX01JR1JBVEVfUkVTSVNUID4gbmV3LT5jcmVkaXQgKQorICAgIGlmICggaXBpZCA9 PSAtMSApCiAgICAgewogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHRpY2tsZWRfbm9fY3B1KTsK ICAgICAgICAgcmV0dXJuOwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=