All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: mengdong.lin@linux.intel.com, tiwai@suse.de,
	intel-gfx@lists.freedesktop.org, liam.r.girdwood@linux.intel.com,
	vinod.koul@intel.com, broonie@kernel.org,
	rakesh.a.ughreja@intel.com,
	David Henningsson <david.henningsson@canonical.com>
Subject: Re: [RFC 04/15] drm/i915: Add headers for non-HDAudio HDMI interface
Date: Mon, 21 Mar 2016 09:35:15 +0100	[thread overview]
Message-ID: <20160321083515.GA28483@phenom.ffwll.local> (raw)
In-Reply-To: <20160316164338.GR4329@intel.com>

On Wed, Mar 16, 2016 at 06:43:38PM +0200, Ville Syrjälä wrote:
> On Tue, Mar 15, 2016 at 03:30:55PM +0200, Ville Syrjälä wrote:
> > On Tue, Mar 15, 2016 at 09:35:26AM +0100, Daniel Vetter wrote:
> > > On Mon, Mar 14, 2016 at 04:20:19PM +0200, Ville Syrjälä wrote:
> > > > On Mon, Mar 14, 2016 at 10:04:00AM +0100, Daniel Vetter wrote:
> > > > > On Fri, Mar 11, 2016 at 09:09:12PM +0200, Ville Syrjälä wrote:
> > > > > > On Fri, Mar 11, 2016 at 11:27:13AM -0600, Pierre-Louis Bossart wrote:
> > > > > > > Thanks for the review Ville
> > > > > > > 
> > > > > > > [snip]
> > > > > > > 
> > > > > > > > Kinda hard to see where everything gets used due to the way the patches
> > > > > > > > are split up.
> > > > > > > 
> > > > > > > Yes, it's far from great...
> > > > > > > 
> > > > > > > > At least the hotplug/mode change events are not needed. We only have the
> > > > > > > > two points where i915 should inform the audio driver about this stuff,
> > > > > > > > and those are the intel_audio_code_enable/disable(). For that we
> > > > > > > > already have the .pin_eld_notify() hook.
> > > > > > > >
> > > > > > > > The interrupt stuff should mostly vanish from i915 with the subdevice
> > > > > > > > approach. As in i915 would just call the interrupt handler of the audio
> > > > > > > > driver based on the LPE bits in IIR, and the audio driver can then do
> > > > > > > > whatever it wants based on its own status register.
> > > > > > > 
> > > > > > > Are you saying that the subdevice would provide a read/write interface 
> > > > > > > for the audio driver to look at display registers, and the i915 driver 
> > > > > > > would only provide a notification interface (EDID and interrupts) to the 
> > > > > > > audio driver?
> > > > > > 
> > > > > > The audio driver would simply ioremap the appropriate range of
> > > > > > registers itself.
> > > > > > 
> > > > > > > If yes, would there be two component framework links, one between 
> > > > > > > i915/audio driver and one between subdevice/audio driver.
> > > > > > 
> > > > > > Yeah sort of. i915 registers the platform device for the audio, the
> > > > > > audio driver can then bind to the device via the platform driver .probe
> > > > > > callback. It can then register with the audio component stuff at some
> > > > > > point to get the relevant notifications on the display state. When
> > > > > > i915 gets unloaded we remove the platform device, at which point the
> > > > > > audio driver's platform driver .remove() callback gets invoked and
> > > > > > it should unregister/cleanup everything.
> > > > > > 
> > > > > > I just tried to frob around with the VED code a bit, and got it to load
> > > > > > at least. It's not quite happy about reloading i915 while the ipvr
> > > > > > driver was loaded though. Not sure what's going on there, but I do
> > > > > > think this approach should work. So the VED patch could serve as a
> > > > > > decent enough model to follow.
> > > > > 
> > > > > platform devices registerd by modules are apparently inherently racy and
> > > > > in an unfixable way. At least I remember something like that from VED
> > > > > discussion.
> > > > > 
> > > > > In short you _must_ unload VED manually before unloading i915, or it all
> > > > > goes boom. If this is the only thing that went boom it's acceptable.
> > > > 
> > > > VED goes boom due drm_global_mutex deadlock at least if you load
> > > > i915 while ipvr is already loaded. I didn't check to hard if there
> > > > were any booms on pure unload so far.
> > > 
> > > Oh right another boom that happened, but can be avoided by dropping the
> > > ->load callback and directly calling drm_dev_alloc/register. Shouldn't be
> > > a problem with a non-drm driver though.
> > > 
> > > > Anyways, I was a bit worried about the races so I did a pair of 
> > > > small test modules to try out this model, and to me it looked to
> > > > work so far. I just unregistered the platform device from the parent
> > > > pci driver .remove() hook, and it got blocked until the platform
> > > > driver's .remove() hook was done.
> > > > 
> > > > In any case if this is broken, then I assume mfd must be broken. And
> > > > that thing is at least used quite extensively.
> > > 
> > > Hm, I don't remember the exact details, but iirc the problem was that the
> > > struct device is refcounted, but you can't add a module ref for the vtable
> > > is has (specifically the final release method) since that would result in
> > > a ref-loop. Usually it works, but if someone keeps the device alive
> > > (through sysfs or whatever) and you manage to unload everything before
> > > that last ref gets dropped it goes boom.
> > > 
> > > So "works", but not in a safe way.
> > 
> > I was worried that it's something like that. I guess I'll need to try
> > grab a ref on something in my test module and see how it fares.
> 
> At least a sysfs attribute on the child device didn't cause any
> explosions in my tests. I slept for a while in the sysfs store function,
> and while doing that removed the module for the parent device. The
> platform_device_unregister() in the parent .remove() blocked until the
> sysfs store was done.

Hm, maybe it's been fixed by now, that discussion about platform devices
created by modules was a while ago.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2016-03-21  8:34 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-05  2:50 [RFC 00/15] HDMI Audio support on Atom w/o HDAUdio Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 01/15] drm: i915: fix inversion of definitions for LPE_PIPE_A/B Pierre-Louis Bossart
2016-03-05 13:27   ` Ville Syrjälä
2016-03-07 18:00     ` Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 02/15] drm: i915: remove intel_hdmi variable declaration Pierre-Louis Bossart
2016-03-10 17:34   ` Ville Syrjälä
2016-03-11 17:08     ` Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 03/15] Doc: sound: add description of Atom HDMI audio interface Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 04/15] drm/i915: Add headers for non-HDAudio HDMI interface Pierre-Louis Bossart
2016-03-10 17:54   ` Ville Syrjälä
2016-03-10 18:00   ` Ville Syrjälä
2016-03-11 17:27     ` Pierre-Louis Bossart
2016-03-11 19:09       ` Ville Syrjälä
2016-03-14  9:04         ` Daniel Vetter
2016-03-14 14:20           ` Ville Syrjälä
2016-03-15  8:35             ` Daniel Vetter
2016-03-15 13:30               ` Ville Syrjälä
2016-03-16 16:43                 ` Ville Syrjälä
2016-03-21  8:35                   ` Daniel Vetter [this message]
2016-03-15  8:36           ` Daniel Vetter
2016-03-14 15:13         ` Pierre-Louis Bossart
2016-03-14 15:21           ` Ville Syrjälä
2016-03-14 15:30             ` Ville Syrjälä
2016-03-14 17:27               ` Pierre-Louis Bossart
2016-03-15  8:39                 ` Daniel Vetter
2016-03-15 13:35                   ` Ville Syrjälä
2016-03-15 13:43                     ` Daniel Vetter
2016-03-15 16:21                     ` Vinod Koul
2016-03-15 21:14                       ` Pierre-Louis Bossart
2016-03-16  3:09                         ` Vinod Koul
2016-03-05  2:50 ` [RFC 05/15] drm/i915: changes " Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 06/15] drm/i915: power-related changes " Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 07/15] drm/i915: Add API code for " Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 08/15] drm/i915: enable non-HDAudio HDMI interface Makefile Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 09/15] ALSA: Intel: Atom: add Atom non-HDAudio HDMI interface Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 10/15] add dependency on PM_RUNTIME Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 11/15] hdmi_audio: Improve position reporting Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 12/15] hdmi_audio: Fixup some monitor Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 13/15] hdmi_audio: Fix mishandling of AUD_HDMI_STATUS_v2 register Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 14/15] i915: Enable LPE_PIPEA_Interrupt Pierre-Louis Bossart
2016-03-05  2:50 ` [RFC 15/15] i915: Fix typo in comment Pierre-Louis Bossart
2016-03-05 13:42 ` [RFC 00/15] HDMI Audio support on Atom w/o HDAUdio Ville Syrjälä
2016-03-07 17:54   ` Pierre-Louis Bossart
2016-03-07 18:02     ` Ville Syrjälä
2016-03-07 18:12       ` Pierre-Louis Bossart
2016-03-07 18:29         ` Ville Syrjälä
2016-03-07 12:04 ` ✗ Fi.CI.BAT: failure for " Patchwork

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=20160321083515.GA28483@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=broonie@kernel.org \
    --cc=david.henningsson@canonical.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=mengdong.lin@linux.intel.com \
    --cc=rakesh.a.ughreja@intel.com \
    --cc=tiwai@suse.de \
    --cc=ville.syrjala@linux.intel.com \
    --cc=vinod.koul@intel.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 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.