Thread (35 messages) 35 messages, 5 authors, 2015-07-03

Re: [PATCH v7 5/9] PCI: Add pci_iomap_wc() variants

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2015-06-25 01:01:57
Also in: linux-fbdev, linux-pci, lkml

On Wed, 2015-06-24 at 18:38 +0200, Luis R. Rodriguez wrote:
On Wed, Jun 24, 2015 at 08:42:23AM +1000, Benjamin Herrenschmidt wrote:
quoted
On Fri, 2015-06-19 at 15:08 -0700, Luis R. Rodriguez wrote:
quoted
From: "Luis R. Rodriguez" <redacted>

PCI BARs tell us whether prefetching is safe, but they don't say anything
about write combining (WC).  WC changes ordering rules and allows writes to
be collapsed, so it's not safe in general to use it on a prefetchable
region.
Well, the PCIe spec at least specifies that a prefetchable BAR also
tolerates write merging... 
How can that be determined and can that be used as a full bullet proof hint
to enable wc ? And are you sure? :) 
Well, I"m sure the spec says that ;-) But it could be new to PCIe, I
haven't checked legacy PCI.
Reason all this was stated was to be
apologetic over why we can't automate this behind the scenes. Otherwise
we could amend what you stated into the commit log to elaborate on our
technical apology. Let me know!
At least on powerpc, for mmap of resource to userspace, we take off the
garded bit in the PTE for prefetchable BARs. This has the effect
architecturally of enabling both prefetch and write combine (ie. side
effect) though afaik, the implementations probably don't actually
prefetch. We've done that for years.

In fact we don't have a way to split the notions, it's either G or no G,
which carries both meanings.

Do you have example/case of a device having problems ?

Cheers,
Ben.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help