Zachary Amsden wrote:Jeremy Fitzhardinge <jeremy@xxxxxxxx> 17.11.08 19:40 >>>
On Mon, 2008-11-17 at 01:08 -0800, Jan Beulich wrote:Yes. The Xen code only disables interrupts temporarily while actually constructing a new multicall list member, to stop a half-constructed multicall from being issued by a nested flush. But that's very brief, and cheap under Xen.
the batch should be prevented in asynchronous contexts altogether, orJeremy already fixed that; we don't disable interrupts, the change he
things should properly nest. As a positive side effect, disabling interrupts
in the batch handling - in particular around the submission of the batch -
could also be avoided, reducing interrupt latency (perhaps significantly
in some case).
made was to flush and then immediately restart the batching.
Where's that fixed? Even in the -tip tree I still see xen_mc_flush()
disabling interrupts (and multicalls.c didn't change for over two months)...
There's no reason to do any flush at all if you suppress batching temporarily.
And it only needs (would need) explicit suppressing here because you can't
easily recognize being in the context of a page fault handler from the
batching functions (other than recognizing being in the context of an
interrupt handler, which is what would allow removing the flush calls from
highmem_32.c).