From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3702976-1526635282-2-1338212042945833446 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-charsets: X-Resolved-to: linux@kroah.com X-Delivered-to: linux@kroah.com X-Mail-from: linux-arch-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=fm2; t= 1526635281; b=UPdJSiqYsC0BwmhzORjsKzSFBt1oM68KR0bakVqjG57LvP/MOh R55qlhdWETrS/4h3dwLbNyjHSe99cXHMv5mirY0HhCHIlsSFy9LOgJ8t5Q9GwuH+ x5RlfVPMsqZzQy3Jm02nST6WHdfrLYf4SZ1SPWji9s9KA1i6H9035/ekV1CMeLNS 4lwWgFn6+y1W/13Km07JKBGsF+5a3CrXsnA3Lgd3qw9SSvPDHooDnUsMIzE/9Fub mLmYHQZlnJcWk78kEYYxXYYBV0ZDZTrHvJ7xoUO3t3EC95UFBa1BLIa/SF2bNQho W0EvwD6nYLgf956NnZWrue3ft8k7zyfL8ZpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :in-reply-to:references:sender:list-id; s=fm2; t=1526635281; bh= /asaFF07zDJOv4+7RFa3q2WXKBUT532YnxRdTestJ3E=; b=Xdz/PmuHTCcSbIsL lM2d9uIxXpes261942SOO4Rj5fCU9MzJKoijFMLVrG0xqzJ6nsDXTaXjHUQBMS0v 7Oq5tND8tlVLA1/Ep7mu23F3otsnSQiLLdqcvcmiHBd7pR/iy6cgWHBkbundFGiI K+9GhFRbFjIvtMUlCi+S8+4di6j+FGcO6PYU3VP8UPHLb9JUp7sy9zsUB4MPt5KR kSYsRBtFbTIl2vQpl5Hjm9qRNrq0pDY8D5IDNbZW5Ks9hYGBQ5eDz6pMliNVPUbm ELJXcW9E77QV2lX0HwOraQz0Xh/Wjjkjy2/1ALTRb5qamjx+uzoyFWyB7CcABNS7 yS84fQ== ARC-Authentication-Results: i=1; mx1.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=suse.cz; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-arch-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=suse.cz header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 Authentication-Results: mx1.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=suse.cz; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-arch-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-cm=none score=0; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=suse.cz header.result=pass header_is_org_domain=yes; x-vs=clean score=-100 state=0 X-ME-VSCategory: clean X-CM-Envelope: MS4wfK8hCtq1wRrXPSid3S5PuZyWhLxF387sC38uuaw/M7geAmtaSijf1PLTJhxb7UmlyKTL60hcERcIjoqyhwAldVy4YJ1T2bCvN6hhkBuhPtk/dPB+/WYk HcycFAFmRcg2in5kpC9X6unSmeESiGO1XOif4FZZ/zEGHuoABhhkQV9is6TNGzGZD3E4ka3NIcgLxrAEsSzXo9JiXd2v6EiBNC43G68qES12b4A7kN9Ft8yH X-CM-Analysis: v=2.3 cv=WaUilXpX c=1 sm=1 tr=0 a=UK1r566ZdBxH71SXbqIOeA==:117 a=UK1r566ZdBxH71SXbqIOeA==:17 a=VUJBJC2UJ8kA:10 a=oGMlB6cnAAAA:8 a=20KFwNOVAAAA:8 a=VwQbUJbxAAAA:8 a=CxaZg77CAAAA:8 a=KKAkSRfTAAAA:8 a=cWRNjhkoAAAA:8 a=CpPLYx7oX9gRnv8IMmQA:9 a=NdAtdrkLVvyUPsUoGJp4:22 a=AjGcO6oz07-iQ99wixmX:22 a=HxQw6O0h_v37Y3_G5fB_:22 a=cvBusfyB2V15izCimMoJ:22 a=sVa6W5Aao32NNC1mekxh:22 X-ME-CMScore: 0 X-ME-CMCategory: none Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752836AbeERJVS (ORCPT ); Fri, 18 May 2018 05:21:18 -0400 Received: from mx2.suse.de ([195.135.220.15]:45405 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752792AbeERJRq (ORCPT ); Fri, 18 May 2018 05:17:46 -0400 From: Jiri Slaby To: mingo@redhat.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Jiri Slaby , "H. Peter Anvin" , Thomas Gleixner , x86@kernel.org, Matt Fleming , Ard Biesheuvel , linux-efi@vger.kernel.org, xen-devel@lists.xenproject.org Subject: [PATCH v6 20/28] x86/asm: make some functions local Date: Fri, 18 May 2018 11:17:13 +0200 Message-Id: <20180518091721.7604-21-jslaby@suse.cz> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180518091721.7604-1-jslaby@suse.cz> References: <20180518091721.7604-1-jslaby@suse.cz> Sender: linux-arch-owner@vger.kernel.org X-Mailing-List: linux-arch@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: There is a couple of assembly functions, which are invoked only locally in the file they are defined. In C, we mark them "static". In assembly, annotate them using SYM_{FUNC,CODE}_START_LOCAL (and switch their ENDPROC to SYM_{FUNC,CODE}_END too). Whether we use FUNC or CODE, depends on whether ENDPROC or END was used for a particular function before. Signed-off-by: Jiri Slaby Cc: "H. Peter Anvin" Cc: Thomas Gleixner Cc: Ingo Molnar Cc: x86@kernel.org Cc: Matt Fleming Cc: Ard Biesheuvel Cc: linux-efi@vger.kernel.org Cc: xen-devel@lists.xenproject.org --- arch/x86/boot/compressed/efi_thunk_64.S | 8 ++++---- arch/x86/entry/entry_64.S | 21 +++++++++++---------- arch/x86/lib/copy_page_64.S | 4 ++-- arch/x86/lib/memcpy_64.S | 12 ++++++------ arch/x86/lib/memset_64.S | 8 ++++---- arch/x86/platform/efi/efi_thunk_64.S | 12 ++++++------ arch/x86/xen/xen-pvh.S | 4 ++-- 7 files changed, 35 insertions(+), 34 deletions(-) diff --git a/arch/x86/boot/compressed/efi_thunk_64.S b/arch/x86/boot/compressed/efi_thunk_64.S index d66000d23921..31312070db22 100644 --- a/arch/x86/boot/compressed/efi_thunk_64.S +++ b/arch/x86/boot/compressed/efi_thunk_64.S @@ -99,12 +99,12 @@ ENTRY(efi64_thunk) ret ENDPROC(efi64_thunk) -ENTRY(efi_exit32) +SYM_FUNC_START_LOCAL(efi_exit32) movq func_rt_ptr(%rip), %rax push %rax mov %rdi, %rax ret -ENDPROC(efi_exit32) +SYM_FUNC_END(efi_exit32) .code32 /* @@ -112,7 +112,7 @@ ENDPROC(efi_exit32) * * The stack should represent the 32-bit calling convention. */ -ENTRY(efi_enter32) +SYM_FUNC_START_LOCAL(efi_enter32) movl $__KERNEL_DS, %eax movl %eax, %ds movl %eax, %es @@ -172,7 +172,7 @@ ENTRY(efi_enter32) btsl $X86_CR0_PG_BIT, %eax movl %eax, %cr0 lret -ENDPROC(efi_enter32) +SYM_FUNC_END(efi_enter32) .data .balign 8 diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index d55228508e80..d2e2de100b16 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -1068,7 +1068,8 @@ idtentry hypervisor_callback xen_do_hypervisor_callback has_error_code=0 * existing activation in its critical region -- if so, we pop the current * activation and restart the handler using the previous one. */ -ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */ +/* do_hypervisor_callback(struct *pt_regs) */ +SYM_CODE_START_LOCAL(xen_do_hypervisor_callback) /* * Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will @@ -1086,7 +1087,7 @@ ENTRY(xen_do_hypervisor_callback) /* do_hypervisor_callback(struct *pt_regs) */ call xen_maybe_preempt_hcall #endif jmp error_exit -END(xen_do_hypervisor_callback) +SYM_CODE_END(xen_do_hypervisor_callback) /* * Hypervisor uses this for application faults while it executes. @@ -1175,7 +1176,7 @@ idtentry machine_check do_mce has_error_code=0 paranoid=1 * Use slow, but surefire "are we in kernel?" check. * Return: ebx=0: need swapgs on exit, ebx=1: otherwise */ -ENTRY(paranoid_entry) +SYM_CODE_START_LOCAL(paranoid_entry) UNWIND_HINT_FUNC cld PUSH_AND_CLEAR_REGS save_ret=1 @@ -1192,7 +1193,7 @@ ENTRY(paranoid_entry) SAVE_AND_SWITCH_TO_KERNEL_CR3 scratch_reg=%rax save_reg=%r14 ret -END(paranoid_entry) +SYM_CODE_END(paranoid_entry) /* * "Paranoid" exit path from exception stack. This is invoked @@ -1206,7 +1207,7 @@ END(paranoid_entry) * * On entry, ebx is "no swapgs" flag (1: don't need swapgs, 0: need it) */ -ENTRY(paranoid_exit) +SYM_CODE_START_LOCAL(paranoid_exit) UNWIND_HINT_REGS DISABLE_INTERRUPTS(CLBR_ANY) TRACE_IRQS_OFF_DEBUG @@ -1221,13 +1222,13 @@ ENTRY(paranoid_exit) RESTORE_CR3 scratch_reg=%rbx save_reg=%r14 .Lparanoid_exit_restore: jmp restore_regs_and_return_to_kernel -END(paranoid_exit) +SYM_CODE_END(paranoid_exit) /* * Save all registers in pt_regs, and switch GS if needed. * Return: EBX=0: came from user mode; EBX=1: otherwise */ -ENTRY(error_entry) +SYM_CODE_START_LOCAL(error_entry) UNWIND_HINT_FUNC cld PUSH_AND_CLEAR_REGS save_ret=1 @@ -1314,7 +1315,7 @@ ENTRY(error_entry) mov %rax, %rsp decl %ebx jmp .Lerror_entry_from_usermode_after_swapgs -END(error_entry) +SYM_CODE_END(error_entry) /* @@ -1322,14 +1323,14 @@ END(error_entry) * 1: already in kernel mode, don't need SWAPGS * 0: user gsbase is loaded, we need SWAPGS and standard preparation for return to usermode */ -ENTRY(error_exit) +SYM_CODE_START_LOCAL(error_exit) UNWIND_HINT_REGS DISABLE_INTERRUPTS(CLBR_ANY) TRACE_IRQS_OFF testl %ebx, %ebx jnz retint_kernel jmp retint_user -END(error_exit) +SYM_CODE_END(error_exit) /* * Runs on exception stack. Xen PV does not go through this path at all, diff --git a/arch/x86/lib/copy_page_64.S b/arch/x86/lib/copy_page_64.S index fd2d09afa097..f505870bd93b 100644 --- a/arch/x86/lib/copy_page_64.S +++ b/arch/x86/lib/copy_page_64.S @@ -21,7 +21,7 @@ ENTRY(copy_page) ENDPROC(copy_page) EXPORT_SYMBOL(copy_page) -ENTRY(copy_page_regs) +SYM_FUNC_START_LOCAL(copy_page_regs) subq $2*8, %rsp movq %rbx, (%rsp) movq %r12, 1*8(%rsp) @@ -86,4 +86,4 @@ ENTRY(copy_page_regs) movq 1*8(%rsp), %r12 addq $2*8, %rsp ret -ENDPROC(copy_page_regs) +SYM_FUNC_END(copy_page_regs) diff --git a/arch/x86/lib/memcpy_64.S b/arch/x86/lib/memcpy_64.S index 4911b1c61aa8..728703c47d58 100644 --- a/arch/x86/lib/memcpy_64.S +++ b/arch/x86/lib/memcpy_64.S @@ -27,7 +27,7 @@ * rax original destination */ SYM_FUNC_START_ALIAS(__memcpy) -ENTRY(memcpy) +SYM_FUNC_START_LOCAL(memcpy) ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \ "jmp memcpy_erms", X86_FEATURE_ERMS @@ -39,7 +39,7 @@ ENTRY(memcpy) movl %edx, %ecx rep movsb ret -ENDPROC(memcpy) +SYM_FUNC_END(memcpy) SYM_FUNC_END_ALIAS(__memcpy) EXPORT_SYMBOL(memcpy) EXPORT_SYMBOL(__memcpy) @@ -48,14 +48,14 @@ EXPORT_SYMBOL(__memcpy) * memcpy_erms() - enhanced fast string memcpy. This is faster and * simpler than memcpy. Use memcpy_erms when possible. */ -ENTRY(memcpy_erms) +SYM_FUNC_START_LOCAL(memcpy_erms) movq %rdi, %rax movq %rdx, %rcx rep movsb ret -ENDPROC(memcpy_erms) +SYM_FUNC_END(memcpy_erms) -ENTRY(memcpy_orig) +SYM_FUNC_START_LOCAL(memcpy_orig) movq %rdi, %rax cmpq $0x20, %rdx @@ -180,7 +180,7 @@ ENTRY(memcpy_orig) .Lend: retq -ENDPROC(memcpy_orig) +SYM_FUNC_END(memcpy_orig) #ifndef CONFIG_UML /* diff --git a/arch/x86/lib/memset_64.S b/arch/x86/lib/memset_64.S index 927ac44d34aa..564abf9ecedb 100644 --- a/arch/x86/lib/memset_64.S +++ b/arch/x86/lib/memset_64.S @@ -59,16 +59,16 @@ EXPORT_SYMBOL(__memset) * * rax original destination */ -ENTRY(memset_erms) +SYM_FUNC_START_LOCAL(memset_erms) movq %rdi,%r9 movb %sil,%al movq %rdx,%rcx rep stosb movq %r9,%rax ret -ENDPROC(memset_erms) +SYM_FUNC_END(memset_erms) -ENTRY(memset_orig) +SYM_FUNC_START_LOCAL(memset_orig) movq %rdi,%r10 /* expand byte value */ @@ -139,4 +139,4 @@ ENTRY(memset_orig) subq %r8,%rdx jmp .Lafter_bad_alignment .Lfinal: -ENDPROC(memset_orig) +SYM_FUNC_END(memset_orig) diff --git a/arch/x86/platform/efi/efi_thunk_64.S b/arch/x86/platform/efi/efi_thunk_64.S index 46c58b08739c..d677a7eb2d0a 100644 --- a/arch/x86/platform/efi/efi_thunk_64.S +++ b/arch/x86/platform/efi/efi_thunk_64.S @@ -67,7 +67,7 @@ ENDPROC(efi64_thunk) * * This function must be invoked with a 1:1 mapped stack. */ -ENTRY(__efi64_thunk) +SYM_FUNC_START_LOCAL(__efi64_thunk) movl %ds, %eax push %rax movl %es, %eax @@ -114,14 +114,14 @@ ENTRY(__efi64_thunk) or %rcx, %rax 1: ret -ENDPROC(__efi64_thunk) +SYM_FUNC_END(__efi64_thunk) -ENTRY(efi_exit32) +SYM_FUNC_START_LOCAL(efi_exit32) movq func_rt_ptr(%rip), %rax push %rax mov %rdi, %rax ret -ENDPROC(efi_exit32) +SYM_FUNC_END(efi_exit32) .code32 /* @@ -129,7 +129,7 @@ ENDPROC(efi_exit32) * * The stack should represent the 32-bit calling convention. */ -ENTRY(efi_enter32) +SYM_FUNC_START_LOCAL(efi_enter32) movl $__KERNEL_DS, %eax movl %eax, %ds movl %eax, %es @@ -145,7 +145,7 @@ ENTRY(efi_enter32) pushl %eax lret -ENDPROC(efi_enter32) +SYM_FUNC_END(efi_enter32) .data .balign 8 diff --git a/arch/x86/xen/xen-pvh.S b/arch/x86/xen/xen-pvh.S index 52b28793a625..a20a55cc5135 100644 --- a/arch/x86/xen/xen-pvh.S +++ b/arch/x86/xen/xen-pvh.S @@ -54,7 +54,7 @@ * charge of setting up it's own stack, GDT and IDT. */ -ENTRY(pvh_start_xen) +SYM_CODE_START_LOCAL(pvh_start_xen) cld lgdt (_pa(gdt)) @@ -133,7 +133,7 @@ ENTRY(pvh_start_xen) ljmp $__BOOT_CS, $_pa(startup_32) #endif -END(pvh_start_xen) +SYM_CODE_END(pvh_start_xen) .section ".init.data","aw" .balign 8 -- 2.16.3 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiri Slaby Subject: [PATCH v6 20/28] x86/asm: make some functions local Date: Fri, 18 May 2018 11:17:13 +0200 Message-ID: <20180518091721.7604-21-jslaby@suse.cz> References: <20180518091721.7604-1-jslaby@suse.cz> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180518091721.7604-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, linux-efi@vger.kernel.org, Ard Biesheuvel , Matt Fleming , x86@kernel.org, linux-kernel@vger.kernel.org, "H. Peter Anvin" , xen-devel@lists.xenproject.org, Thomas Gleixner , Jiri Slaby List-Id: linux-efi@vger.kernel.org VGhlcmUgaXMgYSBjb3VwbGUgb2YgYXNzZW1ibHkgZnVuY3Rpb25zLCB3aGljaCBhcmUgaW52b2tl ZCBvbmx5IGxvY2FsbHkKaW4gdGhlIGZpbGUgdGhleSBhcmUgZGVmaW5lZC4gSW4gQywgd2UgbWFy ayB0aGVtICJzdGF0aWMiLiBJbiBhc3NlbWJseSwKYW5ub3RhdGUgdGhlbSB1c2luZyBTWU1fe0ZV TkMsQ09ERX1fU1RBUlRfTE9DQUwgKGFuZCBzd2l0Y2ggdGhlaXIKRU5EUFJPQyB0byBTWU1fe0ZV TkMsQ09ERX1fRU5EIHRvbykuIFdoZXRoZXIgd2UgdXNlIEZVTkMgb3IgQ09ERSwKZGVwZW5kcyBv biB3aGV0aGVyIEVORFBST0Mgb3IgRU5EIHdhcyB1c2VkIGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rp b24KYmVmb3JlLgoKU2lnbmVkLW9mZi1ieTogSmlyaSBTbGFieSA8anNsYWJ5QHN1c2UuY3o+CkNj OiAiSC4gUGV0ZXIgQW52aW4iIDxocGFAenl0b3IuY29tPgpDYzogVGhvbWFzIEdsZWl4bmVyIDx0 Z2x4QGxpbnV0cm9uaXguZGU+CkNjOiBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KQ2M6 IHg4NkBrZXJuZWwub3JnCkNjOiBNYXR0IEZsZW1pbmcgPG1hdHRAY29kZWJsdWVwcmludC5jby51 az4KQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPgpDYzogbGlu dXgtZWZpQHZnZXIua2VybmVsLm9yZwpDYzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Ci0tLQogYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2VmaV90aHVua182NC5TIHwgIDggKysrKy0t LS0KIGFyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlMgICAgICAgICAgICAgICB8IDIxICsrKysrKysr KysrLS0tLS0tLS0tLQogYXJjaC94ODYvbGliL2NvcHlfcGFnZV82NC5TICAgICAgICAgICAgIHwg IDQgKystLQogYXJjaC94ODYvbGliL21lbWNweV82NC5TICAgICAgICAgICAgICAgIHwgMTIgKysr KysrLS0tLS0tCiBhcmNoL3g4Ni9saWIvbWVtc2V0XzY0LlMgICAgICAgICAgICAgICAgfCAgOCAr KysrLS0tLQogYXJjaC94ODYvcGxhdGZvcm0vZWZpL2VmaV90aHVua182NC5TICAgIHwgMTIgKysr KysrLS0tLS0tCiBhcmNoL3g4Ni94ZW4veGVuLXB2aC5TICAgICAgICAgICAgICAgICAgfCAgNCAr Ky0tCiA3IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9lZmlfdGh1bmtfNjQuUyBiL2Fy Y2gveDg2L2Jvb3QvY29tcHJlc3NlZC9lZmlfdGh1bmtfNjQuUwppbmRleCBkNjYwMDBkMjM5MjEu LjMxMzEyMDcwZGIyMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2VmaV90 aHVua182NC5TCisrKyBiL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9lZmlfdGh1bmtfNjQuUwpA QCAtOTksMTIgKzk5LDEyIEBAIEVOVFJZKGVmaTY0X3RodW5rKQogCXJldAogRU5EUFJPQyhlZmk2 NF90aHVuaykKIAotRU5UUlkoZWZpX2V4aXQzMikKK1NZTV9GVU5DX1NUQVJUX0xPQ0FMKGVmaV9l eGl0MzIpCiAJbW92cQlmdW5jX3J0X3B0ciglcmlwKSwgJXJheAogCXB1c2gJJXJheAogCW1vdgkl cmRpLCAlcmF4CiAJcmV0Ci1FTkRQUk9DKGVmaV9leGl0MzIpCitTWU1fRlVOQ19FTkQoZWZpX2V4 aXQzMikKIAogCS5jb2RlMzIKIC8qCkBAIC0xMTIsNyArMTEyLDcgQEAgRU5EUFJPQyhlZmlfZXhp dDMyKQogICoKICAqIFRoZSBzdGFjayBzaG91bGQgcmVwcmVzZW50IHRoZSAzMi1iaXQgY2FsbGlu ZyBjb252ZW50aW9uLgogICovCi1FTlRSWShlZmlfZW50ZXIzMikKK1NZTV9GVU5DX1NUQVJUX0xP Q0FMKGVmaV9lbnRlcjMyKQogCW1vdmwJJF9fS0VSTkVMX0RTLCAlZWF4CiAJbW92bAklZWF4LCAl ZHMKIAltb3ZsCSVlYXgsICVlcwpAQCAtMTcyLDcgKzE3Miw3IEBAIEVOVFJZKGVmaV9lbnRlcjMy KQogCWJ0c2wJJFg4Nl9DUjBfUEdfQklULCAlZWF4CiAJbW92bAklZWF4LCAlY3IwCiAJbHJldAot RU5EUFJPQyhlZmlfZW50ZXIzMikKK1NZTV9GVU5DX0VORChlZmlfZW50ZXIzMikKIAogCS5kYXRh CiAJLmJhbGlnbgk4CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TIGIvYXJj aC94ODYvZW50cnkvZW50cnlfNjQuUwppbmRleCBkNTUyMjg1MDhlODAuLmQyZTJkZTEwMGIxNiAx MDA2NDQKLS0tIGEvYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUworKysgYi9hcmNoL3g4Ni9lbnRy eS9lbnRyeV82NC5TCkBAIC0xMDY4LDcgKzEwNjgsOCBAQCBpZHRlbnRyeSBoeXBlcnZpc29yX2Nh bGxiYWNrIHhlbl9kb19oeXBlcnZpc29yX2NhbGxiYWNrIGhhc19lcnJvcl9jb2RlPTAKICAqIGV4 aXN0aW5nIGFjdGl2YXRpb24gaW4gaXRzIGNyaXRpY2FsIHJlZ2lvbiAtLSBpZiBzbywgd2UgcG9w IHRoZSBjdXJyZW50CiAgKiBhY3RpdmF0aW9uIGFuZCByZXN0YXJ0IHRoZSBoYW5kbGVyIHVzaW5n IHRoZSBwcmV2aW91cyBvbmUuCiAgKi8KLUVOVFJZKHhlbl9kb19oeXBlcnZpc29yX2NhbGxiYWNr KQkJLyogZG9faHlwZXJ2aXNvcl9jYWxsYmFjayhzdHJ1Y3QgKnB0X3JlZ3MpICovCisvKiBkb19o eXBlcnZpc29yX2NhbGxiYWNrKHN0cnVjdCAqcHRfcmVncykgKi8KK1NZTV9DT0RFX1NUQVJUX0xP Q0FMKHhlbl9kb19oeXBlcnZpc29yX2NhbGxiYWNrKQogCiAvKgogICogU2luY2Ugd2UgZG9uJ3Qg bW9kaWZ5ICVyZGksIGV2dGNobl9kb191cGFsbChzdHJ1Y3QgKnB0X3JlZ3MpIHdpbGwKQEAgLTEw ODYsNyArMTA4Nyw3IEBAIEVOVFJZKHhlbl9kb19oeXBlcnZpc29yX2NhbGxiYWNrKQkJLyogZG9f aHlwZXJ2aXNvcl9jYWxsYmFjayhzdHJ1Y3QgKnB0X3JlZ3MpICovCiAJY2FsbAl4ZW5fbWF5YmVf cHJlZW1wdF9oY2FsbAogI2VuZGlmCiAJam1wCWVycm9yX2V4aXQKLUVORCh4ZW5fZG9faHlwZXJ2 aXNvcl9jYWxsYmFjaykKK1NZTV9DT0RFX0VORCh4ZW5fZG9faHlwZXJ2aXNvcl9jYWxsYmFjaykK IAogLyoKICAqIEh5cGVydmlzb3IgdXNlcyB0aGlzIGZvciBhcHBsaWNhdGlvbiBmYXVsdHMgd2hp bGUgaXQgZXhlY3V0ZXMuCkBAIC0xMTc1LDcgKzExNzYsNyBAQCBpZHRlbnRyeSBtYWNoaW5lX2No ZWNrCQlkb19tY2UJCQloYXNfZXJyb3JfY29kZT0wCXBhcmFub2lkPTEKICAqIFVzZSBzbG93LCBi dXQgc3VyZWZpcmUgImFyZSB3ZSBpbiBrZXJuZWw/IiBjaGVjay4KICAqIFJldHVybjogZWJ4PTA6 IG5lZWQgc3dhcGdzIG9uIGV4aXQsIGVieD0xOiBvdGhlcndpc2UKICAqLwotRU5UUlkocGFyYW5v aWRfZW50cnkpCitTWU1fQ09ERV9TVEFSVF9MT0NBTChwYXJhbm9pZF9lbnRyeSkKIAlVTldJTkRf SElOVF9GVU5DCiAJY2xkCiAJUFVTSF9BTkRfQ0xFQVJfUkVHUyBzYXZlX3JldD0xCkBAIC0xMTky LDcgKzExOTMsNyBAQCBFTlRSWShwYXJhbm9pZF9lbnRyeSkKIAlTQVZFX0FORF9TV0lUQ0hfVE9f S0VSTkVMX0NSMyBzY3JhdGNoX3JlZz0lcmF4IHNhdmVfcmVnPSVyMTQKIAogCXJldAotRU5EKHBh cmFub2lkX2VudHJ5KQorU1lNX0NPREVfRU5EKHBhcmFub2lkX2VudHJ5KQogCiAvKgogICogIlBh cmFub2lkIiBleGl0IHBhdGggZnJvbSBleGNlcHRpb24gc3RhY2suICBUaGlzIGlzIGludm9rZWQK QEAgLTEyMDYsNyArMTIwNyw3IEBAIEVORChwYXJhbm9pZF9lbnRyeSkKICAqCiAgKiBPbiBlbnRy eSwgZWJ4IGlzICJubyBzd2FwZ3MiIGZsYWcgKDE6IGRvbid0IG5lZWQgc3dhcGdzLCAwOiBuZWVk IGl0KQogICovCi1FTlRSWShwYXJhbm9pZF9leGl0KQorU1lNX0NPREVfU1RBUlRfTE9DQUwocGFy YW5vaWRfZXhpdCkKIAlVTldJTkRfSElOVF9SRUdTCiAJRElTQUJMRV9JTlRFUlJVUFRTKENMQlJf QU5ZKQogCVRSQUNFX0lSUVNfT0ZGX0RFQlVHCkBAIC0xMjIxLDEzICsxMjIyLDEzIEBAIEVOVFJZ KHBhcmFub2lkX2V4aXQpCiAJUkVTVE9SRV9DUjMJc2NyYXRjaF9yZWc9JXJieCBzYXZlX3JlZz0l cjE0CiAuTHBhcmFub2lkX2V4aXRfcmVzdG9yZToKIAlqbXAgcmVzdG9yZV9yZWdzX2FuZF9yZXR1 cm5fdG9fa2VybmVsCi1FTkQocGFyYW5vaWRfZXhpdCkKK1NZTV9DT0RFX0VORChwYXJhbm9pZF9l eGl0KQogCiAvKgogICogU2F2ZSBhbGwgcmVnaXN0ZXJzIGluIHB0X3JlZ3MsIGFuZCBzd2l0Y2gg R1MgaWYgbmVlZGVkLgogICogUmV0dXJuOiBFQlg9MDogY2FtZSBmcm9tIHVzZXIgbW9kZTsgRUJY PTE6IG90aGVyd2lzZQogICovCi1FTlRSWShlcnJvcl9lbnRyeSkKK1NZTV9DT0RFX1NUQVJUX0xP Q0FMKGVycm9yX2VudHJ5KQogCVVOV0lORF9ISU5UX0ZVTkMKIAljbGQKIAlQVVNIX0FORF9DTEVB Ul9SRUdTIHNhdmVfcmV0PTEKQEAgLTEzMTQsNyArMTMxNSw3IEBAIEVOVFJZKGVycm9yX2VudHJ5 KQogCW1vdgklcmF4LCAlcnNwCiAJZGVjbAklZWJ4CiAJam1wCS5MZXJyb3JfZW50cnlfZnJvbV91 c2VybW9kZV9hZnRlcl9zd2FwZ3MKLUVORChlcnJvcl9lbnRyeSkKK1NZTV9DT0RFX0VORChlcnJv cl9lbnRyeSkKIAogCiAvKgpAQCAtMTMyMiwxNCArMTMyMywxNCBAQCBFTkQoZXJyb3JfZW50cnkp CiAgKiAgIDE6IGFscmVhZHkgaW4ga2VybmVsIG1vZGUsIGRvbid0IG5lZWQgU1dBUEdTCiAgKiAg IDA6IHVzZXIgZ3NiYXNlIGlzIGxvYWRlZCwgd2UgbmVlZCBTV0FQR1MgYW5kIHN0YW5kYXJkIHBy ZXBhcmF0aW9uIGZvciByZXR1cm4gdG8gdXNlcm1vZGUKICAqLwotRU5UUlkoZXJyb3JfZXhpdCkK K1NZTV9DT0RFX1NUQVJUX0xPQ0FMKGVycm9yX2V4aXQpCiAJVU5XSU5EX0hJTlRfUkVHUwogCURJ U0FCTEVfSU5URVJSVVBUUyhDTEJSX0FOWSkKIAlUUkFDRV9JUlFTX09GRgogCXRlc3RsCSVlYngs ICVlYngKIAlqbnoJcmV0aW50X2tlcm5lbAogCWptcAlyZXRpbnRfdXNlcgotRU5EKGVycm9yX2V4 aXQpCitTWU1fQ09ERV9FTkQoZXJyb3JfZXhpdCkKIAogLyoKICAqIFJ1bnMgb24gZXhjZXB0aW9u IHN0YWNrLiAgWGVuIFBWIGRvZXMgbm90IGdvIHRocm91Z2ggdGhpcyBwYXRoIGF0IGFsbCwKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2xpYi9jb3B5X3BhZ2VfNjQuUyBiL2FyY2gveDg2L2xpYi9jb3B5 X3BhZ2VfNjQuUwppbmRleCBmZDJkMDlhZmEwOTcuLmY1MDU4NzBiZDkzYiAxMDA2NDQKLS0tIGEv YXJjaC94ODYvbGliL2NvcHlfcGFnZV82NC5TCisrKyBiL2FyY2gveDg2L2xpYi9jb3B5X3BhZ2Vf NjQuUwpAQCAtMjEsNyArMjEsNyBAQCBFTlRSWShjb3B5X3BhZ2UpCiBFTkRQUk9DKGNvcHlfcGFn ZSkKIEVYUE9SVF9TWU1CT0woY29weV9wYWdlKQogCi1FTlRSWShjb3B5X3BhZ2VfcmVncykKK1NZ TV9GVU5DX1NUQVJUX0xPQ0FMKGNvcHlfcGFnZV9yZWdzKQogCXN1YnEJJDIqOCwJJXJzcAogCW1v dnEJJXJieCwJKCVyc3ApCiAJbW92cQklcjEyLAkxKjgoJXJzcCkKQEAgLTg2LDQgKzg2LDQgQEAg RU5UUlkoY29weV9wYWdlX3JlZ3MpCiAJbW92cQkxKjgoJXJzcCksICVyMTIKIAlhZGRxCSQyKjgs ICVyc3AKIAlyZXQKLUVORFBST0MoY29weV9wYWdlX3JlZ3MpCitTWU1fRlVOQ19FTkQoY29weV9w YWdlX3JlZ3MpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9saWIvbWVtY3B5XzY0LlMgYi9hcmNoL3g4 Ni9saWIvbWVtY3B5XzY0LlMKaW5kZXggNDkxMWIxYzYxYWE4Li43Mjg3MDNjNDdkNTggMTAwNjQ0 Ci0tLSBhL2FyY2gveDg2L2xpYi9tZW1jcHlfNjQuUworKysgYi9hcmNoL3g4Ni9saWIvbWVtY3B5 XzY0LlMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIHJheCBvcmlnaW5hbCBkZXN0aW5hdGlvbgogICov CiBTWU1fRlVOQ19TVEFSVF9BTElBUyhfX21lbWNweSkKLUVOVFJZKG1lbWNweSkKK1NZTV9GVU5D X1NUQVJUX0xPQ0FMKG1lbWNweSkKIAlBTFRFUk5BVElWRV8yICJqbXAgbWVtY3B5X29yaWciLCAi IiwgWDg2X0ZFQVRVUkVfUkVQX0dPT0QsIFwKIAkJICAgICAgImptcCBtZW1jcHlfZXJtcyIsIFg4 Nl9GRUFUVVJFX0VSTVMKIApAQCAtMzksNyArMzksNyBAQCBFTlRSWShtZW1jcHkpCiAJbW92bCAl ZWR4LCAlZWN4CiAJcmVwIG1vdnNiCiAJcmV0Ci1FTkRQUk9DKG1lbWNweSkKK1NZTV9GVU5DX0VO RChtZW1jcHkpCiBTWU1fRlVOQ19FTkRfQUxJQVMoX19tZW1jcHkpCiBFWFBPUlRfU1lNQk9MKG1l bWNweSkKIEVYUE9SVF9TWU1CT0woX19tZW1jcHkpCkBAIC00OCwxNCArNDgsMTQgQEAgRVhQT1JU X1NZTUJPTChfX21lbWNweSkKICAqIG1lbWNweV9lcm1zKCkgLSBlbmhhbmNlZCBmYXN0IHN0cmlu ZyBtZW1jcHkuIFRoaXMgaXMgZmFzdGVyIGFuZAogICogc2ltcGxlciB0aGFuIG1lbWNweS4gVXNl IG1lbWNweV9lcm1zIHdoZW4gcG9zc2libGUuCiAgKi8KLUVOVFJZKG1lbWNweV9lcm1zKQorU1lN X0ZVTkNfU1RBUlRfTE9DQUwobWVtY3B5X2VybXMpCiAJbW92cSAlcmRpLCAlcmF4CiAJbW92cSAl cmR4LCAlcmN4CiAJcmVwIG1vdnNiCiAJcmV0Ci1FTkRQUk9DKG1lbWNweV9lcm1zKQorU1lNX0ZV TkNfRU5EKG1lbWNweV9lcm1zKQogCi1FTlRSWShtZW1jcHlfb3JpZykKK1NZTV9GVU5DX1NUQVJU X0xPQ0FMKG1lbWNweV9vcmlnKQogCW1vdnEgJXJkaSwgJXJheAogCiAJY21wcSAkMHgyMCwgJXJk eApAQCAtMTgwLDcgKzE4MCw3IEBAIEVOVFJZKG1lbWNweV9vcmlnKQogCiAuTGVuZDoKIAlyZXRx Ci1FTkRQUk9DKG1lbWNweV9vcmlnKQorU1lNX0ZVTkNfRU5EKG1lbWNweV9vcmlnKQogCiAjaWZu ZGVmIENPTkZJR19VTUwKIC8qCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9saWIvbWVtc2V0XzY0LlMg Yi9hcmNoL3g4Ni9saWIvbWVtc2V0XzY0LlMKaW5kZXggOTI3YWM0NGQzNGFhLi41NjRhYmY5ZWNl ZGIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2xpYi9tZW1zZXRfNjQuUworKysgYi9hcmNoL3g4Ni9s aWIvbWVtc2V0XzY0LlMKQEAgLTU5LDE2ICs1OSwxNiBAQCBFWFBPUlRfU1lNQk9MKF9fbWVtc2V0 KQogICoKICAqIHJheCAgIG9yaWdpbmFsIGRlc3RpbmF0aW9uCiAgKi8KLUVOVFJZKG1lbXNldF9l cm1zKQorU1lNX0ZVTkNfU1RBUlRfTE9DQUwobWVtc2V0X2VybXMpCiAJbW92cSAlcmRpLCVyOQog CW1vdmIgJXNpbCwlYWwKIAltb3ZxICVyZHgsJXJjeAogCXJlcCBzdG9zYgogCW1vdnEgJXI5LCVy YXgKIAlyZXQKLUVORFBST0MobWVtc2V0X2VybXMpCitTWU1fRlVOQ19FTkQobWVtc2V0X2VybXMp CiAKLUVOVFJZKG1lbXNldF9vcmlnKQorU1lNX0ZVTkNfU1RBUlRfTE9DQUwobWVtc2V0X29yaWcp CiAJbW92cSAlcmRpLCVyMTAKIAogCS8qIGV4cGFuZCBieXRlIHZhbHVlICAqLwpAQCAtMTM5LDQg KzEzOSw0IEBAIEVOVFJZKG1lbXNldF9vcmlnKQogCXN1YnEgJXI4LCVyZHgKIAlqbXAgLkxhZnRl cl9iYWRfYWxpZ25tZW50CiAuTGZpbmFsOgotRU5EUFJPQyhtZW1zZXRfb3JpZykKK1NZTV9GVU5D X0VORChtZW1zZXRfb3JpZykKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlf dGh1bmtfNjQuUyBiL2FyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfdGh1bmtfNjQuUwppbmRleCA0 NmM1OGIwODczOWMuLmQ2NzdhN2ViMmQwYSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvcGxhdGZvcm0v ZWZpL2VmaV90aHVua182NC5TCisrKyBiL2FyY2gveDg2L3BsYXRmb3JtL2VmaS9lZmlfdGh1bmtf NjQuUwpAQCAtNjcsNyArNjcsNyBAQCBFTkRQUk9DKGVmaTY0X3RodW5rKQogICoKICAqIFRoaXMg ZnVuY3Rpb24gbXVzdCBiZSBpbnZva2VkIHdpdGggYSAxOjEgbWFwcGVkIHN0YWNrLgogICovCi1F TlRSWShfX2VmaTY0X3RodW5rKQorU1lNX0ZVTkNfU1RBUlRfTE9DQUwoX19lZmk2NF90aHVuaykK IAltb3ZsCSVkcywgJWVheAogCXB1c2gJJXJheAogCW1vdmwJJWVzLCAlZWF4CkBAIC0xMTQsMTQg KzExNCwxNCBAQCBFTlRSWShfX2VmaTY0X3RodW5rKQogCW9yCSVyY3gsICVyYXgKIDE6CiAJcmV0 Ci1FTkRQUk9DKF9fZWZpNjRfdGh1bmspCitTWU1fRlVOQ19FTkQoX19lZmk2NF90aHVuaykKIAot RU5UUlkoZWZpX2V4aXQzMikKK1NZTV9GVU5DX1NUQVJUX0xPQ0FMKGVmaV9leGl0MzIpCiAJbW92 cQlmdW5jX3J0X3B0ciglcmlwKSwgJXJheAogCXB1c2gJJXJheAogCW1vdgklcmRpLCAlcmF4CiAJ cmV0Ci1FTkRQUk9DKGVmaV9leGl0MzIpCitTWU1fRlVOQ19FTkQoZWZpX2V4aXQzMikKIAogCS5j b2RlMzIKIC8qCkBAIC0xMjksNyArMTI5LDcgQEAgRU5EUFJPQyhlZmlfZXhpdDMyKQogICoKICAq IFRoZSBzdGFjayBzaG91bGQgcmVwcmVzZW50IHRoZSAzMi1iaXQgY2FsbGluZyBjb252ZW50aW9u LgogICovCi1FTlRSWShlZmlfZW50ZXIzMikKK1NZTV9GVU5DX1NUQVJUX0xPQ0FMKGVmaV9lbnRl cjMyKQogCW1vdmwJJF9fS0VSTkVMX0RTLCAlZWF4CiAJbW92bAklZWF4LCAlZHMKIAltb3ZsCSVl YXgsICVlcwpAQCAtMTQ1LDcgKzE0NSw3IEBAIEVOVFJZKGVmaV9lbnRlcjMyKQogCXB1c2hsCSVl YXgKIAogCWxyZXQKLUVORFBST0MoZWZpX2VudGVyMzIpCitTWU1fRlVOQ19FTkQoZWZpX2VudGVy MzIpCiAKIAkuZGF0YQogCS5iYWxpZ24JOApkaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL3hlbi1w dmguUyBiL2FyY2gveDg2L3hlbi94ZW4tcHZoLlMKaW5kZXggNTJiMjg3OTNhNjI1Li5hMjBhNTVj YzUxMzUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi94ZW4tcHZoLlMKKysrIGIvYXJjaC94ODYv eGVuL3hlbi1wdmguUwpAQCAtNTQsNyArNTQsNyBAQAogICogY2hhcmdlIG9mIHNldHRpbmcgdXAg aXQncyBvd24gc3RhY2ssIEdEVCBhbmQgSURULgogICovCiAKLUVOVFJZKHB2aF9zdGFydF94ZW4p CitTWU1fQ09ERV9TVEFSVF9MT0NBTChwdmhfc3RhcnRfeGVuKQogCWNsZAogCiAJbGdkdCAoX3Bh KGdkdCkpCkBAIC0xMzMsNyArMTMzLDcgQEAgRU5UUlkocHZoX3N0YXJ0X3hlbikKIAogCWxqbXAg JF9fQk9PVF9DUywgJF9wYShzdGFydHVwXzMyKQogI2VuZGlmCi1FTkQocHZoX3N0YXJ0X3hlbikK K1NZTV9DT0RFX0VORChwdmhfc3RhcnRfeGVuKQogCiAJLnNlY3Rpb24gIi5pbml0LmRhdGEiLCJh dyIKIAkuYmFsaWduIDgKLS0gCjIuMTYuMwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=