[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <46006963.1020401@vmware.com>
Date: Tue, 20 Mar 2007 15:08:19 -0800
From: Zachary Amsden <zach@...are.com>
To: Matt Mackall <mpm@...enic.com>
CC: Jeremy Fitzhardinge <jeremy@...p.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
"Eric W. Biederman" <ebiederm@...ssion.com>,
Rusty Russell <rusty@...tcorp.com.au>, Andi Kleen <ak@....de>,
David Miller <davem@...emloft.net>, mingo@...e.hu,
akpm@...ux-foundation.org, linux-kernel@...r.kernel.org,
virtualization@...ts.osdl.org, xen-devel@...ts.xensource.com,
chrisw@...s-sol.org, anthony@...emonkey.ws, netdev@...r.kernel.org
Subject: Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops
callsites to make them patchable
Matt Mackall wrote:
> I don't know that you need an xchg there. If you're still on the same
> CPU, it should all be nice and causal even across an interrupt handler.
> So it could be:
>
> pda.intr_mask = 0; /* intr_pending can't get set after this */
>
Why not? Oh, I see. intr_mask is inverted form of EFLAGS_IF.
> if (unlikely(pda.intr_pending)) {
> pda.intr_pending = 0;
> asm("sti");
> }
>
> (This would actually need a C barrier, but I'll ignore that as this'd
> end up being asm...)
>
> But other interesting things could happen. If we never did a real CLI
> and we get preempted and switched to another CPU between clearing
> intr_mask and checking intr_pending, we get a little confused.
>
I think Jeremy's idea was to have interrupt handlers leave interrupts
disabled on exit if pda.intr_mask was set. In which case, they would
bypass all work and we could never get preempted. I don't think leaving
hardware interrupts disabled for such a long time is good though.
> But perhaps that doesn't matter because we'd by definition have no
> pending interrupts on either processor?
>
> Is it expensive to do an STI if interrupts are already enabled?
>
Yes.
Zach
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists