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 tag 'arc-5.9-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc

Pull ARC fixes from Vineet Gupta:

- HSDK-4xd Dev system: perf driver updates for sampling interrupt

- HSDK* Dev System: Ethernet broken [Evgeniy Didin]

- HIGHMEM broken (2 memory banks) [Mike Rapoport]

- show_regs() rewrite once and for all

- Other minor fixes

* tag 'arc-5.9-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
ARC: [plat-hsdk]: Switch ethernet phy-mode to rgmii-id
arc: fix memory initialization for systems with two memory banks
irqchip/eznps: Fix build error for !ARC700 builds
ARC: show_regs: fix r12 printing and simplify
ARC: HSDK: wireup perf irq
ARC: perf: don't bail setup if pct irq missing in device-tree
ARC: pgalloc.h: delete a duplicated word + other fixes

+62 -73
+4 -2
arch/arc/boot/dts/hsdk.dts
··· 88 88 89 89 arcpct: pct { 90 90 compatible = "snps,archs-pct"; 91 + interrupt-parent = <&cpu_intc>; 92 + interrupts = <20>; 91 93 }; 92 94 93 95 /* TIMER0 with interrupt for clockevent */ ··· 210 208 reg = <0x8000 0x2000>; 211 209 interrupts = <10>; 212 210 interrupt-names = "macirq"; 213 - phy-mode = "rgmii"; 211 + phy-mode = "rgmii-id"; 214 212 snps,pbl = <32>; 215 213 snps,multicast-filter-bins = <256>; 216 214 clocks = <&gmacclk>; ··· 228 226 #address-cells = <1>; 229 227 #size-cells = <0>; 230 228 compatible = "snps,dwmac-mdio"; 231 - phy0: ethernet-phy@0 { 229 + phy0: ethernet-phy@0 { /* Micrel KSZ9031 */ 232 230 reg = <0>; 233 231 }; 234 232 };
+2 -2
arch/arc/include/asm/pgalloc.h
··· 18 18 * vineetg: April 2010 19 19 * -Switched pgtable_t from being struct page * to unsigned long 20 20 * =Needed so that Page Table allocator (pte_alloc_one) is not forced to 21 - * to deal with struct page. Thay way in future we can make it allocate 21 + * deal with struct page. That way in future we can make it allocate 22 22 * multiple PG Tbls in one Page Frame 23 23 * =sweet side effect is avoiding calls to ugly page_address( ) from the 24 - * pg-tlb allocator sub-sys (pte_alloc_one, ptr_free, pmd_populate 24 + * pg-tlb allocator sub-sys (pte_alloc_one, ptr_free, pmd_populate) 25 25 * 26 26 * Amit Bhor, Sameer Dhavale: Codito Technologies 2004 27 27 */
+4 -10
arch/arc/kernel/perf_event.c
··· 562 562 { 563 563 struct arc_reg_pct_build pct_bcr; 564 564 struct arc_reg_cc_build cc_bcr; 565 - int i, has_interrupts; 565 + int i, has_interrupts, irq; 566 566 int counter_size; /* in bits */ 567 567 568 568 union cc_name { ··· 637 637 .attr_groups = arc_pmu->attr_groups, 638 638 }; 639 639 640 - if (has_interrupts) { 641 - int irq = platform_get_irq(pdev, 0); 642 - 643 - if (irq < 0) { 644 - pr_err("Cannot get IRQ number for the platform\n"); 645 - return -ENODEV; 646 - } 640 + if (has_interrupts && (irq = platform_get_irq(pdev, 0) >= 0)) { 647 641 648 642 arc_pmu->irq = irq; 649 643 ··· 646 652 this_cpu_ptr(&arc_pmu_cpu)); 647 653 648 654 on_each_cpu(arc_cpu_pmu_irq_init, &irq, 1); 649 - 650 - } else 655 + } else { 651 656 arc_pmu->pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT; 657 + } 652 658 653 659 /* 654 660 * perf parser doesn't really like '-' symbol in events name, so let's
+30 -47
arch/arc/kernel/troubleshoot.c
··· 18 18 19 19 #define ARC_PATH_MAX 256 20 20 21 - /* 22 - * Common routine to print scratch regs (r0-r12) or callee regs (r13-r25) 23 - * -Prints 3 regs per line and a CR. 24 - * -To continue, callee regs right after scratch, special handling of CR 25 - */ 26 - static noinline void print_reg_file(long *reg_rev, int start_num) 21 + static noinline void print_regs_scratch(struct pt_regs *regs) 27 22 { 28 - unsigned int i; 29 - char buf[512]; 30 - int n = 0, len = sizeof(buf); 23 + pr_cont("BTA: 0x%08lx\n SP: 0x%08lx FP: 0x%08lx BLK: %pS\n", 24 + regs->bta, regs->sp, regs->fp, (void *)regs->blink); 25 + pr_cont("LPS: 0x%08lx\tLPE: 0x%08lx\tLPC: 0x%08lx\n", 26 + regs->lp_start, regs->lp_end, regs->lp_count); 31 27 32 - for (i = start_num; i < start_num + 13; i++) { 33 - n += scnprintf(buf + n, len - n, "r%02u: 0x%08lx\t", 34 - i, (unsigned long)*reg_rev); 35 - 36 - if (((i + 1) % 3) == 0) 37 - n += scnprintf(buf + n, len - n, "\n"); 38 - 39 - /* because pt_regs has regs reversed: r12..r0, r25..r13 */ 40 - if (is_isa_arcv2() && start_num == 0) 41 - reg_rev++; 42 - else 43 - reg_rev--; 44 - } 45 - 46 - if (start_num != 0) 47 - n += scnprintf(buf + n, len - n, "\n\n"); 48 - 49 - /* To continue printing callee regs on same line as scratch regs */ 50 - if (start_num == 0) 51 - pr_info("%s", buf); 52 - else 53 - pr_cont("%s\n", buf); 28 + pr_info("r00: 0x%08lx\tr01: 0x%08lx\tr02: 0x%08lx\n" \ 29 + "r03: 0x%08lx\tr04: 0x%08lx\tr05: 0x%08lx\n" \ 30 + "r06: 0x%08lx\tr07: 0x%08lx\tr08: 0x%08lx\n" \ 31 + "r09: 0x%08lx\tr10: 0x%08lx\tr11: 0x%08lx\n" \ 32 + "r12: 0x%08lx\t", 33 + regs->r0, regs->r1, regs->r2, 34 + regs->r3, regs->r4, regs->r5, 35 + regs->r6, regs->r7, regs->r8, 36 + regs->r9, regs->r10, regs->r11, 37 + regs->r12); 54 38 } 55 39 56 - static void show_callee_regs(struct callee_regs *cregs) 40 + static void print_regs_callee(struct callee_regs *regs) 57 41 { 58 - print_reg_file(&(cregs->r13), 13); 42 + pr_cont("r13: 0x%08lx\tr14: 0x%08lx\n" \ 43 + "r15: 0x%08lx\tr16: 0x%08lx\tr17: 0x%08lx\n" \ 44 + "r18: 0x%08lx\tr19: 0x%08lx\tr20: 0x%08lx\n" \ 45 + "r21: 0x%08lx\tr22: 0x%08lx\tr23: 0x%08lx\n" \ 46 + "r24: 0x%08lx\tr25: 0x%08lx\n", 47 + regs->r13, regs->r14, 48 + regs->r15, regs->r16, regs->r17, 49 + regs->r18, regs->r19, regs->r20, 50 + regs->r21, regs->r22, regs->r23, 51 + regs->r24, regs->r25); 59 52 } 60 53 61 54 static void print_task_path_n_nm(struct task_struct *tsk) ··· 168 175 void show_regs(struct pt_regs *regs) 169 176 { 170 177 struct task_struct *tsk = current; 171 - struct callee_regs *cregs; 178 + struct callee_regs *cregs = (struct callee_regs *)tsk->thread.callee_reg; 172 179 173 180 /* 174 181 * generic code calls us with preemption disabled, but some calls ··· 197 204 STS_BIT(regs, A2), STS_BIT(regs, A1), 198 205 STS_BIT(regs, E2), STS_BIT(regs, E1)); 199 206 #else 200 - pr_cont(" [%2s%2s%2s%2s]", 207 + pr_cont(" [%2s%2s%2s%2s] ", 201 208 STS_BIT(regs, IE), 202 209 (regs->status32 & STATUS_U_MASK) ? "U " : "K ", 203 210 STS_BIT(regs, DE), STS_BIT(regs, AE)); 204 211 #endif 205 - pr_cont(" BTA: 0x%08lx\n SP: 0x%08lx FP: 0x%08lx BLK: %pS\n", 206 - regs->bta, regs->sp, regs->fp, (void *)regs->blink); 207 - pr_info("LPS: 0x%08lx\tLPE: 0x%08lx\tLPC: 0x%08lx\n", 208 - regs->lp_start, regs->lp_end, regs->lp_count); 209 212 210 - /* print regs->r0 thru regs->r12 211 - * Sequential printing was generating horrible code 212 - */ 213 - print_reg_file(&(regs->r0), 0); 214 - 215 - /* If Callee regs were saved, display them too */ 216 - cregs = (struct callee_regs *)current->thread.callee_reg; 213 + print_regs_scratch(regs); 217 214 if (cregs) 218 - show_callee_regs(cregs); 215 + print_regs_callee(cregs); 219 216 220 217 preempt_disable(); 221 218 }
+16 -11
arch/arc/mm/init.c
··· 26 26 27 27 #ifdef CONFIG_HIGHMEM 28 28 static unsigned long min_high_pfn, max_high_pfn; 29 - static u64 high_mem_start; 30 - static u64 high_mem_sz; 29 + static phys_addr_t high_mem_start; 30 + static phys_addr_t high_mem_sz; 31 31 #endif 32 32 33 33 #ifdef CONFIG_DISCONTIGMEM ··· 69 69 high_mem_sz = size; 70 70 in_use = 1; 71 71 memblock_add_node(base, size, 1); 72 + memblock_reserve(base, size); 72 73 #endif 73 74 } 74 75 ··· 158 157 min_high_pfn = PFN_DOWN(high_mem_start); 159 158 max_high_pfn = PFN_DOWN(high_mem_start + high_mem_sz); 160 159 161 - max_zone_pfn[ZONE_HIGHMEM] = max_high_pfn; 160 + max_zone_pfn[ZONE_HIGHMEM] = min_low_pfn; 162 161 163 162 high_memory = (void *)(min_high_pfn << PAGE_SHIFT); 164 163 kmap_init(); 165 164 #endif 166 165 167 166 free_area_init(max_zone_pfn); 167 + } 168 + 169 + static void __init highmem_init(void) 170 + { 171 + #ifdef CONFIG_HIGHMEM 172 + unsigned long tmp; 173 + 174 + memblock_free(high_mem_start, high_mem_sz); 175 + for (tmp = min_high_pfn; tmp < max_high_pfn; tmp++) 176 + free_highmem_page(pfn_to_page(tmp)); 177 + #endif 168 178 } 169 179 170 180 /* ··· 186 174 */ 187 175 void __init mem_init(void) 188 176 { 189 - #ifdef CONFIG_HIGHMEM 190 - unsigned long tmp; 191 - 192 - reset_all_zones_managed_pages(); 193 - for (tmp = min_high_pfn; tmp < max_high_pfn; tmp++) 194 - free_highmem_page(pfn_to_page(tmp)); 195 - #endif 196 - 197 177 memblock_free_all(); 178 + highmem_init(); 198 179 mem_init_print_info(NULL); 199 180 }
-1
arch/arc/plat-eznps/include/plat/ctop.h
··· 33 33 #define CTOP_AUX_DPC (CTOP_AUX_BASE + 0x02C) 34 34 #define CTOP_AUX_LPC (CTOP_AUX_BASE + 0x030) 35 35 #define CTOP_AUX_EFLAGS (CTOP_AUX_BASE + 0x080) 36 - #define CTOP_AUX_IACK (CTOP_AUX_BASE + 0x088) 37 36 #define CTOP_AUX_GPA1 (CTOP_AUX_BASE + 0x08C) 38 37 #define CTOP_AUX_UDMC (CTOP_AUX_BASE + 0x300) 39 38
+6
include/soc/nps/common.h
··· 45 45 #define CTOP_INST_MOV2B_FLIP_R3_B1_B2_INST 0x5B60 46 46 #define CTOP_INST_MOV2B_FLIP_R3_B1_B2_LIMM 0x00010422 47 47 48 + #ifndef AUX_IENABLE 49 + #define AUX_IENABLE 0x40c 50 + #endif 51 + 52 + #define CTOP_AUX_IACK (0xFFFFF800 + 0x088) 53 + 48 54 #ifndef __ASSEMBLY__ 49 55 50 56 /* In order to increase compilation test coverage */