Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1548409pxj; Wed, 19 May 2021 08:22:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwSOxAd30MaA8uSW4l1KXcUUu7B0qU+0iA6bBgFLtm9Sp4ME/AVgTDnL+dt2UwUrhyW730c X-Received: by 2002:aa7:cd8b:: with SMTP id x11mr15256943edv.87.1621437776584; Wed, 19 May 2021 08:22:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621437776; cv=none; d=google.com; s=arc-20160816; b=r1jPJSxLtF6g1GCf9PDTMLf+gAZejmIttOc7pCroICkeUuaP/RHDm8ukd/3tOl10vT duOsa8wk161FnPfN+cfi2TRUAaGg1g0Tnm/aOU+7aeyi2N9HmaA/YLPy22dt+Y2zhIIj g/vzVslrx1T3z7nyhE+ipt0LSS0/qbd7fMcNtBoiidIs4aF1a2607IPm6I8+zp+GwQAY RT2/m61NHZwXQ/yMRAZNui4yKw1gTxNYaM4uPX6vDN5P6SvOEyujHO2iCGCW0+smEPGR 7LQi2Ax1OL8xx68GbnnS3kuY0YYaIx8V++0fITmzmD5q5OUOJweOoOBXNf7UojFSSK7D A4Vg== 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=KmLB3hoMnGV2jOKjglGJV7Vp8GhW8l0/jn90xf3RiM0=; b=lp9Y7gfdvLdOvn7h7fBEs2hXBLYV6Kf3yPY7JpD8XjgUKEj6cNX6N2ZtMSH3xLgTtN 8MRwfDfWW3sh+GyTnJUw3qu/FykchRtDG3r3EvWXqNbNOWhJjEan/Y5K1bnq2Dsua5cC rc9ZobuME7ioYvVP7151u+eH6cKEl+6/5zIXV9nlcHhpHOPacAMsYluTtP6ir+4Plh87 d5BjdELsarqYiDDa0eqt3azaLj6H1pKFmrOffrc+9EnASD0qF1LJGo5kfQRFLe9N/a5A P9mu59//rL0bUhEdZSpm6hG/47KeV38EiXFkRTUBYNpBSdrcBci7TDHXzuVnqJMwVedy de0w== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id rk20si7143770ejb.596.2021.05.19.08.22.31; Wed, 19 May 2021 08:22:56 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346849AbhERGxr (ORCPT + 99 others); Tue, 18 May 2021 02:53:47 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:3580 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346854AbhERGxq (ORCPT ); Tue, 18 May 2021 02:53:46 -0400 Received: from dggems703-chm.china.huawei.com (unknown [172.30.72.59]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4Fkmnx1ScDzmVk3; Tue, 18 May 2021 14:49:41 +0800 (CST) Received: from dggemi761-chm.china.huawei.com (10.1.198.147) by dggems703-chm.china.huawei.com (10.3.19.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2176.2; Tue, 18 May 2021 14:52:26 +0800 Received: from lhreml703-chm.china.huawei.com (10.201.108.52) by dggemi761-chm.china.huawei.com (10.1.198.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Tue, 18 May 2021 14:52:24 +0800 Received: from lhreml703-chm.china.huawei.com ([10.201.68.198]) by lhreml703-chm.china.huawei.com ([10.201.68.198]) with mapi id 15.01.2176.012; Tue, 18 May 2021 07:52:22 +0100 From: Salil Mehta To: "wangyanan (Y)" CC: Peter Maydell , Paolo Bonzini , Andrew Jones , "Michael S . Tsirkin" , Igor Mammedov , Shannon Zhao , "qemu-devel@nongnu.org" , "qemu-arm@nongnu.org" , =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , yangyicong , "Zengtao (B)" , "Song Bao Hua (Barry Song)" , "Wanghaibin (D)" , zhukeqian , yuzenghui , "linux-kernel@vger.kernel.org" , "linuxarm@openeuler.org" Subject: RE: [RFC PATCH v3 4/4] hw/arm/virt: Parse -smp cluster parameter in virt_smp_parse Thread-Topic: [RFC PATCH v3 4/4] hw/arm/virt: Parse -smp cluster parameter in virt_smp_parse Thread-Index: AQHXSj/FZmRUdZustEeQifVnUtKQiarnny9ggADs5wCAAELn0A== Date: Tue, 18 May 2021 06:52:22 +0000 Message-ID: <29a66f731146401eabc68481bf32b3cc@huawei.com> References: <20210516103228.37792-1-wangyanan55@huawei.com> <20210516103228.37792-5-wangyanan55@huawei.com> <01351414c3424710bf3dc5eb949f0d75@huawei.com> <3f6756a9-409e-f273-a6be-8cff57a7cfff@huawei.com> In-Reply-To: <3f6756a9-409e-f273-a6be-8cff57a7cfff@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.47.31.227] 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 PiBGcm9tOiB3YW5neWFuYW4gKFkpDQo+IA0KPiBIaSBTYWxpbCwNCj4gDQo+IE9uIDIwMjEvNS8x NyAyMzoxNywgU2FsaWwgTWVodGEgd3JvdGU6DQo+ID4+IEZyb206IFFlbXUtZGV2ZWwNCj4gPj4g W21haWx0bzpxZW11LWRldmVsLWJvdW5jZXMrc2FsaWwubWVodGE9aHVhd2VpLmNvbUBub25nbnUu b3JnXSBPbiBCZWhhbGYgT2YNCj4gPj4gWWFuYW4gV2FuZw0KPiA+PiBTZW50OiBTdW5kYXksIE1h eSAxNiwgMjAyMSAxMTozMiBBTQ0KPiA+PiBUbzogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVs bEBsaW5hcm8ub3JnPjsgUGFvbG8gQm9uemluaQ0KPiA+PiA8cGJvbnppbmlAcmVkaGF0LmNvbT47 IEFuZHJldyBKb25lcyA8ZHJqb25lc0ByZWRoYXQuY29tPjsgTWljaGFlbCBTIC4gVHNpcmtpbg0K PiA+PiA8bXN0QHJlZGhhdC5jb20+OyBJZ29yIE1hbW1lZG92IDxpbWFtbWVkb0ByZWRoYXQuY29t PjsgU2hhbm5vbiBaaGFvDQo+ID4+IDxzaGFubm9uLnpoYW9zbEBnbWFpbC5jb20+OyBxZW11LWRl dmVsQG5vbmdudS5vcmc7IHFlbXUtYXJtQG5vbmdudS5vcmcNCj4gPj4gQ2M6IFNvbmcgQmFvIEh1 YSAoQmFycnkgU29uZykgPHNvbmcuYmFvLmh1YUBoaXNpbGljb24uY29tPjsgUGhpbGlwcGUNCj4g Pj4gTWF0aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPjsgd2FuZ3lhbmFuIChZKSA8d2Fu Z3lhbmFuNTVAaHVhd2VpLmNvbT47DQo+ID4+IFplbmd0YW8gKEIpIDxwcmltZS56ZW5nQGhpc2ls aWNvbi5jb20+OyBXYW5naGFpYmluIChEKQ0KPiA+PiA8d2FuZ2hhaWJpbi53YW5nQGh1YXdlaS5j b20+OyB5dXplbmdodWkgPHl1emVuZ2h1aUBodWF3ZWkuY29tPjsgeWFuZ3lpY29uZw0KPiA+PiA8 eWFuZ3lpY29uZ0BodWF3ZWkuY29tPjsgemh1a2VxaWFuIDx6aHVrZXFpYW4xQGh1YXdlaS5jb20+ DQo+ID4+IFN1YmplY3Q6IFtSRkMgUEFUQ0ggdjMgNC80XSBody9hcm0vdmlydDogUGFyc2UgLXNt cCBjbHVzdGVyIHBhcmFtZXRlciBpbg0KPiA+PiB2aXJ0X3NtcF9wYXJzZQ0KPiA+Pg0KPiA+PiBU aGVyZSBpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHZpcnRfc21wX3BhcnNlKCkgaW4gaHcvdmlydC9h cm0uYyB1c2VkDQo+ID4+IHRvIHBhcnNlIGNwdSB0b3BvbG9neSBmb3IgdGhlIEFSTSBtYWNoaW5l cy4gU28gYWRkIHBhcnNpbmcgb2YgLXNtcA0KPiA+PiBjbHVzdGVyIHBhcmFtZXRlciBpbiBpdCwg dGhlbiB0b3RhbCBudW1iZXIgb2YgbG9naWNhbCBjcHVzIHdpbGwgYmUNCj4gPj4gY2FsY3VsYXRl ZCBsaWtlOiBtYXhfY3B1cyA9IHNvY2tldHMgKiBjbHVzdGVycyAqIGNvcmVzICogdGhyZWFkcy4N Cj4gPj4NCj4gPj4gTm90ZSwgd2Ugd2lsbCBhc3N1bWUgbXVsdGktY2x1c3RlciBpbiBvbmUgc29j a2V0IGlzIG5vdCBzdXBwb3J0ZWQNCj4gPj4gYW5kIGRlZmF1bHQgdGhlIHZhbHVlIG9mIGNsdXN0 ZXJzIHRvIDEsIGlmIGl0J3Mgbm90IGV4cGxpY2l0bHkNCj4gPj4gc3BlY2lmaWVkIGluIC1zbXAg Y21kbGluZS4NCj4gPj4NCj4gPj4gU2lnbmVkLW9mZi1ieTogWWFuYW4gV2FuZyA8d2FuZ3lhbmFu NTVAaHVhd2VpLmNvbT4NCj4gPj4gLS0tDQo+ID4+ICAgaHcvYXJtL3ZpcnQuYyB8IDMyICsrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ID4+ICAgMSBmaWxlIGNoYW5nZWQsIDE4IGlu c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvaHcv YXJtL3ZpcnQuYyBiL2h3L2FybS92aXJ0LmMNCj4gPj4gaW5kZXggN2RlODIyZTQ5MS4uNjc4ZDVl ZjM2YyAxMDA2NDQNCj4gPj4gLS0tIGEvaHcvYXJtL3ZpcnQuYw0KPiA+PiArKysgYi9ody9hcm0v dmlydC5jDQo+ID4+IEBAIC0yNjQyLDggKzI2NDIsOCBAQCBzdGF0aWMgaW50IHZpcnRfa3ZtX3R5 cGUoTWFjaGluZVN0YXRlICptcywgY29uc3QgY2hhcg0KPiA+PiAqdHlwZV9zdHIpDQo+ID4+ICAg ICogd2l0aCB0aGUgLXNtcCBjbWRsaW5lcyB3aGVuIHBhcnNpbmcgdGhlbS4NCj4gPj4gICAgKg0K PiA+PiAgICAqIFdlIHJlcXVpcmUgdGhhdCBhdCBsZWFzdCBvbmUgb2YgY3B1cyBvciBtYXhjcHVz IG11c3QgYmUgcHJvdmlkZWQuDQo+ID4+IC0gKiBUaHJlYWRzIHdpbGwgZGVmYXVsdCB0byAxIGlm IG5vdCBwcm92aWRlZC4gU29ja2V0cyBhbmQgY29yZXMgbXVzdA0KPiA+PiAtICogYmUgZWl0aGVy IGJvdGggcHJvdmlkZWQgb3IgYm90aCBub3QuDQo+ID4+ICsgKiBDbHVzdGVycyBhbmQgdGhyZWFk cyB3aWxsIGRlZmF1bHQgdG8gMSBpZiB0aGV5IGFyZSBub3QgcHJvdmlkZWQuDQo+ID4+ICsgKiBT b2NrZXRzIGFuZCBjb3JlcyBtdXN0IGJlIGVpdGhlciBib3RoIHByb3ZpZGVkIG9yIGJvdGggbm90 Lg0KPiA+PiAgICAqDQo+ID4+ICAgICogTm90ZSwgaWYgbmVpdGhlciBzb2NrZXRzIG5vciBjb3Jl cyBhcmUgc3BlY2lmaWVkLCB3ZSB3aWxsIGNhbGN1bGF0ZQ0KPiA+PiAgICAqIGFsbCB0aGUgbWlz c2luZyB2YWx1ZXMganVzdCBsaWtlIHNtcF9wYXJzZSgpIGRvZXMsIGJ1dCB3aWxsIGRpc2FibGUN Cj4gPj4gQEAgLTI2NTIsMTUgKzI2NTIsMTggQEAgc3RhdGljIGludCB2aXJ0X2t2bV90eXBlKE1h Y2hpbmVTdGF0ZSAqbXMsIGNvbnN0IGNoYXINCj4gPj4gKnR5cGVfc3RyKQ0KPiA+PiAgIHN0YXRp YyB2b2lkIHZpcnRfc21wX3BhcnNlKE1hY2hpbmVTdGF0ZSAqbXMsIFFlbXVPcHRzICpvcHRzKQ0K PiA+PiAgIHsNCj4gPj4gICAgICAgVmlydE1hY2hpbmVDbGFzcyAqdm1jID0gVklSVF9NQUNISU5F X0dFVF9DTEFTUyhtcyk7DQo+ID4+ICsgICAgVmlydE1hY2hpbmVTdGF0ZSAqdm1zID0gVklSVF9N QUNISU5FKG1zKTsNCj4gPj4NCj4gPj4gICAgICAgaWYgKG9wdHMpIHsNCj4gPj4gICAgICAgICAg IHVuc2lnbmVkIGNwdXMgPSBxZW11X29wdF9nZXRfbnVtYmVyKG9wdHMsICJjcHVzIiwgMCk7DQo+ ID4+ICAgICAgICAgICB1bnNpZ25lZCBtYXhjcHVzID0gcWVtdV9vcHRfZ2V0X251bWJlcihvcHRz LCAibWF4Y3B1cyIsIDApOw0KPiA+PiAgICAgICAgICAgdW5zaWduZWQgc29ja2V0cyA9IHFlbXVf b3B0X2dldF9udW1iZXIob3B0cywgInNvY2tldHMiLCAwKTsNCj4gPj4gKyAgICAgICAgdW5zaWdu ZWQgY2x1c3RlcnMgPSBxZW11X29wdF9nZXRfbnVtYmVyKG9wdHMsICJjbHVzdGVycyIsIDApOw0K PiA+PiAgICAgICAgICAgdW5zaWduZWQgY29yZXMgPSBxZW11X29wdF9nZXRfbnVtYmVyKG9wdHMs ICJjb3JlcyIsIDApOw0KPiA+PiAgICAgICAgICAgdW5zaWduZWQgdGhyZWFkcyA9IHFlbXVfb3B0 X2dldF9udW1iZXIob3B0cywgInRocmVhZHMiLCAwKTsNCj4gPj4NCj4gPj4gLSAgICAgICAgLyog RGVmYXVsdCB0aHJlYWRzIHRvIDEgaWYgbm90IHByb3ZpZGVkICovDQo+ID4+ICsgICAgICAgIC8q IERlZmF1bHQgY2x1c3RlcnMgYW5kIHRocmVhZHMgdG8gMSBpZiBub3QgcHJvdmlkZWQgKi8NCj4g Pj4gKyAgICAgICAgY2x1c3RlcnMgPSBjbHVzdGVycyA+IDAgPyBjbHVzdGVycyA6IDE7DQo+ID4+ ICAgICAgICAgICB0aHJlYWRzID0gdGhyZWFkcyA+IDAgPyB0aHJlYWRzIDogMTsNCj4gPj4NCj4g Pj4gICAgICAgICAgIGlmIChjcHVzID09IDAgJiYgbWF4Y3B1cyA9PSAwKSB7DQo+ID4+IEBAIC0y Njc2LDEzICsyNjc5LDEzIEBAIHN0YXRpYyB2b2lkIHZpcnRfc21wX3BhcnNlKE1hY2hpbmVTdGF0 ZSAqbXMsIFFlbXVPcHRzDQo+ID4+ICpvcHRzKQ0KPiA+PiAgICAgICAgICAgICAgIGNvcmVzID0g MTsNCj4gPj4gICAgICAgICAgICAgICBpZiAoY3B1cyA9PSAwKSB7DQo+ID4+ICAgICAgICAgICAg ICAgICAgIHNvY2tldHMgPSAxOw0KPiA+PiAtICAgICAgICAgICAgICAgIGNwdXMgPSBzb2NrZXRz ICogY29yZXMgKiB0aHJlYWRzOw0KPiA+PiArICAgICAgICAgICAgICAgIGNwdXMgPSBzb2NrZXRz ICogY2x1c3RlcnMgKiBjb3JlcyAqIHRocmVhZHM7DQo+ID4+ICAgICAgICAgICAgICAgfSBlbHNl IHsNCj4gPj4gICAgICAgICAgICAgICAgICAgbWF4Y3B1cyA9IG1heGNwdXMgPiAwID8gbWF4Y3B1 cyA6IGNwdXM7DQo+ID4+IC0gICAgICAgICAgICAgICAgc29ja2V0cyA9IG1heGNwdXMgLyAoY29y ZXMgKiB0aHJlYWRzKTsNCj4gPj4gKyAgICAgICAgICAgICAgICBzb2NrZXRzID0gbWF4Y3B1cyAv IChjbHVzdGVycyAqIGNvcmVzICogdGhyZWFkcyk7DQo+ID4+ICAgICAgICAgICAgICAgfQ0KPiA+ PiAgICAgICAgICAgfSBlbHNlIGlmIChzb2NrZXRzID4gMCAmJiBjb3JlcyA+IDApIHsNCj4gPj4g LSAgICAgICAgICAgIGNwdXMgPSBjcHVzID4gMCA/IGNwdXMgOiBzb2NrZXRzICogY29yZXMgKiB0 aHJlYWRzOw0KPiA+PiArICAgICAgICAgICAgY3B1cyA9IGNwdXMgPiAwID8gY3B1cyA6IHNvY2tl dHMgKiBjbHVzdGVycyAqIGNvcmVzICogdGhyZWFkczsNCj4gPj4gICAgICAgICAgICAgICBtYXhj cHVzID0gbWF4Y3B1cyA+IDAgPyBtYXhjcHVzIDogY3B1czsNCj4gPj4gICAgICAgICAgIH0gZWxz ZSB7DQo+ID4+ICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJzb2NrZXRzIGFuZCBjb3JlcyBt dXN0IGJlIGJvdGggcHJvdmlkZWQgIg0KPiA+PiBAQCAtMjY5NSwyNSArMjY5OCwyNiBAQCBzdGF0 aWMgdm9pZCB2aXJ0X3NtcF9wYXJzZShNYWNoaW5lU3RhdGUgKm1zLCBRZW11T3B0cw0KPiA+PiAq b3B0cykNCj4gPj4gICAgICAgICAgICAgICBleGl0KDEpOw0KPiA+PiAgICAgICAgICAgfQ0KPiA+ Pg0KPiA+PiAtICAgICAgICBpZiAoc29ja2V0cyAqIGNvcmVzICogdGhyZWFkcyA8IGNwdXMpIHsN Cj4gPj4gKyAgICAgICAgaWYgKHNvY2tldHMgKiBjbHVzdGVycyAqIGNvcmVzICogdGhyZWFkcyA8 IGNwdXMpIHsNCj4gPj4gICAgICAgICAgICAgICBlcnJvcl9yZXBvcnQoImNwdSB0b3BvbG9neTog Ig0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXRzICgldSkgKiBjb3JlcyAo JXUpICogdGhyZWFkcyAoJXUpIDwgIg0KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICJz bXBfY3B1cyAoJXUpIiwNCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzLCBj b3JlcywgdGhyZWFkcywgY3B1cyk7DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgInNv Y2tldHMgKCV1KSAqIGNsdXN0ZXJzICgldSkgKiBjb3JlcyAoJXUpICogIg0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICJ0aHJlYWRzICgldSkgPCBzbXBfY3B1cyAoJXUpIiwNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzLCBjbHVzdGVycywgY29yZXMsIHRocmVh ZHMsIGNwdXMpOw0KPiA+PiAgICAgICAgICAgICAgIGV4aXQoMSk7DQo+ID4+ICAgICAgICAgICB9 DQo+ID4+DQo+ID4+IC0gICAgICAgIGlmIChzb2NrZXRzICogY29yZXMgKiB0aHJlYWRzICE9IG1h eGNwdXMpIHsNCj4gPj4gKyAgICAgICAgaWYgKHNvY2tldHMgKiBjbHVzdGVycyAqIGNvcmVzICog dGhyZWFkcyAhPSBtYXhjcHVzKSB7DQo+ID4+ICAgICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJj cHUgdG9wb2xvZ3k6ICINCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAic29ja2V0cyAo JXUpICogY29yZXMgKCV1KSAqIHRocmVhZHMgKCV1KSAiDQo+ID4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgIiE9IG1heGNwdXMgKCV1KSIsDQo+ID4+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgc29ja2V0cywgY29yZXMsIHRocmVhZHMsIG1heGNwdXMpOw0KPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICJzb2NrZXRzICgldSkgKiBjbHVzdGVycyAoJXUpICogY29yZXMgKCV1KSAq ICINCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAidGhyZWFkcyAoJXUpICE9IG1heGNw dXMgKCV1KSIsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0cywgY2x1c3Rl cnMsIGNvcmVzLCB0aHJlYWRzLCBtYXhjcHVzKTsNCj4gPj4gICAgICAgICAgICAgICBleGl0KDEp Ow0KPiA+PiAgICAgICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgICAgICAgbXMtPnNtcC5jcHVzID0g Y3B1czsNCj4gPj4gICAgICAgICAgIG1zLT5zbXAubWF4X2NwdXMgPSBtYXhjcHVzOw0KPiA+PiAg ICAgICAgICAgbXMtPnNtcC5zb2NrZXRzID0gc29ja2V0czsNCj4gPj4gKyAgICAgICAgdm1zLT5z bXBfY2x1c3RlcnMgPSBjbHVzdGVyczsNCj4gPg0KPiA+IFRoaXMgdmFyaWFibGUgbmFtaW5nICpz bXBfY2x1c3RlcnMqIGxvb2tzIG91dC1vZi1zb3J0cy4gSSB0aG91Z2h0IGEgc2ltaWxhcg0KPiA+ IHZhcmlhYmxlICpzbXBfY3B1cyogd2FzIGRlc3RpbmVkIHRvIGJlIHJlbW92ZWQgZm9yIHRoZSBy ZWFzb24gZ2l2ZW4gaW4gYmVsb3cNCj4gPiBsaW5rIC0gYSBwYXRjaCBieSBBbmRyZXcgSm9uZXM/ DQo+ID4NCj4gPiBMaW5rOiBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUt YXJtLzIwMjAtMTIvbXNnMDA0MTguaHRtbA0KPiA+DQo+ID4gQW0gSSBtaXNzaW5nIGFueXRoaW5n IGhlcmU/DQo+IFRoZSBzbXBfY2x1c3RlcnMgaXMgYWRkZWQgaW4gVmlydE1hY2hpbmVTdGF0ZSBh bmQgbm93aGVyZSBlbHNlIGJlY2F1c2UNCj4gaXQncyBjdXJyZW50bHkgb25seSB1c2VkIGZvciBB Uk0uIEJ1dCBJIHRoaW5rIG1heWJlIEkgc2hvdWxkIGFsc28gbW92ZSBpdCB0bw0KPiBDcHVUb3Bv bG9neSBzdHJ1Y3R1cmUgbGlrZSBbMV0gaXMgZG9pbmcgdG8gbW92ZSBkaWVzIHRvIENwdVRvcG9s b2d5Lg0KDQp5ZXMsIHRoYXTigJlzIHRoZSBpZGVhLiBJdCBpcyBhbHdheXMgZ29vZCB0byBoYXZl IHJpZ2h0IHBsYWNlIGhvbGRlcnMgc28gdGhhdA0KdGhlIGNvZGUgY29tcHJlaGVuc2lvbi91c2Fn ZShpbiB0aGlzIGNhc2UpIGJlY29tZXMgZWFzeSBhbmQgb2J2aW91cy4gDQoNCg0KPiANCj4gTW92 ZSBjbHVzdGVycyB0byBDcHVUb3BvbG9neSB3b24ndCBhZmZlY3Qgb3RoZXIgYXJjaGl0ZWN0dXJl cyB0aGF0IGRvbid0DQo+IHN1cHBvcnQgaXQgeWV0LCBhbmQgd2lsbCBhbHNvIG1ha2UgaXQgZWFz eSBpZiB0aGV5IHdhbnQgdG8gaW4gdGhlIGZ1dHVyZS4NCj4gDQo+IFsxXSBGcm9tIFBhb2xvOg0K PiBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvcWVtdS1kZXZlbC9wYXRjaC8y MDIxMDUxMzE2MjkwMS4xMzEwMjMNCj4gOS0xMC1wYm9uemluaUByZWRoYXQuY29tLw0KDQpzdXJl Lg0KDQoNCj4gDQo+IFRoYW5rcywNCj4gWWFuYW4NCj4gPiBTYWxpbC4NCj4gPg0KPiA+PiAgICAg ICAgICAgbXMtPnNtcC5jb3JlcyA9IGNvcmVzOw0KPiA+PiAgICAgICAgICAgbXMtPnNtcC50aHJl YWRzID0gdGhyZWFkczsNCj4gPj4gICAgICAgfQ0K