qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Jan Kiszka <jan.kiszka@siemens.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	Marcel Apfelbaum <marcel.a@redhat.com>,
	QEMU Developers <qemu-devel@nongnu.org>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH RFC v2 2/2] hw/pci: handle unassigned pci addresses
Date: Mon, 9 Sep 2013 22:27:39 +0300	[thread overview]
Message-ID: <20130909192739.GC2674@redhat.com> (raw)
In-Reply-To: <CAFEAcA_wCG1Xr6qbJe1Art=GtgP4OjVDp5MsWkYkT05KWSVFFg@mail.gmail.com>

On Mon, Sep 09, 2013 at 07:59:06PM +0100, Peter Maydell wrote:
> On 9 September 2013 19:49, Jan Kiszka <jan.kiszka@siemens.com> wrote:
> > 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.
> 
> Typically on real hardware configuring things this way causes
> either (a) a memory transaction abort or (b) a deadlock. I
> think we could reasonably model that by deadlocking our
> device model, though as you say we should avoid actually
> crashing :-)
> 
> -- PMM

That's not really true.  The PCI spec says:

The target and master state machines in the PCI interface of a simple
device are completely independent. A device cannot make the completion
of any transaction (either posted or non-posted) as a target contingent
upon the prior completion of any other transaction as a master.


But it is certainly legal for a device to complete
a transaction and then start another transaction
in response. There's no reason this should deadlock
on real hardware if implemented according to the
above spec rule.

The spec-compliant way to emulate this therefore would be
to do exactly as spec says, and make handling of incoming
IO requests and DMA independent of each other.
Locking issues would then be solved automaticlly.

-- 
MST

  parent reply	other threads:[~2013-09-09 19:25 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 [this message]
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=20130909192739.GC2674@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 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).