All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <bhelgaas@google.com>
To: Jay Cornwall <jay@jcornwall.me>
Cc: linux-pci@vger.kernel.org
Subject: Re: [PATCH RFC 0/1] Add AtomicOp Requester support
Date: Mon, 21 Sep 2015 17:46:29 -0500	[thread overview]
Message-ID: <20150921224629.GS25767@google.com> (raw)
In-Reply-To: <96e2c6b2b12b99282c59c97dbb8e5b69@jcornwall.me>

On Mon, Sep 21, 2015 at 03:44:59PM -0500, Jay Cornwall wrote:
> On 2015-09-14 14:58, Bjorn Helgaas wrote:
> 
> >On Wed, Aug 19, 2015 at 04:10:01PM -0500, Jay Cornwall wrote:
> 
> >>Approach 2 could only establish that there is a path to at least
> >>one completer,
> >>but it would not prevent requests being sent to a different
> >>device which does
> >>not support AtomicOp completion. For example, a root complex
> >>might support
> >>completion but a transaction could be sent to a different device
> >>which does
> >>not. The routable guarantee is not precise and so less useful.
> 
> >I assume the common usage scenario is to enable AtomicOps for
> >host-to-device and/or device-to-host transactions, and we can ignore
> >device-to-device transactions for now.
> >
> >If I understand correctly, AtomicOps must be supported by all devices
> >along the path, e.g., a Root Port, possibly some Switch Ports, and
> >finally an Endpoint. I guess your worry with Approach 2 is for a
> >scenario like this:
> >
> >00:1c.0: PCI bridge to [bus 01-04] Root Port, with AtomicOp Routing
> >01:00.0: PCI bridge to [bus 02-04] Upstream Port, with AtomicOp Routing
> >02:00.0: PCI bridge to [bus 03] Downstream Port, with AtomicOp Routing
> >03:00.0: endpoint AtomicOp Completer Supported
> >02:00.1: PCI bridge to [bus 04] Downstream Port, with AtomicOp Routing
> >04:00.0: endpoint no AtomicOp Completer support
> >
> >It's true that we wouldn't want to enable AtomicOp routing to 04:00.0,
> >but isn't that what the AtomicOp Egress Blocking bit is for? If we
> >set that in 02:00.1, we should be safe in the sense that AtomicOps
> >targeting 04:00.0 should cause non-fatal errors.
> 
> If 02:00.1 had egress blocking then, if I understand correctly, a
> 00:1c.0 -> 04:00.0 AtomicOp request would be blocked.

Yes, a 1c.0 -> 04:00.0 AtomicOp request would be blocked, but 04:00.0
doesn't support AtomicOps, so we *want* that request to be blocked,
don't we?  If 04:00.0 received an AtomicOp, I think it would handle it
as a Malformed TLP, which by default is a Fatal Error.

If we set AtomicOpEgress Blocking in 02:00.1 and attempt a 1c.0 ->
04:00.0 AtomicOp request, my reading is that 02:00.1 should report an
AtomicOp Egress Blocked error, which by default is an Advisory
Non-Fatal Error, and 04:00.0 should never receive the AtomicOp.

This is from the second-to-last paragraph of PCIe spec r3.0, sec 6.15.

Even if we set AtomicOpEgress Blocking in 02:00.1, an AtomicOp to
03:00.0 should work, because that would be routed via 02:00.0, not
02:00.1.

Bjorn

  reply	other threads:[~2015-09-21 22:46 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-19 21:10 [PATCH RFC 0/1] Add AtomicOp Requester support Jay Cornwall
2015-08-19 21:10 ` [PATCH RFC 1/1] PCI: Add pci_enable_atomic_request Jay Cornwall
2015-09-14 19:58 ` [PATCH RFC 0/1] Add AtomicOp Requester support Bjorn Helgaas
2015-09-21 20:44   ` Jay Cornwall
2015-09-21 22:46     ` Bjorn Helgaas [this message]
2015-09-22  0:16       ` Jay Cornwall
2015-09-22 16:22         ` Bjorn Helgaas
2015-09-23 16:44           ` Jay Cornwall

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=20150921224629.GS25767@google.com \
    --to=bhelgaas@google.com \
    --cc=jay@jcornwall.me \
    --cc=linux-pci@vger.kernel.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.