From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756882AbeEJIJv (ORCPT ); Thu, 10 May 2018 04:09:51 -0400 Received: from mx2.suse.de ([195.135.220.15]:51903 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756802AbeEJIHI (ORCPT ); Thu, 10 May 2018 04:07:08 -0400 From: Jiri Slaby To: mingo@redhat.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby , Boris Ostrovsky , Juergen Gross , Thomas Gleixner , "H. Peter Anvin" , x86@kernel.org, xen-devel@lists.xenproject.org Subject: [PATCH -resend 21/27] x86_64: assembly, add ENDs to some functions and relabel with SYM_CODE_* Date: Thu, 10 May 2018 10:06:38 +0200 Message-Id: <20180510080644.19752-22-jslaby@suse.cz> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180510080644.19752-1-jslaby@suse.cz> References: <20180510080644.19752-1-jslaby@suse.cz> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org All these are functions which are invoked from elsewhere, but they are not typical C functions. So we annotate them (as global) using the new SYM_CODE_START. All these were not balanced with any END, so mark their ends by SYM_CODE_END, appropriatelly. Signed-off-by: Jiri Slaby Reviewed-by: Boris Ostrovsky [xen bits] Cc: Boris Ostrovsky Cc: Juergen Gross Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: x86@kernel.org Cc: xen-devel@lists.xenproject.org --- arch/x86/boot/compressed/head_64.S | 6 ++++-- arch/x86/platform/olpc/xo1-wakeup.S | 3 ++- arch/x86/power/hibernate_asm_64.S | 6 ++++-- arch/x86/realmode/rm/reboot.S | 3 ++- arch/x86/realmode/rm/trampoline_64.S | 10 +++++++--- arch/x86/realmode/rm/wakeup_asm.S | 3 ++- arch/x86/xen/xen-asm_64.S | 6 ++++-- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S index a1a92f6fc8e4..d056c789f90d 100644 --- a/arch/x86/boot/compressed/head_64.S +++ b/arch/x86/boot/compressed/head_64.S @@ -250,7 +250,7 @@ ENDPROC(efi32_stub_entry) .code64 .org 0x200 -ENTRY(startup_64) +SYM_CODE_START(startup_64) /* * 64bit entry is 0x200 and it is ABI so immutable! * We come here either from startup_32 or directly from a @@ -400,6 +400,7 @@ trampoline_return: */ leaq relocated(%rbx), %rax jmp *%rax +SYM_CODE_END(startup_64) #ifdef CONFIG_EFI_STUB @@ -521,7 +522,7 @@ SYM_FUNC_END(relocated) * ECX contains the base address of the trampoline memory. * Non zero RDX on return means we need to enable 5-level paging. */ -ENTRY(trampoline_32bit_src) +SYM_CODE_START(trampoline_32bit_src) /* Set up data and stack segments */ movl $__KERNEL_DS, %eax movl %eax, %ds @@ -574,6 +575,7 @@ ENTRY(trampoline_32bit_src) movl %eax, %cr0 lret +SYM_CODE_END(trampoline_32bit_src) .code64 SYM_FUNC_START_LOCAL_NOALIGN(paging_enabled) diff --git a/arch/x86/platform/olpc/xo1-wakeup.S b/arch/x86/platform/olpc/xo1-wakeup.S index 5fee3a2c2fd4..75f4faff8468 100644 --- a/arch/x86/platform/olpc/xo1-wakeup.S +++ b/arch/x86/platform/olpc/xo1-wakeup.S @@ -90,7 +90,7 @@ restore_registers: ret -ENTRY(do_olpc_suspend_lowlevel) +SYM_CODE_START(do_olpc_suspend_lowlevel) call save_processor_state call save_registers @@ -110,6 +110,7 @@ ret_point: call restore_registers call restore_processor_state ret +SYM_CODE_END(do_olpc_suspend_lowlevel) .data saved_gdt: .long 0,0 diff --git a/arch/x86/power/hibernate_asm_64.S b/arch/x86/power/hibernate_asm_64.S index ce8da3a0412c..44755a847856 100644 --- a/arch/x86/power/hibernate_asm_64.S +++ b/arch/x86/power/hibernate_asm_64.S @@ -53,7 +53,7 @@ ENTRY(swsusp_arch_suspend) ret ENDPROC(swsusp_arch_suspend) -ENTRY(restore_image) +SYM_CODE_START(restore_image) /* prepare to jump to the image kernel */ movq restore_jump_address(%rip), %r8 movq restore_cr3(%rip), %r9 @@ -68,9 +68,10 @@ ENTRY(restore_image) /* jump to relocated restore code */ movq relocated_restore_code(%rip), %rcx jmpq *%rcx +SYM_CODE_END(restore_image) /* code below has been relocated to a safe page */ -ENTRY(core_restore_code) +SYM_CODE_START(core_restore_code) /* switch to temporary page tables */ movq %rax, %cr3 /* flush TLB */ @@ -98,6 +99,7 @@ ENTRY(core_restore_code) .Ldone: /* jump to the restore_registers address from the image header */ jmpq *%r8 +SYM_CODE_END(core_restore_code) /* code below belongs to the image kernel */ .align PAGE_SIZE diff --git a/arch/x86/realmode/rm/reboot.S b/arch/x86/realmode/rm/reboot.S index 6e38c13c1873..7db1459d363f 100644 --- a/arch/x86/realmode/rm/reboot.S +++ b/arch/x86/realmode/rm/reboot.S @@ -19,7 +19,7 @@ */ .section ".text32", "ax" .code32 -ENTRY(machine_real_restart_asm) +SYM_CODE_START(machine_real_restart_asm) #ifdef CONFIG_X86_64 /* Switch to trampoline GDT as it is guaranteed < 4 GiB */ @@ -63,6 +63,7 @@ SYM_CODE_INNER_LABEL(machine_real_restart_paging_off, SYM_L_GLOBAL) movl %ecx, %gs movl %ecx, %ss ljmpw $8, $1f +SYM_CODE_END(machine_real_restart_asm) /* * This is 16-bit protected mode code to disable paging and the cache, diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S index 9e5f9ade43c8..408f81710ccd 100644 --- a/arch/x86/realmode/rm/trampoline_64.S +++ b/arch/x86/realmode/rm/trampoline_64.S @@ -38,7 +38,7 @@ .code16 .balign PAGE_SIZE -ENTRY(trampoline_start) +SYM_CODE_START(trampoline_start) cli # We should be safe anyway wbinvd @@ -81,12 +81,14 @@ ENTRY(trampoline_start) no_longmode: hlt jmp no_longmode +SYM_CODE_END(trampoline_start) + #include "../kernel/verify_cpu.S" .section ".text32","ax" .code32 .balign 4 -ENTRY(startup_32) +SYM_CODE_START(startup_32) movl %edx, %ss addl $pa_real_mode_base, %esp movl %edx, %ds @@ -140,13 +142,15 @@ ENTRY(startup_32) * the new gdt/idt that has __KERNEL_CS with CS.L = 1. */ ljmpl $__KERNEL_CS, $pa_startup_64 +SYM_CODE_END(startup_32) .section ".text64","ax" .code64 .balign 4 -ENTRY(startup_64) +SYM_CODE_START(startup_64) # Now jump into the kernel using virtual addresses jmpq *tr_start(%rip) +SYM_CODE_END(startup_64) .section ".rodata","a" # Duplicate the global descriptor table diff --git a/arch/x86/realmode/rm/wakeup_asm.S b/arch/x86/realmode/rm/wakeup_asm.S index 0af6b30d3c68..7079913adbd2 100644 --- a/arch/x86/realmode/rm/wakeup_asm.S +++ b/arch/x86/realmode/rm/wakeup_asm.S @@ -37,7 +37,7 @@ SYM_DATA_END(wakeup_header) .code16 .balign 16 -ENTRY(wakeup_start) +SYM_CODE_START(wakeup_start) cli cld @@ -135,6 +135,7 @@ ENTRY(wakeup_start) #else jmp trampoline_start #endif +SYM_CODE_END(wakeup_start) bogus_real_magic: 1: diff --git a/arch/x86/xen/xen-asm_64.S b/arch/x86/xen/xen-asm_64.S index e8f6f482bb20..a69a171f7cea 100644 --- a/arch/x86/xen/xen-asm_64.S +++ b/arch/x86/xen/xen-asm_64.S @@ -84,11 +84,12 @@ hypercall_iret = hypercall_page + __HYPERVISOR_iret * 32 * r11 }<-- pushed by hypercall page * rsp->rax } */ -ENTRY(xen_iret) +SYM_CODE_START(xen_iret) pushq $0 jmp hypercall_iret +SYM_CODE_END(xen_iret) -ENTRY(xen_sysret64) +SYM_CODE_START(xen_sysret64) /* * We're already on the usermode stack at this point, but * still with the kernel gs, so we can easily switch back @@ -104,6 +105,7 @@ ENTRY(xen_sysret64) pushq $VGCF_in_syscall jmp hypercall_iret +SYM_CODE_END(xen_sysret64) /* * Xen handles syscall callbacks much like ordinary exceptions, which -- 2.16.3 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiri Slaby Subject: [PATCH -resend 21/27] x86_64: assembly, add ENDs to some functions and relabel with SYM_CODE_* Date: Thu, 10 May 2018 10:06:38 +0200 Message-ID: <20180510080644.19752-22-jslaby@suse.cz> References: <20180510080644.19752-1-jslaby@suse.cz> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180510080644.19752-1-jslaby@suse.cz> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: mingo@redhat.com Cc: linux-arch@vger.kernel.org, Juergen Gross , x86@kernel.org, linux-kernel@vger.kernel.org, "H. Peter Anvin" , xen-devel@lists.xenproject.org, Boris Ostrovsky , Jiri Slaby , Thomas Gleixner List-Id: linux-arch.vger.kernel.org QWxsIHRoZXNlIGFyZSBmdW5jdGlvbnMgd2hpY2ggYXJlIGludm9rZWQgZnJvbSBlbHNld2hlcmUs IGJ1dCB0aGV5IGFyZQpub3QgdHlwaWNhbCBDIGZ1bmN0aW9ucy4gU28gd2UgYW5ub3RhdGUgdGhl bSAoYXMgZ2xvYmFsKSB1c2luZyB0aGUgbmV3ClNZTV9DT0RFX1NUQVJULiBBbGwgdGhlc2Ugd2Vy ZSBub3QgYmFsYW5jZWQgd2l0aCBhbnkgRU5ELCBzbyBtYXJrIHRoZWlyCmVuZHMgYnkgU1lNX0NP REVfRU5ELCBhcHByb3ByaWF0ZWxseS4KClNpZ25lZC1vZmYtYnk6IEppcmkgU2xhYnkgPGpzbGFi eUBzdXNlLmN6PgpSZXZpZXdlZC1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lA b3JhY2xlLmNvbT4gW3hlbiBiaXRzXQpDYzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zz a3lAb3JhY2xlLmNvbT4KQ2M6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KQ2M6IFRo b21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpDYzogSW5nbyBNb2xuYXIgPG1pbmdv QHJlZGhhdC5jb20+CkNjOiAiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0b3IuY29tPgpDYzogeDg2 QGtlcm5lbC5vcmcKQ2M6IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwotLS0KIGFyY2gv eDg2L2Jvb3QvY29tcHJlc3NlZC9oZWFkXzY0LlMgICB8ICA2ICsrKystLQogYXJjaC94ODYvcGxh dGZvcm0vb2xwYy94bzEtd2FrZXVwLlMgIHwgIDMgKystCiBhcmNoL3g4Ni9wb3dlci9oaWJlcm5h dGVfYXNtXzY0LlMgICAgfCAgNiArKysrLS0KIGFyY2gveDg2L3JlYWxtb2RlL3JtL3JlYm9vdC5T ICAgICAgICB8ICAzICsrLQogYXJjaC94ODYvcmVhbG1vZGUvcm0vdHJhbXBvbGluZV82NC5TIHwg MTAgKysrKysrKy0tLQogYXJjaC94ODYvcmVhbG1vZGUvcm0vd2FrZXVwX2FzbS5TICAgIHwgIDMg KystCiBhcmNoL3g4Ni94ZW4veGVuLWFzbV82NC5TICAgICAgICAgICAgfCAgNiArKysrLS0KIDcg ZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2hlYWRfNjQuUyBiL2FyY2gveDg2L2Jvb3Qv Y29tcHJlc3NlZC9oZWFkXzY0LlMKaW5kZXggYTFhOTJmNmZjOGU0Li5kMDU2Yzc4OWY5MGQgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9oZWFkXzY0LlMKKysrIGIvYXJjaC94 ODYvYm9vdC9jb21wcmVzc2VkL2hlYWRfNjQuUwpAQCAtMjUwLDcgKzI1MCw3IEBAIEVORFBST0Mo ZWZpMzJfc3R1Yl9lbnRyeSkKIAogCS5jb2RlNjQKIAkub3JnIDB4MjAwCi1FTlRSWShzdGFydHVw XzY0KQorU1lNX0NPREVfU1RBUlQoc3RhcnR1cF82NCkKIAkvKgogCSAqIDY0Yml0IGVudHJ5IGlz IDB4MjAwIGFuZCBpdCBpcyBBQkkgc28gaW1tdXRhYmxlIQogCSAqIFdlIGNvbWUgaGVyZSBlaXRo ZXIgZnJvbSBzdGFydHVwXzMyIG9yIGRpcmVjdGx5IGZyb20gYQpAQCAtNDAwLDYgKzQwMCw3IEBA IHRyYW1wb2xpbmVfcmV0dXJuOgogICovCiAJbGVhcQlyZWxvY2F0ZWQoJXJieCksICVyYXgKIAlq bXAJKiVyYXgKK1NZTV9DT0RFX0VORChzdGFydHVwXzY0KQogCiAjaWZkZWYgQ09ORklHX0VGSV9T VFVCCiAKQEAgLTUyMSw3ICs1MjIsNyBAQCBTWU1fRlVOQ19FTkQocmVsb2NhdGVkKQogICogRUNY IGNvbnRhaW5zIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIHRyYW1wb2xpbmUgbWVtb3J5LgogICog Tm9uIHplcm8gUkRYIG9uIHJldHVybiBtZWFucyB3ZSBuZWVkIHRvIGVuYWJsZSA1LWxldmVsIHBh Z2luZy4KICAqLwotRU5UUlkodHJhbXBvbGluZV8zMmJpdF9zcmMpCitTWU1fQ09ERV9TVEFSVCh0 cmFtcG9saW5lXzMyYml0X3NyYykKIAkvKiBTZXQgdXAgZGF0YSBhbmQgc3RhY2sgc2VnbWVudHMg Ki8KIAltb3ZsCSRfX0tFUk5FTF9EUywgJWVheAogCW1vdmwJJWVheCwgJWRzCkBAIC01NzQsNiAr NTc1LDcgQEAgRU5UUlkodHJhbXBvbGluZV8zMmJpdF9zcmMpCiAJbW92bAklZWF4LCAlY3IwCiAK IAlscmV0CitTWU1fQ09ERV9FTkQodHJhbXBvbGluZV8zMmJpdF9zcmMpCiAKIAkuY29kZTY0CiBT WU1fRlVOQ19TVEFSVF9MT0NBTF9OT0FMSUdOKHBhZ2luZ19lbmFibGVkKQpkaWZmIC0tZ2l0IGEv YXJjaC94ODYvcGxhdGZvcm0vb2xwYy94bzEtd2FrZXVwLlMgYi9hcmNoL3g4Ni9wbGF0Zm9ybS9v bHBjL3hvMS13YWtldXAuUwppbmRleCA1ZmVlM2EyYzJmZDQuLjc1ZjRmYWZmODQ2OCAxMDA2NDQK LS0tIGEvYXJjaC94ODYvcGxhdGZvcm0vb2xwYy94bzEtd2FrZXVwLlMKKysrIGIvYXJjaC94ODYv cGxhdGZvcm0vb2xwYy94bzEtd2FrZXVwLlMKQEAgLTkwLDcgKzkwLDcgQEAgcmVzdG9yZV9yZWdp c3RlcnM6CiAKIAlyZXQKIAotRU5UUlkoZG9fb2xwY19zdXNwZW5kX2xvd2xldmVsKQorU1lNX0NP REVfU1RBUlQoZG9fb2xwY19zdXNwZW5kX2xvd2xldmVsKQogCWNhbGwJc2F2ZV9wcm9jZXNzb3Jf c3RhdGUKIAljYWxsCXNhdmVfcmVnaXN0ZXJzCiAKQEAgLTExMCw2ICsxMTAsNyBAQCByZXRfcG9p bnQ6CiAJY2FsbAlyZXN0b3JlX3JlZ2lzdGVycwogCWNhbGwJcmVzdG9yZV9wcm9jZXNzb3Jfc3Rh dGUKIAlyZXQKK1NZTV9DT0RFX0VORChkb19vbHBjX3N1c3BlbmRfbG93bGV2ZWwpCiAKIC5kYXRh CiBzYXZlZF9nZHQ6ICAgICAgICAgICAgIC5sb25nICAgMCwwCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9wb3dlci9oaWJlcm5hdGVfYXNtXzY0LlMgYi9hcmNoL3g4Ni9wb3dlci9oaWJlcm5hdGVfYXNt XzY0LlMKaW5kZXggY2U4ZGEzYTA0MTJjLi40NDc1NWE4NDc4NTYgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L3Bvd2VyL2hpYmVybmF0ZV9hc21fNjQuUworKysgYi9hcmNoL3g4Ni9wb3dlci9oaWJlcm5h dGVfYXNtXzY0LlMKQEAgLTUzLDcgKzUzLDcgQEAgRU5UUlkoc3dzdXNwX2FyY2hfc3VzcGVuZCkK IAlyZXQKIEVORFBST0Moc3dzdXNwX2FyY2hfc3VzcGVuZCkKIAotRU5UUlkocmVzdG9yZV9pbWFn ZSkKK1NZTV9DT0RFX1NUQVJUKHJlc3RvcmVfaW1hZ2UpCiAJLyogcHJlcGFyZSB0byBqdW1wIHRv IHRoZSBpbWFnZSBrZXJuZWwgKi8KIAltb3ZxCXJlc3RvcmVfanVtcF9hZGRyZXNzKCVyaXApLCAl cjgKIAltb3ZxCXJlc3RvcmVfY3IzKCVyaXApLCAlcjkKQEAgLTY4LDkgKzY4LDEwIEBAIEVOVFJZ KHJlc3RvcmVfaW1hZ2UpCiAJLyoganVtcCB0byByZWxvY2F0ZWQgcmVzdG9yZSBjb2RlICovCiAJ bW92cQlyZWxvY2F0ZWRfcmVzdG9yZV9jb2RlKCVyaXApLCAlcmN4CiAJam1wcQkqJXJjeAorU1lN X0NPREVfRU5EKHJlc3RvcmVfaW1hZ2UpCiAKIAkvKiBjb2RlIGJlbG93IGhhcyBiZWVuIHJlbG9j YXRlZCB0byBhIHNhZmUgcGFnZSAqLwotRU5UUlkoY29yZV9yZXN0b3JlX2NvZGUpCitTWU1fQ09E RV9TVEFSVChjb3JlX3Jlc3RvcmVfY29kZSkKIAkvKiBzd2l0Y2ggdG8gdGVtcG9yYXJ5IHBhZ2Ug dGFibGVzICovCiAJbW92cQklcmF4LCAlY3IzCiAJLyogZmx1c2ggVExCICovCkBAIC05OCw2ICs5 OSw3IEBAIEVOVFJZKGNvcmVfcmVzdG9yZV9jb2RlKQogLkxkb25lOgogCS8qIGp1bXAgdG8gdGhl IHJlc3RvcmVfcmVnaXN0ZXJzIGFkZHJlc3MgZnJvbSB0aGUgaW1hZ2UgaGVhZGVyICovCiAJam1w cQkqJXI4CitTWU1fQ09ERV9FTkQoY29yZV9yZXN0b3JlX2NvZGUpCiAKIAkgLyogY29kZSBiZWxv dyBiZWxvbmdzIHRvIHRoZSBpbWFnZSBrZXJuZWwgKi8KIAkuYWxpZ24gUEFHRV9TSVpFCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9yZWFsbW9kZS9ybS9yZWJvb3QuUyBiL2FyY2gveDg2L3JlYWxtb2Rl L3JtL3JlYm9vdC5TCmluZGV4IDZlMzhjMTNjMTg3My4uN2RiMTQ1OWQzNjNmIDEwMDY0NAotLS0g YS9hcmNoL3g4Ni9yZWFsbW9kZS9ybS9yZWJvb3QuUworKysgYi9hcmNoL3g4Ni9yZWFsbW9kZS9y bS9yZWJvb3QuUwpAQCAtMTksNyArMTksNyBAQAogICovCiAJLnNlY3Rpb24gIi50ZXh0MzIiLCAi YXgiCiAJLmNvZGUzMgotRU5UUlkobWFjaGluZV9yZWFsX3Jlc3RhcnRfYXNtKQorU1lNX0NPREVf U1RBUlQobWFjaGluZV9yZWFsX3Jlc3RhcnRfYXNtKQogCiAjaWZkZWYgQ09ORklHX1g4Nl82NAog CS8qIFN3aXRjaCB0byB0cmFtcG9saW5lIEdEVCBhcyBpdCBpcyBndWFyYW50ZWVkIDwgNCBHaUIg Ki8KQEAgLTYzLDYgKzYzLDcgQEAgU1lNX0NPREVfSU5ORVJfTEFCRUwobWFjaGluZV9yZWFsX3Jl c3RhcnRfcGFnaW5nX29mZiwgU1lNX0xfR0xPQkFMKQogCW1vdmwJJWVjeCwgJWdzCiAJbW92bAkl ZWN4LCAlc3MKIAlsam1wdwkkOCwgJDFmCitTWU1fQ09ERV9FTkQobWFjaGluZV9yZWFsX3Jlc3Rh cnRfYXNtKQogCiAvKgogICogVGhpcyBpcyAxNi1iaXQgcHJvdGVjdGVkIG1vZGUgY29kZSB0byBk aXNhYmxlIHBhZ2luZyBhbmQgdGhlIGNhY2hlLApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvcmVhbG1v ZGUvcm0vdHJhbXBvbGluZV82NC5TIGIvYXJjaC94ODYvcmVhbG1vZGUvcm0vdHJhbXBvbGluZV82 NC5TCmluZGV4IDllNWY5YWRlNDNjOC4uNDA4ZjgxNzEwY2NkIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni9yZWFsbW9kZS9ybS90cmFtcG9saW5lXzY0LlMKKysrIGIvYXJjaC94ODYvcmVhbG1vZGUvcm0v dHJhbXBvbGluZV82NC5TCkBAIC0zOCw3ICszOCw3IEBACiAJLmNvZGUxNgogCiAJLmJhbGlnbglQ QUdFX1NJWkUKLUVOVFJZKHRyYW1wb2xpbmVfc3RhcnQpCitTWU1fQ09ERV9TVEFSVCh0cmFtcG9s aW5lX3N0YXJ0KQogCWNsaQkJCSMgV2Ugc2hvdWxkIGJlIHNhZmUgYW55d2F5CiAJd2JpbnZkCiAK QEAgLTgxLDEyICs4MSwxNCBAQCBFTlRSWSh0cmFtcG9saW5lX3N0YXJ0KQogbm9fbG9uZ21vZGU6 CiAJaGx0CiAJam1wIG5vX2xvbmdtb2RlCitTWU1fQ09ERV9FTkQodHJhbXBvbGluZV9zdGFydCkK KwogI2luY2x1ZGUgIi4uL2tlcm5lbC92ZXJpZnlfY3B1LlMiCiAKIAkuc2VjdGlvbiAiLnRleHQz MiIsImF4IgogCS5jb2RlMzIKIAkuYmFsaWduIDQKLUVOVFJZKHN0YXJ0dXBfMzIpCitTWU1fQ09E RV9TVEFSVChzdGFydHVwXzMyKQogCW1vdmwJJWVkeCwgJXNzCiAJYWRkbAkkcGFfcmVhbF9tb2Rl X2Jhc2UsICVlc3AKIAltb3ZsCSVlZHgsICVkcwpAQCAtMTQwLDEzICsxNDIsMTUgQEAgRU5UUlko c3RhcnR1cF8zMikKIAkgKiB0aGUgbmV3IGdkdC9pZHQgdGhhdCBoYXMgX19LRVJORUxfQ1Mgd2l0 aCBDUy5MID0gMS4KIAkgKi8KIAlsam1wbAkkX19LRVJORUxfQ1MsICRwYV9zdGFydHVwXzY0CitT WU1fQ09ERV9FTkQoc3RhcnR1cF8zMikKIAogCS5zZWN0aW9uICIudGV4dDY0IiwiYXgiCiAJLmNv ZGU2NAogCS5iYWxpZ24gNAotRU5UUlkoc3RhcnR1cF82NCkKK1NZTV9DT0RFX1NUQVJUKHN0YXJ0 dXBfNjQpCiAJIyBOb3cganVtcCBpbnRvIHRoZSBrZXJuZWwgdXNpbmcgdmlydHVhbCBhZGRyZXNz ZXMKIAlqbXBxCSp0cl9zdGFydCglcmlwKQorU1lNX0NPREVfRU5EKHN0YXJ0dXBfNjQpCiAKIAku c2VjdGlvbiAiLnJvZGF0YSIsImEiCiAJIyBEdXBsaWNhdGUgdGhlIGdsb2JhbCBkZXNjcmlwdG9y IHRhYmxlCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9yZWFsbW9kZS9ybS93YWtldXBfYXNtLlMgYi9h cmNoL3g4Ni9yZWFsbW9kZS9ybS93YWtldXBfYXNtLlMKaW5kZXggMGFmNmIzMGQzYzY4Li43MDc5 OTEzYWRiZDIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3JlYWxtb2RlL3JtL3dha2V1cF9hc20uUwor KysgYi9hcmNoL3g4Ni9yZWFsbW9kZS9ybS93YWtldXBfYXNtLlMKQEAgLTM3LDcgKzM3LDcgQEAg U1lNX0RBVEFfRU5EKHdha2V1cF9oZWFkZXIpCiAJLmNvZGUxNgogCiAJLmJhbGlnbgkxNgotRU5U Ulkod2FrZXVwX3N0YXJ0KQorU1lNX0NPREVfU1RBUlQod2FrZXVwX3N0YXJ0KQogCWNsaQogCWNs ZAogCkBAIC0xMzUsNiArMTM1LDcgQEAgRU5UUlkod2FrZXVwX3N0YXJ0KQogI2Vsc2UKIAlqbXAJ dHJhbXBvbGluZV9zdGFydAogI2VuZGlmCitTWU1fQ09ERV9FTkQod2FrZXVwX3N0YXJ0KQogCiBi b2d1c19yZWFsX21hZ2ljOgogMToKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi94ZW4tYXNtXzY0 LlMgYi9hcmNoL3g4Ni94ZW4veGVuLWFzbV82NC5TCmluZGV4IGU4ZjZmNDgyYmIyMC4uYTY5YTE3 MWY3Y2VhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4veGVuLWFzbV82NC5TCisrKyBiL2FyY2gv eDg2L3hlbi94ZW4tYXNtXzY0LlMKQEAgLTg0LDExICs4NCwxMiBAQCBoeXBlcmNhbGxfaXJldCA9 IGh5cGVyY2FsbF9wYWdlICsgX19IWVBFUlZJU09SX2lyZXQgKiAzMgogICoJcjExCQl9PC0tIHB1 c2hlZCBieSBoeXBlcmNhbGwgcGFnZQogICogcnNwLT5yYXgJCX0KICAqLwotRU5UUlkoeGVuX2ly ZXQpCitTWU1fQ09ERV9TVEFSVCh4ZW5faXJldCkKIAlwdXNocSAkMAogCWptcCBoeXBlcmNhbGxf aXJldAorU1lNX0NPREVfRU5EKHhlbl9pcmV0KQogCi1FTlRSWSh4ZW5fc3lzcmV0NjQpCitTWU1f Q09ERV9TVEFSVCh4ZW5fc3lzcmV0NjQpCiAJLyoKIAkgKiBXZSdyZSBhbHJlYWR5IG9uIHRoZSB1 c2VybW9kZSBzdGFjayBhdCB0aGlzIHBvaW50LCBidXQKIAkgKiBzdGlsbCB3aXRoIHRoZSBrZXJu ZWwgZ3MsIHNvIHdlIGNhbiBlYXNpbHkgc3dpdGNoIGJhY2sKQEAgLTEwNCw2ICsxMDUsNyBAQCBF TlRSWSh4ZW5fc3lzcmV0NjQpCiAKIAlwdXNocSAkVkdDRl9pbl9zeXNjYWxsCiAJam1wIGh5cGVy Y2FsbF9pcmV0CitTWU1fQ09ERV9FTkQoeGVuX3N5c3JldDY0KQogCiAvKgogICogWGVuIGhhbmRs ZXMgc3lzY2FsbCBjYWxsYmFja3MgbXVjaCBsaWtlIG9yZGluYXJ5IGV4Y2VwdGlvbnMsIHdoaWNo Ci0tIAoyLjE2LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs