All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	Marcel Apfelbaum <marcel.a@redhat.com>,
	QEMU Developers <qemu-devel@nongnu.org>,
	"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH RFC v2 2/2] hw/pci: handle unassigned pci addresses
Date: Mon, 09 Sep 2013 20:06:15 +0200	[thread overview]
Message-ID: <522E0E17.2050700@siemens.com> (raw)
In-Reply-To: <CAFEAcA_h+wpN=BeM0-mLAFUkvs1U7saSA6VzXtvZEj=gAy+DKw@mail.gmail.com>

On 2013-09-09 19:41, Peter Maydell wrote:
> On 9 September 2013 18:27, Jan Kiszka <jan.kiszka@siemens.com> wrote:
>> On 2013-09-09 19:14, Peter Maydell wrote:
>>> On 9 September 2013 18:09, Jan Kiszka <jan.kiszka@siemens.com> wrote:
>>>> Other communication between devices requiring to take the target
>>>> device's lock while holding the one of the initiator will be a no-go as
>>>> well. But usually these scenarios are clearly defined, not
>>>> guest-influenceable and can be avoided by the initiator.
>>>
>>> How? If I'm a device and I need to raise a GPIO output line
>>> I have no idea what the other end is connected to. Similarly
>>> for more interesting device-to-device connections than
>>> pure on-or-off signal lines.
>>
>> Then you will have to write all devices involved in this in a way that
>> they preserve a clear locking order or drop locks before triggering such
>> signals - or stay with this communication completely under the BQL.
> 
> I don't have to do anything -- this already exists and
> works fine. If you want to get rid of the big lock
> then you need to do something... More to the point,
> "all devices involved" is the entire set of QEMU's
> device models -- you can't tell what a gpio line is
> going to be connected to or restrict it magically to
> a subset of devices.

We need to do something about specific communication channels, where we
do know how can talk to whom - e.g. interrupts. But you can't address
this topic generically. Device models interested in BQL-free (or
reduced) operation will have to be changed. On a case-by-case base.

> 
>>>> DMA is too
>>>> generic. E.g., the guest can easily program a device to
>>>> "accidentally" hit another device's MMIO region
>>>
>>> This is just a special case of generic device-device interaction.
>>
>> DMA is dispatched by the memory core which we would like to move out of
>> the BQL context soon.
> 
> I'm not convinced this is sufficient reason to go backwards
> on emulation accuracy. You know at flatten-to-address-
> space time whether any particular region is going to be
> to RAM or MMIO, so it should be possible to fast/slowpath
> it at that point...

You also have to know the source in order to tell if a transaction can
be safely forwarded because BQL takes care or the initiator is holding
no locks. This has nothing to do with fast/slow, this is about the risk
to deadlock the QEMU process upon guest request.

BTW, this was discussed earlier on the list a few times (need to dig the
archive, was in the context of lock-less MMIO dispatching), and the
consensus back then was that device-to-device DMA is generally a bug
that is not worth supporting in all its beauty. But if you know a
concrete scenario / guest where it matters, that would bring in a new
aspect.

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux

  reply	other threads:[~2013-09-09 18:06 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 [this message]
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
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=522E0E17.2050700@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=aliguori@us.ibm.com \
    --cc=marcel.a@redhat.com \
    --cc=mst@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.