Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5e77cf9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents b3a297d1 e376fdf4
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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
}
}


+2 −0
Original line number Original line Diff line number Diff line
@@ -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++;
+6 −3
Original line number Original line Diff line number Diff line
@@ -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
+0 −5
Original line number Original line Diff line number Diff line
@@ -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;
}
}