From: Arnd Bergmann <arnd@arndb.de>
To: Will Deacon <will.deacon@arm.com>
Cc: "linaro-acpi@lists.linaro.org" <linaro-acpi@lists.linaro.org>,
"suravee.suthikulpanit@amd.com" <suravee.suthikulpanit@amd.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Catalin Marinas <Catalin.Marinas@arm.com>,
"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"lenb@kernel.org" <lenb@kernel.org>
Subject: Re: [Linaro-acpi] [PATCH 2/2] ACPI / scan: Parse _CCA and setup device coherency
Date: Thu, 30 Apr 2015 12:47:46 +0200 [thread overview]
Message-ID: <2575874.Qzlb7P3t1y@wuerfel> (raw)
In-Reply-To: <20150430104101.GD32373@arm.com>
On Thursday 30 April 2015 11:41:02 Will Deacon wrote:
> Hi Arnd,
>
> On Thu, Apr 30, 2015 at 09:23:59AM +0100, Arnd Bergmann wrote:
> > On Wednesday 29 April 2015 16:53:10 Suravee Suthikulpanit wrote:
> > > As for the case where _CCA=0, I think the ACPI driver should essentially
> > > communicate the information as HW is non-coherent as described in the
> > > spec, and should be calling arch_setup_dma_ops(dev, false). It is true
> > > that this in probably less-likely for the ARM64 server platforms.
> > > However, I would think that the ACPI driver should not be making such
> > > assumption.
> >
> > Can you add a description to the ACPI spec then to describe in detail what
> > "non-coherent" is supposed to mean, and which action the OS is supposed to
> > take when accessing data from device or CPU?
>
> You may be interested in the IORT ACPI companion spec here:
>
> http://infocenter.arm.com/help/topic/com.arm.doc.den0049a/DEN0049A_IO_Remapping_Table.pdf
>
> On CCA, it says:
>
> `This value must match the value returned by the _CCA object defined in
> the DSDT for the device represented by this node. The attribute can take
> the following values:
>
> - 0x1: The device is fully coherent. No cache maintenance[1] is required for
> memory shared with the device which is mapped on CPUs as
> Inner Write-Back (IWB), Outer Write-back (OWB), and Inner
> shareable (ISH). In addition, during system initialization at cold
> boot, or after wakeup from low-power state, if the cache
> coherency requires an SMMU override or some specific device
> configuration, the platform firmware has to ensure that this has
> been done. Therefore the semantics represented by a value of
> 0x1 are always correct at the time of hand-off from firmware to
> OS.
Ok, this part absolutely makes sense.
> - 0x0: The device is not coherent. Therefore:
> * Cache maintenance is required for memory shared with the
> device that is mapped on CPUs as IWB-OWB-ISH.
This still seems insufficient. I guess this excludes having to
synchronize external bridges or write buffers, but it does not specify
what cache maintenance is required. Should there be an "outer-flush"?
Should the CPU cache be invalidated or flushed (or both), and do
we need to care about caches inside of the device or just inside of
the CPU?
> * No cache maintenance is required for memory shared with the
> device that is mapped on the CPU as device or Non-cacheable.
>
> All other values are reserved.
>
> [1] Note: Caching operations described in this document apply to the CPU
> caches and any other caches in the system where device memory accesses
> can hit.'
>
> This aside, the documented introduces some useful, related concepts such
> as CPM (coherent path to memory) and DACS (device attributes are cacheable
> and inner shareable) for describing different IO subsystems. It also has
> mechanisms to descibe ID repainting from PCI->SMMU->ITS.
Ah, good.
Arnd
next prev parent reply other threads:[~2015-04-30 10:47 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-29 13:44 [PATCH 0/2] ACPI : Introduce support for _CCA object Suravee Suthikulpanit
2015-04-29 13:44 ` [PATCH 1/2] arm/arm64: ACPI: Introduce CONFIG_ACPI_MUST_HAVE_CCA Suravee Suthikulpanit
2015-04-29 14:04 ` Catalin Marinas
2015-04-29 14:31 ` Suravee Suthikulpanit
2015-04-29 14:42 ` Catalin Marinas
2015-04-29 14:44 ` Suravee Suthikulpanit
2015-04-30 13:47 ` Hanjun Guo
2015-04-30 13:50 ` Will Deacon
2015-04-30 14:14 ` Hanjun Guo
2015-04-30 15:01 ` Lorenzo Pieralisi
2015-04-29 13:44 ` [PATCH 2/2] ACPI / scan: Parse _CCA and setup device coherency Suravee Suthikulpanit
2015-04-29 14:03 ` Arnd Bergmann
2015-04-29 14:45 ` Suravee Suthikulpanit
2015-04-29 14:47 ` [Linaro-acpi] " Arnd Bergmann
2015-04-29 14:57 ` Suthikulpanit, Suravee
2015-04-29 15:39 ` Al Stone
2015-04-29 16:15 ` Arnd Bergmann
2015-04-29 15:54 ` Arnd Bergmann
2015-05-01 11:06 ` Catalin Marinas
2015-05-08 14:08 ` Arnd Bergmann
2015-05-11 17:10 ` Catalin Marinas
2015-05-11 17:24 ` Robin Murphy
2015-04-29 16:25 ` Arnd Bergmann
2015-04-29 21:53 ` Suravee Suthikulpanit
2015-04-30 8:23 ` [Linaro-acpi] " Arnd Bergmann
2015-04-30 10:41 ` Will Deacon
2015-04-30 10:47 ` Arnd Bergmann [this message]
2015-04-30 11:07 ` Will Deacon
2015-04-30 11:24 ` Arnd Bergmann
2015-04-30 11:46 ` Will Deacon
2015-04-30 13:03 ` Arnd Bergmann
2015-04-30 13:13 ` Will Deacon
2015-04-30 13:52 ` Arnd Bergmann
2015-04-30 15:55 ` Catalin Marinas
2015-05-08 14:01 ` Arnd Bergmann
2015-04-30 23:39 ` Suravee Suthikulanit
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=2575874.Qzlb7P3t1y@wuerfel \
--to=arnd@arndb.de \
--cc=Catalin.Marinas@arm.com \
--cc=lenb@kernel.org \
--cc=linaro-acpi@lists.linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=suravee.suthikulpanit@amd.com \
--cc=will.deacon@arm.com \
/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