|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] map_domain_page_global() and interrupts
!in_irq() because the function is not reentrant.
local_irq_is_enabled() because the function uses flush_tlb_all() which must
be able to IPI remote CPUs. We mustn't have them stuck spinning on
globalmap_lock with interrupts disabled -- that would result in deadlock.
-- Keir
On 29/7/07 01:02, "Andrew Gallagher" <ajcg@xxxxxxxxxxx> wrote:
> In the file xen/arch/x86/x86_32/domain_page.c, the
> map_domain_page_global function has the following assertion:
> ASSERT(!in_irq() && local_irq_is_enabled()). This assertion is followed
> by use of a spin lock without disabling then reenabling irqs.
>
> The assertion that the function is not called from an interrupted context
> seems to flag this function as not interrupt safe. Why is this? Is the
> use of the IOREMAP_VIRT not interrupt safe itself. The only reason this
> seems to be not interrupt safe is becuase of the use of a spinlock without
> disabling and reenabling irqs.
>
> My question is that, if interrupts are disabled then reenabled before and
> after acquiring and releasing the spinlock, is it then ok to call this
> function from the context of an interrupt?
>
> Thanks,
> Andrew
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|