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 git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
serial: sh-sci: remove duplicated #include
sh: Export uncached helper symbols.
sh: Fix up NUMA build for 29-bit.
serial: sh-sci: Fix build failure for non-sh architectures.
sh: Fix up uncached offset for legacy 29-bit mode.
sh: Support CPU affinity masks for INTC controllers.

+50 -2
+7
arch/sh/include/asm/mmu.h
··· 66 66 67 67 #else 68 68 69 + static inline int 70 + pmb_bolt_mapping(unsigned long virt, phys_addr_t phys, 71 + unsigned long size, pgprot_t prot) 72 + { 73 + return -EINVAL; 74 + } 75 + 69 76 static inline void __iomem * 70 77 pmb_remap_caller(phys_addr_t phys, unsigned long size, 71 78 pgprot_t prot, void *caller)
+9
arch/sh/mm/uncached.c
··· 1 1 #include <linux/init.h> 2 + #include <linux/module.h> 2 3 #include <asm/sizes.h> 3 4 #include <asm/page.h> 5 + #include <asm/addrspace.h> 4 6 5 7 /* 6 8 * This is the offset of the uncached section from its cached alias. ··· 17 15 unsigned long cached_to_uncached = SZ_512M; 18 16 unsigned long uncached_size = SZ_512M; 19 17 unsigned long uncached_start, uncached_end; 18 + EXPORT_SYMBOL(uncached_start); 19 + EXPORT_SYMBOL(uncached_end); 20 20 21 21 int virt_addr_uncached(unsigned long kaddr) 22 22 { 23 23 return (kaddr >= uncached_start) && (kaddr < uncached_end); 24 24 } 25 + EXPORT_SYMBOL(virt_addr_uncached); 25 26 26 27 void __init uncached_init(void) 27 28 { 29 + #ifdef CONFIG_29BIT 30 + uncached_start = P2SEG; 31 + #else 28 32 uncached_start = memory_end; 33 + #endif 29 34 uncached_end = uncached_start + uncached_size; 30 35 } 31 36
-1
drivers/serial/sh-sci.c
··· 50 50 #include <linux/list.h> 51 51 #include <linux/dmaengine.h> 52 52 #include <linux/scatterlist.h> 53 - #include <linux/timer.h> 54 53 55 54 #ifdef CONFIG_SUPERH 56 55 #include <asm/sh_bios.h>
+30 -1
drivers/sh/intc.c
··· 2 2 * Shared interrupt handling code for IPR and INTC2 types of IRQs. 3 3 * 4 4 * Copyright (C) 2007, 2008 Magnus Damm 5 - * Copyright (C) 2009 Paul Mundt 5 + * Copyright (C) 2009, 2010 Paul Mundt 6 6 * 7 7 * Based on intc2.c and ipr.c 8 8 * ··· 26 26 #include <linux/list.h> 27 27 #include <linux/topology.h> 28 28 #include <linux/bitmap.h> 29 + #include <linux/cpumask.h> 29 30 30 31 #define _INTC_MK(fn, mode, addr_e, addr_d, width, shift) \ 31 32 ((shift) | ((width) << 5) | ((fn) << 9) | ((mode) << 13) | \ ··· 235 234 unsigned int cpu; 236 235 237 236 for (cpu = 0; cpu < SMP_NR(d, _INTC_ADDR_E(handle)); cpu++) { 237 + #ifdef CONFIG_SMP 238 + if (!cpumask_test_cpu(cpu, irq_to_desc(irq)->affinity)) 239 + continue; 240 + #endif 238 241 addr = INTC_REG(d, _INTC_ADDR_E(handle), cpu); 239 242 intc_enable_fns[_INTC_MODE(handle)](addr, handle, intc_reg_fns\ 240 243 [_INTC_FN(handle)], irq); ··· 258 253 unsigned int cpu; 259 254 260 255 for (cpu = 0; cpu < SMP_NR(d, _INTC_ADDR_D(handle)); cpu++) { 256 + #ifdef CONFIG_SMP 257 + if (!cpumask_test_cpu(cpu, irq_to_desc(irq)->affinity)) 258 + continue; 259 + #endif 261 260 addr = INTC_REG(d, _INTC_ADDR_D(handle), cpu); 262 261 intc_disable_fns[_INTC_MODE(handle)](addr, handle,intc_reg_fns\ 263 262 [_INTC_FN(handle)], irq); ··· 309 300 { 310 301 return 0; /* allow wakeup, but setup hardware in intc_suspend() */ 311 302 } 303 + 304 + #ifdef CONFIG_SMP 305 + /* 306 + * This is held with the irq desc lock held, so we don't require any 307 + * additional locking here at the intc desc level. The affinity mask is 308 + * later tested in the enable/disable paths. 309 + */ 310 + static int intc_set_affinity(unsigned int irq, const struct cpumask *cpumask) 311 + { 312 + if (!cpumask_intersects(cpumask, cpu_online_mask)) 313 + return -1; 314 + 315 + cpumask_copy(irq_to_desc(irq)->affinity, cpumask); 316 + 317 + return 0; 318 + } 319 + #endif 312 320 313 321 static void intc_mask_ack(unsigned int irq) 314 322 { ··· 873 847 d->chip.shutdown = intc_disable; 874 848 d->chip.set_type = intc_set_sense; 875 849 d->chip.set_wake = intc_set_wake; 850 + #ifdef CONFIG_SMP 851 + d->chip.set_affinity = intc_set_affinity; 852 + #endif 876 853 877 854 if (hw->ack_regs) { 878 855 for (i = 0; i < hw->nr_ack_regs; i++)
+4
include/linux/serial_sci.h
··· 2 2 #define __LINUX_SERIAL_SCI_H 3 3 4 4 #include <linux/serial_core.h> 5 + #ifdef CONFIG_SERIAL_SH_SCI_DMA 5 6 #include <asm/dmaengine.h> 7 + #endif 6 8 7 9 /* 8 10 * Generic header for SuperH SCI(F) (used by sh/sh64/h8300 and related parts) ··· 32 30 upf_t flags; /* UPF_* flags */ 33 31 char *clk; /* clock string */ 34 32 struct device *dma_dev; 33 + #ifdef CONFIG_SERIAL_SH_SCI_DMA 35 34 enum sh_dmae_slave_chan_id dma_slave_tx; 36 35 enum sh_dmae_slave_chan_id dma_slave_rx; 36 + #endif 37 37 }; 38 38 39 39 #endif /* __LINUX_SERIAL_SCI_H */