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

Pull ARM fixes from Russell King:
"Another round of ARM fixes. The largest change here is the L2 changes
to work around problems for the Armada 37x/380 devices, where most of
the size comes down to comments rather than code.

The other significant fix here is for the ptrace code, to ensure that
rewritten syscalls work as intended. This was pointed out by Kees
Cook, but Will Deacon reworked the patch to be more elegant.

The remainder are fairly trivial changes"

* 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
ARM: 8087/1: ptrace: reload syscall number after secure_computing() check
ARM: 8086/1: Set memblock limit for nommu
ARM: 8085/1: sa1100: collie: add top boot mtd partition
ARM: 8084/1: sa1100: collie: revert back to cfi_probe
ARM: 8080/1: mcpm.h: remove unused variable declaration
ARM: 8076/1: mm: add support for HW coherent systems in PL310 cache

Changed files
+45 -6
Documentation
devicetree
bindings
arm
arch
arm
include
asm
kernel
mach-sa1100
mm
+3
Documentation/devicetree/bindings/arm/l2cc.txt
··· 40 40 - arm,filter-ranges : <start length> Starting address and length of window to 41 41 filter. Addresses in the filter window are directed to the M1 port. Other 42 42 addresses will go to the M0 port. 43 + - arm,io-coherent : indicates that the system is operating in an hardware 44 + I/O coherent mode. Valid only when the arm,pl310-cache compatible 45 + string is used. 43 46 - interrupts : 1 combined interrupt. 44 47 - cache-id-part: cache id part number to be used if it is not present 45 48 on hardware
-2
arch/arm/include/asm/mcpm.h
··· 208 208 struct mcpm_sync_struct clusters[MAX_NR_CLUSTERS]; 209 209 }; 210 210 211 - extern unsigned long sync_phys; /* physical address of *mcpm_sync */ 212 - 213 211 void __mcpm_cpu_going_down(unsigned int cpu, unsigned int cluster); 214 212 void __mcpm_cpu_down(unsigned int cpu, unsigned int cluster); 215 213 void __mcpm_outbound_leave_critical(unsigned int cluster, int state);
+4 -3
arch/arm/kernel/ptrace.c
··· 908 908 PTRACE_SYSCALL_EXIT, 909 909 }; 910 910 911 - static int tracehook_report_syscall(struct pt_regs *regs, 911 + static void tracehook_report_syscall(struct pt_regs *regs, 912 912 enum ptrace_syscall_dir dir) 913 913 { 914 914 unsigned long ip; ··· 926 926 current_thread_info()->syscall = -1; 927 927 928 928 regs->ARM_ip = ip; 929 - return current_thread_info()->syscall; 930 929 } 931 930 932 931 asmlinkage int syscall_trace_enter(struct pt_regs *regs, int scno) ··· 937 938 return -1; 938 939 939 940 if (test_thread_flag(TIF_SYSCALL_TRACE)) 940 - scno = tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); 941 + tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); 942 + 943 + scno = current_thread_info()->syscall; 941 944 942 945 if (test_thread_flag(TIF_SYSCALL_TRACEPOINT)) 943 946 trace_sys_enter(regs, scno);
+6 -1
arch/arm/mach-sa1100/collie.c
··· 329 329 .name = "rootfs", 330 330 .offset = MTDPART_OFS_APPEND, 331 331 .size = 0x00e20000, 332 + }, { 333 + .name = "bootblock", 334 + .offset = MTDPART_OFS_APPEND, 335 + .size = 0x00020000, 336 + .mask_flags = MTD_WRITEABLE 332 337 } 333 338 }; 334 339 ··· 361 356 } 362 357 363 358 static struct flash_platform_data collie_flash_data = { 364 - .map_name = "jedec_probe", 359 + .map_name = "cfi_probe", 365 360 .init = collie_flash_init, 366 361 .set_vpp = collie_set_vpp, 367 362 .exit = collie_flash_exit,
+31
arch/arm/mm/cache-l2x0.c
··· 1069 1069 }; 1070 1070 1071 1071 /* 1072 + * This is a variant of the of_l2c310_data with .sync set to 1073 + * NULL. Outer sync operations are not needed when the system is I/O 1074 + * coherent, and potentially harmful in certain situations (PCIe/PL310 1075 + * deadlock on Armada 375/38x due to hardware I/O coherency). The 1076 + * other operations are kept because they are infrequent (therefore do 1077 + * not cause the deadlock in practice) and needed for secondary CPU 1078 + * boot and other power management activities. 1079 + */ 1080 + static const struct l2c_init_data of_l2c310_coherent_data __initconst = { 1081 + .type = "L2C-310 Coherent", 1082 + .way_size_0 = SZ_8K, 1083 + .num_lock = 8, 1084 + .of_parse = l2c310_of_parse, 1085 + .enable = l2c310_enable, 1086 + .fixup = l2c310_fixup, 1087 + .save = l2c310_save, 1088 + .outer_cache = { 1089 + .inv_range = l2c210_inv_range, 1090 + .clean_range = l2c210_clean_range, 1091 + .flush_range = l2c210_flush_range, 1092 + .flush_all = l2c210_flush_all, 1093 + .disable = l2c310_disable, 1094 + .resume = l2c310_resume, 1095 + }, 1096 + }; 1097 + 1098 + /* 1072 1099 * Note that the end addresses passed to Linux primitives are 1073 1100 * noninclusive, while the hardware cache range operations use 1074 1101 * inclusive start and end addresses. ··· 1513 1486 l2x0_saved_regs.phy_base = res.start; 1514 1487 1515 1488 data = of_match_node(l2x0_ids, np)->data; 1489 + 1490 + if (of_device_is_compatible(np, "arm,pl310-cache") && 1491 + of_property_read_bool(np, "arm,io-coherent")) 1492 + data = &of_l2c310_coherent_data; 1516 1493 1517 1494 old_aux = readl_relaxed(l2x0_base + L2X0_AUX_CTRL); 1518 1495 if (old_aux != ((old_aux & aux_mask) | aux_val)) {
+1
arch/arm/mm/nommu.c
··· 300 300 sanity_check_meminfo_mpu(); 301 301 end = memblock_end_of_DRAM(); 302 302 high_memory = __va(end - 1) + 1; 303 + memblock_set_current_limit(end); 303 304 } 304 305 305 306 /*