Commit 39408c6a authored by Ralf Baechle's avatar Ralf Baechle
Browse files

Replace the complicated and broken attempt to clean interrupt by


something simple - doesn't need to be fast, after all.

Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent ca8a597d
Loading
Loading
Loading
Loading
+4 −16
Original line number Diff line number Diff line
@@ -127,29 +127,17 @@ void cpu_node_probe(void)
	printk("Discovered %d cpus on %d nodes\n", highest + 1, num_online_nodes());
}

static void intr_clear_bits(nasid_t nasid, volatile hubreg_t *pend,
	int base_level)
static __init void intr_clear_all(nasid_t nasid)
{
	volatile hubreg_t bits;
	int i;

	/* Check pending interrupts */
	if ((bits = HUB_L(pend)) != 0)
		for (i = 0; i < N_INTPEND_BITS; i++)
			if (bits & (1 << i))
				LOCAL_HUB_CLR_INTR(base_level + i);
}

static void intr_clear_all(nasid_t nasid)
{
	REMOTE_HUB_S(nasid, PI_INT_MASK0_A, 0);
	REMOTE_HUB_S(nasid, PI_INT_MASK0_B, 0);
	REMOTE_HUB_S(nasid, PI_INT_MASK1_A, 0);
	REMOTE_HUB_S(nasid, PI_INT_MASK1_B, 0);
	intr_clear_bits(nasid, REMOTE_HUB_ADDR(nasid, PI_INT_PEND0),
	                INT_PEND0_BASELVL);
	intr_clear_bits(nasid, REMOTE_HUB_ADDR(nasid, PI_INT_PEND1),
	                INT_PEND1_BASELVL);

	for (i = 0; i < 128; i++)
		REMOTE_HUB_CLR_INTR(nasid, i);
}

void __init prom_prepare_cpus(unsigned int max_cpus)