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 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
powerpc: Force page alignment for initrd reserved memory
dtc/powerpc: remove obsolete .gitignore entries
powerpc/85xx: fix race bug of calling request_irq after enable elbc interrupts
powerpc/book3e: Fix CPU feature handling on e5500 in 32-bit mode
powerpc/fsl_rio: Fix compile error when CONFIG_FSL_RIO not set

+48 -41
-1
arch/powerpc/boot/.gitignore
··· 1 1 addnote 2 - dtc 3 2 empty.c 4 3 hack-coff 5 4 infblock.c
-3
arch/powerpc/boot/dtc-src/.gitignore
··· 1 - dtc-lexer.lex.c 2 - dtc-parser.tab.c 3 - dtc-parser.tab.h
+1 -1
arch/powerpc/include/asm/rio.h
··· 14 14 #define ASM_PPC_RIO_H 15 15 16 16 extern void platform_rio_init(void); 17 - #ifdef CONFIG_RAPIDIO 17 + #ifdef CONFIG_FSL_RIO 18 18 extern int fsl_rio_mcheck_exception(struct pt_regs *); 19 19 #else 20 20 static inline int fsl_rio_mcheck_exception(struct pt_regs *regs) {return 0; }
+1 -1
arch/powerpc/kernel/cputable.c
··· 1979 1979 .pvr_value = 0x80240000, 1980 1980 .cpu_name = "e5500", 1981 1981 .cpu_features = CPU_FTRS_E5500, 1982 - .cpu_user_features = COMMON_USER_BOOKE, 1982 + .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, 1983 1983 .mmu_features = MMU_FTR_TYPE_FSL_E | MMU_FTR_BIG_PHYS | 1984 1984 MMU_FTR_USE_TLBILX, 1985 1985 .icache_bsize = 64,
+24 -3
arch/powerpc/kernel/prom.c
··· 82 82 } 83 83 early_param("mem", early_parse_mem); 84 84 85 + /* 86 + * overlaps_initrd - check for overlap with page aligned extension of 87 + * initrd. 88 + */ 89 + static inline int overlaps_initrd(unsigned long start, unsigned long size) 90 + { 91 + #ifdef CONFIG_BLK_DEV_INITRD 92 + if (!initrd_start) 93 + return 0; 94 + 95 + return (start + size) > _ALIGN_DOWN(initrd_start, PAGE_SIZE) && 96 + start <= _ALIGN_UP(initrd_end, PAGE_SIZE); 97 + #else 98 + return 0; 99 + #endif 100 + } 101 + 85 102 /** 86 103 * move_device_tree - move tree to an unused area, if needed. 87 104 * 88 105 * The device tree may be allocated beyond our memory limit, or inside the 89 - * crash kernel region for kdump. If so, move it out of the way. 106 + * crash kernel region for kdump, or within the page aligned range of initrd. 107 + * If so, move it out of the way. 90 108 */ 91 109 static void __init move_device_tree(void) 92 110 { ··· 117 99 size = be32_to_cpu(initial_boot_params->totalsize); 118 100 119 101 if ((memory_limit && (start + size) > PHYSICAL_START + memory_limit) || 120 - overlaps_crashkernel(start, size)) { 102 + overlaps_crashkernel(start, size) || 103 + overlaps_initrd(start, size)) { 121 104 p = __va(memblock_alloc(size, PAGE_SIZE)); 122 105 memcpy(p, initial_boot_params, size); 123 106 initial_boot_params = (struct boot_param_header *)p; ··· 574 555 #ifdef CONFIG_BLK_DEV_INITRD 575 556 /* then reserve the initrd, if any */ 576 557 if (initrd_start && (initrd_end > initrd_start)) 577 - memblock_reserve(__pa(initrd_start), initrd_end - initrd_start); 558 + memblock_reserve(_ALIGN_DOWN(__pa(initrd_start), PAGE_SIZE), 559 + _ALIGN_UP(initrd_end, PAGE_SIZE) - 560 + _ALIGN_DOWN(initrd_start, PAGE_SIZE)); 578 561 #endif /* CONFIG_BLK_DEV_INITRD */ 579 562 580 563 #ifdef CONFIG_PPC32
-15
arch/powerpc/mm/init_32.c
··· 223 223 #undef FREESEC 224 224 } 225 225 226 - #ifdef CONFIG_BLK_DEV_INITRD 227 - void free_initrd_mem(unsigned long start, unsigned long end) 228 - { 229 - if (start < end) 230 - printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); 231 - for (; start < end; start += PAGE_SIZE) { 232 - ClearPageReserved(virt_to_page(start)); 233 - init_page_count(virt_to_page(start)); 234 - free_page(start); 235 - totalram_pages++; 236 - } 237 - } 238 - #endif 239 - 240 - 241 226 #ifdef CONFIG_8xx /* No 8xx specific .c file to put that in ... */ 242 227 void setup_initial_memory_limit(phys_addr_t first_memblock_base, 243 228 phys_addr_t first_memblock_size)
-14
arch/powerpc/mm/init_64.c
··· 99 99 ((unsigned long)__init_end - (unsigned long)__init_begin) >> 10); 100 100 } 101 101 102 - #ifdef CONFIG_BLK_DEV_INITRD 103 - void free_initrd_mem(unsigned long start, unsigned long end) 104 - { 105 - if (start < end) 106 - printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); 107 - for (; start < end; start += PAGE_SIZE) { 108 - ClearPageReserved(virt_to_page(start)); 109 - init_page_count(virt_to_page(start)); 110 - free_page(start); 111 - totalram_pages++; 112 - } 113 - } 114 - #endif 115 - 116 102 static void pgd_ctor(void *addr) 117 103 { 118 104 memset(addr, 0, PGD_TABLE_SIZE);
+19
arch/powerpc/mm/mem.c
··· 382 382 mem_init_done = 1; 383 383 } 384 384 385 + #ifdef CONFIG_BLK_DEV_INITRD 386 + void __init free_initrd_mem(unsigned long start, unsigned long end) 387 + { 388 + if (start >= end) 389 + return; 390 + 391 + start = _ALIGN_DOWN(start, PAGE_SIZE); 392 + end = _ALIGN_UP(end, PAGE_SIZE); 393 + pr_info("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); 394 + 395 + for (; start < end; start += PAGE_SIZE) { 396 + ClearPageReserved(virt_to_page(start)); 397 + init_page_count(virt_to_page(start)); 398 + free_page(start); 399 + totalram_pages++; 400 + } 401 + } 402 + #endif 403 + 385 404 /* 386 405 * This is called when a page has been modified by the kernel. 387 406 * It just marks the page as not i-cache clean. We do the i-cache
+3 -3
arch/powerpc/sysdev/fsl_lbc.c
··· 196 196 out_be32(&lbc->lteccr, LTECCR_CLEAR); 197 197 out_be32(&lbc->ltedr, LTEDR_ENABLE); 198 198 199 - /* Enable interrupts for any detected events */ 200 - out_be32(&lbc->lteir, LTEIR_ENABLE); 201 - 202 199 /* Set the monitor timeout value to the maximum for erratum A001 */ 203 200 if (of_device_is_compatible(node, "fsl,elbc")) 204 201 clrsetbits_be32(&lbc->lbcr, LBCR_BMT, LBCR_BMTPS); ··· 318 321 ret = fsl_lbc_ctrl_dev->irq; 319 322 goto err; 320 323 } 324 + 325 + /* Enable interrupts for any detected events */ 326 + out_be32(&fsl_lbc_ctrl_dev->regs->lteir, LTEIR_ENABLE); 321 327 322 328 return 0; 323 329