From: Anthony Liguori <anthony@codemonkey.ws>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Avi Kivity <avi@redhat.com>, qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [RFC] Memory API
Date: Wed, 18 May 2011 10:14:57 -0500 [thread overview]
Message-ID: <4DD3E271.2010903@codemonkey.ws> (raw)
In-Reply-To: <4DD3D236.90708@siemens.com>
On 05/18/2011 09:05 AM, Jan Kiszka wrote:
> On 2011-05-18 15:12, Avi Kivity wrote:
>> The current memory APIs (cpu_register_io_memory,
>> cpu_register_physical_memory) suffer from a number of drawbacks:
>>
>> - lack of centralized bookkeeping
>> - a cpu_register_physical_memory() that overlaps an existing region
>> will overwrite the preexisting region; but a following
>> cpu_unregister_physical_memory() will not restore things to status quo
>> ante.
>
> Restoring is not the problem. The problem is that the current API
> deletes or truncates regions implicitly by overwriting. That makes
> tracking the layout hard, and it is also error-prone as the device that
> accidentally overlaps with some other device won't receive a
> notification of this potential conflict.
>
> Such implicite truncation or deletion must be avoided in a new API,
> forcing the users to explicitly reference an existing region when
> dropping or modifying it. But your API goes in the right direction.
>
>> - coalescing and dirty logging are all cleared on unregistering, so
>> the client has to re-issue them when re-registering
>> - lots of opaques
>> - no nesting
>> - if a region has multiple subregions that need different handling
>> (different callbacks, RAM interspersed with MMIO) then client code has
>> to deal with that manually
>> - we can't interpose code between a device and global memory handling
>
> I would add another drawback:
>
> - Inability to identify the origin of a region accesses and handle them
> differently based on the source.
>
> That is at least problematic for the x86 APIC which is CPU local. Our
> current way do deal with it is, well, very creative and falls to
> dust if a guest actually tries to remap the APIC.
This is about registration. Right now you can only register IO
intercepts in the chipset, not on a per-CPU basis. We could just as
easily have:
CPUState {
MemoryRegion apic_region;
};
per_cpu_register_memory(env, &env->apic_region);
To make that work.
We need to revamp registration. We should be able to register at the
following levels:
1) per-CPU (new API)
2) chipset (effectively the current cpu_register_physical_memory)
3) per-BUS (pci_register_bar())
Regards,
Anthony Liguori
next prev parent reply other threads:[~2011-05-18 15:15 UTC|newest]
Thread overview: 187+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-18 13:12 [Qemu-devel] [RFC] Memory API Avi Kivity
2011-05-18 14:05 ` Jan Kiszka
2011-05-18 14:36 ` Avi Kivity
2011-05-18 15:11 ` Jan Kiszka
2011-05-18 15:17 ` Peter Maydell
2011-05-18 15:30 ` Jan Kiszka
2011-05-18 19:10 ` Anthony Liguori
2011-05-18 19:27 ` Jan Kiszka
2011-05-18 19:34 ` Anthony Liguori
2011-05-18 20:02 ` Alex Williamson
2011-05-18 20:11 ` Jan Kiszka
2011-05-18 20:13 ` Alex Williamson
2011-05-18 20:07 ` Jan Kiszka
2011-05-18 20:41 ` Anthony Liguori
2011-05-19 8:26 ` Gleb Natapov
2011-05-19 8:30 ` Jan Kiszka
2011-05-19 8:44 ` Avi Kivity
2011-05-19 13:59 ` Anthony Liguori
2011-05-19 13:52 ` Anthony Liguori
2011-05-19 13:56 ` Avi Kivity
2011-05-19 13:57 ` Jan Kiszka
2011-05-19 14:04 ` Anthony Liguori
2011-05-19 14:06 ` Jan Kiszka
2011-05-19 14:11 ` Avi Kivity
2011-05-19 18:18 ` Anthony Liguori
2011-05-19 18:50 ` Jan Kiszka
2011-05-19 19:02 ` Anthony Liguori
2011-05-19 19:10 ` Jan Kiszka
2011-05-20 9:15 ` Avi Kivity
2011-05-20 17:30 ` Blue Swirl
2011-05-22 7:23 ` Avi Kivity
2011-05-19 6:31 ` Jan Kiszka
2011-05-19 13:23 ` Anthony Liguori
2011-05-19 13:25 ` Jan Kiszka
2011-05-19 13:26 ` Avi Kivity
2011-05-19 13:35 ` Anthony Liguori
2011-05-19 13:36 ` Jan Kiszka
2011-05-19 13:43 ` Avi Kivity
2011-05-19 13:39 ` Avi Kivity
2011-05-19 8:09 ` Avi Kivity
2011-05-18 15:23 ` Avi Kivity
2011-05-18 15:36 ` Jan Kiszka
2011-05-18 15:42 ` Avi Kivity
2011-05-18 16:00 ` Jan Kiszka
2011-05-18 16:14 ` Avi Kivity
2011-05-18 16:39 ` Jan Kiszka
2011-05-18 16:47 ` Avi Kivity
2011-05-18 17:07 ` Jan Kiszka
2011-05-18 17:15 ` Avi Kivity
2011-05-18 17:40 ` Jan Kiszka
2011-05-18 20:13 ` Richard Henderson
2011-05-19 8:04 ` Avi Kivity
2011-05-19 9:08 ` Gleb Natapov
2011-05-19 9:10 ` Avi Kivity
2011-05-19 9:14 ` Gleb Natapov
2011-05-19 11:44 ` Avi Kivity
2011-05-19 11:54 ` Gleb Natapov
2011-05-19 11:57 ` Jan Kiszka
2011-05-19 11:58 ` Gleb Natapov
2011-05-19 12:02 ` Avi Kivity
2011-05-19 12:21 ` Gleb Natapov
2011-05-19 12:02 ` Jan Kiszka
2011-05-19 11:57 ` Avi Kivity
2011-05-19 12:20 ` Jan Kiszka
2011-05-19 12:50 ` Avi Kivity
2011-05-19 12:58 ` Jan Kiszka
2011-05-19 13:00 ` Avi Kivity
2011-05-19 13:03 ` Jan Kiszka
2011-05-19 13:07 ` Avi Kivity
2011-05-19 13:26 ` Jan Kiszka
2011-05-19 13:30 ` Avi Kivity
2011-05-19 13:43 ` Jan Kiszka
2011-05-19 13:47 ` Avi Kivity
2011-05-19 13:49 ` Anthony Liguori
2011-05-19 13:53 ` Avi Kivity
2011-05-19 14:15 ` Anthony Liguori
2011-05-19 14:20 ` Jan Kiszka
2011-05-19 14:25 ` Anthony Liguori
2011-05-19 14:28 ` Jan Kiszka
2011-05-19 14:31 ` Avi Kivity
2011-05-19 14:37 ` Anthony Liguori
2011-05-19 14:40 ` Avi Kivity
2011-05-19 16:17 ` Gleb Natapov
2011-05-19 16:25 ` Jan Kiszka
2011-05-19 16:28 ` Gleb Natapov
2011-05-19 16:30 ` Jan Kiszka
2011-05-19 16:36 ` Anthony Liguori
2011-05-19 16:49 ` Jan Kiszka
2011-05-19 17:12 ` Gleb Natapov
2011-05-19 18:11 ` Jan Kiszka
2011-05-20 8:58 ` Avi Kivity
2011-05-20 8:56 ` Avi Kivity
2011-05-20 14:51 ` Anthony Liguori
2011-05-20 16:43 ` Olivier Galibert
2011-05-20 17:32 ` Anthony Liguori
2011-05-22 7:36 ` Avi Kivity
2011-05-19 16:43 ` Gleb Natapov
2011-05-19 16:51 ` Jan Kiszka
2011-05-19 16:27 ` Gleb Natapov
2011-05-20 8:59 ` Avi Kivity
2011-05-20 11:57 ` Gleb Natapov
2011-05-22 7:37 ` Avi Kivity
2011-05-22 8:06 ` Gleb Natapov
2011-05-22 8:09 ` Avi Kivity
2011-05-22 8:59 ` Gleb Natapov
2011-05-22 12:26 ` Avi Kivity
2011-05-19 16:32 ` Anthony Liguori
2011-05-19 16:35 ` Jan Kiszka
2011-05-19 16:38 ` Anthony Liguori
2011-05-19 16:50 ` Jan Kiszka
2011-05-20 9:03 ` Avi Kivity
2011-05-20 9:01 ` Avi Kivity
2011-05-20 15:33 ` Anthony Liguori
2011-05-20 15:59 ` Jan Kiszka
2011-05-22 7:38 ` Avi Kivity
2011-05-22 15:42 ` Anthony Liguori
2011-05-19 14:21 ` Avi Kivity
2011-05-19 13:44 ` Anthony Liguori
2011-05-19 13:47 ` Jan Kiszka
2011-05-19 13:50 ` Anthony Liguori
2011-05-19 13:55 ` Jan Kiszka
2011-05-19 13:55 ` Avi Kivity
2011-05-19 18:06 ` Anthony Liguori
2011-05-19 18:21 ` Jan Kiszka
2011-05-19 13:49 ` Avi Kivity
2011-05-19 9:24 ` Edgar E. Iglesias
2011-05-19 14:49 ` Peter Maydell
2011-05-18 16:33 ` Anthony Liguori
2011-05-18 16:41 ` Avi Kivity
2011-05-18 17:04 ` Anthony Liguori
2011-05-18 17:13 ` Avi Kivity
2011-05-18 16:42 ` Jan Kiszka
2011-05-18 17:05 ` Avi Kivity
2011-05-18 15:14 ` Anthony Liguori [this message]
2011-05-18 15:26 ` Avi Kivity
2011-05-18 16:21 ` Avi Kivity
2011-05-18 16:42 ` Jan Kiszka
2011-05-18 16:49 ` Avi Kivity
2011-05-18 17:11 ` Anthony Liguori
2011-05-18 17:38 ` Jan Kiszka
2011-05-18 15:08 ` Anthony Liguori
2011-05-18 15:37 ` Avi Kivity
2011-05-18 19:36 ` Jan Kiszka
2011-05-18 15:47 ` Stefan Weil
2011-05-18 16:06 ` Avi Kivity
2011-05-18 16:51 ` Richard Henderson
2011-05-18 16:53 ` Avi Kivity
2011-05-18 17:03 ` Richard Henderson
2011-05-18 15:58 ` Avi Kivity
2011-05-18 16:26 ` Richard Henderson
2011-05-18 16:37 ` Avi Kivity
2011-05-18 17:17 ` Avi Kivity
2011-05-18 19:40 ` Jan Kiszka
2011-05-19 8:06 ` Avi Kivity
2011-05-19 8:08 ` Jan Kiszka
2011-05-19 8:13 ` Avi Kivity
2011-05-19 8:25 ` Jan Kiszka
2011-05-19 8:43 ` Avi Kivity
2011-05-19 9:24 ` Jan Kiszka
2011-05-19 11:58 ` Avi Kivity
2011-05-19 13:36 ` Anthony Liguori
2011-05-19 13:37 ` Jan Kiszka
2011-05-19 13:41 ` Avi Kivity
2011-05-19 17:39 ` Gleb Natapov
2011-05-19 18:03 ` Anthony Liguori
2011-05-19 18:28 ` Gleb Natapov
2011-05-19 18:33 ` Anthony Liguori
2011-05-19 18:11 ` Jan Kiszka
2011-05-19 18:22 ` Gleb Natapov
2011-05-19 18:27 ` Jan Kiszka
2011-05-19 18:40 ` Gleb Natapov
2011-05-19 18:45 ` Jan Kiszka
2011-05-19 18:50 ` Gleb Natapov
2011-05-19 18:55 ` Jan Kiszka
2011-05-19 19:02 ` Jan Kiszka
2011-05-20 7:23 ` Gleb Natapov
2011-05-20 7:40 ` Jan Kiszka
2011-05-20 11:25 ` Gleb Natapov
2011-05-22 7:50 ` Avi Kivity
2011-05-22 8:41 ` Gleb Natapov
2011-05-22 10:53 ` Jan Kiszka
2011-05-22 11:29 ` Avi Kivity
2011-05-23 8:45 ` Gleb Natapov
2011-05-23 22:29 ` Jamie Lokier
2011-05-20 9:10 ` Avi Kivity
2011-05-20 12:08 ` Gleb Natapov
2011-05-22 7:56 ` Avi Kivity
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=4DD3E271.2010903@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=jan.kiszka@siemens.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 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).