Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS fixes from Ralf Baechle: "Random fixes across arch/mips, essentially. One fix for an issue in get_user_pages_fast() which previously was discovered on x86, a miscalculation in the support for the MIPS MT hardware multithreading support, the RTC support for the Malta and a fix for a spurious interrupt issue that seems to bite only very special Malta configurations." * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: MIPS: Malta: Don't crash on spurious interrupt. MIPS: Malta: Remove RTC Data Mode bootstrap breakage MIPS: mm: Add compound tail page _mapcount when mapped MIPS: CMP/SMTC: Fix tc_id calculation
This commit is contained in:
commit
e5e77cf9f9
|
@ -102,7 +102,7 @@ static void cmp_init_secondary(void)
|
||||||
c->vpe_id = (read_c0_tcbind() >> TCBIND_CURVPE_SHIFT) & TCBIND_CURVPE;
|
c->vpe_id = (read_c0_tcbind() >> TCBIND_CURVPE_SHIFT) & TCBIND_CURVPE;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_MIPS_MT_SMTC
|
#ifdef CONFIG_MIPS_MT_SMTC
|
||||||
c->tc_id = (read_c0_tcbind() >> TCBIND_CURTC_SHIFT) & TCBIND_CURTC;
|
c->tc_id = (read_c0_tcbind() & TCBIND_CURTC) >> TCBIND_CURTC_SHIFT;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,8 @@ static int gup_huge_pud(pud_t pud, unsigned long addr, unsigned long end,
|
||||||
do {
|
do {
|
||||||
VM_BUG_ON(compound_head(page) != head);
|
VM_BUG_ON(compound_head(page) != head);
|
||||||
pages[*nr] = page;
|
pages[*nr] = page;
|
||||||
|
if (PageTail(page))
|
||||||
|
get_huge_page_tail(page);
|
||||||
(*nr)++;
|
(*nr)++;
|
||||||
page++;
|
page++;
|
||||||
refs++;
|
refs++;
|
||||||
|
|
|
@ -273,16 +273,19 @@ asmlinkage void plat_irq_dispatch(void)
|
||||||
unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
|
unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
if (unlikely(!pending)) {
|
||||||
|
spurious_interrupt();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
irq = irq_ffs(pending);
|
irq = irq_ffs(pending);
|
||||||
|
|
||||||
if (irq == MIPSCPU_INT_I8259A)
|
if (irq == MIPSCPU_INT_I8259A)
|
||||||
malta_hw0_irqdispatch();
|
malta_hw0_irqdispatch();
|
||||||
else if (gic_present && ((1 << irq) & ipi_map[smp_processor_id()]))
|
else if (gic_present && ((1 << irq) & ipi_map[smp_processor_id()]))
|
||||||
malta_ipi_irqdispatch();
|
malta_ipi_irqdispatch();
|
||||||
else if (irq >= 0)
|
|
||||||
do_IRQ(MIPS_CPU_IRQ_BASE + irq);
|
|
||||||
else
|
else
|
||||||
spurious_interrupt();
|
do_IRQ(MIPS_CPU_IRQ_BASE + irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_MIPS_MT_SMP
|
#ifdef CONFIG_MIPS_MT_SMP
|
||||||
|
|
|
@ -138,11 +138,6 @@ static int __init malta_add_devices(void)
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
/*
|
|
||||||
* Set RTC to BCD mode to support current alarm code.
|
|
||||||
*/
|
|
||||||
CMOS_WRITE(CMOS_READ(RTC_CONTROL) & ~RTC_DM_BINARY, RTC_CONTROL);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue