Message ID | E3ED5BF57CCD1C40876FA2D3385ED5D37B600DE1@SHSMSX101.ccr.corp.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 29 Mar 2018, "Shi, Yang A" <yang.a.shi@intel.com> wrote: > snd_hdac driver would use the component interface from i915 driver. > if i915 driver do the audio component intialization too late, snd_hdac > driver will meet ipanic. Please include the oops. What is it about this patch that fixes the issue? Based on the description I presume it has nothing to do with i915 internal ordering, and everything to do with i915 and hdac probe racing. In that case, this is not a fix, just something to make the race a bit less likely. Is that the case? We try hard to make sure our driver has properly been set up internally before we go ahead and reveal ourselves to the userspace and the rest of the kernel. This is the i915_driver_register() part. We aren't ready to register the component ops before that. We aren't ready to handle calls from audio drivers before that. What's the problem you have exactly? BR, Jani. > > Signed-off-by: Bo He <bo.he@intel.com> > Signed-off-by: Yang Shi <yang.a.shi@intel.com> > --- > drivers/gpu/drm/i915/i915_drv.c | 2 -- > drivers/gpu/drm/i915/intel_display.c | 2 ++ > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 2f5209d..9d25d7e 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -1243,8 +1243,6 @@ static void i915_driver_register(struct drm_i915_private *dev_priv) > if (IS_GEN5(dev_priv)) > intel_gpu_ips_init(dev_priv); > > - intel_audio_init(dev_priv); > - > /* > * Some ports require correctly set-up hpd registers for detection to > * work properly (leading to ghost connected connector status), e.g. VGA > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index f288bcc..a471c88 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -14468,6 +14468,8 @@ int intel_modeset_init(struct drm_device *dev) > > dev->mode_config.funcs = &intel_mode_funcs; > > + intel_audio_init(dev_priv); > + > init_llist_head(&dev_priv->atomic_helper.free_list); > INIT_WORK(&dev_priv->atomic_helper.free_work, > intel_atomic_helper_free_state_worker);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 2f5209d..9d25d7e 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -1243,8 +1243,6 @@ static void i915_driver_register(struct drm_i915_private *dev_priv) if (IS_GEN5(dev_priv)) intel_gpu_ips_init(dev_priv); - intel_audio_init(dev_priv); - /* * Some ports require correctly set-up hpd registers for detection to * work properly (leading to ghost connected connector status), e.g. VGA diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index f288bcc..a471c88 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -14468,6 +14468,8 @@ int intel_modeset_init(struct drm_device *dev) dev->mode_config.funcs = &intel_mode_funcs; + intel_audio_init(dev_priv); + init_llist_head(&dev_priv->atomic_helper.free_list); INIT_WORK(&dev_priv->atomic_helper.free_work, intel_atomic_helper_free_state_worker);