[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20161119111157.GA364@wunner.de>
Date: Sat, 19 Nov 2016 12:11:57 +0100
From: Lukas Wunner <lukas@...ner.de>
To: Marek Szyprowski <m.szyprowski@...sung.com>
Cc: "Luis R. Rodriguez" <mcgrof@...nel.org>, linux-pm@...r.kernel.org,
linux-kernel@...r.kernel.org, iommu@...ts.linux-foundation.org,
linux-samsung-soc@...r.kernel.org, Joerg Roedel <joro@...tes.org>,
Inki Dae <inki.dae@...sung.com>, Kukjin Kim <kgene@...nel.org>,
Krzysztof Kozlowski <krzk@...nel.org>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@...sung.com>,
"Rafael J. Wysocki" <rjw@...ysocki.net>,
Mark Brown <broonie@...nel.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Tomeu Vizoso <tomeu.vizoso@...labora.com>,
Kevin Hilman <khilman@...nel.org>,
Tobias Jakobi <tjakobi@...h.uni-bielefeld.de>,
Tomasz Figa <tomasz.figa@...il.com>,
Grant Likely <grant.likely@...retlab.ca>,
Laurent Pinchart <laurent.pinchart@...asonboard.com>,
Lars-Peter Clausen <lars@...afoo.de>,
Andrzej Hajda <a.hajda@...sung.com>,
Mauro Carvalho Chehab <mchehab@....samsung.com>,
Dmitry Torokhov <dmitry.torokhov@...il.com>
Subject: Re: [PATCH v5 7/7] iommu/exynos: Use device dependency links to
control runtime pm
On Tue, Nov 08, 2016 at 08:27:12AM +0100, Marek Szyprowski wrote:
> On 2016-11-07 22:47, Luis R. Rodriguez wrote:
> > If so
> > why? If this issue is present also on systems that only use ACPI is
> > this possibly due to an ACPI firmware bug or the lack of some semantics
> > in ACPI to express ordering in a better way? If the issue is device
> > tree related only is this due to the lack of semantics in device tree
> > to express some more complex dependency ?
>
> The main feature of device links that is used in this patch is enabling
> runtime pm dependency between Exynos SYSMMU controller (called it client
> device) and the device, for which it implements DMA address translation
> (called master device). The assumptions are following:
> 1. master device driver is completely unaware of the Exynos SYSMMU presence,
> IOMMU is transparently hooked up and managed by DMA-mapping framework
> 2. SYSMMU belongs to the same power domain as it's master device
> 3. SYSMMU is optional, master device can fully operate without it, with
> simple DMA address translation (DMA address == physical address)
> 4. Master device implements runtime pm, what in turn causes respective
> power domain to be turned on/off
> 5. DMA-mapping and IOMMU frameworks provides no calls to notify SYSMMU
> when its master device is performing DMA operations, so SYSMMU has
> to be runtime active
> 6. Currently SYSMMU always sets its runtime pm status to active after
> attaching to its master device to ensure proper hardware state. This
> prevents power domain to be turned off, even when master device sets
> its runtime pm status to suspended.
> 7. Exynos SYSMMU has to be runtime active at the same time when its
> master device is runtime active to it to perform DMA operations and
> allow the power domain to be turned off, when master device is
> runtime suspended.
> 8. The terms of device links, Exynos SYSMMU is a 'consumer' and master
> device is a 'supplier'.
You seem to have mixed up the consumer and supplier in point 8 above.
Your code is such that the SYSMMU is the supplier and the master device
is the consumer:
device_link_add(dev, data->sysmmu, DL_FLAG_PM_RUNTIME);
Prototype of device_link_add:
struct device_link *device_link_add(struct device *consumer,
struct device *supplier,
u32 flags);
Your code is correct, only point 8 above is wrong.
Best regards,
Lukas
Powered by blists - more mailing lists