Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm

Pull ARM fixes from Russell King:
"Another round of fixes for ARM:
- a set of kprobes fixes from Jon Medhurst
- fix the revision checking for the L2 cache which wasn't noticed to
have been broken"

* 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
ARM: l2c: fix revision checking
ARM: kprobes: Fix test code compilation errors for ARMv4 targets
ARM: kprobes: Disallow instructions with PC and register specified shift
ARM: kprobes: Prevent known test failures stopping other tests running

+33 -13
+19 -9
arch/arm/kernel/kprobes-test-arm.c
··· 74 74 TEST_RRR( op "lt" s " r11, r",11,VAL1,", r",14,N(val),", asr r",7, 6,"")\ 75 75 TEST_RR( op "gt" s " r12, r13" ", r",14,val, ", ror r",14,7,"")\ 76 76 TEST_RR( op "le" s " r14, r",0, val, ", r13" ", lsl r",14,8,"")\ 77 - TEST_RR( op s " r12, pc" ", r",14,val, ", ror r",14,7,"")\ 78 - TEST_RR( op s " r14, r",0, val, ", pc" ", lsl r",14,8,"")\ 79 77 TEST_R( op "eq" s " r0, r",11,VAL1,", #0xf5") \ 80 78 TEST_R( op "ne" s " r11, r",0, VAL1,", #0xf5000000") \ 81 79 TEST_R( op s " r7, r",8, VAL2,", #0x000af000") \ ··· 101 103 TEST_RRR( op "ge r",11,VAL1,", r",14,N(val),", asr r",7, 6,"") \ 102 104 TEST_RR( op "le r13" ", r",14,val, ", ror r",14,7,"") \ 103 105 TEST_RR( op "gt r",0, val, ", r13" ", lsl r",14,8,"") \ 104 - TEST_RR( op " pc" ", r",14,val, ", ror r",14,7,"") \ 105 - TEST_RR( op " r",0, val, ", pc" ", lsl r",14,8,"") \ 106 106 TEST_R( op "eq r",11,VAL1,", #0xf5") \ 107 107 TEST_R( op "ne r",0, VAL1,", #0xf5000000") \ 108 108 TEST_R( op " r",8, VAL2,", #0x000af000") ··· 121 125 TEST_RR( op "ge" s " r11, r",11,N(val),", asr r",7, 6,"") \ 122 126 TEST_RR( op "lt" s " r12, r",11,val, ", ror r",14,7,"") \ 123 127 TEST_R( op "gt" s " r14, r13" ", lsl r",14,8,"") \ 124 - TEST_R( op "le" s " r14, pc" ", lsl r",14,8,"") \ 125 128 TEST( op "eq" s " r0, #0xf5") \ 126 129 TEST( op "ne" s " r11, #0xf5000000") \ 127 130 TEST( op s " r7, #0x000af000") \ ··· 154 159 TEST_SUPPORTED("cmp pc, #0x1000"); 155 160 TEST_SUPPORTED("cmp sp, #0x1000"); 156 161 157 - /* Data-processing with PC as shift*/ 162 + /* Data-processing with PC and a shift count in a register */ 158 163 TEST_UNSUPPORTED(__inst_arm(0xe15c0f1e) " @ cmp r12, r14, asl pc") 159 164 TEST_UNSUPPORTED(__inst_arm(0xe1a0cf1e) " @ mov r12, r14, asl pc") 160 165 TEST_UNSUPPORTED(__inst_arm(0xe08caf1e) " @ add r10, r12, r14, asl pc") 166 + TEST_UNSUPPORTED(__inst_arm(0xe151021f) " @ cmp r1, pc, lsl r2") 167 + TEST_UNSUPPORTED(__inst_arm(0xe17f0211) " @ cmn pc, r1, lsl r2") 168 + TEST_UNSUPPORTED(__inst_arm(0xe1a0121f) " @ mov r1, pc, lsl r2") 169 + TEST_UNSUPPORTED(__inst_arm(0xe1a0f211) " @ mov pc, r1, lsl r2") 170 + TEST_UNSUPPORTED(__inst_arm(0xe042131f) " @ sub r1, r2, pc, lsl r3") 171 + TEST_UNSUPPORTED(__inst_arm(0xe1cf1312) " @ bic r1, pc, r2, lsl r3") 172 + TEST_UNSUPPORTED(__inst_arm(0xe081f312) " @ add pc, r1, r2, lsl r3") 161 173 162 - /* Data-processing with PC as shift*/ 174 + /* Data-processing with PC as a target and status registers updated */ 163 175 TEST_UNSUPPORTED("movs pc, r1") 164 176 TEST_UNSUPPORTED("movs pc, r1, lsl r2") 165 177 TEST_UNSUPPORTED("movs pc, #0x10000") ··· 189 187 TEST_BF_R ("add pc, pc, r",14,2f-1f-8,"") 190 188 TEST_BF_R ("add pc, r",14,2f-1f-8,", pc") 191 189 TEST_BF_R ("mov pc, r",0,2f,"") 192 - TEST_BF_RR("mov pc, r",0,2f,", asl r",1,0,"") 190 + TEST_BF_R ("add pc, pc, r",14,(2f-1f-8)*2,", asr #1") 193 191 TEST_BB( "sub pc, pc, #1b-2b+8") 194 192 #if __LINUX_ARM_ARCH__ == 6 && !defined(CONFIG_CPU_V7) 195 193 TEST_BB( "sub pc, pc, #1b-2b+8-2") /* UNPREDICTABLE before and after ARMv6 */ 196 194 #endif 197 195 TEST_BB_R( "sub pc, pc, r",14, 1f-2f+8,"") 198 196 TEST_BB_R( "rsb pc, r",14,1f-2f+8,", pc") 199 - TEST_RR( "add pc, pc, r",10,-2,", asl r",11,1,"") 197 + TEST_R( "add pc, pc, r",10,-2,", asl #1") 200 198 #ifdef CONFIG_THUMB2_KERNEL 201 199 TEST_ARM_TO_THUMB_INTERWORK_R("add pc, pc, r",0,3f-1f-8+1,"") 202 200 TEST_ARM_TO_THUMB_INTERWORK_R("sub pc, r",0,3f+8+1,", #8") ··· 218 216 TEST_BB_R("bx r",7,2f,"") 219 217 TEST_BF_R("bxeq r",14,2f,"") 220 218 219 + #if __LINUX_ARM_ARCH__ >= 5 221 220 TEST_R("clz r0, r",0, 0x0,"") 222 221 TEST_R("clzeq r7, r",14,0x1,"") 223 222 TEST_R("clz lr, r",7, 0xffffffff,"") ··· 340 337 TEST_UNSUPPORTED(__inst_arm(0xe16f02e1) " @ smultt pc, r1, r2") 341 338 TEST_UNSUPPORTED(__inst_arm(0xe16002ef) " @ smultt r0, pc, r2") 342 339 TEST_UNSUPPORTED(__inst_arm(0xe1600fe1) " @ smultt r0, r1, pc") 340 + #endif 343 341 344 342 TEST_GROUP("Multiply and multiply-accumulate") 345 343 ··· 563 559 TEST_UNSUPPORTED("ldrsht r1, [r2], #48") 564 560 #endif 565 561 562 + #if __LINUX_ARM_ARCH__ >= 5 566 563 TEST_RPR( "strd r",0, VAL1,", [r",1, 48,", -r",2,24,"]") 567 564 TEST_RPR( "strccd r",8, VAL2,", [r",13,0, ", r",12,48,"]") 568 565 TEST_RPR( "strd r",4, VAL1,", [r",2, 24,", r",3, 48,"]!") ··· 600 595 TEST_UNSUPPORTED(__inst_arm(0xe1efc3d0) " @ ldrd r12, [pc, #48]!") 601 596 TEST_UNSUPPORTED(__inst_arm(0xe0c9f3d0) " @ ldrd pc, [r9], #48") 602 597 TEST_UNSUPPORTED(__inst_arm(0xe0c9e3d0) " @ ldrd lr, [r9], #48") 598 + #endif 603 599 604 600 TEST_GROUP("Miscellaneous") 605 601 ··· 1233 1227 TEST_COPROCESSOR( "mrc"two" 0, 0, r0, cr0, cr0, 0") 1234 1228 1235 1229 COPROCESSOR_INSTRUCTIONS_ST_LD("",e) 1230 + #if __LINUX_ARM_ARCH__ >= 5 1236 1231 COPROCESSOR_INSTRUCTIONS_MC_MR("",e) 1232 + #endif 1237 1233 TEST_UNSUPPORTED("svc 0") 1238 1234 TEST_UNSUPPORTED("svc 0xffffff") 1239 1235 ··· 1295 1287 TEST( "blx __dummy_thumb_subroutine_odd") 1296 1288 #endif /* __LINUX_ARM_ARCH__ >= 6 */ 1297 1289 1290 + #if __LINUX_ARM_ARCH__ >= 5 1298 1291 COPROCESSOR_INSTRUCTIONS_ST_LD("2",f) 1292 + #endif 1299 1293 #if __LINUX_ARM_ARCH__ >= 6 1300 1294 COPROCESSOR_INSTRUCTIONS_MC_MR("2",f) 1301 1295 #endif
+10
arch/arm/kernel/kprobes-test.c
··· 225 225 static int post_handler_called; 226 226 static int jprobe_func_called; 227 227 static int kretprobe_handler_called; 228 + static int tests_failed; 228 229 229 230 #define FUNC_ARG1 0x12345678 230 231 #define FUNC_ARG2 0xabcdef ··· 462 461 463 462 pr_info(" jprobe\n"); 464 463 ret = test_jprobe(func); 464 + #if defined(CONFIG_THUMB2_KERNEL) && !defined(MODULE) 465 + if (ret == -EINVAL) { 466 + pr_err("FAIL: Known longtime bug with jprobe on Thumb kernels\n"); 467 + tests_failed = ret; 468 + ret = 0; 469 + } 470 + #endif 465 471 if (ret < 0) 466 472 return ret; 467 473 ··· 1679 1671 #endif 1680 1672 1681 1673 out: 1674 + if (ret == 0) 1675 + ret = tests_failed; 1682 1676 if (ret == 0) 1683 1677 pr_info("Finished kprobe tests OK\n"); 1684 1678 else
+3 -3
arch/arm/kernel/probes-arm.c
··· 341 341 /* CMP (reg-shift reg) cccc 0001 0101 xxxx xxxx xxxx 0xx1 xxxx */ 342 342 /* CMN (reg-shift reg) cccc 0001 0111 xxxx xxxx xxxx 0xx1 xxxx */ 343 343 DECODE_EMULATEX (0x0f900090, 0x01100010, PROBES_DATA_PROCESSING_REG, 344 - REGS(ANY, 0, NOPC, 0, ANY)), 344 + REGS(NOPC, 0, NOPC, 0, NOPC)), 345 345 346 346 /* MOV (reg-shift reg) cccc 0001 101x xxxx xxxx xxxx 0xx1 xxxx */ 347 347 /* MVN (reg-shift reg) cccc 0001 111x xxxx xxxx xxxx 0xx1 xxxx */ 348 348 DECODE_EMULATEX (0x0fa00090, 0x01a00010, PROBES_DATA_PROCESSING_REG, 349 - REGS(0, ANY, NOPC, 0, ANY)), 349 + REGS(0, NOPC, NOPC, 0, NOPC)), 350 350 351 351 /* AND (reg-shift reg) cccc 0000 000x xxxx xxxx xxxx 0xx1 xxxx */ 352 352 /* EOR (reg-shift reg) cccc 0000 001x xxxx xxxx xxxx 0xx1 xxxx */ ··· 359 359 /* ORR (reg-shift reg) cccc 0001 100x xxxx xxxx xxxx 0xx1 xxxx */ 360 360 /* BIC (reg-shift reg) cccc 0001 110x xxxx xxxx xxxx 0xx1 xxxx */ 361 361 DECODE_EMULATEX (0x0e000090, 0x00000010, PROBES_DATA_PROCESSING_REG, 362 - REGS(ANY, ANY, NOPC, 0, ANY)), 362 + REGS(NOPC, NOPC, NOPC, 0, NOPC)), 363 363 364 364 DECODE_END 365 365 };
+1 -1
arch/arm/mm/cache-l2x0.c
··· 664 664 665 665 static void __init l2c310_enable(void __iomem *base, u32 aux, unsigned num_lock) 666 666 { 667 - unsigned rev = readl_relaxed(base + L2X0_CACHE_ID) & L2X0_CACHE_ID_PART_MASK; 667 + unsigned rev = readl_relaxed(base + L2X0_CACHE_ID) & L2X0_CACHE_ID_RTL_MASK; 668 668 bool cortex_a9 = read_cpuid_part_number() == ARM_CPU_PART_CORTEX_A9; 669 669 670 670 if (rev >= L310_CACHE_ID_RTL_R2P0) {