All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] directory hierarchy
Date: Mon, 24 Sep 2012 11:54:50 +0200	[thread overview]
Message-ID: <50602DEA.5030203@redhat.com> (raw)
In-Reply-To: <CAAu8pHtGoBh62C3TYVnJepW+S+KnoU0cg_BMaf2Y01fv5Mmnew@mail.gmail.com>

On 09/23/2012 06:07 PM, Blue Swirl wrote:
> On Sun, Sep 23, 2012 at 8:25 AM, Avi Kivity <avi@redhat.com> wrote:
>> On 09/22/2012 04:15 PM, Blue Swirl wrote:
>>> >
>>> >> This could have nice cleanup effects though and for example enable
>>> >> generic 'info vmtree' to discover VA->PA mappings for any target
>>> >> instead of current MMU table walkers.
>>> >
>>> > How?  That's in a hardware defined format that's completely invisible to
>>> > the memory API.
>>>
>>> It's invisible now, but target-specific code could grab the mappings
>>> and feed them to memory API. Memory API would just see the per-CPU
>>> virtual memory as address spaces that map to physical memory address
>>> space.
>>>
>>> For RAM backed MMU tables like x86 and Sparc32, writes to page table
>>> memory areas would need to be tracked like SMC. For in-MMU TLBs, this
>>> would not be needed.
>>>
>>> Again, if performance would degrade, this would not be worthwhile. I'd
>>> expect VA->PA mappings to change at least at context switch rate +
>>> page fault rate + mmap/exec activity so this could amount to thousands
>>> of changes per second per CPU.
>>>
>>> In theory KVM could use memory API as CPU type agnostic way to
>>> exchange this information, I'd expect that KVM exit rate is not nearly
>>> as big and in many cases exchange of mapping information would not be
>>> needed. It would not improve performance there either.
>>>
> 
> Perhaps I was not very clear, but this was just theoretical.
> 
>>
>> First, the memory API does not operate at that level.  It handles (guest
>> physical) -> (host virtual | io callback) translations.  These are
>> (guest virtual) -> (guest physical translations).
> 
> I don't see why memory API could not be used also for GVA-GPA
> translation if we ignore performance for the sake of discussion.

For the reasons I mentioned.  The guest doesn't issue calls into the
memory API.  The granularity is wrong.  It is a system-wide API.

The latter two issues have to change to support IOMMUs, and then indeed
the memory API will be much closer to a CPU MMU (on x86 they can even
share page tables in some circumstances).  It will still be the wrong
API IMO.


> 
>> Second, the memory API is machine-wide and designed for coarse maps.
>> Processor memory maps are per-cpu and page-grained.  (the memory API
>> actually needs to efficiently support page-grained maps (for iommus) and
>> per-cpu maps (smm), but that's another story).
>>
>> Third, we know from the pre-npt/ept days that tracking all mappings
>> destroys performance.  It's much better to do this on demand.
> 
> Yes, performance reasons kill this idea. It would still be beautiful.
> 

Maybe I'm missing something, but I don't see this.  But as you said,
it's theoretical.

-- 
error compiling committee.c: too many arguments to function

  reply	other threads:[~2012-09-24  9:55 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-14 13:17 [Qemu-devel] directory hierarchy Paolo Bonzini
2012-09-14 13:36 ` Peter Maydell
2012-09-14 13:53   ` Paolo Bonzini
2012-09-16 14:40     ` Anthony Liguori
2012-09-17  7:47       ` Paolo Bonzini
2012-09-14 13:44 ` Luiz Capitulino
2012-09-14 14:03   ` Paolo Bonzini
2012-09-14 13:47 ` Daniel P. Berrange
2012-09-14 13:57   ` Paolo Bonzini
2012-09-14 13:48 ` Peter Maydell
2012-09-14 13:55   ` Paolo Bonzini
2012-09-14 14:00     ` Peter Maydell
2012-09-14 14:37 ` Stefan Weil
2012-09-14 16:36   ` Paolo Bonzini
2012-09-14 16:09 ` Kevin Wolf
2012-09-14 16:45   ` Paolo Bonzini
2012-09-14 19:51 ` Blue Swirl
2012-09-14 21:28   ` Paolo Bonzini
2012-09-19 12:54   ` Avi Kivity
2012-09-19 19:57     ` Blue Swirl
2012-09-20 11:31       ` Avi Kivity
2012-09-22 13:15         ` Blue Swirl
2012-09-23  8:25           ` Avi Kivity
2012-09-23 16:07             ` Blue Swirl
2012-09-24  9:54               ` Avi Kivity [this message]
2012-09-16 14:44 ` Anthony Liguori
2012-09-17  7:52   ` Paolo Bonzini
2012-09-17 13:04     ` Anthony Liguori

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=50602DEA.5030203@redhat.com \
    --to=avi@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.