From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=FROM_EXCESS_BASE64, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2AF76C432C2 for ; Wed, 25 Sep 2019 12:59:01 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0057F2146E for ; Wed, 25 Sep 2019 12:59:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0057F2146E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iD6sY-0006md-5D; Wed, 25 Sep 2019 12:58:46 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iD6sX-0006mY-Kw for xen-devel@lists.xenproject.org; Wed, 25 Sep 2019 12:58:45 +0000 X-Inumbo-ID: 3329c484-df94-11e9-9630-12813bfff9fa Received: from mx1.suse.de (unknown [195.135.220.15]) by localhost (Halon) with ESMTPS id 3329c484-df94-11e9-9630-12813bfff9fa; Wed, 25 Sep 2019 12:58:42 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 3B3ECB644; Wed, 25 Sep 2019 12:58:41 +0000 (UTC) To: Jan Beulich References: <20190914085251.18816-1-jgross@suse.com> <20190914085251.18816-35-jgross@suse.com> From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= Message-ID: <76b8ac21-a20e-069a-c7a3-36b46b60d692@suse.com> Date: Wed, 25 Sep 2019 14:58:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [Xen-devel] [PATCH v3 34/47] xen/sched: add fall back to idle vcpu when scheduling unit X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , xen-devel@lists.xenproject.org, Dario Faggioli , Volodymyr Babchuk , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gMjQuMDkuMTkgMTI6NTMsIEphbiBCZXVsaWNoIHdyb3RlOgo+IE9uIDE0LjA5LjIwMTkgMTA6 NTIsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6Cj4+IFdoZW4gc2NoZWR1bGluZyBhbiB1bml0IHdpdGgg bXVsdGlwbGUgdmNwdXMgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIGFsbAo+PiB2Y3B1cyBhcmUgYXZh aWxhYmxlIChlLmcuIGFib3ZlIG1heHZjcHVzIG9yIHZjcHUgb2ZmbGluZSkuIEZhbGwgYmFjayB0 bwo+PiBpZGxlIHZjcHUgb2YgdGhlIGN1cnJlbnQgY3B1IGluIHRoYXQgY2FzZS4gVGhpcyByZXF1 aXJlcyB0byBzdG9yZSB0aGUKPj4gY29ycmVjdCBzY2hlZHVsZV91bml0IHBvaW50ZXIgaW4gdGhl IGlkbGUgdmNwdSBhcyBsb25nIGFzIGl0IHVzZWQgYXMKPj4gZmFsbGJhY2sgdmNwdS4KPj4KPj4g SW4gb3JkZXIgdG8gbW9kaWZ5IHRoZSBydW5zdGF0ZXMgb2YgdGhlIGNvcnJlY3QgdmNwdXMgd2hl biBzd2l0Y2hpbmcKPj4gc2NoZWR1bGUgdW5pdHMgbWVyZ2Ugc2NoZWRfdW5pdF9ydW5zdGF0ZV9j aGFuZ2UoKSBpbnRvCj4+IHNjaGVkX3N3aXRjaF91bml0cygpIGFuZCBsb29wIG92ZXIgdGhlIGFm ZmVjdGVkIHBoeXNpY2FsIGNwdXMgaW5zdGVhZAo+PiBvZiB0aGUgdW5pdCdzIHZjcHVzLiBUaGlz IGluIHR1cm4gcmVxdWlyZXMgYW4gYWNjZXNzIGZ1bmN0aW9uIHRvIHRoZQo+PiBjdXJyZW50IHZh cmlhYmxlIG9mIG90aGVyIGNwdXMuCj4+Cj4+IFRvZGF5IGNvbnRleHRfc2F2ZWQoKSBpcyBjYWxs ZWQgaW4gY2FzZSBwcmV2aW91cyBhbmQgbmV4dCB2Y3B1cyBkaWZmZXIKPj4gd2hlbiBkb2luZyBh IGNvbnRleHQgc3dpdGNoLiBXaXRoIGFuIGlkbGUgdmNwdSBiZWluZyBjYXBhYmxlIHRvIGJlIGEK Pj4gc3Vic3RpdHV0ZSBmb3IgYW4gb2ZmbGluZSB2Y3B1IHRoaXMgaXMgcHJvYmxlbWF0aWMgd2hl biBzd2l0Y2hpbmcgdG8KPj4gYW4gaWRsZSBzY2hlZHVsaW5nIHVuaXQuIEFuIGlkbGUgcHJldmlv dXMgdmNwdSBsZWF2ZXMgdXMgaW4gZG91YnQgd2hpY2gKPj4gc2NoZWR1bGUgdW5pdCB3YXMgYWN0 aXZlIHByZXZpb3VzbHksIHNvIHNhdmUgdGhlIHByZXZpb3VzIHVuaXQgcG9pbnRlcgo+PiBpbiB0 aGUgcGVyLXNjaGVkdWxlIHJlc291cmNlIGFyZWEuIElmIGl0IGlzIE5VTEwgdGhlIHVuaXQgaGFz IG5vdAo+PiBjaGFuZ2VkIGFuZCB3ZSBkb24ndCBoYXZlIHRvIHNldCB0aGUgcHJldmlvdXMgdW5p dCB0byBiZSBub3QgcnVubmluZy4KPj4KPj4gV2hlbiBydW5uaW5nIGFuIGlkbGUgdmNwdSBpbiBh IG5vbi1pZGxlIHNjaGVkdWxpbmcgdW5pdCB1c2UgYSBzcGVjaWZpYwo+PiBndWVzdCBpZGxlIGxv b3Agbm90IHBlcmZvcm1pbmcgYW55IHRhc2tsZXRzIGFuZCBsaXZlcGF0Y2hpbmcgaW4gb3JkZXIK Pj4gdG8gYXZvaWQgcG9wdWxhdGluZyB0aGUgY3B1IGNhY2hlcyB3aXRoIG1lbW9yeSB1c2VkIGJ5 IG90aGVyIGRvbWFpbnMKPj4gKGFzIGZhciBhcyBwb3NzaWJsZSkuIFNvZnRpcnFzIGFyZSBjb25z aWRlcmVkIHRvIGJlIHNhdmUuCj4gCj4gQWl1aSAidGFza2xldHMiIGhlcmUgbWVhbnMgb25seSBv bmVzIHJ1biBpbiAoaWRsZSkgdkNQVSBjb250ZXh0LCB3aGVyZWFzCj4gInNvZnRpcnFzIiBpbmNs dWRlcyB0YXNrbGV0cyBydW4gaW4gc29mdGlycSBjb250ZXh0LiBJIHRoaW5rIGl0IHdvdWxkCj4g aGVscCBpZiB0aGUgZGVzY3JpcHRpb24gbWFkZSB0aGlzIGRpc3RpbmN0aW9uLiBXaXRoIHRoaXMg SSB0aGVuIHdvbmRlcgo+IHdoZXRoZXIgdGhlIGNhY2hlIHJlbGF0ZWQgYXJndW1lbnRhdGlvbiBh Ym92ZSBzdGlsbCBob2xkczogVlQtZCdzIElPTU1VCj4gZmF1bHQgaGFuZGxpbmcgdGFza2xldCBy dW5zIGluIHNvZnRpcnEgY29udGV4dCwgZm9yIGV4YW1wbGUsIGFuZAo+IGh2bV9hc3NlcnRfZXZ0 Y2huX2lycSgpLCBiZWluZyBoYW5kZWQgYSBzdHJ1Y3QgdmNwdSAqLCBkb2VzIHRvby4gT2YKPiBj b3Vyc2UgdGhpcyBjb3VsZCBiZSBjb25zaWRlcmVkIGNvdmVyZWQgYnkgIihhcyBmYXIgYXMgcG9z c2libGUpIiAuLi4KCkknbGwgd3JpdGUgIi4uLiBub3QgcGVyZm9ybWluZyBhbnkgbm9uLXNvZnRp cnEgdGFza2xldHMgLi4uIi4KCj4gCj4+IEBAIC0xNzIsNiArMTkxLDEwIEBAIHZvaWQgc3RhcnR1 cF9jcHVfaWRsZV9sb29wKHZvaWQpCj4+ICAgCj4+ICAgc3RhdGljIHZvaWQgbm9yZXR1cm4gY29u dGludWVfaWRsZV9kb21haW4oc3RydWN0IHZjcHUgKnYpCj4+ICAgewo+PiArICAgIC8qIElkbGUg dmNwdXMgbWlnaHQgYmUgYXR0YWNoZWQgdG8gbm9uLWlkbGUgdW5pdHMhICovCj4+ICsgICAgaWYg KCAhaXNfaWRsZV9kb21haW4odi0+c2NoZWRfdW5pdC0+ZG9tYWluKSApCj4+ICsgICAgICAgIHJl c2V0X3N0YWNrX2FuZF9qdW1wX25vbHAoZ3Vlc3RfaWRsZV9sb29wKTsKPiAKPiBUaGUgY29uc3Ry dWN0IGFuZCBjb21tZW50IG1ha2UgbWUgd29uZGVyIC0gZGlkIHlvdSBhdWRpdCBhbGwgdXNlcwo+ IG9mIGlzX2lkbGVfe2RvbWFpbix2Y3B1fSgpIGZvciBiZWluZyBpbiBsaW5lIHdpdGggdGhpcyBu ZXcgdXNhZ2UKPiBtb2RlPwoKWWVzLgoKPiAKPj4gQEAgLTE3NjcsMzMgKzE3NzQsNjYgQEAgc3Rh dGljIHZvaWQgc2NoZWRfc3dpdGNoX3VuaXRzKHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqc2QsCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF91bml0ICpuZXh0 LCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqcHJldiwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc190aW1lX3Qgbm93KQo+PiAgIHsKPj4gLSAgICBzZC0+Y3VyciA9IG5leHQ7Cj4+IC0K Pj4gLSAgICBUUkFDRV8zRChUUkNfU0NIRURfU1dJVENIX0lORlBSRVYsIHByZXYtPmRvbWFpbi0+ ZG9tYWluX2lkLCBwcmV2LT51bml0X2lkLAo+PiAtICAgICAgICAgICAgIG5vdyAtIHByZXYtPnN0 YXRlX2VudHJ5X3RpbWUpOwo+PiAtICAgIFRSQUNFXzREKFRSQ19TQ0hFRF9TV0lUQ0hfSU5GTkVY VCwgbmV4dC0+ZG9tYWluLT5kb21haW5faWQsIG5leHQtPnVuaXRfaWQsCj4+IC0gICAgICAgICAg ICAgKG5leHQtPnZjcHVfbGlzdC0+cnVuc3RhdGUuc3RhdGUgPT0gUlVOU1RBVEVfcnVubmFibGUp ID8KPj4gLSAgICAgICAgICAgICAobm93IC0gbmV4dC0+c3RhdGVfZW50cnlfdGltZSkgOiAwLCBw cmV2LT5uZXh0X3RpbWUpOwo+PiArICAgIGludCBjcHU7Cj4gCj4gdW5zaWduZWQgaW50PwoKT2th eS4KCj4gCj4+ICAgICAgIEFTU0VSVCh1bml0X3J1bm5pbmcocHJldikpOwo+PiAgIAo+PiAtICAg IFRSQUNFXzREKFRSQ19TQ0hFRF9TV0lUQ0gsIHByZXYtPmRvbWFpbi0+ZG9tYWluX2lkLCBwcmV2 LT51bml0X2lkLAo+PiAtICAgICAgICAgICAgIG5leHQtPmRvbWFpbi0+ZG9tYWluX2lkLCBuZXh0 LT51bml0X2lkKTsKPj4gKyAgICBpZiAoIHByZXYgIT0gbmV4dCApCj4+ICsgICAgewo+PiArICAg ICAgICBzZC0+Y3VyciA9IG5leHQ7Cj4+ICsgICAgICAgIHNkLT5wcmV2ID0gcHJldjsKPj4gICAK Pj4gLSAgICBzY2hlZF91bml0X3J1bnN0YXRlX2NoYW5nZShwcmV2LCBmYWxzZSwgbm93KTsKPj4g KyAgICAgICAgVFJBQ0VfM0QoVFJDX1NDSEVEX1NXSVRDSF9JTkZQUkVWLCBwcmV2LT5kb21haW4t PmRvbWFpbl9pZCwKPj4gKyAgICAgICAgICAgICAgICAgcHJldi0+dW5pdF9pZCwgbm93IC0gcHJl di0+c3RhdGVfZW50cnlfdGltZSk7Cj4+ICsgICAgICAgIFRSQUNFXzREKFRSQ19TQ0hFRF9TV0lU Q0hfSU5GTkVYVCwgbmV4dC0+ZG9tYWluLT5kb21haW5faWQsCj4+ICsgICAgICAgICAgICAgICAg IG5leHQtPnVuaXRfaWQsCj4+ICsgICAgICAgICAgICAgICAgIChuZXh0LT52Y3B1X2xpc3QtPnJ1 bnN0YXRlLnN0YXRlID09IFJVTlNUQVRFX3J1bm5hYmxlKSA/Cj4+ICsgICAgICAgICAgICAgICAg IChub3cgLSBuZXh0LT5zdGF0ZV9lbnRyeV90aW1lKSA6IDAsIHByZXYtPm5leHRfdGltZSk7Cj4+ ICsgICAgICAgIFRSQUNFXzREKFRSQ19TQ0hFRF9TV0lUQ0gsIHByZXYtPmRvbWFpbi0+ZG9tYWlu X2lkLCBwcmV2LT51bml0X2lkLAo+PiArICAgICAgICAgICAgICAgICBuZXh0LT5kb21haW4tPmRv bWFpbl9pZCwgbmV4dC0+dW5pdF9pZCk7Cj4+ICAgCj4+IC0gICAgQVNTRVJUKCF1bml0X3J1bm5p bmcobmV4dCkpOwo+PiAtICAgIHNjaGVkX3VuaXRfcnVuc3RhdGVfY2hhbmdlKG5leHQsIHRydWUs IG5vdyk7Cj4+ICsgICAgICAgIEFTU0VSVCghdW5pdF9ydW5uaW5nKG5leHQpKTsKPj4gICAKPj4g LSAgICAvKgo+PiAtICAgICAqIE5CLiBEb24ndCBhZGQgYW55IHRyYWNlIHJlY29yZHMgZnJvbSBo ZXJlIHVudGlsIHRoZSBhY3R1YWwgY29udGV4dAo+PiAtICAgICAqIHN3aXRjaCwgZWxzZSBsb3N0 X3JlY29yZHMgcmVzdW1lIHdpbGwgbm90IHdvcmsgcHJvcGVybHkuCj4+IC0gICAgICovCj4+ICsg ICAgICAgIC8qCj4+ICsgICAgICAgICAqIE5CLiBEb24ndCBhZGQgYW55IHRyYWNlIHJlY29yZHMg ZnJvbSBoZXJlIHVudGlsIHRoZSBhY3R1YWwgY29udGV4dAo+PiArICAgICAgICAgKiBzd2l0Y2gs IGVsc2UgbG9zdF9yZWNvcmRzIHJlc3VtZSB3aWxsIG5vdCB3b3JrIHByb3Blcmx5Lgo+PiArICAg ICAgICAgKi8KPj4gKwo+PiArICAgICAgICBBU1NFUlQoIW5leHQtPmlzX3J1bm5pbmcpOwo+PiAr ICAgICAgICBuZXh0LT5pc19ydW5uaW5nID0gMTsKPj4gKyAgICAgICAgbmV4dC0+c3RhdGVfZW50 cnlfdGltZSA9IG5vdzsKPj4gKwo+PiArICAgICAgICBpZiAoIGlzX2lkbGVfdW5pdChwcmV2KSAp Cj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAgIHByZXYtPnJ1bnN0YXRlX2NudFtSVU5TVEFU RV9ydW5uaW5nXSA9IDA7Cj4+ICsgICAgICAgICAgICBwcmV2LT5ydW5zdGF0ZV9jbnRbUlVOU1RB VEVfcnVubmFibGVdID0gc2NoZWRfZ3JhbnVsYXJpdHk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAg ICAgaWYgKCBpc19pZGxlX3VuaXQobmV4dCkgKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAgICAg ICBuZXh0LT5ydW5zdGF0ZV9jbnRbUlVOU1RBVEVfcnVubmluZ10gPSBzY2hlZF9ncmFudWxhcml0 eTsKPj4gKyAgICAgICAgICAgIG5leHQtPnJ1bnN0YXRlX2NudFtSVU5TVEFURV9ydW5uYWJsZV0g PSAwOwo+PiArICAgICAgICB9Cj4gCj4gSXMgdGhpcyBjb3JyZWN0IHdoZW4gc29tZSBvZiB0aGUg dkNQVS1zIGEgc3Vic3RpdHV0ZSBpZGxlIG9uZXM/CgpZZXMsIGFzIHRoaXMgYWZmZWN0cyBpZGxl IHVuaXRzIG9ubHkuIEFuIGlkbGUgdmNwdSBydW5uaW5nIGFzIGEKc3Vic3RpdHV0ZSB3aWxsIF9u b3RfIHJlc3VsdCBpbiB0aGUgcmVsYXRlZCBpZGxlIHVuaXQgcnVuc3RhdGVfY250CnRvIGJlIHVw ZGF0ZWQuCgo+IAo+PiBAQCAtMTg0OSwyOSArMTg4OSwzOSBAQCBzdGF0aWMgc3RydWN0IHNjaGVk X3VuaXQgKmRvX3NjaGVkdWxlKHN0cnVjdCBzY2hlZF91bml0ICpwcmV2LCBzX3RpbWVfdCBub3cs Cj4+ICAgICAgIGlmICggcHJldi0+bmV4dF90aW1lID49IDAgKSAvKiAtdmUgbWVhbnMgbm8gbGlt aXQgKi8KPj4gICAgICAgICAgIHNldF90aW1lcigmc2QtPnNfdGltZXIsIG5vdyArIHByZXYtPm5l eHRfdGltZSk7Cj4+ICAgCj4+IC0gICAgaWYgKCBsaWtlbHkocHJldiAhPSBuZXh0KSApCj4+IC0g ICAgICAgIHNjaGVkX3N3aXRjaF91bml0cyhzZCwgbmV4dCwgcHJldiwgbm93KTsKPj4gKyAgICBz Y2hlZF9zd2l0Y2hfdW5pdHMoc2QsIG5leHQsIHByZXYsIG5vdyk7Cj4+ICAgCj4+ICAgICAgIHJl dHVybiBuZXh0Owo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyB2b2lkIGNvbnRleHRfc2F2ZWQoc3Ry dWN0IHZjcHUgKnByZXYpCj4+ICtzdGF0aWMgdm9pZCB2Y3B1X2NvbnRleHRfc2F2ZWQoc3RydWN0 IHZjcHUgKnZwcmV2LCBzdHJ1Y3QgdmNwdSAqdm5leHQpCj4+ICAgewo+PiAtICAgIHN0cnVjdCBz Y2hlZF91bml0ICp1bml0ID0gcHJldi0+c2NoZWRfdW5pdDsKPj4gLQo+PiAgICAgICAvKiBDbGVh ciBydW5uaW5nIGZsYWcgL2FmdGVyLyB3cml0aW5nIGNvbnRleHQgdG8gbWVtb3J5LiAqLwo+PiAg ICAgICBzbXBfd21iKCk7Cj4+ICAgCj4+IC0gICAgcHJldi0+aXNfcnVubmluZyA9IDA7Cj4+ICsg ICAgaWYgKCB2cHJldiAhPSB2bmV4dCApCj4+ICsgICAgICAgIHZwcmV2LT5pc19ydW5uaW5nID0g MDsKPj4gK30KPiAKPiBXaXRoIHRoaXMgInZuZXh0IiBjb3VsZCBiZSBjb25zdCBxdWFsaWZpZWQg YXMgaXQgc2VlbXMuIEFuZCAiZmFsc2UiCj4gaW5zdGVhZCBvZiAiMCIgcGVyaGFwcywgYXMgeW91 IHRvdWNoIHRoaXMgYW55d2F5PwoKT2theS4KCj4gCj4+IEBAIC0yMDE1LDcgKzIwNzksOCBAQCBz dGF0aWMgdm9pZCBzY2hlZF9zbGF2ZSh2b2lkKQo+PiAgIAo+PiAgICAgICBwY3B1X3NjaGVkdWxl X3VubG9ja19pcnEobG9jaywgY3B1KTsKPj4gICAKPj4gLSAgICBzY2hlZF9jb250ZXh0X3N3aXRj aCh2cHJldiwgc2NoZWRfdW5pdDJ2Y3B1X2NwdShuZXh0LCBjcHUpLCBub3cpOwo+PiArICAgIHNj aGVkX2NvbnRleHRfc3dpdGNoKHZwcmV2LCBzY2hlZF91bml0MnZjcHVfY3B1KG5leHQsIGNwdSks Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaWRsZV91bml0KG5leHQpICYmICFpc19p ZGxlX3VuaXQocHJldiksIG5vdyk7Cj4+ICAgfQo+PiAgIAo+PiAgIC8qCj4+IEBAIC0yMDc1LDcg KzIxNDAsOCBAQCBzdGF0aWMgdm9pZCBzY2hlZHVsZSh2b2lkKQo+PiAgICAgICBwY3B1X3NjaGVk dWxlX3VubG9ja19pcnEobG9jaywgY3B1KTsKPj4gICAKPj4gICAgICAgdm5leHQgPSBzY2hlZF91 bml0MnZjcHVfY3B1KG5leHQsIGNwdSk7Cj4+IC0gICAgc2NoZWRfY29udGV4dF9zd2l0Y2godnBy ZXYsIHZuZXh0LCBub3cpOwo+PiArICAgIHNjaGVkX2NvbnRleHRfc3dpdGNoKHZwcmV2LCB2bmV4 dCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAhaXNfaWRsZV91bml0KHByZXYpICYmIGlz X2lkbGVfdW5pdChuZXh0KSwgbm93KTsKPj4gICB9Cj4gCj4gQXMgYSBtaW5vciByZW1hcmssIEkg dGhpbmsgYmV0d2VlbiBzdWNoIGNvbnN0cnVjdHMgaXQgd291bGQgYmUgZ29vZAo+IGlmIHRoZXJl IHdhcyBubyBkaWZmZXJlbmNlLCB1bmxlc3MgdGhlcmUncyBhIHJlYXNvbiB0byBoYXZlIG9uZS4g WWV0Cj4gaWYgdGhlcmUgd2FzIGEgcmVhc29uLCBpdCBzdXJlbHkgd291bGQgd2FudCB0byBiZSBz cGVsbGVkIG91dC4KCkkgZ3Vlc3MgeW91IG1lYW4gY2hhbmdpbmcgdGhlIHBhcmFtZXRlcnMgb2Yg c2NoZWRfY29udGV4dF9zd2l0Y2goKT8gSQpjYW4gZG8gdGhhdC4KCj4gCj4+IEBAIC0xMjQsMTYg KzEyOSwyMiBAQCB1bnNpZ25lZCBsb25nIGdldF9zdGFja19kdW1wX2JvdHRvbSAodW5zaWduZWQg bG9uZyBzcCk7Cj4+ICAgIyBkZWZpbmUgQ0hFQ0tfRk9SX0xJVkVQQVRDSF9XT1JLICIiCj4+ICAg I2VuZGlmCj4+ICAgCj4+IC0jZGVmaW5lIHJlc2V0X3N0YWNrX2FuZF9qdW1wKF9fZm4pICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsjZGVmaW5lIHN3aXRjaF9zdGFj a19hbmRfanVtcChmbiwgaW5zdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g Cj4gSXMgdGhlcmUgYW55IGRlcGVuZGVuY3kgb24gImluc3RyIiB0byBqdXN0IGJlIGEgc2luZ2xl IGluc3RydWN0aW9uPwo+IEknbSBpbmNsaW5lZCB0byBhc2sgZm9yIGl0IHRvIGJlIG5hbWVkICJl eHRyYSIgb3Igc29tZSBzdWNoLgoKRmluZSB3aXRoIG1lLgoKPiAKPj4gLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9zbXAuaAo+PiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3NtcC5oCj4+IEBA IC03Niw2ICs3Niw5IEBAIHZvaWQgc2V0X25yX3NvY2tldHModm9pZCk7Cj4+ICAgLyogUmVwcmVz ZW50aW5nIEhUIGFuZCBjb3JlIHNpYmxpbmdzIGluIGVhY2ggc29ja2V0LiAqLwo+PiAgIGV4dGVy biBjcHVtYXNrX3QgKipzb2NrZXRfY3B1bWFzazsKPj4gICAKPj4gKyNkZWZpbmUgZ2V0X2NwdV9j dXJyZW50KGNwdSkgXAo+PiArICAgIChnZXRfY3B1X2luZm9fZnJvbV9zdGFjaygodW5zaWduZWQg bG9uZylzdGFja19iYXNlW2NwdV0pLT5jdXJyZW50X3ZjcHUpCj4gCj4gSSBkb24ndCB0aGluayB0 aGlzIGNhbiBnbyB3aXRob3V0IGEgY29tbWVudCBjbGFyaWZ5aW5nIHVuZGVyIHdoYXQKPiAocHJl dHR5IG5hcnJvdyBJIHRoaW5rKSBjb25kaXRpb25zIHRoaXMgaXMgbGVnaXRpbWF0ZSB0byB1c2Uu CgpPa2F5LiBJJ2xsIGFkZCBhIGNvbW1lbnQgbGlrZTogInRvIGJlIHVzZWQgb25seSB3aGlsZSBu byBjb250ZXh0IHN3aXRjaApjYW4gb2NjdXIgb24gdGhlIGNwdSIuCgoKSnVlcmdlbgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==