Message ID | 20170411153022.8962-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Apr 11, 2017 at 04:30:22PM +0100, Chris Wilson wrote: > In places, we assume that RCS exists. This has been true forever, but > let us catch this failure during bringup by adding an explicit check > that we do have an RCS engine. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/intel_engine_cs.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 71e89a93fe18..3595209d86cf 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -154,9 +154,9 @@ int intel_engines_init_early(struct drm_i915_private *dev_priv) > { > struct intel_device_info *device_info = mkwrite_device_info(dev_priv); > unsigned int ring_mask = INTEL_INFO(dev_priv)->ring_mask; If there's buy in for this check, can I make this const ring_mask? -Chris
On Tue, Apr 11, 2017 at 04:30:22PM +0100, Chris Wilson wrote: > In places, we assume that RCS exists. This has been true forever, but > let us catch this failure during bringup by adding an explicit check > that we do have an RCS engine. Note that some might argue that I'm using the RCS engine as a proxy for a missing dev_priv->gt function table... You know who you are! -Chris
On 11/04/2017 16:30, Chris Wilson wrote: > In places, we assume that RCS exists. This has been true forever, but > let us catch this failure during bringup by adding an explicit check > that we do have an RCS engine. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/intel_engine_cs.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 71e89a93fe18..3595209d86cf 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -154,9 +154,9 @@ int intel_engines_init_early(struct drm_i915_private *dev_priv) > { > struct intel_device_info *device_info = mkwrite_device_info(dev_priv); > unsigned int ring_mask = INTEL_INFO(dev_priv)->ring_mask; > - unsigned int mask = 0; > struct intel_engine_cs *engine; > enum intel_engine_id id; > + unsigned int mask = 0; +/- 0 :) > unsigned int i; > int err; > > @@ -183,6 +183,12 @@ int intel_engines_init_early(struct drm_i915_private *dev_priv) > if (WARN_ON(mask != ring_mask)) > device_info->ring_mask = mask; > > + /* We always presume we have at least RCS available for probing */ > + if (WARN_ON(!(mask & ENGINE_MASK(RCS)))) { No idea why would you want this. You could also just use HAS_ENGINE since info->ring_mask is up to date by this point. And you can make ring_mask const if it makes any difference. :) Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko > + err = -ENODEV; > + goto cleanup; > + } > + > device_info->num_rings = hweight32(mask); > > return 0; >
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c index 71e89a93fe18..3595209d86cf 100644 --- a/drivers/gpu/drm/i915/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/intel_engine_cs.c @@ -154,9 +154,9 @@ int intel_engines_init_early(struct drm_i915_private *dev_priv) { struct intel_device_info *device_info = mkwrite_device_info(dev_priv); unsigned int ring_mask = INTEL_INFO(dev_priv)->ring_mask; - unsigned int mask = 0; struct intel_engine_cs *engine; enum intel_engine_id id; + unsigned int mask = 0; unsigned int i; int err; @@ -183,6 +183,12 @@ int intel_engines_init_early(struct drm_i915_private *dev_priv) if (WARN_ON(mask != ring_mask)) device_info->ring_mask = mask; + /* We always presume we have at least RCS available for probing */ + if (WARN_ON(!(mask & ENGINE_MASK(RCS)))) { + err = -ENODEV; + goto cleanup; + } + device_info->num_rings = hweight32(mask); return 0;
In places, we assume that RCS exists. This has been true forever, but let us catch this failure during bringup by adding an explicit check that we do have an RCS engine. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/intel_engine_cs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)