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/cmetcalf/linux-tile

* git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
arch/tile: use new generic {enable,disable}_percpu_irq() routines
drivers/net/ethernet/tile: use skb_frag_page() API
asm-generic/unistd.h: support new process_vm_{readv,write} syscalls
arch/tile: fix double-free bug in homecache_free_pages()
arch/tile: add a few #includes and an EXPORT to catch up with kernel changes.

+40 -26
-10
arch/tile/include/asm/irq.h
··· 74 74 */ 75 75 void tile_irq_activate(unsigned int irq, int tile_irq_type); 76 76 77 - /* 78 - * For onboard, non-PCI (e.g. TILE_IRQ_PERCPU) devices, drivers know 79 - * how to use enable/disable_percpu_irq() to manage interrupts on each 80 - * core. We can't use the generic enable/disable_irq() because they 81 - * use a single reference count per irq, rather than per cpu per irq. 82 - */ 83 - void enable_percpu_irq(unsigned int irq); 84 - void disable_percpu_irq(unsigned int irq); 85 - 86 - 87 77 void setup_irq_regs(void); 88 78 89 79 #endif /* _ASM_TILE_IRQ_H */
+8 -8
arch/tile/kernel/irq.c
··· 152 152 * Remove an irq from the disabled mask. If we're in an interrupt 153 153 * context, defer enabling the HW interrupt until we leave. 154 154 */ 155 - void enable_percpu_irq(unsigned int irq) 155 + static void tile_irq_chip_enable(struct irq_data *d) 156 156 { 157 - get_cpu_var(irq_disable_mask) &= ~(1UL << irq); 157 + get_cpu_var(irq_disable_mask) &= ~(1UL << d->irq); 158 158 if (__get_cpu_var(irq_depth) == 0) 159 - unmask_irqs(1UL << irq); 159 + unmask_irqs(1UL << d->irq); 160 160 put_cpu_var(irq_disable_mask); 161 161 } 162 - EXPORT_SYMBOL(enable_percpu_irq); 163 162 164 163 /* 165 164 * Add an irq to the disabled mask. We disable the HW interrupt ··· 166 167 * in an interrupt context, the return path is careful to avoid 167 168 * unmasking a newly disabled interrupt. 168 169 */ 169 - void disable_percpu_irq(unsigned int irq) 170 + static void tile_irq_chip_disable(struct irq_data *d) 170 171 { 171 - get_cpu_var(irq_disable_mask) |= (1UL << irq); 172 - mask_irqs(1UL << irq); 172 + get_cpu_var(irq_disable_mask) |= (1UL << d->irq); 173 + mask_irqs(1UL << d->irq); 173 174 put_cpu_var(irq_disable_mask); 174 175 } 175 - EXPORT_SYMBOL(disable_percpu_irq); 176 176 177 177 /* Mask an interrupt. */ 178 178 static void tile_irq_chip_mask(struct irq_data *d) ··· 207 209 208 210 static struct irq_chip tile_irq_chip = { 209 211 .name = "tile_irq_chip", 212 + .irq_enable = tile_irq_chip_enable, 213 + .irq_disable = tile_irq_chip_disable, 210 214 .irq_ack = tile_irq_chip_ack, 211 215 .irq_eoi = tile_irq_chip_eoi, 212 216 .irq_mask = tile_irq_chip_mask,
+1
arch/tile/kernel/pci-dma.c
··· 15 15 #include <linux/mm.h> 16 16 #include <linux/dma-mapping.h> 17 17 #include <linux/vmalloc.h> 18 + #include <linux/export.h> 18 19 #include <asm/tlbflush.h> 19 20 #include <asm/homecache.h> 20 21
+1
arch/tile/kernel/pci.c
··· 24 24 #include <linux/irq.h> 25 25 #include <linux/io.h> 26 26 #include <linux/uaccess.h> 27 + #include <linux/export.h> 27 28 28 29 #include <asm/processor.h> 29 30 #include <asm/sections.h>
+1
arch/tile/kernel/sysfs.c
··· 18 18 #include <linux/cpu.h> 19 19 #include <linux/slab.h> 20 20 #include <linux/smp.h> 21 + #include <linux/stat.h> 21 22 #include <hv/hypervisor.h> 22 23 23 24 /* Return a string queried from the hypervisor, truncated to page size. */
+3
arch/tile/lib/exports.c
··· 39 39 EXPORT_SYMBOL(current_text_addr); 40 40 EXPORT_SYMBOL(dump_stack); 41 41 42 + /* arch/tile/kernel/head.S */ 43 + EXPORT_SYMBOL(empty_zero_page); 44 + 42 45 /* arch/tile/lib/, various memcpy files */ 43 46 EXPORT_SYMBOL(memcpy); 44 47 EXPORT_SYMBOL(__copy_to_user_inatomic);
+6 -3
arch/tile/mm/homecache.c
··· 449 449 VM_BUG_ON(!virt_addr_valid((void *)addr)); 450 450 page = virt_to_page((void *)addr); 451 451 if (put_page_testzero(page)) { 452 - int pages = (1 << order); 453 452 homecache_change_page_home(page, order, initial_page_home()); 454 - while (pages--) 455 - __free_page(page++); 453 + if (order == 0) { 454 + free_hot_cold_page(page, 0); 455 + } else { 456 + init_page_count(page); 457 + __free_pages(page, order); 458 + } 456 459 } 457 460 }
+4 -4
drivers/net/ethernet/tile/tilepro.c
··· 926 926 goto done; 927 927 928 928 /* Re-enable the ingress interrupt. */ 929 - enable_percpu_irq(priv->intr_id); 929 + enable_percpu_irq(priv->intr_id, 0); 930 930 931 931 /* HACK: Avoid the "rotting packet" problem (see above). */ 932 932 if (qup->__packet_receive_read != ··· 1296 1296 info->napi_enabled = true; 1297 1297 1298 1298 /* Enable the ingress interrupt. */ 1299 - enable_percpu_irq(priv->intr_id); 1299 + enable_percpu_irq(priv->intr_id, 0); 1300 1300 } 1301 1301 1302 1302 ··· 1697 1697 for (i = 0; i < sh->nr_frags; i++) { 1698 1698 1699 1699 skb_frag_t *f = &sh->frags[i]; 1700 - unsigned long pfn = page_to_pfn(f->page); 1700 + unsigned long pfn = page_to_pfn(skb_frag_page(f)); 1701 1701 1702 1702 /* FIXME: Compute "hash_for_home" properly. */ 1703 1703 /* ISSUE: The hypervisor checks CHIP_HAS_REV1_DMA_PACKETS(). */ ··· 1706 1706 /* FIXME: Hmmm. */ 1707 1707 if (!hash_default) { 1708 1708 void *va = pfn_to_kaddr(pfn) + f->page_offset; 1709 - BUG_ON(PageHighMem(f->page)); 1709 + BUG_ON(PageHighMem(skb_frag_page(f))); 1710 1710 finv_buffer_remote(va, f->size, 0); 1711 1711 } 1712 1712
+7 -1
include/asm-generic/unistd.h
··· 685 685 __SYSCALL(__NR_setns, sys_setns) 686 686 #define __NR_sendmmsg 269 687 687 __SC_COMP(__NR_sendmmsg, sys_sendmmsg, compat_sys_sendmmsg) 688 + #define __NR_process_vm_readv 270 689 + __SC_COMP(__NR_process_vm_readv, sys_process_vm_readv, \ 690 + compat_sys_process_vm_readv) 691 + #define __NR_process_vm_writev 271 692 + __SC_COMP(__NR_process_vm_writev, sys_process_vm_writev, \ 693 + compat_sys_process_vm_writev) 688 694 689 695 #undef __NR_syscalls 690 - #define __NR_syscalls 270 696 + #define __NR_syscalls 272 691 697 692 698 /* 693 699 * All syscalls below here should go away really,
+9
include/linux/compat.h
··· 552 552 553 553 extern void __user *compat_alloc_user_space(unsigned long len); 554 554 555 + asmlinkage ssize_t compat_sys_process_vm_readv(compat_pid_t pid, 556 + const struct compat_iovec __user *lvec, 557 + unsigned long liovcnt, const struct compat_iovec __user *rvec, 558 + unsigned long riovcnt, unsigned long flags); 559 + asmlinkage ssize_t compat_sys_process_vm_writev(compat_pid_t pid, 560 + const struct compat_iovec __user *lvec, 561 + unsigned long liovcnt, const struct compat_iovec __user *rvec, 562 + unsigned long riovcnt, unsigned long flags); 563 + 555 564 #endif /* CONFIG_COMPAT */ 556 565 #endif /* _LINUX_COMPAT_H */