[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC] Memory API
From: |
Gleb Natapov |
Subject: |
Re: [Qemu-devel] [RFC] Memory API |
Date: |
Thu, 19 May 2011 14:54:05 +0300 |
On Thu, May 19, 2011 at 02:44:29PM +0300, Avi Kivity wrote:
> On 05/19/2011 12:14 PM, Gleb Natapov wrote:
> >On Thu, May 19, 2011 at 12:10:38PM +0300, Avi Kivity wrote:
> >> On 05/19/2011 12:08 PM, Gleb Natapov wrote:
> >> >On Wed, May 18, 2011 at 06:42:14PM +0300, Avi Kivity wrote:
> >> >> On 05/18/2011 06:36 PM, Jan Kiszka wrote:
> >> >> >>
> >> >> >> We need to head for the more hardware-like approach. What
> >> happens when
> >> >> >> you program overlapping BARs? I imagine the result is
> >> >> >> implementation-defined, but ends up with one region decoded in
> >> >> >> preference to the other. There is simply no way to reject an
> >> >> >> overlapping mapping.
> >> >> >
> >> >> >But there is also now simple way to allow them. At least not without
> >> >> >exposing control about their ordering AND allowing to hook up
> >> managing
> >> >> >code (e.g. of the PCI bridge or the chipset) that controls
> >> registrations.
> >> >>
> >> >> What about memory_region_add_subregion(..., int priority) as I
> >> >> suggested in another message?
> >> >Haven't saw another message yet, but how caller knows about priority?
> >>
> >> The caller is emulating some hub or router and should decide on
> >> priority like real hardware.
> >>
> >> For example, piix gives higher priority to the vga window over RAM.
> >>
> >Hmm, but if a caller of the memory_region_add_subregion() function is a
> >device itself how does it know about chipset priorities. All it wants to
> >tell to the system is that it is ready to handle mmio access in this phys
> >range, but chipset may decide to forward those accesses elsewhere.
>
> In this case the device would call a chipset function, passing the
> memory region as a parameter, and the chipset would call
> m_r_add_subregion().
But then chipset can resolve all overlapping by itself and register only
regions that are actually accessible by a guest software. Also there are
devices that on some architectures are accessed through a chipset and on
other they resides directly on a system bus. If they will need to call
different memory registration api depending on how they are instantiated
the code can become messy.
> Alternatively, the chipset can instantiate the
> device (if it is an embedded one) and call m_r_add_subregion()
> itself.
>
--
Gleb.
- Re: [Qemu-devel] [RFC] Memory API, (continued)
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/18
- Re: [Qemu-devel] [RFC] Memory API, Jan Kiszka, 2011/05/18
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/18
- Re: [Qemu-devel] [RFC] Memory API, Jan Kiszka, 2011/05/18
- Re: [Qemu-devel] [RFC] Memory API, Richard Henderson, 2011/05/18
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Gleb Natapov, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Gleb Natapov, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API,
Gleb Natapov <=
- Re: [Qemu-devel] [RFC] Memory API, Jan Kiszka, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Gleb Natapov, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Gleb Natapov, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Jan Kiszka, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Jan Kiszka, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Jan Kiszka, 2011/05/19
- Re: [Qemu-devel] [RFC] Memory API, Avi Kivity, 2011/05/19