All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Marcel Apfelbaum <marcel.a@redhat.com>
Subject: Re: [Qemu-devel] [PATCH RFC v2 2/2] hw/pci: handle unassigned pci addresses
Date: Sun, 15 Sep 2013 14:05:52 +0300	[thread overview]
Message-ID: <20130915110552.GA4600@redhat.com> (raw)
In-Reply-To: <CAFEAcA9rOn31dBL3gMf9dKKrWCJJE2UmLTiNtjd6cT1=mTK8oA@mail.gmail.com>

On Sun, Sep 15, 2013 at 11:56:40AM +0100, Peter Maydell wrote:
> On 15 September 2013 08:14, Michael S. Tsirkin <mst@redhat.com> wrote:
> > On Tue, Sep 10, 2013 at 02:12:56PM +0100, Peter Maydell wrote:
> >> On 10 September 2013 14:02, Michael S. Tsirkin <mst@redhat.com> wrote:
> >> > On Tue, Sep 10, 2013 at 01:50:47PM +0100, Peter Maydell wrote:
> >> >> On 10 September 2013 13:39, Michael S. Tsirkin <mst@redhat.com> wrote:
> >> >> > On Mon, Sep 09, 2013 at 02:16:41PM +0100, Peter Maydell wrote:
> >> >> >>     memory_region_init_alias(&pci_dev->bus_master_enable_region,
> >> >> >>                              OBJECT(pci_dev), "bus master",
> >> >> >>                              dma_as->root, 0,
> >> >> >>                              memory_region_size(dma_as->root));
> >> >> >>
> >> >> >> If instead of using this alias directly as the
> >> >> >> bus_master_enable region you instead:
> >> >> >>  * create a container region
> >> >> >>  * create a 'background' region at negative priority
> >> >> >>    (ie one per device, and you can make the 'opaque' pointer
> >> >> >>    point to the device, not the bus)
> >> >> >>  * put the alias and the background region into the container
> >> >> >>  * use the container as the bus_master_enable region
> >> >> >
> >> >> > Interesting. There's one thing I don't understand here:
> >> >> > as far as I can see bus_master_enable_region covers the
> >> >> > whole 64 bit memory address space.
> >> >> >
> >> >> > It looks like it will always override the background
> >> >> > region in the same container. What did I miss?
> >> >>
> >> >> That should be itself a container,
> >> >> so assuming it doesn't
> >> >> itself have any kind of background region the "holes"
> >> >> inside it will still be present when we put it in
> >> >> our new container. (Basically putting a container,
> >> >> or an alias to one, inside a region is just saying
> >> >> "put everything in that container inside this region
> >> >> at the appropriate place").
> >> >
> >> > Confused.  "That" and "it" here refers to what exactly?
> >>
> >> Well, I was a bit confused by your talking about
> >> the properties of "bus_master_enable_region" when my
> >> suggestion is effectively that we change what that is.
> >> So let's start again:
> >>  * create a container region
> >> This is 64 bits wide, but totally empty
> >>  * create a 'background' region at negative priority
> >> 64 bits wide
> >>  * put the alias and the background region into the container
> >> The alias is 64 bits wide too, but it is an alias of
> >> dma_as->root, which is a container with no background
> >> region.
> >>  * use the container as the bus_master_enable region
> >>  -- all you see in this container is the background region
> >> and anyhing that was in dma_as->root.
> >
> > This confused me even more.
> > dma root covers whole 64 bit doesn't it?
> 
> It has a size of 64 bits but it doesn't necessarily have
> actual memory subregions with I/O operations covering the
> whole contiguous range from 0 to 2^64-1
> (that would only
> happen if the things responding to DMA cover the whole
> 64 bit address, which corresponds to the situation in hardware
> where something will respond to the bus master transaction
> for any address. The hardware still has the "if nothing
> responds do this" capability, it just never gets used.)
> 
> The case where the DMA root is an IOMMU could be
> a problem though, because address_space_translate()
> hardcodes io_mem_unassigned as the fallback if the
> IOMMU says "no, can't write here".
> 
> > The doc says:
> > "This is done with memory_region_add_subregion_overlap(), which
> > allows the region to overlap any other region in the same container, and
> > specifies a priority that allows the core to decide which of two regions
> > at
> > the same address are visible (highest wins)."
> >
> > So if I create an alias that also covers whole 64 bit
> > and background in the same
> > container, background with a negative priority,
> > won't alias always win?
> 
> The alias will win for the addresses it handles. But if
> the alias is a container with "holes" then it doesn't handle
> the "holes" and the lower priority background region will
> get them.
> 
> -- PMM

Confused. How can there be a container with holes?
I thought the only way to create non-contigious
configurations is by creating multiple aliases?


Imagine this configuration:

region B - subregion of A, from 0x1000 to 0x3000
region C - subregion of A, from 0x2000 to 0x4000

region D - subregion of B from offset 0 to 0x1000

If B has higher priority that C, then part of C
from 0x2000 to 0x3000 is hidden, even though B
is a container and there's no subregion of B covering
that address range.

Right?

  reply	other threads:[~2013-09-15 11:03 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-09 11:11 [Qemu-devel] [PATCH RFC v2 0/3] pci: complete master abort protocol Marcel Apfelbaum
2013-09-09 11:11 ` [Qemu-devel] [PATCH RFC v2 1/2] memory: allow MemoryRegion's priority field to accept negative values Marcel Apfelbaum
2013-09-09 11:28   ` Peter Maydell
2013-09-09 12:03     ` Marcel Apfelbaum
2013-09-09 11:11 ` [Qemu-devel] [PATCH RFC v2 2/2] hw/pci: handle unassigned pci addresses Marcel Apfelbaum
2013-09-09 11:40   ` Michael S. Tsirkin
2013-09-09 12:11     ` Marcel Apfelbaum
2013-09-09 12:23       ` Michael S. Tsirkin
2013-09-09 12:43         ` Marcel Apfelbaum
2013-09-09 12:52           ` Peter Maydell
2013-09-09 12:59             ` Michael S. Tsirkin
2013-09-09 13:02               ` Peter Maydell
2013-09-09 13:15                 ` Marcel Apfelbaum
2013-09-09 13:19                   ` Peter Maydell
2013-09-09 13:29                     ` Marcel Apfelbaum
2013-09-09 13:39                       ` Peter Maydell
2013-09-09 14:04                         ` Marcel Apfelbaum
2013-09-09 14:21                           ` Peter Maydell
2013-09-09 14:51                             ` Marcel Apfelbaum
2013-09-09 14:58                               ` Peter Maydell
2013-09-09 16:00                                 ` Michael S. Tsirkin
2013-09-09 16:02                                   ` Peter Maydell
2013-09-09 16:34                                     ` Michael S. Tsirkin
2013-09-09 16:54                                       ` Jan Kiszka
2013-09-09 16:58                                         ` Peter Maydell
2013-09-09 17:09                                           ` Jan Kiszka
2013-09-09 17:14                                             ` Peter Maydell
2013-09-09 17:27                                               ` Jan Kiszka
2013-09-09 17:37                                                 ` Michael S. Tsirkin
2013-09-09 17:41                                                 ` Peter Maydell
2013-09-09 18:06                                                   ` Jan Kiszka
2013-09-09 18:11                                                     ` Paolo Bonzini
2013-09-09 19:35                                                       ` Michael S. Tsirkin
2013-09-09 18:03                                                 ` Paolo Bonzini
2013-09-09 18:49                                                   ` Jan Kiszka
2013-09-09 18:59                                                     ` Peter Maydell
2013-09-09 19:04                                                       ` Jan Kiszka
2013-09-09 19:27                                                       ` Michael S. Tsirkin
2013-09-09 19:31                                                     ` Michael S. Tsirkin
2013-09-09 15:54                             ` Michael S. Tsirkin
2013-09-09 14:04                       ` Michael S. Tsirkin
2013-09-09 14:16                         ` Marcel Apfelbaum
2013-09-09 13:59                 ` Michael S. Tsirkin
2013-09-09 13:07             ` Marcel Apfelbaum
2013-09-09 13:16               ` Peter Maydell
2013-09-09 13:44                 ` Marcel Apfelbaum
2013-09-10 12:39                 ` Michael S. Tsirkin
2013-09-10 12:50                   ` Peter Maydell
2013-09-10 13:02                     ` Michael S. Tsirkin
2013-09-10 13:12                       ` Peter Maydell
2013-09-10 14:11                         ` Michael S. Tsirkin
2013-09-15  7:14                         ` Michael S. Tsirkin
2013-09-15 10:56                           ` Peter Maydell
2013-09-15 11:05                             ` Michael S. Tsirkin [this message]
2013-09-15 11:23                               ` Peter Maydell
2013-09-15 12:17                                 ` Michael S. Tsirkin
2013-09-15 13:24                                   ` Peter Maydell
2013-09-15 13:39                                     ` Michael S. Tsirkin
2013-09-15 13:49                                       ` Peter Maydell
2013-09-15 14:08                                         ` Michael S. Tsirkin
2013-09-15 14:08                                           ` Peter Maydell
2013-09-15 14:20                                             ` Michael S. Tsirkin
2013-09-15 14:49                                               ` Peter Maydell
2013-09-15 15:05                                                 ` Michael S. Tsirkin
2013-09-15 15:08                                                   ` Peter Maydell
2013-09-15 15:31                                                     ` Michael S. Tsirkin
2013-09-15 17:12                                                       ` Peter Maydell
2013-09-15  9:29                         ` Marcel Apfelbaum
2013-09-09 14:01               ` Michael S. Tsirkin
2013-09-09 13:58           ` Michael S. Tsirkin
2013-09-09 14:10             ` Marcel Apfelbaum

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=20130915110552.GA4600@redhat.com \
    --to=mst@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=jan.kiszka@siemens.com \
    --cc=marcel.a@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --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.