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=-4.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, URIBL_DBL_ABUSE_MALW,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 0390FC35247 for ; Wed, 5 Feb 2020 15:37:26 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (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 78B0620730 for ; Wed, 5 Feb 2020 15:37:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 78B0620730 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 48CQfq02SyzDqSh for ; Thu, 6 Feb 2020 02:37:23 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=arm.com (client-ip=217.140.110.172; helo=foss.arm.com; envelope-from=qais.yousef@arm.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lists.ozlabs.org (Postfix) with ESMTP id 48CQcb5XJGzDq83 for ; Thu, 6 Feb 2020 02:35:18 +1100 (AEDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8917B31B; Wed, 5 Feb 2020 07:35:15 -0800 (PST) Received: from e107158-lin.cambridge.arm.com (e107158-lin.cambridge.arm.com [10.1.195.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 86EA23F68E; Wed, 5 Feb 2020 07:35:09 -0800 (PST) Date: Wed, 5 Feb 2020 15:35:07 +0000 From: Qais Yousef To: Thomas Gleixner , Greg Kroah-Hartman Subject: Re: [PATCH v2 00/14] Convert cpu_up/down to device_online/offline Message-ID: <20200205153505.bkib7pxnib3x24tx@e107158-lin.cambridge.arm.com> References: <20191125112754.25223-1-qais.yousef@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20191125112754.25223-1-qais.yousef@arm.com> User-Agent: NeoMutt/20171215 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , x86@kernel.org, linux-ia64@vger.kernel.org, "Rafael J. Wysocki" , "Peter Zijlstra \(Intel\)" , Ram Pai , linux-kernel@vger.kernel.org, "James E.J. Bottomley" , Richard Fontana , Nadav Amit , "H. Peter Anvin" , sparclinux@vger.kernel.org, Will Deacon , Ingo Molnar , Davidlohr Bueso , Helge Deller , Daniel Lezcano , Russell King , Eiichi Tsukata , Catalin Marinas , xen-devel@lists.xenproject.org, Fenghua Yu , Juergen Gross , "Paul E. McKenney" , Josh Triplett , Nicholas Piggin , Lorenzo Pieralisi , Borislav Petkov , Josh Poimboeuf , Bjorn Helgaas , Boris Ostrovsky , Pavankumar Kondeti , linux-arm-kernel@lists.infradead.org, Tony Luck , linux-parisc@vger.kernel.org, Steve Capper , Jiri Kosina , linuxppc-dev@lists.ozlabs.org, Zhenzhong Duan , Armijn Hemel , James Morse , Stefano Stabellini , Sakari Ailus , Paul Mackerras , Enrico Weigelt , "David S. Miller" , Thiago Jung Bauermann Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Hi Thomas On 11/25/19 11:27, Qais Yousef wrote: > Changes in v2: > * Add 2 new patches that create smp_shutdown_nonboot_cpus() to be used > in machine_shutdown() in ia64, arm and arm64 > * Use proper kernel-doc for the newly introduced functions > * Renamed a function > * Removed a stale comment in a function > * Rebased on top of 5.4-rc8 > > git clone git://linux-arm.org/linux-qy.git -b cpu-hp-cleanup-v2 I want to spin v3 to address Russel's comments. If you have any feedback it'd be great to have them before I spin v3. Thanks -- Qais Yousef > > Using cpu_up/down directly to bring cpus online/offline loses synchronization > with sysfs and could suffer from a race similar to what is described in > commit a6717c01ddc2 ("powerpc/rtas: use device model APIs and serialization > during LPM"). > > cpu_up/down seem to be more of a internal implementation detail for the cpu > subsystem to use to boot up cpus, perform suspend/resume and low level hotplug > operations. Users outside of the cpu subsystem would be better using the device > core API to bring a cpu online/offline which is the interface used to hotplug > memory and other system devices. > > Several users have already migrated to use the device core API, this series > converts the remaining users and hides cpu_up/down from internal users at the > end. > > I noticed this problem while working on a hack to disable offlining > a particular CPU but noticed that setting the offline_disabled attribute in the > device struct isn't enough because users can easily bypass the device core. > While my hack isn't a valid use case but it did highlight the inconsistency in > the way cpus are being onlined/offlined and this attempt hopefully improves on > this. > > The first 8 patches fix arch users. > > The remaining 6 patches fix generic code users. Particularly creating a new > special exported API for the device core to use instead of cpu_up/down. > > The last patch removes cpu_up/down from cpu.h and unexport the functions. > > In some cases where the use of cpu_up/down seemed legitimate, I encapsulated > the logic in a higher level - special purposed function; and converted the code > to use that instead. > > I did re-run the rcu torture, lock torture and psci checker tests and no > problem was noticed. I did perform build tests on all arch affected except for > parisc. > > Hopefully I got the CC list right for all the patches. Apologies in advance if > some people were omitted from some patches but they should have been CCed. > > CC: Armijn Hemel > CC: Benjamin Herrenschmidt > CC: Bjorn Helgaas > CC: Borislav Petkov > CC: Boris Ostrovsky > CC: Catalin Marinas > CC: Christophe Leroy > CC: Daniel Lezcano > CC: Davidlohr Bueso > CC: "David S. Miller" > CC: Eiichi Tsukata > CC: Enrico Weigelt > CC: Fenghua Yu > CC: Greg Kroah-Hartman > CC: Helge Deller > CC: "H. Peter Anvin" > CC: Ingo Molnar > CC: "James E.J. Bottomley" > CC: James Morse > CC: Jiri Kosina > CC: Josh Poimboeuf > CC: Josh Triplett > CC: Juergen Gross > CC: Lorenzo Pieralisi > CC: Mark Rutland > CC: Michael Ellerman > CC: Nadav Amit > CC: Nicholas Piggin > CC: "Paul E. McKenney" > CC: Paul Mackerras > CC: Pavankumar Kondeti > CC: "Peter Zijlstra (Intel)" > CC: "Rafael J. Wysocki" > CC: Ram Pai > CC: Richard Fontana > CC: Russell King > CC: Sakari Ailus > CC: Stefano Stabellini > CC: Steve Capper > CC: Thiago Jung Bauermann > CC: Thomas Gleixner > CC: Tony Luck > CC: Will Deacon > CC: Zhenzhong Duan > CC: linux-arm-kernel@lists.infradead.org > CC: linux-ia64@vger.kernel.org > CC: linux-kernel@vger.kernel.org > CC: linux-parisc@vger.kernel.org > CC: linuxppc-dev@lists.ozlabs.org > CC: sparclinux@vger.kernel.org > CC: x86@kernel.org > CC: xen-devel@lists.xenproject.org > > > Qais Yousef (14): > smp: create a new function to shutdown nonboot cpus > ia64: Replace cpu_down with smp_shutdown_nonboot_cpus() > arm: arm64: Don't use disable_nonboot_cpus() > arm64: hibernate.c: create a new function to handle cpu_up(sleep_cpu) > x86: Replace cpu_up/down with devcie_online/offline > powerpc: Replace cpu_up/down with device_online/offline > sparc: Replace cpu_up/down with device_online/offline > parisc: Replace cpu_up/down with device_online/offline > driver: base: cpu: export device_online/offline > driver: xen: Replace cpu_up/down with device_online/offline > firmware: psci: Replace cpu_up/down with device_online/offline > torture: Replace cpu_up/down with device_online/offline > smp: Create a new function to bringup nonboot cpus online > cpu: Hide cpu_up/down > > arch/arm/kernel/reboot.c | 4 +- > arch/arm64/kernel/hibernate.c | 13 ++-- > arch/arm64/kernel/process.c | 4 +- > arch/ia64/kernel/process.c | 8 +-- > arch/parisc/kernel/processor.c | 4 +- > arch/powerpc/kernel/machine_kexec_64.c | 4 +- > arch/sparc/kernel/ds.c | 8 ++- > arch/x86/kernel/topology.c | 4 +- > arch/x86/mm/mmio-mod.c | 8 ++- > arch/x86/xen/smp.c | 4 +- > drivers/base/core.c | 4 ++ > drivers/base/cpu.c | 4 +- > drivers/firmware/psci/psci_checker.c | 6 +- > drivers/xen/cpu_hotplug.c | 2 +- > include/linux/cpu.h | 8 ++- > kernel/cpu.c | 85 ++++++++++++++++++++++++-- > kernel/smp.c | 9 +-- > kernel/torture.c | 15 +++-- > 18 files changed, 143 insertions(+), 51 deletions(-) > > -- > 2.17.1 > 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=-4.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, URIBL_DBL_ABUSE_MALW,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 E857CC35247 for ; Wed, 5 Feb 2020 15:35:48 +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 BE4B720658 for ; Wed, 5 Feb 2020 15:35:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BE4B720658 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.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 1izMhz-00018k-P2; Wed, 05 Feb 2020 15:35:19 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1izMhy-00018f-5c for xen-devel@lists.xenproject.org; Wed, 05 Feb 2020 15:35:18 +0000 X-Inumbo-ID: 1b68d07c-482d-11ea-b211-bc764e2007e4 Received: from foss.arm.com (unknown [217.140.110.172]) by us1-rack-iad1.inumbo.com (Halon) with ESMTP id 1b68d07c-482d-11ea-b211-bc764e2007e4; Wed, 05 Feb 2020 15:35:16 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8917B31B; Wed, 5 Feb 2020 07:35:15 -0800 (PST) Received: from e107158-lin.cambridge.arm.com (e107158-lin.cambridge.arm.com [10.1.195.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 86EA23F68E; Wed, 5 Feb 2020 07:35:09 -0800 (PST) Date: Wed, 5 Feb 2020 15:35:07 +0000 From: Qais Yousef To: Thomas Gleixner , Greg Kroah-Hartman Message-ID: <20200205153505.bkib7pxnib3x24tx@e107158-lin.cambridge.arm.com> References: <20191125112754.25223-1-qais.yousef@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191125112754.25223-1-qais.yousef@arm.com> User-Agent: NeoMutt/20171215 Subject: Re: [Xen-devel] [PATCH v2 00/14] Convert cpu_up/down to device_online/offline 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: Mark Rutland , x86@kernel.org, linux-ia64@vger.kernel.org, "Rafael J. Wysocki" , "Peter Zijlstra \(Intel\)" , Benjamin Herrenschmidt , Ram Pai , linux-kernel@vger.kernel.org, "James E.J. Bottomley" , Richard Fontana , Nadav Amit , "H. Peter Anvin" , sparclinux@vger.kernel.org, Will Deacon , Ingo Molnar , Davidlohr Bueso , Michael Ellerman , Helge Deller , Daniel Lezcano , Russell King , Eiichi Tsukata , Catalin Marinas , xen-devel@lists.xenproject.org, Fenghua Yu , Juergen Gross , "Paul E. McKenney" , Josh Triplett , Nicholas Piggin , Lorenzo Pieralisi , Borislav Petkov , Josh Poimboeuf , Bjorn Helgaas , Boris Ostrovsky , Pavankumar Kondeti , linux-arm-kernel@lists.infradead.org, Christophe Leroy , Tony Luck , linux-parisc@vger.kernel.org, Steve Capper , Jiri Kosina , linuxppc-dev@lists.ozlabs.org, Zhenzhong Duan , Armijn Hemel , James Morse , Stefano Stabellini , Sakari Ailus , Paul Mackerras , Enrico Weigelt , "David S. Miller" , Thiago Jung Bauermann Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SGkgVGhvbWFzCgpPbiAxMS8yNS8xOSAxMToyNywgUWFpcyBZb3VzZWYgd3JvdGU6Cj4gQ2hhbmdl cyBpbiB2MjoKPiAJKiBBZGQgMiBuZXcgcGF0Y2hlcyB0aGF0IGNyZWF0ZSBzbXBfc2h1dGRvd25f bm9uYm9vdF9jcHVzKCkgdG8gYmUgdXNlZAo+IAkgIGluIG1hY2hpbmVfc2h1dGRvd24oKSBpbiBp YTY0LCBhcm0gYW5kIGFybTY0Cj4gCSogVXNlIHByb3BlciBrZXJuZWwtZG9jIGZvciB0aGUgbmV3 bHkgaW50cm9kdWNlZCBmdW5jdGlvbnMKPiAJKiBSZW5hbWVkIGEgZnVuY3Rpb24KPiAJKiBSZW1v dmVkIGEgc3RhbGUgY29tbWVudCBpbiBhIGZ1bmN0aW9uCj4gCSogUmViYXNlZCBvbiB0b3Agb2Yg NS40LXJjOAo+IAo+IAlnaXQgY2xvbmUgZ2l0Oi8vbGludXgtYXJtLm9yZy9saW51eC1xeS5naXQg LWIgY3B1LWhwLWNsZWFudXAtdjIKCkkgd2FudCB0byBzcGluIHYzIHRvIGFkZHJlc3MgUnVzc2Vs J3MgY29tbWVudHMuIElmIHlvdSBoYXZlIGFueSBmZWVkYmFjayBpdCdkCmJlIGdyZWF0IHRvIGhh dmUgdGhlbSBiZWZvcmUgSSBzcGluIHYzLgoKVGhhbmtzCgotLQpRYWlzIFlvdXNlZgoKPiAKPiBV c2luZyBjcHVfdXAvZG93biBkaXJlY3RseSB0byBicmluZyBjcHVzIG9ubGluZS9vZmZsaW5lIGxv c2VzIHN5bmNocm9uaXphdGlvbgo+IHdpdGggc3lzZnMgYW5kIGNvdWxkIHN1ZmZlciBmcm9tIGEg cmFjZSBzaW1pbGFyIHRvIHdoYXQgaXMgZGVzY3JpYmVkIGluCj4gY29tbWl0IGE2NzE3YzAxZGRj MiAoInBvd2VycGMvcnRhczogdXNlIGRldmljZSBtb2RlbCBBUElzIGFuZCBzZXJpYWxpemF0aW9u Cj4gZHVyaW5nIExQTSIpLgo+IAo+IGNwdV91cC9kb3duIHNlZW0gdG8gYmUgbW9yZSBvZiBhIGlu dGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbCBmb3IgdGhlIGNwdQo+IHN1YnN5c3RlbSB0byB1 c2UgdG8gYm9vdCB1cCBjcHVzLCBwZXJmb3JtIHN1c3BlbmQvcmVzdW1lIGFuZCBsb3cgbGV2ZWwg aG90cGx1Zwo+IG9wZXJhdGlvbnMuIFVzZXJzIG91dHNpZGUgb2YgdGhlIGNwdSBzdWJzeXN0ZW0g d291bGQgYmUgYmV0dGVyIHVzaW5nIHRoZSBkZXZpY2UKPiBjb3JlIEFQSSB0byBicmluZyBhIGNw dSBvbmxpbmUvb2ZmbGluZSB3aGljaCBpcyB0aGUgaW50ZXJmYWNlIHVzZWQgdG8gaG90cGx1Zwo+ IG1lbW9yeSBhbmQgb3RoZXIgc3lzdGVtIGRldmljZXMuCj4gCj4gU2V2ZXJhbCB1c2VycyBoYXZl IGFscmVhZHkgbWlncmF0ZWQgdG8gdXNlIHRoZSBkZXZpY2UgY29yZSBBUEksIHRoaXMgc2VyaWVz Cj4gY29udmVydHMgdGhlIHJlbWFpbmluZyB1c2VycyBhbmQgaGlkZXMgY3B1X3VwL2Rvd24gZnJv bSBpbnRlcm5hbCB1c2VycyBhdCB0aGUKPiBlbmQuCj4gCj4gSSBub3RpY2VkIHRoaXMgcHJvYmxl bSB3aGlsZSB3b3JraW5nIG9uIGEgaGFjayB0byBkaXNhYmxlIG9mZmxpbmluZwo+IGEgcGFydGlj dWxhciBDUFUgYnV0IG5vdGljZWQgdGhhdCBzZXR0aW5nIHRoZSBvZmZsaW5lX2Rpc2FibGVkIGF0 dHJpYnV0ZSBpbiB0aGUKPiBkZXZpY2Ugc3RydWN0IGlzbid0IGVub3VnaCBiZWNhdXNlIHVzZXJz IGNhbiBlYXNpbHkgYnlwYXNzIHRoZSBkZXZpY2UgY29yZS4KPiBXaGlsZSBteSBoYWNrIGlzbid0 IGEgdmFsaWQgdXNlIGNhc2UgYnV0IGl0IGRpZCBoaWdobGlnaHQgdGhlIGluY29uc2lzdGVuY3kg aW4KPiB0aGUgd2F5IGNwdXMgYXJlIGJlaW5nIG9ubGluZWQvb2ZmbGluZWQgYW5kIHRoaXMgYXR0 ZW1wdCBob3BlZnVsbHkgaW1wcm92ZXMgb24KPiB0aGlzLgo+IAo+IFRoZSBmaXJzdCA4IHBhdGNo ZXMgZml4IGFyY2ggdXNlcnMuCj4gCj4gVGhlIHJlbWFpbmluZyA2IHBhdGNoZXMgZml4IGdlbmVy aWMgY29kZSB1c2Vycy4gUGFydGljdWxhcmx5IGNyZWF0aW5nIGEgbmV3Cj4gc3BlY2lhbCBleHBv cnRlZCBBUEkgZm9yIHRoZSBkZXZpY2UgY29yZSB0byB1c2UgaW5zdGVhZCBvZiBjcHVfdXAvZG93 bi4KPiAKPiBUaGUgbGFzdCBwYXRjaCByZW1vdmVzIGNwdV91cC9kb3duIGZyb20gY3B1LmggYW5k IHVuZXhwb3J0IHRoZSBmdW5jdGlvbnMuCj4gCj4gSW4gc29tZSBjYXNlcyB3aGVyZSB0aGUgdXNl IG9mIGNwdV91cC9kb3duIHNlZW1lZCBsZWdpdGltYXRlLCBJIGVuY2Fwc3VsYXRlZAo+IHRoZSBs b2dpYyBpbiBhIGhpZ2hlciBsZXZlbCAtIHNwZWNpYWwgcHVycG9zZWQgZnVuY3Rpb247IGFuZCBj b252ZXJ0ZWQgdGhlIGNvZGUKPiB0byB1c2UgdGhhdCBpbnN0ZWFkLgo+IAo+IEkgZGlkIHJlLXJ1 biB0aGUgcmN1IHRvcnR1cmUsIGxvY2sgdG9ydHVyZSBhbmQgcHNjaSBjaGVja2VyIHRlc3RzIGFu ZCBubwo+IHByb2JsZW0gd2FzIG5vdGljZWQuIEkgZGlkIHBlcmZvcm0gYnVpbGQgdGVzdHMgb24g YWxsIGFyY2ggYWZmZWN0ZWQgZXhjZXB0IGZvcgo+IHBhcmlzYy4KPiAKPiBIb3BlZnVsbHkgSSBn b3QgdGhlIENDIGxpc3QgcmlnaHQgZm9yIGFsbCB0aGUgcGF0Y2hlcy4gQXBvbG9naWVzIGluIGFk dmFuY2UgaWYKPiBzb21lIHBlb3BsZSB3ZXJlIG9taXR0ZWQgZnJvbSBzb21lIHBhdGNoZXMgYnV0 IHRoZXkgc2hvdWxkIGhhdmUgYmVlbiBDQ2VkLgo+IAo+IENDOiBBcm1pam4gSGVtZWwgPGFybWlq bkB0amFsZHVyLm5sPgo+IENDOiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5j cmFzaGluZy5vcmc+Cj4gQ0M6IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+Cj4g Q0M6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPgo+IENDOiBCb3JpcyBPc3Ryb3Zza3kg PGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgo+IENDOiBDYXRhbGluIE1hcmluYXMgPGNhdGFs aW4ubWFyaW5hc0Bhcm0uY29tPgo+IENDOiBDaHJpc3RvcGhlIExlcm95IDxjaHJpc3RvcGhlLmxl cm95QGMtcy5mcj4KPiBDQzogRGFuaWVsIExlemNhbm8gPGRhbmllbC5sZXpjYW5vQGxpbmFyby5v cmc+Cj4gQ0M6IERhdmlkbG9ociBCdWVzbyA8ZGF2ZUBzdGdvbGFicy5uZXQ+Cj4gQ0M6ICJEYXZp ZCBTLiBNaWxsZXIiIDxkYXZlbUBkYXZlbWxvZnQubmV0Pgo+IENDOiBFaWljaGkgVHN1a2F0YSA8 ZGV2ZWxAZXRzdWthdGEuY29tPgo+IENDOiBFbnJpY28gV2VpZ2VsdCA8aW5mb0BtZXR1eC5uZXQ+ Cj4gQ0M6IEZlbmdodWEgWXUgPGZlbmdodWEueXVAaW50ZWwuY29tPgo+IENDOiBHcmVnIEtyb2Fo LUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgo+IENDOiBIZWxnZSBEZWxsZXIg PGRlbGxlckBnbXguZGU+Cj4gQ0M6ICJILiBQZXRlciBBbnZpbiIgPGhwYUB6eXRvci5jb20+Cj4g Q0M6IEluZ28gTW9sbmFyIDxtaW5nb0BrZXJuZWwub3JnPgo+IENDOiAiSmFtZXMgRS5KLiBCb3R0 b21sZXkiIDxKYW1lcy5Cb3R0b21sZXlASGFuc2VuUGFydG5lcnNoaXAuY29tPgo+IENDOiBKYW1l cyBNb3JzZSA8amFtZXMubW9yc2VAYXJtLmNvbT4KPiBDQzogSmlyaSBLb3NpbmEgPGprb3NpbmFA c3VzZS5jej4KPiBDQzogSm9zaCBQb2ltYm9ldWYgPGpwb2ltYm9lQHJlZGhhdC5jb20+Cj4gQ0M6 IEpvc2ggVHJpcGxldHQgPGpvc2hAam9zaHRyaXBsZXR0Lm9yZz4KPiBDQzogSnVlcmdlbiBHcm9z cyA8amdyb3NzQHN1c2UuY29tPgo+IENDOiBMb3JlbnpvIFBpZXJhbGlzaSA8bG9yZW56by5waWVy YWxpc2lAYXJtLmNvbT4KPiBDQzogTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4K PiBDQzogTWljaGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1Pgo+IENDOiBOYWRhdiBB bWl0IDxuYW1pdEB2bXdhcmUuY29tPgo+IENDOiBOaWNob2xhcyBQaWdnaW4gPG5waWdnaW5AZ21h aWwuY29tPgo+IENDOiAiUGF1bCBFLiBNY0tlbm5leSIgPHBhdWxtY2tAa2VybmVsLm9yZz4KPiBD QzogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BzYW1iYS5vcmc+Cj4gQ0M6IFBhdmFua3VtYXIgS29u ZGV0aSA8cGtvbmRldGlAY29kZWF1cm9yYS5vcmc+Cj4gQ0M6ICJQZXRlciBaaWpsc3RyYSAoSW50 ZWwpIiA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+Cj4gQ0M6ICJSYWZhZWwgSi4gV3lzb2NraSIgPHJh ZmFlbEBrZXJuZWwub3JnPgo+IENDOiBSYW0gUGFpIDxsaW51eHJhbUB1cy5pYm0uY29tPgo+IEND OiBSaWNoYXJkIEZvbnRhbmEgPHJmb250YW5hQHJlZGhhdC5jb20+Cj4gQ0M6IFJ1c3NlbGwgS2lu ZyA8bGludXhAYXJtbGludXgub3JnLnVrPgo+IENDOiBTYWthcmkgQWlsdXMgPHNha2FyaS5haWx1 c0BsaW51eC5pbnRlbC5jb20+Cj4gQ0M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlA a2VybmVsLm9yZz4KPiBDQzogU3RldmUgQ2FwcGVyIDxzdGV2ZS5jYXBwZXJAYXJtLmNvbT4KPiBD QzogVGhpYWdvIEp1bmcgQmF1ZXJtYW5uIDxiYXVlcm1hbkBsaW51eC5pYm0uY29tPgo+IENDOiBU aG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KPiBDQzogVG9ueSBMdWNrIDx0b255 Lmx1Y2tAaW50ZWwuY29tPgo+IENDOiBXaWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgo+IEND OiBaaGVuemhvbmcgRHVhbiA8emhlbnpob25nLmR1YW5Ab3JhY2xlLmNvbT4KPiBDQzogbGludXgt YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4gQ0M6IGxpbnV4LWlhNjRAdmdlci5rZXJu ZWwub3JnCj4gQ0M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKPiBDQzogbGludXgtcGFy aXNjQHZnZXIua2VybmVsLm9yZwo+IENDOiBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZwo+ IENDOiBzcGFyY2xpbnV4QHZnZXIua2VybmVsLm9yZwo+IENDOiB4ODZAa2VybmVsLm9yZwo+IEND OiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKPiAKPiAKPiBRYWlzIFlvdXNlZiAoMTQp Ogo+ICAgc21wOiBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gdG8gc2h1dGRvd24gbm9uYm9vdCBjcHVz Cj4gICBpYTY0OiBSZXBsYWNlIGNwdV9kb3duIHdpdGggc21wX3NodXRkb3duX25vbmJvb3RfY3B1 cygpCj4gICBhcm06IGFybTY0OiBEb24ndCB1c2UgZGlzYWJsZV9ub25ib290X2NwdXMoKQo+ICAg YXJtNjQ6IGhpYmVybmF0ZS5jOiBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gdG8gaGFuZGxlIGNwdV91 cChzbGVlcF9jcHUpCj4gICB4ODY6IFJlcGxhY2UgY3B1X3VwL2Rvd24gd2l0aCBkZXZjaWVfb25s aW5lL29mZmxpbmUKPiAgIHBvd2VycGM6IFJlcGxhY2UgY3B1X3VwL2Rvd24gd2l0aCBkZXZpY2Vf b25saW5lL29mZmxpbmUKPiAgIHNwYXJjOiBSZXBsYWNlIGNwdV91cC9kb3duIHdpdGggZGV2aWNl X29ubGluZS9vZmZsaW5lCj4gICBwYXJpc2M6IFJlcGxhY2UgY3B1X3VwL2Rvd24gd2l0aCBkZXZp Y2Vfb25saW5lL29mZmxpbmUKPiAgIGRyaXZlcjogYmFzZTogY3B1OiBleHBvcnQgZGV2aWNlX29u bGluZS9vZmZsaW5lCj4gICBkcml2ZXI6IHhlbjogUmVwbGFjZSBjcHVfdXAvZG93biB3aXRoIGRl dmljZV9vbmxpbmUvb2ZmbGluZQo+ICAgZmlybXdhcmU6IHBzY2k6IFJlcGxhY2UgY3B1X3VwL2Rv d24gd2l0aCBkZXZpY2Vfb25saW5lL29mZmxpbmUKPiAgIHRvcnR1cmU6IFJlcGxhY2UgY3B1X3Vw L2Rvd24gd2l0aCBkZXZpY2Vfb25saW5lL29mZmxpbmUKPiAgIHNtcDogQ3JlYXRlIGEgbmV3IGZ1 bmN0aW9uIHRvIGJyaW5ndXAgbm9uYm9vdCBjcHVzIG9ubGluZQo+ICAgY3B1OiBIaWRlIGNwdV91 cC9kb3duCj4gCj4gIGFyY2gvYXJtL2tlcm5lbC9yZWJvb3QuYyAgICAgICAgICAgICAgIHwgIDQg Ky0KPiAgYXJjaC9hcm02NC9rZXJuZWwvaGliZXJuYXRlLmMgICAgICAgICAgfCAxMyArKy0tCj4g IGFyY2gvYXJtNjQva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgIHwgIDQgKy0KPiAgYXJjaC9p YTY0L2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAgfCAgOCArLS0KPiAgYXJjaC9wYXJpc2Mv a2VybmVsL3Byb2Nlc3Nvci5jICAgICAgICAgfCAgNCArLQo+ICBhcmNoL3Bvd2VycGMva2VybmVs L21hY2hpbmVfa2V4ZWNfNjQuYyB8ICA0ICstCj4gIGFyY2gvc3BhcmMva2VybmVsL2RzLmMgICAg ICAgICAgICAgICAgIHwgIDggKystCj4gIGFyY2gveDg2L2tlcm5lbC90b3BvbG9neS5jICAgICAg ICAgICAgIHwgIDQgKy0KPiAgYXJjaC94ODYvbW0vbW1pby1tb2QuYyAgICAgICAgICAgICAgICAg fCAgOCArKy0KPiAgYXJjaC94ODYveGVuL3NtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNCAr LQo+ICBkcml2ZXJzL2Jhc2UvY29yZS5jICAgICAgICAgICAgICAgICAgICB8ICA0ICsrCj4gIGRy aXZlcnMvYmFzZS9jcHUuYyAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9m aXJtd2FyZS9wc2NpL3BzY2lfY2hlY2tlci5jICAgfCAgNiArLQo+ICBkcml2ZXJzL3hlbi9jcHVf aG90cGx1Zy5jICAgICAgICAgICAgICB8ICAyICstCj4gIGluY2x1ZGUvbGludXgvY3B1LmggICAg ICAgICAgICAgICAgICAgIHwgIDggKystCj4gIGtlcm5lbC9jcHUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgODUgKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAga2VybmVsL3NtcC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOSArLS0KPiAga2VybmVsL3RvcnR1cmUuYyAg ICAgICAgICAgICAgICAgICAgICAgfCAxNSArKystLQo+ICAxOCBmaWxlcyBjaGFuZ2VkLCAxNDMg aW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCj4gCj4gLS0gCj4gMi4xNy4xCj4gCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl bnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs