From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Anthony Liguori <aliguori@us.ibm.com>,
Marcel Apfelbaum <marcel.a@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [Qemu-devel] [PATCH RFC v2 2/2] hw/pci: handle unassigned pci addresses
Date: Mon, 9 Sep 2013 22:31:13 +0300 [thread overview]
Message-ID: <20130909193112.GD2674@redhat.com> (raw)
In-Reply-To: <522E1851.6070407@siemens.com>
On Mon, Sep 09, 2013 at 08:49:53PM +0200, Jan Kiszka wrote:
> On 2013-09-09 20:03, Paolo Bonzini wrote:
> > Il 09/09/2013 19:27, Jan Kiszka ha scritto:
> >> On 2013-09-09 19:14, Peter Maydell wrote:
> >>> On 9 September 2013 18:09, Jan Kiszka <jan.kiszka@siemens.com> wrote:
> >>>> On 2013-09-09 18:58, Peter Maydell wrote:
> >>>>> Why is a DMA request any different from any other communication
> >>>>> between two devices?
> >>>>
> >>>> 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'm with Peter on this---I'm not sure why DMA-outside-BQL is different
> > from interrupts-outside-BQL. If you drop locks before triggering
> > either, there is no need to forbid DMA between devices.
> >
> > Yes, it is harder, but I'm not sure why it shouldn't work.
>
> Well, even if you resolve the locking issues in all the interesting
> devices (not impossible, just pretty costly in several regards), you
> cannot reasonably allow device A talking to device B triggering a
> request on A issuing a command to B... in the general case. If such
> recursions are programmable, we need to stop them before QEMU's stack
> explodes.
Actually in PCI, spec explicitly outlaws hardware
that blocks an incoming request because an outgoing
one is pending.
So I don't think one can get away with doing DMA directly
from a memory op and still claim strict PCI spec compliance.
> Interrupts do not have the potential to cause this, at least with
> existing machines. If a guest can configure GPIO loops between devices
> models on some machine, this likely has to be addressed as well.
>
> >
> > If it is really needed, we could do things such as wait-wound locks that
> > are used in databases (and in the Linux kernel) to avoid deadlocks.
> > Databases need to take locks in arbitrary order decided by the query
> > planner.
>
> Please not. Such lock semantics make it very hard - if not impossible -
> to apply priority inversion avoidance protocols. Not to speak of the
> massive changes on the code base to implement safe rollback. Just
> because one domain can benefit from it doesn't make it a generally
> useful tool.
>
> Jan
>
> --
> Siemens AG, Corporate Technology, CT RTC ITP SES-DE
> Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2013-09-09 19:29 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 [this message]
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=20130909193112.GD2674@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.