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

Merge tag 'arc-4.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc

Pull ARC fixes from Vineet Gupta:
"Accumulated fixes for ARC which I've been been sitting on for a while:

- reading clk from driver vs device tree [Vlad]

- fix support for UIO in VDK platform [Alexey]

- SLC busy bit reading workaround

- build warning with kprobes header reorg"

* tag 'arc-4.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
ARC: fix build warnings with !CONFIG_KPROBES
ARCv2: SLC: Make sure busy bit is set properly on SLC flushing
ARC: vdk: Fix support of UIO
ARCv2: make unimplemented vectors as no-ops rather than halt core
ARC: get rate from clk driver instead of reading device tree
ARC: [dts] add cpu nodes to ARCHS SMP device tree
ARC: [dts] add input clocks for cpu nodes

+60 -18
+1
arch/arc/boot/dts/skeleton.dtsi
··· 26 26 device_type = "cpu"; 27 27 compatible = "snps,arc770d"; 28 28 reg = <0>; 29 + clocks = <&core_clk>; 29 30 }; 30 31 }; 31 32
+1
arch/arc/boot/dts/skeleton_hs.dtsi
··· 21 21 device_type = "cpu"; 22 22 compatible = "snps,archs38"; 23 23 reg = <0>; 24 + clocks = <&core_clk>; 24 25 }; 25 26 }; 26 27
+20 -1
arch/arc/boot/dts/skeleton_hs_idu.dtsi
··· 19 19 20 20 cpu@0 { 21 21 device_type = "cpu"; 22 - compatible = "snps,archs38xN"; 22 + compatible = "snps,archs38"; 23 23 reg = <0>; 24 + clocks = <&core_clk>; 25 + }; 26 + cpu@1 { 27 + device_type = "cpu"; 28 + compatible = "snps,archs38"; 29 + reg = <1>; 30 + clocks = <&core_clk>; 31 + }; 32 + cpu@2 { 33 + device_type = "cpu"; 34 + compatible = "snps,archs38"; 35 + reg = <2>; 36 + clocks = <&core_clk>; 37 + }; 38 + cpu@3 { 39 + device_type = "cpu"; 40 + compatible = "snps,archs38"; 41 + reg = <3>; 42 + clocks = <&core_clk>; 24 43 }; 25 44 }; 26 45
+13 -7
arch/arc/boot/dts/vdk_axs10x_mb.dtsi
··· 112 112 interrupts = <7>; 113 113 bus-width = <4>; 114 114 }; 115 + }; 115 116 116 - /* Embedded Vision subsystem UIO mappings; only relevant for EV VDK */ 117 - uio_ev: uio@0xD0000000 { 118 - compatible = "generic-uio"; 119 - reg = <0xD0000000 0x2000 0xD1000000 0x2000 0x90000000 0x10000000 0xC0000000 0x10000000>; 120 - reg-names = "ev_gsa", "ev_ctrl", "ev_shared_mem", "ev_code_mem"; 121 - interrupts = <23>; 122 - }; 117 + /* 118 + * Embedded Vision subsystem UIO mappings; only relevant for EV VDK 119 + * 120 + * This node is intentionally put outside of MB above becase 121 + * it maps areas outside of MB's 0xEz-0xFz. 122 + */ 123 + uio_ev: uio@0xD0000000 { 124 + compatible = "generic-uio"; 125 + reg = <0xD0000000 0x2000 0xD1000000 0x2000 0x90000000 0x10000000 0xC0000000 0x10000000>; 126 + reg-names = "ev_gsa", "ev_ctrl", "ev_shared_mem", "ev_code_mem"; 127 + interrupt-parent = <&mb_intc>; 128 + interrupts = <23>; 123 129 }; 124 130 };
+1 -3
arch/arc/include/asm/kprobes.h
··· 54 54 void kretprobe_trampoline(void); 55 55 void trap_is_kprobe(unsigned long address, struct pt_regs *regs); 56 56 #else 57 - static void trap_is_kprobe(unsigned long address, struct pt_regs *regs) 58 - { 59 - } 57 + #define trap_is_kprobe(address, regs) 60 58 #endif /* CONFIG_KPROBES */ 61 59 62 60 #endif /* _ARC_KPROBES_H */
+9 -3
arch/arc/kernel/entry-arcv2.S
··· 100 100 ;################### Non TLB Exception Handling ############################# 101 101 102 102 ENTRY(EV_SWI) 103 - flag 1 103 + ; TODO: implement this 104 + EXCEPTION_PROLOGUE 105 + b ret_from_exception 104 106 END(EV_SWI) 105 107 106 108 ENTRY(EV_DivZero) 107 - flag 1 109 + ; TODO: implement this 110 + EXCEPTION_PROLOGUE 111 + b ret_from_exception 108 112 END(EV_DivZero) 109 113 110 114 ENTRY(EV_DCError) 111 - flag 1 115 + ; TODO: implement this 116 + EXCEPTION_PROLOGUE 117 + b ret_from_exception 112 118 END(EV_DCError) 113 119 114 120 ; ---------------------------------------------
+12 -4
arch/arc/kernel/setup.c
··· 10 10 #include <linux/fs.h> 11 11 #include <linux/delay.h> 12 12 #include <linux/root_dev.h> 13 + #include <linux/clk.h> 13 14 #include <linux/clk-provider.h> 14 15 #include <linux/clocksource.h> 15 16 #include <linux/console.h> ··· 489 488 { 490 489 char *str; 491 490 int cpu_id = ptr_to_cpu(v); 492 - struct device_node *core_clk = of_find_node_by_name(NULL, "core_clk"); 493 - u32 freq = 0; 491 + struct device *cpu_dev = get_cpu_device(cpu_id); 492 + struct clk *cpu_clk; 493 + unsigned long freq = 0; 494 494 495 495 if (!cpu_online(cpu_id)) { 496 496 seq_printf(m, "processor [%d]\t: Offline\n", cpu_id); ··· 504 502 505 503 seq_printf(m, arc_cpu_mumbojumbo(cpu_id, str, PAGE_SIZE)); 506 504 507 - of_property_read_u32(core_clk, "clock-frequency", &freq); 505 + cpu_clk = clk_get(cpu_dev, NULL); 506 + if (IS_ERR(cpu_clk)) { 507 + seq_printf(m, "CPU speed \t: Cannot get clock for processor [%d]\n", 508 + cpu_id); 509 + } else { 510 + freq = clk_get_rate(cpu_clk); 511 + } 508 512 if (freq) 509 - seq_printf(m, "CPU speed\t: %u.%02u Mhz\n", 513 + seq_printf(m, "CPU speed\t: %lu.%02lu Mhz\n", 510 514 freq / 1000000, (freq / 10000) % 100); 511 515 512 516 seq_printf(m, "Bogo MIPS\t: %lu.%02lu\n",
+3
arch/arc/mm/cache.c
··· 633 633 634 634 write_aux_reg(ARC_REG_SLC_INVALIDATE, 1); 635 635 636 + /* Make sure "busy" bit reports correct stataus, see STAR 9001165532 */ 637 + read_aux_reg(r); 638 + 636 639 /* Important to wait for flush to complete */ 637 640 while (read_aux_reg(r) & SLC_CTRL_BUSY); 638 641 }