qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: Avi Kivity <avi@redhat.com>, qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [RFC] Memory API
Date: Thu, 19 May 2011 21:50:19 +0300	[thread overview]
Message-ID: <20110519185019.GK27310@redhat.com> (raw)
In-Reply-To: <4DD56543.9020404@web.de>

On Thu, May 19, 2011 at 08:45:23PM +0200, Jan Kiszka wrote:
> On 2011-05-19 20:40, Gleb Natapov wrote:
> > On Thu, May 19, 2011 at 08:27:50PM +0200, Jan Kiszka wrote:
> >> On 2011-05-19 20:22, Gleb Natapov wrote:
> >>> On Thu, May 19, 2011 at 08:11:39PM +0200, Jan Kiszka wrote:
> >>>> On 2011-05-19 19:39, Gleb Natapov wrote:
> >>>>> On Thu, May 19, 2011 at 03:37:58PM +0200, Jan Kiszka wrote:
> >>>>>> On 2011-05-19 15:36, Anthony Liguori wrote:
> >>>>>>> On 05/18/2011 02:40 PM, Jan Kiszka wrote:
> >>>>>>>> On 2011-05-18 15:12, Avi Kivity wrote:
> >>>>>>>>> void cpu_register_memory_region(MemoryRegion *mr, target_phys_addr_t
> >>>>>>>>> addr);
> >>>>>>>>
> >>>>>>>> OK, let's allow overlapping, but make it explicit:
> >>>>>>>>
> >>>>>>>> void cpu_register_memory_region_overlap(MemoryRegion *mr,
> >>>>>>>>                                          target_phys_addr_t addr,
> >>>>>>>>                                          int priority);
> >>>>>>>
> >>>>>>> The device doesn't actually know how overlapping is handled.  This is
> >>>>>>> based on the bus hierarchy.
> >>>>>>
> >>>>>> Devices don't register their regions, buses do.
> >>>>>>
> >>>>> Today PCI device may register region that overlaps with any other
> >>>>> registered memory region without even knowing it. Guest can write any
> >>>>> RAM address into PCI BAR and this RAM address will be come mmio are. More
> >>>>> interesting is what happens when guest reprogram PCI BAR to other address
> >>>>> - the RAM that was at the previous address just disappears. Obviously
> >>>>>   this is crazy behaviour, but the question is how do we want to handle
> >>>>> it? One option is to disallow such overlapping registration, another is
> >>>>> to restore RAM mapping after PCI BAR is reprogrammed. If we chose second
> >>>>> one the PCI will not know that _overlap() should be called.
> >>>>
> >>>> BARs may overlap with other BARs or with RAM. That's well-known, so PCI
> >>>> bridged need to register their regions with the _overlap variant
> >>>> unconditionally. In contrast to the current PhysPageDesc mechanism, the
> >>> With what priority? If it needs to call _overlap unconditionally why not
> >>> always call _overlap and drop not _overlap variant?
> >>
> >> Because we should catch accidental overlaps in all those non PCI devices
> >> with hard-wired addressing. That's a bug in the device/machine model and
> >> should be reported as such by QEMU.
> > Why should we complicate API to catch unlikely errors? If you want to
> > debug that add capability to dump memory map from the monitor.
> 
> Because we need to switch tons of code that so far saw a fairly
> different reaction of the core to overlapping regions.
> 
How so? Today if there is accidental overlap device will not function properly.
With new API it will be the same.

> > 
> >>
> >>>
> >>>> new region management will not cause any harm to overlapping regions so
> >>>> that they can "recover" when the overlap is gone.
> >>>>
> >>>>>
> >>>>> Another example may be APIC region and PCI. They overlap, but neither
> >>>>> CPU nor PCI knows about it.
> >>>>
> >>>> And they do not need to. The APIC regions will be managed by the per-CPU
> >>>> region management, reusing the tool box we need for all bridges. It will
> >>>> register the APIC page with a priority higher than the default one, thus
> >>>> overriding everything that comes from the host bridge. I think that
> >>>> reflects pretty well real machine behaviour.
> >>>>
> >>> What is "higher"? How does it know that priority is high enough?
> >>
> >> Because no one else manages priorities at a specific hierarchy level.
> >> There is only one.
> >>
> > PCI and CPU are on different hierarchy levels. PCI is under the PIIX and
> > CPU is on a system BUS.
> 
> The priority for the APIC mapping will be applied at CPU level, of
> course. So it will override everything, not just PCI.
> 
So you do not need explicit priority because the place in hierarchy
implicitly provides you with one.

> > 
> >>> I
> >>> thought, from reading other replies, that priorities are meaningful
> >>> only on the same hierarchy level (which kinda make sense), but now you
> >>> are saying that you will override PCI address from another part of
> >>> the topology?
> >>
> >> Everything from below in the hierarchy is fed in with default priority,
> >> the lowest one. So to let some region created at this level override
> >> those regions, just pick default+1. If you want to create more overlay
> >> levels (can't imagine a good scenario, though), pick
> >> default+1..default+n. It's really that simple.
> >>
> > Except that PCI and CPU are not on the same level.
> 
> See above.
> 
> Jan
> 



--
			Gleb.

  reply	other threads:[~2011-05-19 18:50 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
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 [this message]
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=20110519185019.GK27310@redhat.com \
    --to=gleb@redhat.com \
    --cc=avi@redhat.com \
    --cc=jan.kiszka@web.de \
    --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).