From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C408C3A5A1 for ; Thu, 22 Aug 2019 11:57:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 545F2233FE for ; Thu, 22 Aug 2019 11:57:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1733260AbfHVL5X (ORCPT ); Thu, 22 Aug 2019 07:57:23 -0400 Received: from foss.arm.com ([217.140.110.172]:44750 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731156AbfHVL5W (ORCPT ); Thu, 22 Aug 2019 07:57:22 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EABE1337; Thu, 22 Aug 2019 04:57:21 -0700 (PDT) Received: from [10.1.196.217] (e121566-lin.cambridge.arm.com [10.1.196.217]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 07C2B3F718; Thu, 22 Aug 2019 04:57:20 -0700 (PDT) Subject: Re: [PATCH 00/59] KVM: arm64: ARMv8.3 Nested Virtualization support From: Alexandru Elisei To: Marc Zyngier , "linux-arm-kernel@lists.infradead.org" , "kvmarm@lists.cs.columbia.edu" , "kvm@vger.kernel.org" Cc: Andre Przywara , Dave P Martin References: <20190621093843.220980-1-marc.zyngier@arm.com> <69cf1fe7-912c-1767-ff1b-dfcc7f549e44@arm.com> <0d9aa552-fa01-c482-41d7-587acf308259@arm.com> Message-ID: <55184c0d-8a8f-ca67-894c-1e738aee262b@arm.com> Date: Thu, 22 Aug 2019 12:57:19 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: <0d9aa552-fa01-c482-41d7-587acf308259@arm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On 8/9/19 11:01 AM, Alexandru Elisei wrote: > On 8/2/19 11:11 AM, Alexandru Elisei wrote: >> Hi, >> >> On 6/21/19 10:37 AM, Marc Zyngier wrote: >> When working on adding support for EL2 to kvm-unit-tests I was able to trigger >> the following warning: >> >> # ./lkvm run -f psci.flat -m 128 -c 8 --console serial --irqchip gicv3 --nested >> # lkvm run --firmware psci.flat -m 128 -c 8 --name guest-151 >> Info: Placing fdt at 0x80200000 - 0x80210000 >> # Warning: The maximum recommended amount of VCPUs is 4 >> chr_testdev_init: chr-testdev: can't find a virtio-console >> INFO: PSCI version 1.0 >> PASS: invalid-function >> PASS: affinity-info-on >> PASS: affinity-info-off >> [   24.381266] WARNING: CPU: 3 PID: 160 at >> arch/arm64/kvm/../../../virt/kvm/arm/arch_timer.c:170 >> kvm_timer_irq_can_fire+0xc/0x30 >> [   24.381366] Modules linked in: >> [   24.381466] CPU: 3 PID: 160 Comm: kvm-vcpu-1 Not tainted >> 5.2.0-rc5-00060-g7dbce63bd1c7 #145 >> [   24.381566] Hardware name: Foundation-v8A (DT) >> [   24.381566] pstate: 40400009 (nZcv daif +PAN -UAO) >> [   24.381666] pc : kvm_timer_irq_can_fire+0xc/0x30 >> [   24.381766] lr : timer_emulate+0x24/0x98 >> [   24.381766] sp : ffff000013d8b780 >> [   24.381866] x29: ffff000013d8b780 x28: ffff80087a639b80 >> [   24.381966] x27: ffff000010ba8648 x26: ffff000010b71b40 >> [   24.382066] x25: ffff80087a63a100 x24: 0000000000000000 >> [   24.382111] x23: 000080086ca54000 x22: ffff0000100ce260 >> [   24.382166] x21: ffff800875e7c918 x20: ffff800875e7a800 >> [   24.382275] x19: ffff800875e7ca08 x18: 0000000000000000 >> [   24.382366] x17: 0000000000000000 x16: 0000000000000000 >> [   24.382466] x15: 0000000000000000 x14: 0000000000002118 >> [   24.382566] x13: 0000000000002190 x12: 0000000000002280 >> [   24.382566] x11: 0000000000002208 x10: 0000000000000040 >> [   24.382666] x9 : ffff000012dc3b38 x8 : 0000000000000000 >> [   24.382766] x7 : 0000000000000000 x6 : ffff80087ac00248 >> [   24.382866] x5 : 000080086ca54000 x4 : 0000000000002118 >> [   24.382966] x3 : eeeeeeeeeeeeeeef x2 : ffff800875e7c918 >> [   24.383066] x1 : 0000000000000001 x0 : ffff800875e7ca08 >> [   24.383066] Call trace: >> [   24.383166]  kvm_timer_irq_can_fire+0xc/0x30 >> [   24.383266]  kvm_timer_vcpu_load+0x9c/0x1a0 >> [   24.383366]  kvm_arch_vcpu_load+0xb0/0x1f0 >> [   24.383366]  kvm_sched_in+0x1c/0x28 >> [   24.383466]  finish_task_switch+0xd8/0x1d8 >> [   24.383566]  __schedule+0x248/0x4a0 >> [   24.383666]  preempt_schedule_irq+0x60/0x90 >> [   24.383666]  el1_irq+0xd0/0x180 >> [   24.383766]  kvm_handle_guest_abort+0x0/0x3a0 >> [   24.383866]  kvm_arch_vcpu_ioctl_run+0x41c/0x688 >> [   24.383866]  kvm_vcpu_ioctl+0x4c0/0x838 >> [   24.383966]  do_vfs_ioctl+0xb8/0x878 >> [   24.384077]  ksys_ioctl+0x84/0x90 >> [   24.384166]  __arm64_sys_ioctl+0x18/0x28 >> [   24.384166]  el0_svc_common.constprop.0+0xb0/0x168 >> [   24.384266]  el0_svc_handler+0x28/0x78 >> [   24.384366]  el0_svc+0x8/0xc >> [   24.384366] ---[ end trace 37a32293e43ac12c ]--- >> [   24.384666] WARNING: CPU: 3 PID: 160 at >> arch/arm64/kvm/../../../virt/kvm/arm/arch_timer.c:170 >> kvm_timer_irq_can_fire+0xc/0x30 >> [   24.384766] Modules linked in: >> [   24.384866] CPU: 3 PID: 160 Comm: kvm-vcpu-1 Tainted: G W >> 5.2.0-rc5-00060-g7dbce63bd1c7 #145 >> [   24.384966] Hardware name: Foundation-v8A (DT) >> [   24.384966] pstate: 40400009 (nZcv daif +PAN -UAO) >> [   24.385066] pc : kvm_timer_irq_can_fire+0xc/0x30 >> [   24.385166] lr : timer_emulate+0x24/0x98 >> [   24.385166] sp : ffff000013d8b780 >> [   24.385266] x29: ffff000013d8b780 x28: ffff80087a639b80 >> [   24.385366] x27: ffff000010ba8648 x26: ffff000010b71b40 >> [   24.385466] x25: ffff80087a63a100 x24: 0000000000000000 >> [   24.385466] x23: 000080086ca54000 x22: ffff0000100ce260 >> [   24.385566] x21: ffff800875e7c918 x20: ffff800875e7a800 >> [   24.385666] x19: ffff800875e7ca80 x18: 0000000000000000 >> [   24.385766] x17: 0000000000000000 x16: 0000000000000000 >> [   24.385866] x15: 0000000000000000 x14: 0000000000002118 >> [   24.385966] x13: 0000000000002190 x12: 0000000000002280 >> [   24.385966] x11: 0000000000002208 x10: 0000000000000040 >> [   24.386066] x9 : ffff000012dc3b38 x8 : 0000000000000000 >> [   24.386166] x7 : 0000000000000000 x6 : ffff80087ac00248 >> [   24.386266] x5 : 000080086ca54000 x4 : 0000000000002118 >> [   24.386366] x3 : eeeeeeeeeeeeeeef x2 : ffff800875e7c918 >> [   24.386466] x1 : 0000000000000001 x0 : ffff800875e7ca80 >> [   24.386466] Call trace: >> [   24.386566]  kvm_timer_irq_can_fire+0xc/0x30 >> [   24.386666]  kvm_timer_vcpu_load+0xa8/0x1a0 >> [   24.386666]  kvm_arch_vcpu_load+0xb0/0x1f0 >> [   24.386898]  kvm_sched_in+0x1c/0x28 >> [   24.386966]  finish_task_switch+0xd8/0x1d8 >> [   24.387166]  __schedule+0x248/0x4a0 >> [   24.387354]  preempt_schedule_irq+0x60/0x90 >> [   24.387366]  el1_irq+0xd0/0x180 >> [   24.387466]  kvm_handle_guest_abort+0x0/0x3a0 >> [   24.387566]  kvm_arch_vcpu_ioctl_run+0x41c/0x688 >> [   24.387566]  kvm_vcpu_ioctl+0x4c0/0x838 >> [   24.387666]  do_vfs_ioctl+0xb8/0x878 >> [   24.387766]  ksys_ioctl+0x84/0x90 >> [   24.387866]  __arm64_sys_ioctl+0x18/0x28 >> [   24.387866]  el0_svc_common.constprop.0+0xb0/0x168 >> [   24.387966]  el0_svc_handler+0x28/0x78 >> [   24.388066]  el0_svc+0x8/0xc >> [   24.388066] ---[ end trace 37a32293e43ac12d ]--- >> PASS: cpu-on >> SUMMARY: 4 te[   24.390266] WARNING: CPU: 3 PID: 160 at >> arch/arm64/kvm/../../../virt/kvm/arm/arch_timer.c:170 >> kvm_timer_irq_can_fire+0xc/0x30 >> s[   24.390366] Modules linked in: >> ts[   24.390366] CPU: 3 PID: 160 Comm: kvm-vcpu-1 Tainted: G W >> 5.2.0-rc5-00060-g7dbce63bd1c7 #145 >> [   24.390566] Hardware name: Foundation-v8A (DT) >> >> [   24.390795] pstate: 40400009 (nZcv daif +PAN -UAO) >> [   24.390866] pc : kvm_timer_irq_can_fire+0xc/0x30 >> [   24.390966] lr : timer_emulate+0x24/0x98 >> [   24.391066] sp : ffff000013d8b780 >> [   24.391066] x29: ffff000013d8b780 x28: ffff80087a639b80 >> [   24.391166] x27: ffff000010ba8648 x26: ffff000010b71b40 >> [   24.391266] x25: ffff80087a63a100 x24: 0000000000000000 >> [   24.391366] x23: 000080086ca54000 x22: 0000000000000003 >> [   24.391466] x21: ffff800875e7c918 x20: ffff800875e7a800 >> [   24.391466] x19: ffff800875e7ca08 x18: 0000000000000000 >> [   24.391566] x17: 0000000000000000 x16: 0000000000000000 >> [   24.391666] x15: 0000000000000000 x14: 0000000000002118 >> [   24.391766] x13: 0000000000002190 x12: 0000000000002280 >> [   24.391866] x11: 0000000000002208 x10: 0000000000000040 >> [   24.391942] x9 : ffff000012dc3b38 x8 : 0000000000000000 >> [   24.391966] x7 : 0000000000000000 x6 : ffff80087ac00248 >> [   24.392066] x5 : 000080086ca54000 x4 : 0000000000002118 >> [   24.392166] x3 : eeeeeeeeeeeeeeef x2 : ffff800875e7c918 >> [   24.392269] x1 : 0000000000000001 x0 : ffff800875e7ca08 >> [   24.392366] Call trace: >> [   24.392433]  kvm_timer_irq_can_fire+0xc/0x30 >> [   24.392466]  kvm_timer_vcpu_load+0x9c/0x1a0 >> [   24.392597]  kvm_arch_vcpu_load+0xb0/0x1f0 >> [   24.392666]  kvm_sched_in+0x1c/0x28 >> [   24.392766]  finish_task_switch+0xd8/0x1d8 >> [   24.392766]  __schedule+0x248/0x4a0 >> [   24.392866]  preempt_schedule_irq+0x60/0x90 >> [   24.392966]  el1_irq+0xd0/0x180 >> [   24.392966]  kvm_handle_guest_abort+0x0/0x3a0 >> [   24.393066]  kvm_arch_vcpu_ioctl_run+0x41c/0x688 >> [   24.393166]  kvm_vcpu_ioctl+0x4c0/0x838 >> [   24.393266]  do_vfs_ioctl+0xb8/0x878 >> [   24.393266]  ksys_ioctl+0x84/0x90 >> [   24.393366]  __arm64_sys_ioctl+0x18/0x28 >> [   24.393466]  el0_svc_common.constprop.0+0xb0/0x168 >> [   24.393566]  el0_svc_handler+0x28/0x78 >> [   24.393566]  el0_svc+0x8/0xc >> [   24.393666] ---[ end trace 37a32293e43ac12e ]--- >> [   24.393866] WARNING: CPU: 3 PID: 160 at >> arch/arm64/kvm/../../../virt/kvm/arm/arch_timer.c:170 >> kvm_timer_irq_can_fire+0xc/0x30 >> [   24.394066] Modules linked in: >> [   24.394266] CPU: 3 PID: 160 Comm: kvm-vcpu-1 Tainted: G W >> 5.2.0-rc5-00060-g7dbce63bd1c7 #145 >> [   24.394366] Hardware name: Foundation-v8A (DT) >> [   24.394466] pstate: 40400009 (nZcv daif +PAN -UAO) >> [   24.394466] pc : kvm_timer_irq_can_fire+0xc/0x30 >> [   24.394566] lr : timer_emulate+0x24/0x98 >> [   24.394666] sp : ffff000013d8b780 >> [   24.394727] x29: ffff000013d8b780 x28: ffff80087a639b80 >> [   24.394766] x27: ffff000010ba8648 x26: ffff000010b71b40 >> [   24.394866] x25: ffff80087a63a100 x24: 0000000000000000 >> [   24.394966] x23: 000080086ca54000 x22: 0000000000000003 >> [   24.394966] x21: ffff800875e7c918 x20: ffff800875e7a800 >> [   24.395066] x19: ffff800875e7ca80 x18: 0000000000000000 >> [   24.395166] x17: 0000000000000000 x16: 0000000000000000 >> [   24.395266] x15: 0000000000000000 x14: 0000000000002118 >> [   24.395383] x13: 0000000000002190 x12: 0000000000002280 >> [   24.395466] x11: 0000000000002208 x10: 0000000000000040 >> [   24.395547] x9 : ffff000012dc3b38 x8 : 0000000000000000 >> [   24.395666] x7 : 0000000000000000 x6 : ffff80087ac00248 >> [   24.395866] x5 : 000080086ca54000 x4 : 0000000000002118 >> [   24.395966] x3 : eeeeeeeeeeeeeeef x2 : ffff800875e7c918 >> [   24.396066] x1 : 0000000000000001 x0 : ffff800875e7ca80 >> [   24.396066] Call trace: >> [   24.396166]  kvm_timer_irq_can_fire+0xc/0x30 >> [   24.396266]  kvm_timer_vcpu_load+0xa8/0x1a0 >> [   24.396366]  kvm_arch_vcpu_load+0xb0/0x1f0 >> [   24.396366]  kvm_sched_in+0x1c/0x28 >> [   24.396466]  finish_task_switch+0xd8/0x1d8 >> [   24.396566]  __schedule+0x248/0x4a0 >> [   24.396666]  preempt_schedule_irq+0x60/0x90 >> [   24.396666]  el1_irq+0xd0/0x180 >> [   24.396766]  kvm_handle_guest_abort+0x0/0x3a0 >> [   24.396866]  kvm_arch_vcpu_ioctl_run+0x41c/0x688 >> [   24.396866]  kvm_vcpu_ioctl+0x4c0/0x838 >> [   24.397021]  do_vfs_ioctl+0xb8/0x878 >> [   24.397066]  ksys_ioctl+0x84/0x90 >> [   24.397166]  __arm64_sys_ioctl+0x18/0x28 >> [   24.397348]  el0_svc_common.constprop.0+0xb0/0x168 >> [   24.397366]  el0_svc_handler+0x28/0x78 >> [   24.397566]  el0_svc+0x8/0xc >> [   24.397676] ---[ end trace 37a32293e43ac12f ]--- >> >> # KVM compatibility warning. >> virtio-9p device was not detected. >> While you have requested a virtio-9p device, the guest kernel did not >> initialize it. >> Please make sure that the guest kernel was compiled with >> CONFIG_NET_9P_VIRTIO=y enabled in .config. >> >> # KVM compatibility warning. >> virtio-net device was not detected. >> While you have requested a virtio-net device, the guest kernel did not >> initialize it. >> Please make sure that the guest kernel was compiled with CONFIG_VIRTIO_NET=y >> enabled in .config. >> >> [..] > Did some investigating and this was caused by a bug in kvm-unit-tests (the fix > for it will be part of the EL2 patches for kvm-unit-tests). The guest was trying > to fetch an instruction from address 0x200, which KVM interprets as a prefetch > abort on an I/O address and ends up calling kvm_inject_pabt. The code from > arch/arm64/kvm/inject_fault.c doesn't know anything about nested virtualization, > and it sets the VCPU mode directly to PSR_MODE_EL1h. This makes_hyp_ctxt return > false, and get_timer_map will return an incorrect mapping. > > On next kvm_timer_vcpu_put, the direct timers will be {p,v}timer, and > h{p,v}timer->loaded will not be set to false. In the corresponding call to > kvm_timer_vcpu_load, KVM will try to emulate the hptimer and hvtimer, which > still have loaded = true. And this causes the warning I saw. I tried to fix it with the following patch, inject_undef64 was similarly broken: diff --git a/arch/arm64/kvm/inject_fault.c b/arch/arm64/kvm/inject_fault.c index fac962b467bd..aee8a9ef36d5 100644 --- a/arch/arm64/kvm/inject_fault.c +++ b/arch/arm64/kvm/inject_fault.c @@ -53,15 +53,7 @@ static void inject_abt64(struct kvm_vcpu *vcpu, bool is_iabt, unsigned long addr  {      unsigned long cpsr = *vcpu_cpsr(vcpu);      bool is_aarch32 = vcpu_mode_is_32bit(vcpu); -    u32 esr = 0; - -    vcpu_write_elr_el1(vcpu, *vcpu_pc(vcpu)); -    *vcpu_pc(vcpu) = get_except_vector(vcpu, except_type_sync); - -    *vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64; -    vcpu_write_spsr(vcpu, cpsr); - -    vcpu_write_sys_reg(vcpu, addr, FAR_EL1); +    u32 esr = ESR_ELx_FSC_EXTABT;        /*       * Build an {i,d}abort, depending on the level and the @@ -82,13 +74,12 @@ static void inject_abt64(struct kvm_vcpu *vcpu, bool is_iabt, unsigned long addr      if (!is_iabt)          esr |= ESR_ELx_EC_DABT_LOW << ESR_ELx_EC_SHIFT;   -    vcpu_write_sys_reg(vcpu, esr | ESR_ELx_FSC_EXTABT, ESR_EL1); -} +    if (nested_virt_in_use(vcpu)) { +        kvm_inject_nested_sync(vcpu, esr); +        return; +    }   -static void inject_undef64(struct kvm_vcpu *vcpu) -{ -    unsigned long cpsr = *vcpu_cpsr(vcpu); -    u32 esr = (ESR_ELx_EC_UNKNOWN << ESR_ELx_EC_SHIFT); +    vcpu_write_sys_reg(vcpu, esr, ESR_EL1);        vcpu_write_elr_el1(vcpu, *vcpu_pc(vcpu));      *vcpu_pc(vcpu) = get_except_vector(vcpu, except_type_sync); @@ -96,6 +87,14 @@ static void inject_undef64(struct kvm_vcpu *vcpu)      *vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64;      vcpu_write_spsr(vcpu, cpsr);   +    vcpu_write_sys_reg(vcpu, addr, FAR_EL1); +} + +static void inject_undef64(struct kvm_vcpu *vcpu) +{ +    unsigned long cpsr = *vcpu_cpsr(vcpu); +    u32 esr = ESR_ELx_EC_UNKNOWN << ESR_ELx_EC_SHIFT; +      /*       * Build an unknown exception, depending on the instruction       * set. @@ -103,7 +102,18 @@ static void inject_undef64(struct kvm_vcpu *vcpu)      if (kvm_vcpu_trap_il_is32bit(vcpu))          esr |= ESR_ELx_IL;   +    if (nested_virt_in_use(vcpu)) { +        kvm_inject_nested_sync(vcpu, esr); +        return; +    } +      vcpu_write_sys_reg(vcpu, esr, ESR_EL1); + +    vcpu_write_elr_el1(vcpu, *vcpu_pc(vcpu)); +    *vcpu_pc(vcpu) = get_except_vector(vcpu, except_type_sync); + +    *vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64; +    vcpu_write_spsr(vcpu, cpsr);  }    /** From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CB40C3A5A1 for ; Thu, 22 Aug 2019 11:57:29 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id 8CF7D233FE for ; Thu, 22 Aug 2019 11:57:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8CF7D233FE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 3945B4A5AF; Thu, 22 Aug 2019 07:57:27 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RhHMoz1zbZDN; Thu, 22 Aug 2019 07:57:25 -0400 (EDT) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 7184E4A5C0; Thu, 22 Aug 2019 07:57:25 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 54C1E4A5C0 for ; Thu, 22 Aug 2019 07:57:24 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yO6eEmekxGW0 for ; Thu, 22 Aug 2019 07:57:22 -0400 (EDT) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 58CA74A59E for ; Thu, 22 Aug 2019 07:57:22 -0400 (EDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EABE1337; Thu, 22 Aug 2019 04:57:21 -0700 (PDT) Received: from [10.1.196.217] (e121566-lin.cambridge.arm.com [10.1.196.217]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 07C2B3F718; Thu, 22 Aug 2019 04:57:20 -0700 (PDT) Subject: Re: [PATCH 00/59] KVM: arm64: ARMv8.3 Nested Virtualization support From: Alexandru Elisei To: Marc Zyngier , "linux-arm-kernel@lists.infradead.org" , "kvmarm@lists.cs.columbia.edu" , "kvm@vger.kernel.org" References: <20190621093843.220980-1-marc.zyngier@arm.com> <69cf1fe7-912c-1767-ff1b-dfcc7f549e44@arm.com> <0d9aa552-fa01-c482-41d7-587acf308259@arm.com> Message-ID: <55184c0d-8a8f-ca67-894c-1e738aee262b@arm.com> Date: Thu, 22 Aug 2019 12:57:19 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: <0d9aa552-fa01-c482-41d7-587acf308259@arm.com> Content-Language: en-US Cc: Andre Przywara , Dave P Martin X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu T24gOC85LzE5IDExOjAxIEFNLCBBbGV4YW5kcnUgRWxpc2VpIHdyb3RlOgo+IE9uIDgvMi8xOSAx MToxMSBBTSwgQWxleGFuZHJ1IEVsaXNlaSB3cm90ZToKPj4gSGksCj4+Cj4+IE9uIDYvMjEvMTkg MTA6MzcgQU0sIE1hcmMgWnluZ2llciB3cm90ZToKPj4gV2hlbiB3b3JraW5nIG9uIGFkZGluZyBz dXBwb3J0IGZvciBFTDIgdG8ga3ZtLXVuaXQtdGVzdHMgSSB3YXMgYWJsZSB0byB0cmlnZ2VyCj4+ IHRoZSBmb2xsb3dpbmcgd2FybmluZzoKPj4KPj4gIyAuL2xrdm0gcnVuIC1mIHBzY2kuZmxhdCAt bSAxMjggLWMgOCAtLWNvbnNvbGUgc2VyaWFsIC0taXJxY2hpcCBnaWN2MyAtLW5lc3RlZAo+PiAg ICMgbGt2bSBydW4gLS1maXJtd2FyZSBwc2NpLmZsYXQgLW0gMTI4IC1jIDggLS1uYW1lIGd1ZXN0 LTE1MQo+PiAgIEluZm86IFBsYWNpbmcgZmR0IGF0IDB4ODAyMDAwMDAgLSAweDgwMjEwMDAwCj4+ ICAgIyBXYXJuaW5nOiBUaGUgbWF4aW11bSByZWNvbW1lbmRlZCBhbW91bnQgb2YgVkNQVXMgaXMg NAo+PiBjaHJfdGVzdGRldl9pbml0OiBjaHItdGVzdGRldjogY2FuJ3QgZmluZCBhIHZpcnRpby1j b25zb2xlCj4+IElORk86IFBTQ0kgdmVyc2lvbiAxLjAKPj4gUEFTUzogaW52YWxpZC1mdW5jdGlv bgo+PiBQQVNTOiBhZmZpbml0eS1pbmZvLW9uCj4+IFBBU1M6IGFmZmluaXR5LWluZm8tb2ZmCj4+ IFvCoMKgIDI0LjM4MTI2Nl0gV0FSTklORzogQ1BVOiAzIFBJRDogMTYwIGF0Cj4+IGFyY2gvYXJt NjQva3ZtLy4uLy4uLy4uL3ZpcnQva3ZtL2FybS9hcmNoX3RpbWVyLmM6MTcwCj4+IGt2bV90aW1l cl9pcnFfY2FuX2ZpcmUrMHhjLzB4MzAKPj4gW8KgwqAgMjQuMzgxMzY2XSBNb2R1bGVzIGxpbmtl ZCBpbjoKPj4gW8KgwqAgMjQuMzgxNDY2XSBDUFU6IDMgUElEOiAxNjAgQ29tbToga3ZtLXZjcHUt MSBOb3QgdGFpbnRlZAo+PiA1LjIuMC1yYzUtMDAwNjAtZzdkYmNlNjNiZDFjNyAjMTQ1Cj4+IFvC oMKgIDI0LjM4MTU2Nl0gSGFyZHdhcmUgbmFtZTogRm91bmRhdGlvbi12OEEgKERUKQo+PiBbwqDC oCAyNC4zODE1NjZdIHBzdGF0ZTogNDA0MDAwMDkgKG5aY3YgZGFpZiArUEFOIC1VQU8pCj4+IFvC oMKgIDI0LjM4MTY2Nl0gcGMgOiBrdm1fdGltZXJfaXJxX2Nhbl9maXJlKzB4Yy8weDMwCj4+IFvC oMKgIDI0LjM4MTc2Nl0gbHIgOiB0aW1lcl9lbXVsYXRlKzB4MjQvMHg5OAo+PiBbwqDCoCAyNC4z ODE3NjZdIHNwIDogZmZmZjAwMDAxM2Q4Yjc4MAo+PiBbwqDCoCAyNC4zODE4NjZdIHgyOTogZmZm ZjAwMDAxM2Q4Yjc4MCB4Mjg6IGZmZmY4MDA4N2E2MzliODAKPj4gW8KgwqAgMjQuMzgxOTY2XSB4 Mjc6IGZmZmYwMDAwMTBiYTg2NDggeDI2OiBmZmZmMDAwMDEwYjcxYjQwCj4+IFvCoMKgIDI0LjM4 MjA2Nl0geDI1OiBmZmZmODAwODdhNjNhMTAwIHgyNDogMDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDC oCAyNC4zODIxMTFdIHgyMzogMDAwMDgwMDg2Y2E1NDAwMCB4MjI6IGZmZmYwMDAwMTAwY2UyNjAK Pj4gW8KgwqAgMjQuMzgyMTY2XSB4MjE6IGZmZmY4MDA4NzVlN2M5MTggeDIwOiBmZmZmODAwODc1 ZTdhODAwCj4+IFvCoMKgIDI0LjM4MjI3NV0geDE5OiBmZmZmODAwODc1ZTdjYTA4IHgxODogMDAw MDAwMDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zODIzNjZdIHgxNzogMDAwMDAwMDAwMDAwMDAwMCB4 MTY6IDAwMDAwMDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzgyNDY2XSB4MTU6IDAwMDAwMDAwMDAw MDAwMDAgeDE0OiAwMDAwMDAwMDAwMDAyMTE4Cj4+IFvCoMKgIDI0LjM4MjU2Nl0geDEzOiAwMDAw MDAwMDAwMDAyMTkwIHgxMjogMDAwMDAwMDAwMDAwMjI4MAo+PiBbwqDCoCAyNC4zODI1NjZdIHgx MTogMDAwMDAwMDAwMDAwMjIwOCB4MTA6IDAwMDAwMDAwMDAwMDAwNDAKPj4gW8KgwqAgMjQuMzgy NjY2XSB4OSA6IGZmZmYwMDAwMTJkYzNiMzggeDggOiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKg IDI0LjM4Mjc2Nl0geDcgOiAwMDAwMDAwMDAwMDAwMDAwIHg2IDogZmZmZjgwMDg3YWMwMDI0OAo+ PiBbwqDCoCAyNC4zODI4NjZdIHg1IDogMDAwMDgwMDg2Y2E1NDAwMCB4NCA6IDAwMDAwMDAwMDAw MDIxMTgKPj4gW8KgwqAgMjQuMzgyOTY2XSB4MyA6IGVlZWVlZWVlZWVlZWVlZWYgeDIgOiBmZmZm ODAwODc1ZTdjOTE4Cj4+IFvCoMKgIDI0LjM4MzA2Nl0geDEgOiAwMDAwMDAwMDAwMDAwMDAxIHgw IDogZmZmZjgwMDg3NWU3Y2EwOAo+PiBbwqDCoCAyNC4zODMwNjZdIENhbGwgdHJhY2U6Cj4+IFvC oMKgIDI0LjM4MzE2Nl3CoCBrdm1fdGltZXJfaXJxX2Nhbl9maXJlKzB4Yy8weDMwCj4+IFvCoMKg IDI0LjM4MzI2Nl3CoCBrdm1fdGltZXJfdmNwdV9sb2FkKzB4OWMvMHgxYTAKPj4gW8KgwqAgMjQu MzgzMzY2XcKgIGt2bV9hcmNoX3ZjcHVfbG9hZCsweGIwLzB4MWYwCj4+IFvCoMKgIDI0LjM4MzM2 Nl3CoCBrdm1fc2NoZWRfaW4rMHgxYy8weDI4Cj4+IFvCoMKgIDI0LjM4MzQ2Nl3CoCBmaW5pc2hf dGFza19zd2l0Y2grMHhkOC8weDFkOAo+PiBbwqDCoCAyNC4zODM1NjZdwqAgX19zY2hlZHVsZSsw eDI0OC8weDRhMAo+PiBbwqDCoCAyNC4zODM2NjZdwqAgcHJlZW1wdF9zY2hlZHVsZV9pcnErMHg2 MC8weDkwCj4+IFvCoMKgIDI0LjM4MzY2Nl3CoCBlbDFfaXJxKzB4ZDAvMHgxODAKPj4gW8KgwqAg MjQuMzgzNzY2XcKgIGt2bV9oYW5kbGVfZ3Vlc3RfYWJvcnQrMHgwLzB4M2EwCj4+IFvCoMKgIDI0 LjM4Mzg2Nl3CoCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bisweDQxYy8weDY4OAo+PiBbwqDCoCAy NC4zODM4NjZdwqAga3ZtX3ZjcHVfaW9jdGwrMHg0YzAvMHg4MzgKPj4gW8KgwqAgMjQuMzgzOTY2 XcKgIGRvX3Zmc19pb2N0bCsweGI4LzB4ODc4Cj4+IFvCoMKgIDI0LjM4NDA3N13CoCBrc3lzX2lv Y3RsKzB4ODQvMHg5MAo+PiBbwqDCoCAyNC4zODQxNjZdwqAgX19hcm02NF9zeXNfaW9jdGwrMHgx OC8weDI4Cj4+IFvCoMKgIDI0LjM4NDE2Nl3CoCBlbDBfc3ZjX2NvbW1vbi5jb25zdHByb3AuMCsw eGIwLzB4MTY4Cj4+IFvCoMKgIDI0LjM4NDI2Nl3CoCBlbDBfc3ZjX2hhbmRsZXIrMHgyOC8weDc4 Cj4+IFvCoMKgIDI0LjM4NDM2Nl3CoCBlbDBfc3ZjKzB4OC8weGMKPj4gW8KgwqAgMjQuMzg0MzY2 XSAtLS1bIGVuZCB0cmFjZSAzN2EzMjI5M2U0M2FjMTJjIF0tLS0KPj4gW8KgwqAgMjQuMzg0NjY2 XSBXQVJOSU5HOiBDUFU6IDMgUElEOiAxNjAgYXQKPj4gYXJjaC9hcm02NC9rdm0vLi4vLi4vLi4v dmlydC9rdm0vYXJtL2FyY2hfdGltZXIuYzoxNzAKPj4ga3ZtX3RpbWVyX2lycV9jYW5fZmlyZSsw eGMvMHgzMAo+PiBbwqDCoCAyNC4zODQ3NjZdIE1vZHVsZXMgbGlua2VkIGluOgo+PiBbwqDCoCAy NC4zODQ4NjZdIENQVTogMyBQSUQ6IDE2MCBDb21tOiBrdm0tdmNwdS0xIFRhaW50ZWQ6IEcgICAg ICAgIFcKPj4gNS4yLjAtcmM1LTAwMDYwLWc3ZGJjZTYzYmQxYzcgIzE0NQo+PiBbwqDCoCAyNC4z ODQ5NjZdIEhhcmR3YXJlIG5hbWU6IEZvdW5kYXRpb24tdjhBIChEVCkKPj4gW8KgwqAgMjQuMzg0 OTY2XSBwc3RhdGU6IDQwNDAwMDA5IChuWmN2IGRhaWYgK1BBTiAtVUFPKQo+PiBbwqDCoCAyNC4z ODUwNjZdIHBjIDoga3ZtX3RpbWVyX2lycV9jYW5fZmlyZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4z ODUxNjZdIGxyIDogdGltZXJfZW11bGF0ZSsweDI0LzB4OTgKPj4gW8KgwqAgMjQuMzg1MTY2XSBz cCA6IGZmZmYwMDAwMTNkOGI3ODAKPj4gW8KgwqAgMjQuMzg1MjY2XSB4Mjk6IGZmZmYwMDAwMTNk OGI3ODAgeDI4OiBmZmZmODAwODdhNjM5YjgwCj4+IFvCoMKgIDI0LjM4NTM2Nl0geDI3OiBmZmZm MDAwMDEwYmE4NjQ4IHgyNjogZmZmZjAwMDAxMGI3MWI0MAo+PiBbwqDCoCAyNC4zODU0NjZdIHgy NTogZmZmZjgwMDg3YTYzYTEwMCB4MjQ6IDAwMDAwMDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzg1 NDY2XSB4MjM6IDAwMDA4MDA4NmNhNTQwMDAgeDIyOiBmZmZmMDAwMDEwMGNlMjYwCj4+IFvCoMKg IDI0LjM4NTU2Nl0geDIxOiBmZmZmODAwODc1ZTdjOTE4IHgyMDogZmZmZjgwMDg3NWU3YTgwMAo+ PiBbwqDCoCAyNC4zODU2NjZdIHgxOTogZmZmZjgwMDg3NWU3Y2E4MCB4MTg6IDAwMDAwMDAwMDAw MDAwMDAKPj4gW8KgwqAgMjQuMzg1NzY2XSB4MTc6IDAwMDAwMDAwMDAwMDAwMDAgeDE2OiAwMDAw MDAwMDAwMDAwMDAwCj4+IFvCoMKgIDI0LjM4NTg2Nl0geDE1OiAwMDAwMDAwMDAwMDAwMDAwIHgx NDogMDAwMDAwMDAwMDAwMjExOAo+PiBbwqDCoCAyNC4zODU5NjZdIHgxMzogMDAwMDAwMDAwMDAw MjE5MCB4MTI6IDAwMDAwMDAwMDAwMDIyODAKPj4gW8KgwqAgMjQuMzg1OTY2XSB4MTE6IDAwMDAw MDAwMDAwMDIyMDggeDEwOiAwMDAwMDAwMDAwMDAwMDQwCj4+IFvCoMKgIDI0LjM4NjA2Nl0geDkg OiBmZmZmMDAwMDEyZGMzYjM4IHg4IDogMDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zODYx NjZdIHg3IDogMDAwMDAwMDAwMDAwMDAwMCB4NiA6IGZmZmY4MDA4N2FjMDAyNDgKPj4gW8KgwqAg MjQuMzg2MjY2XSB4NSA6IDAwMDA4MDA4NmNhNTQwMDAgeDQgOiAwMDAwMDAwMDAwMDAyMTE4Cj4+ IFvCoMKgIDI0LjM4NjM2Nl0geDMgOiBlZWVlZWVlZWVlZWVlZWVmIHgyIDogZmZmZjgwMDg3NWU3 YzkxOAo+PiBbwqDCoCAyNC4zODY0NjZdIHgxIDogMDAwMDAwMDAwMDAwMDAwMSB4MCA6IGZmZmY4 MDA4NzVlN2NhODAKPj4gW8KgwqAgMjQuMzg2NDY2XSBDYWxsIHRyYWNlOgo+PiBbwqDCoCAyNC4z ODY1NjZdwqAga3ZtX3RpbWVyX2lycV9jYW5fZmlyZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4zODY2 NjZdwqAga3ZtX3RpbWVyX3ZjcHVfbG9hZCsweGE4LzB4MWEwCj4+IFvCoMKgIDI0LjM4NjY2Nl3C oCBrdm1fYXJjaF92Y3B1X2xvYWQrMHhiMC8weDFmMAo+PiBbwqDCoCAyNC4zODY4OThdwqAga3Zt X3NjaGVkX2luKzB4MWMvMHgyOAo+PiBbwqDCoCAyNC4zODY5NjZdwqAgZmluaXNoX3Rhc2tfc3dp dGNoKzB4ZDgvMHgxZDgKPj4gW8KgwqAgMjQuMzg3MTY2XcKgIF9fc2NoZWR1bGUrMHgyNDgvMHg0 YTAKPj4gW8KgwqAgMjQuMzg3MzU0XcKgIHByZWVtcHRfc2NoZWR1bGVfaXJxKzB4NjAvMHg5MAo+ PiBbwqDCoCAyNC4zODczNjZdwqAgZWwxX2lycSsweGQwLzB4MTgwCj4+IFvCoMKgIDI0LjM4NzQ2 Nl3CoCBrdm1faGFuZGxlX2d1ZXN0X2Fib3J0KzB4MC8weDNhMAo+PiBbwqDCoCAyNC4zODc1NjZd wqAga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4rMHg0MWMvMHg2ODgKPj4gW8KgwqAgMjQuMzg3NTY2 XcKgIGt2bV92Y3B1X2lvY3RsKzB4NGMwLzB4ODM4Cj4+IFvCoMKgIDI0LjM4NzY2Nl3CoCBkb192 ZnNfaW9jdGwrMHhiOC8weDg3OAo+PiBbwqDCoCAyNC4zODc3NjZdwqAga3N5c19pb2N0bCsweDg0 LzB4OTAKPj4gW8KgwqAgMjQuMzg3ODY2XcKgIF9fYXJtNjRfc3lzX2lvY3RsKzB4MTgvMHgyOAo+ PiBbwqDCoCAyNC4zODc4NjZdwqAgZWwwX3N2Y19jb21tb24uY29uc3Rwcm9wLjArMHhiMC8weDE2 OAo+PiBbwqDCoCAyNC4zODc5NjZdwqAgZWwwX3N2Y19oYW5kbGVyKzB4MjgvMHg3OAo+PiBbwqDC oCAyNC4zODgwNjZdwqAgZWwwX3N2YysweDgvMHhjCj4+IFvCoMKgIDI0LjM4ODA2Nl0gLS0tWyBl bmQgdHJhY2UgMzdhMzIyOTNlNDNhYzEyZCBdLS0tCj4+IFBBU1M6IGNwdS1vbgo+PiBTVU1NQVJZ OiA0IHRlW8KgwqAgMjQuMzkwMjY2XSBXQVJOSU5HOiBDUFU6IDMgUElEOiAxNjAgYXQKPj4gYXJj aC9hcm02NC9rdm0vLi4vLi4vLi4vdmlydC9rdm0vYXJtL2FyY2hfdGltZXIuYzoxNzAKPj4ga3Zt X3RpbWVyX2lycV9jYW5fZmlyZSsweGMvMHgzMAo+PiBzW8KgwqAgMjQuMzkwMzY2XSBNb2R1bGVz IGxpbmtlZCBpbjoKPj4gdHNbwqDCoCAyNC4zOTAzNjZdIENQVTogMyBQSUQ6IDE2MCBDb21tOiBr dm0tdmNwdS0xIFRhaW50ZWQ6IEcgICAgICAgIFcKPj4gNS4yLjAtcmM1LTAwMDYwLWc3ZGJjZTYz YmQxYzcgIzE0NQo+PiBbwqDCoCAyNC4zOTA1NjZdIEhhcmR3YXJlIG5hbWU6IEZvdW5kYXRpb24t djhBIChEVCkKPj4KPj4gW8KgwqAgMjQuMzkwNzk1XSBwc3RhdGU6IDQwNDAwMDA5IChuWmN2IGRh aWYgK1BBTiAtVUFPKQo+PiBbwqDCoCAyNC4zOTA4NjZdIHBjIDoga3ZtX3RpbWVyX2lycV9jYW5f ZmlyZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4zOTA5NjZdIGxyIDogdGltZXJfZW11bGF0ZSsweDI0 LzB4OTgKPj4gW8KgwqAgMjQuMzkxMDY2XSBzcCA6IGZmZmYwMDAwMTNkOGI3ODAKPj4gW8KgwqAg MjQuMzkxMDY2XSB4Mjk6IGZmZmYwMDAwMTNkOGI3ODAgeDI4OiBmZmZmODAwODdhNjM5YjgwCj4+ IFvCoMKgIDI0LjM5MTE2Nl0geDI3OiBmZmZmMDAwMDEwYmE4NjQ4IHgyNjogZmZmZjAwMDAxMGI3 MWI0MAo+PiBbwqDCoCAyNC4zOTEyNjZdIHgyNTogZmZmZjgwMDg3YTYzYTEwMCB4MjQ6IDAwMDAw MDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzkxMzY2XSB4MjM6IDAwMDA4MDA4NmNhNTQwMDAgeDIy OiAwMDAwMDAwMDAwMDAwMDAzCj4+IFvCoMKgIDI0LjM5MTQ2Nl0geDIxOiBmZmZmODAwODc1ZTdj OTE4IHgyMDogZmZmZjgwMDg3NWU3YTgwMAo+PiBbwqDCoCAyNC4zOTE0NjZdIHgxOTogZmZmZjgw MDg3NWU3Y2EwOCB4MTg6IDAwMDAwMDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzkxNTY2XSB4MTc6 IDAwMDAwMDAwMDAwMDAwMDAgeDE2OiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgIDI0LjM5MTY2 Nl0geDE1OiAwMDAwMDAwMDAwMDAwMDAwIHgxNDogMDAwMDAwMDAwMDAwMjExOAo+PiBbwqDCoCAy NC4zOTE3NjZdIHgxMzogMDAwMDAwMDAwMDAwMjE5MCB4MTI6IDAwMDAwMDAwMDAwMDIyODAKPj4g W8KgwqAgMjQuMzkxODY2XSB4MTE6IDAwMDAwMDAwMDAwMDIyMDggeDEwOiAwMDAwMDAwMDAwMDAw MDQwCj4+IFvCoMKgIDI0LjM5MTk0Ml0geDkgOiBmZmZmMDAwMDEyZGMzYjM4IHg4IDogMDAwMDAw MDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zOTE5NjZdIHg3IDogMDAwMDAwMDAwMDAwMDAwMCB4NiA6 IGZmZmY4MDA4N2FjMDAyNDgKPj4gW8KgwqAgMjQuMzkyMDY2XSB4NSA6IDAwMDA4MDA4NmNhNTQw MDAgeDQgOiAwMDAwMDAwMDAwMDAyMTE4Cj4+IFvCoMKgIDI0LjM5MjE2Nl0geDMgOiBlZWVlZWVl ZWVlZWVlZWVmIHgyIDogZmZmZjgwMDg3NWU3YzkxOAo+PiBbwqDCoCAyNC4zOTIyNjldIHgxIDog MDAwMDAwMDAwMDAwMDAwMSB4MCA6IGZmZmY4MDA4NzVlN2NhMDgKPj4gW8KgwqAgMjQuMzkyMzY2 XSBDYWxsIHRyYWNlOgo+PiBbwqDCoCAyNC4zOTI0MzNdwqAga3ZtX3RpbWVyX2lycV9jYW5fZmly ZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4zOTI0NjZdwqAga3ZtX3RpbWVyX3ZjcHVfbG9hZCsweDlj LzB4MWEwCj4+IFvCoMKgIDI0LjM5MjU5N13CoCBrdm1fYXJjaF92Y3B1X2xvYWQrMHhiMC8weDFm MAo+PiBbwqDCoCAyNC4zOTI2NjZdwqAga3ZtX3NjaGVkX2luKzB4MWMvMHgyOAo+PiBbwqDCoCAy NC4zOTI3NjZdwqAgZmluaXNoX3Rhc2tfc3dpdGNoKzB4ZDgvMHgxZDgKPj4gW8KgwqAgMjQuMzky NzY2XcKgIF9fc2NoZWR1bGUrMHgyNDgvMHg0YTAKPj4gW8KgwqAgMjQuMzkyODY2XcKgIHByZWVt cHRfc2NoZWR1bGVfaXJxKzB4NjAvMHg5MAo+PiBbwqDCoCAyNC4zOTI5NjZdwqAgZWwxX2lycSsw eGQwLzB4MTgwCj4+IFvCoMKgIDI0LjM5Mjk2Nl3CoCBrdm1faGFuZGxlX2d1ZXN0X2Fib3J0KzB4 MC8weDNhMAo+PiBbwqDCoCAyNC4zOTMwNjZdwqAga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4rMHg0 MWMvMHg2ODgKPj4gW8KgwqAgMjQuMzkzMTY2XcKgIGt2bV92Y3B1X2lvY3RsKzB4NGMwLzB4ODM4 Cj4+IFvCoMKgIDI0LjM5MzI2Nl3CoCBkb192ZnNfaW9jdGwrMHhiOC8weDg3OAo+PiBbwqDCoCAy NC4zOTMyNjZdwqAga3N5c19pb2N0bCsweDg0LzB4OTAKPj4gW8KgwqAgMjQuMzkzMzY2XcKgIF9f YXJtNjRfc3lzX2lvY3RsKzB4MTgvMHgyOAo+PiBbwqDCoCAyNC4zOTM0NjZdwqAgZWwwX3N2Y19j b21tb24uY29uc3Rwcm9wLjArMHhiMC8weDE2OAo+PiBbwqDCoCAyNC4zOTM1NjZdwqAgZWwwX3N2 Y19oYW5kbGVyKzB4MjgvMHg3OAo+PiBbwqDCoCAyNC4zOTM1NjZdwqAgZWwwX3N2YysweDgvMHhj Cj4+IFvCoMKgIDI0LjM5MzY2Nl0gLS0tWyBlbmQgdHJhY2UgMzdhMzIyOTNlNDNhYzEyZSBdLS0t Cj4+IFvCoMKgIDI0LjM5Mzg2Nl0gV0FSTklORzogQ1BVOiAzIFBJRDogMTYwIGF0Cj4+IGFyY2gv YXJtNjQva3ZtLy4uLy4uLy4uL3ZpcnQva3ZtL2FybS9hcmNoX3RpbWVyLmM6MTcwCj4+IGt2bV90 aW1lcl9pcnFfY2FuX2ZpcmUrMHhjLzB4MzAKPj4gW8KgwqAgMjQuMzk0MDY2XSBNb2R1bGVzIGxp bmtlZCBpbjoKPj4gW8KgwqAgMjQuMzk0MjY2XSBDUFU6IDMgUElEOiAxNjAgQ29tbToga3ZtLXZj cHUtMSBUYWludGVkOiBHICAgICAgICBXCj4+IDUuMi4wLXJjNS0wMDA2MC1nN2RiY2U2M2JkMWM3 ICMxNDUKPj4gW8KgwqAgMjQuMzk0MzY2XSBIYXJkd2FyZSBuYW1lOiBGb3VuZGF0aW9uLXY4QSAo RFQpCj4+IFvCoMKgIDI0LjM5NDQ2Nl0gcHN0YXRlOiA0MDQwMDAwOSAoblpjdiBkYWlmICtQQU4g LVVBTykKPj4gW8KgwqAgMjQuMzk0NDY2XSBwYyA6IGt2bV90aW1lcl9pcnFfY2FuX2ZpcmUrMHhj LzB4MzAKPj4gW8KgwqAgMjQuMzk0NTY2XSBsciA6IHRpbWVyX2VtdWxhdGUrMHgyNC8weDk4Cj4+ IFvCoMKgIDI0LjM5NDY2Nl0gc3AgOiBmZmZmMDAwMDEzZDhiNzgwCj4+IFvCoMKgIDI0LjM5NDcy N10geDI5OiBmZmZmMDAwMDEzZDhiNzgwIHgyODogZmZmZjgwMDg3YTYzOWI4MAo+PiBbwqDCoCAy NC4zOTQ3NjZdIHgyNzogZmZmZjAwMDAxMGJhODY0OCB4MjY6IGZmZmYwMDAwMTBiNzFiNDAKPj4g W8KgwqAgMjQuMzk0ODY2XSB4MjU6IGZmZmY4MDA4N2E2M2ExMDAgeDI0OiAwMDAwMDAwMDAwMDAw MDAwCj4+IFvCoMKgIDI0LjM5NDk2Nl0geDIzOiAwMDAwODAwODZjYTU0MDAwIHgyMjogMDAwMDAw MDAwMDAwMDAwMwo+PiBbwqDCoCAyNC4zOTQ5NjZdIHgyMTogZmZmZjgwMDg3NWU3YzkxOCB4MjA6 IGZmZmY4MDA4NzVlN2E4MDAKPj4gW8KgwqAgMjQuMzk1MDY2XSB4MTk6IGZmZmY4MDA4NzVlN2Nh ODAgeDE4OiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgIDI0LjM5NTE2Nl0geDE3OiAwMDAwMDAw MDAwMDAwMDAwIHgxNjogMDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zOTUyNjZdIHgxNTog MDAwMDAwMDAwMDAwMDAwMCB4MTQ6IDAwMDAwMDAwMDAwMDIxMTgKPj4gW8KgwqAgMjQuMzk1Mzgz XSB4MTM6IDAwMDAwMDAwMDAwMDIxOTAgeDEyOiAwMDAwMDAwMDAwMDAyMjgwCj4+IFvCoMKgIDI0 LjM5NTQ2Nl0geDExOiAwMDAwMDAwMDAwMDAyMjA4IHgxMDogMDAwMDAwMDAwMDAwMDA0MAo+PiBb wqDCoCAyNC4zOTU1NDddIHg5IDogZmZmZjAwMDAxMmRjM2IzOCB4OCA6IDAwMDAwMDAwMDAwMDAw MDAKPj4gW8KgwqAgMjQuMzk1NjY2XSB4NyA6IDAwMDAwMDAwMDAwMDAwMDAgeDYgOiBmZmZmODAw ODdhYzAwMjQ4Cj4+IFvCoMKgIDI0LjM5NTg2Nl0geDUgOiAwMDAwODAwODZjYTU0MDAwIHg0IDog MDAwMDAwMDAwMDAwMjExOAo+PiBbwqDCoCAyNC4zOTU5NjZdIHgzIDogZWVlZWVlZWVlZWVlZWVl ZiB4MiA6IGZmZmY4MDA4NzVlN2M5MTgKPj4gW8KgwqAgMjQuMzk2MDY2XSB4MSA6IDAwMDAwMDAw MDAwMDAwMDEgeDAgOiBmZmZmODAwODc1ZTdjYTgwCj4+IFvCoMKgIDI0LjM5NjA2Nl0gQ2FsbCB0 cmFjZToKPj4gW8KgwqAgMjQuMzk2MTY2XcKgIGt2bV90aW1lcl9pcnFfY2FuX2ZpcmUrMHhjLzB4 MzAKPj4gW8KgwqAgMjQuMzk2MjY2XcKgIGt2bV90aW1lcl92Y3B1X2xvYWQrMHhhOC8weDFhMAo+ PiBbwqDCoCAyNC4zOTYzNjZdwqAga3ZtX2FyY2hfdmNwdV9sb2FkKzB4YjAvMHgxZjAKPj4gW8Kg wqAgMjQuMzk2MzY2XcKgIGt2bV9zY2hlZF9pbisweDFjLzB4MjgKPj4gW8KgwqAgMjQuMzk2NDY2 XcKgIGZpbmlzaF90YXNrX3N3aXRjaCsweGQ4LzB4MWQ4Cj4+IFvCoMKgIDI0LjM5NjU2Nl3CoCBf X3NjaGVkdWxlKzB4MjQ4LzB4NGEwCj4+IFvCoMKgIDI0LjM5NjY2Nl3CoCBwcmVlbXB0X3NjaGVk dWxlX2lycSsweDYwLzB4OTAKPj4gW8KgwqAgMjQuMzk2NjY2XcKgIGVsMV9pcnErMHhkMC8weDE4 MAo+PiBbwqDCoCAyNC4zOTY3NjZdwqAga3ZtX2hhbmRsZV9ndWVzdF9hYm9ydCsweDAvMHgzYTAK Pj4gW8KgwqAgMjQuMzk2ODY2XcKgIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKzB4NDFjLzB4Njg4 Cj4+IFvCoMKgIDI0LjM5Njg2Nl3CoCBrdm1fdmNwdV9pb2N0bCsweDRjMC8weDgzOAo+PiBbwqDC oCAyNC4zOTcwMjFdwqAgZG9fdmZzX2lvY3RsKzB4YjgvMHg4NzgKPj4gW8KgwqAgMjQuMzk3MDY2 XcKgIGtzeXNfaW9jdGwrMHg4NC8weDkwCj4+IFvCoMKgIDI0LjM5NzE2Nl3CoCBfX2FybTY0X3N5 c19pb2N0bCsweDE4LzB4MjgKPj4gW8KgwqAgMjQuMzk3MzQ4XcKgIGVsMF9zdmNfY29tbW9uLmNv bnN0cHJvcC4wKzB4YjAvMHgxNjgKPj4gW8KgwqAgMjQuMzk3MzY2XcKgIGVsMF9zdmNfaGFuZGxl cisweDI4LzB4NzgKPj4gW8KgwqAgMjQuMzk3NTY2XcKgIGVsMF9zdmMrMHg4LzB4Ywo+PiBbwqDC oCAyNC4zOTc2NzZdIC0tLVsgZW5kIHRyYWNlIDM3YTMyMjkzZTQzYWMxMmYgXS0tLQo+Pgo+PiAg ICMgS1ZNIGNvbXBhdGliaWxpdHkgd2FybmluZy4KPj4gICAgIHZpcnRpby05cCBkZXZpY2Ugd2Fz IG5vdCBkZXRlY3RlZC4KPj4gICAgIFdoaWxlIHlvdSBoYXZlIHJlcXVlc3RlZCBhIHZpcnRpby05 cCBkZXZpY2UsIHRoZSBndWVzdCBrZXJuZWwgZGlkIG5vdAo+PiBpbml0aWFsaXplIGl0Lgo+PiAg ICAgUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBndWVzdCBrZXJuZWwgd2FzIGNvbXBpbGVkIHdp dGgKPj4gQ09ORklHX05FVF85UF9WSVJUSU89eSBlbmFibGVkIGluIC5jb25maWcuCj4+Cj4+ICAg IyBLVk0gY29tcGF0aWJpbGl0eSB3YXJuaW5nLgo+PiAgICAgdmlydGlvLW5ldCBkZXZpY2Ugd2Fz IG5vdCBkZXRlY3RlZC4KPj4gICAgIFdoaWxlIHlvdSBoYXZlIHJlcXVlc3RlZCBhIHZpcnRpby1u ZXQgZGV2aWNlLCB0aGUgZ3Vlc3Qga2VybmVsIGRpZCBub3QKPj4gaW5pdGlhbGl6ZSBpdC4KPj4g ICAgIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCB0aGUgZ3Vlc3Qga2VybmVsIHdhcyBjb21waWxlZCB3 aXRoIENPTkZJR19WSVJUSU9fTkVUPXkKPj4gZW5hYmxlZCBpbiAuY29uZmlnLgo+Pgo+PiBbLi5d Cj4gRGlkIHNvbWUgaW52ZXN0aWdhdGluZyBhbmQgdGhpcyB3YXMgY2F1c2VkIGJ5IGEgYnVnIGlu IGt2bS11bml0LXRlc3RzICh0aGUgZml4Cj4gZm9yIGl0IHdpbGwgYmUgcGFydCBvZiB0aGUgRUwy IHBhdGNoZXMgZm9yIGt2bS11bml0LXRlc3RzKS4gVGhlIGd1ZXN0IHdhcyB0cnlpbmcKPiB0byBm ZXRjaCBhbiBpbnN0cnVjdGlvbiBmcm9tIGFkZHJlc3MgMHgyMDAsIHdoaWNoIEtWTSBpbnRlcnBy ZXRzIGFzIGEgcHJlZmV0Y2gKPiBhYm9ydCBvbiBhbiBJL08gYWRkcmVzcyBhbmQgZW5kcyB1cCBj YWxsaW5nIGt2bV9pbmplY3RfcGFidC4gVGhlIGNvZGUgZnJvbQo+IGFyY2gvYXJtNjQva3ZtL2lu amVjdF9mYXVsdC5jIGRvZXNuJ3Qga25vdyBhbnl0aGluZyBhYm91dCBuZXN0ZWQgdmlydHVhbGl6 YXRpb24sCj4gYW5kIGl0IHNldHMgdGhlIFZDUFUgbW9kZSBkaXJlY3RseSB0byBQU1JfTU9ERV9F TDFoLiBUaGlzIG1ha2VzX2h5cF9jdHh0IHJldHVybgo+IGZhbHNlLCBhbmQgZ2V0X3RpbWVyX21h cCB3aWxsIHJldHVybiBhbiBpbmNvcnJlY3QgbWFwcGluZy4KPgo+IE9uIG5leHQga3ZtX3RpbWVy X3ZjcHVfcHV0LCB0aGUgZGlyZWN0IHRpbWVycyB3aWxsIGJlIHtwLHZ9dGltZXIsIGFuZAo+IGh7 cCx2fXRpbWVyLT5sb2FkZWQgd2lsbCBub3QgYmUgc2V0IHRvIGZhbHNlLiBJbiB0aGUgY29ycmVz cG9uZGluZyBjYWxsIHRvCj4ga3ZtX3RpbWVyX3ZjcHVfbG9hZCwgS1ZNIHdpbGwgdHJ5IHRvIGVt dWxhdGUgdGhlIGhwdGltZXIgYW5kIGh2dGltZXIsIHdoaWNoCj4gc3RpbGwgaGF2ZSBsb2FkZWQg PSB0cnVlLiBBbmQgdGhpcyBjYXVzZXMgdGhlIHdhcm5pbmcgSSBzYXcuCgpJIHRyaWVkIHRvIGZp eCBpdCB3aXRoIHRoZSBmb2xsb3dpbmcgcGF0Y2gsIGluamVjdF91bmRlZjY0IHdhcyBzaW1pbGFy bHkgYnJva2VuOgoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2luamVjdF9mYXVsdC5jIGIv YXJjaC9hcm02NC9rdm0vaW5qZWN0X2ZhdWx0LmMKaW5kZXggZmFjOTYyYjQ2N2JkLi5hZWU4YTll ZjM2ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL2luamVjdF9mYXVsdC5jCisrKyBiL2Fy Y2gvYXJtNjQva3ZtL2luamVjdF9mYXVsdC5jCkBAIC01MywxNSArNTMsNyBAQCBzdGF0aWMgdm9p ZCBpbmplY3RfYWJ0NjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGlzX2lhYnQsCnVuc2ln bmVkIGxvbmcgYWRkcgrCoHsKwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBjcHNyID0gKnZjcHVfY3Bz cih2Y3B1KTsKwqDCoMKgwqAgYm9vbCBpc19hYXJjaDMyID0gdmNwdV9tb2RlX2lzXzMyYml0KHZj cHUpOwotwqDCoMKgIHUzMiBlc3IgPSAwOwotCi3CoMKgwqAgdmNwdV93cml0ZV9lbHJfZWwxKHZj cHUsICp2Y3B1X3BjKHZjcHUpKTsKLcKgwqDCoCAqdmNwdV9wYyh2Y3B1KSA9IGdldF9leGNlcHRf dmVjdG9yKHZjcHUsIGV4Y2VwdF90eXBlX3N5bmMpOwotCi3CoMKgwqAgKnZjcHVfY3Bzcih2Y3B1 KSA9IFBTVEFURV9GQVVMVF9CSVRTXzY0OwotwqDCoMKgIHZjcHVfd3JpdGVfc3Bzcih2Y3B1LCBj cHNyKTsKLQotwqDCoMKgIHZjcHVfd3JpdGVfc3lzX3JlZyh2Y3B1LCBhZGRyLCBGQVJfRUwxKTsK K8KgwqDCoCB1MzIgZXNyID0gRVNSX0VMeF9GU0NfRVhUQUJUOwrCoArCoMKgwqDCoCAvKgrCoMKg wqDCoCDCoCogQnVpbGQgYW4ge2ksZH1hYm9ydCwgZGVwZW5kaW5nIG9uIHRoZSBsZXZlbCBhbmQg dGhlCkBAIC04MiwxMyArNzQsMTIgQEAgc3RhdGljIHZvaWQgaW5qZWN0X2FidDY0KHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgYm9vbAppc19pYWJ0LCB1bnNpZ25lZCBsb25nIGFkZHIKwqDCoMKgwqAg aWYgKCFpc19pYWJ0KQrCoMKgwqDCoCDCoMKgwqAgZXNyIHw9IEVTUl9FTHhfRUNfREFCVF9MT1cg PDwgRVNSX0VMeF9FQ19TSElGVDsKwqAKLcKgwqDCoCB2Y3B1X3dyaXRlX3N5c19yZWcodmNwdSwg ZXNyIHwgRVNSX0VMeF9GU0NfRVhUQUJULCBFU1JfRUwxKTsKLX0KK8KgwqDCoCBpZiAobmVzdGVk X3ZpcnRfaW5fdXNlKHZjcHUpKSB7CivCoMKgwqAgwqDCoMKgIGt2bV9pbmplY3RfbmVzdGVkX3N5 bmModmNwdSwgZXNyKTsKK8KgwqDCoCDCoMKgwqAgcmV0dXJuOworwqDCoMKgIH0KwqAKLXN0YXRp YyB2b2lkIGluamVjdF91bmRlZjY0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKLXsKLcKgwqDCoCB1 bnNpZ25lZCBsb25nIGNwc3IgPSAqdmNwdV9jcHNyKHZjcHUpOwotwqDCoMKgIHUzMiBlc3IgPSAo RVNSX0VMeF9FQ19VTktOT1dOIDw8IEVTUl9FTHhfRUNfU0hJRlQpOworwqDCoMKgIHZjcHVfd3Jp dGVfc3lzX3JlZyh2Y3B1LCBlc3IsIEVTUl9FTDEpOwrCoArCoMKgwqDCoCB2Y3B1X3dyaXRlX2Vs cl9lbDEodmNwdSwgKnZjcHVfcGModmNwdSkpOwrCoMKgwqDCoCAqdmNwdV9wYyh2Y3B1KSA9IGdl dF9leGNlcHRfdmVjdG9yKHZjcHUsIGV4Y2VwdF90eXBlX3N5bmMpOwpAQCAtOTYsNiArODcsMTQg QEAgc3RhdGljIHZvaWQgaW5qZWN0X3VuZGVmNjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQrCoMKg wqDCoCAqdmNwdV9jcHNyKHZjcHUpID0gUFNUQVRFX0ZBVUxUX0JJVFNfNjQ7CsKgwqDCoMKgIHZj cHVfd3JpdGVfc3Bzcih2Y3B1LCBjcHNyKTsKwqAKK8KgwqDCoCB2Y3B1X3dyaXRlX3N5c19yZWco dmNwdSwgYWRkciwgRkFSX0VMMSk7Cit9CisKK3N0YXRpYyB2b2lkIGluamVjdF91bmRlZjY0KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKK3sKK8KgwqDCoCB1bnNpZ25lZCBsb25nIGNwc3IgPSAqdmNw dV9jcHNyKHZjcHUpOworwqDCoMKgIHUzMiBlc3IgPSBFU1JfRUx4X0VDX1VOS05PV04gPDwgRVNS X0VMeF9FQ19TSElGVDsKKwrCoMKgwqDCoCAvKgrCoMKgwqDCoCDCoCogQnVpbGQgYW4gdW5rbm93 biBleGNlcHRpb24sIGRlcGVuZGluZyBvbiB0aGUgaW5zdHJ1Y3Rpb24KwqDCoMKgwqAgwqAqIHNl dC4KQEAgLTEwMyw3ICsxMDIsMTggQEAgc3RhdGljIHZvaWQgaW5qZWN0X3VuZGVmNjQoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1KQrCoMKgwqDCoCBpZiAoa3ZtX3ZjcHVfdHJhcF9pbF9pczMyYml0KHZj cHUpKQrCoMKgwqDCoCDCoMKgwqAgZXNyIHw9IEVTUl9FTHhfSUw7CsKgCivCoMKgwqAgaWYgKG5l c3RlZF92aXJ0X2luX3VzZSh2Y3B1KSkgeworwqDCoMKgIMKgwqDCoCBrdm1faW5qZWN0X25lc3Rl ZF9zeW5jKHZjcHUsIGVzcik7CivCoMKgwqAgwqDCoMKgIHJldHVybjsKK8KgwqDCoCB9CisKwqDC oMKgwqAgdmNwdV93cml0ZV9zeXNfcmVnKHZjcHUsIGVzciwgRVNSX0VMMSk7CisKK8KgwqDCoCB2 Y3B1X3dyaXRlX2Vscl9lbDEodmNwdSwgKnZjcHVfcGModmNwdSkpOworwqDCoMKgICp2Y3B1X3Bj KHZjcHUpID0gZ2V0X2V4Y2VwdF92ZWN0b3IodmNwdSwgZXhjZXB0X3R5cGVfc3luYyk7CisKK8Kg wqDCoCAqdmNwdV9jcHNyKHZjcHUpID0gUFNUQVRFX0ZBVUxUX0JJVFNfNjQ7CivCoMKgwqAgdmNw dV93cml0ZV9zcHNyKHZjcHUsIGNwc3IpOwrCoH0KwqAKwqAvKioKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJt QGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWls bWFuL2xpc3RpbmZvL2t2bWFybQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F0960C3A5A1 for ; Thu, 22 Aug 2019 11:57:34 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id BF369233FD for ; Thu, 22 Aug 2019 11:57:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Tj7cX3VU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BF369233FD Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:References:To:From:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tMtWgCyYj1ARJrv9UZp7LFB5Ohohk2mSuXnBKkEn4zM=; b=Tj7cX3VUFVxCmC O2pvoLud/hsbIvjAyIAIF3Skw5vDSLlAr8TrOCgXgUSUcIc2/Sb66p8pOv4FPUJcBYNlI36yEtgzW izc29wiQLK8ooxKMA/LGrMR/KdA6lwYjU1goZEFPbTWlmJsv4zB5Gfx3R6nE1g2TKg6BmKQaO/Q5k q1JkRqHmDg9dOpOTLeXeX2vRUr281W6FApEt/x2ZmjzfG4HZ6MrW1v/t9QWGdqlkXaPaS+qT3rypb 36QpCTkiCJCxvquvM651wsCyW3Zu6qvpjRyavbTmwJf7s8pwDGKIkdtVhS2OYkOQ8VUplbGcYcu3c 7ExBuHmae1K7A0HV5o7w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i0liZ-0003LO-4J; Thu, 22 Aug 2019 11:57:27 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i0liU-0003IH-M9 for linux-arm-kernel@lists.infradead.org; Thu, 22 Aug 2019 11:57:24 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EABE1337; Thu, 22 Aug 2019 04:57:21 -0700 (PDT) Received: from [10.1.196.217] (e121566-lin.cambridge.arm.com [10.1.196.217]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 07C2B3F718; Thu, 22 Aug 2019 04:57:20 -0700 (PDT) Subject: Re: [PATCH 00/59] KVM: arm64: ARMv8.3 Nested Virtualization support From: Alexandru Elisei To: Marc Zyngier , "linux-arm-kernel@lists.infradead.org" , "kvmarm@lists.cs.columbia.edu" , "kvm@vger.kernel.org" References: <20190621093843.220980-1-marc.zyngier@arm.com> <69cf1fe7-912c-1767-ff1b-dfcc7f549e44@arm.com> <0d9aa552-fa01-c482-41d7-587acf308259@arm.com> Message-ID: <55184c0d-8a8f-ca67-894c-1e738aee262b@arm.com> Date: Thu, 22 Aug 2019 12:57:19 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: <0d9aa552-fa01-c482-41d7-587acf308259@arm.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190822_045722_858431_5031D950 X-CRM114-Status: GOOD ( 20.22 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andre Przywara , Dave P Martin Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gOC85LzE5IDExOjAxIEFNLCBBbGV4YW5kcnUgRWxpc2VpIHdyb3RlOgo+IE9uIDgvMi8xOSAx MToxMSBBTSwgQWxleGFuZHJ1IEVsaXNlaSB3cm90ZToKPj4gSGksCj4+Cj4+IE9uIDYvMjEvMTkg MTA6MzcgQU0sIE1hcmMgWnluZ2llciB3cm90ZToKPj4gV2hlbiB3b3JraW5nIG9uIGFkZGluZyBz dXBwb3J0IGZvciBFTDIgdG8ga3ZtLXVuaXQtdGVzdHMgSSB3YXMgYWJsZSB0byB0cmlnZ2VyCj4+ IHRoZSBmb2xsb3dpbmcgd2FybmluZzoKPj4KPj4gIyAuL2xrdm0gcnVuIC1mIHBzY2kuZmxhdCAt bSAxMjggLWMgOCAtLWNvbnNvbGUgc2VyaWFsIC0taXJxY2hpcCBnaWN2MyAtLW5lc3RlZAo+PiAg ICMgbGt2bSBydW4gLS1maXJtd2FyZSBwc2NpLmZsYXQgLW0gMTI4IC1jIDggLS1uYW1lIGd1ZXN0 LTE1MQo+PiAgIEluZm86IFBsYWNpbmcgZmR0IGF0IDB4ODAyMDAwMDAgLSAweDgwMjEwMDAwCj4+ ICAgIyBXYXJuaW5nOiBUaGUgbWF4aW11bSByZWNvbW1lbmRlZCBhbW91bnQgb2YgVkNQVXMgaXMg NAo+PiBjaHJfdGVzdGRldl9pbml0OiBjaHItdGVzdGRldjogY2FuJ3QgZmluZCBhIHZpcnRpby1j b25zb2xlCj4+IElORk86IFBTQ0kgdmVyc2lvbiAxLjAKPj4gUEFTUzogaW52YWxpZC1mdW5jdGlv bgo+PiBQQVNTOiBhZmZpbml0eS1pbmZvLW9uCj4+IFBBU1M6IGFmZmluaXR5LWluZm8tb2ZmCj4+ IFvCoMKgIDI0LjM4MTI2Nl0gV0FSTklORzogQ1BVOiAzIFBJRDogMTYwIGF0Cj4+IGFyY2gvYXJt NjQva3ZtLy4uLy4uLy4uL3ZpcnQva3ZtL2FybS9hcmNoX3RpbWVyLmM6MTcwCj4+IGt2bV90aW1l cl9pcnFfY2FuX2ZpcmUrMHhjLzB4MzAKPj4gW8KgwqAgMjQuMzgxMzY2XSBNb2R1bGVzIGxpbmtl ZCBpbjoKPj4gW8KgwqAgMjQuMzgxNDY2XSBDUFU6IDMgUElEOiAxNjAgQ29tbToga3ZtLXZjcHUt MSBOb3QgdGFpbnRlZAo+PiA1LjIuMC1yYzUtMDAwNjAtZzdkYmNlNjNiZDFjNyAjMTQ1Cj4+IFvC oMKgIDI0LjM4MTU2Nl0gSGFyZHdhcmUgbmFtZTogRm91bmRhdGlvbi12OEEgKERUKQo+PiBbwqDC oCAyNC4zODE1NjZdIHBzdGF0ZTogNDA0MDAwMDkgKG5aY3YgZGFpZiArUEFOIC1VQU8pCj4+IFvC oMKgIDI0LjM4MTY2Nl0gcGMgOiBrdm1fdGltZXJfaXJxX2Nhbl9maXJlKzB4Yy8weDMwCj4+IFvC oMKgIDI0LjM4MTc2Nl0gbHIgOiB0aW1lcl9lbXVsYXRlKzB4MjQvMHg5OAo+PiBbwqDCoCAyNC4z ODE3NjZdIHNwIDogZmZmZjAwMDAxM2Q4Yjc4MAo+PiBbwqDCoCAyNC4zODE4NjZdIHgyOTogZmZm ZjAwMDAxM2Q4Yjc4MCB4Mjg6IGZmZmY4MDA4N2E2MzliODAKPj4gW8KgwqAgMjQuMzgxOTY2XSB4 Mjc6IGZmZmYwMDAwMTBiYTg2NDggeDI2OiBmZmZmMDAwMDEwYjcxYjQwCj4+IFvCoMKgIDI0LjM4 MjA2Nl0geDI1OiBmZmZmODAwODdhNjNhMTAwIHgyNDogMDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDC oCAyNC4zODIxMTFdIHgyMzogMDAwMDgwMDg2Y2E1NDAwMCB4MjI6IGZmZmYwMDAwMTAwY2UyNjAK Pj4gW8KgwqAgMjQuMzgyMTY2XSB4MjE6IGZmZmY4MDA4NzVlN2M5MTggeDIwOiBmZmZmODAwODc1 ZTdhODAwCj4+IFvCoMKgIDI0LjM4MjI3NV0geDE5OiBmZmZmODAwODc1ZTdjYTA4IHgxODogMDAw MDAwMDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zODIzNjZdIHgxNzogMDAwMDAwMDAwMDAwMDAwMCB4 MTY6IDAwMDAwMDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzgyNDY2XSB4MTU6IDAwMDAwMDAwMDAw MDAwMDAgeDE0OiAwMDAwMDAwMDAwMDAyMTE4Cj4+IFvCoMKgIDI0LjM4MjU2Nl0geDEzOiAwMDAw MDAwMDAwMDAyMTkwIHgxMjogMDAwMDAwMDAwMDAwMjI4MAo+PiBbwqDCoCAyNC4zODI1NjZdIHgx MTogMDAwMDAwMDAwMDAwMjIwOCB4MTA6IDAwMDAwMDAwMDAwMDAwNDAKPj4gW8KgwqAgMjQuMzgy NjY2XSB4OSA6IGZmZmYwMDAwMTJkYzNiMzggeDggOiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKg IDI0LjM4Mjc2Nl0geDcgOiAwMDAwMDAwMDAwMDAwMDAwIHg2IDogZmZmZjgwMDg3YWMwMDI0OAo+ PiBbwqDCoCAyNC4zODI4NjZdIHg1IDogMDAwMDgwMDg2Y2E1NDAwMCB4NCA6IDAwMDAwMDAwMDAw MDIxMTgKPj4gW8KgwqAgMjQuMzgyOTY2XSB4MyA6IGVlZWVlZWVlZWVlZWVlZWYgeDIgOiBmZmZm ODAwODc1ZTdjOTE4Cj4+IFvCoMKgIDI0LjM4MzA2Nl0geDEgOiAwMDAwMDAwMDAwMDAwMDAxIHgw IDogZmZmZjgwMDg3NWU3Y2EwOAo+PiBbwqDCoCAyNC4zODMwNjZdIENhbGwgdHJhY2U6Cj4+IFvC oMKgIDI0LjM4MzE2Nl3CoCBrdm1fdGltZXJfaXJxX2Nhbl9maXJlKzB4Yy8weDMwCj4+IFvCoMKg IDI0LjM4MzI2Nl3CoCBrdm1fdGltZXJfdmNwdV9sb2FkKzB4OWMvMHgxYTAKPj4gW8KgwqAgMjQu MzgzMzY2XcKgIGt2bV9hcmNoX3ZjcHVfbG9hZCsweGIwLzB4MWYwCj4+IFvCoMKgIDI0LjM4MzM2 Nl3CoCBrdm1fc2NoZWRfaW4rMHgxYy8weDI4Cj4+IFvCoMKgIDI0LjM4MzQ2Nl3CoCBmaW5pc2hf dGFza19zd2l0Y2grMHhkOC8weDFkOAo+PiBbwqDCoCAyNC4zODM1NjZdwqAgX19zY2hlZHVsZSsw eDI0OC8weDRhMAo+PiBbwqDCoCAyNC4zODM2NjZdwqAgcHJlZW1wdF9zY2hlZHVsZV9pcnErMHg2 MC8weDkwCj4+IFvCoMKgIDI0LjM4MzY2Nl3CoCBlbDFfaXJxKzB4ZDAvMHgxODAKPj4gW8KgwqAg MjQuMzgzNzY2XcKgIGt2bV9oYW5kbGVfZ3Vlc3RfYWJvcnQrMHgwLzB4M2EwCj4+IFvCoMKgIDI0 LjM4Mzg2Nl3CoCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bisweDQxYy8weDY4OAo+PiBbwqDCoCAy NC4zODM4NjZdwqAga3ZtX3ZjcHVfaW9jdGwrMHg0YzAvMHg4MzgKPj4gW8KgwqAgMjQuMzgzOTY2 XcKgIGRvX3Zmc19pb2N0bCsweGI4LzB4ODc4Cj4+IFvCoMKgIDI0LjM4NDA3N13CoCBrc3lzX2lv Y3RsKzB4ODQvMHg5MAo+PiBbwqDCoCAyNC4zODQxNjZdwqAgX19hcm02NF9zeXNfaW9jdGwrMHgx OC8weDI4Cj4+IFvCoMKgIDI0LjM4NDE2Nl3CoCBlbDBfc3ZjX2NvbW1vbi5jb25zdHByb3AuMCsw eGIwLzB4MTY4Cj4+IFvCoMKgIDI0LjM4NDI2Nl3CoCBlbDBfc3ZjX2hhbmRsZXIrMHgyOC8weDc4 Cj4+IFvCoMKgIDI0LjM4NDM2Nl3CoCBlbDBfc3ZjKzB4OC8weGMKPj4gW8KgwqAgMjQuMzg0MzY2 XSAtLS1bIGVuZCB0cmFjZSAzN2EzMjI5M2U0M2FjMTJjIF0tLS0KPj4gW8KgwqAgMjQuMzg0NjY2 XSBXQVJOSU5HOiBDUFU6IDMgUElEOiAxNjAgYXQKPj4gYXJjaC9hcm02NC9rdm0vLi4vLi4vLi4v dmlydC9rdm0vYXJtL2FyY2hfdGltZXIuYzoxNzAKPj4ga3ZtX3RpbWVyX2lycV9jYW5fZmlyZSsw eGMvMHgzMAo+PiBbwqDCoCAyNC4zODQ3NjZdIE1vZHVsZXMgbGlua2VkIGluOgo+PiBbwqDCoCAy NC4zODQ4NjZdIENQVTogMyBQSUQ6IDE2MCBDb21tOiBrdm0tdmNwdS0xIFRhaW50ZWQ6IEcgICAg ICAgIFcKPj4gNS4yLjAtcmM1LTAwMDYwLWc3ZGJjZTYzYmQxYzcgIzE0NQo+PiBbwqDCoCAyNC4z ODQ5NjZdIEhhcmR3YXJlIG5hbWU6IEZvdW5kYXRpb24tdjhBIChEVCkKPj4gW8KgwqAgMjQuMzg0 OTY2XSBwc3RhdGU6IDQwNDAwMDA5IChuWmN2IGRhaWYgK1BBTiAtVUFPKQo+PiBbwqDCoCAyNC4z ODUwNjZdIHBjIDoga3ZtX3RpbWVyX2lycV9jYW5fZmlyZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4z ODUxNjZdIGxyIDogdGltZXJfZW11bGF0ZSsweDI0LzB4OTgKPj4gW8KgwqAgMjQuMzg1MTY2XSBz cCA6IGZmZmYwMDAwMTNkOGI3ODAKPj4gW8KgwqAgMjQuMzg1MjY2XSB4Mjk6IGZmZmYwMDAwMTNk OGI3ODAgeDI4OiBmZmZmODAwODdhNjM5YjgwCj4+IFvCoMKgIDI0LjM4NTM2Nl0geDI3OiBmZmZm MDAwMDEwYmE4NjQ4IHgyNjogZmZmZjAwMDAxMGI3MWI0MAo+PiBbwqDCoCAyNC4zODU0NjZdIHgy NTogZmZmZjgwMDg3YTYzYTEwMCB4MjQ6IDAwMDAwMDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzg1 NDY2XSB4MjM6IDAwMDA4MDA4NmNhNTQwMDAgeDIyOiBmZmZmMDAwMDEwMGNlMjYwCj4+IFvCoMKg IDI0LjM4NTU2Nl0geDIxOiBmZmZmODAwODc1ZTdjOTE4IHgyMDogZmZmZjgwMDg3NWU3YTgwMAo+ PiBbwqDCoCAyNC4zODU2NjZdIHgxOTogZmZmZjgwMDg3NWU3Y2E4MCB4MTg6IDAwMDAwMDAwMDAw MDAwMDAKPj4gW8KgwqAgMjQuMzg1NzY2XSB4MTc6IDAwMDAwMDAwMDAwMDAwMDAgeDE2OiAwMDAw MDAwMDAwMDAwMDAwCj4+IFvCoMKgIDI0LjM4NTg2Nl0geDE1OiAwMDAwMDAwMDAwMDAwMDAwIHgx NDogMDAwMDAwMDAwMDAwMjExOAo+PiBbwqDCoCAyNC4zODU5NjZdIHgxMzogMDAwMDAwMDAwMDAw MjE5MCB4MTI6IDAwMDAwMDAwMDAwMDIyODAKPj4gW8KgwqAgMjQuMzg1OTY2XSB4MTE6IDAwMDAw MDAwMDAwMDIyMDggeDEwOiAwMDAwMDAwMDAwMDAwMDQwCj4+IFvCoMKgIDI0LjM4NjA2Nl0geDkg OiBmZmZmMDAwMDEyZGMzYjM4IHg4IDogMDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zODYx NjZdIHg3IDogMDAwMDAwMDAwMDAwMDAwMCB4NiA6IGZmZmY4MDA4N2FjMDAyNDgKPj4gW8KgwqAg MjQuMzg2MjY2XSB4NSA6IDAwMDA4MDA4NmNhNTQwMDAgeDQgOiAwMDAwMDAwMDAwMDAyMTE4Cj4+ IFvCoMKgIDI0LjM4NjM2Nl0geDMgOiBlZWVlZWVlZWVlZWVlZWVmIHgyIDogZmZmZjgwMDg3NWU3 YzkxOAo+PiBbwqDCoCAyNC4zODY0NjZdIHgxIDogMDAwMDAwMDAwMDAwMDAwMSB4MCA6IGZmZmY4 MDA4NzVlN2NhODAKPj4gW8KgwqAgMjQuMzg2NDY2XSBDYWxsIHRyYWNlOgo+PiBbwqDCoCAyNC4z ODY1NjZdwqAga3ZtX3RpbWVyX2lycV9jYW5fZmlyZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4zODY2 NjZdwqAga3ZtX3RpbWVyX3ZjcHVfbG9hZCsweGE4LzB4MWEwCj4+IFvCoMKgIDI0LjM4NjY2Nl3C oCBrdm1fYXJjaF92Y3B1X2xvYWQrMHhiMC8weDFmMAo+PiBbwqDCoCAyNC4zODY4OThdwqAga3Zt X3NjaGVkX2luKzB4MWMvMHgyOAo+PiBbwqDCoCAyNC4zODY5NjZdwqAgZmluaXNoX3Rhc2tfc3dp dGNoKzB4ZDgvMHgxZDgKPj4gW8KgwqAgMjQuMzg3MTY2XcKgIF9fc2NoZWR1bGUrMHgyNDgvMHg0 YTAKPj4gW8KgwqAgMjQuMzg3MzU0XcKgIHByZWVtcHRfc2NoZWR1bGVfaXJxKzB4NjAvMHg5MAo+ PiBbwqDCoCAyNC4zODczNjZdwqAgZWwxX2lycSsweGQwLzB4MTgwCj4+IFvCoMKgIDI0LjM4NzQ2 Nl3CoCBrdm1faGFuZGxlX2d1ZXN0X2Fib3J0KzB4MC8weDNhMAo+PiBbwqDCoCAyNC4zODc1NjZd wqAga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4rMHg0MWMvMHg2ODgKPj4gW8KgwqAgMjQuMzg3NTY2 XcKgIGt2bV92Y3B1X2lvY3RsKzB4NGMwLzB4ODM4Cj4+IFvCoMKgIDI0LjM4NzY2Nl3CoCBkb192 ZnNfaW9jdGwrMHhiOC8weDg3OAo+PiBbwqDCoCAyNC4zODc3NjZdwqAga3N5c19pb2N0bCsweDg0 LzB4OTAKPj4gW8KgwqAgMjQuMzg3ODY2XcKgIF9fYXJtNjRfc3lzX2lvY3RsKzB4MTgvMHgyOAo+ PiBbwqDCoCAyNC4zODc4NjZdwqAgZWwwX3N2Y19jb21tb24uY29uc3Rwcm9wLjArMHhiMC8weDE2 OAo+PiBbwqDCoCAyNC4zODc5NjZdwqAgZWwwX3N2Y19oYW5kbGVyKzB4MjgvMHg3OAo+PiBbwqDC oCAyNC4zODgwNjZdwqAgZWwwX3N2YysweDgvMHhjCj4+IFvCoMKgIDI0LjM4ODA2Nl0gLS0tWyBl bmQgdHJhY2UgMzdhMzIyOTNlNDNhYzEyZCBdLS0tCj4+IFBBU1M6IGNwdS1vbgo+PiBTVU1NQVJZ OiA0IHRlW8KgwqAgMjQuMzkwMjY2XSBXQVJOSU5HOiBDUFU6IDMgUElEOiAxNjAgYXQKPj4gYXJj aC9hcm02NC9rdm0vLi4vLi4vLi4vdmlydC9rdm0vYXJtL2FyY2hfdGltZXIuYzoxNzAKPj4ga3Zt X3RpbWVyX2lycV9jYW5fZmlyZSsweGMvMHgzMAo+PiBzW8KgwqAgMjQuMzkwMzY2XSBNb2R1bGVz IGxpbmtlZCBpbjoKPj4gdHNbwqDCoCAyNC4zOTAzNjZdIENQVTogMyBQSUQ6IDE2MCBDb21tOiBr dm0tdmNwdS0xIFRhaW50ZWQ6IEcgICAgICAgIFcKPj4gNS4yLjAtcmM1LTAwMDYwLWc3ZGJjZTYz YmQxYzcgIzE0NQo+PiBbwqDCoCAyNC4zOTA1NjZdIEhhcmR3YXJlIG5hbWU6IEZvdW5kYXRpb24t djhBIChEVCkKPj4KPj4gW8KgwqAgMjQuMzkwNzk1XSBwc3RhdGU6IDQwNDAwMDA5IChuWmN2IGRh aWYgK1BBTiAtVUFPKQo+PiBbwqDCoCAyNC4zOTA4NjZdIHBjIDoga3ZtX3RpbWVyX2lycV9jYW5f ZmlyZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4zOTA5NjZdIGxyIDogdGltZXJfZW11bGF0ZSsweDI0 LzB4OTgKPj4gW8KgwqAgMjQuMzkxMDY2XSBzcCA6IGZmZmYwMDAwMTNkOGI3ODAKPj4gW8KgwqAg MjQuMzkxMDY2XSB4Mjk6IGZmZmYwMDAwMTNkOGI3ODAgeDI4OiBmZmZmODAwODdhNjM5YjgwCj4+ IFvCoMKgIDI0LjM5MTE2Nl0geDI3OiBmZmZmMDAwMDEwYmE4NjQ4IHgyNjogZmZmZjAwMDAxMGI3 MWI0MAo+PiBbwqDCoCAyNC4zOTEyNjZdIHgyNTogZmZmZjgwMDg3YTYzYTEwMCB4MjQ6IDAwMDAw MDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzkxMzY2XSB4MjM6IDAwMDA4MDA4NmNhNTQwMDAgeDIy OiAwMDAwMDAwMDAwMDAwMDAzCj4+IFvCoMKgIDI0LjM5MTQ2Nl0geDIxOiBmZmZmODAwODc1ZTdj OTE4IHgyMDogZmZmZjgwMDg3NWU3YTgwMAo+PiBbwqDCoCAyNC4zOTE0NjZdIHgxOTogZmZmZjgw MDg3NWU3Y2EwOCB4MTg6IDAwMDAwMDAwMDAwMDAwMDAKPj4gW8KgwqAgMjQuMzkxNTY2XSB4MTc6 IDAwMDAwMDAwMDAwMDAwMDAgeDE2OiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgIDI0LjM5MTY2 Nl0geDE1OiAwMDAwMDAwMDAwMDAwMDAwIHgxNDogMDAwMDAwMDAwMDAwMjExOAo+PiBbwqDCoCAy NC4zOTE3NjZdIHgxMzogMDAwMDAwMDAwMDAwMjE5MCB4MTI6IDAwMDAwMDAwMDAwMDIyODAKPj4g W8KgwqAgMjQuMzkxODY2XSB4MTE6IDAwMDAwMDAwMDAwMDIyMDggeDEwOiAwMDAwMDAwMDAwMDAw MDQwCj4+IFvCoMKgIDI0LjM5MTk0Ml0geDkgOiBmZmZmMDAwMDEyZGMzYjM4IHg4IDogMDAwMDAw MDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zOTE5NjZdIHg3IDogMDAwMDAwMDAwMDAwMDAwMCB4NiA6 IGZmZmY4MDA4N2FjMDAyNDgKPj4gW8KgwqAgMjQuMzkyMDY2XSB4NSA6IDAwMDA4MDA4NmNhNTQw MDAgeDQgOiAwMDAwMDAwMDAwMDAyMTE4Cj4+IFvCoMKgIDI0LjM5MjE2Nl0geDMgOiBlZWVlZWVl ZWVlZWVlZWVmIHgyIDogZmZmZjgwMDg3NWU3YzkxOAo+PiBbwqDCoCAyNC4zOTIyNjldIHgxIDog MDAwMDAwMDAwMDAwMDAwMSB4MCA6IGZmZmY4MDA4NzVlN2NhMDgKPj4gW8KgwqAgMjQuMzkyMzY2 XSBDYWxsIHRyYWNlOgo+PiBbwqDCoCAyNC4zOTI0MzNdwqAga3ZtX3RpbWVyX2lycV9jYW5fZmly ZSsweGMvMHgzMAo+PiBbwqDCoCAyNC4zOTI0NjZdwqAga3ZtX3RpbWVyX3ZjcHVfbG9hZCsweDlj LzB4MWEwCj4+IFvCoMKgIDI0LjM5MjU5N13CoCBrdm1fYXJjaF92Y3B1X2xvYWQrMHhiMC8weDFm MAo+PiBbwqDCoCAyNC4zOTI2NjZdwqAga3ZtX3NjaGVkX2luKzB4MWMvMHgyOAo+PiBbwqDCoCAy NC4zOTI3NjZdwqAgZmluaXNoX3Rhc2tfc3dpdGNoKzB4ZDgvMHgxZDgKPj4gW8KgwqAgMjQuMzky NzY2XcKgIF9fc2NoZWR1bGUrMHgyNDgvMHg0YTAKPj4gW8KgwqAgMjQuMzkyODY2XcKgIHByZWVt cHRfc2NoZWR1bGVfaXJxKzB4NjAvMHg5MAo+PiBbwqDCoCAyNC4zOTI5NjZdwqAgZWwxX2lycSsw eGQwLzB4MTgwCj4+IFvCoMKgIDI0LjM5Mjk2Nl3CoCBrdm1faGFuZGxlX2d1ZXN0X2Fib3J0KzB4 MC8weDNhMAo+PiBbwqDCoCAyNC4zOTMwNjZdwqAga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4rMHg0 MWMvMHg2ODgKPj4gW8KgwqAgMjQuMzkzMTY2XcKgIGt2bV92Y3B1X2lvY3RsKzB4NGMwLzB4ODM4 Cj4+IFvCoMKgIDI0LjM5MzI2Nl3CoCBkb192ZnNfaW9jdGwrMHhiOC8weDg3OAo+PiBbwqDCoCAy NC4zOTMyNjZdwqAga3N5c19pb2N0bCsweDg0LzB4OTAKPj4gW8KgwqAgMjQuMzkzMzY2XcKgIF9f YXJtNjRfc3lzX2lvY3RsKzB4MTgvMHgyOAo+PiBbwqDCoCAyNC4zOTM0NjZdwqAgZWwwX3N2Y19j b21tb24uY29uc3Rwcm9wLjArMHhiMC8weDE2OAo+PiBbwqDCoCAyNC4zOTM1NjZdwqAgZWwwX3N2 Y19oYW5kbGVyKzB4MjgvMHg3OAo+PiBbwqDCoCAyNC4zOTM1NjZdwqAgZWwwX3N2YysweDgvMHhj Cj4+IFvCoMKgIDI0LjM5MzY2Nl0gLS0tWyBlbmQgdHJhY2UgMzdhMzIyOTNlNDNhYzEyZSBdLS0t Cj4+IFvCoMKgIDI0LjM5Mzg2Nl0gV0FSTklORzogQ1BVOiAzIFBJRDogMTYwIGF0Cj4+IGFyY2gv YXJtNjQva3ZtLy4uLy4uLy4uL3ZpcnQva3ZtL2FybS9hcmNoX3RpbWVyLmM6MTcwCj4+IGt2bV90 aW1lcl9pcnFfY2FuX2ZpcmUrMHhjLzB4MzAKPj4gW8KgwqAgMjQuMzk0MDY2XSBNb2R1bGVzIGxp bmtlZCBpbjoKPj4gW8KgwqAgMjQuMzk0MjY2XSBDUFU6IDMgUElEOiAxNjAgQ29tbToga3ZtLXZj cHUtMSBUYWludGVkOiBHICAgICAgICBXCj4+IDUuMi4wLXJjNS0wMDA2MC1nN2RiY2U2M2JkMWM3 ICMxNDUKPj4gW8KgwqAgMjQuMzk0MzY2XSBIYXJkd2FyZSBuYW1lOiBGb3VuZGF0aW9uLXY4QSAo RFQpCj4+IFvCoMKgIDI0LjM5NDQ2Nl0gcHN0YXRlOiA0MDQwMDAwOSAoblpjdiBkYWlmICtQQU4g LVVBTykKPj4gW8KgwqAgMjQuMzk0NDY2XSBwYyA6IGt2bV90aW1lcl9pcnFfY2FuX2ZpcmUrMHhj LzB4MzAKPj4gW8KgwqAgMjQuMzk0NTY2XSBsciA6IHRpbWVyX2VtdWxhdGUrMHgyNC8weDk4Cj4+ IFvCoMKgIDI0LjM5NDY2Nl0gc3AgOiBmZmZmMDAwMDEzZDhiNzgwCj4+IFvCoMKgIDI0LjM5NDcy N10geDI5OiBmZmZmMDAwMDEzZDhiNzgwIHgyODogZmZmZjgwMDg3YTYzOWI4MAo+PiBbwqDCoCAy NC4zOTQ3NjZdIHgyNzogZmZmZjAwMDAxMGJhODY0OCB4MjY6IGZmZmYwMDAwMTBiNzFiNDAKPj4g W8KgwqAgMjQuMzk0ODY2XSB4MjU6IGZmZmY4MDA4N2E2M2ExMDAgeDI0OiAwMDAwMDAwMDAwMDAw MDAwCj4+IFvCoMKgIDI0LjM5NDk2Nl0geDIzOiAwMDAwODAwODZjYTU0MDAwIHgyMjogMDAwMDAw MDAwMDAwMDAwMwo+PiBbwqDCoCAyNC4zOTQ5NjZdIHgyMTogZmZmZjgwMDg3NWU3YzkxOCB4MjA6 IGZmZmY4MDA4NzVlN2E4MDAKPj4gW8KgwqAgMjQuMzk1MDY2XSB4MTk6IGZmZmY4MDA4NzVlN2Nh ODAgeDE4OiAwMDAwMDAwMDAwMDAwMDAwCj4+IFvCoMKgIDI0LjM5NTE2Nl0geDE3OiAwMDAwMDAw MDAwMDAwMDAwIHgxNjogMDAwMDAwMDAwMDAwMDAwMAo+PiBbwqDCoCAyNC4zOTUyNjZdIHgxNTog MDAwMDAwMDAwMDAwMDAwMCB4MTQ6IDAwMDAwMDAwMDAwMDIxMTgKPj4gW8KgwqAgMjQuMzk1Mzgz XSB4MTM6IDAwMDAwMDAwMDAwMDIxOTAgeDEyOiAwMDAwMDAwMDAwMDAyMjgwCj4+IFvCoMKgIDI0 LjM5NTQ2Nl0geDExOiAwMDAwMDAwMDAwMDAyMjA4IHgxMDogMDAwMDAwMDAwMDAwMDA0MAo+PiBb wqDCoCAyNC4zOTU1NDddIHg5IDogZmZmZjAwMDAxMmRjM2IzOCB4OCA6IDAwMDAwMDAwMDAwMDAw MDAKPj4gW8KgwqAgMjQuMzk1NjY2XSB4NyA6IDAwMDAwMDAwMDAwMDAwMDAgeDYgOiBmZmZmODAw ODdhYzAwMjQ4Cj4+IFvCoMKgIDI0LjM5NTg2Nl0geDUgOiAwMDAwODAwODZjYTU0MDAwIHg0IDog MDAwMDAwMDAwMDAwMjExOAo+PiBbwqDCoCAyNC4zOTU5NjZdIHgzIDogZWVlZWVlZWVlZWVlZWVl ZiB4MiA6IGZmZmY4MDA4NzVlN2M5MTgKPj4gW8KgwqAgMjQuMzk2MDY2XSB4MSA6IDAwMDAwMDAw MDAwMDAwMDEgeDAgOiBmZmZmODAwODc1ZTdjYTgwCj4+IFvCoMKgIDI0LjM5NjA2Nl0gQ2FsbCB0 cmFjZToKPj4gW8KgwqAgMjQuMzk2MTY2XcKgIGt2bV90aW1lcl9pcnFfY2FuX2ZpcmUrMHhjLzB4 MzAKPj4gW8KgwqAgMjQuMzk2MjY2XcKgIGt2bV90aW1lcl92Y3B1X2xvYWQrMHhhOC8weDFhMAo+ PiBbwqDCoCAyNC4zOTYzNjZdwqAga3ZtX2FyY2hfdmNwdV9sb2FkKzB4YjAvMHgxZjAKPj4gW8Kg wqAgMjQuMzk2MzY2XcKgIGt2bV9zY2hlZF9pbisweDFjLzB4MjgKPj4gW8KgwqAgMjQuMzk2NDY2 XcKgIGZpbmlzaF90YXNrX3N3aXRjaCsweGQ4LzB4MWQ4Cj4+IFvCoMKgIDI0LjM5NjU2Nl3CoCBf X3NjaGVkdWxlKzB4MjQ4LzB4NGEwCj4+IFvCoMKgIDI0LjM5NjY2Nl3CoCBwcmVlbXB0X3NjaGVk dWxlX2lycSsweDYwLzB4OTAKPj4gW8KgwqAgMjQuMzk2NjY2XcKgIGVsMV9pcnErMHhkMC8weDE4 MAo+PiBbwqDCoCAyNC4zOTY3NjZdwqAga3ZtX2hhbmRsZV9ndWVzdF9hYm9ydCsweDAvMHgzYTAK Pj4gW8KgwqAgMjQuMzk2ODY2XcKgIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKzB4NDFjLzB4Njg4 Cj4+IFvCoMKgIDI0LjM5Njg2Nl3CoCBrdm1fdmNwdV9pb2N0bCsweDRjMC8weDgzOAo+PiBbwqDC oCAyNC4zOTcwMjFdwqAgZG9fdmZzX2lvY3RsKzB4YjgvMHg4NzgKPj4gW8KgwqAgMjQuMzk3MDY2 XcKgIGtzeXNfaW9jdGwrMHg4NC8weDkwCj4+IFvCoMKgIDI0LjM5NzE2Nl3CoCBfX2FybTY0X3N5 c19pb2N0bCsweDE4LzB4MjgKPj4gW8KgwqAgMjQuMzk3MzQ4XcKgIGVsMF9zdmNfY29tbW9uLmNv bnN0cHJvcC4wKzB4YjAvMHgxNjgKPj4gW8KgwqAgMjQuMzk3MzY2XcKgIGVsMF9zdmNfaGFuZGxl cisweDI4LzB4NzgKPj4gW8KgwqAgMjQuMzk3NTY2XcKgIGVsMF9zdmMrMHg4LzB4Ywo+PiBbwqDC oCAyNC4zOTc2NzZdIC0tLVsgZW5kIHRyYWNlIDM3YTMyMjkzZTQzYWMxMmYgXS0tLQo+Pgo+PiAg ICMgS1ZNIGNvbXBhdGliaWxpdHkgd2FybmluZy4KPj4gICAgIHZpcnRpby05cCBkZXZpY2Ugd2Fz IG5vdCBkZXRlY3RlZC4KPj4gICAgIFdoaWxlIHlvdSBoYXZlIHJlcXVlc3RlZCBhIHZpcnRpby05 cCBkZXZpY2UsIHRoZSBndWVzdCBrZXJuZWwgZGlkIG5vdAo+PiBpbml0aWFsaXplIGl0Lgo+PiAg ICAgUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBndWVzdCBrZXJuZWwgd2FzIGNvbXBpbGVkIHdp dGgKPj4gQ09ORklHX05FVF85UF9WSVJUSU89eSBlbmFibGVkIGluIC5jb25maWcuCj4+Cj4+ICAg IyBLVk0gY29tcGF0aWJpbGl0eSB3YXJuaW5nLgo+PiAgICAgdmlydGlvLW5ldCBkZXZpY2Ugd2Fz IG5vdCBkZXRlY3RlZC4KPj4gICAgIFdoaWxlIHlvdSBoYXZlIHJlcXVlc3RlZCBhIHZpcnRpby1u ZXQgZGV2aWNlLCB0aGUgZ3Vlc3Qga2VybmVsIGRpZCBub3QKPj4gaW5pdGlhbGl6ZSBpdC4KPj4g ICAgIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCB0aGUgZ3Vlc3Qga2VybmVsIHdhcyBjb21waWxlZCB3 aXRoIENPTkZJR19WSVJUSU9fTkVUPXkKPj4gZW5hYmxlZCBpbiAuY29uZmlnLgo+Pgo+PiBbLi5d Cj4gRGlkIHNvbWUgaW52ZXN0aWdhdGluZyBhbmQgdGhpcyB3YXMgY2F1c2VkIGJ5IGEgYnVnIGlu IGt2bS11bml0LXRlc3RzICh0aGUgZml4Cj4gZm9yIGl0IHdpbGwgYmUgcGFydCBvZiB0aGUgRUwy IHBhdGNoZXMgZm9yIGt2bS11bml0LXRlc3RzKS4gVGhlIGd1ZXN0IHdhcyB0cnlpbmcKPiB0byBm ZXRjaCBhbiBpbnN0cnVjdGlvbiBmcm9tIGFkZHJlc3MgMHgyMDAsIHdoaWNoIEtWTSBpbnRlcnBy ZXRzIGFzIGEgcHJlZmV0Y2gKPiBhYm9ydCBvbiBhbiBJL08gYWRkcmVzcyBhbmQgZW5kcyB1cCBj YWxsaW5nIGt2bV9pbmplY3RfcGFidC4gVGhlIGNvZGUgZnJvbQo+IGFyY2gvYXJtNjQva3ZtL2lu amVjdF9mYXVsdC5jIGRvZXNuJ3Qga25vdyBhbnl0aGluZyBhYm91dCBuZXN0ZWQgdmlydHVhbGl6 YXRpb24sCj4gYW5kIGl0IHNldHMgdGhlIFZDUFUgbW9kZSBkaXJlY3RseSB0byBQU1JfTU9ERV9F TDFoLiBUaGlzIG1ha2VzX2h5cF9jdHh0IHJldHVybgo+IGZhbHNlLCBhbmQgZ2V0X3RpbWVyX21h cCB3aWxsIHJldHVybiBhbiBpbmNvcnJlY3QgbWFwcGluZy4KPgo+IE9uIG5leHQga3ZtX3RpbWVy X3ZjcHVfcHV0LCB0aGUgZGlyZWN0IHRpbWVycyB3aWxsIGJlIHtwLHZ9dGltZXIsIGFuZAo+IGh7 cCx2fXRpbWVyLT5sb2FkZWQgd2lsbCBub3QgYmUgc2V0IHRvIGZhbHNlLiBJbiB0aGUgY29ycmVz cG9uZGluZyBjYWxsIHRvCj4ga3ZtX3RpbWVyX3ZjcHVfbG9hZCwgS1ZNIHdpbGwgdHJ5IHRvIGVt dWxhdGUgdGhlIGhwdGltZXIgYW5kIGh2dGltZXIsIHdoaWNoCj4gc3RpbGwgaGF2ZSBsb2FkZWQg PSB0cnVlLiBBbmQgdGhpcyBjYXVzZXMgdGhlIHdhcm5pbmcgSSBzYXcuCgpJIHRyaWVkIHRvIGZp eCBpdCB3aXRoIHRoZSBmb2xsb3dpbmcgcGF0Y2gsIGluamVjdF91bmRlZjY0IHdhcyBzaW1pbGFy bHkgYnJva2VuOgoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2luamVjdF9mYXVsdC5jIGIv YXJjaC9hcm02NC9rdm0vaW5qZWN0X2ZhdWx0LmMKaW5kZXggZmFjOTYyYjQ2N2JkLi5hZWU4YTll ZjM2ZDUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL2luamVjdF9mYXVsdC5jCisrKyBiL2Fy Y2gvYXJtNjQva3ZtL2luamVjdF9mYXVsdC5jCkBAIC01MywxNSArNTMsNyBAQCBzdGF0aWMgdm9p ZCBpbmplY3RfYWJ0NjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGlzX2lhYnQsCnVuc2ln bmVkIGxvbmcgYWRkcgrCoHsKwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBjcHNyID0gKnZjcHVfY3Bz cih2Y3B1KTsKwqDCoMKgwqAgYm9vbCBpc19hYXJjaDMyID0gdmNwdV9tb2RlX2lzXzMyYml0KHZj cHUpOwotwqDCoMKgIHUzMiBlc3IgPSAwOwotCi3CoMKgwqAgdmNwdV93cml0ZV9lbHJfZWwxKHZj cHUsICp2Y3B1X3BjKHZjcHUpKTsKLcKgwqDCoCAqdmNwdV9wYyh2Y3B1KSA9IGdldF9leGNlcHRf dmVjdG9yKHZjcHUsIGV4Y2VwdF90eXBlX3N5bmMpOwotCi3CoMKgwqAgKnZjcHVfY3Bzcih2Y3B1 KSA9IFBTVEFURV9GQVVMVF9CSVRTXzY0OwotwqDCoMKgIHZjcHVfd3JpdGVfc3Bzcih2Y3B1LCBj cHNyKTsKLQotwqDCoMKgIHZjcHVfd3JpdGVfc3lzX3JlZyh2Y3B1LCBhZGRyLCBGQVJfRUwxKTsK K8KgwqDCoCB1MzIgZXNyID0gRVNSX0VMeF9GU0NfRVhUQUJUOwrCoArCoMKgwqDCoCAvKgrCoMKg wqDCoCDCoCogQnVpbGQgYW4ge2ksZH1hYm9ydCwgZGVwZW5kaW5nIG9uIHRoZSBsZXZlbCBhbmQg dGhlCkBAIC04MiwxMyArNzQsMTIgQEAgc3RhdGljIHZvaWQgaW5qZWN0X2FidDY0KHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgYm9vbAppc19pYWJ0LCB1bnNpZ25lZCBsb25nIGFkZHIKwqDCoMKgwqAg aWYgKCFpc19pYWJ0KQrCoMKgwqDCoCDCoMKgwqAgZXNyIHw9IEVTUl9FTHhfRUNfREFCVF9MT1cg PDwgRVNSX0VMeF9FQ19TSElGVDsKwqAKLcKgwqDCoCB2Y3B1X3dyaXRlX3N5c19yZWcodmNwdSwg ZXNyIHwgRVNSX0VMeF9GU0NfRVhUQUJULCBFU1JfRUwxKTsKLX0KK8KgwqDCoCBpZiAobmVzdGVk X3ZpcnRfaW5fdXNlKHZjcHUpKSB7CivCoMKgwqAgwqDCoMKgIGt2bV9pbmplY3RfbmVzdGVkX3N5 bmModmNwdSwgZXNyKTsKK8KgwqDCoCDCoMKgwqAgcmV0dXJuOworwqDCoMKgIH0KwqAKLXN0YXRp YyB2b2lkIGluamVjdF91bmRlZjY0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKLXsKLcKgwqDCoCB1 bnNpZ25lZCBsb25nIGNwc3IgPSAqdmNwdV9jcHNyKHZjcHUpOwotwqDCoMKgIHUzMiBlc3IgPSAo RVNSX0VMeF9FQ19VTktOT1dOIDw8IEVTUl9FTHhfRUNfU0hJRlQpOworwqDCoMKgIHZjcHVfd3Jp dGVfc3lzX3JlZyh2Y3B1LCBlc3IsIEVTUl9FTDEpOwrCoArCoMKgwqDCoCB2Y3B1X3dyaXRlX2Vs cl9lbDEodmNwdSwgKnZjcHVfcGModmNwdSkpOwrCoMKgwqDCoCAqdmNwdV9wYyh2Y3B1KSA9IGdl dF9leGNlcHRfdmVjdG9yKHZjcHUsIGV4Y2VwdF90eXBlX3N5bmMpOwpAQCAtOTYsNiArODcsMTQg QEAgc3RhdGljIHZvaWQgaW5qZWN0X3VuZGVmNjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQrCoMKg wqDCoCAqdmNwdV9jcHNyKHZjcHUpID0gUFNUQVRFX0ZBVUxUX0JJVFNfNjQ7CsKgwqDCoMKgIHZj cHVfd3JpdGVfc3Bzcih2Y3B1LCBjcHNyKTsKwqAKK8KgwqDCoCB2Y3B1X3dyaXRlX3N5c19yZWco dmNwdSwgYWRkciwgRkFSX0VMMSk7Cit9CisKK3N0YXRpYyB2b2lkIGluamVjdF91bmRlZjY0KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKK3sKK8KgwqDCoCB1bnNpZ25lZCBsb25nIGNwc3IgPSAqdmNw dV9jcHNyKHZjcHUpOworwqDCoMKgIHUzMiBlc3IgPSBFU1JfRUx4X0VDX1VOS05PV04gPDwgRVNS X0VMeF9FQ19TSElGVDsKKwrCoMKgwqDCoCAvKgrCoMKgwqDCoCDCoCogQnVpbGQgYW4gdW5rbm93 biBleGNlcHRpb24sIGRlcGVuZGluZyBvbiB0aGUgaW5zdHJ1Y3Rpb24KwqDCoMKgwqAgwqAqIHNl dC4KQEAgLTEwMyw3ICsxMDIsMTggQEAgc3RhdGljIHZvaWQgaW5qZWN0X3VuZGVmNjQoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1KQrCoMKgwqDCoCBpZiAoa3ZtX3ZjcHVfdHJhcF9pbF9pczMyYml0KHZj cHUpKQrCoMKgwqDCoCDCoMKgwqAgZXNyIHw9IEVTUl9FTHhfSUw7CsKgCivCoMKgwqAgaWYgKG5l c3RlZF92aXJ0X2luX3VzZSh2Y3B1KSkgeworwqDCoMKgIMKgwqDCoCBrdm1faW5qZWN0X25lc3Rl ZF9zeW5jKHZjcHUsIGVzcik7CivCoMKgwqAgwqDCoMKgIHJldHVybjsKK8KgwqDCoCB9CisKwqDC oMKgwqAgdmNwdV93cml0ZV9zeXNfcmVnKHZjcHUsIGVzciwgRVNSX0VMMSk7CisKK8KgwqDCoCB2 Y3B1X3dyaXRlX2Vscl9lbDEodmNwdSwgKnZjcHVfcGModmNwdSkpOworwqDCoMKgICp2Y3B1X3Bj KHZjcHUpID0gZ2V0X2V4Y2VwdF92ZWN0b3IodmNwdSwgZXhjZXB0X3R5cGVfc3luYyk7CisKK8Kg wqDCoCAqdmNwdV9jcHNyKHZjcHUpID0gUFNUQVRFX0ZBVUxUX0JJVFNfNjQ7CivCoMKgwqAgdmNw dV93cml0ZV9zcHNyKHZjcHUsIGNwc3IpOwrCoH0KwqAKwqAvKioKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==