From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7BDE87FBA5; Wed, 17 Apr 2024 10:39:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.176.79.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713350393; cv=none; b=VNvkEAuIgC1Mn0/GztA7VGAn01ETMRSDn6z+1xab/3cWNaEspIlVJy5qWQmMBhPdfVoNloFNQQS6lpT20XtY5nnOA5+hH3tDpa2ShkAT5OHOud5sr+ZVPzebQ48fQIx/IdZs9hNhqtbHVur4/pyDTlIBZYz0qN3/hZrJ7lwqS6U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713350393; c=relaxed/simple; bh=/XtRZN0ydfLzBjIUi0ukfwL5IcMWRM7rSQeDti6Shk4=; h=Date:From:To:CC:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MZYd/WKq26C/0akH9rRqqwpRE66PMU7omzIKlWlozD3M4dDO3ZfaiCDKTsbMcPWX8PWS7v1HGWwMJCrMZRwXUBCcCgk2ApA66/6MIUfgH1vVigARSUFA4+GjEy8jWt0wcPgGSf9ztz6bEt0t6yKAMrIgiytYYdFjxdrOlhVT1tQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=Huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=185.176.79.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=Huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.18.186.216]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4VKHRc1ST4z6JB7k; Wed, 17 Apr 2024 18:37:48 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id C2D22140A46; Wed, 17 Apr 2024 18:39:47 +0800 (CST) Received: from localhost (10.202.227.76) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 17 Apr 2024 11:39:47 +0100 Date: Wed, 17 Apr 2024 11:39:46 +0100 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Thomas Gleixner , "Russell King (Oracle)" , , , , , , , , , Miguel Luis , James Morse , Salil Mehta , "Jean-Philippe Brucker" , Catalin Marinas , Will Deacon , , , Subject: Re: [PATCH v5 03/18] ACPI: processor: Register deferred CPUs from acpi_processor_get_info() Message-ID: <20240417113946.00000edb@Huawei.com> In-Reply-To: References: <20240412143719.11398-1-Jonathan.Cameron@huawei.com> <20240412143719.11398-4-Jonathan.Cameron@huawei.com> <87bk6ez4hj.ffs@tglx> <878r1iyxkr.ffs@tglx> <20240415094552.000008d7@Huawei.com> <20240415125649.00001354@huawei.com> <20240415132351.00007439@huawei.com> <20240416184116.0000513c@huawei.com> Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: lhrpeml100005.china.huawei.com (7.191.160.25) To lhrpeml500005.china.huawei.com (7.191.163.240) On Tue, 16 Apr 2024 21:02:02 +0200 "Rafael J. Wysocki" wrote: > On Tue, Apr 16, 2024 at 7:41=E2=80=AFPM Jonathan Cameron > wrote: > > > > On Mon, 15 Apr 2024 13:23:51 +0100 > > Jonathan Cameron wrote: > > =20 > > > On Mon, 15 Apr 2024 14:04:26 +0200 > > > "Rafael J. Wysocki" wrote: =20 >=20 > [cut] >=20 > > > > > I'm still very much stuck on the hotadd_init flag however, so any= suggestions > > > > > on that would be very welcome! =20 > > > > > > > > I need to do some investigation which will take some time I suppose= . =20 > > > > > > I'll do so as well once I've gotten the rest sorted out. That whole > > > structure seems overly complex and liable to race, though maybe suffi= cient > > > locking happens to be held that it's not a problem. =20 > > > > Back to this a (maybe) last outstanding problem. > > > > Superficially I think we might be able to get around this by always > > doing the setup in the initial online. In brief that looks something the > > below code. Relying on the cpu hotplug callback registration calling > > the acpi_soft_cpu_online for all instances that are already online. > > > > Very lightly tested on arm64 and x86 with cold and hotplugged CPUs. > > However this is all in emulation and I don't have access to any signifi= cant > > x86 test farms :( So help will be needed if it's not immediately obviou= s why > > we can't do this. =20 >=20 > AFAICS, this should work. At least I don't see why it wouldn't. >=20 > > Of course, I'm open to other suggestions! > > > > For now I'll put a tidied version of this one is as an RFC with the res= t of v6. > > > > diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processo= r.c > > index 06e718b650e5..97ca53b516d0 100644 > > --- a/drivers/acpi/acpi_processor.c > > +++ b/drivers/acpi/acpi_processor.c > > @@ -340,7 +340,7 @@ static int acpi_processor_get_info(struct acpi_devi= ce *device) > > */ > > per_cpu(processor_device_array, pr->id) =3D device; > > per_cpu(processors, pr->id) =3D pr; > > - > > + pr->flags.need_hotplug_init =3D 1; > > /* > > * Extra Processor objects may be enumerated on MP systems with > > * less than the max # of CPUs. They should be ignored _iff > > diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_d= river.c > > index 67db60eda370..930f911fc435 100644 > > --- a/drivers/acpi/processor_driver.c > > +++ b/drivers/acpi/processor_driver.c > > @@ -206,7 +206,7 @@ static int acpi_processor_start(struct device *dev) > > > > /* Protect against concurrent CPU hotplug operations */ > > cpu_hotplug_disable(); > > - ret =3D __acpi_processor_start(device); > > + // ret =3D __acpi_processor_start(device); > > cpu_hotplug_enable(); > > return ret; > > } =20 >=20 > So it looks like acpi_processor_start() is not necessary any more, is it? Absolutely. This needs cleaning up beyond this hack. Given pr has been initialized to 0, flipping the flag to be something like 'initialized' and having the driver set it on first online rather than in acpi_processor.c will clean it up further. Jonathan >=20 > > @@ -279,7 +279,7 @@ static int __init acpi_processor_driver_init(void) > > if (result < 0) > > return result; > > > > - result =3D cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, > > + result =3D cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, > > "acpi/cpu-drv:online", > > acpi_soft_cpu_online, NULL); > > if (result < 0) =20 > > > > > > Jonathan =20 >=20 > Thanks! 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B83E7C4345F for ; Wed, 17 Apr 2024 10:40:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:CC:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=wA3P/FzaEtcaUbOK7CKgofGTC4EsxwOJMrb/TuQ8SLk=; b=yC528YVYW9BVuZ O//GHVi1C22AB9/XPmHz4ZGFSORzUNn7LBklJmd/Of857RGTovjq//naRWgMggeQSvbyXfHG2A8a3 MgpR+sDEinih4LgNc1YYqj7HkACb4dtMBAVrBLxD5cKALT5RgVjwuBF7ojKXiymDHpQmfehNNe/pe b6ACsDdIFbdPVFjdTB/9jqZLQeRUT+IYNdH+FLUJQgkZemsFemBdMC1C0dhd1CUD74EOq2MvMvPJM MVTl6b+xUPm2SGdFi0MxBNh/OHl45BSb+y9/PNb6nR2SF7YYJFHfbwbTCpVPK4EsHdhXgSNSpo4Uj 53stQ4SsaDPll7LXScdA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rx2hm-0000000Fdv0-1Q8A; Wed, 17 Apr 2024 10:39:54 +0000 Received: from frasgout.his.huawei.com ([185.176.79.56]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rx2hj-0000000Fdtt-11Ur for linux-arm-kernel@lists.infradead.org; Wed, 17 Apr 2024 10:39:53 +0000 Received: from mail.maildlp.com (unknown [172.18.186.216]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4VKHRc1ST4z6JB7k; Wed, 17 Apr 2024 18:37:48 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id C2D22140A46; Wed, 17 Apr 2024 18:39:47 +0800 (CST) Received: from localhost (10.202.227.76) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 17 Apr 2024 11:39:47 +0100 Date: Wed, 17 Apr 2024 11:39:46 +0100 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Thomas Gleixner , "Russell King (Oracle)" , , , , , , , , , Miguel Luis , James Morse , Salil Mehta , "Jean-Philippe Brucker" , Catalin Marinas , Will Deacon , , , Subject: Re: [PATCH v5 03/18] ACPI: processor: Register deferred CPUs from acpi_processor_get_info() Message-ID: <20240417113946.00000edb@Huawei.com> In-Reply-To: References: <20240412143719.11398-1-Jonathan.Cameron@huawei.com> <20240412143719.11398-4-Jonathan.Cameron@huawei.com> <87bk6ez4hj.ffs@tglx> <878r1iyxkr.ffs@tglx> <20240415094552.000008d7@Huawei.com> <20240415125649.00001354@huawei.com> <20240415132351.00007439@huawei.com> <20240416184116.0000513c@huawei.com> Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.202.227.76] X-ClientProxiedBy: lhrpeml100005.china.huawei.com (7.191.160.25) To lhrpeml500005.china.huawei.com (7.191.163.240) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240417_033951_673577_DA6BF04A X-CRM114-Status: GOOD ( 32.67 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVHVlLCAxNiBBcHIgMjAyNCAyMTowMjowMiArMDIwMAoiUmFmYWVsIEouIFd5c29ja2kiIDxy YWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6Cgo+IE9uIFR1ZSwgQXByIDE2LCAyMDI0IGF0IDc6NDHi gK9QTSBKb25hdGhhbiBDYW1lcm9uCj4gPEpvbmF0aGFuLkNhbWVyb25AaHVhd2VpLmNvbT4gd3Jv dGU6Cj4gPgo+ID4gT24gTW9uLCAxNSBBcHIgMjAyNCAxMzoyMzo1MSArMDEwMAo+ID4gSm9uYXRo YW4gQ2FtZXJvbiA8Sm9uYXRoYW4uQ2FtZXJvbkBodWF3ZWkuY29tPiB3cm90ZToKPiA+ICAKPiA+ ID4gT24gTW9uLCAxNSBBcHIgMjAyNCAxNDowNDoyNiArMDIwMAo+ID4gPiAiUmFmYWVsIEouIFd5 c29ja2kiIDxyYWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6ICAKPiAKPiBbY3V0XQo+IAo+ID4gPiA+ ID4gSSdtIHN0aWxsIHZlcnkgbXVjaCBzdHVjayBvbiB0aGUgaG90YWRkX2luaXQgZmxhZyBob3dl dmVyLCBzbyBhbnkgc3VnZ2VzdGlvbnMKPiA+ID4gPiA+IG9uIHRoYXQgd291bGQgYmUgdmVyeSB3 ZWxjb21lISAgCj4gPiA+ID4KPiA+ID4gPiBJIG5lZWQgdG8gZG8gc29tZSBpbnZlc3RpZ2F0aW9u IHdoaWNoIHdpbGwgdGFrZSBzb21lIHRpbWUgSSBzdXBwb3NlLiAgCj4gPiA+Cj4gPiA+IEknbGwg ZG8gc28gYXMgd2VsbCBvbmNlIEkndmUgZ290dGVuIHRoZSByZXN0IHNvcnRlZCBvdXQuICBUaGF0 IHdob2xlCj4gPiA+IHN0cnVjdHVyZSBzZWVtcyBvdmVybHkgY29tcGxleCBhbmQgbGlhYmxlIHRv IHJhY2UsIHRob3VnaCBtYXliZSBzdWZmaWNpZW50Cj4gPiA+IGxvY2tpbmcgaGFwcGVucyB0byBi ZSBoZWxkIHRoYXQgaXQncyBub3QgYSBwcm9ibGVtLiAgCj4gPgo+ID4gQmFjayB0byB0aGlzIGEg KG1heWJlKSBsYXN0IG91dHN0YW5kaW5nIHByb2JsZW0uCj4gPgo+ID4gU3VwZXJmaWNpYWxseSBJ IHRoaW5rIHdlIG1pZ2h0IGJlIGFibGUgdG8gZ2V0IGFyb3VuZCB0aGlzIGJ5IGFsd2F5cwo+ID4g ZG9pbmcgdGhlIHNldHVwIGluIHRoZSBpbml0aWFsIG9ubGluZS4gSW4gYnJpZWYgdGhhdCBsb29r cyBzb21ldGhpbmcgdGhlCj4gPiBiZWxvdyBjb2RlLiAgUmVseWluZyBvbiB0aGUgY3B1IGhvdHBs dWcgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGNhbGxpbmcKPiA+IHRoZSBhY3BpX3NvZnRfY3B1X29u bGluZSBmb3IgYWxsIGluc3RhbmNlcyB0aGF0IGFyZSBhbHJlYWR5IG9ubGluZS4KPiA+Cj4gPiBW ZXJ5IGxpZ2h0bHkgdGVzdGVkIG9uIGFybTY0IGFuZCB4ODYgd2l0aCBjb2xkIGFuZCBob3RwbHVn Z2VkIENQVXMuCj4gPiBIb3dldmVyIHRoaXMgaXMgYWxsIGluIGVtdWxhdGlvbiBhbmQgSSBkb24n dCBoYXZlIGFjY2VzcyB0byBhbnkgc2lnbmlmaWNhbnQKPiA+IHg4NiB0ZXN0IGZhcm1zIDooIFNv IGhlbHAgd2lsbCBiZSBuZWVkZWQgaWYgaXQncyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cyB3aHkK PiA+IHdlIGNhbid0IGRvIHRoaXMuICAKPiAKPiBBRkFJQ1MsIHRoaXMgc2hvdWxkIHdvcmsuICBB dCBsZWFzdCBJIGRvbid0IHNlZSB3aHkgaXQgd291bGRuJ3QuCj4gCj4gPiBPZiBjb3Vyc2UsIEkn bSBvcGVuIHRvIG90aGVyIHN1Z2dlc3Rpb25zIQo+ID4KPiA+IEZvciBub3cgSSdsbCBwdXQgYSB0 aWRpZWQgdmVyc2lvbiBvZiB0aGlzIG9uZSBpcyBhcyBhbiBSRkMgd2l0aCB0aGUgcmVzdCBvZiB2 Ni4KPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmMgYi9k cml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ID4gaW5kZXggMDZlNzE4YjY1MGU1Li45N2Nh NTNiNTE2ZDAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ ID4gKysrIGIvZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmMKPiA+IEBAIC0zNDAsNyArMzQw LDcgQEAgc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9nZXRfaW5mbyhzdHJ1Y3QgYWNwaV9kZXZp Y2UgKmRldmljZSkKPiA+ICAgICAgICAgICovCj4gPiAgICAgICAgIHBlcl9jcHUocHJvY2Vzc29y X2RldmljZV9hcnJheSwgcHItPmlkKSA9IGRldmljZTsKPiA+ICAgICAgICAgcGVyX2NwdShwcm9j ZXNzb3JzLCBwci0+aWQpID0gcHI7Cj4gPiAtCj4gPiArICAgICAgIHByLT5mbGFncy5uZWVkX2hv dHBsdWdfaW5pdCA9IDE7Cj4gPiAgICAgICAgIC8qCj4gPiAgICAgICAgICAqICBFeHRyYSBQcm9j ZXNzb3Igb2JqZWN0cyBtYXkgYmUgZW51bWVyYXRlZCBvbiBNUCBzeXN0ZW1zIHdpdGgKPiA+ICAg ICAgICAgICogIGxlc3MgdGhhbiB0aGUgbWF4ICMgb2YgQ1BVcy4gVGhleSBzaG91bGQgYmUgaWdu b3JlZCBfaWZmCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9kcml2ZXIu YyBiL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfZHJpdmVyLmMKPiA+IGluZGV4IDY3ZGI2MGVkYTM3 MC4uOTMwZjkxMWZjNDM1IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9k cml2ZXIuYwo+ID4gKysrIGIvZHJpdmVycy9hY3BpL3Byb2Nlc3Nvcl9kcml2ZXIuYwo+ID4gQEAg LTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgaW50IGFjcGlfcHJvY2Vzc29yX3N0YXJ0KHN0cnVjdCBk ZXZpY2UgKmRldikKPiA+Cj4gPiAgICAgICAgIC8qIFByb3RlY3QgYWdhaW5zdCBjb25jdXJyZW50 IENQVSBob3RwbHVnIG9wZXJhdGlvbnMgKi8KPiA+ICAgICAgICAgY3B1X2hvdHBsdWdfZGlzYWJs ZSgpOwo+ID4gLSAgICAgICByZXQgPSBfX2FjcGlfcHJvY2Vzc29yX3N0YXJ0KGRldmljZSk7Cj4g PiArICAgICAgIC8vICAgICAgcmV0ID0gX19hY3BpX3Byb2Nlc3Nvcl9zdGFydChkZXZpY2UpOwo+ ID4gICAgICAgICBjcHVfaG90cGx1Z19lbmFibGUoKTsKPiA+ICAgICAgICAgcmV0dXJuIHJldDsK PiA+ICB9ICAKPiAKPiBTbyBpdCBsb29rcyBsaWtlIGFjcGlfcHJvY2Vzc29yX3N0YXJ0KCkgaXMg bm90IG5lY2Vzc2FyeSBhbnkgbW9yZSwgaXMgaXQ/CgpBYnNvbHV0ZWx5LiAgVGhpcyBuZWVkcyBj bGVhbmluZyB1cCBiZXlvbmQgdGhpcyBoYWNrLgoKR2l2ZW4gcHIgaGFzIGJlZW4gaW5pdGlhbGl6 ZWQgdG8gMCwgZmxpcHBpbmcgdGhlIGZsYWcgdG8gYmUgc29tZXRoaW5nCmxpa2UgJ2luaXRpYWxp emVkJyBhbmQgaGF2aW5nIHRoZSBkcml2ZXIgc2V0IGl0IG9uIGZpcnN0IG9ubGluZSByYXRoZXIg dGhhbgppbiBhY3BpX3Byb2Nlc3Nvci5jIHdpbGwgY2xlYW4gaXQgdXAgZnVydGhlci4KCkpvbmF0 aGFuCj4gCj4gPiBAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGFjcGlfcHJv Y2Vzc29yX2RyaXZlcl9pbml0KHZvaWQpCj4gPiAgICAgICAgIGlmIChyZXN1bHQgPCAwKQo+ID4g ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cj4gPgo+ID4gLSAgICAgICByZXN1bHQgPSBj cHVocF9zZXR1cF9zdGF0ZV9ub2NhbGxzKENQVUhQX0FQX09OTElORV9EWU4sCj4gPiArICAgICAg IHJlc3VsdCA9IGNwdWhwX3NldHVwX3N0YXRlKENQVUhQX0FQX09OTElORV9EWU4sCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjcGkvY3B1LWRydjpvbmxp bmUiLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlf c29mdF9jcHVfb25saW5lLCBOVUxMKTsKPiA+ICAgICAgICAgaWYgKHJlc3VsdCA8IDApICAKPiA+ ID4KPiA+ID4gSm9uYXRoYW4gIAo+IAo+IFRoYW5rcyEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==