From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id CBE1021A18AAB for ; Fri, 5 May 2017 05:07:28 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0151D883A6; Fri, 5 May 2017 12:07:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0151D883A6 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=lersek@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 0151D883A6 Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-120.phx2.redhat.com [10.3.116.120]) by smtp.corp.redhat.com (Postfix) with ESMTP id C532877E9A; Fri, 5 May 2017 12:07:26 +0000 (UTC) To: Jordan Justen References: <20170503213947.32290-1-lersek@redhat.com> <20170503213947.32290-4-lersek@redhat.com> <149397463765.13335.18098739662202283758@jljusten-skl> Cc: edk2-devel-01 , Gary Ching-Pang Lin From: Laszlo Ersek Message-ID: <9ff79644-8767-bf10-7d0a-2f5ab6555e23@redhat.com> Date: Fri, 5 May 2017 14:07:25 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <149397463765.13335.18098739662202283758@jljusten-skl> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Fri, 05 May 2017 12:07:28 +0000 (UTC) Subject: Re: [PATCH v2 3/5] OvmfPkg: introduce 4MB flash image (mainly) for Windows HCK X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 May 2017 12:07:29 -0000 X-Groupsio-MsgNum: 10564 Content-Type: multipart/mixed; boundary="------------63BA832C8EF33DB96DF37D77" --------------63BA832C8EF33DB96DF37D77 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 05/05/17 10:57, Jordan Justen wrote: > On 2017-05-04 21:07:24, Laszlo Ersek wrote: >> On 05/03/17 23:39, Laszlo Ersek wrote: >>> - Raise VARS_LIVE_SIZE by 8KB to 256KB, VARS_SPARE_SIZE by 8KB to 264KB, >> Unfortunately, we have a terrible regression here. :( >> > > >> Adapting EmuVariableFvbRuntimeDxe to a non-power-of-two NV spare area >> size is hopeless. (Definitely hopeless for the time frame & resources >> I'm looking at.) >> >> Worse, even -pflash is broken in the 4MB build, actually. The >> non-power-of-two NV spare area size, when used as Alignment for >> AllocateAlignedRuntimePages() in ReserveEmuVariableNvStore(), triggers >> an assertion. And this path is taken for the -pflash boot as well. > For a short term fix, would something like this work? Absolutely. I didn't dare ask for it. > 1. Force emu fvb buffer alignment to next power-of-two > > Something like the attachment, but I'm guessing you already wrote > something similar. Yes, I have almost exactly that; please see the attached "OvmfPkg/PlatformPei: handle non-power-of-two spare size for emu variables". The difference is that your patch uses HighBitSet32() directly, which mine uses through GetPowerOfTwo32(). Also yours starts with the full size, and then subtracts one for the shift in the alignment; mine starts with half the size (i.e., the spare area size) and uses that in the alignment. One other comment on the patch: > 0001-PlatformPei-Force-EmuVariableNvStore-alignment-size-.patch > > > From 58ba393adf60caf806b26dec9aa56d936743f595 Mon Sep 17 00:00:00 2001 > From: Jordan Justen > Date: Fri, 5 May 2017 01:43:31 -0700 > Subject: [PATCH] PlatformPei: Force EmuVariableNvStore alignment size to power > of two > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Jordan Justen > --- > OvmfPkg/PlatformPei/Platform.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/OvmfPkg/PlatformPei/Platform.c b/OvmfPkg/PlatformPei/Platform.c > index 77a8a16c15..97dce8de92 100644 > --- a/OvmfPkg/PlatformPei/Platform.c > +++ b/OvmfPkg/PlatformPei/Platform.c > @@ -504,6 +504,14 @@ ReserveEmuVariableNvStore ( > { > EFI_PHYSICAL_ADDRESS VariableStore; > RETURN_STATUS PcdStatus; > + UINT32 EmuFvbSize; > + INTN SizeHighBit; > + > + EmuFvbSize = 2 * PcdGet32 (PcdFlashNvStorageFtwSpareSize); > + SizeHighBit = HighBitSet32 (EmuFvbSize); > + if ((EmuFvbSize & (EmuFvbSize - 1)) != 0) { > + SizeHighBit++; > + } > > // > // Allocate storage for NV variables early on so it will be > @@ -514,13 +522,13 @@ ReserveEmuVariableNvStore ( > VariableStore = > (EFI_PHYSICAL_ADDRESS)(UINTN) > AllocateAlignedRuntimePages ( > - EFI_SIZE_TO_PAGES (2 * PcdGet32 (PcdFlashNvStorageFtwSpareSize)), > - PcdGet32 (PcdFlashNvStorageFtwSpareSize) > + EFI_SIZE_TO_PAGES (EmuFvbSize), I think we should cast EmuFvbSize to UINTN first; EFI_SIZE_TO_PAGES() likes the "Size" parameter to be UINTN. > + 1 << (SizeHighBit - 1) > ); > DEBUG ((EFI_D_INFO, > "Reserved variable store memory: 0x%lX; size: %dkb\n", > VariableStore, > - (2 * PcdGet32 (PcdFlashNvStorageFtwSpareSize)) / 1024 > + EmuFvbSize / 1024 > )); > PcdStatus = PcdSet64S (PcdEmuVariableNvStoreReserved, VariableStore); > ASSERT_RETURN_ERROR (PcdStatus); > -- 2.11.0 > Which one do you prefer: (1) I can take your patch, stick in the UINTN cast, and expand the commit message a bit (similarly to what's on my patch), (2) we can go with my patch as well. I'm tempted to do (1) and commit it with my R-b immediately, but I realize that "rushing it" is the root of all evil. So I won't rush it. On 05/05/17 10:57, Jordan Justen wrote: > 2. Revert 4MB by default patch > > This should allow you to start using the 4MB layout for your builds, > and we can fix the non-flash path before re-enabling 4MB as the > default. This works for me, yes. Thank you. Regarding the non-flash path, I have the attached work-in-progress patches: - "OvmfPkg: sync PcdVariableStoreSize with PcdFlashNvStorageVariableSize", - and "wip". I think that the "wip" patch does all the "simple" fixes in EmuVariableFvbRuntimeDxe, and what remains is to add code so that the FVB protocol members actually do their job. Also, the "wip" patch eliminates any special alignment in the AllocateRuntimePages() call of PlatformPei, since after the "block size = page size" change, no such alignment will be necessary. What do you think of this? So here's the plan: - based on what you prefer for (1) vs. (2), I'll post that patch as first patch, - I'll post the revert of the 4MB default as second patch, - I think I'll immediately post the patch that syncs PcdVariableStoreSize as well, as third patch, because it is a small improvement for the pflash case too. Does this work for you? Thank you, Laszlo --------------63BA832C8EF33DB96DF37D77 Content-Type: text/x-patch; name="0001-OvmfPkg-PlatformPei-handle-non-power-of-two-spare-si.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-OvmfPkg-PlatformPei-handle-non-power-of-two-spare-si.pa"; filename*1="tch" RnJvbSA3YmQ4NzM4NTU2YWJiODZiZGJmZGQxMWRkMzBhZDc4NjYzOTI1YzA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBGcmksIDUgTWF5IDIwMTcgMDI6MzU6MjEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBPdm1mUGtn L1BsYXRmb3JtUGVpOiBoYW5kbGUgbm9uLXBvd2VyLW9mLXR3byBzcGFyZSBzaXplIGZvcgogZW11 IHZhcmlhYmxlcwoKSW4gY29tbWl0IGIyNGZjYTA1NzUxZiAoIk92bWZQa2c6IGludHJvZHVjZSA0 TUIgZmxhc2ggaW1hZ2UgKG1haW5seSkgZm9yCldpbmRvd3MgSENLIiwgMjAxNy0wNC0yOSksIEkg Y2hhbmdlZCBQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZSB0bwoyNjRLQiwgaW4gdGhlIChu ZXcgZGVmYXVsdCkgNE1CIGJ1aWxkLgoKV2hpbGUgUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNp emUgcmVtYWlucyBleGFjdGx5IGhhbGYgb2YgdGhlIGVudGlyZQpub24tdm9sYXRpbGUgc3RvcmUg KHdoaWNoIGlzIDUyOEtCKSwgMjY0S0IgaXNuJ3QgaXRzZWxmIGEgcG93ZXIgb2YgdHdvLgpUaGlz IHRyaWdnZXJzIGFuIGFzc2VydGlvbiBmYWlsdXJlIGluIEFsbG9jYXRlQWxpZ25lZFJ1bnRpbWVQ YWdlcygpIHdoZW4KUGxhdGZvcm1QZWkgY2FsbHMgaXQgZnJvbSB0aGUgUmVzZXJ2ZUVtdVZhcmlh YmxlTnZTdG9yZSgpIGZ1bmN0aW9uLApwYXNzaW5nIFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVT aXplIGFzIHRoZSBBbGlnbm1lbnQgcGFyYW1ldGVyOgoKPiBBU1NFUlQgTWRlUGtnL0xpYnJhcnkv UGVpTWVtb3J5QWxsb2NhdGlvbkxpYi9NZW1vcnlBbGxvY2F0aW9uTGliLmMoMTk2KToKPiAoQWxp Z25tZW50ICYgKEFsaWdubWVudCAtIDEpKSA9PSAwCgpSb3VuZCB1cCB0aGUgYWxpZ25tZW50IHRv IHRoZSBuZXh0IHBvd2VyIG9mIHR3byBpZiBuZWNlc3NhcnkuCgpDYzogSm9yZGFuIEp1c3RlbiA8 am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4KRml4ZXM6IGIyNGZjYTA1NzUxZjgyMjJhY2YyNjQ4 NTM3MDkwMTJlMGFiN2JmNDkKQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRp b24gQWdyZWVtZW50IDEuMApTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRo YXQuY29tPgotLS0KIE92bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYyB8IDE3ICsrKysrKysr KysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMgYi9Pdm1mUGtn L1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMKaW5kZXggNzdhOGExNmMxNWI4Li41ZTk4M2E4ZGNlYTkg MTAwNjQ0Ci0tLSBhL092bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYworKysgYi9Pdm1mUGtn L1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMKQEAgLTUwNCw2ICs1MDQsNyBAQCBSZXNlcnZlRW11VmFy aWFibGVOdlN0b3JlICgKIHsNCiAgIEVGSV9QSFlTSUNBTF9BRERSRVNTIFZhcmlhYmxlU3RvcmU7 DQogICBSRVRVUk5fU1RBVFVTICAgICAgICBQY2RTdGF0dXM7DQorICBVSU5UMzIgICAgICAgICAg ICAgICBBbGlnbm1lbnQ7DQogDQogICAvLw0KICAgLy8gQWxsb2NhdGUgc3RvcmFnZSBmb3IgTlYg dmFyaWFibGVzIGVhcmx5IG9uIHNvIGl0IHdpbGwgYmUNCkBAIC01MTEsMTYgKzUxMiwyNiBAQCBS ZXNlcnZlRW11VmFyaWFibGVOdlN0b3JlICgKICAgLy8gYWNyb3NzIHJlYm9vdHMsIHRoaXMgYWxs b3dzIHRoZSBOViB2YXJpYWJsZSBzdG9yYWdlIHRvIHN1cnZpdmUNCiAgIC8vIGEgVk0gcmVib290 Lg0KICAgLy8NCisgIEFsaWdubWVudCA9IFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1Nw YXJlU2l6ZSk7DQorICBpZiAoKEFsaWdubWVudCAmIChBbGlnbm1lbnQgLSAxKSkgIT0gMCkgew0K KyAgICAvLw0KKyAgICAvLyBSb3VuZCB1cCBBbGlnbm1lbnQgdG8gdGhlIG5leHQgcG93ZXIgb2Yg dHdvLg0KKyAgICAvLw0KKyAgICBBbGlnbm1lbnQgPSBHZXRQb3dlck9mVHdvMzIgKEFsaWdubWVu dCkgPDwgMTsNCisgIH0NCisNCiAgIFZhcmlhYmxlU3RvcmUgPQ0KICAgICAoRUZJX1BIWVNJQ0FM X0FERFJFU1MpKFVJTlROKQ0KICAgICAgIEFsbG9jYXRlQWxpZ25lZFJ1bnRpbWVQYWdlcyAoDQog ICAgICAgICBFRklfU0laRV9UT19QQUdFUyAoMiAqIFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFn ZUZ0d1NwYXJlU2l6ZSkpLA0KLSAgICAgICAgUGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlRnR3 U3BhcmVTaXplKQ0KKyAgICAgICAgQWxpZ25tZW50DQogICAgICAgICApOw0KICAgREVCVUcgKChF RklfRF9JTkZPLA0KLSAgICAgICAgICAiUmVzZXJ2ZWQgdmFyaWFibGUgc3RvcmUgbWVtb3J5OiAw eCVsWDsgc2l6ZTogJWRrYlxuIiwNCisgICAgICAgICAgIlJlc2VydmVkIHZhcmlhYmxlIHN0b3Jl IG1lbW9yeTogMHglbFg7IHNpemU6ICVka2IsICINCisgICAgICAgICAgImFsaWdubWVudDogMHgl eFxuIiwNCiAgICAgICAgICAgVmFyaWFibGVTdG9yZSwNCi0gICAgICAgICAgKDIgKiBQY2RHZXQz MiAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUpKSAvIDEwMjQNCisgICAgICAgICAgKDIg KiBQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUpKSAvIDEwMjQsDQorICAg ICAgICAgIEFsaWdubWVudA0KICAgICAgICAgKSk7DQogICBQY2RTdGF0dXMgPSBQY2RTZXQ2NFMg KFBjZEVtdVZhcmlhYmxlTnZTdG9yZVJlc2VydmVkLCBWYXJpYWJsZVN0b3JlKTsNCiAgIEFTU0VS VF9SRVRVUk5fRVJST1IgKFBjZFN0YXR1cyk7DQotLSAKMi45LjMKCg== --------------63BA832C8EF33DB96DF37D77 Content-Type: text/x-patch; name="0001-OvmfPkg-sync-PcdVariableStoreSize-with-PcdFlashNvSto.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-OvmfPkg-sync-PcdVariableStoreSize-with-PcdFlashNvSto.pa"; filename*1="tch" RnJvbSAyZDY1MDBhZmI1ODcwZTU3N2JhYjkzZWY5ZjU0Y2FiOWU5MzA3MDNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBGcmksIDUgTWF5IDIwMTcgMDM6MzE6MzIgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvMl0gT3Zt ZlBrZzogc3luYyBQY2RWYXJpYWJsZVN0b3JlU2l6ZSB3aXRoCiBQY2RGbGFzaE52U3RvcmFnZVZh cmlhYmxlU2l6ZQoKIk1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjIiBkZWNsYXJlcyBQY2RW YXJpYWJsZVN0b3JlU2l6ZSBsaWtlIHRoaXM6Cgo+IFRoZSBzaXplIG9mIHZvbGF0aWxlIGJ1ZmZl ci4gVGhpcyBidWZmZXIgaXMgdXNlZCB0byBzdG9yZSBWT0xBVElMRQo+IGF0dHJpYnV0ZSB2YXJp YWJsZXMuCgpUaGVyZSBpcyBubyBpbmhlcmVudCByZWFzb24gd2h5IHRoZSBzaXplIG9mIHRoZSB2 b2xhdGlsZSB2YXJpYWJsZSBzdG9yZQpzaG91bGQgbWF0Y2ggdGhlIHNhbWUgb2YgdGhlIG5vbi12 b2xhdGlsZSB2YXJpYWJsZSBzdG9yZS4gSW5kZWVkIGZsYXNoCnZhcmlhYmxlcyBpbiB0aGUgNE1C IGJ1aWxkIHdvcmsgZmluZSB3aXRob3V0IHRoaXMgZXF1YWxpdHkuCgpIb3dldmVyLCBPdm1mUGtn L0VtdVZhcmlhYmxlRnZiUnVudGltZUR4ZSB1c2VzIFBjZFZhcmlhYmxlU3RvcmVTaXplIHRvCmlu aXRpYWxpemUgdGhlIG5vbi12b2xhdGlsZSBWQVJJQUJMRV9TVE9SRV9IRUFERVIgdG9vLiAoUHJl c3VtYWJseSBiYXNlZApvbiB0aGUgZmFjdCB0aGF0IHVsdGltYXRlbHkgdGhhdCBzdG9yYWdlIHdp bGwgbm90IGJlIHBlcm1hbmVudC4pIFdoZW4KdXNpbmcgRW11VmFyaWFibGVGdmJSdW50aW1lRHhl IGluIHRoZSA0TUIgYnVpbGQsIHRoZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZQp0d28gbWVudGlvbmVk IFBDRHMgKHdoaWNoIGlzIGFwcGFyZW50IHRocm91Z2ggRW11VmFyaWFibGVGdmJSdW50aW1lRHhl J3MKVkFSSUFCTEVfU1RPUkVfSEVBREVSKSB0cmlnZ2VycyBhbiBhc3NlcnRpb24gaW4gdGhlIHZh cmlhYmxlIGRyaXZlcjoKCj4gQVNTRVJUIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUv UnVudGltZUR4ZS9WYXJpYWJsZS5jKDM3NzIpOgo+IG1OdlZhcmlhYmxlQ2FjaGUtPlNpemUgPT0g VmFyaWFibGVTdG9yZUxlbmd0aAoKQnJpbmdpbmcgUGNkVmFyaWFibGVTdG9yZVNpemUgaW4gc3lu YyB3aXRoIFBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVTaXplCmZpeGVzIHRoaXMuIEl0IGFsc28g aGFwcGVucyB0byBlbnN1cmUgYSB2b2xhdGlsZSBzdG9yZSBzaXplIGluIHRoZSA0TUIKYnVpbGQg dGhhdCBlcXVhbHMgdGhlIG5vbi12b2xhdGlsZSBzdG9yZSBzaXplLCB3aGljaCBsaWtlbHkgZG9l c24ndCBodXJ0CmZvciBzeW1tZXRyeS4KCkNjOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0 ZW5AaW50ZWwuY29tPgpGaXhlczogYjI0ZmNhMDU3NTFmODIyMmFjZjI2NDg1MzcwOTAxMmUwYWI3 YmY0OQpDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQg MS4wClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQog T3ZtZlBrZy9Pdm1mUGtnSWEzMi5kc2MgICAgfCAzICsrLQogT3ZtZlBrZy9Pdm1mUGtnSWEzMlg2 NC5kc2MgfCAzICsrLQogT3ZtZlBrZy9Pdm1mUGtnWDY0LmRzYyAgICAgfCAzICsrLQogMyBmaWxl cyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv T3ZtZlBrZy9Pdm1mUGtnSWEzMi5kc2MgYi9Pdm1mUGtnL092bWZQa2dJYTMyLmRzYwppbmRleCBl MGZmN2VhZDAzNGUuLjRmNTE4NjYxZTNiNiAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9Pdm1mUGtnSWEz Mi5kc2MKKysrIGIvT3ZtZlBrZy9Pdm1mUGtnSWEzMi5kc2MKQEAgLTQxNywxMiArNDE3LDEzIEBA IFtQY2RzRml4ZWRBdEJ1aWxkXQogIWlmICgkKEZEX1NJWkVfSU5fS0IpID09IDEwMjQpIHx8ICgk KEZEX1NJWkVfSU5fS0IpID09IDIwNDgpDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1 aWQuUGNkTWF4VmFyaWFibGVTaXplfDB4MjAwMA0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3Bh Y2VHdWlkLlBjZE1heEF1dGhWYXJpYWJsZVNpemV8MHgyODAwDQorICBnRWZpTWRlTW9kdWxlUGtn VG9rZW5TcGFjZUd1aWQuUGNkVmFyaWFibGVTdG9yZVNpemV8MHhlMDAwDQogIWVuZGlmDQogIWlm ICQoRkRfU0laRV9JTl9LQikgPT0gNDA5Ng0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZE1heFZhcmlhYmxlU2l6ZXwweDg0MDANCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNw YWNlR3VpZC5QY2RNYXhBdXRoVmFyaWFibGVTaXplfDB4ODQwMA0KKyAgZ0VmaU1kZU1vZHVsZVBr Z1Rva2VuU3BhY2VHdWlkLlBjZFZhcmlhYmxlU3RvcmVTaXplfDB4NDAwMDANCiAhZW5kaWYNCi0g IGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWYXJpYWJsZVN0b3JlU2l6ZXwweGUw MDANCiANCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWcGRCYXNlQWRkcmVz c3wweDANCiANCmRpZmYgLS1naXQgYS9Pdm1mUGtnL092bWZQa2dJYTMyWDY0LmRzYyBiL092bWZQ a2cvT3ZtZlBrZ0lhMzJYNjQuZHNjCmluZGV4IDQxOTIyZjU4MWM5OC4uNDU1MTAyMWY1ZWZhIDEw MDY0NAotLS0gYS9Pdm1mUGtnL092bWZQa2dJYTMyWDY0LmRzYworKysgYi9Pdm1mUGtnL092bWZQ a2dJYTMyWDY0LmRzYwpAQCAtNDIyLDEyICs0MjIsMTMgQEAgW1BjZHNGaXhlZEF0QnVpbGRdCiAh aWYgKCQoRkRfU0laRV9JTl9LQikgPT0gMTAyNCkgfHwgKCQoRkRfU0laRV9JTl9LQikgPT0gMjA0 OCkNCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhWYXJpYWJsZVNpemV8 MHgyMDAwDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkTWF4QXV0aFZhcmlh YmxlU2l6ZXwweDI4MDANCisgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWYXJp YWJsZVN0b3JlU2l6ZXwweGUwMDANCiAhZW5kaWYNCiAhaWYgJChGRF9TSVpFX0lOX0tCKSA9PSA0 MDk2DQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkTWF4VmFyaWFibGVTaXpl fDB4ODQwMA0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1heEF1dGhWYXJp YWJsZVNpemV8MHg4NDAwDQorICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmFy aWFibGVTdG9yZVNpemV8MHg0MDAwMA0KICFlbmRpZg0KLSAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2Vu U3BhY2VHdWlkLlBjZFZhcmlhYmxlU3RvcmVTaXplfDB4ZTAwMA0KIA0KICAgZ0VmaU1kZU1vZHVs ZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFZwZEJhc2VBZGRyZXNzfDB4MA0KIA0KZGlmZiAtLWdpdCBh L092bWZQa2cvT3ZtZlBrZ1g2NC5kc2MgYi9Pdm1mUGtnL092bWZQa2dYNjQuZHNjCmluZGV4IDli YTAzMzk1NmM4OC4uZjk5M2QzOTJjZTljIDEwMDY0NAotLS0gYS9Pdm1mUGtnL092bWZQa2dYNjQu ZHNjCisrKyBiL092bWZQa2cvT3ZtZlBrZ1g2NC5kc2MKQEAgLTQyMiwxMiArNDIyLDEzIEBAIFtQ Y2RzRml4ZWRBdEJ1aWxkXQogIWlmICgkKEZEX1NJWkVfSU5fS0IpID09IDEwMjQpIHx8ICgkKEZE X1NJWkVfSU5fS0IpID09IDIwNDgpDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQu UGNkTWF4VmFyaWFibGVTaXplfDB4MjAwMA0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZE1heEF1dGhWYXJpYWJsZVNpemV8MHgyODAwDQorICBnRWZpTWRlTW9kdWxlUGtnVG9r ZW5TcGFjZUd1aWQuUGNkVmFyaWFibGVTdG9yZVNpemV8MHhlMDAwDQogIWVuZGlmDQogIWlmICQo RkRfU0laRV9JTl9LQikgPT0gNDA5Ng0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlk LlBjZE1heFZhcmlhYmxlU2l6ZXwweDg0MDANCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNl R3VpZC5QY2RNYXhBdXRoVmFyaWFibGVTaXplfDB4ODQwMA0KKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFZhcmlhYmxlU3RvcmVTaXplfDB4NDAwMDANCiAhZW5kaWYNCi0gIGdF ZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWYXJpYWJsZVN0b3JlU2l6ZXwweGUwMDAN CiANCiAgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RWcGRCYXNlQWRkcmVzc3ww eDANCiANCi0tIAoyLjkuMwoK --------------63BA832C8EF33DB96DF37D77 Content-Type: text/x-patch; name="0002-wip.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-wip.patch" RnJvbSAwNjUzNDllY2Y2MmUwZWM4YjBjYjQwMzg0YmY0M2U2YWY4NjNhNGRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBGcmksIDUgTWF5IDIwMTcgMDQ6MjY6NDcgKzAyMDAKU3ViamVjdDogW1BBVENIIDIvMl0gd2lw CgpDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4w ClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQogT3Zt ZlBrZy9FbXVWYXJpYWJsZUZ2YlJ1bnRpbWVEeGUvRnZiLmggfCAxMCArKysrKysrLS0KIE92bWZQ a2cvRW11VmFyaWFibGVGdmJSdW50aW1lRHhlL0Z2Yi5jIHwgMjMgKysrKysrKysrKystLS0tLS0t LS0KIE92bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYyAgICAgICAgIHwgIDUgKystLS0KIDMg ZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvT3ZtZlBrZy9FbXVWYXJpYWJsZUZ2YlJ1bnRpbWVEeGUvRnZiLmggYi9Pdm1mUGtnL0Vt dVZhcmlhYmxlRnZiUnVudGltZUR4ZS9GdmIuaAppbmRleCBmMzRmYWQyY2RkNDguLjA5MGIyMThh YWY1NSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9FbXVWYXJpYWJsZUZ2YlJ1bnRpbWVEeGUvRnZiLmgK KysrIGIvT3ZtZlBrZy9FbXVWYXJpYWJsZUZ2YlJ1bnRpbWVEeGUvRnZiLmgKQEAgLTU4LDggKzU4 LDE0IEBAIHR5cGVkZWYgc3RydWN0IHsKIC8vDQogLy8gQ29uc3RhbnRzDQogLy8NCi0jZGVmaW5l IEVNVV9GVkJfQkxPQ0tfU0laRSAoRml4ZWRQY2RHZXQzMiAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdT cGFyZVNpemUpKQ0KLSNkZWZpbmUgRU1VX0ZWQl9TSVpFICgyICogRml4ZWRQY2RHZXQzMiAoUGNk Rmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUpKQ0KKyNkZWZpbmUgRU1VX0ZWQl9CTE9DS19TSVpF IFwNCisgIEVGSV9QQUdFX1NJWkUNCisjZGVmaW5lIEVNVV9GVkJfTlVNX1NQQVJFX0JMT0NLUyBc DQorICBFRklfU0laRV9UT19QQUdFUyAoKFVJTlROKUZpeGVkUGNkR2V0MzIgKFBjZEZsYXNoTnZT dG9yYWdlRnR3U3BhcmVTaXplKSkNCisjZGVmaW5lIEVNVV9GVkJfTlVNX1RPVEFMX0JMT0NLUyBc DQorICAoMiAqIEVNVV9GVkJfTlVNX1NQQVJFX0JMT0NLUykNCisjZGVmaW5lIEVNVV9GVkJfU0la RSBcDQorICAoRU1VX0ZWQl9OVU1fVE9UQUxfQkxPQ0tTICogRU1VX0ZWQl9CTE9DS19TSVpFKQ0K ICNkZWZpbmUgRlRXX1dSSVRFX1FVRVVFX1NJWkUgXA0KICAgKEZpeGVkUGNkR2V0MzIgKFBjZEZs YXNoTnZTdG9yYWdlRnR3V29ya2luZ1NpemUpIC0gXA0KICAgIHNpemVvZiAoRUZJX0ZBVUxUX1RP TEVSQU5UX1dPUktJTkdfQkxPQ0tfSEVBREVSKSkNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL0VtdVZh cmlhYmxlRnZiUnVudGltZUR4ZS9GdmIuYyBiL092bWZQa2cvRW11VmFyaWFibGVGdmJSdW50aW1l RHhlL0Z2Yi5jCmluZGV4IGRlYzZkNGFmNTBkZi4uOTkwOTEwZGViMjI3IDEwMDY0NAotLS0gYS9P dm1mUGtnL0VtdVZhcmlhYmxlRnZiUnVudGltZUR4ZS9GdmIuYworKysgYi9Pdm1mUGtnL0VtdVZh cmlhYmxlRnZiUnVudGltZUR4ZS9GdmIuYwpAQCAtNzQsOCArNzQsOCBAQCBFRklfRldfVk9MX0JM T0NLX0RFVklDRSBtRW11VmFyc0Z2YiA9IHsKICAgICB9DQogICB9LA0KICAgTlVMTCwgLy8gQnVm ZmVyUHRyDQotICBGaXhlZFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZSks IC8vIEJsb2NrU2l6ZQ0KLSAgMiAqIEZpeGVkUGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlRnR3 U3BhcmVTaXplKSwgLy8gU2l6ZQ0KKyAgRU1VX0ZWQl9CTE9DS19TSVpFLCAvLyBCbG9ja1NpemUN CisgIEVNVV9GVkJfU0laRSwgLy8gU2l6ZQ0KICAgeyAgICAgLy8gRndWb2xCbG9ja0luc3RhbmNl DQogICAgIEZ2YlByb3RvY29sR2V0QXR0cmlidXRlcywNCiAgICAgRnZiUHJvdG9jb2xTZXRBdHRy aWJ1dGVzLA0KQEAgLTE4NSwxNCArMTg1LDE0IEBAIEZ2YlByb3RvY29sR2V0QmxvY2tTaXplICgK IHsNCiAgIEVGSV9GV19WT0xfQkxPQ0tfREVWSUNFICpGdmJEZXZpY2U7DQogDQotICBpZiAoTGJh ID4gMSkgew0KKyAgaWYgKExiYSA+IEVNVV9GVkJfTlVNX1RPVEFMX0JMT0NLUyAtIDEpIHsNCiAg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgIH0NCiANCiAgIEZ2YkRldmljZSA9 IEZWQl9ERVZJQ0VfRlJPTV9USElTIChUaGlzKTsNCiANCiAgICpCbG9ja1NpemUgPSBGdmJEZXZp Y2UtPkJsb2NrU2l6ZTsNCi0gICpOdW1iZXJPZkJsb2NrcyA9IChVSU5UTikgKDIgLSAoVUlOVE4p IExiYSk7DQorICAqTnVtYmVyT2ZCbG9ja3MgPSAoVUlOVE4pIChFTVVfRlZCX05VTV9UT1RBTF9C TE9DS1MgLSAoVUlOVE4pIExiYSk7DQogDQogICByZXR1cm4gRUZJX1NVQ0NFU1M7DQogfQ0KQEAg LTM0NSw3ICszNDUsOSBAQCBGdmJQcm90b2NvbEVyYXNlQmxvY2tzICgKICAgICAvLw0KICAgICAv LyBDaGVjayBpbnB1dCBwYXJhbWV0ZXJzDQogICAgIC8vDQotICAgIGlmICgoTnVtT2ZMYmEgPT0g MCkgfHwgKFN0YXJ0aW5nTGJhID4gMSkgfHwgKChTdGFydGluZ0xiYSArIE51bU9mTGJhKSA+IDIp KSB7DQorICAgIGlmICgoTnVtT2ZMYmEgPT0gMCkgfHwNCisgICAgICAgIChTdGFydGluZ0xiYSA+ IEVNVV9GVkJfTlVNX1RPVEFMX0JMT0NLUyAtIDEpIHx8DQorICAgICAgICAoKFN0YXJ0aW5nTGJh ICsgTnVtT2ZMYmEpID4gRU1VX0ZWQl9OVU1fVE9UQUxfQkxPQ0tTKSkgew0KICAgICAgIFZBX0VO RCAoYXJncyk7DQogICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCiAgICAgfQ0K QEAgLTM1Myw3ICszNTUsNyBAQCBGdmJQcm90b2NvbEVyYXNlQmxvY2tzICgKICAgICBpZiAoU3Rh cnRpbmdMYmEgPT0gMCkgew0KICAgICAgIEVyYXNlID0gKFVJTlQ4KSAoRXJhc2UgfCBCSVQwKTsN CiAgICAgfQ0KLSAgICBpZiAoKFN0YXJ0aW5nTGJhICsgTnVtT2ZMYmEpID09IDIpIHsNCisgICAg aWYgKChTdGFydGluZ0xiYSArIE51bU9mTGJhKSA9PSBFTVVfRlZCX05VTV9UT1RBTF9CTE9DS1Mp IHsNCiAgICAgICBFcmFzZSA9IChVSU5UOCkgKEVyYXNlIHwgQklUMSk7DQogICAgIH0NCiANCkBA IC02NjMsNyArNjY1LDcgQEAgSW5pdGlhbGl6ZUZ2QW5kVmFyaWFibGVTdG9yZUhlYWRlcnMgKAog ICAgICAgLy8gRUZJX0ZWX0JMT0NLX01BUF9FTlRSWSAgICBCbG9ja01hcFsxXTsNCiAgICAgICB7 IA0KICAgICAgICAgew0KLSAgICAgICAgICAyLCAvLyBVSU5UMzIgTnVtQmxvY2tzOw0KKyAgICAg ICAgICBFTVVfRlZCX05VTV9UT1RBTF9CTE9DS1MsIC8vIFVJTlQzMiBOdW1CbG9ja3M7DQogICAg ICAgICAgIEVNVV9GVkJfQkxPQ0tfU0laRSAgLy8gVUlOVDMyIExlbmd0aDsNCiAgICAgICAgIH0N CiAgICAgICB9DQpAQCAtNzMyLDcgKzczNCw3IEBAIEluaXRpYWxpemVGdkFuZFZhcmlhYmxlU3Rv cmVIZWFkZXJzICgKICAgICAgIC8vIEVGSV9GVl9CTE9DS19NQVBfRU5UUlkgICAgQmxvY2tNYXBb MV07DQogICAgICAgew0KICAgICAgICAgew0KLSAgICAgICAgICAyLCAvLyBVSU5UMzIgTnVtQmxv Y2tzOw0KKyAgICAgICAgICBFTVVfRlZCX05VTV9UT1RBTF9CTE9DS1MsIC8vIFVJTlQzMiBOdW1C bG9ja3M7DQogICAgICAgICAgIEVNVV9GVkJfQkxPQ0tfU0laRSAgLy8gVUlOVDMyIExlbmd0aDsN CiAgICAgICAgIH0NCiAgICAgICB9DQpAQCAtODE0LDcgKzgxNiw3IEBAIEZ2YkluaXRpYWxpemUg KAogICAgICAgIChQY2RHZXQzMiAoUGNkVmFyaWFibGVTdG9yZVNpemUpICsNCiAgICAgICAgIFBj ZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdTaXplKQ0KICAgICAgICApID4NCi0g ICAgICAgRU1VX0ZWQl9CTE9DS19TSVpFDQorICAgICAgIEVNVV9GVkJfQkxPQ0tfU0laRSAqIEVN VV9GVkJfTlVNX1NQQVJFX0JMT0NLUw0KICAgICAgKSB7DQogICAgIERFQlVHICgoRUZJX0RfRVJS T1IsICJFTVUgVmFyaWFibGUgaW52YWxpZCBQQ0Qgc2l6ZXNcbiIpKTsNCiAgICAgcmV0dXJuIEVG SV9JTlZBTElEX1BBUkFNRVRFUjsNCkBAIC04NzcsNyArODc5LDggQEAgRnZiSW5pdGlhbGl6ZSAo CiAgIC8vDQogICAvLyBJbml0aWFsaXplIHRoZSBGYXVsdCBUb2xlcmFudCBXcml0ZSBzcGFyZSBi bG9jaw0KICAgLy8NCi0gIFN1YlB0ciA9IChWT0lEKikgKChVSU5UOCopIFB0ciArIEVNVV9GVkJf QkxPQ0tfU0laRSk7DQorICBTdWJQdHIgPSAoVk9JRCopICgoVUlOVDgqKSBQdHIgKw0KKyAgICAg ICAgICAgICAgICAgICAgRU1VX0ZWQl9CTE9DS19TSVpFICogRU1VX0ZWQl9OVU1fU1BBUkVfQkxP Q0tTKTsNCiAgIFBjZFN0YXR1cyA9IFBjZFNldDMyUyAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFy ZUJhc2UsDQogICAgICAgICAgICAgICAgIChVSU5UMzIpKFVJTlROKSBTdWJQdHIpOw0KICAgQVNT RVJUX1JFVFVSTl9FUlJPUiAoUGNkU3RhdHVzKTsNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1BsYXRm b3JtUGVpL1BsYXRmb3JtLmMgYi9Pdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMKaW5kZXgg NzdhOGExNmMxNWI4Li5jMjgyOWRiY2Y1YzcgMTAwNjQ0Ci0tLSBhL092bWZQa2cvUGxhdGZvcm1Q ZWkvUGxhdGZvcm0uYworKysgYi9Pdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMKQEAgLTUx Myw5ICs1MTMsOCBAQCBSZXNlcnZlRW11VmFyaWFibGVOdlN0b3JlICgKICAgLy8NCiAgIFZhcmlh YmxlU3RvcmUgPQ0KICAgICAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKQ0KLSAgICAgIEFs bG9jYXRlQWxpZ25lZFJ1bnRpbWVQYWdlcyAoDQotICAgICAgICBFRklfU0laRV9UT19QQUdFUyAo MiAqIFBjZEdldDMyIChQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZSkpLA0KLSAgICAgICAg UGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVTaXplKQ0KKyAgICAgIEFsbG9jYXRl UnVudGltZVBhZ2VzICgNCisgICAgICAgIEVGSV9TSVpFX1RPX1BBR0VTICgyICogUGNkR2V0MzIg KFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVTaXplKSkNCiAgICAgICAgICk7DQogICBERUJVRyAo KEVGSV9EX0lORk8sDQogICAgICAgICAgICJSZXNlcnZlZCB2YXJpYWJsZSBzdG9yZSBtZW1vcnk6 IDB4JWxYOyBzaXplOiAlZGtiXG4iLA0KLS0gCjIuOS4zCgo= --------------63BA832C8EF33DB96DF37D77--