From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Zachary Amsden <zach@vmware.com>
Cc: Chris Wright <chrisw@sous-sol.org>,
Virtualization Mailing List <virtualization@lists.osdl.org>
Subject: Re: pte_offset_map + lazy mmu
Date: Sat, 10 Mar 2007 08:06:36 -0800 [thread overview]
Message-ID: <45F2D78C.7050307@goop.org> (raw)
In-Reply-To: <45F2561C.8010604@vmware.com>
Zachary Amsden wrote:
> This could also be genericized in a different way. PTE updates should
> be limited in scope to just a couple operations. We don't want to
> have pv-ops for every possible combination of weirdness that can be
> efficiently combined, because then pv-ops explodes.
Yes, but...
> I propose adding a hint or flags field to the PV-op. In fact, the
> address argument vaddr can be compressed down do a VPN, which gives 12
> more bits for flags to use. Now, you can pass hints:
>
> PV_LAZY_UPDATE
> PV_DEAD_TABLE
> PV_VADDR_VALID
> which the backend can use. In the kpte_flush example, you can now
> pass PV_LAZY_UPDATE to combine the pte write with the flush.
Are you saying that PV_LAZY_UPDATE would open a one operation lazy-mmu
window? I don't like this much at all; this kind of stateful interface
really makes it complex to use, implement and understand. What happens
if you keep setting this flag on a whole series of operations? Does it
make them all lazy? Or are they paired? How does this interact with
explicitly setting lazy_mmu_mode?
No, I think we should implement laziness with just one mechanism, and
the current one seems just fine to me - though I'd consider adding args
to it to give advance hints about what you're going to be doing in the
lazy region.
> And in address space destruction, you can pass PV_DEAD_TABLE, which
> allows you to optimize away the pte writes which would otherwise trap
> to the hypervisor, but are not needed, because in the Xen case, you
> switch off the current process page tables during exit() (or should,
> anyway, to avoid spurious traps to Xen before the page tables are freed),
I don't need that because I detach and unpin the pagetable entirely in
the exit_mmap hook. All the teardown happens on just ordinary unpinned
memory. Couldn't you do that too?
> and in our case, gets rid of these pte clears that don't need to be
> reflected in the shadows because the shadow is about to die.
>
> And for updates in the current address space, you can pass
> PV_VADDR_VALID to indicate the virtual address field is actually valid
> (note that vaddr == 0 is not a sufficient test, as updates to VPN 0
> mappings). This allows for various flush optimizations as well.
Hm. I think if you're using a set_pte_at interface, you should always
pass a valid vaddr. If you don't have a valid vaddr to pass, you should
use set_pte.
> This also gets rid of all the update_pte_defer junk in asm-i386
> includes. As long as we cooperate on the flags definition and native
> is not adversely affect by shifting the vaddr down (P4 shift are slow
> - our metrics with VMI showed no measurable high level disadvantage
> here for native, but the design has changed, and we should re-verify),
> then this solution is workable. It just requires us to cooperate to
> come up with a common flags definition.
I don't use that hook, and I never really understood what its for.
J
next prev parent reply other threads:[~2007-03-10 16:06 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-10 6:37 pte_offset_map + lazy mmu Jeremy Fitzhardinge
2007-03-10 6:54 ` Zachary Amsden
2007-03-10 16:06 ` Jeremy Fitzhardinge [this message]
2007-03-10 7:26 ` 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=45F2D78C.7050307@goop.org \
--to=jeremy@goop.org \
--cc=chrisw@sous-sol.org \
--cc=virtualization@lists.osdl.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;
as well as URLs for NNTP newsgroup(s).