On Tue, Jul 03, 2012 at 03:57:32PM -0300, Paulo Zanoni wrote: > From: Paulo Zanoni <paulo.r.zanoni at intel.com> > > Previously we had has_pch_split to tell us whether we had a PCH or not > and we also had dev_priv->pch_type to tell us which kind of PCH it > was, but it could only be used if we were 100% sure we did have a PCH. > Now that PCH_NONE was added to dev_priv->pch_type we don't need > has_pch_split anymore: we can just check for pch_type != PCH_NONE. > > The HAS_PCH_{IBX,CPT,LPT} macros use dev_priv->pch_type, so they can > only be called after intel_detect_pch. The HAS_PCH_SPLIT macro looks > at dev_priv->info->has_pch_split, which is available earlier. > > Since the goal is to implement HAS_PCH_SPLIT using dev_priv->pch_type > instead of dev_priv->info->has_pch_split, we need to make sure that > intel_detect_pch is called before any calls to HAS_PCH_SPLIT are made. > So we moved the intel_detect_pch call to an earlier stage. > > Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com> > --- > drivers/gpu/drm/i915/i915_dma.c | 5 +++-- > drivers/gpu/drm/i915/i915_drv.c | 8 -------- > drivers/gpu/drm/i915/i915_drv.h | 3 +-- > 3 files changed, 4 insertions(+), 12 deletions(-) > > This patch does not solve any real problem: it's just a "suggestion" > of something we could do after the previous patch. Some people may > argue that looking at the has_pch_split variable might make it easier > for us to find out which machines actually have a pch split without > running the machine. So I really won't complain if we don't accept > this patch: patch 01 is the important one. > > diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c > index 2166519..f8bc9ea 100644 > --- a/drivers/gpu/drm/i915/i915_dma.c > +++ b/drivers/gpu/drm/i915/i915_dma.c > @@ -1547,6 +1547,9 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) > goto out_mtrrfree; > } > > + /* This must be called before any calls to HAS_PCH_* */ > + intel_detect_pch(dev); > + Hm, what about defining PCH_NONE as -1, PCH_RESERVED as 0 and then adding a WARN_ON(dev_priv->pch_type == PCH_RESERVED)? detect_pch is called unconditionally, and that way we would catch this. Might be overkill otoh, so if you think this is not worth it, np. -Daniel > intel_irq_init(dev); > > /* Try to make sure MCHBAR is enabled before poking at it */ > @@ -1599,8 +1602,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) > /* Start out suspended */ > dev_priv->mm.suspended = 1; > > - intel_detect_pch(dev); > - > if (drm_core_check_feature(dev, DRIVER_MODESET)) { > ret = i915_load_modeset_init(dev); > if (ret < 0) { > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 7d0eb82..1794833 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -225,7 +225,6 @@ static const struct intel_device_info intel_ironlake_d_info = { > .gen = 5, > .need_gfx_hws = 1, .has_hotplug = 1, > .has_bsd_ring = 1, > - .has_pch_split = 1, > }; > > static const struct intel_device_info intel_ironlake_m_info = { > @@ -233,7 +232,6 @@ static const struct intel_device_info intel_ironlake_m_info = { > .need_gfx_hws = 1, .has_hotplug = 1, > .has_fbc = 1, > .has_bsd_ring = 1, > - .has_pch_split = 1, > }; > > static const struct intel_device_info intel_sandybridge_d_info = { > @@ -242,7 +240,6 @@ static const struct intel_device_info intel_sandybridge_d_info = { > .has_bsd_ring = 1, > .has_blt_ring = 1, > .has_llc = 1, > - .has_pch_split = 1, > .has_force_wake = 1, > }; > > @@ -253,7 +250,6 @@ static const struct intel_device_info intel_sandybridge_m_info = { > .has_bsd_ring = 1, > .has_blt_ring = 1, > .has_llc = 1, > - .has_pch_split = 1, > .has_force_wake = 1, > }; > > @@ -263,7 +259,6 @@ static const struct intel_device_info intel_ivybridge_d_info = { > .has_bsd_ring = 1, > .has_blt_ring = 1, > .has_llc = 1, > - .has_pch_split = 1, > .has_force_wake = 1, > }; > > @@ -274,7 +269,6 @@ static const struct intel_device_info intel_ivybridge_m_info = { > .has_bsd_ring = 1, > .has_blt_ring = 1, > .has_llc = 1, > - .has_pch_split = 1, > .has_force_wake = 1, > }; > > @@ -302,7 +296,6 @@ static const struct intel_device_info intel_haswell_d_info = { > .has_bsd_ring = 1, > .has_blt_ring = 1, > .has_llc = 1, > - .has_pch_split = 1, > .has_force_wake = 1, > }; > > @@ -312,7 +305,6 @@ static const struct intel_device_info intel_haswell_m_info = { > .has_bsd_ring = 1, > .has_blt_ring = 1, > .has_llc = 1, > - .has_pch_split = 1, > .has_force_wake = 1, > }; > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index b12e79a..89025ab 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -285,7 +285,6 @@ struct intel_device_info { > u8 is_crestline:1; > u8 is_ivybridge:1; > u8 is_valleyview:1; > - u8 has_pch_split:1; > u8 has_force_wake:1; > u8 is_haswell:1; > u8 has_fbc:1; > @@ -1113,13 +1112,13 @@ struct drm_i915_file_private { > #define HAS_PIPE_CXSR(dev) (INTEL_INFO(dev)->has_pipe_cxsr) > #define I915_HAS_FBC(dev) (INTEL_INFO(dev)->has_fbc) > > -#define HAS_PCH_SPLIT(dev) (INTEL_INFO(dev)->has_pch_split) > #define HAS_PIPE_CONTROL(dev) (INTEL_INFO(dev)->gen >= 5) > > #define INTEL_PCH_TYPE(dev) (((struct drm_i915_private *)(dev)->dev_private)->pch_type) > #define HAS_PCH_LPT(dev) (INTEL_PCH_TYPE(dev) == PCH_LPT) > #define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT) > #define HAS_PCH_IBX(dev) (INTEL_PCH_TYPE(dev) == PCH_IBX) > +#define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE) > > #define HAS_FORCE_WAKE(dev) (INTEL_INFO(dev)->has_force_wake) > > -- > 1.7.10.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Mail: daniel at ffwll.ch Mobile: +41 (0)79 365 57 48