Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Jul 2004 20:41:53 -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:  <FE045D4D9F7AED4CBFF1B3B813C85337054EC50F@mail.sandvine.com>

next in thread | raw e-mail | index | archive | help
John Baldwin wrote:
> I think it does handle the interrupt, but that the EOI is 
> somehow lost or 
> ignored,or that somehow we don't send an EOI in some edge case.
> 

I switched the 2 CPUs on the system, and the problem did not
track the CPU, so it is unlikely to be a hardware problem.
I've been looking through the interrupt code, and one thing
seems very suspicious, and I am hoping that someone can shed
some light on it ... ie whether it's legal or not.  
In apic_vector.s, some of the interrupt handlers (hardclock, 
cpuast, and a few others) call doreti.  Under certain conditions,
this can call ast().  The ast function can call PROC_LOCK, 
which is a sleep mutex.  
What would happen in this case?  How could the interrupt
possibly block?  At this point, the interrupt handler has
already called eoi, but not iret.  Would the processor except
other interrupts, or get stuck?
Thanks,

Gerrit 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FE045D4D9F7AED4CBFF1B3B813C85337054EC50F>