public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
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: Tue, 15 Mar 2016 15:30:55 +0200	[thread overview]
Message-ID: <20160315133055.GT4329@intel.com> (raw)
In-Reply-To: <20160315083526.GU14170@phenom.ffwll.local>

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.

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2016-03-15 13:31 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ä [this message]
2016-03-16 16:43                 ` Ville Syrjälä
2016-03-21  8:35                   ` Daniel Vetter
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=20160315133055.GT4329@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=broonie@kernel.org \
    --cc=daniel@ffwll.ch \
    --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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox