Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jun 2011 16:32:52 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        Sushanth Rai <sushanth_rai@yahoo.com>
Subject:   Re: IPI and I/O interrupts
Message-ID:  <201106221632.52300.jhb@freebsd.org>
In-Reply-To: <357552.99021.qm@web180003.mail.gq1.yahoo.com>
References:  <357552.99021.qm@web180003.mail.gq1.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, June 22, 2011 3:59:06 am Sushanth Rai wrote:
> Hi,
> 
> I would like to understand little bit about the FreeBSD interrupt handling 
on x86.
> 
> When a cpu is processing an IPI, let's say cpu is running IPI_STOP handler, 
are I/O interrupts like the timer interrupt disabled ? Conversely if the cpu 
is holding a spinlock, which means it has disabled interrupts, can it process 
an IPI. My understanding is executing "cli" instruction disables the maskable 
interrupts. I was wondering if IPIs are part of that.

Yes, IPIs generally are blocked.  We do use an NMI IPI when entering the
debugger (and possibly during panics), but general IPIs like TLB shootdowns, 
etc. are all maskable interrupts.  Also, all of the IPI handlers (and the 
lapic timer interrupt) operate like normal device interrupt handlers using 
interrupt gates (which block interrupts equivalent to cli).

-- 
John Baldwin



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