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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA5EEC677F1 for ; Tue, 17 Jan 2023 16:56:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232307AbjAQQ4d (ORCPT ); Tue, 17 Jan 2023 11:56:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231180AbjAQQ4a (ORCPT ); Tue, 17 Jan 2023 11:56:30 -0500 Received: from sin.source.kernel.org (sin.source.kernel.org [IPv6:2604:1380:40e1:4800::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 631D6442C3; Tue, 17 Jan 2023 08:56:29 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id A62D6CE1901; Tue, 17 Jan 2023 16:56:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4217DC433EF; Tue, 17 Jan 2023 16:56:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1673974586; bh=awCNWH6g7iC9TQ3N6frBiPrp8RzZqPKgyt/xKy5+Jiw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Pj0stw7n9lbjyENNQ49z3XXqSi6KW8hjJYhTOhOEG18HH4QeclSR/dCoed+6xqQ6z cce5s7CFNM8lWJNW68bDzuW9sDaXpSGi/eSHWROOL3AKQaWPhkeZy2OKUEYCcHoiCh ZFis46o88QvIFxhytSD2zIHRUPNVki625AEO4k46WGwRpXqmMYY9QSXnbe7lkC3Ek7 vBJp/4an4PKB3pOKqqTRrF6UqYSACaunit1bJDEUciDG0/p4WsjFpOet7KrleoCek9 3FiHywENR3rlfqHNQ+ToO9eX6/q2RKyy2mdDRgCW3fhsougclBTebEM+GQdvuRBOPL qUkACBdRK66Vw== Date: Tue, 17 Jan 2023 16:56:19 +0000 From: Lee Jones To: Greg KH Cc: Ard Biesheuvel , Mark Rutland , stable@vger.kernel.org, linux-efi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, will@kernel.org, catalin.marinas@arm.com, Sami Tolvanen , Kees Cook Subject: Re: [PATCH 1/2] arm64: efi: Execute runtime services from a dedicated stack Message-ID: References: <20221205201210.463781-1-ardb@kernel.org> <20221205201210.463781-2-ardb@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-efi@vger.kernel.org On Thu, 05 Jan 2023, Greg KH wrote: > On Wed, Jan 04, 2023 at 05:32:18PM +0100, Ard Biesheuvel wrote: > > On Wed, 4 Jan 2023 at 17:30, Mark Rutland wrote: > > > > > > On Wed, Jan 04, 2023 at 05:15:34PM +0100, Ard Biesheuvel wrote: > > > > On Wed, 4 Jan 2023 at 17:13, Mark Rutland wrote: > > > > > > > > > > On Wed, Jan 04, 2023 at 02:56:19PM +0100, Ard Biesheuvel wrote: > > > > > > On Wed, 4 Jan 2023 at 11:40, Lee Jones wrote: > > > > > > > > > > > > > > On Mon, 05 Dec 2022, Ard Biesheuvel wrote: > > > > > > > > > > > > > > > With the introduction of PRMT in the ACPI subsystem, the EFI rts > > > > > > > > workqueue is no longer the only caller of efi_call_virt_pointer() in the > > > > > > > > kernel. This means the EFI runtime services lock is no longer sufficient > > > > > > > > to manage concurrent calls into firmware, but also that firmware calls > > > > > > > > may occur that are not marshalled via the workqueue mechanism, but > > > > > > > > originate directly from the caller context. > > > > > > > > > > > > > > > > For added robustness, and to ensure that the runtime services have 8 KiB > > > > > > > > of stack space available as per the EFI spec, introduce a spinlock > > > > > > > > protected EFI runtime stack of 8 KiB, where the spinlock also ensures > > > > > > > > serialization between the EFI rts workqueue (which itself serializes EFI > > > > > > > > runtime calls) and other callers of efi_call_virt_pointer(). > > > > > > > > > > > > > > > > While at it, use the stack pivot to avoid reloading the shadow call > > > > > > > > stack pointer from the ordinary stack, as doing so could produce a > > > > > > > > gadget to defeat it. > > > > > > > > > > > > > > > > Signed-off-by: Ard Biesheuvel > > > > > > > > --- > > > > > > > > arch/arm64/include/asm/efi.h | 3 +++ > > > > > > > > arch/arm64/kernel/efi-rt-wrapper.S | 13 +++++++++- > > > > > > > > arch/arm64/kernel/efi.c | 25 ++++++++++++++++++++ > > > > > > > > 3 files changed, 40 insertions(+), 1 deletion(-) > > > > > > > > > > > > > > Could we have this in Stable please? > > > > > > > > > > > > > > Upstream commit: ff7a167961d1b ("arm64: efi: Execute runtime services from a dedicated stack") > > > > > > > > > > > > > > Ard, do we need Patch 2 as well, or can this be applied on its own? > > > > > > > > > > > > > > > > > > > Thanks for the reminder. > > > > > > > > > > > > Only patch #1 is needed. It should be applied to v5.10 and later. > > > > > > > > > > Hold on, why did this go into mainline when I had an outstanding comment w.r.t. > > > > > the stack unwinder? > > > > > > > > > > From your last reply to me there I was expecting a respin with that fixed. > > > > > > > > > > > > > Apologies for the confusion. > > > > > > > > I have a patch for this queued up, but AIUI, that cannot be merged all > > > > the way back to v5.10, so these need to remain separate changes in any > > > > case. > > > > > > > > https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=c2530a04a73e6b75ed71ed14d09d7b42d6300013 > > > > > > Ah, ok, thanks for the pointer! > > > > > > I'm a little uneasy here, still. > > > > > > By backporting this we're also backporting the new breakage of the stack > > > unwinder, and the minimal change for backports would be to add the lock and not > > > the new stack (which was added for additinoal robustness, not to fix the bug > > > the lock fixes). > > > > > > I do appreciate that the additional stack is likely more useful than the > > > occasional diagnostic output from the kernel, but it does seem like this has > > > traded off one bug for another, and I'm just a little annoyed because I pointed > > > that out before the first pull request was made. > > > > > > I do know that this isn't malicious, and I'm not trying to start a fight, but > > > now we have to consider whether we want/need to backport a stack unwinder fix > > > to account for this, and we hadn't had that discussion before. > > > > > > > In that case, let's drop these backports for the time being, and > > collaborate on a solution that works for all of us. > > > > Greg, could you please drop these again? Thanks. > > Dropped now from all queues, thanks. Now in Mainline as: 18bba1843fc7f efi: rt-wrapper: Add missing include ff7a167961d1b arm64: efi: Execute runtime services from a dedicated stack Would you be kind enough to re-collect them please? Thank you. -- Lee Jones [李琼斯] 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 2FD1BC3DA78 for ; Tue, 17 Jan 2023 16:57:36 +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:In-Reply-To:MIME-Version:References: 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=ogMLWAJmflnzOSnC0t0STTLcodPuS/cS3EWA8xVxQfg=; b=keSkUL/fAYGDog aoug9SF/VlRKeg6uHGAoOhl+YMQz5mmIHPV5IE1fY+BMRcRslzOwJ00q7IACbG3hLo3PkR6F1ZNpj hIPljfsmKd0zpuGhLvq+8HFNZt8GZI6tp+aR+pwBlVtgIzvLi/+FMfuLS3J/ODVJQSEzxCy5NNZkK j0x2gXCGe+HQ4k934+jQ6wtYycuKxCv2bFKSpleuZSH9RvSJxQVe4ZJP1k+WDk8dvQHSo2bFQCLTa g5M7cHDkDeNpixdCDWBwe0VtHQhMNQcApzZaB3IOJO5AWpG1MhS5tYcCHxd6dFkLhB2WADZ+zAqAN uhvCwZCBh/O54uLiscXw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pHpGD-00FAzb-RE; Tue, 17 Jan 2023 16:56:33 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pHpG9-00FAy6-L9 for linux-arm-kernel@lists.infradead.org; Tue, 17 Jan 2023 16:56:31 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 48093B818EE; Tue, 17 Jan 2023 16:56:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4217DC433EF; Tue, 17 Jan 2023 16:56:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1673974586; bh=awCNWH6g7iC9TQ3N6frBiPrp8RzZqPKgyt/xKy5+Jiw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Pj0stw7n9lbjyENNQ49z3XXqSi6KW8hjJYhTOhOEG18HH4QeclSR/dCoed+6xqQ6z cce5s7CFNM8lWJNW68bDzuW9sDaXpSGi/eSHWROOL3AKQaWPhkeZy2OKUEYCcHoiCh ZFis46o88QvIFxhytSD2zIHRUPNVki625AEO4k46WGwRpXqmMYY9QSXnbe7lkC3Ek7 vBJp/4an4PKB3pOKqqTRrF6UqYSACaunit1bJDEUciDG0/p4WsjFpOet7KrleoCek9 3FiHywENR3rlfqHNQ+ToO9eX6/q2RKyy2mdDRgCW3fhsougclBTebEM+GQdvuRBOPL qUkACBdRK66Vw== Date: Tue, 17 Jan 2023 16:56:19 +0000 From: Lee Jones To: Greg KH Cc: Ard Biesheuvel , Mark Rutland , stable@vger.kernel.org, linux-efi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, will@kernel.org, catalin.marinas@arm.com, Sami Tolvanen , Kees Cook Subject: Re: [PATCH 1/2] arm64: efi: Execute runtime services from a dedicated stack Message-ID: References: <20221205201210.463781-1-ardb@kernel.org> <20221205201210.463781-2-ardb@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230117_085630_021322_9C6EECCB X-CRM114-Status: GOOD ( 43.57 ) 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 T24gVGh1LCAwNSBKYW4gMjAyMywgR3JlZyBLSCB3cm90ZToKCj4gT24gV2VkLCBKYW4gMDQsIDIw MjMgYXQgMDU6MzI6MThQTSArMDEwMCwgQXJkIEJpZXNoZXV2ZWwgd3JvdGU6Cj4gPiBPbiBXZWQs IDQgSmFuIDIwMjMgYXQgMTc6MzAsIE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+ IHdyb3RlOgo+ID4gPgo+ID4gPiBPbiBXZWQsIEphbiAwNCwgMjAyMyBhdCAwNToxNTozNFBNICsw MTAwLCBBcmQgQmllc2hldXZlbCB3cm90ZToKPiA+ID4gPiBPbiBXZWQsIDQgSmFuIDIwMjMgYXQg MTc6MTMsIE1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+IHdyb3RlOgo+ID4gPiA+ ID4KPiA+ID4gPiA+IE9uIFdlZCwgSmFuIDA0LCAyMDIzIGF0IDAyOjU2OjE5UE0gKzAxMDAsIEFy ZCBCaWVzaGV1dmVsIHdyb3RlOgo+ID4gPiA+ID4gPiBPbiBXZWQsIDQgSmFuIDIwMjMgYXQgMTE6 NDAsIExlZSBKb25lcyA8bGVlQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gT24gTW9uLCAwNSBEZWMgMjAyMiwgQXJkIEJpZXNoZXV2ZWwgd3JvdGU6Cj4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IFdpdGggdGhlIGludHJvZHVjdGlvbiBvZiBQUk1UIGlu IHRoZSBBQ1BJIHN1YnN5c3RlbSwgdGhlIEVGSSBydHMKPiA+ID4gPiA+ID4gPiA+IHdvcmtxdWV1 ZSBpcyBubyBsb25nZXIgdGhlIG9ubHkgY2FsbGVyIG9mIGVmaV9jYWxsX3ZpcnRfcG9pbnRlcigp IGluIHRoZQo+ID4gPiA+ID4gPiA+ID4ga2VybmVsLiBUaGlzIG1lYW5zIHRoZSBFRkkgcnVudGlt ZSBzZXJ2aWNlcyBsb2NrIGlzIG5vIGxvbmdlciBzdWZmaWNpZW50Cj4gPiA+ID4gPiA+ID4gPiB0 byBtYW5hZ2UgY29uY3VycmVudCBjYWxscyBpbnRvIGZpcm13YXJlLCBidXQgYWxzbyB0aGF0IGZp cm13YXJlIGNhbGxzCj4gPiA+ID4gPiA+ID4gPiBtYXkgb2NjdXIgdGhhdCBhcmUgbm90IG1hcnNo YWxsZWQgdmlhIHRoZSB3b3JrcXVldWUgbWVjaGFuaXNtLCBidXQKPiA+ID4gPiA+ID4gPiA+IG9y aWdpbmF0ZSBkaXJlY3RseSBmcm9tIHRoZSBjYWxsZXIgY29udGV4dC4KPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiBGb3IgYWRkZWQgcm9idXN0bmVzcywgYW5kIHRvIGVuc3VyZSB0aGF0 IHRoZSBydW50aW1lIHNlcnZpY2VzIGhhdmUgOCBLaUIKPiA+ID4gPiA+ID4gPiA+IG9mIHN0YWNr IHNwYWNlIGF2YWlsYWJsZSBhcyBwZXIgdGhlIEVGSSBzcGVjLCBpbnRyb2R1Y2UgYSBzcGlubG9j awo+ID4gPiA+ID4gPiA+ID4gcHJvdGVjdGVkIEVGSSBydW50aW1lIHN0YWNrIG9mIDggS2lCLCB3 aGVyZSB0aGUgc3BpbmxvY2sgYWxzbyBlbnN1cmVzCj4gPiA+ID4gPiA+ID4gPiBzZXJpYWxpemF0 aW9uIGJldHdlZW4gdGhlIEVGSSBydHMgd29ya3F1ZXVlICh3aGljaCBpdHNlbGYgc2VyaWFsaXpl cyBFRkkKPiA+ID4gPiA+ID4gPiA+IHJ1bnRpbWUgY2FsbHMpIGFuZCBvdGhlciBjYWxsZXJzIG9m IGVmaV9jYWxsX3ZpcnRfcG9pbnRlcigpLgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ IFdoaWxlIGF0IGl0LCB1c2UgdGhlIHN0YWNrIHBpdm90IHRvIGF2b2lkIHJlbG9hZGluZyB0aGUg c2hhZG93IGNhbGwKPiA+ID4gPiA+ID4gPiA+IHN0YWNrIHBvaW50ZXIgZnJvbSB0aGUgb3JkaW5h cnkgc3RhY2ssIGFzIGRvaW5nIHNvIGNvdWxkIHByb2R1Y2UgYQo+ID4gPiA+ID4gPiA+ID4gZ2Fk Z2V0IHRvIGRlZmVhdCBpdC4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBTaWduZWQt b2ZmLWJ5OiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPgo+ID4gPiA+ID4gPiA+ID4g LS0tCj4gPiA+ID4gPiA+ID4gPiAgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9lZmkuaCAgICAgICB8 ICAzICsrKwo+ID4gPiA+ID4gPiA+ID4gIGFyY2gvYXJtNjQva2VybmVsL2VmaS1ydC13cmFwcGVy LlMgfCAxMyArKysrKysrKystCj4gPiA+ID4gPiA+ID4gPiAgYXJjaC9hcm02NC9rZXJuZWwvZWZp LmMgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+ID4gPiAg MyBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiBDb3VsZCB3ZSBoYXZlIHRoaXMgaW4gU3RhYmxlIHBsZWFzZT8K PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IFVwc3RyZWFtIGNvbW1pdDogZmY3YTE2Nzk2MWQx YiAoImFybTY0OiBlZmk6IEV4ZWN1dGUgcnVudGltZSBzZXJ2aWNlcyBmcm9tIGEgZGVkaWNhdGVk IHN0YWNrIikKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IEFyZCwgZG8gd2UgbmVlZCBQYXRj aCAyIGFzIHdlbGwsIG9yIGNhbiB0aGlzIGJlIGFwcGxpZWQgb24gaXRzIG93bj8KPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBUaGFua3MgZm9yIHRoZSByZW1pbmRlci4KPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gT25seSBwYXRjaCAjMSBpcyBuZWVkZWQuIEl0IHNob3VsZCBi ZSBhcHBsaWVkIHRvIHY1LjEwIGFuZCBsYXRlci4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBIb2xkIG9u LCB3aHkgZGlkIHRoaXMgZ28gaW50byBtYWlubGluZSB3aGVuIEkgaGFkIGFuIG91dHN0YW5kaW5n IGNvbW1lbnQgdy5yLnQuCj4gPiA+ID4gPiB0aGUgc3RhY2sgdW53aW5kZXI/Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gRnJvbSB5b3VyIGxhc3QgcmVwbHkgdG8gbWUgdGhlcmUgSSB3YXMgZXhwZWN0aW5n IGEgcmVzcGluIHdpdGggdGhhdCBmaXhlZC4KPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBBcG9s b2dpZXMgZm9yIHRoZSBjb25mdXNpb24uCj4gPiA+ID4KPiA+ID4gPiBJIGhhdmUgYSBwYXRjaCBm b3IgdGhpcyBxdWV1ZWQgdXAsIGJ1dCBBSVVJLCB0aGF0IGNhbm5vdCBiZSBtZXJnZWQgYWxsCj4g PiA+ID4gdGhlIHdheSBiYWNrIHRvIHY1LjEwLCBzbyB0aGVzZSBuZWVkIHRvIHJlbWFpbiBzZXBh cmF0ZSBjaGFuZ2VzIGluIGFueQo+ID4gPiA+IGNhc2UuCj4gPiA+ID4KPiA+ID4gPiBodHRwczov L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9uZXh0L2xpbnV4LW5leHQu Z2l0L2NvbW1pdC8/aWQ9YzI1MzBhMDRhNzNlNmI3NWVkNzFlZDE0ZDA5ZDdiNDJkNjMwMDAxMwo+ ID4gPgo+ID4gPiBBaCwgb2ssIHRoYW5rcyBmb3IgdGhlIHBvaW50ZXIhCj4gPiA+Cj4gPiA+IEkn bSBhIGxpdHRsZSB1bmVhc3kgaGVyZSwgc3RpbGwuCj4gPiA+Cj4gPiA+IEJ5IGJhY2twb3J0aW5n IHRoaXMgd2UncmUgYWxzbyBiYWNrcG9ydGluZyB0aGUgbmV3IGJyZWFrYWdlIG9mIHRoZSBzdGFj awo+ID4gPiB1bndpbmRlciwgYW5kIHRoZSBtaW5pbWFsIGNoYW5nZSBmb3IgYmFja3BvcnRzIHdv dWxkIGJlIHRvIGFkZCB0aGUgbG9jayBhbmQgbm90Cj4gPiA+IHRoZSBuZXcgc3RhY2sgKHdoaWNo IHdhcyBhZGRlZCBmb3IgYWRkaXRpbm9hbCByb2J1c3RuZXNzLCBub3QgdG8gZml4IHRoZSBidWcK PiA+ID4gdGhlIGxvY2sgZml4ZXMpLgo+ID4gPgo+ID4gPiBJIGRvIGFwcHJlY2lhdGUgdGhhdCB0 aGUgYWRkaXRpb25hbCBzdGFjayBpcyBsaWtlbHkgbW9yZSB1c2VmdWwgdGhhbiB0aGUKPiA+ID4g b2NjYXNpb25hbCBkaWFnbm9zdGljIG91dHB1dCBmcm9tIHRoZSBrZXJuZWwsIGJ1dCBpdCBkb2Vz IHNlZW0gbGlrZSB0aGlzIGhhcwo+ID4gPiB0cmFkZWQgb2ZmIG9uZSBidWcgZm9yIGFub3RoZXIs IGFuZCBJJ20ganVzdCBhIGxpdHRsZSBhbm5veWVkIGJlY2F1c2UgSSBwb2ludGVkCj4gPiA+IHRo YXQgb3V0IGJlZm9yZSB0aGUgZmlyc3QgcHVsbCByZXF1ZXN0IHdhcyBtYWRlLgo+ID4gPgo+ID4g PiBJIGRvIGtub3cgdGhhdCB0aGlzIGlzbid0IG1hbGljaW91cywgYW5kIEknbSBub3QgdHJ5aW5n IHRvIHN0YXJ0IGEgZmlnaHQsIGJ1dAo+ID4gPiBub3cgd2UgaGF2ZSB0byBjb25zaWRlciB3aGV0 aGVyIHdlIHdhbnQvbmVlZCB0byBiYWNrcG9ydCBhIHN0YWNrIHVud2luZGVyIGZpeAo+ID4gPiB0 byBhY2NvdW50IGZvciB0aGlzLCBhbmQgd2UgaGFkbid0IGhhZCB0aGF0IGRpc2N1c3Npb24gYmVm b3JlLgo+ID4gPgo+ID4gCj4gPiBJbiB0aGF0IGNhc2UsIGxldCdzIGRyb3AgdGhlc2UgYmFja3Bv cnRzIGZvciB0aGUgdGltZSBiZWluZywgYW5kCj4gPiBjb2xsYWJvcmF0ZSBvbiBhIHNvbHV0aW9u IHRoYXQgd29ya3MgZm9yIGFsbCBvZiB1cy4KPiA+IAo+ID4gR3JlZywgY291bGQgeW91IHBsZWFz ZSBkcm9wIHRoZXNlIGFnYWluPyBUaGFua3MuCj4gCj4gRHJvcHBlZCBub3cgZnJvbSBhbGwgcXVl dWVzLCB0aGFua3MuCgpOb3cgaW4gTWFpbmxpbmUgYXM6CgogIDE4YmJhMTg0M2ZjN2YgZWZpOiBy dC13cmFwcGVyOiBBZGQgbWlzc2luZyBpbmNsdWRlCiAgZmY3YTE2Nzk2MWQxYiBhcm02NDogZWZp OiBFeGVjdXRlIHJ1bnRpbWUgc2VydmljZXMgZnJvbSBhIGRlZGljYXRlZCBzdGFjawoKV291bGQg eW91IGJlIGtpbmQgZW5vdWdoIHRvIHJlLWNvbGxlY3QgdGhlbSBwbGVhc2U/CgpUaGFuayB5b3Uu CgotLSAKTGVlIEpvbmVzIFvmnY7nkLzmlq9dCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==