Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3902745pxu; Wed, 9 Dec 2020 03:39:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJw4JRflqNXIyQH/eDJEbN2EZ7JlXGUp59jBI9qS1s3VbeR5hoJmXw2nLXqIj1E7LAIMc7s6 X-Received: by 2002:a17:906:12cf:: with SMTP id l15mr1664948ejb.540.1607513997360; Wed, 09 Dec 2020 03:39:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607513997; cv=none; d=google.com; s=arc-20160816; b=VzV7jkMHPRscR8+Yu3l4M95GTg4hy6+rnZxf+hUTWY8UBxS/5qHVZdIlCLtqPWtu9t 1E/E180xHIhmiowkpZEgUzIZqZYDZp9Trg2T6y7w++bygv8X7W8oyrcAGyzDmy4ojXTb ofsfat6z4RnJgKb0nDL74s8eLKJKUx10QHhSysySCHGpEzE8mwJZwBumyreaRCxu0QP1 strEYmLErn+O61Vt/9LdrAklE0OK+kPkvKrLnUZRDbUaBnSaArDAzXyXeucqYanLt6Y1 OCuvjPKl+9I5JBGKpE64vxsn8bn/YeaXuYZzIwzxaGsuVkMvN0Oz7mzCwdIBaTYZ078r nKWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from; bh=X3CcVNUvRdxjY2U9Z1qssVeGicaUIO0rSGRYwHrZ8zQ=; b=Jd2uj1qfDGubVD1eWjwkxok9sHxRovYnRzRju8Sd8UJXSb7n+DzcWXpjYujXIDUT/e tUOUe2/QpHHNP3Pnq0QYZTUqhCion5V5JZiHTgsQie/PNq/O7yJzeRa3WhqH/tERLx/p 15cOoOvtpYPsQBs4krzVJ6nGQQDXRGR+81JrMHXBykTFqdgOUgcTPUNGpIEHN/mYXUUS ckXp4lf7AfoU/s7GN7a9KQSIdeG+ptdjXbnq8jOs1Flhmml8Q+ALDLOBeMW7ZnmKUyb/ pSJj5lohEqzba4xa3a6sLq69c5RIFSn2+JCDgxqxEhpsMPbBo3BlUMdjekSiVyO8s2cf WgOQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l2si652492ede.232.2020.12.09.03.39.32; Wed, 09 Dec 2020 03:39:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730819AbgLILg2 (ORCPT + 99 others); Wed, 9 Dec 2020 06:36:28 -0500 Received: from frasgout.his.huawei.com ([185.176.79.56]:2231 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730809AbgLILgQ (ORCPT ); Wed, 9 Dec 2020 06:36:16 -0500 Received: from fraeml705-chm.china.huawei.com (unknown [172.18.147.207]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4CrZdn62gfz67Nqb; Wed, 9 Dec 2020 19:32:13 +0800 (CST) Received: from lhreml713-chm.china.huawei.com (10.201.108.64) by fraeml705-chm.china.huawei.com (10.206.15.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2106.2; Wed, 9 Dec 2020 12:35:33 +0100 Received: from dggemi761-chm.china.huawei.com (10.1.198.147) by lhreml713-chm.china.huawei.com (10.201.108.64) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2106.2; Wed, 9 Dec 2020 11:35:31 +0000 Received: from dggemi761-chm.china.huawei.com ([10.9.49.202]) by dggemi761-chm.china.huawei.com ([10.9.49.202]) with mapi id 15.01.1913.007; Wed, 9 Dec 2020 19:35:30 +0800 From: "Song Bao Hua (Barry Song)" To: Vincent Guittot CC: Valentin Schneider , Catalin Marinas , Will Deacon , "Rafael J. Wysocki" , "Cc: Len Brown" , "gregkh@linuxfoundation.org" , Jonathan Cameron , Ingo Molnar , Peter Zijlstra , Juri Lelli , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Mark Rutland , LAK , linux-kernel , ACPI Devel Maling List , Linuxarm , "xuwei (O)" , "Zengtao (B)" Subject: RE: [RFC PATCH v2 2/2] scheduler: add scheduler level for clusters Thread-Topic: [RFC PATCH v2 2/2] scheduler: add scheduler level for clusters Thread-Index: AQHWx46tyJL5OgLpakCat9sEfhhBKKni9KEAgACKRLD//5RWAIAAjDiggAAA9pCAAKpoUIAARlmAgACFXCD//4SLAIAG0N6Q///aWIAAbBndEA== Date: Wed, 9 Dec 2020 11:35:30 +0000 Message-ID: <68b3a967cb41456ba6402d913bfafb31@hisilicon.com> References: <20201201025944.18260-1-song.bao.hua@hisilicon.com> <20201201025944.18260-3-song.bao.hua@hisilicon.com> <414fbd167b214452b925ac674575f0d6@hisilicon.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.126.202.110] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVmluY2VudCBHdWl0dG90 IFttYWlsdG86dmluY2VudC5ndWl0dG90QGxpbmFyby5vcmddDQo+IFNlbnQ6IFR1ZXNkYXksIERl Y2VtYmVyIDgsIDIwMjAgNDoyOSBBTQ0KPiBUbzogU29uZyBCYW8gSHVhIChCYXJyeSBTb25nKSA8 c29uZy5iYW8uaHVhQGhpc2lsaWNvbi5jb20+DQo+IENjOiBWYWxlbnRpbiBTY2huZWlkZXIgPHZh bGVudGluLnNjaG5laWRlckBhcm0uY29tPjsgQ2F0YWxpbiBNYXJpbmFzDQo+IDxjYXRhbGluLm1h cmluYXNAYXJtLmNvbT47IFdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+OyBSYWZhZWwgSi4g V3lzb2NraQ0KPiA8cmp3QHJqd3lzb2NraS5uZXQ+OyBDYzogTGVuIEJyb3duIDxsZW5iQGtlcm5l bC5vcmc+Ow0KPiBncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZzsgSm9uYXRoYW4gQ2FtZXJvbiA8 am9uYXRoYW4uY2FtZXJvbkBodWF3ZWkuY29tPjsNCj4gSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhh dC5jb20+OyBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+OyBKdXJpDQo+IExl bGxpIDxqdXJpLmxlbGxpQHJlZGhhdC5jb20+OyBEaWV0bWFyIEVnZ2VtYW5uIDxkaWV0bWFyLmVn Z2VtYW5uQGFybS5jb20+Ow0KPiBTdGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBnb29kbWlzLm9yZz47 IEJlbiBTZWdhbGwgPGJzZWdhbGxAZ29vZ2xlLmNvbT47IE1lbA0KPiBHb3JtYW4gPG1nb3JtYW5A c3VzZS5kZT47IE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+OyBMQUsNCj4gPGxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZz47IGxpbnV4LWtlcm5lbA0KPiA8bGlu dXgta2VybmVsQHZnZXIua2VybmVsLm9yZz47IEFDUEkgRGV2ZWwgTWFsaW5nIExpc3QNCj4gPGxp bnV4LWFjcGlAdmdlci5rZXJuZWwub3JnPjsgTGludXhhcm0gPGxpbnV4YXJtQGh1YXdlaS5jb20+ OyB4dXdlaSAoTykNCj4gPHh1d2VpNUBodWF3ZWkuY29tPjsgWmVuZ3RhbyAoQikgPHByaW1lLnpl bmdAaGlzaWxpY29uLmNvbT4NCj4gU3ViamVjdDogUmU6IFtSRkMgUEFUQ0ggdjIgMi8yXSBzY2hl ZHVsZXI6IGFkZCBzY2hlZHVsZXIgbGV2ZWwgZm9yIGNsdXN0ZXJzDQo+IA0KPiBPbiBNb24sIDcg RGVjIDIwMjAgYXQgMTA6NTksIFNvbmcgQmFvIEh1YSAoQmFycnkgU29uZykNCj4gPHNvbmcuYmFv Lmh1YUBoaXNpbGljb24uY29tPiB3cm90ZToNCj4gPg0KPiA+DQo+ID4NCj4gPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBWaW5jZW50IEd1aXR0b3QgW21haWx0bzp2 aW5jZW50Lmd1aXR0b3RAbGluYXJvLm9yZ10NCj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJl ciAzLCAyMDIwIDEwOjM5IFBNDQo+ID4gPiBUbzogU29uZyBCYW8gSHVhIChCYXJyeSBTb25nKSA8 c29uZy5iYW8uaHVhQGhpc2lsaWNvbi5jb20+DQo+ID4gPiBDYzogVmFsZW50aW4gU2NobmVpZGVy IDx2YWxlbnRpbi5zY2huZWlkZXJAYXJtLmNvbT47IENhdGFsaW4gTWFyaW5hcw0KPiA+ID4gPGNh dGFsaW4ubWFyaW5hc0Bhcm0uY29tPjsgV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9yZz47IFJh ZmFlbCBKLiBXeXNvY2tpDQo+ID4gPiA8cmp3QHJqd3lzb2NraS5uZXQ+OyBDYzogTGVuIEJyb3du IDxsZW5iQGtlcm5lbC5vcmc+Ow0KPiA+ID4gZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IEpv bmF0aGFuIENhbWVyb24NCj4gPGpvbmF0aGFuLmNhbWVyb25AaHVhd2VpLmNvbT47DQo+ID4gPiBJ bmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT47IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5m cmFkZWFkLm9yZz47IEp1cmkNCj4gPiA+IExlbGxpIDxqdXJpLmxlbGxpQHJlZGhhdC5jb20+OyBE aWV0bWFyIEVnZ2VtYW5uDQo+IDxkaWV0bWFyLmVnZ2VtYW5uQGFybS5jb20+Ow0KPiA+ID4gU3Rl dmVuIFJvc3RlZHQgPHJvc3RlZHRAZ29vZG1pcy5vcmc+OyBCZW4gU2VnYWxsIDxic2VnYWxsQGdv b2dsZS5jb20+OyBNZWwNCj4gPiA+IEdvcm1hbiA8bWdvcm1hbkBzdXNlLmRlPjsgTWFyayBSdXRs YW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT47IExBSw0KPiA+ID4gPGxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZz47IGxpbnV4LWtlcm5lbA0KPiA+ID4gPGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmc+OyBBQ1BJIERldmVsIE1hbGluZyBMaXN0DQo+ID4gPiA8bGludXgtYWNw aUB2Z2VyLmtlcm5lbC5vcmc+OyBMaW51eGFybSA8bGludXhhcm1AaHVhd2VpLmNvbT47IHh1d2Vp IChPKQ0KPiA+ID4gPHh1d2VpNUBodWF3ZWkuY29tPjsgWmVuZ3RhbyAoQikgPHByaW1lLnplbmdA aGlzaWxpY29uLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIHYyIDIvMl0gc2No ZWR1bGVyOiBhZGQgc2NoZWR1bGVyIGxldmVsIGZvciBjbHVzdGVycw0KPiA+ID4NCj4gPiA+IE9u IFRodSwgMyBEZWMgMjAyMCBhdCAxMDoxMSwgU29uZyBCYW8gSHVhIChCYXJyeSBTb25nKQ0KPiA+ ID4gPHNvbmcuYmFvLmh1YUBoaXNpbGljb24uY29tPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ IEZyb206IFZpbmNlbnQgR3VpdHRvdCBbbWFpbHRvOnZpbmNlbnQuZ3VpdHRvdEBsaW5hcm8ub3Jn XQ0KPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciAzLCAyMDIwIDEwOjA0IFBNDQo+ ID4gPiA+ID4gVG86IFNvbmcgQmFvIEh1YSAoQmFycnkgU29uZykgPHNvbmcuYmFvLmh1YUBoaXNp bGljb24uY29tPg0KPiA+ID4gPiA+IENjOiBWYWxlbnRpbiBTY2huZWlkZXIgPHZhbGVudGluLnNj aG5laWRlckBhcm0uY29tPjsgQ2F0YWxpbiBNYXJpbmFzDQo+ID4gPiA+ID4gPGNhdGFsaW4ubWFy aW5hc0Bhcm0uY29tPjsgV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9yZz47IFJhZmFlbCBKLg0K PiBXeXNvY2tpDQo+ID4gPiA+ID4gPHJqd0Byand5c29ja2kubmV0PjsgQ2M6IExlbiBCcm93biA8 bGVuYkBrZXJuZWwub3JnPjsNCj4gPiA+ID4gPiBncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZzsg Sm9uYXRoYW4gQ2FtZXJvbg0KPiA+ID4gPGpvbmF0aGFuLmNhbWVyb25AaHVhd2VpLmNvbT47DQo+ ID4gPiA+ID4gSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+OyBQZXRlciBaaWpsc3RyYSA8 cGV0ZXJ6QGluZnJhZGVhZC5vcmc+Ow0KPiBKdXJpDQo+ID4gPiA+ID4gTGVsbGkgPGp1cmkubGVs bGlAcmVkaGF0LmNvbT47IERpZXRtYXIgRWdnZW1hbm4NCj4gPiA+IDxkaWV0bWFyLmVnZ2VtYW5u QGFybS5jb20+Ow0KPiA+ID4gPiA+IFN0ZXZlbiBSb3N0ZWR0IDxyb3N0ZWR0QGdvb2RtaXMub3Jn PjsgQmVuIFNlZ2FsbCA8YnNlZ2FsbEBnb29nbGUuY29tPjsNCj4gTWVsDQo+ID4gPiA+ID4gR29y bWFuIDxtZ29ybWFuQHN1c2UuZGU+OyBNYXJrIFJ1dGxhbmQgPG1hcmsucnV0bGFuZEBhcm0uY29t PjsgTEFLDQo+ID4gPiA+ID4gPGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZz47 IGxpbnV4LWtlcm5lbA0KPiA+ID4gPiA+IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsg QUNQSSBEZXZlbCBNYWxpbmcgTGlzdA0KPiA+ID4gPiA+IDxsaW51eC1hY3BpQHZnZXIua2VybmVs Lm9yZz47IExpbnV4YXJtIDxsaW51eGFybUBodWF3ZWkuY29tPjsgeHV3ZWkNCj4gKE8pDQo+ID4g PiA+ID4gPHh1d2VpNUBodWF3ZWkuY29tPjsgWmVuZ3RhbyAoQikgPHByaW1lLnplbmdAaGlzaWxp Y29uLmNvbT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1JGQyBQQVRDSCB2MiAyLzJdIHNjaGVk dWxlcjogYWRkIHNjaGVkdWxlciBsZXZlbCBmb3IgY2x1c3RlcnMNCj4gPiA+ID4gPg0KPiA+ID4g PiA+IE9uIFdlZCwgMiBEZWMgMjAyMCBhdCAyMTo1OCwgU29uZyBCYW8gSHVhIChCYXJyeSBTb25n KQ0KPiA+ID4gPiA+IDxzb25nLmJhby5odWFAaGlzaWxpY29uLmNvbT4gd3JvdGU6DQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBTb3JyeS4gUGxlYXNlIGlnbm9yZSB0 aGlzLiBJIGFkZGVkIHNvbWUgcHJpbnRrIGhlcmUgd2hpbGUgdGVzdGluZw0KPiA+ID4gPiA+ID4g PiBvbmUgbnVtYS4gV2lsbCB1cGRhdGUgeW91IHRoZSBkYXRhIGluIGFub3RoZXIgZW1haWwuDQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gUmUtdGVzdGVkIGluIG9uZSBOVU1BIG5vZGUoY3B1MC1j cHUyMyk6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gZz0xDQo+ID4gPiA+ID4gPiBSdW5uaW5n IGluIHRocmVhZGVkIG1vZGUgd2l0aCAxIGdyb3VwcyB1c2luZyA0MCBmaWxlIGRlc2NyaXB0b3Jz DQo+ID4gPiA+ID4gPiBFYWNoIHNlbmRlciB3aWxsIHBhc3MgMTAwMDAwIG1lc3NhZ2VzIG9mIDEw MCBieXRlcw0KPiA+ID4gPiA+ID4gdy9vOiA3LjY4OSA3LjQ4NSA3LjQ4NSA3LjQ1OCA3LjUyNCA3 LjUzOSA3LjczOCA3LjY5MyA3LjU2OCA3LjY3ND03LjU4NTMNCj4gPiA+ID4gPiA+IHcvIDogNy41 MTYgNy45NDEgNy4zNzQgNy45NjMgNy44ODEgNy45MTAgNy40MjAgNy41NTYgNy42OTUgNy40NDE9 Ny42Njk3DQo+ID4gPiA+ID4gPiB3LyBidXQgZHJvcHBlZCBzZWxlY3RfaWRsZV9jbHVzdGVyOg0K PiA+ID4gPiA+ID4gICAgICA3Ljc1MiA3LjczOSA3LjczOSA3LjU3MSA3LjU0NSA3LjY4NSA3LjQw NyA3LjU4MCA3LjYwNSA3LjQ4Nz03LjYxMQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IGc9Mg0K PiA+ID4gPiA+ID4gUnVubmluZyBpbiB0aHJlYWRlZCBtb2RlIHdpdGggMiBncm91cHMgdXNpbmcg NDAgZmlsZSBkZXNjcmlwdG9ycw0KPiA+ID4gPiA+ID4gRWFjaCBzZW5kZXIgd2lsbCBwYXNzIDEw MDAwMCBtZXNzYWdlcyBvZiAxMDAgYnl0ZXMNCj4gPiA+ID4gPiA+IHcvbzogMTAuMTI3IDEwLjEx OSAxMC4wNzAgMTAuMTk2IDEwLjA1NyAxMC4xMTEgMTAuMDQ1IDEwLjE2NCAxMC4xNjINCj4gPiA+ ID4gPiA+IDkuOTU1PTEwLjEwMDYNCj4gPiA+ID4gPiA+IHcvIDogOS42OTQgOS42NTQgOS42MTIg OS42NDkgOS42ODYgOS43MzQgOS42MDcgOS44NDIgOS42OTAgOS43MTA9OS42ODc4DQo+ID4gPiA+ ID4gPiB3LyBidXQgZHJvcHBlZCBzZWxlY3RfaWRsZV9jbHVzdGVyOg0KPiA+ID4gPiA+ID4gICAg ICA5Ljg3NyAxMC4wNjkgOS45NTEgOS45MTggOS45NDcgOS43OTAgOS45MDYgOS44MjAgOS44NjMg OS45MDY9OS45MDQ3DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gZz0zDQo+ID4gPiA+ID4gPiBS dW5uaW5nIGluIHRocmVhZGVkIG1vZGUgd2l0aCAzIGdyb3VwcyB1c2luZyA0MCBmaWxlIGRlc2Ny aXB0b3JzDQo+ID4gPiA+ID4gPiBFYWNoIHNlbmRlciB3aWxsIHBhc3MgMTAwMDAwIG1lc3NhZ2Vz IG9mIDEwMCBieXRlcw0KPiA+ID4gPiA+ID4gdy9vOiAxNS44ODUgMTUuMjU0IDE1LjkzMiAxNS42 NDcgMTYuMTIwIDE1Ljg3OCAxNS44NTcgMTUuNzU5IDE1LjY3NA0KPiA+ID4gPiA+ID4gMTUuNzIx PTE1Ljc3MjcNCj4gPiA+ID4gPiA+IHcvIDogMTQuOTc0IDE0LjY1NyAxMy45NjkgMTQuOTg1IDE0 LjcyOCAxNS42NjUgMTUuMTkxIDE0Ljk5NSAxNC45NDYNCj4gPiA+ID4gPiA+IDE0Ljg5NT0xNC45 MDA1DQo+ID4gPiA+ID4gPiB3LyBidXQgZHJvcHBlZCBzZWxlY3RfaWRsZV9jbHVzdGVyOg0KPiA+ ID4gPiA+ID4gICAgICAxNS40MDUgMTUuMTc3IDE1LjM3MyAxNS4xODcgMTUuNDUwIDE1LjU0MCAx NS4yNzggMTUuNjI4IDE1LjIyOA0KPiA+ID4gPiA+IDE1LjMyNT0xNS4zNTkxDQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gZz00DQo+ID4gPiA+ID4gPiBSdW5uaW5nIGluIHRocmVhZGVkIG1vZGUg d2l0aCA0IGdyb3VwcyB1c2luZyA0MCBmaWxlIGRlc2NyaXB0b3JzDQo+ID4gPiA+ID4gPiBFYWNo IHNlbmRlciB3aWxsIHBhc3MgMTAwMDAwIG1lc3NhZ2VzIG9mIDEwMCBieXRlcw0KPiA+ID4gPiA+ ID4gdy9vOiAyMC4wMTQgMjEuMDI1IDIxLjExOSAyMS4yMzUgMTkuNzY3IDIwLjk3MSAyMC45NjIg MjAuOTE0IDIxLjA5MA0KPiA+ID4gPiA+IDIxLjA5MD0yMC44MTg3DQo+ID4gPiA+ID4gPiB3LyA6 IDIwLjMzMSAyMC42MDggMjAuMzM4IDIwLjQ0NSAyMC40NTYgMjAuMTQ2IDIwLjY5MyAyMC43OTcg MjEuMzgxDQo+ID4gPiA+ID4gMjAuNDUyPTIwLjU2NDcNCj4gPiA+ID4gPiA+IHcvIGJ1dCBkcm9w cGVkIHNlbGVjdF9pZGxlX2NsdXN0ZXI6DQo+ID4gPiA+ID4gPiAgICAgIDE5LjgxNCAyMC4xMjYg MjAuMjI5IDIwLjM1MCAyMC43NTAgMjAuNDA0IDE5Ljk1NyAxOS44ODggMjAuMjI2DQo+ID4gPiA+ ID4gMjAuNTYyPTIwLjIzMDYNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJIGFz c3VtZSB0aGF0IHlvdSBoYXZlIHJ1biB0aGlzIG9uIHY1LjkgYXMgcHJldmlvdXMgdGVzdHMuDQo+ ID4gPiA+DQo+ID4gPiA+IFllcA0KPiA+ID4gPg0KPiA+ID4gPiA+IFRoZSByZXN1bHRzIGRvbid0 IHNob3cgYW55IHJlYWwgYmVuZWZpdCBvZiBzZWxlY3RfaWRsZV9jbHVzdGVyKCkNCj4gPiA+ID4g PiBpbnNpZGUgYSBub2RlIHdoZXJlYXMgdGhpcyBpcyB3aGVyZSB3ZSBjb3VsZCBleHBlY3QgbW9z dCBvZiB0aGUNCj4gPiA+ID4gPiBiZW5lZml0LiBXZSBoYXZlIHRvIHVuZGVyc3RhbmQgd2h5IHdl IGhhdmUgc3VjaCBhbiBpbXBhY3Qgb24gbnVtYQ0KPiA+ID4gPiA+IHRlc3RzIG9ubHkuDQo+ID4g PiA+DQo+ID4gPiA+IFRoZXJlIGlzIGEgNC01LjUlIGluY3JlYXNlIHdoaWxlIGc9MiBhbmQgZz0z Lg0KPiA+ID4NCj4gPiA+IG15IHBvaW50IHdhcyB3aXRoIHZzIHdpdGhvdXQgc2VsZWN0X2lkbGVf Y2x1c3RlcigpIGJ1dCBzdGlsbCBoYXZpbmcgYQ0KPiA+ID4gY2x1c3RlciBkb21haW4gbGV2ZWwN Cj4gPiA+IEluIHRoaXMgY2FzZSwgdGhlIGRpZmYgaXMgLTAuOCUgZm9yIGc9MSArMi4yJSBmb3Ig Zz0yLCArMyUgZm9yIGc9MyBhbmQNCj4gPiA+IC0xLjclIGZvciBnPTQNCj4gPiA+DQo+ID4gPiA+ DQo+ID4gPiA+IFJlZ2FyZGluZyB0aGUgaHVnZSBpbmNyZWFzZSBpbiBOVU1BIGNhc2UsICBhdCB0 aGUgZmlyc3QgYmVnaW5uaW5nLCBJIHN1c3BlY3QNCj4gPiA+ID4gd2UgaGF2ZSB3cm9uZyBsbGMg ZG9tYWluLiBGb3IgZXhhbXBsZSwgaWYgY3B1MCdzIGxsYyBkb21haW4gc3Bhbg0KPiA+ID4gPiBj cHUwLWNwdTQ3LCB0aGVuIHNlbGVjdF9pZGxlX2NwdSgpIGlzIHJ1bm5pbmcgaW4gd3JvbmcgcmFu Z2Ugd2hpbGUNCj4gPiA+ID4gaXQgc2hvdWxkIHJ1biBpbiBjcHUwLWNwdTIzLg0KPiA+ID4gPg0K PiA+ID4gPiBCdXQgYWZ0ZXIgcHJpbnRpbmcgdGhlIGxsYyBkb21haW4ncyBzcGFuLCBJIGZpbmQg aXQgaXMgY29tcGxldGVseSByaWdodC4NCj4gPiA+ID4gQ3B1MCdzIGxsYyBzcGFuOiBjcHUwLWNw dTIzDQo+ID4gPiA+IENwdTI0J3MgbGxjIHNwYW46IGNwdTI0LWNwdTQ3DQo+ID4gPg0KPiA+ID4g SGF2ZSB5b3UgY2hlY2tlZCB0aGF0IHRoZSBjbHVzdGVyIG1hc2sgd2FzIGFsc28gY29ycmVjdCA/ DQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBNYXliZSBJIG5lZWQgbW9yZSB0cmFjZSBkYXRhIHRv IGZpZ3VyZSBvdXQgaWYgc2VsZWN0X2lkbGVfY3B1KCkgaXMgcnVubmluZw0KPiA+ID4gPiBjb3Jy ZWN0bHkuIEZvciBleGFtcGxlLCBtYXliZSBJIGNhbiBmaWd1cmUgb3V0IGlmIGl0IGlzIGFsd2F5 cyByZXR1cm5pbmcNCj4gLTEsDQo+ID4gPiA+IG9yIGl0IHJldHVybnMgLTEgdmVyeSBvZnRlbj8N Cj4gPiA+DQo+ID4gPiB5ZXMsIGNvdWxkIGJlIGludGVyZXN0aW5nIHRvIGNoZWNrIGhvdyBvZnRl biBzZWxlY3RfaWRsZV9jcHUgcmV0dXJuIC0xDQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBPciBk byB5b3UgaGF2ZSBhbnkgaWRlYT8NCj4gPiA+DQo+ID4gPiB0cmFja2luZyBtaWdyYXRpb24gYWNy b3NzIG5vZCBjb3VsZCBoZWxwIHRvIHVuZGVyc3RhbmQgdG9vDQo+ID4NCj4gPiBJIHNldCBhIGJv b3RhcmdzIG1lbT00RyB0byBkbyBzd2FwcGluZyB0ZXN0IGJlZm9yZSB3b3JraW5nIG9uIGNsdXN0 ZXINCj4gPiBzY2hlZHVsZXIgaXNzdWUuIGJ1dCBJIGZvcmdvdCB0byByZW1vdmUgdGhlIHBhcmFt ZXRlci4NCj4gPg0KPiA+IFRoZSBodWdlIGluY3JlYXNlIG9uIGFjcm9zcy1udW1hIGNhc2UgY2Fu IG9ubHkgYmUgcmVwcm9kdWNlZCB3aGlsZQ0KPiA+IGkgdXNlIHRoaXMgbWVtPTRHIGNtZGxpbmUg d2hpY2ggbWVhbnMgbnVtYTEgaGFzIG5vIG1lbW9yeS4NCj4gPiBBZnRlciByZW1vdmluZyB0aGUg bGltaXRhdGlvbiwgSSBjYW4ndCByZXByb2R1Y2UgdGhlIGh1Z2UgaW5jcmVhc2UNCj4gPiBmb3Ig dHdvIE5VTUFzIGFueSBtb3JlLg0KPiANCj4gT2suIE1ha2UgbW9yZSBzZW5zZQ0KDQpJIG1hbmFn ZWQgdG8gdXNlIGxpbnV4LW5leHQgdG8gdGVzdCBhZnRlciBmaXhpbmcgdGhlIGRpc2sgaGFuZy4N Cg0KQnV0IEkgYW0gc3RpbGwgcXVpdGUgc3RydWdnbGluZyB3aXRoIGhvdyB0byBsZXZlcmFnZSB0 aGUgY2x1c3Rlcg0KdG9wb2xvZ3kgaW4gc2VsZWN0X2lkbGVfY3B1KCkgdG8gbWFrZSBodWdlIGlt cHJvdmVtZW50IG9uIGJlbmNobWFyay4NCg0KSWYgSSBkaXNhYmxlIHRoZSBpbmZsdWVuY2Ugb2Yg c2NoZWR1bGVyIGJ5IHRhc2tzZXQsIHRoZXJlIGlzDQpvYnZpb3VzbHkgYSBsYXJnZSBkaWZmZXJl bmNlIGluIGhhY2tiZW5jaCBpbnNpZGUgY2x1c3RlciBhbmQNCmFjcm9zcyBjbHVzdGVyczoNCg0K aW5zaWRlIGEgY2x1c3RlcjoNCnJvb3RAdWJ1bnR1On4jIHRhc2tzZXQgLWMgMCwxLDIsMyBoYWNr YmVuY2ggLXAgLVQgLWwgMjAwMDAgLWcgMQ0KUnVubmluZyBpbiB0aHJlYWRlZCBtb2RlIHdpdGgg MSBncm91cHMgdXNpbmcgNDAgZmlsZSBkZXNjcmlwdG9ycyBlYWNoDQooPT0gNDAgdGFza3MpDQpF YWNoIHNlbmRlciB3aWxsIHBhc3MgMjAwMDAgbWVzc2FnZXMgb2YgMTAwIGJ5dGVzDQpUaW1lOiA0 LjI4NQ0KDQpBY3Jvc3MgY2x1c3RlcnM6DQpyb290QHVidW50dTp+IyB0YXNrc2V0IC1jIDAsNCw4 LDEyIGhhY2tiZW5jaCAtcCAtVCAtbCAyMDAwMCAtZyAxDQpSdW5uaW5nIGluIHRocmVhZGVkIG1v ZGUgd2l0aCAxIGdyb3VwcyB1c2luZyA0MCBmaWxlIGRlc2NyaXB0b3JzIGVhY2gNCig9PSA0MCB0 YXNrcykNCkVhY2ggc2VuZGVyIHdpbGwgcGFzcyAyMDAwMCBtZXNzYWdlcyBvZiAxMDAgYnl0ZXMN ClRpbWU6IDUuNTI0DQoNCkJ1dCBubyBtYXR0ZXIgaG93IEkgdHVuZSB0aGUgY29kZSBvZiBrZXJu ZWwvc2NoZWQvZmFpci5jLCBJDQpkb24ndCBzZWUgdGhpcyBsYXJnZSBkaWZmZXJlbmNlIGJ5IHJ1 bm5pbmcgaGFja2JlbmNoIGluIHRoZQ0Kd2hvbGUgbnVtYSBub2RlOg0KZm9yIGkgaW4gezEuLjEw fQ0KZG8NCgludW1hY3RsIC1OIDAgaGFja2JlbmNoIC1wIC1UIC1sIDIwMDAwIC1nICQxDQpkb25l DQoNCnVzdWFsbHksIHRoZSBkaWZmZXJlbmNlIGlzIHVuZGVyICgtNSV+KzUlKS4NCg0KVGhlbiBJ IG1hZGUgYSBtYWpvciBjaGFuZ2UgYXMgYmVsb3c6DQpzdGF0aWMgaW50IHNlbGVjdF9pZGxlX2Nw dShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBzY2hlZF9kb21haW4gKnNkLCBpbnQgdGFy Z2V0KQ0Kew0KCS4uLg0KDQoNCgl0aW1lID0gY3B1X2Nsb2NrKHRoaXMpOw0KDQojaWYgMA0KCWNw dW1hc2tfYW5kKGNwdXMsIHNjaGVkX2RvbWFpbl9zcGFuKHNkKSwgcC0+Y3B1c19wdHIpOw0KDQoJ Zm9yX2VhY2hfY3B1X3dyYXAoY3B1LCBjcHVzLCB0YXJnZXQpIHsNCgkJaWYgKCEtLW5yKQ0KCQkJ cmV0dXJuIC0xOw0KCQlpZiAoYXZhaWxhYmxlX2lkbGVfY3B1KGNwdSkgfHwgc2NoZWRfaWRsZV9j cHUoY3B1KSkNCgkJCWJyZWFrOw0KCX0NCiNlbHNlDQoJaWYgKChjcHU9c2VsZWN0X2lkbGVfY2x1 c3RlcihwLHRhcmdldCkpID0gLTEpDQoJCXJldHVybiAtMTsNCiNlbmRpZg0KDQoJdGltZSA9IGNw dV9jbG9jayh0aGlzKSAtIHRpbWU7DQoJdXBkYXRlX2F2ZygmdGhpc19zZC0+YXZnX3NjYW5fY29z dCwgdGltZSk7DQoNCglyZXR1cm4gY3B1Ow0KfQ0KDQpUaGF0IG1lYW5zIEkgZG9uJ3QgZmFsbCBi YWNrIHRvIGxsYyBpZiBjbHVzdGVyIGhhcyBubyBpZGxlDQpjcHUuDQoNCldpdGggdGhpcywgSSBh bSBnZXR0aW5nIDIwJSBtYWpvciBkaWZmZXJlbmNlIGFzIEkgYW0gYWx3YXlzIGV4cGVjdGluZzoN Cg0KZz0gICAgIDEgICAgICAyICAgICAgICAzICAgICAgICA0ICAgICAgICA1ICAgICAgICA2ICAg ICAgICA3ICAgICAgOCAgICAgICA5ICAgICAgICAxMA0Kdy9vICAxLjU0OTQgMi4wNjQxIDMuMTY0 MCA0LjI0MzggNS4zNDQ1IDYuMzA5OCA3LjUwODYgOC40NzIxIDkuNzExNSAgMTAuODU4OA0Kdy8g ICAxLjY4MDEgMi4wMjgwIDIuNzg5MCAzLjczMzkgNC41NzQ4IDUuMjk5OCA2LjE0MTMgNi42MjA2 IDcuNzY0MSAgOC40NzgyDQoNCkkgZ3Vlc3MgbXkgb3JpZ2luYWwgcGF0Y2ggaXMgdmVyeSBlYXN5 IHRvIGZhbGwgYmFjayB0byBsbGMgYXMNCmNsdXN0ZXIgaXMgbm90IGVhc3kgdG8gaWRsZS4gT25j ZSBzeXN0ZW0gaXMgYnVzeSwgdGhlIG9yaWdpbmFsDQpwYXRjaCBpcyBub3AgYXMgaXQgaXMgYWx3 YXlzIGZhbGxpbmcgYmFjayB0byBsbGMuDQoNCj4gDQo+ID4NCj4gPiBHdWVzcyBzZWxlY3RfaWRs ZV9jbHVzdGVyKCkgc29tZWhvdyB3b3JrYXJvdW5kIGFuIHNjaGVkdWxlciBpc3N1ZQ0KPiA+IGZv ciBudW1hIHdpdGhvdXQgbWVtb3J5Lg0KPiA+DQo+ID4gPg0KPiA+ID4gVmluY2VudA0KDQpUaGFu a3MNCkJhcnJ5DQoNCg==