From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Jan Beulich <jbeulich@novell.com>
Cc: Zachary Amsden <zach@vmware.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: arch_flush_lazy_mmu_mode() in arch/x86/mm/highmem_32.c
Date: Tue, 18 Nov 2008 09:01:32 -0800 [thread overview]
Message-ID: <4922F4EC.6050408@goop.org> (raw)
In-Reply-To: <492284CE.76E4.0078.0@novell.com>
Jan Beulich wrote:
>>>> Jeremy Fitzhardinge <jeremy@goop.org> 17.11.08 19:40 >>>
>>>>
>> Zachary Amsden wrote:
>>
>>> On Mon, 2008-11-17 at 01:08 -0800, Jan Beulich wrote:
>>>
>>>> the batch should be prevented in asynchronous contexts altogether, or
>>>> 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).
>>>>
>>>>
>>> Jeremy already fixed that; we don't disable interrupts, the change he
>>> made was to flush and then immediately restart the batching.
>>>
>>>
>> 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.
>>
>
> 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)...
>
Yes, it disables interrupts while its actually issuing the multicall. I
don't think that matters much, since the multicall itself can't be
preempted (can it?) and the rest of the code is very short. Originally
it disabled interrupts for the entire lazy section, which is obviously
worse.
> 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).
I'm not sure what your concern is here. If batching is currently
enabled, then the flush will push out anything pending immediately. If
batching is disabled, then the flush will be a noop and return immediately.
Making it so that the batching state can nest or have some way to push
unbatched updates past the current batch would work as mechanisms, but I
don't see what advantage there is to doing it, especially to offset the
increased complexity.
J
next prev parent reply other threads:[~2008-11-18 17:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-17 9:08 arch_flush_lazy_mmu_mode() in arch/x86/mm/highmem_32.c Jan Beulich
2008-11-17 17:53 ` Zachary Amsden
2008-11-17 18:40 ` Jeremy Fitzhardinge
2008-11-17 19:54 ` Zachary Amsden
2008-11-18 8:03 ` Jan Beulich
2008-11-18 17:01 ` Jeremy Fitzhardinge [this message]
2008-11-18 17:28 ` Jan Beulich
2008-11-18 18:00 ` Jeremy Fitzhardinge
2008-11-18 18:06 ` Zachary Amsden
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4922F4EC.6050408@goop.org \
--to=jeremy@goop.org \
--cc=jbeulich@novell.com \
--cc=linux-kernel@vger.kernel.org \
--cc=zach@vmware.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox