From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.groups.io with SMTP id smtpd.web10.7.1615501535649066825 for ; Thu, 11 Mar 2021 14:25:36 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=a5aR5oR1; spf=pass (domain: redhat.com, ip: 216.205.24.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1615501534; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=CIhbiTUwkVIRFMnOGKT72G+P/hsph852px6r9AlFuWc=; b=a5aR5oR1eDTvLYRZnrOhKTo3qOaEr9bGWE2YMety0br19AhNk8Cy/JHmibcmJQVhT2zpAv xXq64y5EwPP/n3BhZBNPMi9E15K6WShT9b5OsEOH32dq4UCcNcIxEqgdBIjtag5QlHpa5/ o9JmT/JfIPO+VnpuZMkFkuviySMCFOw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-195-XaIO4fiqMy6CoiG2g8MuXA-1; Thu, 11 Mar 2021 17:25:29 -0500 X-MC-Unique: XaIO4fiqMy6CoiG2g8MuXA-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8E1ED100C619; Thu, 11 Mar 2021 22:25:27 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-115-158.ams2.redhat.com [10.36.115.158]) by smtp.corp.redhat.com (Postfix) with ESMTP id 62F8F10013C1; Thu, 11 Mar 2021 22:25:25 +0000 (UTC) Subject: Re: [edk2-devel] Conflicting virtual addresses causing Runtime Services issues From: "Laszlo Ersek" To: devel@edk2.groups.io, jon@solid-run.com Cc: Hao A Wu , Liming Gao , "Ard Biesheuvel (TianoCore)" , "Leif Lindholm (Nuvia address)" References: <5363bdf0-afac-73bf-d001-77949916f511@redhat.com> <166B374585A9D8FC.18699@groups.io> <290a35ce-9116-af00-85f4-8df1c5228680@redhat.com> Message-ID: <4841241f-fc6d-6185-efe6-ed9a536534dd@redhat.com> Date: Thu, 11 Mar 2021 23:25:24 +0100 MIME-Version: 1.0 In-Reply-To: <290a35ce-9116-af00-85f4-8df1c5228680@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Groupsio-MsgNum: 72688 Content-Type: multipart/mixed; boundary="------------9CF4CB45C5D9DD9083A83599" Content-Language: en-US --------------9CF4CB45C5D9DD9083A83599 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Adding Ard and Leif, comments below: On 03/11/21 15:50, Laszlo Ersek wrote: > On 03/11/21 10:48, Jon Nettleton wrote: [...] >> And this is where the pointer gets remapped again and into the MMIO >> space of the nor flash. If I remove the calls to ConvertPointer for >> the FvbProtocol I am still seeing those addresses getting remapped >> but only once and runtime works as expected. >> >> I am seeing that in >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c >> &mVariableModuleGlobal->FvbInstance->* are all being converted. It >> is possible this is a long standing bug and it just so happens that >> our configuration has caused a conflict and exposed it. > > Yes, this is curious, I noticed it too yesterday, trying to see where > the FVB protocol member function pointers were converted. I found that > OVMF's flash driver (OvmfPkg/QemuFlashFvbServicesRuntimeDxe) didn't do > it, but MdeModulePkg/Universal/Variable/RuntimeDxe did. That was > certainly strange, as the variable driver is a consumer of the > protocol (not the producer thereof), so I'd say it has no business > poking new values into the protocol interface structure. [...] > ... Strangely, the other flash (FVB) driver in edk2, > ArmPlatformPkg/Drivers/NorFlashDxe, *does* perform the conversion > itself! See NorFlashVirtualNotifyEvent(). > > I don't understand that. Is it possible that, with > "ArmPlatformPkg/Drivers/NorFlashDxe" too, the conversion happens > *twice*, but (at least) one of those mappings is "identity"? Confirmed. I had to write some elaborate debug patches for determining this, because in ArmVirtQemu, I cannot produce DEBUG output from the SetVirtualAddressMap() notification functions. So here's the approach I took: (1) Introduce a new GUID-ed HOB structure in MdeModulePkg. The structure itself lives in reserved memory, but its address is exposed in a GUID-ed HOB. The structure is named FVB_ADDRESS_LIST, and it has the following fields: - signature ("FVBADRLS" -- FVB Address List) - 16 entries of: - owner signature [what driver set this entry] - address - number of entries used (aka next entry to fill) (2) In PlatformPei, allocate and initialize this structure (in reserved memory), and expose its address via the GUID-ed HOB. Furthermore, produce a log message with the allocation address. (3) In NorFlashDxe, look up the structure via the GUID-ed HOB, in the entry point function; remember the address in a global variable. In the SetVirtualAddressMap() handler function, treat the conversion of the "GetPhysicalAddress" FVB member function specially: via the global variable pointer to FVB_ADDRESS_LIST in reserved memory, save both the physical (original) and the virtual (converted) address of the "GetPhysicalAddress" FVB member function, in new entries. As owner signature in both entries, use "NORFLASH". (4) In the runtime DXE variable driver, do the exact same thing, just use a different "owner signature" -- "VARIABLE". (5) Once the guest is up and running, run "efibootmgr --delete-timeout" at a root prompt in the guest, deleting the existent "Timeout" UEFI non-volatile variable, for verifying that the runtime variable (write) service is functional. (6) Using the log message from point (2): > PlatformPeim: FvbAddressList @ 13FEC9000 hexdump the guest memory containing the FVB_ADDRESS_LIST, as follows: > $ virsh qemu-monitor-command aavmf.rhel7.registered --hmp xp /268cb 0x13FEC9000 Ccomments to the right of the hexdump: > 000000013fec9000: 'F' 'V' 'B' 'A' 'D' 'R' 'L' 'S' <- structure signature: FVBADRLS > 000000013fec9008: 'N' 'O' 'R' 'F' 'L' 'A' 'S' 'H' <- entry[0], signature: NORFLASH > 000000013fec9010: 'T' ' ' '\xc6' ';' '\x01' '\x00' '\x00' '\x00' <- entry[0], GetPhysicalAddress *physical*: 0x000000013bc62054 > 000000013fec9018: 'N' 'O' 'R' 'F' 'L' 'A' 'S' 'H' <- entry[1], signature: NORFLASH > 000000013fec9020: 'T' ' ' 'N' '$' '\x00' '\x00' '\x00' '\x00' <- entry[1], GetPhysicalAddress *virtual*: 0x00000000244e2054 > 000000013fec9028: 'V' 'A' 'R' 'I' 'A' 'B' 'L' 'E' <- entry[2], signature: VARIABLE > 000000013fec9030: 'T' ' ' 'N' '$' '\x00' '\x00' '\x00' '\x00' <- entry[2], GetPhysicalAddress *physical*: 0x00000000244e2054 > 000000013fec9038: 'V' 'A' 'R' 'I' 'A' 'B' 'L' 'E' <- entry[3], signature: VARIABLE > 000000013fec9040: 'T' ' ' 'N' '$' '\x00' '\x00' '\x00' '\x00' <- entry[3], GetPhysicalAddress *virtual*: 0x00000000244e2054 > 000000013fec9048: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9050: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9058: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9060: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9068: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9070: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9078: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9080: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9088: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9090: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9098: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90a0: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90a8: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90b0: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90b8: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90c0: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90c8: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90d0: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90d8: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90e0: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90e8: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90f0: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec90f8: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9100: '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' '\x00' > 000000013fec9108: '\x04' '\x00' '\x00' '\x00' <- number of entries used: 4 This shows the following: - both NorFlashDxe and the runtime DXE variable driver converted the FVB.GetPhysicalAddress member function, - the NorFlashDxe driver acted first, the runtime DXE variable driver acted second, - when the runtime DXE variable driver "converted" the "physical" address to virtual address, there was no change (and no crash!), because the virtual address map passed in by the Linux kernel apparently identity maps this area -- just as I guessed. So we definitely have a bug (only Linux's page tables save us from the crash); now the question is: Which driver is wrong to even attempt the conversion of the FVB member functions? The answer must be documented somewhere highly visible. Debug patches attached, for the record (based on commit edd46cd407ea). Thanks Laszlo --------------9CF4CB45C5D9DD9083A83599 Content-Type: text/x-patch; name="0001-MdeModulePkg-Guid-introduce-FVB_ADDRESS_LIST.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-MdeModulePkg-Guid-introduce-FVB_ADDRESS_LIST.patch" RnJvbSA2NjcwYjc0Zjk0ZGNhOWRjZGNmZGNhYmMzNzA1MjdjNzM1YmIxNTJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBUaHUsIDExIE1hciAyMDIxIDIxOjA4OjA5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxLzRdIE1k ZU1vZHVsZVBrZy9HdWlkOiBpbnRyb2R1Y2UgRlZCX0FERFJFU1NfTElTVAoKSW50cm9kdWNlIGEg bmV3IEdVSURlZCBIT0IuIFRoZSBHVUlEZWQgSE9CIGNvbnRhaW5zIGEgNjQtYml0IHBoeXNpY2Fs CmFkZHJlc3MgKEZWQl9BRERSRVNTX0xJU1RfUFRSKSwgcG9pbnRpbmcgdG8gRlZCX0FERFJFU1Nf TElTVC4KRlZCX0FERFJFU1NfTElTVCBpdHNlbGYgbGl2ZXMgaW4gcmVzZXJ2ZWQgbWVtb3J5LCBh bmQgZHJpdmVycyBjYW4gcG9wdWxhdGUKaXQgd2l0aCB1cCB0byAxNiBGVkItcmVsYXRlZCBhZGRy ZXNzZXMgKDY0LWJpdCB3b3JkcykuCgpUaGlzIHdpbGwgYmUgdXNlZCB0byBzdGFzaCB0aGUgb3Jp Z2luYWwgKHBoeXNpY2FsKSBhbmQgY29udmVydGVkICh2aXJ0dWFsKQphZGRyZXNzZXMgb2Ygc29t ZSBGVkIgbWVtYmVyIGZ1bmN0aW9ucywgZm9yIGd1ZXN0IG1lbW9yeSBkdW1waW5nIGFuZApkZWJ1 Z2dpbmcgcHVycG9zZXMuCgpTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRo YXQuY29tPgotLS0KIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjICAgICAgICAgICAgICB8 ICAzICsrCiBNZGVNb2R1bGVQa2cvSW5jbHVkZS9HdWlkL0Z2YkFkZHJlc3NMaXN0LmggfCA0NSAr KysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMgYi9NZGVNb2R1bGVQa2cv TWRlTW9kdWxlUGtnLmRlYwppbmRleCBmMTE0NDE0NGJlMTQuLmE2N2Y0ZThlYjkyYyAxMDA2NDQK LS0tIGEvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMKKysrIGIvTWRlTW9kdWxlUGtnL01k ZU1vZHVsZVBrZy5kZWMKQEAgLTQwMCwxNCArNDAwLDE3IEBAIFtHdWlkc10KIA0KICAgIyMgR1VJ RCBpbmRpY2F0ZXMgdGhlIGNhcHN1bGUgaXMgdG8gc3RvcmUgQ2Fwc3VsZSBPbiBEaXNrIGZpbGUg bmFtZXMuDQogICBnRWRraWlDYXBzdWxlT25EaXNrTmFtZUd1aWQgPSB7IDB4OThjODBhNGYsIDB4 ZTE2YiwgMHg0ZDExLCB7IDB4OTMsIDB4OWEsIDB4YWIsIDB4ZTUsIDB4NjEsIDB4MjYsIDB4Mywg MHgzMCB9IH0NCiANCiAgICMjIEluY2x1ZGUvR3VpZC9NaWdyYXRlZEZ2SW5mby5oDQogICBnRWRr aWlNaWdyYXRlZEZ2SW5mb0d1aWQgPSB7IDB4YzFhYjEyZjcsIDB4NzRhYSwgMHg0MDhkLCB7IDB4 YTIsIDB4ZjQsIDB4YzYsIDB4Y2UsIDB4ZmQsIDB4MTcsIDB4OTgsIDB4NzEgfSB9DQogDQorICAj IyBJbmNsdWRlL0d1aWQvRnZiQWRkcmVzc0xpc3QuaA0KKyAgZ0Vka2lpRnZiQWRkcmVzc0xpc3RH dWlkID0geyAweGFhODdiZjAwLCAweDdmNzYsIDB4NGUzMiwgeyAweGIzLCAweDkyLCAweDg2LCAw eGExLCAweDNlLCAweDM3LCAweDMzLCAweDExIH0gfQ0KKw0KIFtQcGlzXQ0KICAgIyMgSW5jbHVk ZS9QcGkvQXRhQ29udHJvbGxlci5oDQogICBnUGVpQXRhQ29udHJvbGxlclBwaUd1aWQgICAgICAg PSB7IDB4YTQ1ZTYwZDEsIDB4YzcxOSwgMHg0NGFhLCB7IDB4YjAsIDB4N2EsIDB4YWEsIDB4Nzcs IDB4N2YsIDB4ODUsIDB4OTAsIDB4NmQgfX0NCiANCiAgICMjIEluY2x1ZGUvUHBpL1VzYkhvc3RD b250cm9sbGVyLmgNCiAgIGdQZWlVc2JIb3N0Q29udHJvbGxlclBwaUd1aWQgICA9IHsgMHg2NTJC MzhBOSwgMHg3N0Y0LCAweDQ1M0YsIHsgMHg4OSwgMHhENSwgMHhFNywgMHhCRCwgMHhDMywgMHg1 MiwgMHhGQywgMHg1MyB9fQ0KIA0KZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL0d1 aWQvRnZiQWRkcmVzc0xpc3QuaCBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL0d1aWQvRnZiQWRkcmVz c0xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkyYWE3ODEz ODNmNQotLS0gL2Rldi9udWxsCisrKyBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL0d1aWQvRnZiQWRk cmVzc0xpc3QuaApAQCAtMCwwICsxLDQ1IEBACisvKiogQGZpbGUNCisgIFN0YXNoIEZWQi1yZWxh dGVkIGFkZHJlc3NlcyBpbiBhIHJlc2VydmVkIG1lbW9yeSBzdHJ1Y3R1cmUsIHBvaW50ZWQtdG8g YnkgYQ0KKyAgcG9pbnRlciBsaXZpbmcgaW4gYSBHVUlELWVkIEhPQi4NCisNCisgIENvcHlyaWdo dCAoQykgMjAyMSBSZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpZm5kZWYgRlZCX0FERFJFU1NfTElTVF9I Xw0KKyNkZWZpbmUgRlZCX0FERFJFU1NfTElTVF9IXw0KKw0KKyNkZWZpbmUgRURLSUlfRlZCX0FE RFJFU1NfTElTVF9HVUlEICAgICAgICAgICAgICAgICAgICBcDQorICB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgMHhhYTg3YmYwMCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAweDdmNzYsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgIDB4NGUzMiwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgeyAweGIz LCAweDkyLCAweDg2LCAweGExLCAweDNlLCAweDM3LCAweDMzLCAweDExIH0gXA0KKyAgfQ0KKw0K KyNkZWZpbmUgRlZCX0FERFJFU1NfTElTVF9TSUdOQVRVUkUgXA0KKyAgU0lHTkFUVVJFXzY0ICgn RicsICdWJywgJ0InLCAnQScsICdEJywgJ1InLCAnTCcsICdTJykNCisNCit0eXBlZGVmIHN0cnVj dCB7DQorICBVSU5UNjQgT3duZXJTaWduYXR1cmU7DQorICBVSU5UNjQgQWRkcmVzczsNCit9IEZW Ql9BRERSRVNTX0xJU1RfRU5UUlk7DQorDQorLy8NCisvLyBsaXZlcyBpbiByZXNlcnZlZCBtZW1v cnkNCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJTlQ2NCAgICAgICAgICAgICAgICAgU2ln bmF0dXJlOw0KKyAgRlZCX0FERFJFU1NfTElTVF9FTlRSWSBFbnRyeVsxNl07DQorICBVSU5UMzIg ICAgICAgICAgICAgICAgIE5leHQ7DQorfSBGVkJfQUREUkVTU19MSVNUOw0KKw0KKy8vDQorLy8g SE9CIGNvbnRlbnRzOiBhIHBvaW50ZXIgdG8gRlZCX0FERFJFU1NfTElTVA0KKy8vDQordHlwZWRl ZiBVSU5UNjQgRlZCX0FERFJFU1NfTElTVF9QVFI7DQorDQorZXh0ZXJuIEVGSV9HVUlEIGdFZGtp aUZ2YkFkZHJlc3NMaXN0R3VpZDsNCisNCisjZW5kaWYgLy8gRlZCX0FERFJFU1NfTElTVF9IXw0K LS0gCjIuMTkuMS4zLmczMDI0N2FhNWQyMDEKCg== --------------9CF4CB45C5D9DD9083A83599 Content-Type: text/x-patch; name="0002-ArmVirtPkg-PlatformPeiLib-create-FVB_ADDRESS_LIST.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0002-ArmVirtPkg-PlatformPeiLib-create-FVB_ADDRESS_LIST.patch" RnJvbSBkNjFiZjYyMGJlYjM3OTA5N2VjYTI3MDVlMGNmMTM1Zjk0MWYxM2JkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBUaHUsIDExIE1hciAyMDIxIDIxOjM1OjU1ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyLzRdIEFy bVZpcnRQa2cvUGxhdGZvcm1QZWlMaWI6IGNyZWF0ZSBGVkJfQUREUkVTU19MSVNUCgpBbGxvY2F0 ZSBhbmQgaW5pdGlhbGl6ZSBGVkJfQUREUkVTU19MSVNUIGluIGEgbmV3IHJlc2VydmVkIG1lbW9y eSBwYWdlLAphbmQgZXhwb3NlIHRoZSBhZGRyZXNzIGluIHRoZSBFREtJSV9GVkJfQUREUkVTU19M SVNUX0dVSUQgSE9CLgoKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0 LmNvbT4KLS0tCiBBcm1WaXJ0UGtnL0xpYnJhcnkvUGxhdGZvcm1QZWlMaWIvUGxhdGZvcm1QZWlM aWIuaW5mIHwgIDIgKwogQXJtVmlydFBrZy9MaWJyYXJ5L1BsYXRmb3JtUGVpTGliL1BsYXRmb3Jt UGVpTGliLmMgICB8IDU4ICsrKysrKysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDQx IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0FybVZpcnRQa2cv TGlicmFyeS9QbGF0Zm9ybVBlaUxpYi9QbGF0Zm9ybVBlaUxpYi5pbmYgYi9Bcm1WaXJ0UGtnL0xp YnJhcnkvUGxhdGZvcm1QZWlMaWIvUGxhdGZvcm1QZWlMaWIuaW5mCmluZGV4IDNmOTdlZjA4MDUy MC4uNzhlZWY5NjJmZGFjIDEwMDY0NAotLS0gYS9Bcm1WaXJ0UGtnL0xpYnJhcnkvUGxhdGZvcm1Q ZWlMaWIvUGxhdGZvcm1QZWlMaWIuaW5mCisrKyBiL0FybVZpcnRQa2cvTGlicmFyeS9QbGF0Zm9y bVBlaUxpYi9QbGF0Zm9ybVBlaUxpYi5pbmYKQEAgLTI3LDE0ICsyNywxNSBAQCBbUGFja2FnZXNd CiAgIE92bWZQa2cvT3ZtZlBrZy5kZWMNCiAgIFNlY3VyaXR5UGtnL1NlY3VyaXR5UGtnLmRlYw0K IA0KIFtGZWF0dXJlUGNkXQ0KICAgZ0FybVZpcnRUb2tlblNwYWNlR3VpZC5QY2RUcG0yU3VwcG9y dEVuYWJsZWQNCiANCiBbTGlicmFyeUNsYXNzZXNdDQorICBCYXNlTWVtb3J5TGliDQogICBEZWJ1 Z0xpYg0KICAgSG9iTGliDQogICBGZHRMaWINCiAgIFBjZExpYg0KICAgUGVpU2VydmljZXNMaWIN CiANCiBbRml4ZWRQY2RdDQpAQCAtNDgsMTEgKzQ5LDEyIEBAIFtQY2RdCiANCiBbUHBpc10NCiAg IGdPdm1mVHBtRGlzY292ZXJlZFBwaUd1aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyMgU09NRVRJTUVTX1BST0RVQ0VTDQogICBnUGVpVHBtSW5pdGlhbGl6YXRpb25Eb25lUHBpR3Vp ZCAgICAgICAgICAgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19QUk9EVUNFUw0KIA0KIFtHdWlk c10NCiAgIGdFYXJseVBMMDExQmFzZUFkZHJlc3NHdWlkDQorICBnRWRraWlGdmJBZGRyZXNzTGlz dEd1aWQNCiAgIGdGZHRIb2JHdWlkDQogDQogW0RlcGV4XQ0KICAgZ0VmaVBlaU1lbW9yeURpc2Nv dmVyZWRQcGlHdWlkDQpkaWZmIC0tZ2l0IGEvQXJtVmlydFBrZy9MaWJyYXJ5L1BsYXRmb3JtUGVp TGliL1BsYXRmb3JtUGVpTGliLmMgYi9Bcm1WaXJ0UGtnL0xpYnJhcnkvUGxhdGZvcm1QZWlMaWIv UGxhdGZvcm1QZWlMaWIuYwppbmRleCA2YzQwMjhlMTc5OTUuLjA3OWVjZmFkMzM2ZCAxMDA2NDQK LS0tIGEvQXJtVmlydFBrZy9MaWJyYXJ5L1BsYXRmb3JtUGVpTGliL1BsYXRmb3JtUGVpTGliLmMK KysrIGIvQXJtVmlydFBrZy9MaWJyYXJ5L1BsYXRmb3JtUGVpTGliL1BsYXRmb3JtUGVpTGliLmMK QEAgLTUsMTQgKzUsMTYgQEAKICoNCiAqICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KICoNCiAqKi8NCiANCiAjaW5jbHVkZSA8UGlQZWkuaD4NCiANCisjaW5j bHVkZSA8R3VpZC9GdmJBZGRyZXNzTGlzdC5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1v cnlMaWIuaD4NCiAjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQogI2lu Y2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCiAjaW5jbHVkZSA8TGlicmFyeS9Ib2JMaWIuaD4N CiAjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4NCiAjaW5jbHVkZSA8TGlicmFyeS9QZWlTZXJ2 aWNlc0xpYi5oPg0KICNpbmNsdWRlIDxsaWJmZHQuaD4NCiANCkBAIC0zMywzMyArMzUsMzUgQEAg U1RBVElDIENPTlNUIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1IgbVRwbTJJbml0aWFsaXphdGlvbkRv bmVQcGkgPSB7CiANCiBFRklfU1RBVFVTDQogRUZJQVBJDQogUGxhdGZvcm1QZWltICgNCiAgIFZP SUQNCiAgICkNCiB7DQotICBWT0lEICAgICAgICAgICAgICAgKkJhc2U7DQotICBWT0lEICAgICAg ICAgICAgICAgKk5ld0Jhc2U7DQotICBVSU5UTiAgICAgICAgICAgICAgRmR0U2l6ZTsNCi0gIFVJ TlROICAgICAgICAgICAgICBGZHRQYWdlczsNCi0gIFVJTlQ2NCAgICAgICAgICAgICAqRmR0SG9i RGF0YTsNCi0gIFVJTlQ2NCAgICAgICAgICAgICAqVWFydEhvYkRhdGE7DQotICBJTlQzMiAgICAg ICAgICAgICAgTm9kZSwgUHJldjsNCi0gIElOVDMyICAgICAgICAgICAgICBQYXJlbnQsIERlcHRo Ow0KLSAgQ09OU1QgQ0hBUjggICAgICAgICpDb21wYXRpYmxlOw0KLSAgQ09OU1QgQ0hBUjggICAg ICAgICpDb21wSXRlbTsNCi0gIENPTlNUIENIQVI4ICAgICAgICAqTm9kZVN0YXR1czsNCi0gIElO VDMyICAgICAgICAgICAgICBMZW47DQotICBJTlQzMiAgICAgICAgICAgICAgUmFuZ2VzTGVuOw0K LSAgSU5UMzIgICAgICAgICAgICAgIFN0YXR1c0xlbjsNCi0gIENPTlNUIFVJTlQ2NCAgICAgICAq UmVnUHJvcDsNCi0gIENPTlNUIFVJTlQzMiAgICAgICAqUmFuZ2VzUHJvcDsNCi0gIFVJTlQ2NCAg ICAgICAgICAgICBVYXJ0QmFzZTsNCi0gIFVJTlQ2NCAgICAgICAgICAgICBUcG1CYXNlOw0KLSAg RUZJX1NUQVRVUyAgICAgICAgIFN0YXR1czsNCisgIFZPSUQgICAgICAgICAgICAgICAgICpCYXNl Ow0KKyAgVk9JRCAgICAgICAgICAgICAgICAgKk5ld0Jhc2U7DQorICBVSU5UTiAgICAgICAgICAg ICAgICBGZHRTaXplOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgRmR0UGFnZXM7DQorICBVSU5U NjQgICAgICAgICAgICAgICAqRmR0SG9iRGF0YTsNCisgIFVJTlQ2NCAgICAgICAgICAgICAgICpV YXJ0SG9iRGF0YTsNCisgIElOVDMyICAgICAgICAgICAgICAgIE5vZGUsIFByZXY7DQorICBJTlQz MiAgICAgICAgICAgICAgICBQYXJlbnQsIERlcHRoOw0KKyAgQ09OU1QgQ0hBUjggICAgICAgICAg KkNvbXBhdGlibGU7DQorICBDT05TVCBDSEFSOCAgICAgICAgICAqQ29tcEl0ZW07DQorICBDT05T VCBDSEFSOCAgICAgICAgICAqTm9kZVN0YXR1czsNCisgIElOVDMyICAgICAgICAgICAgICAgIExl bjsNCisgIElOVDMyICAgICAgICAgICAgICAgIFJhbmdlc0xlbjsNCisgIElOVDMyICAgICAgICAg ICAgICAgIFN0YXR1c0xlbjsNCisgIENPTlNUIFVJTlQ2NCAgICAgICAgICpSZWdQcm9wOw0KKyAg Q09OU1QgVUlOVDMyICAgICAgICAgKlJhbmdlc1Byb3A7DQorICBVSU5UNjQgICAgICAgICAgICAg ICBVYXJ0QmFzZTsNCisgIFVJTlQ2NCAgICAgICAgICAgICAgIFRwbUJhc2U7DQorICBFRklfU1RB VFVTICAgICAgICAgICBTdGF0dXM7DQorICBGVkJfQUREUkVTU19MSVNUICAgICAqRnZiQWRkcmVz c0xpc3Q7DQorICBGVkJfQUREUkVTU19MSVNUX1BUUiAqRnZiQWRkcmVzc0xpc3RQdHJIb2JEYXRh Ow0KIA0KICAgQmFzZSA9IChWT0lEKikoVUlOVE4pUGNkR2V0NjQgKFBjZERldmljZVRyZWVJbml0 aWFsQmFzZUFkZHJlc3MpOw0KICAgQVNTRVJUIChCYXNlICE9IE5VTEwpOw0KICAgQVNTRVJUIChm ZHRfY2hlY2tfaGVhZGVyIChCYXNlKSA9PSAwKTsNCiANCiAgIEZkdFNpemUgPSBmZHRfdG90YWxz aXplIChCYXNlKSArIFBjZEdldDMyIChQY2REZXZpY2VUcmVlQWxsb2NhdGlvblBhZGRpbmcpOw0K ICAgRmR0UGFnZXMgPSBFRklfU0laRV9UT19QQUdFUyAoRmR0U2l6ZSk7DQpAQCAtMTgxLDkgKzE4 NSwyNSBAQCBQbGF0Zm9ybVBlaW0gKAogICAgICAgU3RhdHVzID0gUGVpU2VydmljZXNJbnN0YWxs UHBpICgmbVRwbTJJbml0aWFsaXphdGlvbkRvbmVQcGkpOw0KICAgICB9DQogICAgIEFTU0VSVF9F RklfRVJST1IgKFN0YXR1cyk7DQogICB9DQogDQogICBCdWlsZEZ2SG9iIChQY2RHZXQ2NCAoUGNk RnZCYXNlQWRkcmVzcyksIFBjZEdldDMyIChQY2RGdlNpemUpKTsNCiANCisgIC8vDQorICAvLyBB bGxvY2F0ZSwgaW5pdGlhbGl6ZSwgYW5kIGV4cG9zZSBGVkJfQUREUkVTU19MSVNULg0KKyAgLy8N CisgIEZ2YkFkZHJlc3NMaXN0ID0gQWxsb2NhdGVSZXNlcnZlZFBhZ2VzICgNCisgICAgICAgICAg ICAgICAgICAgICBFRklfU0laRV9UT19QQUdFUyAoc2l6ZW9mICpGdmJBZGRyZXNzTGlzdCkpOw0K KyAgQVNTRVJUIChGdmJBZGRyZXNzTGlzdCAhPSBOVUxMKTsNCisgIERFQlVHICgoREVCVUdfVkVS Qk9TRSwgIiVhOiBGdmJBZGRyZXNzTGlzdCBAICVwXG4iLCBfX0ZVTkNUSU9OX18sDQorICAgIChW T0lEICopRnZiQWRkcmVzc0xpc3QpKTsNCisgIEZ2YkFkZHJlc3NMaXN0LT5TaWduYXR1cmUgPSBG VkJfQUREUkVTU19MSVNUX1NJR05BVFVSRTsNCisgIFplcm9NZW0gKEZ2YkFkZHJlc3NMaXN0LT5F bnRyeSwgc2l6ZW9mIEZ2YkFkZHJlc3NMaXN0LT5FbnRyeSk7DQorICBGdmJBZGRyZXNzTGlzdC0+ TmV4dCA9IDA7DQorICBGdmJBZGRyZXNzTGlzdFB0ckhvYkRhdGEgPSBCdWlsZEd1aWRIb2IgKCZn RWRraWlGdmJBZGRyZXNzTGlzdEd1aWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVvZiAqRnZiQWRkcmVzc0xpc3RQdHJIb2JEYXRhKTsNCisgIEFTU0VSVCAoRnZiQWRkcmVz c0xpc3RQdHJIb2JEYXRhICE9IE5VTEwpOw0KKyAgKkZ2YkFkZHJlc3NMaXN0UHRySG9iRGF0YSA9 IChVSU5UTilGdmJBZGRyZXNzTGlzdDsNCisNCiAgIHJldHVybiBFRklfU1VDQ0VTUzsNCiB9DQot LSAKMi4xOS4xLjMuZzMwMjQ3YWE1ZDIwMQoK --------------9CF4CB45C5D9DD9083A83599 Content-Type: text/x-patch; name="0003-ArmPlatformPkg-NorFlashDxe-populate-FVB_ADDRESS_LIST.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0003-ArmPlatformPkg-NorFlashDxe-populate-FVB_ADDRESS_LIST.pa"; filename*1="tch" RnJvbSBhNjU2MDQ2MTcxY2Q5ODYwMGQ0ZjY4MTBmMWQ5Zjg1NmFiYTE5YjZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBUaHUsIDExIE1hciAyMDIxIDIyOjE2OjQxICswMTAwClN1YmplY3Q6IFtQQVRDSCAzLzRdIEFy bVBsYXRmb3JtUGtnL05vckZsYXNoRHhlOiBwb3B1bGF0ZSBGVkJfQUREUkVTU19MSVNUCgpXaGVu IHRoZSBTZXRWaXJ0dWFsQWRkcmVzc01hcCgpIGhhbmRsZXIgcnVucywgYW5kIHdlIGNvbnZlcnQg KGFtb25nIG90aGVyCnRoaW5ncykgdGhlIEdldFBoeXNpY2FsQWRkcmVzcygpIEZWQiBtZW1iZXIg ZnVuY3Rpb24gcG9pbnRlciwgc3Rhc2ggYm90aAp0aGUgcGh5c2ljYWwgYW5kIHRoZSB2aXJ0dWFs IGFkZHJlc3NlcyBvZiB0aGlzIG1lbWJlciBmdW5jdGlvbiwgaW4KRlZCX0FERFJFU1NfTElTVC4K ClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQogQXJt UGxhdGZvcm1Qa2cvRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaER4ZS5pbmYgfCAgMSArCiBB cm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL05vckZsYXNoRHhlL05vckZsYXNoLmMgICAgICB8IDI3ICsr KysrKysrKysrKysrKysrKy0tCiBBcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL05vckZsYXNoRHhlL05v ckZsYXNoRHhlLmMgICB8IDExICsrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvQXJtUGxhdGZvcm1Qa2cvRHJpdmVy cy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaER4ZS5pbmYgYi9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL05v ckZsYXNoRHhlL05vckZsYXNoRHhlLmluZgppbmRleCBmOGQ0YzI3MDMxNDMuLjFlYmE1Zjg2OWM1 NSAxMDA2NDQKLS0tIGEvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFz aER4ZS5pbmYKKysrIGIvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFz aER4ZS5pbmYKQEAgLTQzLDE0ICs0MywxNSBAQCBbTGlicmFyeUNsYXNzZXNdCiANCiBbR3VpZHNd DQogICBnRWZpU3lzdGVtTnZEYXRhRnZHdWlkDQogICBnRWZpVmFyaWFibGVHdWlkDQogICBnRWZp QXV0aGVudGljYXRlZFZhcmlhYmxlR3VpZA0KICAgZ0VmaUV2ZW50VmlydHVhbEFkZHJlc3NDaGFu Z2VHdWlkDQogICBnRWRraWlOdlZhclN0b3JlRm9ybWF0dGVkR3VpZCAgICAgIyMgUFJPRFVDRVMg IyMgUFJPVE9DT0wNCisgIGdFZGtpaUZ2YkFkZHJlc3NMaXN0R3VpZA0KIA0KIFtQcm90b2NvbHNd DQogICBnRWZpQmxvY2tJb1Byb3RvY29sR3VpZA0KICAgZ0VmaURldmljZVBhdGhQcm90b2NvbEd1 aWQNCiAgIGdFZmlGaXJtd2FyZVZvbHVtZUJsb2NrUHJvdG9jb2xHdWlkDQogICBnRWZpRGlza0lv UHJvdG9jb2xHdWlkDQogDQpkaWZmIC0tZ2l0IGEvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9Ob3JG bGFzaER4ZS9Ob3JGbGFzaC5jIGIvQXJtUGxhdGZvcm1Qa2cvRHJpdmVycy9Ob3JGbGFzaER4ZS9O b3JGbGFzaC5jCmluZGV4IGE5ZTIzZGI0NDYxYi4uNzNmYWNhNTQ5YmRhIDEwMDY0NAotLS0gYS9B cm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL05vckZsYXNoRHhlL05vckZsYXNoLmMKKysrIGIvQXJtUGxh dGZvcm1Qa2cvRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaC5jCkBAIC0zLDIzICszLDI1IEBA CiAgIENvcHlyaWdodCAoYykgMjAxMSAtIDIwMjAsIEFybSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCiAgIENvcHlyaWdodCAoYykgMjAyMCwgTGluYXJvLCBMdGQuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuPEJSPg0KIA0KICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCiANCiAqKi8NCiANCisjaW5jbHVkZSA8R3VpZC9GdmJBZGRyZXNzTGlzdC5o Pg0KICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCiANCiAjaW5jbHVkZSAiTm9y Rmxhc2guaCINCiANCiAvLw0KIC8vIEdsb2JhbCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMNCiAvLw0K IGV4dGVybiBOT1JfRkxBU0hfSU5TVEFOQ0UgKiptTm9yRmxhc2hJbnN0YW5jZXM7DQogZXh0ZXJu IFVJTlQzMiAgICAgICAgICAgICAgIG1Ob3JGbGFzaERldmljZUNvdW50Ow0KK2V4dGVybiBGVkJf QUREUkVTU19MSVNUICAgICAqbUZ2YkFkZHJlc3NMaXN0Ow0KIA0KIFVJTlQzMg0KIE5vckZsYXNo UmVhZFN0YXR1c1JlZ2lzdGVyICgNCiAgIElOIE5PUl9GTEFTSF9JTlNUQU5DRSAgICAgKkluc3Rh bmNlLA0KICAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBTUl9BZGRyZXNzDQogICApDQogew0K QEAgLTkzOSwzNSArOTQxLDU2IEBAIE5vckZsYXNoUmVzZXQgKAogVk9JRA0KIEVGSUFQSQ0KIE5v ckZsYXNoVmlydHVhbE5vdGlmeUV2ZW50ICgNCiAgIElOIEVGSV9FVkVOVCAgICAgICAgRXZlbnQs DQogICBJTiBWT0lEICAgICAgICAgICAgICpDb250ZXh0DQogICApDQogew0KLSAgVUlOVE4gSW5k ZXg7DQorICBVSU5UNjQgICAgICAgICAgICAgICAgIE93bmVyU2lnbmF0dXJlOw0KKyAgRlZCX0FE RFJFU1NfTElTVF9FTlRSWSAqRW50cnk7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgIEluZGV4 Ow0KKw0KKyAgT3duZXJTaWduYXR1cmUgPSBTSUdOQVRVUkVfNjQgKCdOJywgJ08nLCAnUicsICdG JywgJ0wnLCAnQScsICdTJywgJ0gnKTsNCisgIEVudHJ5ICAgICAgICAgID0gbUZ2YkFkZHJlc3NM aXN0LT5FbnRyeSArIG1GdmJBZGRyZXNzTGlzdC0+TmV4dDsNCiANCiAgIGZvciAoSW5kZXggPSAw OyBJbmRleCA8IG1Ob3JGbGFzaERldmljZUNvdW50OyBJbmRleCsrKSB7DQorICAgIFZPSUQgKlBv aW50ZXI7DQorDQogICAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEKiopJm1Ob3JGbGFz aEluc3RhbmNlc1tJbmRleF0tPkRldmljZUJhc2VBZGRyZXNzKTsNCiAgICAgRWZpQ29udmVydFBv aW50ZXIgKDB4MCwgKFZPSUQqKikmbU5vckZsYXNoSW5zdGFuY2VzW0luZGV4XS0+UmVnaW9uQmFz ZUFkZHJlc3MpOw0KIA0KICAgICAvLyBDb252ZXJ0IEJsb2NrSW8gcHJvdG9jb2wNCiAgICAgRWZp Q29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQqKikmbU5vckZsYXNoSW5zdGFuY2VzW0luZGV4XS0+ QmxvY2tJb1Byb3RvY29sLkZsdXNoQmxvY2tzKTsNCiAgICAgRWZpQ29udmVydFBvaW50ZXIgKDB4 MCwgKFZPSUQqKikmbU5vckZsYXNoSW5zdGFuY2VzW0luZGV4XS0+QmxvY2tJb1Byb3RvY29sLlJl YWRCbG9ja3MpOw0KICAgICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCoqKSZtTm9yRmxh c2hJbnN0YW5jZXNbSW5kZXhdLT5CbG9ja0lvUHJvdG9jb2wuUmVzZXQpOw0KICAgICBFZmlDb252 ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCoqKSZtTm9yRmxhc2hJbnN0YW5jZXNbSW5kZXhdLT5CbG9j a0lvUHJvdG9jb2wuV3JpdGVCbG9ja3MpOw0KIA0KICAgICAvLyBDb252ZXJ0IEZ2Yg0KICAgICBF ZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCoqKSZtTm9yRmxhc2hJbnN0YW5jZXNbSW5kZXhd LT5GdmJQcm90b2NvbC5FcmFzZUJsb2Nrcyk7DQogICAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAs IChWT0lEKiopJm1Ob3JGbGFzaEluc3RhbmNlc1tJbmRleF0tPkZ2YlByb3RvY29sLkdldEF0dHJp YnV0ZXMpOw0KICAgICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCoqKSZtTm9yRmxhc2hJ bnN0YW5jZXNbSW5kZXhdLT5GdmJQcm90b2NvbC5HZXRCbG9ja1NpemUpOw0KLSAgICBFZmlDb252 ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCoqKSZtTm9yRmxhc2hJbnN0YW5jZXNbSW5kZXhdLT5GdmJQ cm90b2NvbC5HZXRQaHlzaWNhbEFkZHJlc3MpOw0KKw0KKyAgICBQb2ludGVyID0gKFZPSUQgKiko VUlOVE4pbU5vckZsYXNoSW5zdGFuY2VzW0luZGV4XS0+RnZiUHJvdG9jb2wuR2V0UGh5c2ljYWxB ZGRyZXNzOw0KKyAgICBFbnRyeS0+T3duZXJTaWduYXR1cmUgPSBPd25lclNpZ25hdHVyZTsNCisg ICAgRW50cnktPkFkZHJlc3MgICAgICAgID0gKFVJTlROKVBvaW50ZXI7DQorICAgICsrRW50cnk7 DQorDQorICAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsICZQb2ludGVyKTsNCisgICAgbU5vckZs YXNoSW5zdGFuY2VzW0luZGV4XS0+RnZiUHJvdG9jb2wuR2V0UGh5c2ljYWxBZGRyZXNzID0NCisg ICAgICAoRUZJX0ZWQl9HRVRfUEhZU0lDQUxfQUREUkVTUykoVUlOVE4pUG9pbnRlcjsNCisNCisg ICAgRW50cnktPk93bmVyU2lnbmF0dXJlID0gT3duZXJTaWduYXR1cmU7DQorICAgIEVudHJ5LT5B ZGRyZXNzICAgICAgICA9IChVSU5UTilQb2ludGVyOw0KKyAgICArK0VudHJ5Ow0KKw0KICAgICBF ZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCoqKSZtTm9yRmxhc2hJbnN0YW5jZXNbSW5kZXhd LT5GdmJQcm90b2NvbC5SZWFkKTsNCiAgICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQq KikmbU5vckZsYXNoSW5zdGFuY2VzW0luZGV4XS0+RnZiUHJvdG9jb2wuU2V0QXR0cmlidXRlcyk7 DQogICAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEKiopJm1Ob3JGbGFzaEluc3RhbmNl c1tJbmRleF0tPkZ2YlByb3RvY29sLldyaXRlKTsNCiANCiAgICAgaWYgKG1Ob3JGbGFzaEluc3Rh bmNlc1tJbmRleF0tPlNoYWRvd0J1ZmZlciAhPSBOVUxMKSB7DQogICAgICAgRWZpQ29udmVydFBv aW50ZXIgKDB4MCwgKFZPSUQqKikmbU5vckZsYXNoSW5zdGFuY2VzW0luZGV4XS0+U2hhZG93QnVm ZmVyKTsNCiAgICAgfQ0KICAgfQ0KIA0KKyAgbUZ2YkFkZHJlc3NMaXN0LT5OZXh0ID0gRW50cnkg LSBtRnZiQWRkcmVzc0xpc3QtPkVudHJ5Ow0KICAgcmV0dXJuOw0KIH0NCmRpZmYgLS1naXQgYS9B cm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL05vckZsYXNoRHhlL05vckZsYXNoRHhlLmMgYi9Bcm1QbGF0 Zm9ybVBrZy9Ecml2ZXJzL05vckZsYXNoRHhlL05vckZsYXNoRHhlLmMKaW5kZXggZjQxMjczMTIw MGNmLi5mYWQwYjhjMzk3MjMgMTAwNjQ0Ci0tLSBhL0FybVBsYXRmb3JtUGtnL0RyaXZlcnMvTm9y Rmxhc2hEeGUvTm9yRmxhc2hEeGUuYworKysgYi9Bcm1QbGF0Zm9ybVBrZy9Ecml2ZXJzL05vckZs YXNoRHhlL05vckZsYXNoRHhlLmMKQEAgLTIsMTQgKzIsMTUgQEAKIA0KICAgQ29weXJpZ2h0IChj KSAyMDExIC0gMjAyMSwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KIA0K ICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiANCiAqKi8N CiANCisjaW5jbHVkZSA8R3VpZC9GdmJBZGRyZXNzTGlzdC5oPg0KICNpbmNsdWRlIDxMaWJyYXJ5 L1VlZmlMaWIuaD4NCiAjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQogI2luY2x1 ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KICNpbmNsdWRlIDxMaWJyYXJ5L1Vl ZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KICNpbmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0K ICNpbmNsdWRlIDxMaWJyYXJ5L0hvYkxpYi5oPg0KICNpbmNsdWRlIDxMaWJyYXJ5L0R4ZVNlcnZp Y2VzVGFibGVMaWIuaD4NCkBAIC0yMSwxNCArMjIsMTYgQEAgU1RBVElDIEVGSV9FVkVOVCBtTm9y Rmxhc2hWaXJ0dWFsQWRkckNoYW5nZUV2ZW50OwogLy8NCiAvLyBHbG9iYWwgdmFyaWFibGUgZGVj bGFyYXRpb25zDQogLy8NCiBOT1JfRkxBU0hfSU5TVEFOQ0UgKiptTm9yRmxhc2hJbnN0YW5jZXM7 DQogVUlOVDMyICAgICAgICAgICAgICAgbU5vckZsYXNoRGV2aWNlQ291bnQ7DQogVUlOVE4gICAg ICAgICAgICAgICAgbUZsYXNoTnZTdG9yYWdlVmFyaWFibGVCYXNlOw0KIEVGSV9FVkVOVCAgICAg ICAgICAgIG1GdmJWaXJ0dWFsQWRkckNoYW5nZUV2ZW50Ow0KK0ZWQl9BRERSRVNTX0xJU1QgICAg ICptRnZiQWRkcmVzc0xpc3Q7DQorDQogDQogTk9SX0ZMQVNIX0lOU1RBTkNFICBtTm9yRmxhc2hJ bnN0YW5jZVRlbXBsYXRlID0gew0KICAgTk9SX0ZMQVNIX1NJR05BVFVSRSwgLy8gU2lnbmF0dXJl DQogICBOVUxMLCAvLyBIYW5kbGUgLi4uIE5FRUQgVE8gQkUgRklMTEVEDQogDQogICAwLCAvLyBE ZXZpY2VCYXNlQWRkcmVzcyAuLi4gTkVFRCBUTyBCRSBGSUxMRUQNCiAgIDAsIC8vIFJlZ2lvbkJh c2VBZGRyZXNzIC4uLiBORUVEIFRPIEJFIEZJTExFRA0KQEAgLTMxOCwxOSArMzIxLDI3IEBAIE5v ckZsYXNoV3JpdGVGdWxsQmxvY2sgKAogRUZJX1NUQVRVUw0KIEVGSUFQSQ0KIE5vckZsYXNoSW5p dGlhbGlzZSAoDQogICBJTiBFRklfSEFORExFICAgICAgICAgSW1hZ2VIYW5kbGUsDQogICBJTiBF RklfU1lTVEVNX1RBQkxFICAgKlN5c3RlbVRhYmxlDQogICApDQogew0KKyAgVk9JRCAgICAgICAg ICAgICAgICAgICAgKkhvYjsNCisgIEZWQl9BRERSRVNTX0xJU1RfUFRSICAgICpGdmJBZGRyZXNz TGlzdFB0ckhvYkRhdGE7DQogICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7DQogICBV SU5UMzIgICAgICAgICAgICAgICAgICBJbmRleDsNCiAgIE5PUl9GTEFTSF9ERVNDUklQVElPTiog IE5vckZsYXNoRGV2aWNlczsNCiAgIEJPT0xFQU4gICAgICAgICAgICAgICAgIENvbnRhaW5WYXJp YWJsZVN0b3JhZ2U7DQogDQorICBIb2IgPSBHZXRGaXJzdEd1aWRIb2IgKCZnRWRraWlGdmJBZGRy ZXNzTGlzdEd1aWQpOw0KKyAgQVNTRVJUIChIb2IgIT0gTlVMTCk7DQorICBGdmJBZGRyZXNzTGlz dFB0ckhvYkRhdGEgPSBHRVRfR1VJRF9IT0JfREFUQSAoSG9iKTsNCisgIG1GdmJBZGRyZXNzTGlz dCA9IChWT0lEKikoVUlOVE4pKkZ2YkFkZHJlc3NMaXN0UHRySG9iRGF0YTsNCisgIEFTU0VSVCAo bUZ2YkFkZHJlc3NMaXN0LT5TaWduYXR1cmUgPT0gRlZCX0FERFJFU1NfTElTVF9TSUdOQVRVUkUp Ow0KKw0KICAgU3RhdHVzID0gTm9yRmxhc2hQbGF0Zm9ybUluaXRpYWxpemF0aW9uICgpOw0KICAg aWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQogICAgIERFQlVHKChFRklfRF9FUlJPUiwiTm9yRmxh c2hJbml0aWFsaXNlOiBGYWlsIHRvIGluaXRpYWxpemUgTm9yIEZsYXNoIGRldmljZXNcbiIpKTsN CiAgICAgcmV0dXJuIFN0YXR1czsNCiAgIH0NCiANCiAgIFN0YXR1cyA9IE5vckZsYXNoUGxhdGZv cm1HZXREZXZpY2VzICgmTm9yRmxhc2hEZXZpY2VzLCAmbU5vckZsYXNoRGV2aWNlQ291bnQpOw0K LS0gCjIuMTkuMS4zLmczMDI0N2FhNWQyMDEKCg== --------------9CF4CB45C5D9DD9083A83599 Content-Type: text/x-patch; name="0004-MdeModulePkg-VariableRuntimeDxe-populate-FVB_ADDRESS_LIST.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0004-MdeModulePkg-VariableRuntimeDxe-populate-FVB_ADDRESS_LI"; filename*1="ST.patch" RnJvbSBmNDI0NDcwZjY5Y2U4ODExNzY2YjExMThmYzgwMTIzOGYyMjQyNTk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBUaHUsIDExIE1hciAyMDIxIDIyOjE2OjQxICswMTAwClN1YmplY3Q6IFtQQVRDSCA0LzRdIE1k ZU1vZHVsZVBrZy9WYXJpYWJsZVJ1bnRpbWVEeGU6IHBvcHVsYXRlCiBGVkJfQUREUkVTU19MSVNU CgpXaGVuIHRoZSBTZXRWaXJ0dWFsQWRkcmVzc01hcCgpIGhhbmRsZXIgcnVucywgYW5kIHdlIGNv bnZlcnQgKGFtb25nIG90aGVyCnRoaW5ncykgdGhlIEdldFBoeXNpY2FsQWRkcmVzcygpIEZWQiBt ZW1iZXIgZnVuY3Rpb24gcG9pbnRlciwgc3Rhc2ggYm90aAp0aGUgcGh5c2ljYWwgYW5kIHRoZSB2 aXJ0dWFsIGFkZHJlc3NlcyBvZiB0aGlzIG1lbWJlciBmdW5jdGlvbiwgaW4KRlZCX0FERFJFU1Nf TElTVC4KClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0t LQogTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlUnVu dGltZUR4ZS5pbmYgfCAgMiArKwogTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50 aW1lRHhlL1ZhcmlhYmxlLmggICAgICAgICAgICAgfCAgMiArKwogTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlRHhlLmMgICAgICAgICAgfCAzNiArKysr KysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUv UnVudGltZUR4ZS9WYXJpYWJsZVJ1bnRpbWVEeGUuaW5mIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlUnVudGltZUR4ZS5pbmYKaW5kZXggYzk0MzRk ZjYzMWVlLi5lNGNjNDk2OTJmMmQgMTAwNjQ0Ci0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwv VmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVJ1bnRpbWVEeGUuaW5mCisrKyBiL01kZU1vZHVs ZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVJ1bnRpbWVEeGUuaW5m CkBAIC0xMjAsMTQgKzEyMCwxNiBAQCBbR3VpZHNdCiAgIGdFZGtpaVZhckVycm9yRmxhZ0d1aWQN CiANCiAgICMjIFNPTUVUSU1FU19DT05TVU1FUyAgICMjIFZhcmlhYmxlOkwiZGIiDQogICAjIyBT T01FVElNRVNfQ09OU1VNRVMgICAjIyBWYXJpYWJsZTpMImRieCINCiAgICMjIFNPTUVUSU1FU19D T05TVU1FUyAgICMjIFZhcmlhYmxlOkwiZGJ0Ig0KICAgZ0VmaUltYWdlU2VjdXJpdHlEYXRhYmFz ZUd1aWQNCiANCisgIGdFZGtpaUZ2YkFkZHJlc3NMaXN0R3VpZA0KKw0KIFtQY2RdDQogICBnRWZp TWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZVNpemUg ICAgICAjIyBDT05TVU1FUw0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZs YXNoTnZTdG9yYWdlVmFyaWFibGVCYXNlICAgICAgIyMgU09NRVRJTUVTX0NPTlNVTUVTDQogICBn RWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZUJh c2U2NCAgICAjIyBDT05TVU1FUw0KICAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBj ZE1heFZhcmlhYmxlU2l6ZSAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCiAgIGdFZmlNZGVN b2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhBdXRoVmFyaWFibGVTaXplICAgICAgICAgICAg ICMjIENPTlNVTUVTDQogICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkTWF4Vm9s YXRpbGVWYXJpYWJsZVNpemUgICAgICAgICAjIyBDT05TVU1FUw0KZGlmZiAtLWdpdCBhL01kZU1v ZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZS5oIGIvTWRlTW9k dWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlLmgKaW5kZXggMGIy YmI2YWU2NjQ4Li43N2MzOTA1ODZkMzUgMTAwNjQ0Ci0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJz YWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZS5oCisrKyBiL01kZU1vZHVsZVBrZy9Vbml2 ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZS5oCkBAIC0zMywxNCArMzMsMTUgQEAg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQKICNpbmNsdWRlIDxM aWJyYXJ5L1ZhckNoZWNrTGliLmg+DQogI2luY2x1ZGUgPEd1aWQvR2xvYmFsVmFyaWFibGUuaD4N CiAjaW5jbHVkZSA8R3VpZC9FdmVudEdyb3VwLmg+DQogI2luY2x1ZGUgPEd1aWQvVmFyaWFibGVG b3JtYXQuaD4NCiAjaW5jbHVkZSA8R3VpZC9TeXN0ZW1OdkRhdGFHdWlkLmg+DQogI2luY2x1ZGUg PEd1aWQvRmF1bHRUb2xlcmFudFdyaXRlLmg+DQogI2luY2x1ZGUgPEd1aWQvVmFyRXJyb3JGbGFn Lmg+DQorI2luY2x1ZGUgPEd1aWQvRnZiQWRkcmVzc0xpc3QuaD4NCiANCiAjaW5jbHVkZSAiUHJp dmlsZWdlUG9seW1vcnBoaWMuaCINCiANCiAjZGVmaW5lIE5WX1NUT1JBR0VfVkFSSUFCTEVfQkFT RSAoRUZJX1BIWVNJQ0FMX0FERFJFU1MpIFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChQY2RHZXQ2NCAoUGNkRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZUJhc2U2NCkgIT0gMCA/ IFwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY2RHZXQ2NCAoUGNkRmxh c2hOdlN0b3JhZ2VWYXJpYWJsZUJhc2U2NCkgOiBcDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVCYXNlKSkNCkBA IC02OTMsMTQgKzY5NCwxNSBAQCBleHRlcm4gVkFSSUFCTEVfTU9EVUxFX0dMT0JBTCAgICAgICAq bVZhcmlhYmxlTW9kdWxlR2xvYmFsOwogZXh0ZXJuIEVGSV9GSVJNV0FSRV9WT0xVTUVfSEVBREVS ICAgKm1OdkZ2SGVhZGVyQ2FjaGU7DQogZXh0ZXJuIFZBUklBQkxFX1NUT1JFX0hFQURFUiAgICAg ICAgKm1OdlZhcmlhYmxlQ2FjaGU7DQogZXh0ZXJuIFZBUklBQkxFX0lORk9fRU5UUlkgICAgICAg ICAgKmdWYXJpYWJsZUluZm87DQogZXh0ZXJuIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAg bUVuZE9mRHhlOw0KIGV4dGVybiBWQVJfQ0hFQ0tfUkVRVUVTVF9TT1VSQ0UgICAgIG1SZXF1ZXN0 U291cmNlOw0KIA0KIGV4dGVybiBBVVRIX1ZBUl9MSUJfQ09OVEVYVF9PVVQgICAgIG1BdXRoQ29u dGV4dE91dDsNCitleHRlcm4gRlZCX0FERFJFU1NfTElTVCAgICAgICAgICAgICAqbUZ2YkFkZHJl c3NMaXN0Ow0KIA0KIC8qKg0KICAgRmluZHMgdmFyaWFibGUgaW4gc3RvcmFnZSBibG9ja3Mgb2Yg dm9sYXRpbGUgYW5kIG5vbi12b2xhdGlsZSBzdG9yYWdlIGFyZWFzLg0KIA0KICAgVGhpcyBjb2Rl IGZpbmRzIHZhcmlhYmxlIGluIHN0b3JhZ2UgYmxvY2tzIG9mIHZvbGF0aWxlIGFuZCBub24tdm9s YXRpbGUgc3RvcmFnZSBhcmVhcy4NCiAgIElmIFZhcmlhYmxlTmFtZSBpcyBhbiBlbXB0eSBzdHJp bmcsIHRoZW4gd2UganVzdCByZXR1cm4gdGhlIGZpcnN0DQogICBxdWFsaWZpZWQgdmFyaWFibGUg d2l0aG91dCBjb21wYXJpbmcgVmFyaWFibGVOYW1lIGFuZCBWZW5kb3JHdWlkLg0KZGlmZiAtLWdp dCBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZUR4 ZS5jIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxl RHhlLmMKaW5kZXggMGZjYTBiYjJhOWI1Li5iN2EzM2UzYTM0OGQgMTAwNjQ0Ci0tLSBhL01kZU1v ZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZUR4ZS5jCisrKyBi L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZUR4ZS5j CkBAIC0zMiwxNCArMzIsMTUgQEAgRURLSUlfVkFSSUFCTEVfUE9MSUNZX1BST1RPQ09MICAgICAg bVZhcmlhYmxlUG9saWN5UHJvdG9jb2wgICAgPSB7IEVES0lJX1ZBUklBQkwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHJvdG9jb2xJc1ZhcmlhYmxlUG9saWN5RW5hYmxlZCwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyVmFy aWFibGVQb2xpY3ksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBEdW1wVmFyaWFibGVQb2xpY3ksDQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMb2NrVmFyaWFibGVQb2xpY3kgfTsNCiBFREtJSV9WQVJfQ0hFQ0tfUFJPVE9DT0wgICAgICAg ICAgICBtVmFyQ2hlY2sgICAgICAgICAgICAgICAgICA9IHsgVmFyQ2hlY2tSZWdpc3RlclNldFZh cmlhYmxlQ2hlY2tIYW5kbGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyQ2hlY2tWYXJpYWJsZVByb3BlcnR5 U2V0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVmFyQ2hlY2tWYXJpYWJsZVByb3BlcnR5R2V0IH07DQorRlZCX0FE RFJFU1NfTElTVCAqbUZ2YkFkZHJlc3NMaXN0Ow0KIA0KIC8qKg0KICAgU29tZSBTZWN1cmUgQm9v dCBQb2xpY3kgVmFyaWFibGUgbWF5IHVwZGF0ZSBmb2xsb3dpbmcgb3RoZXIgdmFyaWFibGUgY2hh bmdlcyhTZWN1cmVCb290IGZvbGxvd3MgUEsgY2hhbmdlLCBldGMpLg0KICAgUmVjb3JkIHRoZWly IGluaXRpYWwgU3RhdGUgd2hlbiB2YXJpYWJsZSB3cml0ZSBzZXJ2aWNlIGlzIHJlYWR5Lg0KIA0K ICoqLw0KIFZPSUQNCkBAIC0yNDAsMjYgKzI0MSw0OSBAQCBHZXRGdmJDb3VudEFuZEJ1ZmZlciAo CiBWT0lEDQogRUZJQVBJDQogVmFyaWFibGVDbGFzc0FkZHJlc3NDaGFuZ2VFdmVudCAoDQogICBJ TiBFRklfRVZFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnQsDQogICBJTiBWT0lE ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkNvbnRleHQNCiAgICkNCiB7DQotICBV SU5UTiAgICAgICAgICBJbmRleDsNCisgIFVJTlQ2NCAgICAgICAgICAgICAgICAgT3duZXJTaWdu YXR1cmU7DQorICBGVkJfQUREUkVTU19MSVNUX0VOVFJZICpFbnRyeTsNCisgIFVJTlROICAgICAg ICAgICAgICAgICAgSW5kZXg7DQorDQorICBPd25lclNpZ25hdHVyZSA9IFNJR05BVFVSRV82NCAo J1YnLCAnQScsICdSJywgJ0knLCAnQScsICdCJywgJ0wnLCAnRScpOw0KKyAgRW50cnkgICAgICAg ICAgPSBtRnZiQWRkcmVzc0xpc3QtPkVudHJ5ICsgbUZ2YkFkZHJlc3NMaXN0LT5OZXh0Ow0KIA0K ICAgaWYgKG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0+RnZiSW5zdGFuY2UgIT0gTlVMTCkgew0KKyAg ICBWT0lEICpQb2ludGVyOw0KKw0KICAgICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCAq KikgJm1WYXJpYWJsZU1vZHVsZUdsb2JhbC0+RnZiSW5zdGFuY2UtPkdldEJsb2NrU2l6ZSk7DQot ICAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEICoqKSAmbVZhcmlhYmxlTW9kdWxlR2xv YmFsLT5GdmJJbnN0YW5jZS0+R2V0UGh5c2ljYWxBZGRyZXNzKTsNCisNCisgICAgUG9pbnRlciA9 IChWT0lEICopKFVJTlROKW1WYXJpYWJsZU1vZHVsZUdsb2JhbC0+RnZiSW5zdGFuY2UtPkdldFBo eXNpY2FsQWRkcmVzczsNCisgICAgRW50cnktPk93bmVyU2lnbmF0dXJlID0gT3duZXJTaWduYXR1 cmU7DQorICAgIEVudHJ5LT5BZGRyZXNzICAgICAgICA9IChVSU5UTilQb2ludGVyOw0KKyAgICAr K0VudHJ5Ow0KKw0KKyAgICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAmUG9pbnRlcik7DQorICAg IG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0+RnZiSW5zdGFuY2UtPkdldFBoeXNpY2FsQWRkcmVzcyA9 DQorICAgICAgKEVGSV9GVkJfR0VUX1BIWVNJQ0FMX0FERFJFU1MpKFVJTlROKVBvaW50ZXI7DQor DQorICAgIEVudHJ5LT5Pd25lclNpZ25hdHVyZSA9IE93bmVyU2lnbmF0dXJlOw0KKyAgICBFbnRy eS0+QWRkcmVzcyAgICAgICAgPSAoVUlOVE4pUG9pbnRlcjsNCisgICAgKytFbnRyeTsNCisNCiAg ICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopICZtVmFyaWFibGVNb2R1bGVHbG9i YWwtPkZ2Ykluc3RhbmNlLT5HZXRBdHRyaWJ1dGVzKTsNCiAgICAgRWZpQ29udmVydFBvaW50ZXIg KDB4MCwgKFZPSUQgKiopICZtVmFyaWFibGVNb2R1bGVHbG9iYWwtPkZ2Ykluc3RhbmNlLT5TZXRB dHRyaWJ1dGVzKTsNCiAgICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopICZtVmFy aWFibGVNb2R1bGVHbG9iYWwtPkZ2Ykluc3RhbmNlLT5SZWFkKTsNCiAgICAgRWZpQ29udmVydFBv aW50ZXIgKDB4MCwgKFZPSUQgKiopICZtVmFyaWFibGVNb2R1bGVHbG9iYWwtPkZ2Ykluc3RhbmNl LT5Xcml0ZSk7DQogICAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEICoqKSAmbVZhcmlh YmxlTW9kdWxlR2xvYmFsLT5GdmJJbnN0YW5jZS0+RXJhc2VCbG9ja3MpOw0KICAgICBFZmlDb252 ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCAqKikgJm1WYXJpYWJsZU1vZHVsZUdsb2JhbC0+RnZiSW5z dGFuY2UpOw0KICAgfQ0KKw0KKyAgbUZ2YkFkZHJlc3NMaXN0LT5OZXh0ID0gRW50cnkgLSBtRnZi QWRkcmVzc0xpc3QtPkVudHJ5Ow0KKw0KICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQg KiopICZtVmFyaWFibGVNb2R1bGVHbG9iYWwtPlBsYXRmb3JtTGFuZ0NvZGVzKTsNCiAgIEVmaUNv bnZlcnRQb2ludGVyICgweDAsIChWT0lEICoqKSAmbVZhcmlhYmxlTW9kdWxlR2xvYmFsLT5MYW5n Q29kZXMpOw0KICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopICZtVmFyaWFibGVN b2R1bGVHbG9iYWwtPlBsYXRmb3JtTGFuZyk7DQogICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAo Vk9JRCAqKikgJm1WYXJpYWJsZU1vZHVsZUdsb2JhbC0+VmFyaWFibGVHbG9iYWwuTm9uVm9sYXRp bGVWYXJpYWJsZUJhc2UpOw0KICAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopICZt VmFyaWFibGVNb2R1bGVHbG9iYWwtPlZhcmlhYmxlR2xvYmFsLlZvbGF0aWxlVmFyaWFibGVCYXNl KTsNCiAgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEICoqKSAmbVZhcmlhYmxlTW9kdWxl R2xvYmFsLT5WYXJpYWJsZUdsb2JhbC5Ib2JWYXJpYWJsZUJhc2UpOw0KICAgRWZpQ29udmVydFBv aW50ZXIgKDB4MCwgKFZPSUQgKiopICZtVmFyaWFibGVNb2R1bGVHbG9iYWwpOw0KQEAgLTUyOCwx OCArNTUyLDI2IEBAIFByb3RvY29sSXNWYXJpYWJsZVBvbGljeUVuYWJsZWQgKAogRUZJX1NUQVRV Uw0KIEVGSUFQSQ0KIFZhcmlhYmxlU2VydmljZUluaXRpYWxpemUgKA0KICAgSU4gRUZJX0hBTkRM RSAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCiAgIElOIEVGSV9TWVNURU1f VEFCTEUgICAgICAgICAgICAgICAgICAgKlN5c3RlbVRhYmxlDQogICApDQogew0KKyAgVk9JRCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqSG9iOw0KKyAgRlZCX0FERFJFU1NfTElT VF9QVFIgICAgICAgICAgICAgICAgICAqRnZiQWRkcmVzc0xpc3RQdHJIb2JEYXRhOw0KICAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICBFRklfRVZFTlQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWR5VG9Cb290RXZlbnQ7DQogICBFRklfRVZF TlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZE9mRHhlRXZlbnQ7DQogDQorICBIb2Ig PSBHZXRGaXJzdEd1aWRIb2IgKCZnRWRraWlGdmJBZGRyZXNzTGlzdEd1aWQpOw0KKyAgQVNTRVJU IChIb2IgIT0gTlVMTCk7DQorICBGdmJBZGRyZXNzTGlzdFB0ckhvYkRhdGEgPSBHRVRfR1VJRF9I T0JfREFUQSAoSG9iKTsNCisgIG1GdmJBZGRyZXNzTGlzdCA9IChWT0lEKikoVUlOVE4pKkZ2YkFk ZHJlc3NMaXN0UHRySG9iRGF0YTsNCisgIEFTU0VSVCAobUZ2YkFkZHJlc3NMaXN0LT5TaWduYXR1 cmUgPT0gRlZCX0FERFJFU1NfTElTVF9TSUdOQVRVUkUpOw0KKw0KICAgU3RhdHVzID0gVmFyaWFi bGVDb21tb25Jbml0aWFsaXplICgpOw0KICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCiAN CiAgIFN0YXR1cyA9IGdCUy0+SW5zdGFsbE11bHRpcGxlUHJvdG9jb2xJbnRlcmZhY2VzICgNCiAg ICAgICAgICAgICAgICAgICAmbUhhbmRsZSwNCiAgICAgICAgICAgICAgICAgICAmZ0Vka2lpVmFy aWFibGVMb2NrUHJvdG9jb2xHdWlkLA0KICAgICAgICAgICAgICAgICAgICZtVmFyaWFibGVMb2Nr LA0KLS0gCjIuMTkuMS4zLmczMDI0N2FhNWQyMDEKCg== --------------9CF4CB45C5D9DD9083A83599--