From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olivier Martin Subject: Re: [edk2] [PATCH v3 21/27] Ovmf/Xen: add ARM and AArch64 support to XenBusDxe Date: Tue, 10 Feb 2015 03:41:44 +0000 Message-ID: <0877601216922E4B83A7129715B5DA2BC60B6FDE1B__14396.8249940828$1423539809$gmane$org@GEORGE.Emea.Arm.com> References: <1422991212-9257-1-git-send-email-ard.biesheuvel@linaro.org> <1422991212-9257-22-git-send-email-ard.biesheuvel@linaro.org> <20150204211035.11847.54872@jljusten-ivy> , <20150207220049.4180.15991@jljusten-ivy> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_0877601216922E4B83A7129715B5DA2BC60B6FDE1BGEORGEEmeaArm_" Return-path: In-Reply-To: <20150207220049.4180.15991@jljusten-ivy> Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jordan Justen , Ard Biesheuvel , "Kinney, Michael D" Cc: Julien Grall , "Ian.Campbell@citrix.com" , Stefano Stabellini , "edk2-devel@lists.sourceforge.net" , Leif Lindholm , "xen-devel@lists.xen.org" , Roy Franz , Ilias Biris , Anthony PERARD , Laszlo Ersek , Christoffer Dall List-Id: xen-devel@lists.xenproject.org --_002_0877601216922E4B83A7129715B5DA2BC60B6FDE1BGEORGEEmeaArm_ Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable Hi Ard, I did an implementation of BaseSynchronizationLib for ARM(32) a couple year= s ago. I am not sure why I have never pushed this patch upstream. Anyway, feel free to use it and push it upstream after reviewing it and add= ing support for AArch64. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin Thanks, Olivier ________________________________________ From: Jordan Justen [jordan.l.justen@intel.com] Sent: 07 February 2015 22:00 To: Ard Biesheuvel; Kinney, Michael D Cc: edk2-devel@lists.sourceforge.net; Laszlo Ersek; Olivier Martin; Roy Fra= nz; Leif Lindholm; Stefano Stabellini; Ian.Campbell@citrix.com; Anthony PER= ARD; Christoffer Dall; xen-devel@lists.xen.org; Ilias Biris; Julien Grall Subject: Re: [edk2] [PATCH v3 21/27] Ovmf/Xen: add ARM and AArch64 support = to XenBusDxe On 2015-02-05 01:56:04, Ard Biesheuvel wrote: > On 4 February 2015 at 21:10, Jordan Justen wr= ote: > > On 2015-02-03 11:20:06, Ard Biesheuvel wrote: > >> This patch adds support to XenBusDxe for executing on ARM and AArch64 > >> machines (the former only when built with GCC). > >> > >> Contributed-under: TianoCore Contribution Agreement 1.0 > >> Signed-off-by: Ard Biesheuvel > >> --- > >> OvmfPkg/XenBusDxe/AtomicsGcc.c | 44 ++++++++++++++++++++++++++++++++= +++++++++ > >> OvmfPkg/XenBusDxe/XenBusDxe.inf | 3 +++ > >> 2 files changed, 47 insertions(+) > >> create mode 100644 OvmfPkg/XenBusDxe/AtomicsGcc.c > >> > >> diff --git a/OvmfPkg/XenBusDxe/AtomicsGcc.c b/OvmfPkg/XenBusDxe/Atomic= sGcc.c > >> new file mode 100644 > >> index 000000000000..a0bdcbf67440 > >> --- /dev/null > >> +++ b/OvmfPkg/XenBusDxe/AtomicsGcc.c > >> @@ -0,0 +1,44 @@ > >> +/** @file > >> + Arch-independent implementations of XenBusDxe atomics using GCC __b= uiltins > >> + > >> + Copyright (C) 2014, Linaro Ltd. > >> + > >> + This program and the accompanying materials > >> + are licensed and made available under the terms and conditions of t= he BSD License > >> + which accompanies this distribution. The full text of the license = may be found at > >> + http://opensource.org/licenses/bsd-license.php > >> + > >> + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASI= S, > >> + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS O= R IMPLIED. > >> + > >> +**/ > >> + > >> +UINT16 > >> +EFIAPI > >> +InternalSyncCompareExchange16 ( > >> + IN volatile UINT16 *Value, > >> + IN UINT16 CompareValue, > >> + IN UINT16 ExchangeValue > > > > Can you instead get InterlockedCompareExchange16 added to > > BaseSynchronizationLib? > > > > http://permalink.gmane.org/gmane.comp.bios.tianocore.devel/10470 > > > > That would seem the obvious choice, but sadly, BaseSynchronizationLib > is not implemented at all for ARM and AArch64 (Some .c files are there > but they are just unsynchronized C implementations) > > So in order to do this properly, I would need to > - implement the existing functions for ARM and AArch64 Would you? It appears the library is already used by ARM platforms as is. If you add your InterlockedCompareExchange16, it is at least an improvement, right? > - implement InterlockedCompareExchange16 () for all existing > architectures, including IPF, which I don't have a clue about, and > toolchains I don't have access to Mike, you added the IPF InterlockedCompareExchange32.s and InterlockedCompareExchange64.s files. Could you help to provide a InterlockedCompareExchange16.s? > - implement TestAndClearBit () for all architectures, or create a > BaseBitopsLib and implement it there I only meant to add InterlockedCompareExchange16 for now. -Jordan > I now understand how Anthony ended up doing it like this in the first pla= ce :-) > > Anyway, we are all invested in improving the code base, so I am happy > to do my part, but I would need help from others to implement the > pieces that are really not feasible for me to take on. > > -- > Ard. > > >> + ) > >> +{ > >> + return __sync_val_compare_and_swap_2 (Value, CompareValue, Exchange= Value); > >> +} > >> + > >> +INT32 > >> +EFIAPI > >> +TestAndClearBit ( > >> + IN INT32 Bit, > >> + IN volatile VOID *Address > >> + ) > >> +{ > >> + // > >> + // Calculate the effective address relative to 'Address' based on t= he > >> + // higher order bits of 'Bit'. Use signed shift instead of division= to > >> + // ensure we round towards -Inf, and end up with a positive shift i= n 'Bit', > >> + // even if 'Bit' itself is negative. > >> + // > >> + Address +=3D (Bit >> 5) * sizeof(INT32); > >> + Bit &=3D 31; > >> + > >> + return (__sync_fetch_and_and_4 (Address, ~(1U << Bit)) & (1U << Bit= )) !=3D 0; > >> +} > >> diff --git a/OvmfPkg/XenBusDxe/XenBusDxe.inf b/OvmfPkg/XenBusDxe/XenBu= sDxe.inf > >> index 31553ac5a64a..949ec0a0c732 100644 > >> --- a/OvmfPkg/XenBusDxe/XenBusDxe.inf > >> +++ b/OvmfPkg/XenBusDxe/XenBusDxe.inf > >> @@ -54,6 +54,9 @@ > >> X64/InterlockedCompareExchange16.nasm > >> X64/TestAndClearBit.nasm > >> > >> +[Sources.AARCH64, Sources.ARM] > >> + AtomicsGcc.c | GCC > >> + > >> [LibraryClasses] > >> UefiDriverEntryPoint > >> UefiBootServicesTableLib > >> -- > >> 1.8.3.2 > >> > >> > >> ----------------------------------------------------------------------= -------- > >> Dive into the World of Parallel Programming. The Go Parallel Website, > >> sponsored by Intel and developed in partnership with Slashdot Media, i= s your > >> hub for all things parallel software development, from weekly thought > >> leadership blogs to news, videos, case studies, tutorials and more. Ta= ke a > >> look and join the conversation now. http://goparallel.sourceforge.net/ > >> _______________________________________________ > >> edk2-devel mailing list > >> edk2-devel@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/edk2-devel -- IMPORTANT NOTICE: The contents of this email and any attachments are con= fidential and may also be privileged. If you are not the intended recipient= , please notify the sender immediately and do not disclose the contents to = any other person, use it for any purpose, or store or copy the information = in any medium. Thank you. ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Regist= ered in England & Wales, Company No: 2557590 ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, R= egistered in England & Wales, Company No: 2548782 --_002_0877601216922E4B83A7129715B5DA2BC60B6FDE1BGEORGEEmeaArm_ Content-Type: text/x-patch; name=MdePkg-BaseSynchronizationLib-Added-ARM-support.patch Content-Description: MdePkg-BaseSynchronizationLib-Added-ARM-support.patch Content-Disposition: attachment; filename="MdePkg-BaseSynchronizationLib-Added-ARM-support.patch"; size=17351; creation-date="Tue, 10 Feb 2015 03:40:18 GMT"; modification-date="Tue, 10 Feb 2015 03:40:18 GMT" Content-Transfer-Encoding: base64 RnJvbSBmZDZkMDY0YWEwNzI1MzE4M2JlODEyYmNjODA3NjhmZjdmMWRjZDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2aWVyIE1hcnRpbiA8b2xpdmllci5tYXJ0aW5AYXJtLmNv bT4KRGF0ZTogTW9uLCAxOCBKdW4gMjAxMiAxMjoyOToxNSArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IE1kZVBrZy9CYXNlU3luY2hyb25pemF0aW9uTGliOiBBZGRlZCBwcm9wZXIgc3VwcG9ydCBmb3Ig QVJNCiBhcmNoaXRlY3R1cmUKCkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0 aW9uIEFncmVlbWVudCAxLjAKU2lnbmVkLW9mZi1ieTogT2xpdmllciBNYXJ0aW4gPG9saXZpZXIu bWFydGluQGFybS5jb20+Ci0tLQogLi4uL0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQXJtL1N5bmNo cm9uaXphdGlvbi5TICAgfCAxNzQgKysrKysrKysrKysrKysrKysrKysKIC4uLi9CYXNlU3luY2hy b25pemF0aW9uTGliL0FybS9TeW5jaHJvbml6YXRpb24uYXNtIHwgMTc1ICsrKysrKysrKysrKysr KysrKysrKwogLi4uL0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQXJtL1N5bmNocm9uaXphdGlvbi5j ICAgfCAxMTUgLS0tLS0tLS0tLS0tLS0KIC4uLi9CYXNlU3luY2hyb25pemF0aW9uTGliLmluZiAg ICAgICAgICAgICAgICAgICAgIHwgICAzICstCiA0IGZpbGVzIGNoYW5nZWQsIDM1MSBpbnNlcnRp b25zKCspLCAxMTYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA3NTUgTWRlUGtnL0xpYnJh cnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9Bcm0vU3luY2hyb25pemF0aW9uLlMKIGNyZWF0ZSBt b2RlIDEwMDc1NSBNZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0FybS9TeW5j aHJvbml6YXRpb24uYXNtCiBkZWxldGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvQmFzZVN5 bmNocm9uaXphdGlvbkxpYi9Bcm0vU3luY2hyb25pemF0aW9uLmMKIG1vZGUgY2hhbmdlIDEwMDY0 NCA9PiAxMDA3NTUgTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxpYi9CYXNlU3lu Y2hyb25pemF0aW9uTGliLmluZgoKZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5j aHJvbml6YXRpb25MaWIvQXJtL1N5bmNocm9uaXphdGlvbi5TIGIvTWRlUGtnL0xpYnJhcnkvQmFz ZVN5bmNocm9uaXphdGlvbkxpYi9Bcm0vU3luY2hyb25pemF0aW9uLlMKbmV3IGZpbGUgbW9kZSAx MDA3NTUKaW5kZXggMDAwMDAwMC4uMWE5NTI5OQotLS0gL2Rldi9udWxsCisrKyBiL01kZVBrZy9M aWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQXJtL1N5bmNocm9uaXphdGlvbi5TCkBAIC0w LDAgKzEsMTc0IEBACisvLyAgSW1wbGVtZW50YXRpb24gb2Ygc3luY2hyb25pemF0aW9uIGZ1bmN0 aW9ucyBmb3IgQVJNIGFyY2hpdGVjdHVyZQ0KKy8vDQorLy8gIENvcHlyaWdodCAoYykgMjAxMi0y MDE1LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCisvLw0KKy8vICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorLy8gIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KKy8vICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRo ZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQorLy8gIGh0dHA6Ly9v cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCisvLw0KKy8vICBUSEUgUFJP R1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBC QVNJUywNCisvLyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkg S0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCisvLw0KKy8vDQorDQorLnRleHQNCisu YWxpZ24gMw0KKw0KK0dDQ19BU01fRVhQT1JUKEludGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTMy KQ0KK0dDQ19BU01fRVhQT1JUKEludGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTY0KQ0KK0dDQ19B U01fRVhQT1JUKEludGVybmFsU3luY0luY3JlbWVudCkNCitHQ0NfQVNNX0VYUE9SVChJbnRlcm5h bFN5bmNEZWNyZW1lbnQpDQorDQorLyoqDQorICBQZXJmb3JtcyBhbiBhdG9taWMgY29tcGFyZSBl eGNoYW5nZSBvcGVyYXRpb24gb24gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4NCisNCisgIFBl cmZvcm1zIGFuIGF0b21pYyBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBvbiB0aGUgMzItYml0 IHVuc2lnbmVkIGludGVnZXINCisgIHNwZWNpZmllZCBieSBWYWx1ZS4gIElmIFZhbHVlIGlzIGVx dWFsIHRvIENvbXBhcmVWYWx1ZSwgdGhlbiBWYWx1ZSBpcyBzZXQgdG8NCisgIEV4Y2hhbmdlVmFs dWUgYW5kIENvbXBhcmVWYWx1ZSBpcyByZXR1cm5lZC4gIElmIFZhbHVlIGlzIG5vdCBlcXVhbCB0 byBDb21wYXJlVmFsdWUsDQorICB0aGVuIFZhbHVlIGlzIHJldHVybmVkLiAgVGhlIGNvbXBhcmUg ZXhjaGFuZ2Ugb3BlcmF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHVzaW5nDQorICBNUCBzYWZlIG1l Y2hhbmlzbXMuDQorDQorICBAcGFyYW0gIFZhbHVlICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSAz Mi1iaXQgdmFsdWUgZm9yIHRoZSBjb21wYXJlIGV4Y2hhbmdlDQorICAgICAgICAgICAgICAgICAg ICAgICAgb3BlcmF0aW9uLg0KKyAgQHBhcmFtICBDb21wYXJlVmFsdWUgIDMyLWJpdCB2YWx1ZSB1 c2VkIGluIGNvbXBhcmUgb3BlcmF0aW9uLg0KKyAgQHBhcmFtICBFeGNoYW5nZVZhbHVlIDMyLWJp dCB2YWx1ZSB1c2VkIGluIGV4Y2hhbmdlIG9wZXJhdGlvbi4NCisNCisgIEByZXR1cm4gVGhlIG9y aWdpbmFsICpWYWx1ZSBiZWZvcmUgZXhjaGFuZ2UuDQorDQorKiovDQorLy9VSU5UMzINCisvL0VG SUFQSQ0KKy8vSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlMzIgKA0KKy8vICBJTiAgICAgIHZv bGF0aWxlIFVJTlQzMiAgICAgICAgICAgKlZhbHVlLA0KKy8vICBJTiAgICAgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgQ29tcGFyZVZhbHVlLA0KKy8vICBJTiAgICAgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgRXhjaGFuZ2VWYWx1ZQ0KKy8vICApDQorQVNNX1BGWChJbnRlcm5hbFN5bmND b21wYXJlRXhjaGFuZ2UzMik6DQorICBwdXNoICAgIHsgcjQgfQ0KKyAgbGRyZXggICByMywgW3Iw XQ0KKyAgY21wICAgICByMywgcjENCisgIGJlcSAgICAgSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hh bmdlMzJFeGNoYW5nZQ0KKyAgYiAgICAgICBJbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFuZ2UzMkZh aWwNCisNCitJbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFuZ2UzMkV4Y2hhbmdlOg0KKyAgc3RyZXgg ICByNCwgcjIsIFtyMF0NCisgIGNtcCAgICAgcjQsICMwDQorICBibmUgICAgIEludGVybmFsU3lu Y0NvbXBhcmVFeGNoYW5nZTMyRmFpbA0KKyAgZHNiDQorICBtb3YgICAgIHIwLCByMQ0KKyAgcG9w ICAgICB7IHI0IH0NCisgIGJ4ICAgICAgbHINCisNCitJbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFu Z2UzMkZhaWw6DQorICBtb3YgICAgIHIwLCByMw0KKyAgcG9wICAgICB7IHI0IH0NCisgIGJ4ICAg ICAgbHINCisNCisNCisvKioNCisgIFBlcmZvcm1zIGFuIGF0b21pYyBjb21wYXJlIGV4Y2hhbmdl IG9wZXJhdGlvbiBvbiBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLg0KKw0KKyAgUGVyZm9ybXMg YW4gYXRvbWljIGNvbXBhcmUgZXhjaGFuZ2Ugb3BlcmF0aW9uIG9uIHRoZSA2NC1iaXQgdW5zaWdu ZWQgaW50ZWdlciBzcGVjaWZpZWQNCisgIGJ5IFZhbHVlLiAgSWYgVmFsdWUgaXMgZXF1YWwgdG8g Q29tcGFyZVZhbHVlLCB0aGVuIFZhbHVlIGlzIHNldCB0byBFeGNoYW5nZVZhbHVlIGFuZA0KKyAg Q29tcGFyZVZhbHVlIGlzIHJldHVybmVkLiAgSWYgVmFsdWUgaXMgbm90IGVxdWFsIHRvIENvbXBh cmVWYWx1ZSwgdGhlbiBWYWx1ZSBpcyByZXR1cm5lZC4NCisgIFRoZSBjb21wYXJlIGV4Y2hhbmdl IG9wZXJhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMuDQor DQorICBAcGFyYW0gIFZhbHVlICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSA2NC1iaXQgdmFsdWUg Zm9yIHRoZSBjb21wYXJlIGV4Y2hhbmdlDQorICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0 aW9uLg0KKyAgQHBhcmFtICBDb21wYXJlVmFsdWUgIDY0LWJpdCB2YWx1ZSB1c2VkIGluIGNvbXBh cmUgb3BlcmF0aW9uLg0KKyAgQHBhcmFtICBFeGNoYW5nZVZhbHVlIDY0LWJpdCB2YWx1ZSB1c2Vk IGluIGV4Y2hhbmdlIG9wZXJhdGlvbi4NCisNCisgIEByZXR1cm4gVGhlIG9yaWdpbmFsICpWYWx1 ZSBiZWZvcmUgZXhjaGFuZ2UuDQorDQorKiovDQorLy9VSU5UNjQNCisvL0VGSUFQSQ0KKy8vSW50 ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlNjQgKA0KKy8vICBJTiAgICAgIHZvbGF0aWxlIFVJTlQ2 NCAgICAgICAgICAgKlZhbHVlLCAgICAgICAgIC8vIHIwLXIxDQorLy8gIElOICAgICAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICBDb21wYXJlVmFsdWUsICAgLy8gcjItcjMNCisvLyAgSU4gICAg ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEV4Y2hhbmdlVmFsdWUgICAvLyByNC1yNQ0KKy8v ICApDQorQVNNX1BGWChJbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFuZ2U2NCk6DQorICBwdXNoICAg IHsgcjYtcjggfQ0KKyAgbGRyZXhkICByNiwgcjcsIFtyMF0NCisgIGNtcCAgICAgcjYsIHIyDQor ICBjbXBlcSAgIHI3LCByMw0KKyAgYm5lICAgICBJbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFuZ2U2 NEZhaWwNCisgIGJlcSAgICAgSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlNjRFeGNoYW5nZQ0K Kw0KK0ludGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTY0RXhjaGFuZ2U6DQorICBzdHJleGQgIHI4 LCByNCwgcjUsIFtyMF0NCisgIGNtcCAgICAgcjgsICMwDQorICBibmUgICAgIEludGVybmFsU3lu Y0NvbXBhcmVFeGNoYW5nZTY0RmFpbA0KKyAgbW92ICAgICByMCwgcjINCisgIG1vdiAgICAgcjEs IHIzDQorICBkc2INCisgIHBvcCAgICAgeyByNi1yOCB9DQorICBieCAgICAgIGxyDQorDQorSW50 ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlNjRGYWlsOg0KKyAgbW92ICAgICByMCwgcjYNCisgIG1v diAgICAgcjEsIHI3DQorICBwb3AgICAgIHsgcjYtcjggfQ0KKyAgYnggICAgICBscg0KKw0KKy8q Kg0KKyAgUGVyZm9ybXMgYW4gYXRvbWljIGluY3JlbWVudCBvZiBhbiAzMi1iaXQgdW5zaWduZWQg aW50ZWdlci4NCisNCisgIFBlcmZvcm1zIGFuIGF0b21pYyBpbmNyZW1lbnQgb2YgdGhlIDMyLWJp dCB1bnNpZ25lZCBpbnRlZ2VyIHNwZWNpZmllZCBieQ0KKyAgVmFsdWUgYW5kIHJldHVybnMgdGhl IGluY3JlbWVudGVkIHZhbHVlLiBUaGUgaW5jcmVtZW50IG9wZXJhdGlvbiBtdXN0IGJlDQorICBw ZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBtZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVy biB2YWx1ZSBpcyBub3QNCisgIGd1YXJhbnRlZWQgdG8gYmUgTVAgc2FmZS4NCisNCisgIEBwYXJh bSAgVmFsdWUgQSBwb2ludGVyIHRvIHRoZSAzMi1iaXQgdmFsdWUgdG8gaW5jcmVtZW50Lg0KKw0K KyAgQHJldHVybiBUaGUgaW5jcmVtZW50ZWQgdmFsdWUuDQorDQorKiovDQorLy9VSU5UMzINCisv L0VGSUFQSQ0KKy8vSW50ZXJuYWxTeW5jSW5jcmVtZW50ICgNCisvLyAgSU4gICAgICB2b2xhdGls ZSBVSU5UMzIgICAgICAgICAgICpWYWx1ZQ0KKy8vICApDQorQVNNX1BGWChJbnRlcm5hbFN5bmNJ bmNyZW1lbnQpOg0KKyAgcHVzaCAgICB7IHIxLXIyIH0NCitUcnlJbnRlcm5hbFN5bmNJbmNyZW1l bnQ6DQorICBsZHJleCAgIHIxLCBbcjBdDQorICBhZGQgICAgIHIxLCByMSwgIzENCisgIHN0cmV4 ICAgcjIsIHIxLCBbcjBdDQorICBjbXAgICAgIHIyLCAjMA0KKyAgYm5lICAgICBUcnlJbnRlcm5h bFN5bmNJbmNyZW1lbnQNCisgIGRzYg0KKyAgcG9wICAgICB7IHIxLXIyIH0NCisgIGJ4ICAgICAg bHINCisNCisvKioNCisgIFBlcmZvcm1zIGFuIGF0b21pYyBkZWNyZW1lbnQgb2YgYW4gMzItYml0 IHVuc2lnbmVkIGludGVnZXIuDQorDQorICBQZXJmb3JtcyBhbiBhdG9taWMgZGVjcmVtZW50IG9m IHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciBzcGVjaWZpZWQgYnkNCisgIFZhbHVlIGFuZCBy ZXR1cm5zIHRoZSBkZWNyZW1lbnQgdmFsdWUuIFRoZSBkZWNyZW1lbnQgb3BlcmF0aW9uIG11c3Qg YmUNCisgIHBlcmZvcm1lZCB1c2luZyBNUCBzYWZlIG1lY2hhbmlzbXMuIFRoZSBzdGF0ZSBvZiB0 aGUgcmV0dXJuIHZhbHVlIGlzIG5vdA0KKyAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KKw0K KyAgQHBhcmFtICBWYWx1ZSBBIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCB2YWx1ZSB0byBkZWNyZW1l bnQuDQorDQorICBAcmV0dXJuIFRoZSBkZWNyZW1lbnQgdmFsdWUuDQorDQorKiovDQorLy9VSU5U MzINCisvL0VGSUFQSQ0KKy8vSW50ZXJuYWxTeW5jRGVjcmVtZW50ICgNCisvLyAgSU4gICAgICB2 b2xhdGlsZSBVSU5UMzIgICAgICAgICAgICpWYWx1ZQ0KKy8vICApDQorQVNNX1BGWChJbnRlcm5h bFN5bmNEZWNyZW1lbnQpOg0KKyAgcHVzaCAgICB7IHIxLXIyIH0NCitUcnlJbnRlcm5hbFN5bmNE ZWNyZW1lbnQ6DQorICBsZHJleCAgIHIxLCBbcjBdDQorICBzdWIgICAgIHIxLCByMSwgIzENCisg IHN0cmV4ICAgcjIsIHIxLCBbcjBdDQorICBjbXAgICAgIHIyLCAjMA0KKyAgYm5lICAgICBUcnlJ bnRlcm5hbFN5bmNEZWNyZW1lbnQNCisgIGRzYg0KKyAgcG9wICAgICB7IHIxLXIyIH0NCisgIGJ4 ICAgICAgbHINCmRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9u TGliL0FybS9TeW5jaHJvbml6YXRpb24uYXNtIGIvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9u aXphdGlvbkxpYi9Bcm0vU3luY2hyb25pemF0aW9uLmFzbQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp bmRleCAwMDAwMDAwLi5hMGM3MTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTWRlUGtnL0xpYnJhcnkv QmFzZVN5bmNocm9uaXphdGlvbkxpYi9Bcm0vU3luY2hyb25pemF0aW9uLmFzbQpAQCAtMCwwICsx LDE3NSBAQAorLy8gIEltcGxlbWVudGF0aW9uIG9mIHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbnMg Zm9yIEFSTSBhcmNoaXRlY3R1cmUNCisvLw0KKy8vICBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNSwg QVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorLy8NCisvLyAgVGhpcyBwcm9ncmFt IGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKy8vICBhcmUgbGljZW5zZWQgYW5kIG1h ZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2UNCisvLyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVs bCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KKy8vICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQorLy8NCisvLyAgVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQorLy8gIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQs IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQorLy8NCisvLw0KKw0KKyAgICBFWFBPUlQgIElu dGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTMyDQorICAgIEVYUE9SVCAgSW50ZXJuYWxTeW5jQ29t cGFyZUV4Y2hhbmdlNjQNCisgICAgRVhQT1JUICBJbnRlcm5hbFN5bmNJbmNyZW1lbnQNCisgICAg RVhQT1JUICBJbnRlcm5hbFN5bmNEZWNyZW1lbnQNCisNCisgICAgQVJFQSAgIEFybVN5bmNocm9u aXphdGlvbiwgQ09ERSwgUkVBRE9OTFkNCisNCisvKioNCisgIFBlcmZvcm1zIGFuIGF0b21pYyBj b21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBvbiBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLg0K Kw0KKyAgUGVyZm9ybXMgYW4gYXRvbWljIGNvbXBhcmUgZXhjaGFuZ2Ugb3BlcmF0aW9uIG9uIHRo ZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcg0KKyAgc3BlY2lmaWVkIGJ5IFZhbHVlLiAgSWYgVmFs dWUgaXMgZXF1YWwgdG8gQ29tcGFyZVZhbHVlLCB0aGVuIFZhbHVlIGlzIHNldCB0bw0KKyAgRXhj aGFuZ2VWYWx1ZSBhbmQgQ29tcGFyZVZhbHVlIGlzIHJldHVybmVkLiAgSWYgVmFsdWUgaXMgbm90 IGVxdWFsIHRvIENvbXBhcmVWYWx1ZSwNCisgIHRoZW4gVmFsdWUgaXMgcmV0dXJuZWQuICBUaGUg Y29tcGFyZSBleGNoYW5nZSBvcGVyYXRpb24gbXVzdCBiZSBwZXJmb3JtZWQgdXNpbmcNCisgIE1Q IHNhZmUgbWVjaGFuaXNtcy4NCisNCisgIEBwYXJhbSAgVmFsdWUgICAgICAgICBBIHBvaW50ZXIg dG8gdGhlIDMyLWJpdCB2YWx1ZSBmb3IgdGhlIGNvbXBhcmUgZXhjaGFuZ2UNCisgICAgICAgICAg ICAgICAgICAgICAgICBvcGVyYXRpb24uDQorICBAcGFyYW0gIENvbXBhcmVWYWx1ZSAgMzItYml0 IHZhbHVlIHVzZWQgaW4gY29tcGFyZSBvcGVyYXRpb24uDQorICBAcGFyYW0gIEV4Y2hhbmdlVmFs dWUgMzItYml0IHZhbHVlIHVzZWQgaW4gZXhjaGFuZ2Ugb3BlcmF0aW9uLg0KKw0KKyAgQHJldHVy biBUaGUgb3JpZ2luYWwgKlZhbHVlIGJlZm9yZSBleGNoYW5nZS4NCisNCisqKi8NCisvL1VJTlQz Mg0KKy8vRUZJQVBJDQorLy9JbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFuZ2UzMiAoDQorLy8gIElO ICAgICAgdm9sYXRpbGUgVUlOVDMyICAgICAgICAgICAqVmFsdWUsDQorLy8gIElOICAgICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBDb21wYXJlVmFsdWUsDQorLy8gIElOICAgICAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICBFeGNoYW5nZVZhbHVlDQorLy8gICkNCitJbnRlcm5hbFN5bmND b21wYXJlRXhjaGFuZ2UzMg0KKyAgcHVzaCAgICB7IHI0IH0NCisgIGxkcmV4ICAgcjMsIFtyMF0N CisgIGNtcCAgICAgcjMsIHIxDQorICBiZXEgICAgIEludGVybmFsU3luY0NvbXBhcmVFeGNoYW5n ZTMyRXhjaGFuZ2UNCisgIGIgICAgICAgSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlMzJGYWls DQorDQorSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlMzJFeGNoYW5nZQ0KKyAgc3RyZXggICBy NCwgcjIsIFtyMF0NCisgIGNtcCAgICAgcjQsICMwDQorICBibmUgICAgIEludGVybmFsU3luY0Nv bXBhcmVFeGNoYW5nZTMyRmFpbA0KKyAgZHNiDQorICBtb3YgICAgIHIwLCByMQ0KKyAgcG9wICAg ICB7IHI0IH0NCisgIGJ4ICAgICAgbHINCisNCitJbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFuZ2Uz MkZhaWwNCisgIG1vdiAgICAgcjAsIHIzDQorICBwb3AgICAgIHsgcjQgfQ0KKyAgYnggICAgICBs cg0KKw0KKw0KKy8qKg0KKyAgUGVyZm9ybXMgYW4gYXRvbWljIGNvbXBhcmUgZXhjaGFuZ2Ugb3Bl cmF0aW9uIG9uIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIuDQorDQorICBQZXJmb3JtcyBhbiBh dG9taWMgY29tcGFyZSBleGNoYW5nZSBvcGVyYXRpb24gb24gdGhlIDY0LWJpdCB1bnNpZ25lZCBp bnRlZ2VyIHNwZWNpZmllZA0KKyAgYnkgVmFsdWUuICBJZiBWYWx1ZSBpcyBlcXVhbCB0byBDb21w YXJlVmFsdWUsIHRoZW4gVmFsdWUgaXMgc2V0IHRvIEV4Y2hhbmdlVmFsdWUgYW5kDQorICBDb21w YXJlVmFsdWUgaXMgcmV0dXJuZWQuICBJZiBWYWx1ZSBpcyBub3QgZXF1YWwgdG8gQ29tcGFyZVZh bHVlLCB0aGVuIFZhbHVlIGlzIHJldHVybmVkLg0KKyAgVGhlIGNvbXBhcmUgZXhjaGFuZ2Ugb3Bl cmF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUgbWVjaGFuaXNtcy4NCisNCisg IEBwYXJhbSAgVmFsdWUgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIDY0LWJpdCB2YWx1ZSBmb3Ig dGhlIGNvbXBhcmUgZXhjaGFuZ2UNCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24u DQorICBAcGFyYW0gIENvbXBhcmVWYWx1ZSAgNjQtYml0IHZhbHVlIHVzZWQgaW4gY29tcGFyZSBv cGVyYXRpb24uDQorICBAcGFyYW0gIEV4Y2hhbmdlVmFsdWUgNjQtYml0IHZhbHVlIHVzZWQgaW4g ZXhjaGFuZ2Ugb3BlcmF0aW9uLg0KKw0KKyAgQHJldHVybiBUaGUgb3JpZ2luYWwgKlZhbHVlIGJl Zm9yZSBleGNoYW5nZS4NCisNCisqKi8NCisvL1VJTlQ2NA0KKy8vRUZJQVBJDQorLy9JbnRlcm5h bFN5bmNDb21wYXJlRXhjaGFuZ2U2NCAoDQorLy8gIElOICAgICAgdm9sYXRpbGUgVUlOVDY0ICAg ICAgICAgICAqVmFsdWUsICAgICAgICAgLy8gcjAtcjENCisvLyAgSU4gICAgICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgIENvbXBhcmVWYWx1ZSwgICAvLyByMi1yMw0KKy8vICBJTiAgICAgIFVJ TlQ2NCAgICAgICAgICAgICAgICAgICAgRXhjaGFuZ2VWYWx1ZSAgIC8vIHI0LXI1DQorLy8gICkN CitJbnRlcm5hbFN5bmNDb21wYXJlRXhjaGFuZ2U2NA0KKyAgcHVzaCAgICB7IHI2LXI4IH0NCisg IGxkcmV4ZCAgcjYsIHI3LCBbcjBdDQorICBjbXAgICAgIHI2LCByMg0KKyAgY21wZXEgICByNywg cjMNCisgIGJuZSAgICAgSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlNjRGYWlsDQorICBiZXEg ICAgIEludGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTY0RXhjaGFuZ2UNCisNCitJbnRlcm5hbFN5 bmNDb21wYXJlRXhjaGFuZ2U2NEV4Y2hhbmdlDQorICBzdHJleGQgIHI4LCByNCwgcjUsIFtyMF0N CisgIGNtcCAgICAgcjgsICMwDQorICBibmUgICAgIEludGVybmFsU3luY0NvbXBhcmVFeGNoYW5n ZTY0RmFpbA0KKyAgbW92ICAgICByMCwgcjINCisgIG1vdiAgICAgcjEsIHIzDQorICBkc2INCisg IHBvcCAgICAgeyByNi1yOCB9DQorICBieCAgICAgIGxyDQorDQorSW50ZXJuYWxTeW5jQ29tcGFy ZUV4Y2hhbmdlNjRGYWlsDQorICBtb3YgICAgIHIwLCByNg0KKyAgbW92ICAgICByMSwgcjcNCisg IHBvcCAgICAgeyByNi1yOCB9DQorICBieCAgICAgIGxyDQorDQorLyoqDQorICBQZXJmb3JtcyBh biBhdG9taWMgaW5jcmVtZW50IG9mIGFuIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLg0KKw0KKyAg UGVyZm9ybXMgYW4gYXRvbWljIGluY3JlbWVudCBvZiB0aGUgMzItYml0IHVuc2lnbmVkIGludGVn ZXIgc3BlY2lmaWVkIGJ5DQorICBWYWx1ZSBhbmQgcmV0dXJucyB0aGUgaW5jcmVtZW50ZWQgdmFs dWUuIFRoZSBpbmNyZW1lbnQgb3BlcmF0aW9uIG11c3QgYmUNCisgIHBlcmZvcm1lZCB1c2luZyBN UCBzYWZlIG1lY2hhbmlzbXMuIFRoZSBzdGF0ZSBvZiB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdA0K KyAgZ3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KKw0KKyAgQHBhcmFtICBWYWx1ZSBBIHBvaW50 ZXIgdG8gdGhlIDMyLWJpdCB2YWx1ZSB0byBpbmNyZW1lbnQuDQorDQorICBAcmV0dXJuIFRoZSBp bmNyZW1lbnRlZCB2YWx1ZS4NCisNCisqKi8NCisvL1VJTlQzMg0KKy8vRUZJQVBJDQorLy9JbnRl cm5hbFN5bmNJbmNyZW1lbnQgKA0KKy8vICBJTiAgICAgIHZvbGF0aWxlIFVJTlQzMiAgICAgICAg ICAgKlZhbHVlDQorLy8gICkNCitJbnRlcm5hbFN5bmNJbmNyZW1lbnQNCisgIHB1c2ggICAgeyBy MS1yMiB9DQorVHJ5SW50ZXJuYWxTeW5jSW5jcmVtZW50DQorICBsZHJleCAgIHIxLCBbcjBdDQor ICBhZGQgICAgIHIxLCByMSwgIzENCisgIHN0cmV4ICAgcjIsIHIxLCBbcjBdDQorICBjbXAgICAg IHIyLCAjMA0KKyAgYm5lICAgICBUcnlJbnRlcm5hbFN5bmNJbmNyZW1lbnQNCisgIGRzYg0KKyAg cG9wICAgICB7IHIxLXIyIH0NCisgIGJ4ICAgICAgbHINCisNCisvKioNCisgIFBlcmZvcm1zIGFu IGF0b21pYyBkZWNyZW1lbnQgb2YgYW4gMzItYml0IHVuc2lnbmVkIGludGVnZXIuDQorDQorICBQ ZXJmb3JtcyBhbiBhdG9taWMgZGVjcmVtZW50IG9mIHRoZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdl ciBzcGVjaWZpZWQgYnkNCisgIFZhbHVlIGFuZCByZXR1cm5zIHRoZSBkZWNyZW1lbnQgdmFsdWUu IFRoZSBkZWNyZW1lbnQgb3BlcmF0aW9uIG11c3QgYmUNCisgIHBlcmZvcm1lZCB1c2luZyBNUCBz YWZlIG1lY2hhbmlzbXMuIFRoZSBzdGF0ZSBvZiB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdA0KKyAg Z3VhcmFudGVlZCB0byBiZSBNUCBzYWZlLg0KKw0KKyAgQHBhcmFtICBWYWx1ZSBBIHBvaW50ZXIg dG8gdGhlIDMyLWJpdCB2YWx1ZSB0byBkZWNyZW1lbnQuDQorDQorICBAcmV0dXJuIFRoZSBkZWNy ZW1lbnQgdmFsdWUuDQorDQorKiovDQorLy9VSU5UMzINCisvL0VGSUFQSQ0KKy8vSW50ZXJuYWxT eW5jRGVjcmVtZW50ICgNCisvLyAgSU4gICAgICB2b2xhdGlsZSBVSU5UMzIgICAgICAgICAgICpW YWx1ZQ0KKy8vICApDQorSW50ZXJuYWxTeW5jRGVjcmVtZW50DQorICBwdXNoICAgIHsgcjEtcjIg fQ0KK1RyeUludGVybmFsU3luY0RlY3JlbWVudA0KKyAgbGRyZXggICByMSwgW3IwXQ0KKyAgc3Vi ICAgICByMSwgcjEsICMxDQorICBzdHJleCAgIHIyLCByMSwgW3IwXQ0KKyAgY21wICAgICByMiwg IzANCisgIGJuZSAgICAgVHJ5SW50ZXJuYWxTeW5jRGVjcmVtZW50DQorICBkc2INCisgIHBvcCAg ICAgeyByMS1yMiB9DQorICBieCAgICAgIGxyDQorDQorICBFTkQNCmRpZmYgLS1naXQgYS9NZGVQ a2cvTGlicmFyeS9CYXNlU3luY2hyb25pemF0aW9uTGliL0FybS9TeW5jaHJvbml6YXRpb24uYyBi L01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQXJtL1N5bmNocm9uaXphdGlv bi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGRhYTA5Li4wMDAwMDAwCi0tLSBh L01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQXJtL1N5bmNocm9uaXphdGlv bi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8qKiBAZmlsZQ0KLSAgSW1wbGVt ZW50YXRpb24gb2Ygc3luY2hyb25pemF0aW9uIGZ1bmN0aW9ucy4gU3RpbGwgbmVlZHMgdG8gYmUg cG9ydGVkDQotDQotICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDEwLCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICBQb3J0aW9ucyBjb3B5cmlnaHQgKGMpIDIw MDggLSAyMDA5LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KLSAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KLSAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlDQotICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBm dWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kIGF0DQotICBodHRwOi8vb3BlbnNv dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwLg0KLQ0KLSAgVEhFIFBST0dSQU0gSVMg RElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQot ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KLQ0KLSoqLw0KLQ0KLS8qKg0KLSAgUGVyZm9ybXMgYW4g YXRvbWljIGNvbXBhcmUgZXhjaGFuZ2Ugb3BlcmF0aW9uIG9uIGEgMzItYml0IHVuc2lnbmVkIGlu dGVnZXIuDQotDQotICBQZXJmb3JtcyBhbiBhdG9taWMgY29tcGFyZSBleGNoYW5nZSBvcGVyYXRp b24gb24gdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyDQotICBzcGVjaWZpZWQgYnkgVmFsdWUu ICBJZiBWYWx1ZSBpcyBlcXVhbCB0byBDb21wYXJlVmFsdWUsIHRoZW4gVmFsdWUgaXMgc2V0IHRv DQotICBFeGNoYW5nZVZhbHVlIGFuZCBDb21wYXJlVmFsdWUgaXMgcmV0dXJuZWQuICBJZiBWYWx1 ZSBpcyBub3QgZXF1YWwgdG8gQ29tcGFyZVZhbHVlLA0KLSAgdGhlbiBWYWx1ZSBpcyByZXR1cm5l ZC4gIFRoZSBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB1c2lu Zw0KLSAgTVAgc2FmZSBtZWNoYW5pc21zLg0KLQ0KLSAgQHBhcmFtICBWYWx1ZSAgICAgICAgIEEg cG9pbnRlciB0byB0aGUgMzItYml0IHZhbHVlIGZvciB0aGUgY29tcGFyZSBleGNoYW5nZQ0KLSAg ICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi4NCi0gIEBwYXJhbSAgQ29tcGFyZVZhbHVl ICAzMi1iaXQgdmFsdWUgdXNlZCBpbiBjb21wYXJlIG9wZXJhdGlvbi4NCi0gIEBwYXJhbSAgRXhj aGFuZ2VWYWx1ZSAzMi1iaXQgdmFsdWUgdXNlZCBpbiBleGNoYW5nZSBvcGVyYXRpb24uDQotDQot ICBAcmV0dXJuIFRoZSBvcmlnaW5hbCAqVmFsdWUgYmVmb3JlIGV4Y2hhbmdlLg0KLQ0KLSoqLw0K LVVJTlQzMg0KLUVGSUFQSQ0KLUludGVybmFsU3luY0NvbXBhcmVFeGNoYW5nZTMyICgNCi0gIElO ICAgICAgdm9sYXRpbGUgVUlOVDMyICAgICAgICAgICAqVmFsdWUsDQotICBJTiAgICAgIFVJTlQz MiAgICAgICAgICAgICAgICAgICAgQ29tcGFyZVZhbHVlLA0KLSAgSU4gICAgICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgIEV4Y2hhbmdlVmFsdWUNCi0gICkNCi17DQotICByZXR1cm4gKlZhbHVl ICE9IENvbXBhcmVWYWx1ZSA/ICpWYWx1ZSA6DQotICAgICAgICAgICAoKCpWYWx1ZSA9IEV4Y2hh bmdlVmFsdWUpLCBDb21wYXJlVmFsdWUpOw0KLX0NCi0NCi0vKioNCi0gIFBlcmZvcm1zIGFuIGF0 b21pYyBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBvbiBhIDY0LWJpdCB1bnNpZ25lZCBpbnRl Z2VyLg0KLQ0KLSAgUGVyZm9ybXMgYW4gYXRvbWljIGNvbXBhcmUgZXhjaGFuZ2Ugb3BlcmF0aW9u IG9uIHRoZSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlciBzcGVjaWZpZWQgDQotICBieSBWYWx1ZS4g IElmIFZhbHVlIGlzIGVxdWFsIHRvIENvbXBhcmVWYWx1ZSwgdGhlbiBWYWx1ZSBpcyBzZXQgdG8g RXhjaGFuZ2VWYWx1ZSBhbmQgDQotICBDb21wYXJlVmFsdWUgaXMgcmV0dXJuZWQuICBJZiBWYWx1 ZSBpcyBub3QgZXF1YWwgdG8gQ29tcGFyZVZhbHVlLCB0aGVuIFZhbHVlIGlzIHJldHVybmVkLiAN Ci0gIFRoZSBjb21wYXJlIGV4Y2hhbmdlIG9wZXJhdGlvbiBtdXN0IGJlIHBlcmZvcm1lZCB1c2lu ZyBNUCBzYWZlIG1lY2hhbmlzbXMuDQotDQotICBAcGFyYW0gIFZhbHVlICAgICAgICAgQSBwb2lu dGVyIHRvIHRoZSA2NC1iaXQgdmFsdWUgZm9yIHRoZSBjb21wYXJlIGV4Y2hhbmdlDQotICAgICAg ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLg0KLSAgQHBhcmFtICBDb21wYXJlVmFsdWUgIDY0 LWJpdCB2YWx1ZSB1c2VkIGluIGNvbXBhcmUgb3BlcmF0aW9uLg0KLSAgQHBhcmFtICBFeGNoYW5n ZVZhbHVlIDY0LWJpdCB2YWx1ZSB1c2VkIGluIGV4Y2hhbmdlIG9wZXJhdGlvbi4NCi0NCi0gIEBy ZXR1cm4gVGhlIG9yaWdpbmFsICpWYWx1ZSBiZWZvcmUgZXhjaGFuZ2UuDQotDQotKiovDQotVUlO VDY0DQotRUZJQVBJDQotSW50ZXJuYWxTeW5jQ29tcGFyZUV4Y2hhbmdlNjQgKA0KLSAgSU4gICAg ICB2b2xhdGlsZSBVSU5UNjQgICAgICAgICAgICpWYWx1ZSwNCi0gIElOICAgICAgVUlOVDY0ICAg ICAgICAgICAgICAgICAgICBDb21wYXJlVmFsdWUsDQotICBJTiAgICAgIFVJTlQ2NCAgICAgICAg ICAgICAgICAgICAgRXhjaGFuZ2VWYWx1ZQ0KLSAgKQ0KLXsNCi0gIHJldHVybiAqVmFsdWUgIT0g Q29tcGFyZVZhbHVlID8gKlZhbHVlIDoNCi0gICAgICAgICAgICgoKlZhbHVlID0gRXhjaGFuZ2VW YWx1ZSksIENvbXBhcmVWYWx1ZSk7DQotfQ0KLQ0KLS8qKg0KLSAgUGVyZm9ybXMgYW4gYXRvbWlj IGluY3JlbWVudCBvZiBhbiAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4NCi0NCi0gIFBlcmZvcm1z IGFuIGF0b21pYyBpbmNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHNwZWNp ZmllZCBieQ0KLSAgVmFsdWUgYW5kIHJldHVybnMgdGhlIGluY3JlbWVudGVkIHZhbHVlLiBUaGUg aW5jcmVtZW50IG9wZXJhdGlvbiBtdXN0IGJlDQotICBwZXJmb3JtZWQgdXNpbmcgTVAgc2FmZSBt ZWNoYW5pc21zLiBUaGUgc3RhdGUgb2YgdGhlIHJldHVybiB2YWx1ZSBpcyBub3QNCi0gIGd1YXJh bnRlZWQgdG8gYmUgTVAgc2FmZS4NCi0NCi0gIEBwYXJhbSAgVmFsdWUgQSBwb2ludGVyIHRvIHRo ZSAzMi1iaXQgdmFsdWUgdG8gaW5jcmVtZW50Lg0KLQ0KLSAgQHJldHVybiBUaGUgaW5jcmVtZW50 ZWQgdmFsdWUuDQotDQotKiovDQotVUlOVDMyDQotRUZJQVBJDQotSW50ZXJuYWxTeW5jSW5jcmVt ZW50ICgNCi0gIElOICAgICAgdm9sYXRpbGUgVUlOVDMyICAgICAgICAgICAqVmFsdWUNCi0gICkN Ci17DQotICByZXR1cm4gKysqVmFsdWU7DQotfQ0KLQ0KLS8qKg0KLSAgUGVyZm9ybXMgYW4gYXRv bWljIGRlY3JlbWVudCBvZiBhbiAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4NCi0NCi0gIFBlcmZv cm1zIGFuIGF0b21pYyBkZWNyZW1lbnQgb2YgdGhlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHNw ZWNpZmllZCBieQ0KLSAgVmFsdWUgYW5kIHJldHVybnMgdGhlIGRlY3JlbWVudCB2YWx1ZS4gVGhl IGRlY3JlbWVudCBvcGVyYXRpb24gbXVzdCBiZQ0KLSAgcGVyZm9ybWVkIHVzaW5nIE1QIHNhZmUg bWVjaGFuaXNtcy4gVGhlIHN0YXRlIG9mIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90DQotICBndWFy YW50ZWVkIHRvIGJlIE1QIHNhZmUuDQotDQotICBAcGFyYW0gIFZhbHVlIEEgcG9pbnRlciB0byB0 aGUgMzItYml0IHZhbHVlIHRvIGRlY3JlbWVudC4NCi0NCi0gIEByZXR1cm4gVGhlIGRlY3JlbWVu dCB2YWx1ZS4NCi0NCi0qKi8NCi1VSU5UMzINCi1FRklBUEkNCi1JbnRlcm5hbFN5bmNEZWNyZW1l bnQgKA0KLSAgSU4gICAgICB2b2xhdGlsZSBVSU5UMzIgICAgICAgICAgICpWYWx1ZQ0KLSAgKQ0K LXsNCi0gIHJldHVybiAtLSpWYWx1ZTsNCi19DQpkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkv QmFzZVN5bmNocm9uaXphdGlvbkxpYi9CYXNlU3luY2hyb25pemF0aW9uTGliLmluZiBiL01kZVBr Zy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQmFzZVN5bmNocm9uaXphdGlvbkxpYi5p bmYKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBiZjljZjY3Li43YTMwNGIy Ci0tLSBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VTeW5jaHJvbml6YXRpb25MaWIvQmFzZVN5bmNocm9u aXphdGlvbkxpYi5pbmYKKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZVN5bmNocm9uaXphdGlvbkxp Yi9CYXNlU3luY2hyb25pemF0aW9uTGliLmluZgpAQCAtNzgsNyArNzgsOCBAQAogDQogW1NvdXJj ZXMuQVJNXQ0KICAgU3luY2hyb25pemF0aW9uLmMNCi0gIEFybS9TeW5jaHJvbml6YXRpb24uYw0K KyAgQXJtL1N5bmNocm9uaXphdGlvbi5hc20gICAgICAgfCBSVkNUDQorICBBcm0vU3luY2hyb25p emF0aW9uLlMgICAgICAgICB8IEdDQw0KIA0KIFtTb3VyY2VzLkFBUkNINjRdDQogICBTeW5jaHJv bml6YXRpb24uYw0KLS0gCjEuOS4xCgo= --_002_0877601216922E4B83A7129715B5DA2BC60B6FDE1BGEORGEEmeaArm_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel --_002_0877601216922E4B83A7129715B5DA2BC60B6FDE1BGEORGEEmeaArm_--