From: Mauro Carvalho Chehab <m.chehab@samsung.com>
To: Shuah Khan <shuahkhan@gmail.com>
Cc: ksummit-discuss@lists.linuxfoundation.org
Subject: Re: [Ksummit-discuss] [TECH TOPIC] PM dependencies
Date: Sun, 18 May 2014 12:42:09 -0300 [thread overview]
Message-ID: <20140518124209.6b6ebb63.m.chehab@samsung.com> (raw)
In-Reply-To: <CAKocOOMk-jVW9-M+6SOzAJ3-6-i-5TWwLmQE6CRqf7tFGTM=jw@mail.gmail.com>
Em Mon, 12 May 2014 11:51:54 -0600
Shuah Khan <shuahkhan@gmail.com> escreveu:
> On Mon, May 12, 2014 at 11:43 AM, Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
> > Hello,
> >
> > On modern systems many PM dependencies don't follow the Linux kernel device
> > model based on parent-child relationships from a control bus point of view.
> > For instance a GPU will need the IOMMU that services its memory requests to be
> > powered on to perform DMA operations.
> >
> > Ad-hoc solutions with subsystem-specific or even driver-specific APIs have
> > been implemented (see omap_iommu_save_ctx and omap_iommu_restore_ctx in
> > include/linux/omap-iommu.h for instance, that push the burden of saving and
> > restoring the IOMMU registers to bus master drivers), but they make automatic
> > handling of hardware resources difficult. In the IOMMU case again, the goal is
> > to hide IOMMU handling inside the DMA mapping API and make its usage
> > completely transparent to bus master drivers in most of the cases. An IOMMU-
> > specific API to explicitly control IOMMU power from the bus master driver
> > would make that goal impossible to reach.
> >
> > The problem is not limited to IOMMUs. We have similar dependencies at
> > suspend/resume time with camera interfaces for instance, where two completely
> > unrelated device in the Linux device hierarchy (a camera interface platform
> > device in the SoC and an I2C camera sensor) need to be suspended and resumed
> > in a controlled order. I'm sure many more use cases exist.
>
> We discussed this topic briefly at the Media Mini-summit. I looking
> into similar
> use-cases in media devices. Suspend/resume of a tuner for example should only
> be done once as opposed multiple times by drivers that think they have exclusive
> access to the tuner on a media device.
>
> I am interested in this discussion and would like to participate.
> Requesting nomination.
PM on media devices is very complex, and this is broken since... ever.
From time to time, someone comes with some patch that fixes it for some
specific drivers, but, after some Kernel cycles, things get broken
again, because the approach taken by those patches were to add a logic
inside the specific PCI (or USB) bridge driver that simply unbinds
all other drivers at suspend, and re-initialize all of them at resume.
Since the end of last year, both me and Shuah are working together in
order to find some strategies to fix it.
One of the problems with media devices is that they are typically multi
function devices that share some resources on very complex ways. So,
both suspend and resume operations should be serialized in a way that
will warrant that the devices internal clocks, GPIOs, I2C buses, I2C,
switches, IOMMUs etc are initialized before talking to each component
of the hardware that depends on it.
On several such hardware, there are components that are optional, like
IR receivers, IR transmitters, etc, and are only known to be available
at probe time.
Also, some devices like hybrid TV ones disables part of the hardware
when in usage, as they can't typically stream analog TV (V4L2 API and
v4l subsystem) while an ATSC stream is displayed (DVB API and dvb
subsystem).
In other words, the driver would need to build a PM dependency tree
in probe time, adjusting it in runtime, depending on what sub-devices
are in use, in order to assure that the stream will continue being
played after resume.
I'd like to nominate myself and Shuah for this topic.
next prev parent reply other threads:[~2014-05-18 15:42 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-12 17:43 Laurent Pinchart
2014-05-12 17:51 ` Shuah Khan
2014-05-18 15:42 ` Mauro Carvalho Chehab [this message]
2014-05-12 18:09 ` Tomasz Figa
2014-05-12 20:14 ` Mark Brown
2014-05-12 20:27 ` Laurent Pinchart
2014-05-12 20:31 ` Mark Brown
2014-05-12 21:16 ` Tomasz Figa
2014-05-12 22:07 ` Mark Brown
2014-05-13 7:43 ` Daniel Vetter
2014-05-13 10:31 ` Laurent Pinchart
2014-05-13 14:26 ` Shuah Khan
2014-05-15 23:43 ` Laurent Pinchart
2014-05-19 1:00 ` Shuah Khan
2014-05-19 7:30 ` Geert Uytterhoeven
2014-05-13 22:27 ` Rafael J. Wysocki
2014-05-13 22:34 ` Rafael J. Wysocki
2014-05-14 12:59 ` Rafael J. Wysocki
2014-05-15 23:34 ` Laurent Pinchart
2014-05-20 16:57 ` Kevin Hilman
2014-05-20 18:51 ` Mark Brown
2014-05-21 9:26 ` Ulf Hansson
2014-05-21 11:16 ` Geert Uytterhoeven
2014-05-22 0:19 ` Rafael J. Wysocki
2014-05-22 10:14 ` Mark Brown
2014-05-23 23:15 ` Rafael J. Wysocki
2014-05-24 10:53 ` Mark Brown
2014-05-25 12:56 ` Rafael J. Wysocki
2014-05-22 17:35 ` Kevin Hilman
2014-05-23 23:26 ` Rafael J. Wysocki
2014-05-23 0:18 ` Laurent Pinchart
2014-05-23 0:39 ` Kevin Hilman
2014-05-23 8:32 ` Linus Walleij
2014-05-23 15:26 ` Kevin Hilman
2014-05-24 0:13 ` Rafael J. Wysocki
2014-05-24 0:08 ` Rafael J. Wysocki
2014-05-26 14:30 ` Peter De Schrijver
2014-05-23 8:25 ` Linus Walleij
2014-05-23 9:10 ` Ulf Hansson
2014-05-24 0:00 ` Rafael J. Wysocki
2014-05-15 22:45 ` Laurent Pinchart
2014-05-14 21:08 ` Kevin Hilman
2014-05-14 12:11 ` Rafael J. Wysocki
2014-05-14 11:57 ` Mark Brown
2014-05-14 12:32 ` Rafael J. Wysocki
2014-05-14 15:14 ` Mark Brown
2014-05-14 15:26 ` Laurent Pinchart
2014-05-14 15:40 ` Mark Brown
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=20140518124209.6b6ebb63.m.chehab@samsung.com \
--to=m.chehab@samsung.com \
--cc=ksummit-discuss@lists.linuxfoundation.org \
--cc=shuahkhan@gmail.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