diff options
Diffstat (limited to 'kernel/arch/tile/mm')
-rw-r--r-- | kernel/arch/tile/mm/elf.c | 2 | ||||
-rw-r--r-- | kernel/arch/tile/mm/fault.c | 17 | ||||
-rw-r--r-- | kernel/arch/tile/mm/highmem.c | 12 | ||||
-rw-r--r-- | kernel/arch/tile/mm/hugetlbpage.c | 5 | ||||
-rw-r--r-- | kernel/arch/tile/mm/init.c | 2 |
5 files changed, 12 insertions, 26 deletions
diff --git a/kernel/arch/tile/mm/elf.c b/kernel/arch/tile/mm/elf.c index f7ddae372..6225cc998 100644 --- a/kernel/arch/tile/mm/elf.c +++ b/kernel/arch/tile/mm/elf.c @@ -56,7 +56,7 @@ static int notify_exec(struct mm_struct *mm) if (exe_file == NULL) goto done_free; - path = d_path(&exe_file->f_path, buf, PAGE_SIZE); + path = file_path(exe_file, buf, PAGE_SIZE); if (IS_ERR(path)) goto done_put; diff --git a/kernel/arch/tile/mm/fault.c b/kernel/arch/tile/mm/fault.c index 3f4f58d34..13eac59bf 100644 --- a/kernel/arch/tile/mm/fault.c +++ b/kernel/arch/tile/mm/fault.c @@ -699,11 +699,10 @@ struct intvec_state do_page_fault_ics(struct pt_regs *regs, int fault_num, * interrupt away appropriately and return immediately. We can't do * page faults for user code while in kernel mode. */ -void do_page_fault(struct pt_regs *regs, int fault_num, - unsigned long address, unsigned long write) +static inline void __do_page_fault(struct pt_regs *regs, int fault_num, + unsigned long address, unsigned long write) { int is_page_fault; - enum ctx_state prev_state = exception_enter(); #ifdef CONFIG_KPROBES /* @@ -713,7 +712,7 @@ void do_page_fault(struct pt_regs *regs, int fault_num, */ if (notify_die(DIE_PAGE_FAULT, "page fault", regs, -1, regs->faultnum, SIGSEGV) == NOTIFY_STOP) - goto done; + return; #endif #ifdef __tilegx__ @@ -835,18 +834,22 @@ void do_page_fault(struct pt_regs *regs, int fault_num, async->is_fault = is_page_fault; async->is_write = write; async->address = address; - goto done; + return; } } #endif handle_page_fault(regs, fault_num, is_page_fault, address, write); +} -done: +void do_page_fault(struct pt_regs *regs, int fault_num, + unsigned long address, unsigned long write) +{ + enum ctx_state prev_state = exception_enter(); + __do_page_fault(regs, fault_num, address, write); exception_exit(prev_state); } - #if CHIP_HAS_TILE_DMA() /* * This routine effectively re-issues asynchronous page faults diff --git a/kernel/arch/tile/mm/highmem.c b/kernel/arch/tile/mm/highmem.c index fcd545014..eca28551b 100644 --- a/kernel/arch/tile/mm/highmem.c +++ b/kernel/arch/tile/mm/highmem.c @@ -275,15 +275,3 @@ void *kmap_atomic_prot_pfn(unsigned long pfn, pgprot_t prot) { return kmap_atomic_prot(pfn_to_page(pfn), prot); } - -struct page *kmap_atomic_to_page(void *ptr) -{ - pte_t *pte; - unsigned long vaddr = (unsigned long)ptr; - - if (vaddr < FIXADDR_START) - return virt_to_page(ptr); - - pte = kmap_get_pte(vaddr); - return pte_page(*pte); -} diff --git a/kernel/arch/tile/mm/hugetlbpage.c b/kernel/arch/tile/mm/hugetlbpage.c index 8416240c3..c034dc3fe 100644 --- a/kernel/arch/tile/mm/hugetlbpage.c +++ b/kernel/arch/tile/mm/hugetlbpage.c @@ -160,11 +160,6 @@ int pud_huge(pud_t pud) return !!(pud_val(pud) & _PAGE_HUGE_PAGE); } -int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) -{ - return 0; -} - #ifdef HAVE_ARCH_HUGETLB_UNMAPPED_AREA static unsigned long hugetlb_get_unmapped_area_bottomup(struct file *file, unsigned long addr, unsigned long len, diff --git a/kernel/arch/tile/mm/init.c b/kernel/arch/tile/mm/init.c index 5bd252e3f..d4e1fc41d 100644 --- a/kernel/arch/tile/mm/init.c +++ b/kernel/arch/tile/mm/init.c @@ -863,7 +863,7 @@ void __init mem_init(void) * memory to the highmem for now. */ #ifndef CONFIG_NEED_MULTIPLE_NODES -int arch_add_memory(u64 start, u64 size) +int arch_add_memory(u64 start, u64 size, bool for_device) { struct pglist_data *pgdata = &contig_page_data; struct zone *zone = pgdata->node_zones + MAX_NR_ZONES-1; |