Date: Mon, 28 Jun 2004 09:53:51 -0400 From: Gerrit Nagelhout <gnagelhout@sandvine.com> To: 'John Baldwin' <jhb@FreeBSD.org> Cc: Julian Elischer <julian@elischer.org> Subject: RE: STI, HLT in acpi_cpu_idle_c1 Message-ID: <FE045D4D9F7AED4CBFF1B3B813C85337054EC4E1@mail.sandvine.com>
next in thread | raw e-mail | index | archive | help
John Baldwin wrote: > Hmm, it appears it is consistently CPU1 that thinks that > IPI_HARDCLOCK is not > being EOI'd. Can you try swapping the CPUs and see if the > lockup moves from > CPU1 to CPU3? > > -- I added the following *HACK* to the idle code, and let it run over the weekend (with halt on idle disabled). It hit the function isr_problem 9 times, but did not lockup anymore. The problem is that I don't know if the EOI just got lost, or whether the interrupt was not handled at all. I couldn't find any ill effects from this code ... yet. extern volatile lapic_t *lapic; void isr_problem(void); int isrProblem=0; void isr_problem() { isrProblem++; lapic->eoi = 0; } int mp_grab_cpu_hlt(void) { u_int mask = PCPU_GET(cpumask); int retval; if(lapic->isr7 != 0) { isr_problem(); } retval = mask & hlt_cpus_mask; while (mask & hlt_cpus_mask) __asm __volatile("sti; hlt" : : : "memory"); return (retval); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FE045D4D9F7AED4CBFF1B3B813C85337054EC4E1>