diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-09 06:41:12 +0900 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-09 06:41:12 +0900 |
commit | b5356a19ced273ef8a941be226f4dfdb95c23073 (patch) | |
tree | 65ff365e800c178655557eb1ea62a78a7601ff76 | |
parent | 3c5af8d1aad6f193c0a89702c87292a0ed81add0 (diff) | |
parent | 6916fd086f0c5d7871ad3986300ba30d63616925 (diff) |
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64
Pull arm64 changes from Catalin Marinas:
"arm64 fixes:
- Use swiotlb_init() instead of swiotlb_init_with_default_size().
The latter is now a static function (commit 74838b75379a "swiotlb:
add the late swiotlb initialization function with iotlb memory").
- Enable interrupts before calling do_notify_resume().
arm64 clean-up:
- Use the generic implementation of compat_sys_sendfile() on arm64 as
commit 8f9c0119d7ba (introducing the function) has been merged."
* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
arm64: Enable interrupts before calling do_notify_resume()
arm64: Use the generic compat_sys_sendfile() implementation
arm64: Call swiotlb_init() instead of swiotlb_init_with_default_size()
-rw-r--r-- | arch/arm64/include/asm/unistd32.h | 1 | ||||
-rw-r--r-- | arch/arm64/kernel/entry.S | 1 | ||||
-rw-r--r-- | arch/arm64/kernel/sys_compat.c | 20 | ||||
-rw-r--r-- | arch/arm64/mm/dma-mapping.c | 6 | ||||
-rw-r--r-- | arch/arm64/mm/init.c | 5 | ||||
-rw-r--r-- | arch/arm64/mm/mm.h | 1 |
6 files changed, 6 insertions, 28 deletions
diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index 3ba1f1a9062..ba42d41fc5c 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h @@ -752,3 +752,4 @@ __SYSCALL(__NR_syncfs, sys_syncfs) #define __ARCH_WANT_SYS_SIGPENDING #define __ARCH_WANT_SYS_SIGPROCMASK #define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND +#define __ARCH_WANT_COMPAT_SYS_SENDFILE diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index 38cf853a366..6538928ff1a 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -583,6 +583,7 @@ work_pending: mov x0, sp // 'regs' tst x2, #PSR_MODE_MASK // user mode regs? b.ne no_work_pending // returning to kernel + enable_irq // enable interrupts for do_notify_resume() bl do_notify_resume b ret_to_user work_resched: diff --git a/arch/arm64/kernel/sys_compat.c b/arch/arm64/kernel/sys_compat.c index 967e92fdff0..93f10e27dc7 100644 --- a/arch/arm64/kernel/sys_compat.c +++ b/arch/arm64/kernel/sys_compat.c @@ -84,26 +84,6 @@ asmlinkage int compat_sys_sched_rr_get_interval(compat_pid_t pid, return ret; } -asmlinkage int compat_sys_sendfile(int out_fd, int in_fd, - compat_off_t __user *offset, s32 count) -{ - mm_segment_t old_fs = get_fs(); - int ret; - off_t of; - - if (offset && get_user(of, offset)) - return -EFAULT; - - set_fs(KERNEL_DS); - ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __user *)&of : NULL, - count); - set_fs(old_fs); - - if (offset && put_user(of, offset)) - return -EFAULT; - return ret; -} - static inline void do_compat_cache_op(unsigned long start, unsigned long end, int flags) { diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index 5eb244453a5..4bd7579ec9e 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -61,12 +61,10 @@ static struct dma_map_ops arm64_swiotlb_dma_ops = { .mapping_error = swiotlb_dma_mapping_error, }; -void __init swiotlb_init_with_default_size(size_t default_size, int verbose); - -void __init arm64_swiotlb_init(size_t max_size) +void __init arm64_swiotlb_init(void) { dma_ops = &arm64_swiotlb_dma_ops; - swiotlb_init_with_default_size(min((size_t)SZ_64M, max_size), 1); + swiotlb_init(1); } #define PREALLOC_DMA_DEBUG_ENTRIES 4096 diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 5f719ba949b..efbf7df05d3 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -301,10 +301,7 @@ void __init mem_init(void) unsigned long reserved_pages, free_pages; struct memblock_region *reg; -#if CONFIG_SWIOTLB - extern void __init arm64_swiotlb_init(size_t max_size); - arm64_swiotlb_init(max_pfn << (PAGE_SHIFT - 1)); -#endif + arm64_swiotlb_init(); max_mapnr = pfn_to_page(max_pfn + PHYS_PFN_OFFSET) - mem_map; diff --git a/arch/arm64/mm/mm.h b/arch/arm64/mm/mm.h index d8d6e7851c1..916701e6d04 100644 --- a/arch/arm64/mm/mm.h +++ b/arch/arm64/mm/mm.h @@ -1,2 +1,3 @@ extern void __flush_dcache_page(struct page *page); extern void __init bootmem_init(void); +extern void __init arm64_swiotlb_init(void); |