From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Date: Wed, 4 Oct 2017 14:19:37 -0700 Message-Id: <20171004212003.28296-2-thgarnie@google.com> In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Subject: [kernel-hardening] [RFC v3 01/27] x86/crypto: Adapt assembly for PIE support To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Boris Ostrovsky , Alexey Dobriyan , Andrew Morton , Paul Gortmaker , Chris Metcalf , "Paul E . McKenney" , Nicolas Pitre , Borislav Petkov , "Luis R . Rodriguez" , Greg Kroah-Hartman , Christopher Li , Steven Rostedt , Jason Baron , Dou Liyang , "Rafael J . Wysocki" , Mika Westerberg , Lukas Wunner , Masahiro Yamada , Alexei Starovoitov , Daniel Borkmann , Markus Trippelsdorf , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Rik van Riel , David Howells , Ard Biesheuvel , Waiman Long , Kyle Huey , Andrey Ryabinin , Jonathan Corbet , Matthew Wilcox , Michal Hocko , Peter Foley , Paul Bolle , Jiri Kosina , Rob Landley , "H . J . Lu" , Baoquan He , =?UTF-8?q?Jan=20H=20=2E=20Sch=C3=B6nherr?= , Daniel Micay Cc: x86@kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, kernel-hardening@lists.openwall.com List-ID: Change the assembly code to use only relative references of symbols for the kernel to be PIE compatible. Position Independent Executable (PIE) support will allow to extended the KASLR randomization range below the -2G memory limit. Signed-off-by: Thomas Garnier --- arch/x86/crypto/aes-x86_64-asm_64.S | 45 ++++++++----- arch/x86/crypto/aesni-intel_asm.S | 14 ++-- arch/x86/crypto/aesni-intel_avx-x86_64.S | 6 +- arch/x86/crypto/camellia-aesni-avx-asm_64.S | 42 ++++++------ arch/x86/crypto/camellia-aesni-avx2-asm_64.S | 44 ++++++------- arch/x86/crypto/camellia-x86_64-asm_64.S | 8 ++- arch/x86/crypto/cast5-avx-x86_64-asm_64.S | 50 ++++++++------- arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 44 +++++++------ arch/x86/crypto/des3_ede-asm_64.S | 96 ++++++++++++++++++---------- arch/x86/crypto/ghash-clmulni-intel_asm.S | 4 +- arch/x86/crypto/glue_helper-asm-avx.S | 4 +- arch/x86/crypto/glue_helper-asm-avx2.S | 6 +- 12 files changed, 211 insertions(+), 152 deletions(-) diff --git a/arch/x86/crypto/aes-x86_64-asm_64.S b/arch/x86/crypto/aes-x86_64-asm_64.S index 8739cf7795de..86fa068e5e81 100644 --- a/arch/x86/crypto/aes-x86_64-asm_64.S +++ b/arch/x86/crypto/aes-x86_64-asm_64.S @@ -48,8 +48,12 @@ #define R10 %r10 #define R11 %r11 +/* Hold global for PIE suport */ +#define RBASE %r12 + #define prologue(FUNC,KEY,B128,B192,r1,r2,r5,r6,r7,r8,r9,r10,r11) \ ENTRY(FUNC); \ + pushq RBASE; \ movq r1,r2; \ leaq KEY+48(r8),r9; \ movq r10,r11; \ @@ -74,54 +78,63 @@ movl r6 ## E,4(r9); \ movl r7 ## E,8(r9); \ movl r8 ## E,12(r9); \ + popq RBASE; \ ret; \ ENDPROC(FUNC); +#define round_mov(tab_off, reg_i, reg_o) \ + leaq tab_off(%rip), RBASE; \ + movl (RBASE,reg_i,4), reg_o; + +#define round_xor(tab_off, reg_i, reg_o) \ + leaq tab_off(%rip), RBASE; \ + xorl (RBASE,reg_i,4), reg_o; + #define round(TAB,OFFSET,r1,r2,r3,r4,r5,r6,r7,r8,ra,rb,rc,rd) \ movzbl r2 ## H,r5 ## E; \ movzbl r2 ## L,r6 ## E; \ - movl TAB+1024(,r5,4),r5 ## E;\ + round_mov(TAB+1024, r5, r5 ## E)\ movw r4 ## X,r2 ## X; \ - movl TAB(,r6,4),r6 ## E; \ + round_mov(TAB, r6, r6 ## E) \ roll $16,r2 ## E; \ shrl $16,r4 ## E; \ movzbl r4 ## L,r7 ## E; \ movzbl r4 ## H,r4 ## E; \ xorl OFFSET(r8),ra ## E; \ xorl OFFSET+4(r8),rb ## E; \ - xorl TAB+3072(,r4,4),r5 ## E;\ - xorl TAB+2048(,r7,4),r6 ## E;\ + round_xor(TAB+3072, r4, r5 ## E)\ + round_xor(TAB+2048, r7, r6 ## E)\ movzbl r1 ## L,r7 ## E; \ movzbl r1 ## H,r4 ## E; \ - movl TAB+1024(,r4,4),r4 ## E;\ + round_mov(TAB+1024, r4, r4 ## E)\ movw r3 ## X,r1 ## X; \ roll $16,r1 ## E; \ shrl $16,r3 ## E; \ - xorl TAB(,r7,4),r5 ## E; \ + round_xor(TAB, r7, r5 ## E) \ movzbl r3 ## L,r7 ## E; \ movzbl r3 ## H,r3 ## E; \ - xorl TAB+3072(,r3,4),r4 ## E;\ - xorl TAB+2048(,r7,4),r5 ## E;\ + round_xor(TAB+3072, r3, r4 ## E)\ + round_xor(TAB+2048, r7, r5 ## E)\ movzbl r1 ## L,r7 ## E; \ movzbl r1 ## H,r3 ## E; \ shrl $16,r1 ## E; \ - xorl TAB+3072(,r3,4),r6 ## E;\ - movl TAB+2048(,r7,4),r3 ## E;\ + round_xor(TAB+3072, r3, r6 ## E)\ + round_mov(TAB+2048, r7, r3 ## E)\ movzbl r1 ## L,r7 ## E; \ movzbl r1 ## H,r1 ## E; \ - xorl TAB+1024(,r1,4),r6 ## E;\ - xorl TAB(,r7,4),r3 ## E; \ + round_xor(TAB+1024, r1, r6 ## E)\ + round_xor(TAB, r7, r3 ## E) \ movzbl r2 ## H,r1 ## E; \ movzbl r2 ## L,r7 ## E; \ shrl $16,r2 ## E; \ - xorl TAB+3072(,r1,4),r3 ## E;\ - xorl TAB+2048(,r7,4),r4 ## E;\ + round_xor(TAB+3072, r1, r3 ## E)\ + round_xor(TAB+2048, r7, r4 ## E)\ movzbl r2 ## H,r1 ## E; \ movzbl r2 ## L,r2 ## E; \ xorl OFFSET+8(r8),rc ## E; \ xorl OFFSET+12(r8),rd ## E; \ - xorl TAB+1024(,r1,4),r3 ## E;\ - xorl TAB(,r2,4),r4 ## E; + round_xor(TAB+1024, r1, r3 ## E)\ + round_xor(TAB, r2, r4 ## E) #define move_regs(r1,r2,r3,r4) \ movl r3 ## E,r1 ## E; \ diff --git a/arch/x86/crypto/aesni-intel_asm.S b/arch/x86/crypto/aesni-intel_asm.S index 16627fec80b2..5f73201dff32 100644 --- a/arch/x86/crypto/aesni-intel_asm.S +++ b/arch/x86/crypto/aesni-intel_asm.S @@ -325,7 +325,8 @@ _get_AAD_rest0\num_initial_blocks\operation: vpshufb and an array of shuffle masks */ movq %r12, %r11 salq $4, %r11 - movdqu aad_shift_arr(%r11), \TMP1 + leaq aad_shift_arr(%rip), %rax + movdqu (%rax,%r11,), \TMP1 PSHUFB_XMM \TMP1, %xmm\i _get_AAD_rest_final\num_initial_blocks\operation: PSHUFB_XMM %xmm14, %xmm\i # byte-reflect the AAD data @@ -584,7 +585,8 @@ _get_AAD_rest0\num_initial_blocks\operation: vpshufb and an array of shuffle masks */ movq %r12, %r11 salq $4, %r11 - movdqu aad_shift_arr(%r11), \TMP1 + leaq aad_shift_arr(%rip), %rax + movdqu (%rax,%r11,), \TMP1 PSHUFB_XMM \TMP1, %xmm\i _get_AAD_rest_final\num_initial_blocks\operation: PSHUFB_XMM %xmm14, %xmm\i # byte-reflect the AAD data @@ -2722,7 +2724,7 @@ ENDPROC(aesni_cbc_dec) */ .align 4 _aesni_inc_init: - movaps .Lbswap_mask, BSWAP_MASK + movaps .Lbswap_mask(%rip), BSWAP_MASK movaps IV, CTR PSHUFB_XMM BSWAP_MASK CTR mov $1, TCTR_LOW @@ -2850,12 +2852,12 @@ ENTRY(aesni_xts_crypt8) cmpb $0, %cl movl $0, %ecx movl $240, %r10d - leaq _aesni_enc4, %r11 - leaq _aesni_dec4, %rax + leaq _aesni_enc4(%rip), %r11 + leaq _aesni_dec4(%rip), %rax cmovel %r10d, %ecx cmoveq %rax, %r11 - movdqa .Lgf128mul_x_ble_mask, GF128MUL_MASK + movdqa .Lgf128mul_x_ble_mask(%rip), GF128MUL_MASK movups (IVP), IV mov 480(KEYP), KLEN diff --git a/arch/x86/crypto/aesni-intel_avx-x86_64.S b/arch/x86/crypto/aesni-intel_avx-x86_64.S index faecb1518bf8..488605b19fe8 100644 --- a/arch/x86/crypto/aesni-intel_avx-x86_64.S +++ b/arch/x86/crypto/aesni-intel_avx-x86_64.S @@ -454,7 +454,8 @@ _get_AAD_rest0\@: vpshufb and an array of shuffle masks */ movq %r12, %r11 salq $4, %r11 - movdqu aad_shift_arr(%r11), \T1 + leaq aad_shift_arr(%rip), %rax + movdqu (%rax,%r11,), \T1 vpshufb \T1, reg_i, reg_i _get_AAD_rest_final\@: vpshufb SHUF_MASK(%rip), reg_i, reg_i @@ -1761,7 +1762,8 @@ _get_AAD_rest0\@: vpshufb and an array of shuffle masks */ movq %r12, %r11 salq $4, %r11 - movdqu aad_shift_arr(%r11), \T1 + leaq aad_shift_arr(%rip), %rax + movdqu (%rax,%r11,), \T1 vpshufb \T1, reg_i, reg_i _get_AAD_rest_final\@: vpshufb SHUF_MASK(%rip), reg_i, reg_i diff --git a/arch/x86/crypto/camellia-aesni-avx-asm_64.S b/arch/x86/crypto/camellia-aesni-avx-asm_64.S index f7c495e2863c..46feaea52632 100644 --- a/arch/x86/crypto/camellia-aesni-avx-asm_64.S +++ b/arch/x86/crypto/camellia-aesni-avx-asm_64.S @@ -52,10 +52,10 @@ /* \ * S-function with AES subbytes \ */ \ - vmovdqa .Linv_shift_row, t4; \ - vbroadcastss .L0f0f0f0f, t7; \ - vmovdqa .Lpre_tf_lo_s1, t0; \ - vmovdqa .Lpre_tf_hi_s1, t1; \ + vmovdqa .Linv_shift_row(%rip), t4; \ + vbroadcastss .L0f0f0f0f(%rip), t7; \ + vmovdqa .Lpre_tf_lo_s1(%rip), t0; \ + vmovdqa .Lpre_tf_hi_s1(%rip), t1; \ \ /* AES inverse shift rows */ \ vpshufb t4, x0, x0; \ @@ -68,8 +68,8 @@ vpshufb t4, x6, x6; \ \ /* prefilter sboxes 1, 2 and 3 */ \ - vmovdqa .Lpre_tf_lo_s4, t2; \ - vmovdqa .Lpre_tf_hi_s4, t3; \ + vmovdqa .Lpre_tf_lo_s4(%rip), t2; \ + vmovdqa .Lpre_tf_hi_s4(%rip), t3; \ filter_8bit(x0, t0, t1, t7, t6); \ filter_8bit(x7, t0, t1, t7, t6); \ filter_8bit(x1, t0, t1, t7, t6); \ @@ -83,8 +83,8 @@ filter_8bit(x6, t2, t3, t7, t6); \ \ /* AES subbytes + AES shift rows */ \ - vmovdqa .Lpost_tf_lo_s1, t0; \ - vmovdqa .Lpost_tf_hi_s1, t1; \ + vmovdqa .Lpost_tf_lo_s1(%rip), t0; \ + vmovdqa .Lpost_tf_hi_s1(%rip), t1; \ vaesenclast t4, x0, x0; \ vaesenclast t4, x7, x7; \ vaesenclast t4, x1, x1; \ @@ -95,16 +95,16 @@ vaesenclast t4, x6, x6; \ \ /* postfilter sboxes 1 and 4 */ \ - vmovdqa .Lpost_tf_lo_s3, t2; \ - vmovdqa .Lpost_tf_hi_s3, t3; \ + vmovdqa .Lpost_tf_lo_s3(%rip), t2; \ + vmovdqa .Lpost_tf_hi_s3(%rip), t3; \ filter_8bit(x0, t0, t1, t7, t6); \ filter_8bit(x7, t0, t1, t7, t6); \ filter_8bit(x3, t0, t1, t7, t6); \ filter_8bit(x6, t0, t1, t7, t6); \ \ /* postfilter sbox 3 */ \ - vmovdqa .Lpost_tf_lo_s2, t4; \ - vmovdqa .Lpost_tf_hi_s2, t5; \ + vmovdqa .Lpost_tf_lo_s2(%rip), t4; \ + vmovdqa .Lpost_tf_hi_s2(%rip), t5; \ filter_8bit(x2, t2, t3, t7, t6); \ filter_8bit(x5, t2, t3, t7, t6); \ \ @@ -443,7 +443,7 @@ ENDPROC(roundsm16_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab) transpose_4x4(c0, c1, c2, c3, a0, a1); \ transpose_4x4(d0, d1, d2, d3, a0, a1); \ \ - vmovdqu .Lshufb_16x16b, a0; \ + vmovdqu .Lshufb_16x16b(%rip), a0; \ vmovdqu st1, a1; \ vpshufb a0, a2, a2; \ vpshufb a0, a3, a3; \ @@ -482,7 +482,7 @@ ENDPROC(roundsm16_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab) #define inpack16_pre(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ y6, y7, rio, key) \ vmovq key, x0; \ - vpshufb .Lpack_bswap, x0, x0; \ + vpshufb .Lpack_bswap(%rip), x0, x0; \ \ vpxor 0 * 16(rio), x0, y7; \ vpxor 1 * 16(rio), x0, y6; \ @@ -533,7 +533,7 @@ ENDPROC(roundsm16_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab) vmovdqu x0, stack_tmp0; \ \ vmovq key, x0; \ - vpshufb .Lpack_bswap, x0, x0; \ + vpshufb .Lpack_bswap(%rip), x0, x0; \ \ vpxor x0, y7, y7; \ vpxor x0, y6, y6; \ @@ -1016,7 +1016,7 @@ ENTRY(camellia_ctr_16way) subq $(16 * 16), %rsp; movq %rsp, %rax; - vmovdqa .Lbswap128_mask, %xmm14; + vmovdqa .Lbswap128_mask(%rip), %xmm14; /* load IV and byteswap */ vmovdqu (%rcx), %xmm0; @@ -1065,7 +1065,7 @@ ENTRY(camellia_ctr_16way) /* inpack16_pre: */ vmovq (key_table)(CTX), %xmm15; - vpshufb .Lpack_bswap, %xmm15, %xmm15; + vpshufb .Lpack_bswap(%rip), %xmm15, %xmm15; vpxor %xmm0, %xmm15, %xmm0; vpxor %xmm1, %xmm15, %xmm1; vpxor %xmm2, %xmm15, %xmm2; @@ -1133,7 +1133,7 @@ camellia_xts_crypt_16way: subq $(16 * 16), %rsp; movq %rsp, %rax; - vmovdqa .Lxts_gf128mul_and_shl1_mask, %xmm14; + vmovdqa .Lxts_gf128mul_and_shl1_mask(%rip), %xmm14; /* load IV */ vmovdqu (%rcx), %xmm0; @@ -1209,7 +1209,7 @@ camellia_xts_crypt_16way: /* inpack16_pre: */ vmovq (key_table)(CTX, %r8, 8), %xmm15; - vpshufb .Lpack_bswap, %xmm15, %xmm15; + vpshufb .Lpack_bswap(%rip), %xmm15, %xmm15; vpxor 0 * 16(%rax), %xmm15, %xmm0; vpxor %xmm1, %xmm15, %xmm1; vpxor %xmm2, %xmm15, %xmm2; @@ -1264,7 +1264,7 @@ ENTRY(camellia_xts_enc_16way) */ xorl %r8d, %r8d; /* input whitening key, 0 for enc */ - leaq __camellia_enc_blk16, %r9; + leaq __camellia_enc_blk16(%rip), %r9; jmp camellia_xts_crypt_16way; ENDPROC(camellia_xts_enc_16way) @@ -1282,7 +1282,7 @@ ENTRY(camellia_xts_dec_16way) movl $24, %eax; cmovel %eax, %r8d; /* input whitening key, last for dec */ - leaq __camellia_dec_blk16, %r9; + leaq __camellia_dec_blk16(%rip), %r9; jmp camellia_xts_crypt_16way; ENDPROC(camellia_xts_dec_16way) diff --git a/arch/x86/crypto/camellia-aesni-avx2-asm_64.S b/arch/x86/crypto/camellia-aesni-avx2-asm_64.S index eee5b3982cfd..93da327fec83 100644 --- a/arch/x86/crypto/camellia-aesni-avx2-asm_64.S +++ b/arch/x86/crypto/camellia-aesni-avx2-asm_64.S @@ -69,12 +69,12 @@ /* \ * S-function with AES subbytes \ */ \ - vbroadcasti128 .Linv_shift_row, t4; \ - vpbroadcastd .L0f0f0f0f, t7; \ - vbroadcasti128 .Lpre_tf_lo_s1, t5; \ - vbroadcasti128 .Lpre_tf_hi_s1, t6; \ - vbroadcasti128 .Lpre_tf_lo_s4, t2; \ - vbroadcasti128 .Lpre_tf_hi_s4, t3; \ + vbroadcasti128 .Linv_shift_row(%rip), t4; \ + vpbroadcastd .L0f0f0f0f(%rip), t7; \ + vbroadcasti128 .Lpre_tf_lo_s1(%rip), t5; \ + vbroadcasti128 .Lpre_tf_hi_s1(%rip), t6; \ + vbroadcasti128 .Lpre_tf_lo_s4(%rip), t2; \ + vbroadcasti128 .Lpre_tf_hi_s4(%rip), t3; \ \ /* AES inverse shift rows */ \ vpshufb t4, x0, x0; \ @@ -120,8 +120,8 @@ vinserti128 $1, t2##_x, x6, x6; \ vextracti128 $1, x1, t3##_x; \ vextracti128 $1, x4, t2##_x; \ - vbroadcasti128 .Lpost_tf_lo_s1, t0; \ - vbroadcasti128 .Lpost_tf_hi_s1, t1; \ + vbroadcasti128 .Lpost_tf_lo_s1(%rip), t0; \ + vbroadcasti128 .Lpost_tf_hi_s1(%rip), t1; \ vaesenclast t4##_x, x2##_x, x2##_x; \ vaesenclast t4##_x, t6##_x, t6##_x; \ vinserti128 $1, t6##_x, x2, x2; \ @@ -136,16 +136,16 @@ vinserti128 $1, t2##_x, x4, x4; \ \ /* postfilter sboxes 1 and 4 */ \ - vbroadcasti128 .Lpost_tf_lo_s3, t2; \ - vbroadcasti128 .Lpost_tf_hi_s3, t3; \ + vbroadcasti128 .Lpost_tf_lo_s3(%rip), t2; \ + vbroadcasti128 .Lpost_tf_hi_s3(%rip), t3; \ filter_8bit(x0, t0, t1, t7, t6); \ filter_8bit(x7, t0, t1, t7, t6); \ filter_8bit(x3, t0, t1, t7, t6); \ filter_8bit(x6, t0, t1, t7, t6); \ \ /* postfilter sbox 3 */ \ - vbroadcasti128 .Lpost_tf_lo_s2, t4; \ - vbroadcasti128 .Lpost_tf_hi_s2, t5; \ + vbroadcasti128 .Lpost_tf_lo_s2(%rip), t4; \ + vbroadcasti128 .Lpost_tf_hi_s2(%rip), t5; \ filter_8bit(x2, t2, t3, t7, t6); \ filter_8bit(x5, t2, t3, t7, t6); \ \ @@ -482,7 +482,7 @@ ENDPROC(roundsm32_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab) transpose_4x4(c0, c1, c2, c3, a0, a1); \ transpose_4x4(d0, d1, d2, d3, a0, a1); \ \ - vbroadcasti128 .Lshufb_16x16b, a0; \ + vbroadcasti128 .Lshufb_16x16b(%rip), a0; \ vmovdqu st1, a1; \ vpshufb a0, a2, a2; \ vpshufb a0, a3, a3; \ @@ -521,7 +521,7 @@ ENDPROC(roundsm32_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab) #define inpack32_pre(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, y4, y5, \ y6, y7, rio, key) \ vpbroadcastq key, x0; \ - vpshufb .Lpack_bswap, x0, x0; \ + vpshufb .Lpack_bswap(%rip), x0, x0; \ \ vpxor 0 * 32(rio), x0, y7; \ vpxor 1 * 32(rio), x0, y6; \ @@ -572,7 +572,7 @@ ENDPROC(roundsm32_x4_x5_x6_x7_x0_x1_x2_x3_y4_y5_y6_y7_y0_y1_y2_y3_ab) vmovdqu x0, stack_tmp0; \ \ vpbroadcastq key, x0; \ - vpshufb .Lpack_bswap, x0, x0; \ + vpshufb .Lpack_bswap(%rip), x0, x0; \ \ vpxor x0, y7, y7; \ vpxor x0, y6, y6; \ @@ -1112,7 +1112,7 @@ ENTRY(camellia_ctr_32way) vmovdqu (%rcx), %xmm0; vmovdqa %xmm0, %xmm1; inc_le128(%xmm0, %xmm15, %xmm14); - vbroadcasti128 .Lbswap128_mask, %ymm14; + vbroadcasti128 .Lbswap128_mask(%rip), %ymm14; vinserti128 $1, %xmm0, %ymm1, %ymm0; vpshufb %ymm14, %ymm0, %ymm13; vmovdqu %ymm13, 15 * 32(%rax); @@ -1158,7 +1158,7 @@ ENTRY(camellia_ctr_32way) /* inpack32_pre: */ vpbroadcastq (key_table)(CTX), %ymm15; - vpshufb .Lpack_bswap, %ymm15, %ymm15; + vpshufb .Lpack_bswap(%rip), %ymm15, %ymm15; vpxor %ymm0, %ymm15, %ymm0; vpxor %ymm1, %ymm15, %ymm1; vpxor %ymm2, %ymm15, %ymm2; @@ -1242,13 +1242,13 @@ camellia_xts_crypt_32way: subq $(16 * 32), %rsp; movq %rsp, %rax; - vbroadcasti128 .Lxts_gf128mul_and_shl1_mask_0, %ymm12; + vbroadcasti128 .Lxts_gf128mul_and_shl1_mask_0(%rip), %ymm12; /* load IV and construct second IV */ vmovdqu (%rcx), %xmm0; vmovdqa %xmm0, %xmm15; gf128mul_x_ble(%xmm0, %xmm12, %xmm13); - vbroadcasti128 .Lxts_gf128mul_and_shl1_mask_1, %ymm13; + vbroadcasti128 .Lxts_gf128mul_and_shl1_mask_1(%rip), %ymm13; vinserti128 $1, %xmm0, %ymm15, %ymm0; vpxor 0 * 32(%rdx), %ymm0, %ymm15; vmovdqu %ymm15, 15 * 32(%rax); @@ -1325,7 +1325,7 @@ camellia_xts_crypt_32way: /* inpack32_pre: */ vpbroadcastq (key_table)(CTX, %r8, 8), %ymm15; - vpshufb .Lpack_bswap, %ymm15, %ymm15; + vpshufb .Lpack_bswap(%rip), %ymm15, %ymm15; vpxor 0 * 32(%rax), %ymm15, %ymm0; vpxor %ymm1, %ymm15, %ymm1; vpxor %ymm2, %ymm15, %ymm2; @@ -1383,7 +1383,7 @@ ENTRY(camellia_xts_enc_32way) xorl %r8d, %r8d; /* input whitening key, 0 for enc */ - leaq __camellia_enc_blk32, %r9; + leaq __camellia_enc_blk32(%rip), %r9; jmp camellia_xts_crypt_32way; ENDPROC(camellia_xts_enc_32way) @@ -1401,7 +1401,7 @@ ENTRY(camellia_xts_dec_32way) movl $24, %eax; cmovel %eax, %r8d; /* input whitening key, last for dec */ - leaq __camellia_dec_blk32, %r9; + leaq __camellia_dec_blk32(%rip), %r9; jmp camellia_xts_crypt_32way; ENDPROC(camellia_xts_dec_32way) diff --git a/arch/x86/crypto/camellia-x86_64-asm_64.S b/arch/x86/crypto/camellia-x86_64-asm_64.S index 95ba6956a7f6..ef1137406959 100644 --- a/arch/x86/crypto/camellia-x86_64-asm_64.S +++ b/arch/x86/crypto/camellia-x86_64-asm_64.S @@ -92,11 +92,13 @@ #define RXORbl %r9b #define xor2ror16(T0, T1, tmp1, tmp2, ab, dst) \ + leaq T0(%rip), tmp1; \ movzbl ab ## bl, tmp2 ## d; \ + xorq (tmp1, tmp2, 8), dst; \ + leaq T1(%rip), tmp2; \ movzbl ab ## bh, tmp1 ## d; \ - rorq $16, ab; \ - xorq T0(, tmp2, 8), dst; \ - xorq T1(, tmp1, 8), dst; + xorq (tmp2, tmp1, 8), dst; \ + rorq $16, ab; /********************************************************************** 1-way camellia diff --git a/arch/x86/crypto/cast5-avx-x86_64-asm_64.S b/arch/x86/crypto/cast5-avx-x86_64-asm_64.S index 86107c961bb4..64eb5c87d04a 100644 --- a/arch/x86/crypto/cast5-avx-x86_64-asm_64.S +++ b/arch/x86/crypto/cast5-avx-x86_64-asm_64.S @@ -98,16 +98,20 @@ #define lookup_32bit(src, dst, op1, op2, op3, interleave_op, il_reg) \ - movzbl src ## bh, RID1d; \ - movzbl src ## bl, RID2d; \ - shrq $16, src; \ - movl s1(, RID1, 4), dst ## d; \ - op1 s2(, RID2, 4), dst ## d; \ - movzbl src ## bh, RID1d; \ - movzbl src ## bl, RID2d; \ - interleave_op(il_reg); \ - op2 s3(, RID1, 4), dst ## d; \ - op3 s4(, RID2, 4), dst ## d; + movzbl src ## bh, RID1d; \ + leaq s1(%rip), RID2; \ + movl (RID2, RID1, 4), dst ## d; \ + movzbl src ## bl, RID2d; \ + leaq s2(%rip), RID1; \ + op1 (RID1, RID2, 4), dst ## d; \ + shrq $16, src; \ + movzbl src ## bh, RID1d; \ + leaq s3(%rip), RID2; \ + op2 (RID2, RID1, 4), dst ## d; \ + movzbl src ## bl, RID2d; \ + leaq s4(%rip), RID1; \ + op3 (RID1, RID2, 4), dst ## d; \ + interleave_op(il_reg); #define dummy(d) /* do nothing */ @@ -166,15 +170,15 @@ subround(l ## 3, r ## 3, l ## 4, r ## 4, f); #define enc_preload_rkr() \ - vbroadcastss .L16_mask, RKR; \ + vbroadcastss .L16_mask(%rip), RKR; \ /* add 16-bit rotation to key rotations (mod 32) */ \ vpxor kr(CTX), RKR, RKR; #define dec_preload_rkr() \ - vbroadcastss .L16_mask, RKR; \ + vbroadcastss .L16_mask(%rip), RKR; \ /* add 16-bit rotation to key rotations (mod 32) */ \ vpxor kr(CTX), RKR, RKR; \ - vpshufb .Lbswap128_mask, RKR, RKR; + vpshufb .Lbswap128_mask(%rip), RKR, RKR; #define transpose_2x4(x0, x1, t0, t1) \ vpunpckldq x1, x0, t0; \ @@ -251,9 +255,9 @@ __cast5_enc_blk16: movq %rdi, CTX; - vmovdqa .Lbswap_mask, RKM; - vmovd .Lfirst_mask, R1ST; - vmovd .L32_mask, R32; + vmovdqa .Lbswap_mask(%rip), RKM; + vmovd .Lfirst_mask(%rip), R1ST; + vmovd .L32_mask(%rip), R32; enc_preload_rkr(); inpack_blocks(RL1, RR1, RTMP, RX, RKM); @@ -287,7 +291,7 @@ __cast5_enc_blk16: popq %rbx; popq %r15; - vmovdqa .Lbswap_mask, RKM; + vmovdqa .Lbswap_mask(%rip), RKM; outunpack_blocks(RR1, RL1, RTMP, RX, RKM); outunpack_blocks(RR2, RL2, RTMP, RX, RKM); @@ -325,9 +329,9 @@ __cast5_dec_blk16: movq %rdi, CTX; - vmovdqa .Lbswap_mask, RKM; - vmovd .Lfirst_mask, R1ST; - vmovd .L32_mask, R32; + vmovdqa .Lbswap_mask(%rip), RKM; + vmovd .Lfirst_mask(%rip), R1ST; + vmovd .L32_mask(%rip), R32; dec_preload_rkr(); inpack_blocks(RL1, RR1, RTMP, RX, RKM); @@ -358,7 +362,7 @@ __cast5_dec_blk16: round(RL, RR, 1, 2); round(RR, RL, 0, 1); - vmovdqa .Lbswap_mask, RKM; + vmovdqa .Lbswap_mask(%rip), RKM; popq %rbx; popq %r15; @@ -521,8 +525,8 @@ ENTRY(cast5_ctr_16way) vpcmpeqd RKR, RKR, RKR; vpaddq RKR, RKR, RKR; /* low: -2, high: -2 */ - vmovdqa .Lbswap_iv_mask, R1ST; - vmovdqa .Lbswap128_mask, RKM; + vmovdqa .Lbswap_iv_mask(%rip), R1ST; + vmovdqa .Lbswap128_mask(%rip), RKM; /* load IV and byteswap */ vmovq (%rcx), RX; diff --git a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S index 7f30b6f0d72c..da1b7e4a23e4 100644 --- a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S +++ b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S @@ -98,16 +98,20 @@ #define lookup_32bit(src, dst, op1, op2, op3, interleave_op, il_reg) \ - movzbl src ## bh, RID1d; \ - movzbl src ## bl, RID2d; \ - shrq $16, src; \ - movl s1(, RID1, 4), dst ## d; \ - op1 s2(, RID2, 4), dst ## d; \ - movzbl src ## bh, RID1d; \ - movzbl src ## bl, RID2d; \ - interleave_op(il_reg); \ - op2 s3(, RID1, 4), dst ## d; \ - op3 s4(, RID2, 4), dst ## d; + movzbl src ## bh, RID1d; \ + leaq s1(%rip), RID2; \ + movl (RID2, RID1, 4), dst ## d; \ + movzbl src ## bl, RID2d; \ + leaq s2(%rip), RID1; \ + op1 (RID1, RID2, 4), dst ## d; \ + shrq $16, src; \ + movzbl src ## bh, RID1d; \ + leaq s3(%rip), RID2; \ + op2 (RID2, RID1, 4), dst ## d; \ + movzbl src ## bl, RID2d; \ + leaq s4(%rip), RID1; \ + op3 (RID1, RID2, 4), dst ## d; \ + interleave_op(il_reg); #define dummy(d) /* do nothing */ @@ -190,10 +194,10 @@ qop(RD, RC, 1); #define shuffle(mask) \ - vpshufb mask, RKR, RKR; + vpshufb mask(%rip), RKR, RKR; #define preload_rkr(n, do_mask, mask) \ - vbroadcastss .L16_mask, RKR; \ + vbroadcastss .L16_mask(%rip), RKR; \ /* add 16-bit rotation to key rotations (mod 32) */ \ vpxor (kr+n*16)(CTX), RKR, RKR; \ do_mask(mask); @@ -275,9 +279,9 @@ __cast6_enc_blk8: movq %rdi, CTX; - vmovdqa .Lbswap_mask, RKM; - vmovd .Lfirst_mask, R1ST; - vmovd .L32_mask, R32; + vmovdqa .Lbswap_mask(%rip), RKM; + vmovd .Lfirst_mask(%rip), R1ST; + vmovd .L32_mask(%rip), R32; inpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); inpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); @@ -301,7 +305,7 @@ __cast6_enc_blk8: popq %rbx; popq %r15; - vmovdqa .Lbswap_mask, RKM; + vmovdqa .Lbswap_mask(%rip), RKM; outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); @@ -323,9 +327,9 @@ __cast6_dec_blk8: movq %rdi, CTX; - vmovdqa .Lbswap_mask, RKM; - vmovd .Lfirst_mask, R1ST; - vmovd .L32_mask, R32; + vmovdqa .Lbswap_mask(%rip), RKM; + vmovd .Lfirst_mask(%rip), R1ST; + vmovd .L32_mask(%rip), R32; inpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); inpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); @@ -349,7 +353,7 @@ __cast6_dec_blk8: popq %rbx; popq %r15; - vmovdqa .Lbswap_mask, RKM; + vmovdqa .Lbswap_mask(%rip), RKM; outunpack_blocks(RA1, RB1, RC1, RD1, RTMP, RX, RKRF, RKM); outunpack_blocks(RA2, RB2, RC2, RD2, RTMP, RX, RKRF, RKM); diff --git a/arch/x86/crypto/des3_ede-asm_64.S b/arch/x86/crypto/des3_ede-asm_64.S index 8e49ce117494..4bbd3ec78df5 100644 --- a/arch/x86/crypto/des3_ede-asm_64.S +++ b/arch/x86/crypto/des3_ede-asm_64.S @@ -138,21 +138,29 @@ movzbl RW0bl, RT2d; \ movzbl RW0bh, RT3d; \ shrq $16, RW0; \ - movq s8(, RT0, 8), RT0; \ - xorq s6(, RT1, 8), to; \ + leaq s8(%rip), RW1; \ + movq (RW1, RT0, 8), RT0; \ + leaq s6(%rip), RW1; \ + xorq (RW1, RT1, 8), to; \ movzbl RW0bl, RL1d; \ movzbl RW0bh, RT1d; \ shrl $16, RW0d; \ - xorq s4(, RT2, 8), RT0; \ - xorq s2(, RT3, 8), to; \ + leaq s4(%rip), RW1; \ + xorq (RW1, RT2, 8), RT0; \ + leaq s2(%rip), RW1; \ + xorq (RW1, RT3, 8), to; \ movzbl RW0bl, RT2d; \ movzbl RW0bh, RT3d; \ - xorq s7(, RL1, 8), RT0; \ - xorq s5(, RT1, 8), to; \ - xorq s3(, RT2, 8), RT0; \ + leaq s7(%rip), RW1; \ + xorq (RW1, RL1, 8), RT0; \ + leaq s5(%rip), RW1; \ + xorq (RW1, RT1, 8), to; \ + leaq s3(%rip), RW1; \ + xorq (RW1, RT2, 8), RT0; \ load_next_key(n, RW0); \ xorq RT0, to; \ - xorq s1(, RT3, 8), to; \ + leaq s1(%rip), RW1; \ + xorq (RW1, RT3, 8), to; \ #define load_next_key(n, RWx) \ movq (((n) + 1) * 8)(CTX), RWx; @@ -364,65 +372,89 @@ ENDPROC(des3_ede_x86_64_crypt_blk) movzbl RW0bl, RT3d; \ movzbl RW0bh, RT1d; \ shrq $16, RW0; \ - xorq s8(, RT3, 8), to##0; \ - xorq s6(, RT1, 8), to##0; \ + leaq s8(%rip), RT2; \ + xorq (RT2, RT3, 8), to##0; \ + leaq s6(%rip), RT2; \ + xorq (RT2, RT1, 8), to##0; \ movzbl RW0bl, RT3d; \ movzbl RW0bh, RT1d; \ shrq $16, RW0; \ - xorq s4(, RT3, 8), to##0; \ - xorq s2(, RT1, 8), to##0; \ + leaq s4(%rip), RT2; \ + xorq (RT2, RT3, 8), to##0; \ + leaq s2(%rip), RT2; \ + xorq (RT2, RT1, 8), to##0; \ movzbl RW0bl, RT3d; \ movzbl RW0bh, RT1d; \ shrl $16, RW0d; \ - xorq s7(, RT3, 8), to##0; \ - xorq s5(, RT1, 8), to##0; \ + leaq s7(%rip), RT2; \ + xorq (RT2, RT3, 8), to##0; \ + leaq s5(%rip), RT2; \ + xorq (RT2, RT1, 8), to##0; \ movzbl RW0bl, RT3d; \ movzbl RW0bh, RT1d; \ load_next_key(n, RW0); \ - xorq s3(, RT3, 8), to##0; \ - xorq s1(, RT1, 8), to##0; \ + leaq s3(%rip), RT2; \ + xorq (RT2, RT3, 8), to##0; \ + leaq s1(%rip), RT2; \ + xorq (RT2, RT1, 8), to##0; \ xorq from##1, RW1; \ movzbl RW1bl, RT3d; \ movzbl RW1bh, RT1d; \ shrq $16, RW1; \ - xorq s8(, RT3, 8), to##1; \ - xorq s6(, RT1, 8), to##1; \ + leaq s8(%rip), RT2; \ + xorq (RT2, RT3, 8), to##1; \ + leaq s6(%rip), RT2; \ + xorq (RT2, RT1, 8), to##1; \ movzbl RW1bl, RT3d; \ movzbl RW1bh, RT1d; \ shrq $16, RW1; \ - xorq s4(, RT3, 8), to##1; \ - xorq s2(, RT1, 8), to##1; \ + leaq s4(%rip), RT2; \ + xorq (RT2, RT3, 8), to##1; \ + leaq s2(%rip), RT2; \ + xorq (RT2, RT1, 8), to##1; \ movzbl RW1bl, RT3d; \ movzbl RW1bh, RT1d; \ shrl $16, RW1d; \ - xorq s7(, RT3, 8), to##1; \ - xorq s5(, RT1, 8), to##1; \ + leaq s7(%rip), RT2; \ + xorq (RT2, RT3, 8), to##1; \ + leaq s5(%rip), RT2; \ + xorq (RT2, RT1, 8), to##1; \ movzbl RW1bl, RT3d; \ movzbl RW1bh, RT1d; \ do_movq(RW0, RW1); \ - xorq s3(, RT3, 8), to##1; \ - xorq s1(, RT1, 8), to##1; \ + leaq s3(%rip), RT2; \ + xorq (RT2, RT3, 8), to##1; \ + leaq s1(%rip), RT2; \ + xorq (RT2, RT1, 8), to##1; \ xorq from##2, RW2; \ movzbl RW2bl, RT3d; \ movzbl RW2bh, RT1d; \ shrq $16, RW2; \ - xorq s8(, RT3, 8), to##2; \ - xorq s6(, RT1, 8), to##2; \ + leaq s8(%rip), RT2; \ + xorq (RT2, RT3, 8), to##2; \ + leaq s6(%rip), RT2; \ + xorq (RT2, RT1, 8), to##2; \ movzbl RW2bl, RT3d; \ movzbl RW2bh, RT1d; \ shrq $16, RW2; \ - xorq s4(, RT3, 8), to##2; \ - xorq s2(, RT1, 8), to##2; \ + leaq s4(%rip), RT2; \ + xorq (RT2, RT3, 8), to##2; \ + leaq s2(%rip), RT2; \ + xorq (RT2, RT1, 8), to##2; \ movzbl RW2bl, RT3d; \ movzbl RW2bh, RT1d; \ shrl $16, RW2d; \ - xorq s7(, RT3, 8), to##2; \ - xorq s5(, RT1, 8), to##2; \ + leaq s7(%rip), RT2; \ + xorq (RT2, RT3, 8), to##2; \ + leaq s5(%rip), RT2; \ + xorq (RT2, RT1, 8), to##2; \ movzbl RW2bl, RT3d; \ movzbl RW2bh, RT1d; \ do_movq(RW0, RW2); \ - xorq s3(, RT3, 8), to##2; \ - xorq s1(, RT1, 8), to##2; + leaq s3(%rip), RT2; \ + xorq (RT2, RT3, 8), to##2; \ + leaq s1(%rip), RT2; \ + xorq (RT2, RT1, 8), to##2; #define __movq(src, dst) \ movq src, dst; diff --git a/arch/x86/crypto/ghash-clmulni-intel_asm.S b/arch/x86/crypto/ghash-clmulni-intel_asm.S index f94375a8dcd1..d56a281221fb 100644 --- a/arch/x86/crypto/ghash-clmulni-intel_asm.S +++ b/arch/x86/crypto/ghash-clmulni-intel_asm.S @@ -97,7 +97,7 @@ ENTRY(clmul_ghash_mul) FRAME_BEGIN movups (%rdi), DATA movups (%rsi), SHASH - movaps .Lbswap_mask, BSWAP + movaps .Lbswap_mask(%rip), BSWAP PSHUFB_XMM BSWAP DATA call __clmul_gf128mul_ble PSHUFB_XMM BSWAP DATA @@ -114,7 +114,7 @@ ENTRY(clmul_ghash_update) FRAME_BEGIN cmp $16, %rdx jb .Lupdate_just_ret # check length - movaps .Lbswap_mask, BSWAP + movaps .Lbswap_mask(%rip), BSWAP movups (%rdi), DATA movups (%rcx), SHASH PSHUFB_XMM BSWAP DATA diff --git a/arch/x86/crypto/glue_helper-asm-avx.S b/arch/x86/crypto/glue_helper-asm-avx.S index 02ee2308fb38..8a49ab1699ef 100644 --- a/arch/x86/crypto/glue_helper-asm-avx.S +++ b/arch/x86/crypto/glue_helper-asm-avx.S @@ -54,7 +54,7 @@ #define load_ctr_8way(iv, bswap, x0, x1, x2, x3, x4, x5, x6, x7, t0, t1, t2) \ vpcmpeqd t0, t0, t0; \ vpsrldq $8, t0, t0; /* low: -1, high: 0 */ \ - vmovdqa bswap, t1; \ + vmovdqa bswap(%rip), t1; \ \ /* load IV and byteswap */ \ vmovdqu (iv), x7; \ @@ -99,7 +99,7 @@ #define load_xts_8way(iv, src, dst, x0, x1, x2, x3, x4, x5, x6, x7, tiv, t0, \ t1, xts_gf128mul_and_shl1_mask) \ - vmovdqa xts_gf128mul_and_shl1_mask, t0; \ + vmovdqa xts_gf128mul_and_shl1_mask(%rip), t0; \ \ /* load IV */ \ vmovdqu (iv), tiv; \ diff --git a/arch/x86/crypto/glue_helper-asm-avx2.S b/arch/x86/crypto/glue_helper-asm-avx2.S index a53ac11dd385..e04c80467bd2 100644 --- a/arch/x86/crypto/glue_helper-asm-avx2.S +++ b/arch/x86/crypto/glue_helper-asm-avx2.S @@ -67,7 +67,7 @@ vmovdqu (iv), t2x; \ vmovdqa t2x, t3x; \ inc_le128(t2x, t0x, t1x); \ - vbroadcasti128 bswap, t1; \ + vbroadcasti128 bswap(%rip), t1; \ vinserti128 $1, t2x, t3, t2; /* ab: le0 ; cd: le1 */ \ vpshufb t1, t2, x0; \ \ @@ -124,13 +124,13 @@ tivx, t0, t0x, t1, t1x, t2, t2x, t3, \ xts_gf128mul_and_shl1_mask_0, \ xts_gf128mul_and_shl1_mask_1) \ - vbroadcasti128 xts_gf128mul_and_shl1_mask_0, t1; \ + vbroadcasti128 xts_gf128mul_and_shl1_mask_0(%rip), t1; \ \ /* load IV and construct second IV */ \ vmovdqu (iv), tivx; \ vmovdqa tivx, t0x; \ gf128mul_x_ble(tivx, t1x, t2x); \ - vbroadcasti128 xts_gf128mul_and_shl1_mask_1, t2; \ + vbroadcasti128 xts_gf128mul_and_shl1_mask_1(%rip), t2; \ vinserti128 $1, tivx, t0, tiv; \ vpxor (0*32)(src), tiv, x0; \ vmovdqu tiv, (0*32)(dst); \ -- 2.14.2.920.gcf0c67979c-goog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 01/27] x86/crypto: Adapt assembly for PIE support Date: Wed, 4 Oct 2017 14:19:37 -0700 Message-ID: <20171004212003.28296-2-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter Bor Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org List-Id: linux-arch.vger.kernel.org Q2hhbmdlIHRoZSBhc3NlbWJseSBjb2RlIHRvIHVzZSBvbmx5IHJlbGF0aXZlIHJlZmVyZW5jZXMg b2Ygc3ltYm9scyBmb3IgdGhlCmtlcm5lbCB0byBiZSBQSUUgY29tcGF0aWJsZS4KClBvc2l0aW9u IEluZGVwZW5kZW50IEV4ZWN1dGFibGUgKFBJRSkgc3VwcG9ydCB3aWxsIGFsbG93IHRvIGV4dGVu ZGVkIHRoZQpLQVNMUiByYW5kb21pemF0aW9uIHJhbmdlIGJlbG93IHRoZSAtMkcgbWVtb3J5IGxp bWl0LgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdhcm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+ Ci0tLQogYXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMgICAgICAgICAgfCA0NSAr KysrKysrKy0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMgICAgICAgICAg ICB8IDE0ICsrLS0KIGFyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRlbF9hdngteDg2XzY0LlMgICAg IHwgIDYgKy0KIGFyY2gveDg2L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMgIHwg NDIgKysrKysrLS0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8vY2FtZWxsaWEtYWVzbmktYXZ4Mi1hc21f NjQuUyB8IDQ0ICsrKysrKy0tLS0tLS0KIGFyY2gveDg2L2NyeXB0by9jYW1lbGxpYS14ODZfNjQt YXNtXzY0LlMgICAgIHwgIDggKystCiBhcmNoL3g4Ni9jcnlwdG8vY2FzdDUtYXZ4LXg4Nl82NC1h c21fNjQuUyAgICB8IDUwICsrKysrKysrLS0tLS0tLQogYXJjaC94ODYvY3J5cHRvL2Nhc3Q2LWF2 eC14ODZfNjQtYXNtXzY0LlMgICAgfCA0NCArKysrKysrLS0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8v ZGVzM19lZGUtYXNtXzY0LlMgICAgICAgICAgICB8IDk2ICsrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0KIGFyY2gveDg2L2NyeXB0by9naGFzaC1jbG11bG5pLWludGVsX2FzbS5TICAgIHwgIDQg Ky0KIGFyY2gveDg2L2NyeXB0by9nbHVlX2hlbHBlci1hc20tYXZ4LlMgICAgICAgIHwgIDQgKy0K IGFyY2gveDg2L2NyeXB0by9nbHVlX2hlbHBlci1hc20tYXZ4Mi5TICAgICAgIHwgIDYgKy0KIDEy IGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvYXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMgYi9hcmNoL3g4Ni9j cnlwdG8vYWVzLXg4Nl82NC1hc21fNjQuUwppbmRleCA4NzM5Y2Y3Nzk1ZGUuLjg2ZmEwNjhlNWU4 MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMKKysrIGIv YXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMKQEAgLTQ4LDggKzQ4LDEyIEBACiAj ZGVmaW5lIFIxMAklcjEwCiAjZGVmaW5lIFIxMQklcjExCiAKKy8qIEhvbGQgZ2xvYmFsIGZvciBQ SUUgc3Vwb3J0ICovCisjZGVmaW5lIFJCQVNFCSVyMTIKKwogI2RlZmluZSBwcm9sb2d1ZShGVU5D LEtFWSxCMTI4LEIxOTIscjEscjIscjUscjYscjcscjgscjkscjEwLHIxMSkgXAogCUVOVFJZKEZV TkMpOwkJCVwKKwlwdXNocQlSQkFTRTsJCQlcCiAJbW92cQlyMSxyMjsJCQlcCiAJbGVhcQlLRVkr NDgocjgpLHI5OwkJXAogCW1vdnEJcjEwLHIxMTsJCVwKQEAgLTc0LDU0ICs3OCw2MyBAQAogCW1v dmwJcjYgIyMgRSw0KHI5KTsJCVwKIAltb3ZsCXI3ICMjIEUsOChyOSk7CQlcCiAJbW92bAlyOCAj IyBFLDEyKHI5KTsJCVwKKwlwb3BxCVJCQVNFOwkJCVwKIAlyZXQ7CQkJCVwKIAlFTkRQUk9DKEZV TkMpOwogCisjZGVmaW5lIHJvdW5kX21vdih0YWJfb2ZmLCByZWdfaSwgcmVnX28pIFwKKwlsZWFx CXRhYl9vZmYoJXJpcCksIFJCQVNFOyBcCisJbW92bAkoUkJBU0UscmVnX2ksNCksIHJlZ19vOwor CisjZGVmaW5lIHJvdW5kX3hvcih0YWJfb2ZmLCByZWdfaSwgcmVnX28pIFwKKwlsZWFxCXRhYl9v ZmYoJXJpcCksIFJCQVNFOyBcCisJeG9ybAkoUkJBU0UscmVnX2ksNCksIHJlZ19vOworCiAjZGVm aW5lIHJvdW5kKFRBQixPRkZTRVQscjEscjIscjMscjQscjUscjYscjcscjgscmEscmIscmMscmQp IFwKIAltb3Z6YmwJcjIgIyMgSCxyNSAjIyBFOwlcCiAJbW92emJsCXIyICMjIEwscjYgIyMgRTsJ XAotCW1vdmwJVEFCKzEwMjQoLHI1LDQpLHI1ICMjIEU7XAorCXJvdW5kX21vdihUQUIrMTAyNCwg cjUsIHI1ICMjIEUpXAogCW1vdncJcjQgIyMgWCxyMiAjIyBYOwlcCi0JbW92bAlUQUIoLHI2LDQp LHI2ICMjIEU7CVwKKwlyb3VuZF9tb3YoVEFCLCByNiwgcjYgIyMgRSkJXAogCXJvbGwJJDE2LHIy ICMjIEU7CQlcCiAJc2hybAkkMTYscjQgIyMgRTsJCVwKIAltb3Z6YmwJcjQgIyMgTCxyNyAjIyBF OwlcCiAJbW92emJsCXI0ICMjIEgscjQgIyMgRTsJXAogCXhvcmwJT0ZGU0VUKHI4KSxyYSAjIyBF OwlcCiAJeG9ybAlPRkZTRVQrNChyOCkscmIgIyMgRTsJXAotCXhvcmwJVEFCKzMwNzIoLHI0LDQp LHI1ICMjIEU7XAotCXhvcmwJVEFCKzIwNDgoLHI3LDQpLHI2ICMjIEU7XAorCXJvdW5kX3hvcihU QUIrMzA3MiwgcjQsIHI1ICMjIEUpXAorCXJvdW5kX3hvcihUQUIrMjA0OCwgcjcsIHI2ICMjIEUp XAogCW1vdnpibAlyMSAjIyBMLHI3ICMjIEU7CVwKIAltb3Z6YmwJcjEgIyMgSCxyNCAjIyBFOwlc Ci0JbW92bAlUQUIrMTAyNCgscjQsNCkscjQgIyMgRTtcCisJcm91bmRfbW92KFRBQisxMDI0LCBy NCwgcjQgIyMgRSlcCiAJbW92dwlyMyAjIyBYLHIxICMjIFg7CVwKIAlyb2xsCSQxNixyMSAjIyBF OwkJXAogCXNocmwJJDE2LHIzICMjIEU7CQlcCi0JeG9ybAlUQUIoLHI3LDQpLHI1ICMjIEU7CVwK Kwlyb3VuZF94b3IoVEFCLCByNywgcjUgIyMgRSkJXAogCW1vdnpibAlyMyAjIyBMLHI3ICMjIEU7 CVwKIAltb3Z6YmwJcjMgIyMgSCxyMyAjIyBFOwlcCi0JeG9ybAlUQUIrMzA3MigscjMsNCkscjQg IyMgRTtcCi0JeG9ybAlUQUIrMjA0OCgscjcsNCkscjUgIyMgRTtcCisJcm91bmRfeG9yKFRBQisz MDcyLCByMywgcjQgIyMgRSlcCisJcm91bmRfeG9yKFRBQisyMDQ4LCByNywgcjUgIyMgRSlcCiAJ bW92emJsCXIxICMjIEwscjcgIyMgRTsJXAogCW1vdnpibAlyMSAjIyBILHIzICMjIEU7CVwKIAlz aHJsCSQxNixyMSAjIyBFOwkJXAotCXhvcmwJVEFCKzMwNzIoLHIzLDQpLHI2ICMjIEU7XAotCW1v dmwJVEFCKzIwNDgoLHI3LDQpLHIzICMjIEU7XAorCXJvdW5kX3hvcihUQUIrMzA3MiwgcjMsIHI2 ICMjIEUpXAorCXJvdW5kX21vdihUQUIrMjA0OCwgcjcsIHIzICMjIEUpXAogCW1vdnpibAlyMSAj IyBMLHI3ICMjIEU7CVwKIAltb3Z6YmwJcjEgIyMgSCxyMSAjIyBFOwlcCi0JeG9ybAlUQUIrMTAy NCgscjEsNCkscjYgIyMgRTtcCi0JeG9ybAlUQUIoLHI3LDQpLHIzICMjIEU7CVwKKwlyb3VuZF94 b3IoVEFCKzEwMjQsIHIxLCByNiAjIyBFKVwKKwlyb3VuZF94b3IoVEFCLCByNywgcjMgIyMgRSkJ XAogCW1vdnpibAlyMiAjIyBILHIxICMjIEU7CVwKIAltb3Z6YmwJcjIgIyMgTCxyNyAjIyBFOwlc CiAJc2hybAkkMTYscjIgIyMgRTsJCVwKLQl4b3JsCVRBQiszMDcyKCxyMSw0KSxyMyAjIyBFO1wK LQl4b3JsCVRBQisyMDQ4KCxyNyw0KSxyNCAjIyBFO1wKKwlyb3VuZF94b3IoVEFCKzMwNzIsIHIx LCByMyAjIyBFKVwKKwlyb3VuZF94b3IoVEFCKzIwNDgsIHI3LCByNCAjIyBFKVwKIAltb3Z6YmwJ cjIgIyMgSCxyMSAjIyBFOwlcCiAJbW92emJsCXIyICMjIEwscjIgIyMgRTsJXAogCXhvcmwJT0ZG U0VUKzgocjgpLHJjICMjIEU7CVwKIAl4b3JsCU9GRlNFVCsxMihyOCkscmQgIyMgRTsJXAotCXhv cmwJVEFCKzEwMjQoLHIxLDQpLHIzICMjIEU7XAotCXhvcmwJVEFCKCxyMiw0KSxyNCAjIyBFOwor CXJvdW5kX3hvcihUQUIrMTAyNCwgcjEsIHIzICMjIEUpXAorCXJvdW5kX3hvcihUQUIsIHIyLCBy NCAjIyBFKQogCiAjZGVmaW5lIG1vdmVfcmVncyhyMSxyMixyMyxyNCkgXAogCW1vdmwJcjMgIyMg RSxyMSAjIyBFOwlcCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNt LlMgYi9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMKaW5kZXggMTY2MjdmZWM4MGIy Li41ZjczMjAxZGZmMzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRlbF9h c20uUworKysgYi9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMKQEAgLTMyNSw3ICsz MjUsOCBAQCBfZ2V0X0FBRF9yZXN0MFxudW1faW5pdGlhbF9ibG9ja3Ncb3BlcmF0aW9uOgogCXZw c2h1ZmIgYW5kIGFuIGFycmF5IG9mIHNodWZmbGUgbWFza3MgKi8KIAltb3ZxCSAgICVyMTIsICVy MTEKIAlzYWxxCSAgICQ0LCAlcjExCi0JbW92ZHF1CSAgIGFhZF9zaGlmdF9hcnIoJXIxMSksIFxU TVAxCisJbGVhcQkgICBhYWRfc2hpZnRfYXJyKCVyaXApLCAlcmF4CisJbW92ZHF1CSAgICglcmF4 LCVyMTEsKSwgXFRNUDEKIAlQU0hVRkJfWE1NIFxUTVAxLCAleG1tXGkKIF9nZXRfQUFEX3Jlc3Rf ZmluYWxcbnVtX2luaXRpYWxfYmxvY2tzXG9wZXJhdGlvbjoKIAlQU0hVRkJfWE1NICAgJXhtbTE0 LCAleG1tXGkgIyBieXRlLXJlZmxlY3QgdGhlIEFBRCBkYXRhCkBAIC01ODQsNyArNTg1LDggQEAg X2dldF9BQURfcmVzdDBcbnVtX2luaXRpYWxfYmxvY2tzXG9wZXJhdGlvbjoKIAl2cHNodWZiIGFu ZCBhbiBhcnJheSBvZiBzaHVmZmxlIG1hc2tzICovCiAJbW92cQkgICAlcjEyLCAlcjExCiAJc2Fs cQkgICAkNCwgJXIxMQotCW1vdmRxdQkgICBhYWRfc2hpZnRfYXJyKCVyMTEpLCBcVE1QMQorCWxl YXEJICAgYWFkX3NoaWZ0X2FyciglcmlwKSwgJXJheAorCW1vdmRxdQkgICAoJXJheCwlcjExLCks IFxUTVAxCiAJUFNIVUZCX1hNTSBcVE1QMSwgJXhtbVxpCiBfZ2V0X0FBRF9yZXN0X2ZpbmFsXG51 bV9pbml0aWFsX2Jsb2Nrc1xvcGVyYXRpb246CiAJUFNIVUZCX1hNTSAgICV4bW0xNCwgJXhtbVxp ICMgYnl0ZS1yZWZsZWN0IHRoZSBBQUQgZGF0YQpAQCAtMjcyMiw3ICsyNzI0LDcgQEAgRU5EUFJP QyhhZXNuaV9jYmNfZGVjKQogICovCiAuYWxpZ24gNAogX2Flc25pX2luY19pbml0OgotCW1vdmFw cyAuTGJzd2FwX21hc2ssIEJTV0FQX01BU0sKKwltb3ZhcHMgLkxic3dhcF9tYXNrKCVyaXApLCBC U1dBUF9NQVNLCiAJbW92YXBzIElWLCBDVFIKIAlQU0hVRkJfWE1NIEJTV0FQX01BU0sgQ1RSCiAJ bW92ICQxLCBUQ1RSX0xPVwpAQCAtMjg1MCwxMiArMjg1MiwxMiBAQCBFTlRSWShhZXNuaV94dHNf Y3J5cHQ4KQogCWNtcGIgJDAsICVjbAogCW1vdmwgJDAsICVlY3gKIAltb3ZsICQyNDAsICVyMTBk Ci0JbGVhcSBfYWVzbmlfZW5jNCwgJXIxMQotCWxlYXEgX2Flc25pX2RlYzQsICVyYXgKKwlsZWFx IF9hZXNuaV9lbmM0KCVyaXApLCAlcjExCisJbGVhcSBfYWVzbmlfZGVjNCglcmlwKSwgJXJheAog CWNtb3ZlbCAlcjEwZCwgJWVjeAogCWNtb3ZlcSAlcmF4LCAlcjExCiAKLQltb3ZkcWEgLkxnZjEy OG11bF94X2JsZV9tYXNrLCBHRjEyOE1VTF9NQVNLCisJbW92ZHFhIC5MZ2YxMjhtdWxfeF9ibGVf bWFzayglcmlwKSwgR0YxMjhNVUxfTUFTSwogCW1vdnVwcyAoSVZQKSwgSVYKIAogCW1vdiA0ODAo S0VZUCksIEtMRU4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRlbF9hdngt eDg2XzY0LlMgYi9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXZ4LXg4Nl82NC5TCmluZGV4 IGZhZWNiMTUxOGJmOC4uNDg4NjA1YjE5ZmU4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9jcnlwdG8v YWVzbmktaW50ZWxfYXZ4LXg4Nl82NC5TCisrKyBiL2FyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRl bF9hdngteDg2XzY0LlMKQEAgLTQ1NCw3ICs0NTQsOCBAQCBfZ2V0X0FBRF9yZXN0MFxAOgogCXZw c2h1ZmIgYW5kIGFuIGFycmF5IG9mIHNodWZmbGUgbWFza3MgKi8KIAltb3ZxICAgICVyMTIsICVy MTEKIAlzYWxxICAgICQ0LCAlcjExCi0JbW92ZHF1ICBhYWRfc2hpZnRfYXJyKCVyMTEpLCBcVDEK KwlsZWFxCWFhZF9zaGlmdF9hcnIoJXJpcCksICVyYXgKKwltb3ZkcXUgICglcmF4LCVyMTEsKSwg XFQxCiAJdnBzaHVmYiBcVDEsIHJlZ19pLCByZWdfaQogX2dldF9BQURfcmVzdF9maW5hbFxAOgog CXZwc2h1ZmIgU0hVRl9NQVNLKCVyaXApLCByZWdfaSwgcmVnX2kKQEAgLTE3NjEsNyArMTc2Miw4 IEBAIF9nZXRfQUFEX3Jlc3QwXEA6CiAJdnBzaHVmYiBhbmQgYW4gYXJyYXkgb2Ygc2h1ZmZsZSBt YXNrcyAqLwogCW1vdnEgICAgJXIxMiwgJXIxMQogCXNhbHEgICAgJDQsICVyMTEKLQltb3ZkcXUg IGFhZF9zaGlmdF9hcnIoJXIxMSksIFxUMQorCWxlYXEJYWFkX3NoaWZ0X2FyciglcmlwKSwgJXJh eAorCW1vdmRxdSAgKCVyYXgsJXIxMSwpLCBcVDEKIAl2cHNodWZiIFxUMSwgcmVnX2ksIHJlZ19p CiBfZ2V0X0FBRF9yZXN0X2ZpbmFsXEA6CiAJdnBzaHVmYiBTSFVGX01BU0soJXJpcCksIHJlZ19p LCByZWdfaQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvY3J5cHRvL2NhbWVsbGlhLWFlc25pLWF2eC1h c21fNjQuUyBiL2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMKaW5k ZXggZjdjNDk1ZTI4NjNjLi40NmZlYWVhNTI2MzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0 by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMKKysrIGIvYXJjaC94ODYvY3J5cHRvL2NhbWVs bGlhLWFlc25pLWF2eC1hc21fNjQuUwpAQCAtNTIsMTAgKzUyLDEwIEBACiAJLyogXAogCSAqIFMt ZnVuY3Rpb24gd2l0aCBBRVMgc3ViYnl0ZXMgXAogCSAqLyBcCi0Jdm1vdmRxYSAuTGludl9zaGlm dF9yb3csIHQ0OyBcCi0JdmJyb2FkY2FzdHNzIC5MMGYwZjBmMGYsIHQ3OyBcCi0Jdm1vdmRxYSAu THByZV90Zl9sb19zMSwgdDA7IFwKLQl2bW92ZHFhIC5McHJlX3RmX2hpX3MxLCB0MTsgXAorCXZt b3ZkcWEgLkxpbnZfc2hpZnRfcm93KCVyaXApLCB0NDsgXAorCXZicm9hZGNhc3RzcyAuTDBmMGYw ZjBmKCVyaXApLCB0NzsgXAorCXZtb3ZkcWEgLkxwcmVfdGZfbG9fczEoJXJpcCksIHQwOyBcCisJ dm1vdmRxYSAuTHByZV90Zl9oaV9zMSglcmlwKSwgdDE7IFwKIAlcCiAJLyogQUVTIGludmVyc2Ug c2hpZnQgcm93cyAqLyBcCiAJdnBzaHVmYiB0NCwgeDAsIHgwOyBcCkBAIC02OCw4ICs2OCw4IEBA CiAJdnBzaHVmYiB0NCwgeDYsIHg2OyBcCiAJXAogCS8qIHByZWZpbHRlciBzYm94ZXMgMSwgMiBh bmQgMyAqLyBcCi0Jdm1vdmRxYSAuTHByZV90Zl9sb19zNCwgdDI7IFwKLQl2bW92ZHFhIC5McHJl X3RmX2hpX3M0LCB0MzsgXAorCXZtb3ZkcWEgLkxwcmVfdGZfbG9fczQoJXJpcCksIHQyOyBcCisJ dm1vdmRxYSAuTHByZV90Zl9oaV9zNCglcmlwKSwgdDM7IFwKIAlmaWx0ZXJfOGJpdCh4MCwgdDAs IHQxLCB0NywgdDYpOyBcCiAJZmlsdGVyXzhiaXQoeDcsIHQwLCB0MSwgdDcsIHQ2KTsgXAogCWZp bHRlcl84Yml0KHgxLCB0MCwgdDEsIHQ3LCB0Nik7IFwKQEAgLTgzLDggKzgzLDggQEAKIAlmaWx0 ZXJfOGJpdCh4NiwgdDIsIHQzLCB0NywgdDYpOyBcCiAJXAogCS8qIEFFUyBzdWJieXRlcyArIEFF UyBzaGlmdCByb3dzICovIFwKLQl2bW92ZHFhIC5McG9zdF90Zl9sb19zMSwgdDA7IFwKLQl2bW92 ZHFhIC5McG9zdF90Zl9oaV9zMSwgdDE7IFwKKwl2bW92ZHFhIC5McG9zdF90Zl9sb19zMSglcmlw KSwgdDA7IFwKKwl2bW92ZHFhIC5McG9zdF90Zl9oaV9zMSglcmlwKSwgdDE7IFwKIAl2YWVzZW5j bGFzdCB0NCwgeDAsIHgwOyBcCiAJdmFlc2VuY2xhc3QgdDQsIHg3LCB4NzsgXAogCXZhZXNlbmNs YXN0IHQ0LCB4MSwgeDE7IFwKQEAgLTk1LDE2ICs5NSwxNiBAQAogCXZhZXNlbmNsYXN0IHQ0LCB4 NiwgeDY7IFwKIAlcCiAJLyogcG9zdGZpbHRlciBzYm94ZXMgMSBhbmQgNCAqLyBcCi0Jdm1vdmRx YSAuTHBvc3RfdGZfbG9fczMsIHQyOyBcCi0Jdm1vdmRxYSAuTHBvc3RfdGZfaGlfczMsIHQzOyBc CisJdm1vdmRxYSAuTHBvc3RfdGZfbG9fczMoJXJpcCksIHQyOyBcCisJdm1vdmRxYSAuTHBvc3Rf dGZfaGlfczMoJXJpcCksIHQzOyBcCiAJZmlsdGVyXzhiaXQoeDAsIHQwLCB0MSwgdDcsIHQ2KTsg XAogCWZpbHRlcl84Yml0KHg3LCB0MCwgdDEsIHQ3LCB0Nik7IFwKIAlmaWx0ZXJfOGJpdCh4Mywg dDAsIHQxLCB0NywgdDYpOyBcCiAJZmlsdGVyXzhiaXQoeDYsIHQwLCB0MSwgdDcsIHQ2KTsgXAog CVwKIAkvKiBwb3N0ZmlsdGVyIHNib3ggMyAqLyBcCi0Jdm1vdmRxYSAuTHBvc3RfdGZfbG9fczIs IHQ0OyBcCi0Jdm1vdmRxYSAuTHBvc3RfdGZfaGlfczIsIHQ1OyBcCisJdm1vdmRxYSAuTHBvc3Rf dGZfbG9fczIoJXJpcCksIHQ0OyBcCisJdm1vdmRxYSAuTHBvc3RfdGZfaGlfczIoJXJpcCksIHQ1 OyBcCiAJZmlsdGVyXzhiaXQoeDIsIHQyLCB0MywgdDcsIHQ2KTsgXAogCWZpbHRlcl84Yml0KHg1 LCB0MiwgdDMsIHQ3LCB0Nik7IFwKIAlcCkBAIC00NDMsNyArNDQzLDcgQEAgRU5EUFJPQyhyb3Vu ZHNtMTZfeDRfeDVfeDZfeDdfeDBfeDFfeDJfeDNfeTRfeTVfeTZfeTdfeTBfeTFfeTJfeTNfYWIp CiAJdHJhbnNwb3NlXzR4NChjMCwgYzEsIGMyLCBjMywgYTAsIGExKTsgXAogCXRyYW5zcG9zZV80 eDQoZDAsIGQxLCBkMiwgZDMsIGEwLCBhMSk7IFwKIAlcCi0Jdm1vdmRxdSAuTHNodWZiXzE2eDE2 YiwgYTA7IFwKKwl2bW92ZHF1IC5Mc2h1ZmJfMTZ4MTZiKCVyaXApLCBhMDsgXAogCXZtb3ZkcXUg c3QxLCBhMTsgXAogCXZwc2h1ZmIgYTAsIGEyLCBhMjsgXAogCXZwc2h1ZmIgYTAsIGEzLCBhMzsg XApAQCAtNDgyLDcgKzQ4Miw3IEBAIEVORFBST0Mocm91bmRzbTE2X3g0X3g1X3g2X3g3X3gwX3gx X3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogI2RlZmluZSBpbnBhY2sxNl9wcmUo eDAsIHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYsIHg3LCB5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCBc CiAJCSAgICAgeTYsIHk3LCByaW8sIGtleSkgXAogCXZtb3ZxIGtleSwgeDA7IFwKLQl2cHNodWZi IC5McGFja19ic3dhcCwgeDAsIHgwOyBcCisJdnBzaHVmYiAuTHBhY2tfYnN3YXAoJXJpcCksIHgw LCB4MDsgXAogCVwKIAl2cHhvciAwICogMTYocmlvKSwgeDAsIHk3OyBcCiAJdnB4b3IgMSAqIDE2 KHJpbyksIHgwLCB5NjsgXApAQCAtNTMzLDcgKzUzMyw3IEBAIEVORFBST0Mocm91bmRzbTE2X3g0 X3g1X3g2X3g3X3gwX3gxX3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogCXZtb3Zk cXUgeDAsIHN0YWNrX3RtcDA7IFwKIAlcCiAJdm1vdnEga2V5LCB4MDsgXAotCXZwc2h1ZmIgLkxw YWNrX2Jzd2FwLCB4MCwgeDA7IFwKKwl2cHNodWZiIC5McGFja19ic3dhcCglcmlwKSwgeDAsIHgw OyBcCiAJXAogCXZweG9yIHgwLCB5NywgeTc7IFwKIAl2cHhvciB4MCwgeTYsIHk2OyBcCkBAIC0x MDE2LDcgKzEwMTYsNyBAQCBFTlRSWShjYW1lbGxpYV9jdHJfMTZ3YXkpCiAJc3VicSAkKDE2ICog MTYpLCAlcnNwOwogCW1vdnEgJXJzcCwgJXJheDsKIAotCXZtb3ZkcWEgLkxic3dhcDEyOF9tYXNr LCAleG1tMTQ7CisJdm1vdmRxYSAuTGJzd2FwMTI4X21hc2soJXJpcCksICV4bW0xNDsKIAogCS8q IGxvYWQgSVYgYW5kIGJ5dGVzd2FwICovCiAJdm1vdmRxdSAoJXJjeCksICV4bW0wOwpAQCAtMTA2 NSw3ICsxMDY1LDcgQEAgRU5UUlkoY2FtZWxsaWFfY3RyXzE2d2F5KQogCiAJLyogaW5wYWNrMTZf cHJlOiAqLwogCXZtb3ZxIChrZXlfdGFibGUpKENUWCksICV4bW0xNTsKLQl2cHNodWZiIC5McGFj a19ic3dhcCwgJXhtbTE1LCAleG1tMTU7CisJdnBzaHVmYiAuTHBhY2tfYnN3YXAoJXJpcCksICV4 bW0xNSwgJXhtbTE1OwogCXZweG9yICV4bW0wLCAleG1tMTUsICV4bW0wOwogCXZweG9yICV4bW0x LCAleG1tMTUsICV4bW0xOwogCXZweG9yICV4bW0yLCAleG1tMTUsICV4bW0yOwpAQCAtMTEzMyw3 ICsxMTMzLDcgQEAgY2FtZWxsaWFfeHRzX2NyeXB0XzE2d2F5OgogCXN1YnEgJCgxNiAqIDE2KSwg JXJzcDsKIAltb3ZxICVyc3AsICVyYXg7CiAKLQl2bW92ZHFhIC5MeHRzX2dmMTI4bXVsX2FuZF9z aGwxX21hc2ssICV4bW0xNDsKKwl2bW92ZHFhIC5MeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2so JXJpcCksICV4bW0xNDsKIAogCS8qIGxvYWQgSVYgKi8KIAl2bW92ZHF1ICglcmN4KSwgJXhtbTA7 CkBAIC0xMjA5LDcgKzEyMDksNyBAQCBjYW1lbGxpYV94dHNfY3J5cHRfMTZ3YXk6CiAKIAkvKiBp bnBhY2sxNl9wcmU6ICovCiAJdm1vdnEgKGtleV90YWJsZSkoQ1RYLCAlcjgsIDgpLCAleG1tMTU7 Ci0JdnBzaHVmYiAuTHBhY2tfYnN3YXAsICV4bW0xNSwgJXhtbTE1OworCXZwc2h1ZmIgLkxwYWNr X2Jzd2FwKCVyaXApLCAleG1tMTUsICV4bW0xNTsKIAl2cHhvciAwICogMTYoJXJheCksICV4bW0x NSwgJXhtbTA7CiAJdnB4b3IgJXhtbTEsICV4bW0xNSwgJXhtbTE7CiAJdnB4b3IgJXhtbTIsICV4 bW0xNSwgJXhtbTI7CkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBFTlRSWShjYW1lbGxpYV94dHNfZW5j XzE2d2F5KQogCSAqLwogCXhvcmwgJXI4ZCwgJXI4ZDsgLyogaW5wdXQgd2hpdGVuaW5nIGtleSwg MCBmb3IgZW5jICovCiAKLQlsZWFxIF9fY2FtZWxsaWFfZW5jX2JsazE2LCAlcjk7CisJbGVhcSBf X2NhbWVsbGlhX2VuY19ibGsxNiglcmlwKSwgJXI5OwogCiAJam1wIGNhbWVsbGlhX3h0c19jcnlw dF8xNndheTsKIEVORFBST0MoY2FtZWxsaWFfeHRzX2VuY18xNndheSkKQEAgLTEyODIsNyArMTI4 Miw3IEBAIEVOVFJZKGNhbWVsbGlhX3h0c19kZWNfMTZ3YXkpCiAJbW92bCAkMjQsICVlYXg7CiAJ Y21vdmVsICVlYXgsICVyOGQ7ICAvKiBpbnB1dCB3aGl0ZW5pbmcga2V5LCBsYXN0IGZvciBkZWMg Ki8KIAotCWxlYXEgX19jYW1lbGxpYV9kZWNfYmxrMTYsICVyOTsKKwlsZWFxIF9fY2FtZWxsaWFf ZGVjX2JsazE2KCVyaXApLCAlcjk7CiAKIAlqbXAgY2FtZWxsaWFfeHRzX2NyeXB0XzE2d2F5Owog RU5EUFJPQyhjYW1lbGxpYV94dHNfZGVjXzE2d2F5KQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvY3J5 cHRvL2NhbWVsbGlhLWFlc25pLWF2eDItYXNtXzY0LlMgYi9hcmNoL3g4Ni9jcnlwdG8vY2FtZWxs aWEtYWVzbmktYXZ4Mi1hc21fNjQuUwppbmRleCBlZWU1YjM5ODJjZmQuLjkzZGEzMjdmZWM4MyAx MDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2NhbWVsbGlhLWFlc25pLWF2eDItYXNtXzY0LlMK KysrIGIvYXJjaC94ODYvY3J5cHRvL2NhbWVsbGlhLWFlc25pLWF2eDItYXNtXzY0LlMKQEAgLTY5 LDEyICs2OSwxMiBAQAogCS8qIFwKIAkgKiBTLWZ1bmN0aW9uIHdpdGggQUVTIHN1YmJ5dGVzIFwK IAkgKi8gXAotCXZicm9hZGNhc3RpMTI4IC5MaW52X3NoaWZ0X3JvdywgdDQ7IFwKLQl2cGJyb2Fk Y2FzdGQgLkwwZjBmMGYwZiwgdDc7IFwKLQl2YnJvYWRjYXN0aTEyOCAuTHByZV90Zl9sb19zMSwg dDU7IFwKLQl2YnJvYWRjYXN0aTEyOCAuTHByZV90Zl9oaV9zMSwgdDY7IFwKLQl2YnJvYWRjYXN0 aTEyOCAuTHByZV90Zl9sb19zNCwgdDI7IFwKLQl2YnJvYWRjYXN0aTEyOCAuTHByZV90Zl9oaV9z NCwgdDM7IFwKKwl2YnJvYWRjYXN0aTEyOCAuTGludl9zaGlmdF9yb3coJXJpcCksIHQ0OyBcCisJ dnBicm9hZGNhc3RkIC5MMGYwZjBmMGYoJXJpcCksIHQ3OyBcCisJdmJyb2FkY2FzdGkxMjggLkxw cmVfdGZfbG9fczEoJXJpcCksIHQ1OyBcCisJdmJyb2FkY2FzdGkxMjggLkxwcmVfdGZfaGlfczEo JXJpcCksIHQ2OyBcCisJdmJyb2FkY2FzdGkxMjggLkxwcmVfdGZfbG9fczQoJXJpcCksIHQyOyBc CisJdmJyb2FkY2FzdGkxMjggLkxwcmVfdGZfaGlfczQoJXJpcCksIHQzOyBcCiAJXAogCS8qIEFF UyBpbnZlcnNlIHNoaWZ0IHJvd3MgKi8gXAogCXZwc2h1ZmIgdDQsIHgwLCB4MDsgXApAQCAtMTIw LDggKzEyMCw4IEBACiAJdmluc2VydGkxMjggJDEsIHQyIyNfeCwgeDYsIHg2OyBcCiAJdmV4dHJh Y3RpMTI4ICQxLCB4MSwgdDMjI194OyBcCiAJdmV4dHJhY3RpMTI4ICQxLCB4NCwgdDIjI194OyBc Ci0JdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2xvX3MxLCB0MDsgXAotCXZicm9hZGNhc3RpMTI4 IC5McG9zdF90Zl9oaV9zMSwgdDE7IFwKKwl2YnJvYWRjYXN0aTEyOCAuTHBvc3RfdGZfbG9fczEo JXJpcCksIHQwOyBcCisJdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2hpX3MxKCVyaXApLCB0MTsg XAogCXZhZXNlbmNsYXN0IHQ0IyNfeCwgeDIjI194LCB4MiMjX3g7IFwKIAl2YWVzZW5jbGFzdCB0 NCMjX3gsIHQ2IyNfeCwgdDYjI194OyBcCiAJdmluc2VydGkxMjggJDEsIHQ2IyNfeCwgeDIsIHgy OyBcCkBAIC0xMzYsMTYgKzEzNiwxNiBAQAogCXZpbnNlcnRpMTI4ICQxLCB0MiMjX3gsIHg0LCB4 NDsgXAogCVwKIAkvKiBwb3N0ZmlsdGVyIHNib3hlcyAxIGFuZCA0ICovIFwKLQl2YnJvYWRjYXN0 aTEyOCAuTHBvc3RfdGZfbG9fczMsIHQyOyBcCi0JdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2hp X3MzLCB0MzsgXAorCXZicm9hZGNhc3RpMTI4IC5McG9zdF90Zl9sb19zMyglcmlwKSwgdDI7IFwK Kwl2YnJvYWRjYXN0aTEyOCAuTHBvc3RfdGZfaGlfczMoJXJpcCksIHQzOyBcCiAJZmlsdGVyXzhi aXQoeDAsIHQwLCB0MSwgdDcsIHQ2KTsgXAogCWZpbHRlcl84Yml0KHg3LCB0MCwgdDEsIHQ3LCB0 Nik7IFwKIAlmaWx0ZXJfOGJpdCh4MywgdDAsIHQxLCB0NywgdDYpOyBcCiAJZmlsdGVyXzhiaXQo eDYsIHQwLCB0MSwgdDcsIHQ2KTsgXAogCVwKIAkvKiBwb3N0ZmlsdGVyIHNib3ggMyAqLyBcCi0J dmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2xvX3MyLCB0NDsgXAotCXZicm9hZGNhc3RpMTI4IC5M cG9zdF90Zl9oaV9zMiwgdDU7IFwKKwl2YnJvYWRjYXN0aTEyOCAuTHBvc3RfdGZfbG9fczIoJXJp cCksIHQ0OyBcCisJdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2hpX3MyKCVyaXApLCB0NTsgXAog CWZpbHRlcl84Yml0KHgyLCB0MiwgdDMsIHQ3LCB0Nik7IFwKIAlmaWx0ZXJfOGJpdCh4NSwgdDIs IHQzLCB0NywgdDYpOyBcCiAJXApAQCAtNDgyLDcgKzQ4Miw3IEBAIEVORFBST0Mocm91bmRzbTMy X3g0X3g1X3g2X3g3X3gwX3gxX3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogCXRy YW5zcG9zZV80eDQoYzAsIGMxLCBjMiwgYzMsIGEwLCBhMSk7IFwKIAl0cmFuc3Bvc2VfNHg0KGQw LCBkMSwgZDIsIGQzLCBhMCwgYTEpOyBcCiAJXAotCXZicm9hZGNhc3RpMTI4IC5Mc2h1ZmJfMTZ4 MTZiLCBhMDsgXAorCXZicm9hZGNhc3RpMTI4IC5Mc2h1ZmJfMTZ4MTZiKCVyaXApLCBhMDsgXAog CXZtb3ZkcXUgc3QxLCBhMTsgXAogCXZwc2h1ZmIgYTAsIGEyLCBhMjsgXAogCXZwc2h1ZmIgYTAs IGEzLCBhMzsgXApAQCAtNTIxLDcgKzUyMSw3IEBAIEVORFBST0Mocm91bmRzbTMyX3g0X3g1X3g2 X3g3X3gwX3gxX3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogI2RlZmluZSBpbnBh Y2szMl9wcmUoeDAsIHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYsIHg3LCB5MCwgeTEsIHkyLCB5Mywg eTQsIHk1LCBcCiAJCSAgICAgeTYsIHk3LCByaW8sIGtleSkgXAogCXZwYnJvYWRjYXN0cSBrZXks IHgwOyBcCi0JdnBzaHVmYiAuTHBhY2tfYnN3YXAsIHgwLCB4MDsgXAorCXZwc2h1ZmIgLkxwYWNr X2Jzd2FwKCVyaXApLCB4MCwgeDA7IFwKIAlcCiAJdnB4b3IgMCAqIDMyKHJpbyksIHgwLCB5Nzsg XAogCXZweG9yIDEgKiAzMihyaW8pLCB4MCwgeTY7IFwKQEAgLTU3Miw3ICs1NzIsNyBAQCBFTkRQ Uk9DKHJvdW5kc20zMl94NF94NV94Nl94N194MF94MV94Ml94M195NF95NV95Nl95N195MF95MV95 Ml95M19hYikKIAl2bW92ZHF1IHgwLCBzdGFja190bXAwOyBcCiAJXAogCXZwYnJvYWRjYXN0cSBr ZXksIHgwOyBcCi0JdnBzaHVmYiAuTHBhY2tfYnN3YXAsIHgwLCB4MDsgXAorCXZwc2h1ZmIgLkxw YWNrX2Jzd2FwKCVyaXApLCB4MCwgeDA7IFwKIAlcCiAJdnB4b3IgeDAsIHk3LCB5NzsgXAogCXZw eG9yIHgwLCB5NiwgeTY7IFwKQEAgLTExMTIsNyArMTExMiw3IEBAIEVOVFJZKGNhbWVsbGlhX2N0 cl8zMndheSkKIAl2bW92ZHF1ICglcmN4KSwgJXhtbTA7CiAJdm1vdmRxYSAleG1tMCwgJXhtbTE7 CiAJaW5jX2xlMTI4KCV4bW0wLCAleG1tMTUsICV4bW0xNCk7Ci0JdmJyb2FkY2FzdGkxMjggLkxi c3dhcDEyOF9tYXNrLCAleW1tMTQ7CisJdmJyb2FkY2FzdGkxMjggLkxic3dhcDEyOF9tYXNrKCVy aXApLCAleW1tMTQ7CiAJdmluc2VydGkxMjggJDEsICV4bW0wLCAleW1tMSwgJXltbTA7CiAJdnBz aHVmYiAleW1tMTQsICV5bW0wLCAleW1tMTM7CiAJdm1vdmRxdSAleW1tMTMsIDE1ICogMzIoJXJh eCk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBFTlRSWShjYW1lbGxpYV9jdHJfMzJ3YXkpCiAKIAkv KiBpbnBhY2szMl9wcmU6ICovCiAJdnBicm9hZGNhc3RxIChrZXlfdGFibGUpKENUWCksICV5bW0x NTsKLQl2cHNodWZiIC5McGFja19ic3dhcCwgJXltbTE1LCAleW1tMTU7CisJdnBzaHVmYiAuTHBh Y2tfYnN3YXAoJXJpcCksICV5bW0xNSwgJXltbTE1OwogCXZweG9yICV5bW0wLCAleW1tMTUsICV5 bW0wOwogCXZweG9yICV5bW0xLCAleW1tMTUsICV5bW0xOwogCXZweG9yICV5bW0yLCAleW1tMTUs ICV5bW0yOwpAQCAtMTI0MiwxMyArMTI0MiwxMyBAQCBjYW1lbGxpYV94dHNfY3J5cHRfMzJ3YXk6 CiAJc3VicSAkKDE2ICogMzIpLCAlcnNwOwogCW1vdnEgJXJzcCwgJXJheDsKIAotCXZicm9hZGNh c3RpMTI4IC5MeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMCwgJXltbTEyOworCXZicm9hZGNh c3RpMTI4IC5MeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMCglcmlwKSwgJXltbTEyOwogCiAJ LyogbG9hZCBJViBhbmQgY29uc3RydWN0IHNlY29uZCBJViAqLwogCXZtb3ZkcXUgKCVyY3gpLCAl eG1tMDsKIAl2bW92ZHFhICV4bW0wLCAleG1tMTU7CiAJZ2YxMjhtdWxfeF9ibGUoJXhtbTAsICV4 bW0xMiwgJXhtbTEzKTsKLQl2YnJvYWRjYXN0aTEyOCAuTHh0c19nZjEyOG11bF9hbmRfc2hsMV9t YXNrXzEsICV5bW0xMzsKKwl2YnJvYWRjYXN0aTEyOCAuTHh0c19nZjEyOG11bF9hbmRfc2hsMV9t YXNrXzEoJXJpcCksICV5bW0xMzsKIAl2aW5zZXJ0aTEyOCAkMSwgJXhtbTAsICV5bW0xNSwgJXlt bTA7CiAJdnB4b3IgMCAqIDMyKCVyZHgpLCAleW1tMCwgJXltbTE1OwogCXZtb3ZkcXUgJXltbTE1 LCAxNSAqIDMyKCVyYXgpOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgY2FtZWxsaWFfeHRzX2NyeXB0 XzMyd2F5OgogCiAJLyogaW5wYWNrMzJfcHJlOiAqLwogCXZwYnJvYWRjYXN0cSAoa2V5X3RhYmxl KShDVFgsICVyOCwgOCksICV5bW0xNTsKLQl2cHNodWZiIC5McGFja19ic3dhcCwgJXltbTE1LCAl eW1tMTU7CisJdnBzaHVmYiAuTHBhY2tfYnN3YXAoJXJpcCksICV5bW0xNSwgJXltbTE1OwogCXZw eG9yIDAgKiAzMiglcmF4KSwgJXltbTE1LCAleW1tMDsKIAl2cHhvciAleW1tMSwgJXltbTE1LCAl eW1tMTsKIAl2cHhvciAleW1tMiwgJXltbTE1LCAleW1tMjsKQEAgLTEzODMsNyArMTM4Myw3IEBA IEVOVFJZKGNhbWVsbGlhX3h0c19lbmNfMzJ3YXkpCiAKIAl4b3JsICVyOGQsICVyOGQ7IC8qIGlu cHV0IHdoaXRlbmluZyBrZXksIDAgZm9yIGVuYyAqLwogCi0JbGVhcSBfX2NhbWVsbGlhX2VuY19i bGszMiwgJXI5OworCWxlYXEgX19jYW1lbGxpYV9lbmNfYmxrMzIoJXJpcCksICVyOTsKIAogCWpt cCBjYW1lbGxpYV94dHNfY3J5cHRfMzJ3YXk7CiBFTkRQUk9DKGNhbWVsbGlhX3h0c19lbmNfMzJ3 YXkpCkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBFTlRSWShjYW1lbGxpYV94dHNfZGVjXzMyd2F5KQog CW1vdmwgJDI0LCAlZWF4OwogCWNtb3ZlbCAlZWF4LCAlcjhkOyAgLyogaW5wdXQgd2hpdGVuaW5n IGtleSwgbGFzdCBmb3IgZGVjICovCiAKLQlsZWFxIF9fY2FtZWxsaWFfZGVjX2JsazMyLCAlcjk7 CisJbGVhcSBfX2NhbWVsbGlhX2RlY19ibGszMiglcmlwKSwgJXI5OwogCiAJam1wIGNhbWVsbGlh X3h0c19jcnlwdF8zMndheTsKIEVORFBST0MoY2FtZWxsaWFfeHRzX2RlY18zMndheSkKZGlmZiAt LWdpdCBhL2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS14ODZfNjQtYXNtXzY0LlMgYi9hcmNoL3g4 Ni9jcnlwdG8vY2FtZWxsaWEteDg2XzY0LWFzbV82NC5TCmluZGV4IDk1YmE2OTU2YTdmNi4uZWYx MTM3NDA2OTU5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9jcnlwdG8vY2FtZWxsaWEteDg2XzY0LWFz bV82NC5TCisrKyBiL2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS14ODZfNjQtYXNtXzY0LlMKQEAg LTkyLDExICs5MiwxMyBAQAogI2RlZmluZSBSWE9SYmwgJXI5YgogCiAjZGVmaW5lIHhvcjJyb3Ix NihUMCwgVDEsIHRtcDEsIHRtcDIsIGFiLCBkc3QpIFwKKwlsZWFxIFQwKCVyaXApLCAJCQl0bXAx OyBcCiAJbW92emJsIGFiICMjIGJsLAkJdG1wMiAjIyBkOyBcCisJeG9ycSAodG1wMSwgdG1wMiwg OCksCQlkc3Q7IFwKKwlsZWFxIFQxKCVyaXApLCAJCQl0bXAyOyBcCiAJbW92emJsIGFiICMjIGJo LAkJdG1wMSAjIyBkOyBcCi0Jcm9ycSAkMTYsCQkJYWI7IFwKLQl4b3JxIFQwKCwgdG1wMiwgOCks CQlkc3Q7IFwKLQl4b3JxIFQxKCwgdG1wMSwgOCksCQlkc3Q7CisJeG9ycSAodG1wMiwgdG1wMSwg OCksCQlkc3Q7IFwKKwlyb3JxICQxNiwJCQlhYjsKIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgMS13YXkg Y2FtZWxsaWEKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2NyeXB0by9jYXN0NS1hdngteDg2XzY0LWFz bV82NC5TIGIvYXJjaC94ODYvY3J5cHRvL2Nhc3Q1LWF2eC14ODZfNjQtYXNtXzY0LlMKaW5kZXgg ODYxMDdjOTYxYmI0Li42NGViNWM4N2QwNGEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0by9j YXN0NS1hdngteDg2XzY0LWFzbV82NC5TCisrKyBiL2FyY2gveDg2L2NyeXB0by9jYXN0NS1hdngt eDg2XzY0LWFzbV82NC5TCkBAIC05OCwxNiArOTgsMjAgQEAKIAogCiAjZGVmaW5lIGxvb2t1cF8z MmJpdChzcmMsIGRzdCwgb3AxLCBvcDIsIG9wMywgaW50ZXJsZWF2ZV9vcCwgaWxfcmVnKSBcCi0J bW92emJsCQlzcmMgIyMgYmgsICAgICBSSUQxZDsgICAgXAotCW1vdnpibAkJc3JjICMjIGJsLCAg ICAgUklEMmQ7ICAgIFwKLQlzaHJxICQxNiwJc3JjOyAgICAgICAgICAgICAgICAgICAgIFwKLQlt b3ZsCQlzMSgsIFJJRDEsIDQpLCBkc3QgIyMgZDsgXAotCW9wMQkJczIoLCBSSUQyLCA0KSwgZHN0 ICMjIGQ7IFwKLQltb3Z6YmwJCXNyYyAjIyBiaCwgICAgIFJJRDFkOyAgICBcCi0JbW92emJsCQlz cmMgIyMgYmwsICAgICBSSUQyZDsgICAgXAotCWludGVybGVhdmVfb3AoaWxfcmVnKTsJCQkgXAot CW9wMgkJczMoLCBSSUQxLCA0KSwgZHN0ICMjIGQ7IFwKLQlvcDMJCXM0KCwgUklEMiwgNCksIGRz dCAjIyBkOworCW1vdnpibAkJc3JjICMjIGJoLCAgICAgICBSSUQxZDsgICAgXAorCWxlYXEJCXMx KCVyaXApLCAgICAgICAgUklEMjsgICAgIFwKKwltb3ZsCQkoUklEMiwgUklEMSwgNCksIGRzdCAj IyBkOyBcCisJbW92emJsCQlzcmMgIyMgYmwsICAgICAgIFJJRDJkOyAgICBcCisJbGVhcQkJczIo JXJpcCksICAgICAgICBSSUQxOyAgICAgXAorCW9wMQkJKFJJRDEsIFJJRDIsIDQpLCBkc3QgIyMg ZDsgXAorCXNocnEgJDE2LAlzcmM7ICAgICAgICAgICAgICAgICAgICAgICBcCisJbW92emJsCQlz cmMgIyMgYmgsICAgICBSSUQxZDsgICAgICBcCisJbGVhcQkJczMoJXJpcCksICAgICAgICBSSUQy OyAgICAgXAorCW9wMgkJKFJJRDIsIFJJRDEsIDQpLCBkc3QgIyMgZDsgXAorCW1vdnpibAkJc3Jj ICMjIGJsLCAgICAgUklEMmQ7ICAgICAgXAorCWxlYXEJCXM0KCVyaXApLCAgICAgICAgUklEMTsg ICAgIFwKKwlvcDMJCShSSUQxLCBSSUQyLCA0KSwgZHN0ICMjIGQ7IFwKKwlpbnRlcmxlYXZlX29w KGlsX3JlZyk7CiAKICNkZWZpbmUgZHVtbXkoZCkgLyogZG8gbm90aGluZyAqLwogCkBAIC0xNjYs MTUgKzE3MCwxNSBAQAogCXN1YnJvdW5kKGwgIyMgMywgciAjIyAzLCBsICMjIDQsIHIgIyMgNCwg Zik7CiAKICNkZWZpbmUgZW5jX3ByZWxvYWRfcmtyKCkgXAotCXZicm9hZGNhc3RzcwkuTDE2X21h c2ssICAgICAgICAgICAgICAgIFJLUjsgICAgICBcCisJdmJyb2FkY2FzdHNzCS5MMTZfbWFzaygl cmlwKSwgICAgICAgICAgUktSOyAgICAgIFwKIAkvKiBhZGQgMTYtYml0IHJvdGF0aW9uIHRvIGtl eSByb3RhdGlvbnMgKG1vZCAzMikgKi8gXAogCXZweG9yCQlrcihDVFgpLCAgICAgICAgICAgICAg ICAgIFJLUiwgUktSOwogCiAjZGVmaW5lIGRlY19wcmVsb2FkX3JrcigpIFwKLQl2YnJvYWRjYXN0 c3MJLkwxNl9tYXNrLCAgICAgICAgICAgICAgICBSS1I7ICAgICAgXAorCXZicm9hZGNhc3Rzcwku TDE2X21hc2soJXJpcCksICAgICAgICAgIFJLUjsgICAgICBcCiAJLyogYWRkIDE2LWJpdCByb3Rh dGlvbiB0byBrZXkgcm90YXRpb25zIChtb2QgMzIpICovIFwKIAl2cHhvcgkJa3IoQ1RYKSwgICAg ICAgICAgICAgICAgICBSS1IsIFJLUjsgXAotCXZwc2h1ZmIJCS5MYnN3YXAxMjhfbWFzaywgICAg ICAgICAgUktSLCBSS1I7CisJdnBzaHVmYgkJLkxic3dhcDEyOF9tYXNrKCVyaXApLCAgICBSS1Is IFJLUjsKIAogI2RlZmluZSB0cmFuc3Bvc2VfMng0KHgwLCB4MSwgdDAsIHQxKSBcCiAJdnB1bnBj a2xkcQkJeDEsIHgwLCB0MDsgXApAQCAtMjUxLDkgKzI1NSw5IEBAIF9fY2FzdDVfZW5jX2JsazE2 OgogCiAJbW92cSAlcmRpLCBDVFg7CiAKLQl2bW92ZHFhIC5MYnN3YXBfbWFzaywgUktNOwotCXZt b3ZkIC5MZmlyc3RfbWFzaywgUjFTVDsKLQl2bW92ZCAuTDMyX21hc2ssIFIzMjsKKwl2bW92ZHFh IC5MYnN3YXBfbWFzayglcmlwKSwgUktNOworCXZtb3ZkIC5MZmlyc3RfbWFzayglcmlwKSwgUjFT VDsKKwl2bW92ZCAuTDMyX21hc2soJXJpcCksIFIzMjsKIAllbmNfcHJlbG9hZF9ya3IoKTsKIAog CWlucGFja19ibG9ja3MoUkwxLCBSUjEsIFJUTVAsIFJYLCBSS00pOwpAQCAtMjg3LDcgKzI5MSw3 IEBAIF9fY2FzdDVfZW5jX2JsazE2OgogCXBvcHEgJXJieDsKIAlwb3BxICVyMTU7CiAKLQl2bW92 ZHFhIC5MYnN3YXBfbWFzaywgUktNOworCXZtb3ZkcWEgLkxic3dhcF9tYXNrKCVyaXApLCBSS007 CiAKIAlvdXR1bnBhY2tfYmxvY2tzKFJSMSwgUkwxLCBSVE1QLCBSWCwgUktNKTsKIAlvdXR1bnBh Y2tfYmxvY2tzKFJSMiwgUkwyLCBSVE1QLCBSWCwgUktNKTsKQEAgLTMyNSw5ICszMjksOSBAQCBf X2Nhc3Q1X2RlY19ibGsxNjoKIAogCW1vdnEgJXJkaSwgQ1RYOwogCi0Jdm1vdmRxYSAuTGJzd2Fw X21hc2ssIFJLTTsKLQl2bW92ZCAuTGZpcnN0X21hc2ssIFIxU1Q7Ci0Jdm1vdmQgLkwzMl9tYXNr LCBSMzI7CisJdm1vdmRxYSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKKwl2bW92ZCAuTGZpcnN0 X21hc2soJXJpcCksIFIxU1Q7CisJdm1vdmQgLkwzMl9tYXNrKCVyaXApLCBSMzI7CiAJZGVjX3By ZWxvYWRfcmtyKCk7CiAKIAlpbnBhY2tfYmxvY2tzKFJMMSwgUlIxLCBSVE1QLCBSWCwgUktNKTsK QEAgLTM1OCw3ICszNjIsNyBAQCBfX2Nhc3Q1X2RlY19ibGsxNjoKIAlyb3VuZChSTCwgUlIsIDEs IDIpOwogCXJvdW5kKFJSLCBSTCwgMCwgMSk7CiAKLQl2bW92ZHFhIC5MYnN3YXBfbWFzaywgUktN OworCXZtb3ZkcWEgLkxic3dhcF9tYXNrKCVyaXApLCBSS007CiAJcG9wcSAlcmJ4OwogCXBvcHEg JXIxNTsKIApAQCAtNTIxLDggKzUyNSw4IEBAIEVOVFJZKGNhc3Q1X2N0cl8xNndheSkKIAogCXZw Y21wZXFkIFJLUiwgUktSLCBSS1I7CiAJdnBhZGRxIFJLUiwgUktSLCBSS1I7IC8qIGxvdzogLTIs IGhpZ2g6IC0yICovCi0Jdm1vdmRxYSAuTGJzd2FwX2l2X21hc2ssIFIxU1Q7Ci0Jdm1vdmRxYSAu TGJzd2FwMTI4X21hc2ssIFJLTTsKKwl2bW92ZHFhIC5MYnN3YXBfaXZfbWFzayglcmlwKSwgUjFT VDsKKwl2bW92ZHFhIC5MYnN3YXAxMjhfbWFzayglcmlwKSwgUktNOwogCiAJLyogbG9hZCBJViBh bmQgYnl0ZXN3YXAgKi8KIAl2bW92cSAoJXJjeCksIFJYOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv Y3J5cHRvL2Nhc3Q2LWF2eC14ODZfNjQtYXNtXzY0LlMgYi9hcmNoL3g4Ni9jcnlwdG8vY2FzdDYt YXZ4LXg4Nl82NC1hc21fNjQuUwppbmRleCA3ZjMwYjZmMGQ3MmMuLmRhMWI3ZTRhMjNlNCAxMDA2 NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2Nhc3Q2LWF2eC14ODZfNjQtYXNtXzY0LlMKKysrIGIv YXJjaC94ODYvY3J5cHRvL2Nhc3Q2LWF2eC14ODZfNjQtYXNtXzY0LlMKQEAgLTk4LDE2ICs5OCwy MCBAQAogCiAKICNkZWZpbmUgbG9va3VwXzMyYml0KHNyYywgZHN0LCBvcDEsIG9wMiwgb3AzLCBp bnRlcmxlYXZlX29wLCBpbF9yZWcpIFwKLQltb3Z6YmwJCXNyYyAjIyBiaCwgICAgIFJJRDFkOyAg ICBcCi0JbW92emJsCQlzcmMgIyMgYmwsICAgICBSSUQyZDsgICAgXAotCXNocnEgJDE2LAlzcmM7 ICAgICAgICAgICAgICAgICAgICAgXAotCW1vdmwJCXMxKCwgUklEMSwgNCksIGRzdCAjIyBkOyBc Ci0Jb3AxCQlzMigsIFJJRDIsIDQpLCBkc3QgIyMgZDsgXAotCW1vdnpibAkJc3JjICMjIGJoLCAg ICAgUklEMWQ7ICAgIFwKLQltb3Z6YmwJCXNyYyAjIyBibCwgICAgIFJJRDJkOyAgICBcCi0JaW50 ZXJsZWF2ZV9vcChpbF9yZWcpOwkJCSBcCi0Jb3AyCQlzMygsIFJJRDEsIDQpLCBkc3QgIyMgZDsg XAotCW9wMwkJczQoLCBSSUQyLCA0KSwgZHN0ICMjIGQ7CisJbW92emJsCQlzcmMgIyMgYmgsICAg ICAgIFJJRDFkOyAgICBcCisJbGVhcQkJczEoJXJpcCksICAgICAgICBSSUQyOyAgICAgXAorCW1v dmwJCShSSUQyLCBSSUQxLCA0KSwgZHN0ICMjIGQ7IFwKKwltb3Z6YmwJCXNyYyAjIyBibCwgICAg ICAgUklEMmQ7ICAgIFwKKwlsZWFxCQlzMiglcmlwKSwgICAgICAgIFJJRDE7ICAgICBcCisJb3Ax CQkoUklEMSwgUklEMiwgNCksIGRzdCAjIyBkOyBcCisJc2hycSAkMTYsCXNyYzsgICAgICAgICAg ICAgICAgICAgICAgIFwKKwltb3Z6YmwJCXNyYyAjIyBiaCwgICAgIFJJRDFkOyAgICAgIFwKKwls ZWFxCQlzMyglcmlwKSwgICAgICAgIFJJRDI7ICAgICBcCisJb3AyCQkoUklEMiwgUklEMSwgNCks IGRzdCAjIyBkOyBcCisJbW92emJsCQlzcmMgIyMgYmwsICAgICBSSUQyZDsgICAgICBcCisJbGVh cQkJczQoJXJpcCksICAgICAgICBSSUQxOyAgICAgXAorCW9wMwkJKFJJRDEsIFJJRDIsIDQpLCBk c3QgIyMgZDsgXAorCWludGVybGVhdmVfb3AoaWxfcmVnKTsKIAogI2RlZmluZSBkdW1teShkKSAv KiBkbyBub3RoaW5nICovCiAKQEAgLTE5MCwxMCArMTk0LDEwIEBACiAJcW9wKFJELCBSQywgMSk7 CiAKICNkZWZpbmUgc2h1ZmZsZShtYXNrKSBcCi0JdnBzaHVmYgkJbWFzaywgICAgICAgICAgICBS S1IsIFJLUjsKKwl2cHNodWZiCQltYXNrKCVyaXApLCAgICAgICAgICAgIFJLUiwgUktSOwogCiAj ZGVmaW5lIHByZWxvYWRfcmtyKG4sIGRvX21hc2ssIG1hc2spIFwKLQl2YnJvYWRjYXN0c3MJLkwx Nl9tYXNrLCAgICAgICAgICAgICAgICBSS1I7ICAgICAgXAorCXZicm9hZGNhc3RzcwkuTDE2X21h c2soJXJpcCksICAgICAgICAgIFJLUjsgICAgICBcCiAJLyogYWRkIDE2LWJpdCByb3RhdGlvbiB0 byBrZXkgcm90YXRpb25zIChtb2QgMzIpICovIFwKIAl2cHhvcgkJKGtyK24qMTYpKENUWCksICAg ICAgICAgICBSS1IsIFJLUjsgXAogCWRvX21hc2sobWFzayk7CkBAIC0yNzUsOSArMjc5LDkgQEAg X19jYXN0Nl9lbmNfYmxrODoKIAogCW1vdnEgJXJkaSwgQ1RYOwogCi0Jdm1vdmRxYSAuTGJzd2Fw X21hc2ssIFJLTTsKLQl2bW92ZCAuTGZpcnN0X21hc2ssIFIxU1Q7Ci0Jdm1vdmQgLkwzMl9tYXNr LCBSMzI7CisJdm1vdmRxYSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKKwl2bW92ZCAuTGZpcnN0 X21hc2soJXJpcCksIFIxU1Q7CisJdm1vdmQgLkwzMl9tYXNrKCVyaXApLCBSMzI7CiAKIAlpbnBh Y2tfYmxvY2tzKFJBMSwgUkIxLCBSQzEsIFJEMSwgUlRNUCwgUlgsIFJLUkYsIFJLTSk7CiAJaW5w YWNrX2Jsb2NrcyhSQTIsIFJCMiwgUkMyLCBSRDIsIFJUTVAsIFJYLCBSS1JGLCBSS00pOwpAQCAt MzAxLDcgKzMwNSw3IEBAIF9fY2FzdDZfZW5jX2Jsazg6CiAJcG9wcSAlcmJ4OwogCXBvcHEgJXIx NTsKIAotCXZtb3ZkcWEgLkxic3dhcF9tYXNrLCBSS007CisJdm1vdmRxYSAuTGJzd2FwX21hc2so JXJpcCksIFJLTTsKIAogCW91dHVucGFja19ibG9ja3MoUkExLCBSQjEsIFJDMSwgUkQxLCBSVE1Q LCBSWCwgUktSRiwgUktNKTsKIAlvdXR1bnBhY2tfYmxvY2tzKFJBMiwgUkIyLCBSQzIsIFJEMiwg UlRNUCwgUlgsIFJLUkYsIFJLTSk7CkBAIC0zMjMsOSArMzI3LDkgQEAgX19jYXN0Nl9kZWNfYmxr ODoKIAogCW1vdnEgJXJkaSwgQ1RYOwogCi0Jdm1vdmRxYSAuTGJzd2FwX21hc2ssIFJLTTsKLQl2 bW92ZCAuTGZpcnN0X21hc2ssIFIxU1Q7Ci0Jdm1vdmQgLkwzMl9tYXNrLCBSMzI7CisJdm1vdmRx YSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKKwl2bW92ZCAuTGZpcnN0X21hc2soJXJpcCksIFIx U1Q7CisJdm1vdmQgLkwzMl9tYXNrKCVyaXApLCBSMzI7CiAKIAlpbnBhY2tfYmxvY2tzKFJBMSwg UkIxLCBSQzEsIFJEMSwgUlRNUCwgUlgsIFJLUkYsIFJLTSk7CiAJaW5wYWNrX2Jsb2NrcyhSQTIs IFJCMiwgUkMyLCBSRDIsIFJUTVAsIFJYLCBSS1JGLCBSS00pOwpAQCAtMzQ5LDcgKzM1Myw3IEBA IF9fY2FzdDZfZGVjX2Jsazg6CiAJcG9wcSAlcmJ4OwogCXBvcHEgJXIxNTsKIAotCXZtb3ZkcWEg Lkxic3dhcF9tYXNrLCBSS007CisJdm1vdmRxYSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKIAlv dXR1bnBhY2tfYmxvY2tzKFJBMSwgUkIxLCBSQzEsIFJEMSwgUlRNUCwgUlgsIFJLUkYsIFJLTSk7 CiAJb3V0dW5wYWNrX2Jsb2NrcyhSQTIsIFJCMiwgUkMyLCBSRDIsIFJUTVAsIFJYLCBSS1JGLCBS S00pOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vZGVzM19lZGUtYXNtXzY0LlMgYi9h cmNoL3g4Ni9jcnlwdG8vZGVzM19lZGUtYXNtXzY0LlMKaW5kZXggOGU0OWNlMTE3NDk0Li40YmJk M2VjNzhkZjUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0by9kZXMzX2VkZS1hc21fNjQuUwor KysgYi9hcmNoL3g4Ni9jcnlwdG8vZGVzM19lZGUtYXNtXzY0LlMKQEAgLTEzOCwyMSArMTM4LDI5 IEBACiAJbW92emJsIFJXMGJsLCBSVDJkOyBcCiAJbW92emJsIFJXMGJoLCBSVDNkOyBcCiAJc2hy cSAkMTYsIFJXMDsgXAotCW1vdnEgczgoLCBSVDAsIDgpLCBSVDA7IFwKLQl4b3JxIHM2KCwgUlQx LCA4KSwgdG87IFwKKwlsZWFxIHM4KCVyaXApLCBSVzE7IFwKKwltb3ZxIChSVzEsIFJUMCwgOCks IFJUMDsgXAorCWxlYXEgczYoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwgUlQxLCA4KSwgdG87 IFwKIAltb3Z6YmwgUlcwYmwsIFJMMWQ7IFwKIAltb3Z6YmwgUlcwYmgsIFJUMWQ7IFwKIAlzaHJs ICQxNiwgUlcwZDsgXAotCXhvcnEgczQoLCBSVDIsIDgpLCBSVDA7IFwKLQl4b3JxIHMyKCwgUlQz LCA4KSwgdG87IFwKKwlsZWFxIHM0KCVyaXApLCBSVzE7IFwKKwl4b3JxIChSVzEsIFJUMiwgOCks IFJUMDsgXAorCWxlYXEgczIoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwgUlQzLCA4KSwgdG87 IFwKIAltb3Z6YmwgUlcwYmwsIFJUMmQ7IFwKIAltb3Z6YmwgUlcwYmgsIFJUM2Q7IFwKLQl4b3Jx IHM3KCwgUkwxLCA4KSwgUlQwOyBcCi0JeG9ycSBzNSgsIFJUMSwgOCksIHRvOyBcCi0JeG9ycSBz MygsIFJUMiwgOCksIFJUMDsgXAorCWxlYXEgczcoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwg UkwxLCA4KSwgUlQwOyBcCisJbGVhcSBzNSglcmlwKSwgUlcxOyBcCisJeG9ycSAoUlcxLCBSVDEs IDgpLCB0bzsgXAorCWxlYXEgczMoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwgUlQyLCA4KSwg UlQwOyBcCiAJbG9hZF9uZXh0X2tleShuLCBSVzApOyBcCiAJeG9ycSBSVDAsIHRvOyBcCi0JeG9y cSBzMSgsIFJUMywgOCksIHRvOyBcCisJbGVhcSBzMSglcmlwKSwgUlcxOyBcCisJeG9ycSAoUlcx LCBSVDMsIDgpLCB0bzsgXAogCiAjZGVmaW5lIGxvYWRfbmV4dF9rZXkobiwgUld4KSBcCiAJbW92 cSAoKChuKSArIDEpICogOCkoQ1RYKSwgUld4OwpAQCAtMzY0LDY1ICszNzIsODkgQEAgRU5EUFJP QyhkZXMzX2VkZV94ODZfNjRfY3J5cHRfYmxrKQogCW1vdnpibCBSVzBibCwgUlQzZDsgXAogCW1v dnpibCBSVzBiaCwgUlQxZDsgXAogCXNocnEgJDE2LCBSVzA7IFwKLQl4b3JxIHM4KCwgUlQzLCA4 KSwgdG8jIzA7IFwKLQl4b3JxIHM2KCwgUlQxLCA4KSwgdG8jIzA7IFwKKwlsZWFxIHM4KCVyaXAp LCBSVDI7IFwKKwl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMwOyBcCisJbGVhcSBzNiglcmlwKSwg UlQyOyBcCisJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMDsgXAogCW1vdnpibCBSVzBibCwgUlQz ZDsgXAogCW1vdnpibCBSVzBiaCwgUlQxZDsgXAogCXNocnEgJDE2LCBSVzA7IFwKLQl4b3JxIHM0 KCwgUlQzLCA4KSwgdG8jIzA7IFwKLQl4b3JxIHMyKCwgUlQxLCA4KSwgdG8jIzA7IFwKKwlsZWFx IHM0KCVyaXApLCBSVDI7IFwKKwl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMwOyBcCisJbGVhcSBz MiglcmlwKSwgUlQyOyBcCisJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMDsgXAogCW1vdnpibCBS VzBibCwgUlQzZDsgXAogCW1vdnpibCBSVzBiaCwgUlQxZDsgXAogCXNocmwgJDE2LCBSVzBkOyBc Ci0JeG9ycSBzNygsIFJUMywgOCksIHRvIyMwOyBcCi0JeG9ycSBzNSgsIFJUMSwgOCksIHRvIyMw OyBcCisJbGVhcSBzNyglcmlwKSwgUlQyOyBcCisJeG9ycSAoUlQyLCBSVDMsIDgpLCB0byMjMDsg XAorCWxlYXEgczUoJXJpcCksIFJUMjsgXAorCXhvcnEgKFJUMiwgUlQxLCA4KSwgdG8jIzA7IFwK IAltb3Z6YmwgUlcwYmwsIFJUM2Q7IFwKIAltb3Z6YmwgUlcwYmgsIFJUMWQ7IFwKIAlsb2FkX25l eHRfa2V5KG4sIFJXMCk7IFwKLQl4b3JxIHMzKCwgUlQzLCA4KSwgdG8jIzA7IFwKLQl4b3JxIHMx KCwgUlQxLCA4KSwgdG8jIzA7IFwKKwlsZWFxIHMzKCVyaXApLCBSVDI7IFwKKwl4b3JxIChSVDIs IFJUMywgOCksIHRvIyMwOyBcCisJbGVhcSBzMSglcmlwKSwgUlQyOyBcCisJeG9ycSAoUlQyLCBS VDEsIDgpLCB0byMjMDsgXAogCQl4b3JxIGZyb20jIzEsIFJXMTsgXAogCQltb3Z6YmwgUlcxYmws IFJUM2Q7IFwKIAkJbW92emJsIFJXMWJoLCBSVDFkOyBcCiAJCXNocnEgJDE2LCBSVzE7IFwKLQkJ eG9ycSBzOCgsIFJUMywgOCksIHRvIyMxOyBcCi0JCXhvcnEgczYoLCBSVDEsIDgpLCB0byMjMTsg XAorCQlsZWFxIHM4KCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQyLCBSVDMsIDgpLCB0byMjMTsg XAorCQlsZWFxIHM2KCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMTsg XAogCQltb3Z6YmwgUlcxYmwsIFJUM2Q7IFwKIAkJbW92emJsIFJXMWJoLCBSVDFkOyBcCiAJCXNo cnEgJDE2LCBSVzE7IFwKLQkJeG9ycSBzNCgsIFJUMywgOCksIHRvIyMxOyBcCi0JCXhvcnEgczIo LCBSVDEsIDgpLCB0byMjMTsgXAorCQlsZWFxIHM0KCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQy LCBSVDMsIDgpLCB0byMjMTsgXAorCQlsZWFxIHMyKCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQy LCBSVDEsIDgpLCB0byMjMTsgXAogCQltb3Z6YmwgUlcxYmwsIFJUM2Q7IFwKIAkJbW92emJsIFJX MWJoLCBSVDFkOyBcCiAJCXNocmwgJDE2LCBSVzFkOyBcCi0JCXhvcnEgczcoLCBSVDMsIDgpLCB0 byMjMTsgXAotCQl4b3JxIHM1KCwgUlQxLCA4KSwgdG8jIzE7IFwKKwkJbGVhcSBzNyglcmlwKSwg UlQyOyBcCisJCXhvcnEgKFJUMiwgUlQzLCA4KSwgdG8jIzE7IFwKKwkJbGVhcSBzNSglcmlwKSwg UlQyOyBcCisJCXhvcnEgKFJUMiwgUlQxLCA4KSwgdG8jIzE7IFwKIAkJbW92emJsIFJXMWJsLCBS VDNkOyBcCiAJCW1vdnpibCBSVzFiaCwgUlQxZDsgXAogCQlkb19tb3ZxKFJXMCwgUlcxKTsgXAot CQl4b3JxIHMzKCwgUlQzLCA4KSwgdG8jIzE7IFwKLQkJeG9ycSBzMSgsIFJUMSwgOCksIHRvIyMx OyBcCisJCWxlYXEgczMoJXJpcCksIFJUMjsgXAorCQl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMx OyBcCisJCWxlYXEgczEoJXJpcCksIFJUMjsgXAorCQl4b3JxIChSVDIsIFJUMSwgOCksIHRvIyMx OyBcCiAJCQl4b3JxIGZyb20jIzIsIFJXMjsgXAogCQkJbW92emJsIFJXMmJsLCBSVDNkOyBcCiAJ CQltb3Z6YmwgUlcyYmgsIFJUMWQ7IFwKIAkJCXNocnEgJDE2LCBSVzI7IFwKLQkJCXhvcnEgczgo LCBSVDMsIDgpLCB0byMjMjsgXAotCQkJeG9ycSBzNigsIFJUMSwgOCksIHRvIyMyOyBcCisJCQls ZWFxIHM4KCVyaXApLCBSVDI7IFwKKwkJCXhvcnEgKFJUMiwgUlQzLCA4KSwgdG8jIzI7IFwKKwkJ CWxlYXEgczYoJXJpcCksIFJUMjsgXAorCQkJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMjsgXAog CQkJbW92emJsIFJXMmJsLCBSVDNkOyBcCiAJCQltb3Z6YmwgUlcyYmgsIFJUMWQ7IFwKIAkJCXNo cnEgJDE2LCBSVzI7IFwKLQkJCXhvcnEgczQoLCBSVDMsIDgpLCB0byMjMjsgXAotCQkJeG9ycSBz MigsIFJUMSwgOCksIHRvIyMyOyBcCisJCQlsZWFxIHM0KCVyaXApLCBSVDI7IFwKKwkJCXhvcnEg KFJUMiwgUlQzLCA4KSwgdG8jIzI7IFwKKwkJCWxlYXEgczIoJXJpcCksIFJUMjsgXAorCQkJeG9y cSAoUlQyLCBSVDEsIDgpLCB0byMjMjsgXAogCQkJbW92emJsIFJXMmJsLCBSVDNkOyBcCiAJCQlt b3Z6YmwgUlcyYmgsIFJUMWQ7IFwKIAkJCXNocmwgJDE2LCBSVzJkOyBcCi0JCQl4b3JxIHM3KCwg UlQzLCA4KSwgdG8jIzI7IFwKLQkJCXhvcnEgczUoLCBSVDEsIDgpLCB0byMjMjsgXAorCQkJbGVh cSBzNyglcmlwKSwgUlQyOyBcCisJCQl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMyOyBcCisJCQls ZWFxIHM1KCVyaXApLCBSVDI7IFwKKwkJCXhvcnEgKFJUMiwgUlQxLCA4KSwgdG8jIzI7IFwKIAkJ CW1vdnpibCBSVzJibCwgUlQzZDsgXAogCQkJbW92emJsIFJXMmJoLCBSVDFkOyBcCiAJCQlkb19t b3ZxKFJXMCwgUlcyKTsgXAotCQkJeG9ycSBzMygsIFJUMywgOCksIHRvIyMyOyBcCi0JCQl4b3Jx IHMxKCwgUlQxLCA4KSwgdG8jIzI7CisJCQlsZWFxIHMzKCVyaXApLCBSVDI7IFwKKwkJCXhvcnEg KFJUMiwgUlQzLCA4KSwgdG8jIzI7IFwKKwkJCWxlYXEgczEoJXJpcCksIFJUMjsgXAorCQkJeG9y cSAoUlQyLCBSVDEsIDgpLCB0byMjMjsKIAogI2RlZmluZSBfX21vdnEoc3JjLCBkc3QpIFwKIAlt b3ZxIHNyYywgZHN0OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvY3J5cHRvL2doYXNoLWNsbXVsbmkt aW50ZWxfYXNtLlMgYi9hcmNoL3g4Ni9jcnlwdG8vZ2hhc2gtY2xtdWxuaS1pbnRlbF9hc20uUwpp bmRleCBmOTQzNzVhOGRjZDEuLmQ1NmEyODEyMjFmYiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5 cHRvL2doYXNoLWNsbXVsbmktaW50ZWxfYXNtLlMKKysrIGIvYXJjaC94ODYvY3J5cHRvL2doYXNo LWNsbXVsbmktaW50ZWxfYXNtLlMKQEAgLTk3LDcgKzk3LDcgQEAgRU5UUlkoY2xtdWxfZ2hhc2hf bXVsKQogCUZSQU1FX0JFR0lOCiAJbW92dXBzICglcmRpKSwgREFUQQogCW1vdnVwcyAoJXJzaSks IFNIQVNICi0JbW92YXBzIC5MYnN3YXBfbWFzaywgQlNXQVAKKwltb3ZhcHMgLkxic3dhcF9tYXNr KCVyaXApLCBCU1dBUAogCVBTSFVGQl9YTU0gQlNXQVAgREFUQQogCWNhbGwgX19jbG11bF9nZjEy OG11bF9ibGUKIAlQU0hVRkJfWE1NIEJTV0FQIERBVEEKQEAgLTExNCw3ICsxMTQsNyBAQCBFTlRS WShjbG11bF9naGFzaF91cGRhdGUpCiAJRlJBTUVfQkVHSU4KIAljbXAgJDE2LCAlcmR4CiAJamIg Lkx1cGRhdGVfanVzdF9yZXQJIyBjaGVjayBsZW5ndGgKLQltb3ZhcHMgLkxic3dhcF9tYXNrLCBC U1dBUAorCW1vdmFwcyAuTGJzd2FwX21hc2soJXJpcCksIEJTV0FQCiAJbW92dXBzICglcmRpKSwg REFUQQogCW1vdnVwcyAoJXJjeCksIFNIQVNICiAJUFNIVUZCX1hNTSBCU1dBUCBEQVRBCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eC5TIGIvYXJjaC94ODYv Y3J5cHRvL2dsdWVfaGVscGVyLWFzbS1hdnguUwppbmRleCAwMmVlMjMwOGZiMzguLjhhNDlhYjE2 OTllZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2dsdWVfaGVscGVyLWFzbS1hdnguUwor KysgYi9hcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eC5TCkBAIC01NCw3ICs1NCw3 IEBACiAjZGVmaW5lIGxvYWRfY3RyXzh3YXkoaXYsIGJzd2FwLCB4MCwgeDEsIHgyLCB4MywgeDQs IHg1LCB4NiwgeDcsIHQwLCB0MSwgdDIpIFwKIAl2cGNtcGVxZCB0MCwgdDAsIHQwOyBcCiAJdnBz cmxkcSAkOCwgdDAsIHQwOyAvKiBsb3c6IC0xLCBoaWdoOiAwICovIFwKLQl2bW92ZHFhIGJzd2Fw LCB0MTsgXAorCXZtb3ZkcWEgYnN3YXAoJXJpcCksIHQxOyBcCiAJXAogCS8qIGxvYWQgSVYgYW5k IGJ5dGVzd2FwICovIFwKIAl2bW92ZHF1IChpdiksIHg3OyBcCkBAIC05OSw3ICs5OSw3IEBACiAK ICNkZWZpbmUgbG9hZF94dHNfOHdheShpdiwgc3JjLCBkc3QsIHgwLCB4MSwgeDIsIHgzLCB4NCwg eDUsIHg2LCB4NywgdGl2LCB0MCwgXAogCQkgICAgICB0MSwgeHRzX2dmMTI4bXVsX2FuZF9zaGwx X21hc2spIFwKLQl2bW92ZHFhIHh0c19nZjEyOG11bF9hbmRfc2hsMV9tYXNrLCB0MDsgXAorCXZt b3ZkcWEgeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2soJXJpcCksIHQwOyBcCiAJXAogCS8qIGxv YWQgSVYgKi8gXAogCXZtb3ZkcXUgKGl2KSwgdGl2OyBcCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9j cnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eDIuUyBiL2FyY2gveDg2L2NyeXB0by9nbHVlX2hlbHBl ci1hc20tYXZ4Mi5TCmluZGV4IGE1M2FjMTFkZDM4NS4uZTA0YzgwNDY3YmQyIDEwMDY0NAotLS0g YS9hcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eDIuUworKysgYi9hcmNoL3g4Ni9j cnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eDIuUwpAQCAtNjcsNyArNjcsNyBAQAogCXZtb3ZkcXUg KGl2KSwgdDJ4OyBcCiAJdm1vdmRxYSB0MngsIHQzeDsgXAogCWluY19sZTEyOCh0MngsIHQweCwg dDF4KTsgXAotCXZicm9hZGNhc3RpMTI4IGJzd2FwLCB0MTsgXAorCXZicm9hZGNhc3RpMTI4IGJz d2FwKCVyaXApLCB0MTsgXAogCXZpbnNlcnRpMTI4ICQxLCB0MngsIHQzLCB0MjsgLyogYWI6IGxl MCA7IGNkOiBsZTEgKi8gXAogCXZwc2h1ZmIgdDEsIHQyLCB4MDsgXAogCVwKQEAgLTEyNCwxMyAr MTI0LDEzIEBACiAJCSAgICAgICB0aXZ4LCB0MCwgdDB4LCB0MSwgdDF4LCB0MiwgdDJ4LCB0Mywg XAogCQkgICAgICAgeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMCwgXAogCQkgICAgICAgeHRz X2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMSkgXAotCXZicm9hZGNhc3RpMTI4IHh0c19nZjEyOG11 bF9hbmRfc2hsMV9tYXNrXzAsIHQxOyBcCisJdmJyb2FkY2FzdGkxMjggeHRzX2dmMTI4bXVsX2Fu ZF9zaGwxX21hc2tfMCglcmlwKSwgdDE7IFwKIAlcCiAJLyogbG9hZCBJViBhbmQgY29uc3RydWN0 IHNlY29uZCBJViAqLyBcCiAJdm1vdmRxdSAoaXYpLCB0aXZ4OyBcCiAJdm1vdmRxYSB0aXZ4LCB0 MHg7IFwKIAlnZjEyOG11bF94X2JsZSh0aXZ4LCB0MXgsIHQyeCk7IFwKLQl2YnJvYWRjYXN0aTEy OCB4dHNfZ2YxMjhtdWxfYW5kX3NobDFfbWFza18xLCB0MjsgXAorCXZicm9hZGNhc3RpMTI4IHh0 c19nZjEyOG11bF9hbmRfc2hsMV9tYXNrXzEoJXJpcCksIHQyOyBcCiAJdmluc2VydGkxMjggJDEs IHRpdngsIHQwLCB0aXY7IFwKIAl2cHhvciAoMCozMikoc3JjKSwgdGl2LCB4MDsgXAogCXZtb3Zk cXUgdGl2LCAoMCozMikoZHN0KTsgXAotLSAKMi4xNC4yLjkyMC5nY2YwYzY3OTc5Yy1nb29nCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 01/27] x86/crypto: Adapt assembly for PIE support Date: Wed, 4 Oct 2017 14:19:37 -0700 Message-ID: <20171004212003.28296-2-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Bor Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org Q2hhbmdlIHRoZSBhc3NlbWJseSBjb2RlIHRvIHVzZSBvbmx5IHJlbGF0aXZlIHJlZmVyZW5jZXMg b2Ygc3ltYm9scyBmb3IgdGhlCmtlcm5lbCB0byBiZSBQSUUgY29tcGF0aWJsZS4KClBvc2l0aW9u IEluZGVwZW5kZW50IEV4ZWN1dGFibGUgKFBJRSkgc3VwcG9ydCB3aWxsIGFsbG93IHRvIGV4dGVu ZGVkIHRoZQpLQVNMUiByYW5kb21pemF0aW9uIHJhbmdlIGJlbG93IHRoZSAtMkcgbWVtb3J5IGxp bWl0LgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdhcm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+ Ci0tLQogYXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMgICAgICAgICAgfCA0NSAr KysrKysrKy0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMgICAgICAgICAg ICB8IDE0ICsrLS0KIGFyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRlbF9hdngteDg2XzY0LlMgICAg IHwgIDYgKy0KIGFyY2gveDg2L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMgIHwg NDIgKysrKysrLS0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8vY2FtZWxsaWEtYWVzbmktYXZ4Mi1hc21f NjQuUyB8IDQ0ICsrKysrKy0tLS0tLS0KIGFyY2gveDg2L2NyeXB0by9jYW1lbGxpYS14ODZfNjQt YXNtXzY0LlMgICAgIHwgIDggKystCiBhcmNoL3g4Ni9jcnlwdG8vY2FzdDUtYXZ4LXg4Nl82NC1h c21fNjQuUyAgICB8IDUwICsrKysrKysrLS0tLS0tLQogYXJjaC94ODYvY3J5cHRvL2Nhc3Q2LWF2 eC14ODZfNjQtYXNtXzY0LlMgICAgfCA0NCArKysrKysrLS0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8v ZGVzM19lZGUtYXNtXzY0LlMgICAgICAgICAgICB8IDk2ICsrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0KIGFyY2gveDg2L2NyeXB0by9naGFzaC1jbG11bG5pLWludGVsX2FzbS5TICAgIHwgIDQg Ky0KIGFyY2gveDg2L2NyeXB0by9nbHVlX2hlbHBlci1hc20tYXZ4LlMgICAgICAgIHwgIDQgKy0K IGFyY2gveDg2L2NyeXB0by9nbHVlX2hlbHBlci1hc20tYXZ4Mi5TICAgICAgIHwgIDYgKy0KIDEy IGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvYXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMgYi9hcmNoL3g4Ni9j cnlwdG8vYWVzLXg4Nl82NC1hc21fNjQuUwppbmRleCA4NzM5Y2Y3Nzk1ZGUuLjg2ZmEwNjhlNWU4 MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMKKysrIGIv YXJjaC94ODYvY3J5cHRvL2Flcy14ODZfNjQtYXNtXzY0LlMKQEAgLTQ4LDggKzQ4LDEyIEBACiAj ZGVmaW5lIFIxMAklcjEwCiAjZGVmaW5lIFIxMQklcjExCiAKKy8qIEhvbGQgZ2xvYmFsIGZvciBQ SUUgc3Vwb3J0ICovCisjZGVmaW5lIFJCQVNFCSVyMTIKKwogI2RlZmluZSBwcm9sb2d1ZShGVU5D LEtFWSxCMTI4LEIxOTIscjEscjIscjUscjYscjcscjgscjkscjEwLHIxMSkgXAogCUVOVFJZKEZV TkMpOwkJCVwKKwlwdXNocQlSQkFTRTsJCQlcCiAJbW92cQlyMSxyMjsJCQlcCiAJbGVhcQlLRVkr NDgocjgpLHI5OwkJXAogCW1vdnEJcjEwLHIxMTsJCVwKQEAgLTc0LDU0ICs3OCw2MyBAQAogCW1v dmwJcjYgIyMgRSw0KHI5KTsJCVwKIAltb3ZsCXI3ICMjIEUsOChyOSk7CQlcCiAJbW92bAlyOCAj IyBFLDEyKHI5KTsJCVwKKwlwb3BxCVJCQVNFOwkJCVwKIAlyZXQ7CQkJCVwKIAlFTkRQUk9DKEZV TkMpOwogCisjZGVmaW5lIHJvdW5kX21vdih0YWJfb2ZmLCByZWdfaSwgcmVnX28pIFwKKwlsZWFx CXRhYl9vZmYoJXJpcCksIFJCQVNFOyBcCisJbW92bAkoUkJBU0UscmVnX2ksNCksIHJlZ19vOwor CisjZGVmaW5lIHJvdW5kX3hvcih0YWJfb2ZmLCByZWdfaSwgcmVnX28pIFwKKwlsZWFxCXRhYl9v ZmYoJXJpcCksIFJCQVNFOyBcCisJeG9ybAkoUkJBU0UscmVnX2ksNCksIHJlZ19vOworCiAjZGVm aW5lIHJvdW5kKFRBQixPRkZTRVQscjEscjIscjMscjQscjUscjYscjcscjgscmEscmIscmMscmQp IFwKIAltb3Z6YmwJcjIgIyMgSCxyNSAjIyBFOwlcCiAJbW92emJsCXIyICMjIEwscjYgIyMgRTsJ XAotCW1vdmwJVEFCKzEwMjQoLHI1LDQpLHI1ICMjIEU7XAorCXJvdW5kX21vdihUQUIrMTAyNCwg cjUsIHI1ICMjIEUpXAogCW1vdncJcjQgIyMgWCxyMiAjIyBYOwlcCi0JbW92bAlUQUIoLHI2LDQp LHI2ICMjIEU7CVwKKwlyb3VuZF9tb3YoVEFCLCByNiwgcjYgIyMgRSkJXAogCXJvbGwJJDE2LHIy ICMjIEU7CQlcCiAJc2hybAkkMTYscjQgIyMgRTsJCVwKIAltb3Z6YmwJcjQgIyMgTCxyNyAjIyBF OwlcCiAJbW92emJsCXI0ICMjIEgscjQgIyMgRTsJXAogCXhvcmwJT0ZGU0VUKHI4KSxyYSAjIyBF OwlcCiAJeG9ybAlPRkZTRVQrNChyOCkscmIgIyMgRTsJXAotCXhvcmwJVEFCKzMwNzIoLHI0LDQp LHI1ICMjIEU7XAotCXhvcmwJVEFCKzIwNDgoLHI3LDQpLHI2ICMjIEU7XAorCXJvdW5kX3hvcihU QUIrMzA3MiwgcjQsIHI1ICMjIEUpXAorCXJvdW5kX3hvcihUQUIrMjA0OCwgcjcsIHI2ICMjIEUp XAogCW1vdnpibAlyMSAjIyBMLHI3ICMjIEU7CVwKIAltb3Z6YmwJcjEgIyMgSCxyNCAjIyBFOwlc Ci0JbW92bAlUQUIrMTAyNCgscjQsNCkscjQgIyMgRTtcCisJcm91bmRfbW92KFRBQisxMDI0LCBy NCwgcjQgIyMgRSlcCiAJbW92dwlyMyAjIyBYLHIxICMjIFg7CVwKIAlyb2xsCSQxNixyMSAjIyBF OwkJXAogCXNocmwJJDE2LHIzICMjIEU7CQlcCi0JeG9ybAlUQUIoLHI3LDQpLHI1ICMjIEU7CVwK Kwlyb3VuZF94b3IoVEFCLCByNywgcjUgIyMgRSkJXAogCW1vdnpibAlyMyAjIyBMLHI3ICMjIEU7 CVwKIAltb3Z6YmwJcjMgIyMgSCxyMyAjIyBFOwlcCi0JeG9ybAlUQUIrMzA3MigscjMsNCkscjQg IyMgRTtcCi0JeG9ybAlUQUIrMjA0OCgscjcsNCkscjUgIyMgRTtcCisJcm91bmRfeG9yKFRBQisz MDcyLCByMywgcjQgIyMgRSlcCisJcm91bmRfeG9yKFRBQisyMDQ4LCByNywgcjUgIyMgRSlcCiAJ bW92emJsCXIxICMjIEwscjcgIyMgRTsJXAogCW1vdnpibAlyMSAjIyBILHIzICMjIEU7CVwKIAlz aHJsCSQxNixyMSAjIyBFOwkJXAotCXhvcmwJVEFCKzMwNzIoLHIzLDQpLHI2ICMjIEU7XAotCW1v dmwJVEFCKzIwNDgoLHI3LDQpLHIzICMjIEU7XAorCXJvdW5kX3hvcihUQUIrMzA3MiwgcjMsIHI2 ICMjIEUpXAorCXJvdW5kX21vdihUQUIrMjA0OCwgcjcsIHIzICMjIEUpXAogCW1vdnpibAlyMSAj IyBMLHI3ICMjIEU7CVwKIAltb3Z6YmwJcjEgIyMgSCxyMSAjIyBFOwlcCi0JeG9ybAlUQUIrMTAy NCgscjEsNCkscjYgIyMgRTtcCi0JeG9ybAlUQUIoLHI3LDQpLHIzICMjIEU7CVwKKwlyb3VuZF94 b3IoVEFCKzEwMjQsIHIxLCByNiAjIyBFKVwKKwlyb3VuZF94b3IoVEFCLCByNywgcjMgIyMgRSkJ XAogCW1vdnpibAlyMiAjIyBILHIxICMjIEU7CVwKIAltb3Z6YmwJcjIgIyMgTCxyNyAjIyBFOwlc CiAJc2hybAkkMTYscjIgIyMgRTsJCVwKLQl4b3JsCVRBQiszMDcyKCxyMSw0KSxyMyAjIyBFO1wK LQl4b3JsCVRBQisyMDQ4KCxyNyw0KSxyNCAjIyBFO1wKKwlyb3VuZF94b3IoVEFCKzMwNzIsIHIx LCByMyAjIyBFKVwKKwlyb3VuZF94b3IoVEFCKzIwNDgsIHI3LCByNCAjIyBFKVwKIAltb3Z6YmwJ cjIgIyMgSCxyMSAjIyBFOwlcCiAJbW92emJsCXIyICMjIEwscjIgIyMgRTsJXAogCXhvcmwJT0ZG U0VUKzgocjgpLHJjICMjIEU7CVwKIAl4b3JsCU9GRlNFVCsxMihyOCkscmQgIyMgRTsJXAotCXhv cmwJVEFCKzEwMjQoLHIxLDQpLHIzICMjIEU7XAotCXhvcmwJVEFCKCxyMiw0KSxyNCAjIyBFOwor CXJvdW5kX3hvcihUQUIrMTAyNCwgcjEsIHIzICMjIEUpXAorCXJvdW5kX3hvcihUQUIsIHIyLCBy NCAjIyBFKQogCiAjZGVmaW5lIG1vdmVfcmVncyhyMSxyMixyMyxyNCkgXAogCW1vdmwJcjMgIyMg RSxyMSAjIyBFOwlcCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNt LlMgYi9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMKaW5kZXggMTY2MjdmZWM4MGIy Li41ZjczMjAxZGZmMzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRlbF9h c20uUworKysgYi9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXNtLlMKQEAgLTMyNSw3ICsz MjUsOCBAQCBfZ2V0X0FBRF9yZXN0MFxudW1faW5pdGlhbF9ibG9ja3Ncb3BlcmF0aW9uOgogCXZw c2h1ZmIgYW5kIGFuIGFycmF5IG9mIHNodWZmbGUgbWFza3MgKi8KIAltb3ZxCSAgICVyMTIsICVy MTEKIAlzYWxxCSAgICQ0LCAlcjExCi0JbW92ZHF1CSAgIGFhZF9zaGlmdF9hcnIoJXIxMSksIFxU TVAxCisJbGVhcQkgICBhYWRfc2hpZnRfYXJyKCVyaXApLCAlcmF4CisJbW92ZHF1CSAgICglcmF4 LCVyMTEsKSwgXFRNUDEKIAlQU0hVRkJfWE1NIFxUTVAxLCAleG1tXGkKIF9nZXRfQUFEX3Jlc3Rf ZmluYWxcbnVtX2luaXRpYWxfYmxvY2tzXG9wZXJhdGlvbjoKIAlQU0hVRkJfWE1NICAgJXhtbTE0 LCAleG1tXGkgIyBieXRlLXJlZmxlY3QgdGhlIEFBRCBkYXRhCkBAIC01ODQsNyArNTg1LDggQEAg X2dldF9BQURfcmVzdDBcbnVtX2luaXRpYWxfYmxvY2tzXG9wZXJhdGlvbjoKIAl2cHNodWZiIGFu ZCBhbiBhcnJheSBvZiBzaHVmZmxlIG1hc2tzICovCiAJbW92cQkgICAlcjEyLCAlcjExCiAJc2Fs cQkgICAkNCwgJXIxMQotCW1vdmRxdQkgICBhYWRfc2hpZnRfYXJyKCVyMTEpLCBcVE1QMQorCWxl YXEJICAgYWFkX3NoaWZ0X2FyciglcmlwKSwgJXJheAorCW1vdmRxdQkgICAoJXJheCwlcjExLCks IFxUTVAxCiAJUFNIVUZCX1hNTSBcVE1QMSwgJXhtbVxpCiBfZ2V0X0FBRF9yZXN0X2ZpbmFsXG51 bV9pbml0aWFsX2Jsb2Nrc1xvcGVyYXRpb246CiAJUFNIVUZCX1hNTSAgICV4bW0xNCwgJXhtbVxp ICMgYnl0ZS1yZWZsZWN0IHRoZSBBQUQgZGF0YQpAQCAtMjcyMiw3ICsyNzI0LDcgQEAgRU5EUFJP QyhhZXNuaV9jYmNfZGVjKQogICovCiAuYWxpZ24gNAogX2Flc25pX2luY19pbml0OgotCW1vdmFw cyAuTGJzd2FwX21hc2ssIEJTV0FQX01BU0sKKwltb3ZhcHMgLkxic3dhcF9tYXNrKCVyaXApLCBC U1dBUF9NQVNLCiAJbW92YXBzIElWLCBDVFIKIAlQU0hVRkJfWE1NIEJTV0FQX01BU0sgQ1RSCiAJ bW92ICQxLCBUQ1RSX0xPVwpAQCAtMjg1MCwxMiArMjg1MiwxMiBAQCBFTlRSWShhZXNuaV94dHNf Y3J5cHQ4KQogCWNtcGIgJDAsICVjbAogCW1vdmwgJDAsICVlY3gKIAltb3ZsICQyNDAsICVyMTBk Ci0JbGVhcSBfYWVzbmlfZW5jNCwgJXIxMQotCWxlYXEgX2Flc25pX2RlYzQsICVyYXgKKwlsZWFx IF9hZXNuaV9lbmM0KCVyaXApLCAlcjExCisJbGVhcSBfYWVzbmlfZGVjNCglcmlwKSwgJXJheAog CWNtb3ZlbCAlcjEwZCwgJWVjeAogCWNtb3ZlcSAlcmF4LCAlcjExCiAKLQltb3ZkcWEgLkxnZjEy OG11bF94X2JsZV9tYXNrLCBHRjEyOE1VTF9NQVNLCisJbW92ZHFhIC5MZ2YxMjhtdWxfeF9ibGVf bWFzayglcmlwKSwgR0YxMjhNVUxfTUFTSwogCW1vdnVwcyAoSVZQKSwgSVYKIAogCW1vdiA0ODAo S0VZUCksIEtMRU4KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRlbF9hdngt eDg2XzY0LlMgYi9hcmNoL3g4Ni9jcnlwdG8vYWVzbmktaW50ZWxfYXZ4LXg4Nl82NC5TCmluZGV4 IGZhZWNiMTUxOGJmOC4uNDg4NjA1YjE5ZmU4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9jcnlwdG8v YWVzbmktaW50ZWxfYXZ4LXg4Nl82NC5TCisrKyBiL2FyY2gveDg2L2NyeXB0by9hZXNuaS1pbnRl bF9hdngteDg2XzY0LlMKQEAgLTQ1NCw3ICs0NTQsOCBAQCBfZ2V0X0FBRF9yZXN0MFxAOgogCXZw c2h1ZmIgYW5kIGFuIGFycmF5IG9mIHNodWZmbGUgbWFza3MgKi8KIAltb3ZxICAgICVyMTIsICVy MTEKIAlzYWxxICAgICQ0LCAlcjExCi0JbW92ZHF1ICBhYWRfc2hpZnRfYXJyKCVyMTEpLCBcVDEK KwlsZWFxCWFhZF9zaGlmdF9hcnIoJXJpcCksICVyYXgKKwltb3ZkcXUgICglcmF4LCVyMTEsKSwg XFQxCiAJdnBzaHVmYiBcVDEsIHJlZ19pLCByZWdfaQogX2dldF9BQURfcmVzdF9maW5hbFxAOgog CXZwc2h1ZmIgU0hVRl9NQVNLKCVyaXApLCByZWdfaSwgcmVnX2kKQEAgLTE3NjEsNyArMTc2Miw4 IEBAIF9nZXRfQUFEX3Jlc3QwXEA6CiAJdnBzaHVmYiBhbmQgYW4gYXJyYXkgb2Ygc2h1ZmZsZSBt YXNrcyAqLwogCW1vdnEgICAgJXIxMiwgJXIxMQogCXNhbHEgICAgJDQsICVyMTEKLQltb3ZkcXUg IGFhZF9zaGlmdF9hcnIoJXIxMSksIFxUMQorCWxlYXEJYWFkX3NoaWZ0X2FyciglcmlwKSwgJXJh eAorCW1vdmRxdSAgKCVyYXgsJXIxMSwpLCBcVDEKIAl2cHNodWZiIFxUMSwgcmVnX2ksIHJlZ19p CiBfZ2V0X0FBRF9yZXN0X2ZpbmFsXEA6CiAJdnBzaHVmYiBTSFVGX01BU0soJXJpcCksIHJlZ19p LCByZWdfaQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvY3J5cHRvL2NhbWVsbGlhLWFlc25pLWF2eC1h c21fNjQuUyBiL2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMKaW5k ZXggZjdjNDk1ZTI4NjNjLi40NmZlYWVhNTI2MzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0 by9jYW1lbGxpYS1hZXNuaS1hdngtYXNtXzY0LlMKKysrIGIvYXJjaC94ODYvY3J5cHRvL2NhbWVs bGlhLWFlc25pLWF2eC1hc21fNjQuUwpAQCAtNTIsMTAgKzUyLDEwIEBACiAJLyogXAogCSAqIFMt ZnVuY3Rpb24gd2l0aCBBRVMgc3ViYnl0ZXMgXAogCSAqLyBcCi0Jdm1vdmRxYSAuTGludl9zaGlm dF9yb3csIHQ0OyBcCi0JdmJyb2FkY2FzdHNzIC5MMGYwZjBmMGYsIHQ3OyBcCi0Jdm1vdmRxYSAu THByZV90Zl9sb19zMSwgdDA7IFwKLQl2bW92ZHFhIC5McHJlX3RmX2hpX3MxLCB0MTsgXAorCXZt b3ZkcWEgLkxpbnZfc2hpZnRfcm93KCVyaXApLCB0NDsgXAorCXZicm9hZGNhc3RzcyAuTDBmMGYw ZjBmKCVyaXApLCB0NzsgXAorCXZtb3ZkcWEgLkxwcmVfdGZfbG9fczEoJXJpcCksIHQwOyBcCisJ dm1vdmRxYSAuTHByZV90Zl9oaV9zMSglcmlwKSwgdDE7IFwKIAlcCiAJLyogQUVTIGludmVyc2Ug c2hpZnQgcm93cyAqLyBcCiAJdnBzaHVmYiB0NCwgeDAsIHgwOyBcCkBAIC02OCw4ICs2OCw4IEBA CiAJdnBzaHVmYiB0NCwgeDYsIHg2OyBcCiAJXAogCS8qIHByZWZpbHRlciBzYm94ZXMgMSwgMiBh bmQgMyAqLyBcCi0Jdm1vdmRxYSAuTHByZV90Zl9sb19zNCwgdDI7IFwKLQl2bW92ZHFhIC5McHJl X3RmX2hpX3M0LCB0MzsgXAorCXZtb3ZkcWEgLkxwcmVfdGZfbG9fczQoJXJpcCksIHQyOyBcCisJ dm1vdmRxYSAuTHByZV90Zl9oaV9zNCglcmlwKSwgdDM7IFwKIAlmaWx0ZXJfOGJpdCh4MCwgdDAs IHQxLCB0NywgdDYpOyBcCiAJZmlsdGVyXzhiaXQoeDcsIHQwLCB0MSwgdDcsIHQ2KTsgXAogCWZp bHRlcl84Yml0KHgxLCB0MCwgdDEsIHQ3LCB0Nik7IFwKQEAgLTgzLDggKzgzLDggQEAKIAlmaWx0 ZXJfOGJpdCh4NiwgdDIsIHQzLCB0NywgdDYpOyBcCiAJXAogCS8qIEFFUyBzdWJieXRlcyArIEFF UyBzaGlmdCByb3dzICovIFwKLQl2bW92ZHFhIC5McG9zdF90Zl9sb19zMSwgdDA7IFwKLQl2bW92 ZHFhIC5McG9zdF90Zl9oaV9zMSwgdDE7IFwKKwl2bW92ZHFhIC5McG9zdF90Zl9sb19zMSglcmlw KSwgdDA7IFwKKwl2bW92ZHFhIC5McG9zdF90Zl9oaV9zMSglcmlwKSwgdDE7IFwKIAl2YWVzZW5j bGFzdCB0NCwgeDAsIHgwOyBcCiAJdmFlc2VuY2xhc3QgdDQsIHg3LCB4NzsgXAogCXZhZXNlbmNs YXN0IHQ0LCB4MSwgeDE7IFwKQEAgLTk1LDE2ICs5NSwxNiBAQAogCXZhZXNlbmNsYXN0IHQ0LCB4 NiwgeDY7IFwKIAlcCiAJLyogcG9zdGZpbHRlciBzYm94ZXMgMSBhbmQgNCAqLyBcCi0Jdm1vdmRx YSAuTHBvc3RfdGZfbG9fczMsIHQyOyBcCi0Jdm1vdmRxYSAuTHBvc3RfdGZfaGlfczMsIHQzOyBc CisJdm1vdmRxYSAuTHBvc3RfdGZfbG9fczMoJXJpcCksIHQyOyBcCisJdm1vdmRxYSAuTHBvc3Rf dGZfaGlfczMoJXJpcCksIHQzOyBcCiAJZmlsdGVyXzhiaXQoeDAsIHQwLCB0MSwgdDcsIHQ2KTsg XAogCWZpbHRlcl84Yml0KHg3LCB0MCwgdDEsIHQ3LCB0Nik7IFwKIAlmaWx0ZXJfOGJpdCh4Mywg dDAsIHQxLCB0NywgdDYpOyBcCiAJZmlsdGVyXzhiaXQoeDYsIHQwLCB0MSwgdDcsIHQ2KTsgXAog CVwKIAkvKiBwb3N0ZmlsdGVyIHNib3ggMyAqLyBcCi0Jdm1vdmRxYSAuTHBvc3RfdGZfbG9fczIs IHQ0OyBcCi0Jdm1vdmRxYSAuTHBvc3RfdGZfaGlfczIsIHQ1OyBcCisJdm1vdmRxYSAuTHBvc3Rf dGZfbG9fczIoJXJpcCksIHQ0OyBcCisJdm1vdmRxYSAuTHBvc3RfdGZfaGlfczIoJXJpcCksIHQ1 OyBcCiAJZmlsdGVyXzhiaXQoeDIsIHQyLCB0MywgdDcsIHQ2KTsgXAogCWZpbHRlcl84Yml0KHg1 LCB0MiwgdDMsIHQ3LCB0Nik7IFwKIAlcCkBAIC00NDMsNyArNDQzLDcgQEAgRU5EUFJPQyhyb3Vu ZHNtMTZfeDRfeDVfeDZfeDdfeDBfeDFfeDJfeDNfeTRfeTVfeTZfeTdfeTBfeTFfeTJfeTNfYWIp CiAJdHJhbnNwb3NlXzR4NChjMCwgYzEsIGMyLCBjMywgYTAsIGExKTsgXAogCXRyYW5zcG9zZV80 eDQoZDAsIGQxLCBkMiwgZDMsIGEwLCBhMSk7IFwKIAlcCi0Jdm1vdmRxdSAuTHNodWZiXzE2eDE2 YiwgYTA7IFwKKwl2bW92ZHF1IC5Mc2h1ZmJfMTZ4MTZiKCVyaXApLCBhMDsgXAogCXZtb3ZkcXUg c3QxLCBhMTsgXAogCXZwc2h1ZmIgYTAsIGEyLCBhMjsgXAogCXZwc2h1ZmIgYTAsIGEzLCBhMzsg XApAQCAtNDgyLDcgKzQ4Miw3IEBAIEVORFBST0Mocm91bmRzbTE2X3g0X3g1X3g2X3g3X3gwX3gx X3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogI2RlZmluZSBpbnBhY2sxNl9wcmUo eDAsIHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYsIHg3LCB5MCwgeTEsIHkyLCB5MywgeTQsIHk1LCBc CiAJCSAgICAgeTYsIHk3LCByaW8sIGtleSkgXAogCXZtb3ZxIGtleSwgeDA7IFwKLQl2cHNodWZi IC5McGFja19ic3dhcCwgeDAsIHgwOyBcCisJdnBzaHVmYiAuTHBhY2tfYnN3YXAoJXJpcCksIHgw LCB4MDsgXAogCVwKIAl2cHhvciAwICogMTYocmlvKSwgeDAsIHk3OyBcCiAJdnB4b3IgMSAqIDE2 KHJpbyksIHgwLCB5NjsgXApAQCAtNTMzLDcgKzUzMyw3IEBAIEVORFBST0Mocm91bmRzbTE2X3g0 X3g1X3g2X3g3X3gwX3gxX3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogCXZtb3Zk cXUgeDAsIHN0YWNrX3RtcDA7IFwKIAlcCiAJdm1vdnEga2V5LCB4MDsgXAotCXZwc2h1ZmIgLkxw YWNrX2Jzd2FwLCB4MCwgeDA7IFwKKwl2cHNodWZiIC5McGFja19ic3dhcCglcmlwKSwgeDAsIHgw OyBcCiAJXAogCXZweG9yIHgwLCB5NywgeTc7IFwKIAl2cHhvciB4MCwgeTYsIHk2OyBcCkBAIC0x MDE2LDcgKzEwMTYsNyBAQCBFTlRSWShjYW1lbGxpYV9jdHJfMTZ3YXkpCiAJc3VicSAkKDE2ICog MTYpLCAlcnNwOwogCW1vdnEgJXJzcCwgJXJheDsKIAotCXZtb3ZkcWEgLkxic3dhcDEyOF9tYXNr LCAleG1tMTQ7CisJdm1vdmRxYSAuTGJzd2FwMTI4X21hc2soJXJpcCksICV4bW0xNDsKIAogCS8q IGxvYWQgSVYgYW5kIGJ5dGVzd2FwICovCiAJdm1vdmRxdSAoJXJjeCksICV4bW0wOwpAQCAtMTA2 NSw3ICsxMDY1LDcgQEAgRU5UUlkoY2FtZWxsaWFfY3RyXzE2d2F5KQogCiAJLyogaW5wYWNrMTZf cHJlOiAqLwogCXZtb3ZxIChrZXlfdGFibGUpKENUWCksICV4bW0xNTsKLQl2cHNodWZiIC5McGFj a19ic3dhcCwgJXhtbTE1LCAleG1tMTU7CisJdnBzaHVmYiAuTHBhY2tfYnN3YXAoJXJpcCksICV4 bW0xNSwgJXhtbTE1OwogCXZweG9yICV4bW0wLCAleG1tMTUsICV4bW0wOwogCXZweG9yICV4bW0x LCAleG1tMTUsICV4bW0xOwogCXZweG9yICV4bW0yLCAleG1tMTUsICV4bW0yOwpAQCAtMTEzMyw3 ICsxMTMzLDcgQEAgY2FtZWxsaWFfeHRzX2NyeXB0XzE2d2F5OgogCXN1YnEgJCgxNiAqIDE2KSwg JXJzcDsKIAltb3ZxICVyc3AsICVyYXg7CiAKLQl2bW92ZHFhIC5MeHRzX2dmMTI4bXVsX2FuZF9z aGwxX21hc2ssICV4bW0xNDsKKwl2bW92ZHFhIC5MeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2so JXJpcCksICV4bW0xNDsKIAogCS8qIGxvYWQgSVYgKi8KIAl2bW92ZHF1ICglcmN4KSwgJXhtbTA7 CkBAIC0xMjA5LDcgKzEyMDksNyBAQCBjYW1lbGxpYV94dHNfY3J5cHRfMTZ3YXk6CiAKIAkvKiBp bnBhY2sxNl9wcmU6ICovCiAJdm1vdnEgKGtleV90YWJsZSkoQ1RYLCAlcjgsIDgpLCAleG1tMTU7 Ci0JdnBzaHVmYiAuTHBhY2tfYnN3YXAsICV4bW0xNSwgJXhtbTE1OworCXZwc2h1ZmIgLkxwYWNr X2Jzd2FwKCVyaXApLCAleG1tMTUsICV4bW0xNTsKIAl2cHhvciAwICogMTYoJXJheCksICV4bW0x NSwgJXhtbTA7CiAJdnB4b3IgJXhtbTEsICV4bW0xNSwgJXhtbTE7CiAJdnB4b3IgJXhtbTIsICV4 bW0xNSwgJXhtbTI7CkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBFTlRSWShjYW1lbGxpYV94dHNfZW5j XzE2d2F5KQogCSAqLwogCXhvcmwgJXI4ZCwgJXI4ZDsgLyogaW5wdXQgd2hpdGVuaW5nIGtleSwg MCBmb3IgZW5jICovCiAKLQlsZWFxIF9fY2FtZWxsaWFfZW5jX2JsazE2LCAlcjk7CisJbGVhcSBf X2NhbWVsbGlhX2VuY19ibGsxNiglcmlwKSwgJXI5OwogCiAJam1wIGNhbWVsbGlhX3h0c19jcnlw dF8xNndheTsKIEVORFBST0MoY2FtZWxsaWFfeHRzX2VuY18xNndheSkKQEAgLTEyODIsNyArMTI4 Miw3IEBAIEVOVFJZKGNhbWVsbGlhX3h0c19kZWNfMTZ3YXkpCiAJbW92bCAkMjQsICVlYXg7CiAJ Y21vdmVsICVlYXgsICVyOGQ7ICAvKiBpbnB1dCB3aGl0ZW5pbmcga2V5LCBsYXN0IGZvciBkZWMg Ki8KIAotCWxlYXEgX19jYW1lbGxpYV9kZWNfYmxrMTYsICVyOTsKKwlsZWFxIF9fY2FtZWxsaWFf ZGVjX2JsazE2KCVyaXApLCAlcjk7CiAKIAlqbXAgY2FtZWxsaWFfeHRzX2NyeXB0XzE2d2F5Owog RU5EUFJPQyhjYW1lbGxpYV94dHNfZGVjXzE2d2F5KQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvY3J5 cHRvL2NhbWVsbGlhLWFlc25pLWF2eDItYXNtXzY0LlMgYi9hcmNoL3g4Ni9jcnlwdG8vY2FtZWxs aWEtYWVzbmktYXZ4Mi1hc21fNjQuUwppbmRleCBlZWU1YjM5ODJjZmQuLjkzZGEzMjdmZWM4MyAx MDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2NhbWVsbGlhLWFlc25pLWF2eDItYXNtXzY0LlMK KysrIGIvYXJjaC94ODYvY3J5cHRvL2NhbWVsbGlhLWFlc25pLWF2eDItYXNtXzY0LlMKQEAgLTY5 LDEyICs2OSwxMiBAQAogCS8qIFwKIAkgKiBTLWZ1bmN0aW9uIHdpdGggQUVTIHN1YmJ5dGVzIFwK IAkgKi8gXAotCXZicm9hZGNhc3RpMTI4IC5MaW52X3NoaWZ0X3JvdywgdDQ7IFwKLQl2cGJyb2Fk Y2FzdGQgLkwwZjBmMGYwZiwgdDc7IFwKLQl2YnJvYWRjYXN0aTEyOCAuTHByZV90Zl9sb19zMSwg dDU7IFwKLQl2YnJvYWRjYXN0aTEyOCAuTHByZV90Zl9oaV9zMSwgdDY7IFwKLQl2YnJvYWRjYXN0 aTEyOCAuTHByZV90Zl9sb19zNCwgdDI7IFwKLQl2YnJvYWRjYXN0aTEyOCAuTHByZV90Zl9oaV9z NCwgdDM7IFwKKwl2YnJvYWRjYXN0aTEyOCAuTGludl9zaGlmdF9yb3coJXJpcCksIHQ0OyBcCisJ dnBicm9hZGNhc3RkIC5MMGYwZjBmMGYoJXJpcCksIHQ3OyBcCisJdmJyb2FkY2FzdGkxMjggLkxw cmVfdGZfbG9fczEoJXJpcCksIHQ1OyBcCisJdmJyb2FkY2FzdGkxMjggLkxwcmVfdGZfaGlfczEo JXJpcCksIHQ2OyBcCisJdmJyb2FkY2FzdGkxMjggLkxwcmVfdGZfbG9fczQoJXJpcCksIHQyOyBc CisJdmJyb2FkY2FzdGkxMjggLkxwcmVfdGZfaGlfczQoJXJpcCksIHQzOyBcCiAJXAogCS8qIEFF UyBpbnZlcnNlIHNoaWZ0IHJvd3MgKi8gXAogCXZwc2h1ZmIgdDQsIHgwLCB4MDsgXApAQCAtMTIw LDggKzEyMCw4IEBACiAJdmluc2VydGkxMjggJDEsIHQyIyNfeCwgeDYsIHg2OyBcCiAJdmV4dHJh Y3RpMTI4ICQxLCB4MSwgdDMjI194OyBcCiAJdmV4dHJhY3RpMTI4ICQxLCB4NCwgdDIjI194OyBc Ci0JdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2xvX3MxLCB0MDsgXAotCXZicm9hZGNhc3RpMTI4 IC5McG9zdF90Zl9oaV9zMSwgdDE7IFwKKwl2YnJvYWRjYXN0aTEyOCAuTHBvc3RfdGZfbG9fczEo JXJpcCksIHQwOyBcCisJdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2hpX3MxKCVyaXApLCB0MTsg XAogCXZhZXNlbmNsYXN0IHQ0IyNfeCwgeDIjI194LCB4MiMjX3g7IFwKIAl2YWVzZW5jbGFzdCB0 NCMjX3gsIHQ2IyNfeCwgdDYjI194OyBcCiAJdmluc2VydGkxMjggJDEsIHQ2IyNfeCwgeDIsIHgy OyBcCkBAIC0xMzYsMTYgKzEzNiwxNiBAQAogCXZpbnNlcnRpMTI4ICQxLCB0MiMjX3gsIHg0LCB4 NDsgXAogCVwKIAkvKiBwb3N0ZmlsdGVyIHNib3hlcyAxIGFuZCA0ICovIFwKLQl2YnJvYWRjYXN0 aTEyOCAuTHBvc3RfdGZfbG9fczMsIHQyOyBcCi0JdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2hp X3MzLCB0MzsgXAorCXZicm9hZGNhc3RpMTI4IC5McG9zdF90Zl9sb19zMyglcmlwKSwgdDI7IFwK Kwl2YnJvYWRjYXN0aTEyOCAuTHBvc3RfdGZfaGlfczMoJXJpcCksIHQzOyBcCiAJZmlsdGVyXzhi aXQoeDAsIHQwLCB0MSwgdDcsIHQ2KTsgXAogCWZpbHRlcl84Yml0KHg3LCB0MCwgdDEsIHQ3LCB0 Nik7IFwKIAlmaWx0ZXJfOGJpdCh4MywgdDAsIHQxLCB0NywgdDYpOyBcCiAJZmlsdGVyXzhiaXQo eDYsIHQwLCB0MSwgdDcsIHQ2KTsgXAogCVwKIAkvKiBwb3N0ZmlsdGVyIHNib3ggMyAqLyBcCi0J dmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2xvX3MyLCB0NDsgXAotCXZicm9hZGNhc3RpMTI4IC5M cG9zdF90Zl9oaV9zMiwgdDU7IFwKKwl2YnJvYWRjYXN0aTEyOCAuTHBvc3RfdGZfbG9fczIoJXJp cCksIHQ0OyBcCisJdmJyb2FkY2FzdGkxMjggLkxwb3N0X3RmX2hpX3MyKCVyaXApLCB0NTsgXAog CWZpbHRlcl84Yml0KHgyLCB0MiwgdDMsIHQ3LCB0Nik7IFwKIAlmaWx0ZXJfOGJpdCh4NSwgdDIs IHQzLCB0NywgdDYpOyBcCiAJXApAQCAtNDgyLDcgKzQ4Miw3IEBAIEVORFBST0Mocm91bmRzbTMy X3g0X3g1X3g2X3g3X3gwX3gxX3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogCXRy YW5zcG9zZV80eDQoYzAsIGMxLCBjMiwgYzMsIGEwLCBhMSk7IFwKIAl0cmFuc3Bvc2VfNHg0KGQw LCBkMSwgZDIsIGQzLCBhMCwgYTEpOyBcCiAJXAotCXZicm9hZGNhc3RpMTI4IC5Mc2h1ZmJfMTZ4 MTZiLCBhMDsgXAorCXZicm9hZGNhc3RpMTI4IC5Mc2h1ZmJfMTZ4MTZiKCVyaXApLCBhMDsgXAog CXZtb3ZkcXUgc3QxLCBhMTsgXAogCXZwc2h1ZmIgYTAsIGEyLCBhMjsgXAogCXZwc2h1ZmIgYTAs IGEzLCBhMzsgXApAQCAtNTIxLDcgKzUyMSw3IEBAIEVORFBST0Mocm91bmRzbTMyX3g0X3g1X3g2 X3g3X3gwX3gxX3gyX3gzX3k0X3k1X3k2X3k3X3kwX3kxX3kyX3kzX2FiKQogI2RlZmluZSBpbnBh Y2szMl9wcmUoeDAsIHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYsIHg3LCB5MCwgeTEsIHkyLCB5Mywg eTQsIHk1LCBcCiAJCSAgICAgeTYsIHk3LCByaW8sIGtleSkgXAogCXZwYnJvYWRjYXN0cSBrZXks IHgwOyBcCi0JdnBzaHVmYiAuTHBhY2tfYnN3YXAsIHgwLCB4MDsgXAorCXZwc2h1ZmIgLkxwYWNr X2Jzd2FwKCVyaXApLCB4MCwgeDA7IFwKIAlcCiAJdnB4b3IgMCAqIDMyKHJpbyksIHgwLCB5Nzsg XAogCXZweG9yIDEgKiAzMihyaW8pLCB4MCwgeTY7IFwKQEAgLTU3Miw3ICs1NzIsNyBAQCBFTkRQ Uk9DKHJvdW5kc20zMl94NF94NV94Nl94N194MF94MV94Ml94M195NF95NV95Nl95N195MF95MV95 Ml95M19hYikKIAl2bW92ZHF1IHgwLCBzdGFja190bXAwOyBcCiAJXAogCXZwYnJvYWRjYXN0cSBr ZXksIHgwOyBcCi0JdnBzaHVmYiAuTHBhY2tfYnN3YXAsIHgwLCB4MDsgXAorCXZwc2h1ZmIgLkxw YWNrX2Jzd2FwKCVyaXApLCB4MCwgeDA7IFwKIAlcCiAJdnB4b3IgeDAsIHk3LCB5NzsgXAogCXZw eG9yIHgwLCB5NiwgeTY7IFwKQEAgLTExMTIsNyArMTExMiw3IEBAIEVOVFJZKGNhbWVsbGlhX2N0 cl8zMndheSkKIAl2bW92ZHF1ICglcmN4KSwgJXhtbTA7CiAJdm1vdmRxYSAleG1tMCwgJXhtbTE7 CiAJaW5jX2xlMTI4KCV4bW0wLCAleG1tMTUsICV4bW0xNCk7Ci0JdmJyb2FkY2FzdGkxMjggLkxi c3dhcDEyOF9tYXNrLCAleW1tMTQ7CisJdmJyb2FkY2FzdGkxMjggLkxic3dhcDEyOF9tYXNrKCVy aXApLCAleW1tMTQ7CiAJdmluc2VydGkxMjggJDEsICV4bW0wLCAleW1tMSwgJXltbTA7CiAJdnBz aHVmYiAleW1tMTQsICV5bW0wLCAleW1tMTM7CiAJdm1vdmRxdSAleW1tMTMsIDE1ICogMzIoJXJh eCk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBFTlRSWShjYW1lbGxpYV9jdHJfMzJ3YXkpCiAKIAkv KiBpbnBhY2szMl9wcmU6ICovCiAJdnBicm9hZGNhc3RxIChrZXlfdGFibGUpKENUWCksICV5bW0x NTsKLQl2cHNodWZiIC5McGFja19ic3dhcCwgJXltbTE1LCAleW1tMTU7CisJdnBzaHVmYiAuTHBh Y2tfYnN3YXAoJXJpcCksICV5bW0xNSwgJXltbTE1OwogCXZweG9yICV5bW0wLCAleW1tMTUsICV5 bW0wOwogCXZweG9yICV5bW0xLCAleW1tMTUsICV5bW0xOwogCXZweG9yICV5bW0yLCAleW1tMTUs ICV5bW0yOwpAQCAtMTI0MiwxMyArMTI0MiwxMyBAQCBjYW1lbGxpYV94dHNfY3J5cHRfMzJ3YXk6 CiAJc3VicSAkKDE2ICogMzIpLCAlcnNwOwogCW1vdnEgJXJzcCwgJXJheDsKIAotCXZicm9hZGNh c3RpMTI4IC5MeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMCwgJXltbTEyOworCXZicm9hZGNh c3RpMTI4IC5MeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMCglcmlwKSwgJXltbTEyOwogCiAJ LyogbG9hZCBJViBhbmQgY29uc3RydWN0IHNlY29uZCBJViAqLwogCXZtb3ZkcXUgKCVyY3gpLCAl eG1tMDsKIAl2bW92ZHFhICV4bW0wLCAleG1tMTU7CiAJZ2YxMjhtdWxfeF9ibGUoJXhtbTAsICV4 bW0xMiwgJXhtbTEzKTsKLQl2YnJvYWRjYXN0aTEyOCAuTHh0c19nZjEyOG11bF9hbmRfc2hsMV9t YXNrXzEsICV5bW0xMzsKKwl2YnJvYWRjYXN0aTEyOCAuTHh0c19nZjEyOG11bF9hbmRfc2hsMV9t YXNrXzEoJXJpcCksICV5bW0xMzsKIAl2aW5zZXJ0aTEyOCAkMSwgJXhtbTAsICV5bW0xNSwgJXlt bTA7CiAJdnB4b3IgMCAqIDMyKCVyZHgpLCAleW1tMCwgJXltbTE1OwogCXZtb3ZkcXUgJXltbTE1 LCAxNSAqIDMyKCVyYXgpOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgY2FtZWxsaWFfeHRzX2NyeXB0 XzMyd2F5OgogCiAJLyogaW5wYWNrMzJfcHJlOiAqLwogCXZwYnJvYWRjYXN0cSAoa2V5X3RhYmxl KShDVFgsICVyOCwgOCksICV5bW0xNTsKLQl2cHNodWZiIC5McGFja19ic3dhcCwgJXltbTE1LCAl eW1tMTU7CisJdnBzaHVmYiAuTHBhY2tfYnN3YXAoJXJpcCksICV5bW0xNSwgJXltbTE1OwogCXZw eG9yIDAgKiAzMiglcmF4KSwgJXltbTE1LCAleW1tMDsKIAl2cHhvciAleW1tMSwgJXltbTE1LCAl eW1tMTsKIAl2cHhvciAleW1tMiwgJXltbTE1LCAleW1tMjsKQEAgLTEzODMsNyArMTM4Myw3IEBA IEVOVFJZKGNhbWVsbGlhX3h0c19lbmNfMzJ3YXkpCiAKIAl4b3JsICVyOGQsICVyOGQ7IC8qIGlu cHV0IHdoaXRlbmluZyBrZXksIDAgZm9yIGVuYyAqLwogCi0JbGVhcSBfX2NhbWVsbGlhX2VuY19i bGszMiwgJXI5OworCWxlYXEgX19jYW1lbGxpYV9lbmNfYmxrMzIoJXJpcCksICVyOTsKIAogCWpt cCBjYW1lbGxpYV94dHNfY3J5cHRfMzJ3YXk7CiBFTkRQUk9DKGNhbWVsbGlhX3h0c19lbmNfMzJ3 YXkpCkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBFTlRSWShjYW1lbGxpYV94dHNfZGVjXzMyd2F5KQog CW1vdmwgJDI0LCAlZWF4OwogCWNtb3ZlbCAlZWF4LCAlcjhkOyAgLyogaW5wdXQgd2hpdGVuaW5n IGtleSwgbGFzdCBmb3IgZGVjICovCiAKLQlsZWFxIF9fY2FtZWxsaWFfZGVjX2JsazMyLCAlcjk7 CisJbGVhcSBfX2NhbWVsbGlhX2RlY19ibGszMiglcmlwKSwgJXI5OwogCiAJam1wIGNhbWVsbGlh X3h0c19jcnlwdF8zMndheTsKIEVORFBST0MoY2FtZWxsaWFfeHRzX2RlY18zMndheSkKZGlmZiAt LWdpdCBhL2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS14ODZfNjQtYXNtXzY0LlMgYi9hcmNoL3g4 Ni9jcnlwdG8vY2FtZWxsaWEteDg2XzY0LWFzbV82NC5TCmluZGV4IDk1YmE2OTU2YTdmNi4uZWYx MTM3NDA2OTU5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9jcnlwdG8vY2FtZWxsaWEteDg2XzY0LWFz bV82NC5TCisrKyBiL2FyY2gveDg2L2NyeXB0by9jYW1lbGxpYS14ODZfNjQtYXNtXzY0LlMKQEAg LTkyLDExICs5MiwxMyBAQAogI2RlZmluZSBSWE9SYmwgJXI5YgogCiAjZGVmaW5lIHhvcjJyb3Ix NihUMCwgVDEsIHRtcDEsIHRtcDIsIGFiLCBkc3QpIFwKKwlsZWFxIFQwKCVyaXApLCAJCQl0bXAx OyBcCiAJbW92emJsIGFiICMjIGJsLAkJdG1wMiAjIyBkOyBcCisJeG9ycSAodG1wMSwgdG1wMiwg OCksCQlkc3Q7IFwKKwlsZWFxIFQxKCVyaXApLCAJCQl0bXAyOyBcCiAJbW92emJsIGFiICMjIGJo LAkJdG1wMSAjIyBkOyBcCi0Jcm9ycSAkMTYsCQkJYWI7IFwKLQl4b3JxIFQwKCwgdG1wMiwgOCks CQlkc3Q7IFwKLQl4b3JxIFQxKCwgdG1wMSwgOCksCQlkc3Q7CisJeG9ycSAodG1wMiwgdG1wMSwg OCksCQlkc3Q7IFwKKwlyb3JxICQxNiwJCQlhYjsKIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgMS13YXkg Y2FtZWxsaWEKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2NyeXB0by9jYXN0NS1hdngteDg2XzY0LWFz bV82NC5TIGIvYXJjaC94ODYvY3J5cHRvL2Nhc3Q1LWF2eC14ODZfNjQtYXNtXzY0LlMKaW5kZXgg ODYxMDdjOTYxYmI0Li42NGViNWM4N2QwNGEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0by9j YXN0NS1hdngteDg2XzY0LWFzbV82NC5TCisrKyBiL2FyY2gveDg2L2NyeXB0by9jYXN0NS1hdngt eDg2XzY0LWFzbV82NC5TCkBAIC05OCwxNiArOTgsMjAgQEAKIAogCiAjZGVmaW5lIGxvb2t1cF8z MmJpdChzcmMsIGRzdCwgb3AxLCBvcDIsIG9wMywgaW50ZXJsZWF2ZV9vcCwgaWxfcmVnKSBcCi0J bW92emJsCQlzcmMgIyMgYmgsICAgICBSSUQxZDsgICAgXAotCW1vdnpibAkJc3JjICMjIGJsLCAg ICAgUklEMmQ7ICAgIFwKLQlzaHJxICQxNiwJc3JjOyAgICAgICAgICAgICAgICAgICAgIFwKLQlt b3ZsCQlzMSgsIFJJRDEsIDQpLCBkc3QgIyMgZDsgXAotCW9wMQkJczIoLCBSSUQyLCA0KSwgZHN0 ICMjIGQ7IFwKLQltb3Z6YmwJCXNyYyAjIyBiaCwgICAgIFJJRDFkOyAgICBcCi0JbW92emJsCQlz cmMgIyMgYmwsICAgICBSSUQyZDsgICAgXAotCWludGVybGVhdmVfb3AoaWxfcmVnKTsJCQkgXAot CW9wMgkJczMoLCBSSUQxLCA0KSwgZHN0ICMjIGQ7IFwKLQlvcDMJCXM0KCwgUklEMiwgNCksIGRz dCAjIyBkOworCW1vdnpibAkJc3JjICMjIGJoLCAgICAgICBSSUQxZDsgICAgXAorCWxlYXEJCXMx KCVyaXApLCAgICAgICAgUklEMjsgICAgIFwKKwltb3ZsCQkoUklEMiwgUklEMSwgNCksIGRzdCAj IyBkOyBcCisJbW92emJsCQlzcmMgIyMgYmwsICAgICAgIFJJRDJkOyAgICBcCisJbGVhcQkJczIo JXJpcCksICAgICAgICBSSUQxOyAgICAgXAorCW9wMQkJKFJJRDEsIFJJRDIsIDQpLCBkc3QgIyMg ZDsgXAorCXNocnEgJDE2LAlzcmM7ICAgICAgICAgICAgICAgICAgICAgICBcCisJbW92emJsCQlz cmMgIyMgYmgsICAgICBSSUQxZDsgICAgICBcCisJbGVhcQkJczMoJXJpcCksICAgICAgICBSSUQy OyAgICAgXAorCW9wMgkJKFJJRDIsIFJJRDEsIDQpLCBkc3QgIyMgZDsgXAorCW1vdnpibAkJc3Jj ICMjIGJsLCAgICAgUklEMmQ7ICAgICAgXAorCWxlYXEJCXM0KCVyaXApLCAgICAgICAgUklEMTsg ICAgIFwKKwlvcDMJCShSSUQxLCBSSUQyLCA0KSwgZHN0ICMjIGQ7IFwKKwlpbnRlcmxlYXZlX29w KGlsX3JlZyk7CiAKICNkZWZpbmUgZHVtbXkoZCkgLyogZG8gbm90aGluZyAqLwogCkBAIC0xNjYs MTUgKzE3MCwxNSBAQAogCXN1YnJvdW5kKGwgIyMgMywgciAjIyAzLCBsICMjIDQsIHIgIyMgNCwg Zik7CiAKICNkZWZpbmUgZW5jX3ByZWxvYWRfcmtyKCkgXAotCXZicm9hZGNhc3RzcwkuTDE2X21h c2ssICAgICAgICAgICAgICAgIFJLUjsgICAgICBcCisJdmJyb2FkY2FzdHNzCS5MMTZfbWFzaygl cmlwKSwgICAgICAgICAgUktSOyAgICAgIFwKIAkvKiBhZGQgMTYtYml0IHJvdGF0aW9uIHRvIGtl eSByb3RhdGlvbnMgKG1vZCAzMikgKi8gXAogCXZweG9yCQlrcihDVFgpLCAgICAgICAgICAgICAg ICAgIFJLUiwgUktSOwogCiAjZGVmaW5lIGRlY19wcmVsb2FkX3JrcigpIFwKLQl2YnJvYWRjYXN0 c3MJLkwxNl9tYXNrLCAgICAgICAgICAgICAgICBSS1I7ICAgICAgXAorCXZicm9hZGNhc3Rzcwku TDE2X21hc2soJXJpcCksICAgICAgICAgIFJLUjsgICAgICBcCiAJLyogYWRkIDE2LWJpdCByb3Rh dGlvbiB0byBrZXkgcm90YXRpb25zIChtb2QgMzIpICovIFwKIAl2cHhvcgkJa3IoQ1RYKSwgICAg ICAgICAgICAgICAgICBSS1IsIFJLUjsgXAotCXZwc2h1ZmIJCS5MYnN3YXAxMjhfbWFzaywgICAg ICAgICAgUktSLCBSS1I7CisJdnBzaHVmYgkJLkxic3dhcDEyOF9tYXNrKCVyaXApLCAgICBSS1Is IFJLUjsKIAogI2RlZmluZSB0cmFuc3Bvc2VfMng0KHgwLCB4MSwgdDAsIHQxKSBcCiAJdnB1bnBj a2xkcQkJeDEsIHgwLCB0MDsgXApAQCAtMjUxLDkgKzI1NSw5IEBAIF9fY2FzdDVfZW5jX2JsazE2 OgogCiAJbW92cSAlcmRpLCBDVFg7CiAKLQl2bW92ZHFhIC5MYnN3YXBfbWFzaywgUktNOwotCXZt b3ZkIC5MZmlyc3RfbWFzaywgUjFTVDsKLQl2bW92ZCAuTDMyX21hc2ssIFIzMjsKKwl2bW92ZHFh IC5MYnN3YXBfbWFzayglcmlwKSwgUktNOworCXZtb3ZkIC5MZmlyc3RfbWFzayglcmlwKSwgUjFT VDsKKwl2bW92ZCAuTDMyX21hc2soJXJpcCksIFIzMjsKIAllbmNfcHJlbG9hZF9ya3IoKTsKIAog CWlucGFja19ibG9ja3MoUkwxLCBSUjEsIFJUTVAsIFJYLCBSS00pOwpAQCAtMjg3LDcgKzI5MSw3 IEBAIF9fY2FzdDVfZW5jX2JsazE2OgogCXBvcHEgJXJieDsKIAlwb3BxICVyMTU7CiAKLQl2bW92 ZHFhIC5MYnN3YXBfbWFzaywgUktNOworCXZtb3ZkcWEgLkxic3dhcF9tYXNrKCVyaXApLCBSS007 CiAKIAlvdXR1bnBhY2tfYmxvY2tzKFJSMSwgUkwxLCBSVE1QLCBSWCwgUktNKTsKIAlvdXR1bnBh Y2tfYmxvY2tzKFJSMiwgUkwyLCBSVE1QLCBSWCwgUktNKTsKQEAgLTMyNSw5ICszMjksOSBAQCBf X2Nhc3Q1X2RlY19ibGsxNjoKIAogCW1vdnEgJXJkaSwgQ1RYOwogCi0Jdm1vdmRxYSAuTGJzd2Fw X21hc2ssIFJLTTsKLQl2bW92ZCAuTGZpcnN0X21hc2ssIFIxU1Q7Ci0Jdm1vdmQgLkwzMl9tYXNr LCBSMzI7CisJdm1vdmRxYSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKKwl2bW92ZCAuTGZpcnN0 X21hc2soJXJpcCksIFIxU1Q7CisJdm1vdmQgLkwzMl9tYXNrKCVyaXApLCBSMzI7CiAJZGVjX3By ZWxvYWRfcmtyKCk7CiAKIAlpbnBhY2tfYmxvY2tzKFJMMSwgUlIxLCBSVE1QLCBSWCwgUktNKTsK QEAgLTM1OCw3ICszNjIsNyBAQCBfX2Nhc3Q1X2RlY19ibGsxNjoKIAlyb3VuZChSTCwgUlIsIDEs IDIpOwogCXJvdW5kKFJSLCBSTCwgMCwgMSk7CiAKLQl2bW92ZHFhIC5MYnN3YXBfbWFzaywgUktN OworCXZtb3ZkcWEgLkxic3dhcF9tYXNrKCVyaXApLCBSS007CiAJcG9wcSAlcmJ4OwogCXBvcHEg JXIxNTsKIApAQCAtNTIxLDggKzUyNSw4IEBAIEVOVFJZKGNhc3Q1X2N0cl8xNndheSkKIAogCXZw Y21wZXFkIFJLUiwgUktSLCBSS1I7CiAJdnBhZGRxIFJLUiwgUktSLCBSS1I7IC8qIGxvdzogLTIs IGhpZ2g6IC0yICovCi0Jdm1vdmRxYSAuTGJzd2FwX2l2X21hc2ssIFIxU1Q7Ci0Jdm1vdmRxYSAu TGJzd2FwMTI4X21hc2ssIFJLTTsKKwl2bW92ZHFhIC5MYnN3YXBfaXZfbWFzayglcmlwKSwgUjFT VDsKKwl2bW92ZHFhIC5MYnN3YXAxMjhfbWFzayglcmlwKSwgUktNOwogCiAJLyogbG9hZCBJViBh bmQgYnl0ZXN3YXAgKi8KIAl2bW92cSAoJXJjeCksIFJYOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYv Y3J5cHRvL2Nhc3Q2LWF2eC14ODZfNjQtYXNtXzY0LlMgYi9hcmNoL3g4Ni9jcnlwdG8vY2FzdDYt YXZ4LXg4Nl82NC1hc21fNjQuUwppbmRleCA3ZjMwYjZmMGQ3MmMuLmRhMWI3ZTRhMjNlNCAxMDA2 NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2Nhc3Q2LWF2eC14ODZfNjQtYXNtXzY0LlMKKysrIGIv YXJjaC94ODYvY3J5cHRvL2Nhc3Q2LWF2eC14ODZfNjQtYXNtXzY0LlMKQEAgLTk4LDE2ICs5OCwy MCBAQAogCiAKICNkZWZpbmUgbG9va3VwXzMyYml0KHNyYywgZHN0LCBvcDEsIG9wMiwgb3AzLCBp bnRlcmxlYXZlX29wLCBpbF9yZWcpIFwKLQltb3Z6YmwJCXNyYyAjIyBiaCwgICAgIFJJRDFkOyAg ICBcCi0JbW92emJsCQlzcmMgIyMgYmwsICAgICBSSUQyZDsgICAgXAotCXNocnEgJDE2LAlzcmM7 ICAgICAgICAgICAgICAgICAgICAgXAotCW1vdmwJCXMxKCwgUklEMSwgNCksIGRzdCAjIyBkOyBc Ci0Jb3AxCQlzMigsIFJJRDIsIDQpLCBkc3QgIyMgZDsgXAotCW1vdnpibAkJc3JjICMjIGJoLCAg ICAgUklEMWQ7ICAgIFwKLQltb3Z6YmwJCXNyYyAjIyBibCwgICAgIFJJRDJkOyAgICBcCi0JaW50 ZXJsZWF2ZV9vcChpbF9yZWcpOwkJCSBcCi0Jb3AyCQlzMygsIFJJRDEsIDQpLCBkc3QgIyMgZDsg XAotCW9wMwkJczQoLCBSSUQyLCA0KSwgZHN0ICMjIGQ7CisJbW92emJsCQlzcmMgIyMgYmgsICAg ICAgIFJJRDFkOyAgICBcCisJbGVhcQkJczEoJXJpcCksICAgICAgICBSSUQyOyAgICAgXAorCW1v dmwJCShSSUQyLCBSSUQxLCA0KSwgZHN0ICMjIGQ7IFwKKwltb3Z6YmwJCXNyYyAjIyBibCwgICAg ICAgUklEMmQ7ICAgIFwKKwlsZWFxCQlzMiglcmlwKSwgICAgICAgIFJJRDE7ICAgICBcCisJb3Ax CQkoUklEMSwgUklEMiwgNCksIGRzdCAjIyBkOyBcCisJc2hycSAkMTYsCXNyYzsgICAgICAgICAg ICAgICAgICAgICAgIFwKKwltb3Z6YmwJCXNyYyAjIyBiaCwgICAgIFJJRDFkOyAgICAgIFwKKwls ZWFxCQlzMyglcmlwKSwgICAgICAgIFJJRDI7ICAgICBcCisJb3AyCQkoUklEMiwgUklEMSwgNCks IGRzdCAjIyBkOyBcCisJbW92emJsCQlzcmMgIyMgYmwsICAgICBSSUQyZDsgICAgICBcCisJbGVh cQkJczQoJXJpcCksICAgICAgICBSSUQxOyAgICAgXAorCW9wMwkJKFJJRDEsIFJJRDIsIDQpLCBk c3QgIyMgZDsgXAorCWludGVybGVhdmVfb3AoaWxfcmVnKTsKIAogI2RlZmluZSBkdW1teShkKSAv KiBkbyBub3RoaW5nICovCiAKQEAgLTE5MCwxMCArMTk0LDEwIEBACiAJcW9wKFJELCBSQywgMSk7 CiAKICNkZWZpbmUgc2h1ZmZsZShtYXNrKSBcCi0JdnBzaHVmYgkJbWFzaywgICAgICAgICAgICBS S1IsIFJLUjsKKwl2cHNodWZiCQltYXNrKCVyaXApLCAgICAgICAgICAgIFJLUiwgUktSOwogCiAj ZGVmaW5lIHByZWxvYWRfcmtyKG4sIGRvX21hc2ssIG1hc2spIFwKLQl2YnJvYWRjYXN0c3MJLkwx Nl9tYXNrLCAgICAgICAgICAgICAgICBSS1I7ICAgICAgXAorCXZicm9hZGNhc3RzcwkuTDE2X21h c2soJXJpcCksICAgICAgICAgIFJLUjsgICAgICBcCiAJLyogYWRkIDE2LWJpdCByb3RhdGlvbiB0 byBrZXkgcm90YXRpb25zIChtb2QgMzIpICovIFwKIAl2cHhvcgkJKGtyK24qMTYpKENUWCksICAg ICAgICAgICBSS1IsIFJLUjsgXAogCWRvX21hc2sobWFzayk7CkBAIC0yNzUsOSArMjc5LDkgQEAg X19jYXN0Nl9lbmNfYmxrODoKIAogCW1vdnEgJXJkaSwgQ1RYOwogCi0Jdm1vdmRxYSAuTGJzd2Fw X21hc2ssIFJLTTsKLQl2bW92ZCAuTGZpcnN0X21hc2ssIFIxU1Q7Ci0Jdm1vdmQgLkwzMl9tYXNr LCBSMzI7CisJdm1vdmRxYSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKKwl2bW92ZCAuTGZpcnN0 X21hc2soJXJpcCksIFIxU1Q7CisJdm1vdmQgLkwzMl9tYXNrKCVyaXApLCBSMzI7CiAKIAlpbnBh Y2tfYmxvY2tzKFJBMSwgUkIxLCBSQzEsIFJEMSwgUlRNUCwgUlgsIFJLUkYsIFJLTSk7CiAJaW5w YWNrX2Jsb2NrcyhSQTIsIFJCMiwgUkMyLCBSRDIsIFJUTVAsIFJYLCBSS1JGLCBSS00pOwpAQCAt MzAxLDcgKzMwNSw3IEBAIF9fY2FzdDZfZW5jX2Jsazg6CiAJcG9wcSAlcmJ4OwogCXBvcHEgJXIx NTsKIAotCXZtb3ZkcWEgLkxic3dhcF9tYXNrLCBSS007CisJdm1vdmRxYSAuTGJzd2FwX21hc2so JXJpcCksIFJLTTsKIAogCW91dHVucGFja19ibG9ja3MoUkExLCBSQjEsIFJDMSwgUkQxLCBSVE1Q LCBSWCwgUktSRiwgUktNKTsKIAlvdXR1bnBhY2tfYmxvY2tzKFJBMiwgUkIyLCBSQzIsIFJEMiwg UlRNUCwgUlgsIFJLUkYsIFJLTSk7CkBAIC0zMjMsOSArMzI3LDkgQEAgX19jYXN0Nl9kZWNfYmxr ODoKIAogCW1vdnEgJXJkaSwgQ1RYOwogCi0Jdm1vdmRxYSAuTGJzd2FwX21hc2ssIFJLTTsKLQl2 bW92ZCAuTGZpcnN0X21hc2ssIFIxU1Q7Ci0Jdm1vdmQgLkwzMl9tYXNrLCBSMzI7CisJdm1vdmRx YSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKKwl2bW92ZCAuTGZpcnN0X21hc2soJXJpcCksIFIx U1Q7CisJdm1vdmQgLkwzMl9tYXNrKCVyaXApLCBSMzI7CiAKIAlpbnBhY2tfYmxvY2tzKFJBMSwg UkIxLCBSQzEsIFJEMSwgUlRNUCwgUlgsIFJLUkYsIFJLTSk7CiAJaW5wYWNrX2Jsb2NrcyhSQTIs IFJCMiwgUkMyLCBSRDIsIFJUTVAsIFJYLCBSS1JGLCBSS00pOwpAQCAtMzQ5LDcgKzM1Myw3IEBA IF9fY2FzdDZfZGVjX2Jsazg6CiAJcG9wcSAlcmJ4OwogCXBvcHEgJXIxNTsKIAotCXZtb3ZkcWEg Lkxic3dhcF9tYXNrLCBSS007CisJdm1vdmRxYSAuTGJzd2FwX21hc2soJXJpcCksIFJLTTsKIAlv dXR1bnBhY2tfYmxvY2tzKFJBMSwgUkIxLCBSQzEsIFJEMSwgUlRNUCwgUlgsIFJLUkYsIFJLTSk7 CiAJb3V0dW5wYWNrX2Jsb2NrcyhSQTIsIFJCMiwgUkMyLCBSRDIsIFJUTVAsIFJYLCBSS1JGLCBS S00pOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vZGVzM19lZGUtYXNtXzY0LlMgYi9h cmNoL3g4Ni9jcnlwdG8vZGVzM19lZGUtYXNtXzY0LlMKaW5kZXggOGU0OWNlMTE3NDk0Li40YmJk M2VjNzhkZjUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0by9kZXMzX2VkZS1hc21fNjQuUwor KysgYi9hcmNoL3g4Ni9jcnlwdG8vZGVzM19lZGUtYXNtXzY0LlMKQEAgLTEzOCwyMSArMTM4LDI5 IEBACiAJbW92emJsIFJXMGJsLCBSVDJkOyBcCiAJbW92emJsIFJXMGJoLCBSVDNkOyBcCiAJc2hy cSAkMTYsIFJXMDsgXAotCW1vdnEgczgoLCBSVDAsIDgpLCBSVDA7IFwKLQl4b3JxIHM2KCwgUlQx LCA4KSwgdG87IFwKKwlsZWFxIHM4KCVyaXApLCBSVzE7IFwKKwltb3ZxIChSVzEsIFJUMCwgOCks IFJUMDsgXAorCWxlYXEgczYoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwgUlQxLCA4KSwgdG87 IFwKIAltb3Z6YmwgUlcwYmwsIFJMMWQ7IFwKIAltb3Z6YmwgUlcwYmgsIFJUMWQ7IFwKIAlzaHJs ICQxNiwgUlcwZDsgXAotCXhvcnEgczQoLCBSVDIsIDgpLCBSVDA7IFwKLQl4b3JxIHMyKCwgUlQz LCA4KSwgdG87IFwKKwlsZWFxIHM0KCVyaXApLCBSVzE7IFwKKwl4b3JxIChSVzEsIFJUMiwgOCks IFJUMDsgXAorCWxlYXEgczIoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwgUlQzLCA4KSwgdG87 IFwKIAltb3Z6YmwgUlcwYmwsIFJUMmQ7IFwKIAltb3Z6YmwgUlcwYmgsIFJUM2Q7IFwKLQl4b3Jx IHM3KCwgUkwxLCA4KSwgUlQwOyBcCi0JeG9ycSBzNSgsIFJUMSwgOCksIHRvOyBcCi0JeG9ycSBz MygsIFJUMiwgOCksIFJUMDsgXAorCWxlYXEgczcoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwg UkwxLCA4KSwgUlQwOyBcCisJbGVhcSBzNSglcmlwKSwgUlcxOyBcCisJeG9ycSAoUlcxLCBSVDEs IDgpLCB0bzsgXAorCWxlYXEgczMoJXJpcCksIFJXMTsgXAorCXhvcnEgKFJXMSwgUlQyLCA4KSwg UlQwOyBcCiAJbG9hZF9uZXh0X2tleShuLCBSVzApOyBcCiAJeG9ycSBSVDAsIHRvOyBcCi0JeG9y cSBzMSgsIFJUMywgOCksIHRvOyBcCisJbGVhcSBzMSglcmlwKSwgUlcxOyBcCisJeG9ycSAoUlcx LCBSVDMsIDgpLCB0bzsgXAogCiAjZGVmaW5lIGxvYWRfbmV4dF9rZXkobiwgUld4KSBcCiAJbW92 cSAoKChuKSArIDEpICogOCkoQ1RYKSwgUld4OwpAQCAtMzY0LDY1ICszNzIsODkgQEAgRU5EUFJP QyhkZXMzX2VkZV94ODZfNjRfY3J5cHRfYmxrKQogCW1vdnpibCBSVzBibCwgUlQzZDsgXAogCW1v dnpibCBSVzBiaCwgUlQxZDsgXAogCXNocnEgJDE2LCBSVzA7IFwKLQl4b3JxIHM4KCwgUlQzLCA4 KSwgdG8jIzA7IFwKLQl4b3JxIHM2KCwgUlQxLCA4KSwgdG8jIzA7IFwKKwlsZWFxIHM4KCVyaXAp LCBSVDI7IFwKKwl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMwOyBcCisJbGVhcSBzNiglcmlwKSwg UlQyOyBcCisJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMDsgXAogCW1vdnpibCBSVzBibCwgUlQz ZDsgXAogCW1vdnpibCBSVzBiaCwgUlQxZDsgXAogCXNocnEgJDE2LCBSVzA7IFwKLQl4b3JxIHM0 KCwgUlQzLCA4KSwgdG8jIzA7IFwKLQl4b3JxIHMyKCwgUlQxLCA4KSwgdG8jIzA7IFwKKwlsZWFx IHM0KCVyaXApLCBSVDI7IFwKKwl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMwOyBcCisJbGVhcSBz MiglcmlwKSwgUlQyOyBcCisJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMDsgXAogCW1vdnpibCBS VzBibCwgUlQzZDsgXAogCW1vdnpibCBSVzBiaCwgUlQxZDsgXAogCXNocmwgJDE2LCBSVzBkOyBc Ci0JeG9ycSBzNygsIFJUMywgOCksIHRvIyMwOyBcCi0JeG9ycSBzNSgsIFJUMSwgOCksIHRvIyMw OyBcCisJbGVhcSBzNyglcmlwKSwgUlQyOyBcCisJeG9ycSAoUlQyLCBSVDMsIDgpLCB0byMjMDsg XAorCWxlYXEgczUoJXJpcCksIFJUMjsgXAorCXhvcnEgKFJUMiwgUlQxLCA4KSwgdG8jIzA7IFwK IAltb3Z6YmwgUlcwYmwsIFJUM2Q7IFwKIAltb3Z6YmwgUlcwYmgsIFJUMWQ7IFwKIAlsb2FkX25l eHRfa2V5KG4sIFJXMCk7IFwKLQl4b3JxIHMzKCwgUlQzLCA4KSwgdG8jIzA7IFwKLQl4b3JxIHMx KCwgUlQxLCA4KSwgdG8jIzA7IFwKKwlsZWFxIHMzKCVyaXApLCBSVDI7IFwKKwl4b3JxIChSVDIs IFJUMywgOCksIHRvIyMwOyBcCisJbGVhcSBzMSglcmlwKSwgUlQyOyBcCisJeG9ycSAoUlQyLCBS VDEsIDgpLCB0byMjMDsgXAogCQl4b3JxIGZyb20jIzEsIFJXMTsgXAogCQltb3Z6YmwgUlcxYmws IFJUM2Q7IFwKIAkJbW92emJsIFJXMWJoLCBSVDFkOyBcCiAJCXNocnEgJDE2LCBSVzE7IFwKLQkJ eG9ycSBzOCgsIFJUMywgOCksIHRvIyMxOyBcCi0JCXhvcnEgczYoLCBSVDEsIDgpLCB0byMjMTsg XAorCQlsZWFxIHM4KCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQyLCBSVDMsIDgpLCB0byMjMTsg XAorCQlsZWFxIHM2KCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMTsg XAogCQltb3Z6YmwgUlcxYmwsIFJUM2Q7IFwKIAkJbW92emJsIFJXMWJoLCBSVDFkOyBcCiAJCXNo cnEgJDE2LCBSVzE7IFwKLQkJeG9ycSBzNCgsIFJUMywgOCksIHRvIyMxOyBcCi0JCXhvcnEgczIo LCBSVDEsIDgpLCB0byMjMTsgXAorCQlsZWFxIHM0KCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQy LCBSVDMsIDgpLCB0byMjMTsgXAorCQlsZWFxIHMyKCVyaXApLCBSVDI7IFwKKwkJeG9ycSAoUlQy LCBSVDEsIDgpLCB0byMjMTsgXAogCQltb3Z6YmwgUlcxYmwsIFJUM2Q7IFwKIAkJbW92emJsIFJX MWJoLCBSVDFkOyBcCiAJCXNocmwgJDE2LCBSVzFkOyBcCi0JCXhvcnEgczcoLCBSVDMsIDgpLCB0 byMjMTsgXAotCQl4b3JxIHM1KCwgUlQxLCA4KSwgdG8jIzE7IFwKKwkJbGVhcSBzNyglcmlwKSwg UlQyOyBcCisJCXhvcnEgKFJUMiwgUlQzLCA4KSwgdG8jIzE7IFwKKwkJbGVhcSBzNSglcmlwKSwg UlQyOyBcCisJCXhvcnEgKFJUMiwgUlQxLCA4KSwgdG8jIzE7IFwKIAkJbW92emJsIFJXMWJsLCBS VDNkOyBcCiAJCW1vdnpibCBSVzFiaCwgUlQxZDsgXAogCQlkb19tb3ZxKFJXMCwgUlcxKTsgXAot CQl4b3JxIHMzKCwgUlQzLCA4KSwgdG8jIzE7IFwKLQkJeG9ycSBzMSgsIFJUMSwgOCksIHRvIyMx OyBcCisJCWxlYXEgczMoJXJpcCksIFJUMjsgXAorCQl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMx OyBcCisJCWxlYXEgczEoJXJpcCksIFJUMjsgXAorCQl4b3JxIChSVDIsIFJUMSwgOCksIHRvIyMx OyBcCiAJCQl4b3JxIGZyb20jIzIsIFJXMjsgXAogCQkJbW92emJsIFJXMmJsLCBSVDNkOyBcCiAJ CQltb3Z6YmwgUlcyYmgsIFJUMWQ7IFwKIAkJCXNocnEgJDE2LCBSVzI7IFwKLQkJCXhvcnEgczgo LCBSVDMsIDgpLCB0byMjMjsgXAotCQkJeG9ycSBzNigsIFJUMSwgOCksIHRvIyMyOyBcCisJCQls ZWFxIHM4KCVyaXApLCBSVDI7IFwKKwkJCXhvcnEgKFJUMiwgUlQzLCA4KSwgdG8jIzI7IFwKKwkJ CWxlYXEgczYoJXJpcCksIFJUMjsgXAorCQkJeG9ycSAoUlQyLCBSVDEsIDgpLCB0byMjMjsgXAog CQkJbW92emJsIFJXMmJsLCBSVDNkOyBcCiAJCQltb3Z6YmwgUlcyYmgsIFJUMWQ7IFwKIAkJCXNo cnEgJDE2LCBSVzI7IFwKLQkJCXhvcnEgczQoLCBSVDMsIDgpLCB0byMjMjsgXAotCQkJeG9ycSBz MigsIFJUMSwgOCksIHRvIyMyOyBcCisJCQlsZWFxIHM0KCVyaXApLCBSVDI7IFwKKwkJCXhvcnEg KFJUMiwgUlQzLCA4KSwgdG8jIzI7IFwKKwkJCWxlYXEgczIoJXJpcCksIFJUMjsgXAorCQkJeG9y cSAoUlQyLCBSVDEsIDgpLCB0byMjMjsgXAogCQkJbW92emJsIFJXMmJsLCBSVDNkOyBcCiAJCQlt b3Z6YmwgUlcyYmgsIFJUMWQ7IFwKIAkJCXNocmwgJDE2LCBSVzJkOyBcCi0JCQl4b3JxIHM3KCwg UlQzLCA4KSwgdG8jIzI7IFwKLQkJCXhvcnEgczUoLCBSVDEsIDgpLCB0byMjMjsgXAorCQkJbGVh cSBzNyglcmlwKSwgUlQyOyBcCisJCQl4b3JxIChSVDIsIFJUMywgOCksIHRvIyMyOyBcCisJCQls ZWFxIHM1KCVyaXApLCBSVDI7IFwKKwkJCXhvcnEgKFJUMiwgUlQxLCA4KSwgdG8jIzI7IFwKIAkJ CW1vdnpibCBSVzJibCwgUlQzZDsgXAogCQkJbW92emJsIFJXMmJoLCBSVDFkOyBcCiAJCQlkb19t b3ZxKFJXMCwgUlcyKTsgXAotCQkJeG9ycSBzMygsIFJUMywgOCksIHRvIyMyOyBcCi0JCQl4b3Jx IHMxKCwgUlQxLCA4KSwgdG8jIzI7CisJCQlsZWFxIHMzKCVyaXApLCBSVDI7IFwKKwkJCXhvcnEg KFJUMiwgUlQzLCA4KSwgdG8jIzI7IFwKKwkJCWxlYXEgczEoJXJpcCksIFJUMjsgXAorCQkJeG9y cSAoUlQyLCBSVDEsIDgpLCB0byMjMjsKIAogI2RlZmluZSBfX21vdnEoc3JjLCBkc3QpIFwKIAlt b3ZxIHNyYywgZHN0OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvY3J5cHRvL2doYXNoLWNsbXVsbmkt aW50ZWxfYXNtLlMgYi9hcmNoL3g4Ni9jcnlwdG8vZ2hhc2gtY2xtdWxuaS1pbnRlbF9hc20uUwpp bmRleCBmOTQzNzVhOGRjZDEuLmQ1NmEyODEyMjFmYiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5 cHRvL2doYXNoLWNsbXVsbmktaW50ZWxfYXNtLlMKKysrIGIvYXJjaC94ODYvY3J5cHRvL2doYXNo LWNsbXVsbmktaW50ZWxfYXNtLlMKQEAgLTk3LDcgKzk3LDcgQEAgRU5UUlkoY2xtdWxfZ2hhc2hf bXVsKQogCUZSQU1FX0JFR0lOCiAJbW92dXBzICglcmRpKSwgREFUQQogCW1vdnVwcyAoJXJzaSks IFNIQVNICi0JbW92YXBzIC5MYnN3YXBfbWFzaywgQlNXQVAKKwltb3ZhcHMgLkxic3dhcF9tYXNr KCVyaXApLCBCU1dBUAogCVBTSFVGQl9YTU0gQlNXQVAgREFUQQogCWNhbGwgX19jbG11bF9nZjEy OG11bF9ibGUKIAlQU0hVRkJfWE1NIEJTV0FQIERBVEEKQEAgLTExNCw3ICsxMTQsNyBAQCBFTlRS WShjbG11bF9naGFzaF91cGRhdGUpCiAJRlJBTUVfQkVHSU4KIAljbXAgJDE2LCAlcmR4CiAJamIg Lkx1cGRhdGVfanVzdF9yZXQJIyBjaGVjayBsZW5ndGgKLQltb3ZhcHMgLkxic3dhcF9tYXNrLCBC U1dBUAorCW1vdmFwcyAuTGJzd2FwX21hc2soJXJpcCksIEJTV0FQCiAJbW92dXBzICglcmRpKSwg REFUQQogCW1vdnVwcyAoJXJjeCksIFNIQVNICiAJUFNIVUZCX1hNTSBCU1dBUCBEQVRBCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eC5TIGIvYXJjaC94ODYv Y3J5cHRvL2dsdWVfaGVscGVyLWFzbS1hdnguUwppbmRleCAwMmVlMjMwOGZiMzguLjhhNDlhYjE2 OTllZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvY3J5cHRvL2dsdWVfaGVscGVyLWFzbS1hdnguUwor KysgYi9hcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eC5TCkBAIC01NCw3ICs1NCw3 IEBACiAjZGVmaW5lIGxvYWRfY3RyXzh3YXkoaXYsIGJzd2FwLCB4MCwgeDEsIHgyLCB4MywgeDQs IHg1LCB4NiwgeDcsIHQwLCB0MSwgdDIpIFwKIAl2cGNtcGVxZCB0MCwgdDAsIHQwOyBcCiAJdnBz cmxkcSAkOCwgdDAsIHQwOyAvKiBsb3c6IC0xLCBoaWdoOiAwICovIFwKLQl2bW92ZHFhIGJzd2Fw LCB0MTsgXAorCXZtb3ZkcWEgYnN3YXAoJXJpcCksIHQxOyBcCiAJXAogCS8qIGxvYWQgSVYgYW5k IGJ5dGVzd2FwICovIFwKIAl2bW92ZHF1IChpdiksIHg3OyBcCkBAIC05OSw3ICs5OSw3IEBACiAK ICNkZWZpbmUgbG9hZF94dHNfOHdheShpdiwgc3JjLCBkc3QsIHgwLCB4MSwgeDIsIHgzLCB4NCwg eDUsIHg2LCB4NywgdGl2LCB0MCwgXAogCQkgICAgICB0MSwgeHRzX2dmMTI4bXVsX2FuZF9zaGwx X21hc2spIFwKLQl2bW92ZHFhIHh0c19nZjEyOG11bF9hbmRfc2hsMV9tYXNrLCB0MDsgXAorCXZt b3ZkcWEgeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2soJXJpcCksIHQwOyBcCiAJXAogCS8qIGxv YWQgSVYgKi8gXAogCXZtb3ZkcXUgKGl2KSwgdGl2OyBcCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9j cnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eDIuUyBiL2FyY2gveDg2L2NyeXB0by9nbHVlX2hlbHBl ci1hc20tYXZ4Mi5TCmluZGV4IGE1M2FjMTFkZDM4NS4uZTA0YzgwNDY3YmQyIDEwMDY0NAotLS0g YS9hcmNoL3g4Ni9jcnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eDIuUworKysgYi9hcmNoL3g4Ni9j cnlwdG8vZ2x1ZV9oZWxwZXItYXNtLWF2eDIuUwpAQCAtNjcsNyArNjcsNyBAQAogCXZtb3ZkcXUg KGl2KSwgdDJ4OyBcCiAJdm1vdmRxYSB0MngsIHQzeDsgXAogCWluY19sZTEyOCh0MngsIHQweCwg dDF4KTsgXAotCXZicm9hZGNhc3RpMTI4IGJzd2FwLCB0MTsgXAorCXZicm9hZGNhc3RpMTI4IGJz d2FwKCVyaXApLCB0MTsgXAogCXZpbnNlcnRpMTI4ICQxLCB0MngsIHQzLCB0MjsgLyogYWI6IGxl MCA7IGNkOiBsZTEgKi8gXAogCXZwc2h1ZmIgdDEsIHQyLCB4MDsgXAogCVwKQEAgLTEyNCwxMyAr MTI0LDEzIEBACiAJCSAgICAgICB0aXZ4LCB0MCwgdDB4LCB0MSwgdDF4LCB0MiwgdDJ4LCB0Mywg XAogCQkgICAgICAgeHRzX2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMCwgXAogCQkgICAgICAgeHRz X2dmMTI4bXVsX2FuZF9zaGwxX21hc2tfMSkgXAotCXZicm9hZGNhc3RpMTI4IHh0c19nZjEyOG11 bF9hbmRfc2hsMV9tYXNrXzAsIHQxOyBcCisJdmJyb2FkY2FzdGkxMjggeHRzX2dmMTI4bXVsX2Fu ZF9zaGwxX21hc2tfMCglcmlwKSwgdDE7IFwKIAlcCiAJLyogbG9hZCBJViBhbmQgY29uc3RydWN0 IHNlY29uZCBJViAqLyBcCiAJdm1vdmRxdSAoaXYpLCB0aXZ4OyBcCiAJdm1vdmRxYSB0aXZ4LCB0 MHg7IFwKIAlnZjEyOG11bF94X2JsZSh0aXZ4LCB0MXgsIHQyeCk7IFwKLQl2YnJvYWRjYXN0aTEy OCB4dHNfZ2YxMjhtdWxfYW5kX3NobDFfbWFza18xLCB0MjsgXAorCXZicm9hZGNhc3RpMTI4IHh0 c19nZjEyOG11bF9hbmRfc2hsMV9tYXNrXzEoJXJpcCksIHQyOyBcCiAJdmluc2VydGkxMjggJDEs IHRpdngsIHQwLCB0aXY7IFwKIAl2cHhvciAoMCozMikoc3JjKSwgdGl2LCB4MDsgXAogCXZtb3Zk cXUgdGl2LCAoMCozMikoZHN0KTsgXAotLSAKMi4xNC4yLjkyMC5nY2YwYzY3OTc5Yy1nb29nCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==