mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Couple conflicts resolved here: 1) In the MACB driver, a bug fix to properly initialize the RX tail pointer properly overlapped with some changes to support variable sized rings. 2) In XGBE we had a "CONFIG_PM" --> "CONFIG_PM_SLEEP" fix overlapping with a reorganization of the driver to support ACPI, OF, as well as PCI variants of the chip. 3) In 'net' we had several probe error path bug fixes to the stmmac driver, meanwhile a lot of this code was cleaned up and reorganized in 'net-next'. 4) The cls_flower classifier obtained a helper function in 'net-next' called __fl_delete() and this overlapped with Daniel Borkamann's bug fix to use RCU for object destruction in 'net'. It also overlapped with Jiri's change to guard the rhashtable_remove_fast() call with a check against tc_skip_sw(). 5) In mlx4, a revert bug fix in 'net' overlapped with some unrelated changes in 'net-next'. 6) In geneve, a stale header pointer after pskb_expand_head() bug fix in 'net' overlapped with a large reorganization of the same code in 'net-next'. Since the 'net-next' code no longer had the bug in question, there was nothing to do other than to simply take the 'net-next' hunks. Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
commit
2745529ac7
191 changed files with 1411 additions and 609 deletions
|
|
@ -214,6 +214,12 @@
|
|||
#error Bad page size configuration for hugetlbfs!
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Wired register bits
|
||||
*/
|
||||
#define MIPSR6_WIRED_LIMIT (_ULCAST_(0xffff) << 16)
|
||||
#define MIPSR6_WIRED_WIRED (_ULCAST_(0xffff) << 0)
|
||||
|
||||
/*
|
||||
* Values used for computation of new tlb entries
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
#ifndef __ASM_TLB_H
|
||||
#define __ASM_TLB_H
|
||||
|
||||
#include <asm/cpu-features.h>
|
||||
#include <asm/mipsregs.h>
|
||||
|
||||
/*
|
||||
* MIPS doesn't need any special per-pte or per-vma handling, except
|
||||
* we need to flush cache for area to be unmapped.
|
||||
|
|
@ -22,6 +25,16 @@
|
|||
((CKSEG0 + ((idx) << (PAGE_SHIFT + 1))) | \
|
||||
(cpu_has_tlbinv ? MIPS_ENTRYHI_EHINV : 0))
|
||||
|
||||
static inline unsigned int num_wired_entries(void)
|
||||
{
|
||||
unsigned int wired = read_c0_wired();
|
||||
|
||||
if (cpu_has_mips_r6)
|
||||
wired &= MIPSR6_WIRED_WIRED;
|
||||
|
||||
return wired;
|
||||
}
|
||||
|
||||
#include <asm-generic/tlb.h>
|
||||
|
||||
#endif /* __ASM_TLB_H */
|
||||
|
|
|
|||
|
|
@ -209,17 +209,18 @@ bad_area_nosemaphore:
|
|||
if (show_unhandled_signals &&
|
||||
unhandled_signal(tsk, SIGSEGV) &&
|
||||
__ratelimit(&ratelimit_state)) {
|
||||
pr_info("\ndo_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx",
|
||||
pr_info("do_page_fault(): sending SIGSEGV to %s for invalid %s %0*lx\n",
|
||||
tsk->comm,
|
||||
write ? "write access to" : "read access from",
|
||||
field, address);
|
||||
pr_info("epc = %0*lx in", field,
|
||||
(unsigned long) regs->cp0_epc);
|
||||
print_vma_addr(" ", regs->cp0_epc);
|
||||
print_vma_addr(KERN_CONT " ", regs->cp0_epc);
|
||||
pr_cont("\n");
|
||||
pr_info("ra = %0*lx in", field,
|
||||
(unsigned long) regs->regs[31]);
|
||||
print_vma_addr(" ", regs->regs[31]);
|
||||
pr_info("\n");
|
||||
print_vma_addr(KERN_CONT " ", regs->regs[31]);
|
||||
pr_cont("\n");
|
||||
}
|
||||
current->thread.trap_nr = (regs->cp0_cause >> 2) & 0x1f;
|
||||
info.si_signo = SIGSEGV;
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ static void *__kmap_pgprot(struct page *page, unsigned long addr, pgprot_t prot)
|
|||
writex_c0_entrylo1(entrylo);
|
||||
}
|
||||
#endif
|
||||
tlbidx = read_c0_wired();
|
||||
tlbidx = num_wired_entries();
|
||||
write_c0_wired(tlbidx + 1);
|
||||
write_c0_index(tlbidx);
|
||||
mtc0_tlbw_hazard();
|
||||
|
|
@ -147,7 +147,7 @@ void kunmap_coherent(void)
|
|||
|
||||
local_irq_save(flags);
|
||||
old_ctx = read_c0_entryhi();
|
||||
wired = read_c0_wired() - 1;
|
||||
wired = num_wired_entries() - 1;
|
||||
write_c0_wired(wired);
|
||||
write_c0_index(wired);
|
||||
write_c0_entryhi(UNIQUE_ENTRYHI(wired));
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ void local_flush_tlb_all(void)
|
|||
write_c0_entrylo0(0);
|
||||
write_c0_entrylo1(0);
|
||||
|
||||
entry = read_c0_wired();
|
||||
entry = num_wired_entries();
|
||||
|
||||
/*
|
||||
* Blast 'em all away.
|
||||
|
|
@ -385,7 +385,7 @@ void add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|||
old_ctx = read_c0_entryhi();
|
||||
htw_stop();
|
||||
old_pagemask = read_c0_pagemask();
|
||||
wired = read_c0_wired();
|
||||
wired = num_wired_entries();
|
||||
write_c0_wired(wired + 1);
|
||||
write_c0_index(wired);
|
||||
tlbw_use_hazard(); /* What is the hazard here? */
|
||||
|
|
@ -449,7 +449,7 @@ __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|||
htw_stop();
|
||||
old_ctx = read_c0_entryhi();
|
||||
old_pagemask = read_c0_pagemask();
|
||||
wired = read_c0_wired();
|
||||
wired = num_wired_entries();
|
||||
if (--temp_tlb_entry < wired) {
|
||||
printk(KERN_WARNING
|
||||
"No TLB space left for add_temporary_entry\n");
|
||||
|
|
|
|||
Loading…
Reference in a new issue