All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: "Bharadiya\,Pankaj" <pankaj.laxminarayan.bharadiya@intel.com>
Cc: pankaj.laxminaryan.bharadiya@outlook.iglb.intel.com,
	David Airlie <airlied@linux.ie>,
	intel-gfx@lists.freedesktop.org, sudeep.dutt@intel.com,
	dri-devel@lists.freedesktop.org,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	sam@ravnborg.org, Zhi Wang <zhi.a.wang@intel.com>
Subject: Re: [Intel-gfx] [PATCH 2/6] drm/i915: add helper functions to get device ptr
Date: Tue, 14 Jan 2020 09:51:29 +0200	[thread overview]
Message-ID: <87o8v6jx1a.fsf@intel.com> (raw)
In-Reply-To: <20200113183158.GA739@plaxmina-desktop.iind.intel.com>

On Tue, 14 Jan 2020, "Bharadiya,Pankaj" <pankaj.laxminarayan.bharadiya@intel.com> wrote:
> Hi Jani, 
>
> On Mon, Jan 13, 2020 at 02:14:51PM +0200, Jani Nikula wrote:
>> On Mon, 13 Jan 2020, Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com> wrote:
>> > We will need struct drm_device pointer to pass it to drm_WARN* calls.
>> >
>> > Add helper functions to exract drm_device pointer from various structs.
>> 
>> Please don't do this.
>> 
>> We use the helpers we currently have when they involve something more
>> complex than dereferences, such as container_of() or having to use
>> dev_get_drvdata() or pci_get_drvdata().
>
> Removing all the helpers will lead to 3 level access depth wherever
> struct drm_device pointer is needed and unnecessary complicate the
> drm_WARN* calls IMHO.
>
> e.g.: drm_WARN(&vgpu->gvt->dev_priv.drm, 1)
>
> If you are OK with this, I will remove all the helpers and extract
> drm_device pointer while calling drm_WARN*() instead and submit
> updated patch series.

At times you may need to add local variables for struct drm_i915_private
*i915. But I'd rather have that than the helpers.

BR,
Jani.



>
> Thanks,
> Pankaj
>> 
>> I really don't want people to use e.g.
>> 
>> 	i915_to_dev(i915)
>> 
>> over
>> 
>> 	&i915->drm
>> 
>> 
>> BR,
>> Jani.
>> 
>> >
>> > Signed-off-by: Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/display/intel_display_types.h | 14 ++++++++++++++
>> >  drivers/gpu/drm/i915/gvt/gvt.h                     |  5 +++++
>> >  drivers/gpu/drm/i915/i915_drv.h                    | 11 +++++++++++
>> >  3 files changed, 30 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
>> > index 7964b3dc0046..765878718fe9 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
>> > @@ -1521,6 +1521,20 @@ dp_to_i915(struct intel_dp *intel_dp)
>> >  	return to_i915(dp_to_dig_port(intel_dp)->base.base.dev);
>> >  }
>> >  
>> > +static inline struct drm_device *enc_to_dev(const struct intel_encoder *encoder)
>> > +{
>> > +	return encoder->base.dev;
>> > +}
>> > +
>> > +static inline struct drm_device *
>> > +crtc_state_to_dev(const struct intel_crtc_state *state)
>> > +{
>> > +	struct intel_crtc *crtc = to_intel_crtc(state->uapi.crtc);
>> > +	struct drm_i915_private *i915 = to_i915(crtc->base.dev);
>> > +
>> > +	return i915_to_dev(i915);
>> > +}
>> > +
>> >  static inline struct intel_digital_port *
>> >  hdmi_to_dig_port(struct intel_hdmi *intel_hdmi)
>> >  {
>> > diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h
>> > index b47c6acaf9c0..d257399b075a 100644
>> > --- a/drivers/gpu/drm/i915/gvt/gvt.h
>> > +++ b/drivers/gpu/drm/i915/gvt/gvt.h
>> > @@ -348,6 +348,11 @@ static inline struct intel_gvt *to_gvt(struct drm_i915_private *i915)
>> >  	return i915->gvt;
>> >  }
>> >  
>> > +static inline struct drm_device *vgpu_to_dev(const struct intel_vgpu *vgpu)
>> > +{
>> > +	return i915_to_dev(vgpu->gvt->dev_priv);
>> > +}
>> > +
>> >  enum {
>> >  	INTEL_GVT_REQUEST_EMULATE_VBLANK = 0,
>> >  
>> > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>> > index e7be4c3e43c6..bdc89d021ff8 100644
>> > --- a/drivers/gpu/drm/i915/i915_drv.h
>> > +++ b/drivers/gpu/drm/i915/i915_drv.h
>> > @@ -1325,6 +1325,17 @@ static inline struct drm_i915_private *pdev_to_i915(struct pci_dev *pdev)
>> >  	return pci_get_drvdata(pdev);
>> >  }
>> >  
>> > +static inline struct drm_device *i915_to_dev(struct drm_i915_private *i915)
>> > +{
>> > +	return &i915->drm;
>> > +}
>> > +
>> > +static inline struct drm_device *
>> > +perf_stream_to_dev(const struct i915_perf_stream *stream)
>> > +{
>> > +	return i915_to_dev(stream->perf->i915);
>> > +}
>> > +
>> >  /* Simple iterator over all initialised engines */
>> >  #define for_each_engine(engine__, dev_priv__, id__) \
>> >  	for ((id__) = 0; \
>> 
>> -- 
>> Jani Nikula, Intel Open Source Graphics Center

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@intel.com>
To: "Bharadiya\,Pankaj" <pankaj.laxminarayan.bharadiya@intel.com>
Cc: pankaj.laxminaryan.bharadiya@outlook.iglb.intel.com,
	David Airlie <airlied@linux.ie>,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	sam@ravnborg.org
Subject: Re: [Intel-gfx] [PATCH 2/6] drm/i915: add helper functions to get device ptr
Date: Tue, 14 Jan 2020 09:51:29 +0200	[thread overview]
Message-ID: <87o8v6jx1a.fsf@intel.com> (raw)
In-Reply-To: <20200113183158.GA739@plaxmina-desktop.iind.intel.com>

On Tue, 14 Jan 2020, "Bharadiya,Pankaj" <pankaj.laxminarayan.bharadiya@intel.com> wrote:
> Hi Jani, 
>
> On Mon, Jan 13, 2020 at 02:14:51PM +0200, Jani Nikula wrote:
>> On Mon, 13 Jan 2020, Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com> wrote:
>> > We will need struct drm_device pointer to pass it to drm_WARN* calls.
>> >
>> > Add helper functions to exract drm_device pointer from various structs.
>> 
>> Please don't do this.
>> 
>> We use the helpers we currently have when they involve something more
>> complex than dereferences, such as container_of() or having to use
>> dev_get_drvdata() or pci_get_drvdata().
>
> Removing all the helpers will lead to 3 level access depth wherever
> struct drm_device pointer is needed and unnecessary complicate the
> drm_WARN* calls IMHO.
>
> e.g.: drm_WARN(&vgpu->gvt->dev_priv.drm, 1)
>
> If you are OK with this, I will remove all the helpers and extract
> drm_device pointer while calling drm_WARN*() instead and submit
> updated patch series.

At times you may need to add local variables for struct drm_i915_private
*i915. But I'd rather have that than the helpers.

BR,
Jani.



>
> Thanks,
> Pankaj
>> 
>> I really don't want people to use e.g.
>> 
>> 	i915_to_dev(i915)
>> 
>> over
>> 
>> 	&i915->drm
>> 
>> 
>> BR,
>> Jani.
>> 
>> >
>> > Signed-off-by: Pankaj Bharadiya <pankaj.laxminarayan.bharadiya@intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/display/intel_display_types.h | 14 ++++++++++++++
>> >  drivers/gpu/drm/i915/gvt/gvt.h                     |  5 +++++
>> >  drivers/gpu/drm/i915/i915_drv.h                    | 11 +++++++++++
>> >  3 files changed, 30 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
>> > index 7964b3dc0046..765878718fe9 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
>> > @@ -1521,6 +1521,20 @@ dp_to_i915(struct intel_dp *intel_dp)
>> >  	return to_i915(dp_to_dig_port(intel_dp)->base.base.dev);
>> >  }
>> >  
>> > +static inline struct drm_device *enc_to_dev(const struct intel_encoder *encoder)
>> > +{
>> > +	return encoder->base.dev;
>> > +}
>> > +
>> > +static inline struct drm_device *
>> > +crtc_state_to_dev(const struct intel_crtc_state *state)
>> > +{
>> > +	struct intel_crtc *crtc = to_intel_crtc(state->uapi.crtc);
>> > +	struct drm_i915_private *i915 = to_i915(crtc->base.dev);
>> > +
>> > +	return i915_to_dev(i915);
>> > +}
>> > +
>> >  static inline struct intel_digital_port *
>> >  hdmi_to_dig_port(struct intel_hdmi *intel_hdmi)
>> >  {
>> > diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h
>> > index b47c6acaf9c0..d257399b075a 100644
>> > --- a/drivers/gpu/drm/i915/gvt/gvt.h
>> > +++ b/drivers/gpu/drm/i915/gvt/gvt.h
>> > @@ -348,6 +348,11 @@ static inline struct intel_gvt *to_gvt(struct drm_i915_private *i915)
>> >  	return i915->gvt;
>> >  }
>> >  
>> > +static inline struct drm_device *vgpu_to_dev(const struct intel_vgpu *vgpu)
>> > +{
>> > +	return i915_to_dev(vgpu->gvt->dev_priv);
>> > +}
>> > +
>> >  enum {
>> >  	INTEL_GVT_REQUEST_EMULATE_VBLANK = 0,
>> >  
>> > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>> > index e7be4c3e43c6..bdc89d021ff8 100644
>> > --- a/drivers/gpu/drm/i915/i915_drv.h
>> > +++ b/drivers/gpu/drm/i915/i915_drv.h
>> > @@ -1325,6 +1325,17 @@ static inline struct drm_i915_private *pdev_to_i915(struct pci_dev *pdev)
>> >  	return pci_get_drvdata(pdev);
>> >  }
>> >  
>> > +static inline struct drm_device *i915_to_dev(struct drm_i915_private *i915)
>> > +{
>> > +	return &i915->drm;
>> > +}
>> > +
>> > +static inline struct drm_device *
>> > +perf_stream_to_dev(const struct i915_perf_stream *stream)
>> > +{
>> > +	return i915_to_dev(stream->perf->i915);
>> > +}
>> > +
>> >  /* Simple iterator over all initialised engines */
>> >  #define for_each_engine(engine__, dev_priv__, id__) \
>> >  	for ((id__) = 0; \
>> 
>> -- 
>> Jani Nikula, Intel Open Source Graphics Center

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2020-01-14  7:51 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-13 11:55 [Intel-gfx] [PATCH 0/6]: drm: Introduce struct drm_device based WARN* and use them in i915 Pankaj Bharadiya
2020-01-13 11:55 ` Pankaj Bharadiya
2020-01-13 11:55 ` [Intel-gfx] [PATCH 1/6] drm/print: introduce new struct drm_device based WARN* macros Pankaj Bharadiya
2020-01-13 11:55   ` Pankaj Bharadiya
2020-01-13 12:30   ` Jani Nikula
2020-01-13 12:30     ` Jani Nikula
2020-01-13 18:54   ` Sam Ravnborg
2020-01-13 18:54     ` Sam Ravnborg
2020-01-13 11:55 ` [Intel-gfx] [PATCH 2/6] drm/i915: add helper functions to get device ptr Pankaj Bharadiya
2020-01-13 11:55   ` Pankaj Bharadiya
2020-01-13 12:14   ` Jani Nikula
2020-01-13 12:14     ` Jani Nikula
2020-01-13 18:31     ` Bharadiya,Pankaj
2020-01-13 18:31       ` Bharadiya,Pankaj
2020-01-14  7:51       ` Jani Nikula [this message]
2020-01-14  7:51         ` Jani Nikula
2020-01-13 11:55 ` [Intel-gfx] [PATCH 3/6] drm/i915: Make WARN* drm specific where drm_device ptr available Pankaj Bharadiya
2020-01-13 11:55   ` Pankaj Bharadiya
2020-01-13 11:55 ` [Intel-gfx] [PATCH 4/6] drm/i915: Make WARN* drm specific where drm_priv ptr is available Pankaj Bharadiya
2020-01-13 11:55   ` Pankaj Bharadiya
2020-01-13 11:55 ` [Intel-gfx] [PATCH 5/6] drm/i915: Make WARN* drm specific where dev_priv can be extracted Pankaj Bharadiya
2020-01-13 11:55   ` Pankaj Bharadiya
2020-01-13 11:55 ` [Intel-gfx] [PATCH 6/6] drm/i915: Make WARN* drm specific for various cases Pankaj Bharadiya
2020-01-13 11:55   ` Pankaj Bharadiya
2020-01-13 12:33 ` [Intel-gfx] [PATCH 0/6]: drm: Introduce struct drm_device based WARN* and use them in i915 Jani Nikula
2020-01-13 12:33   ` Jani Nikula
2020-01-13 18:34   ` Bharadiya,Pankaj
2020-01-13 18:34     ` Bharadiya,Pankaj
2020-01-13 15:08 ` [Intel-gfx] ✗ Fi.CI.BUILD: 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=87o8v6jx1a.fsf@intel.com \
    --to=jani.nikula@intel.com \
    --cc=airlied@linux.ie \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=pankaj.laxminarayan.bharadiya@intel.com \
    --cc=pankaj.laxminaryan.bharadiya@outlook.iglb.intel.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=sam@ravnborg.org \
    --cc=sudeep.dutt@intel.com \
    --cc=zhi.a.wang@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.