[PATCH] drm/i915/pxp: fix non-optimised !CONFIG_DRM_I915_PXP build

Jani Nikula jani.nikula at linux.intel.com
Mon Nov 4 13:40:28 UTC 2024


On Mon, 04 Nov 2024, Jonathan Gray <jsg at jsg.id.au> wrote:
> On Mon, Nov 04, 2024 at 12:16:44PM +0200, Jani Nikula wrote:
>> On Sun, 03 Nov 2024, Jonathan Gray <jsg at jsg.id.au> wrote:
>> > intel_pxp_gsccs_is_ready_for_sessions() is gated by CONFIG_DRM_I915_PXP
>> > but called from intel_pxp.c which isn't.  Provide a fallback inline
>> > function to fix the non-optimised build.
>> 
>> What does this have to do with optimization? Isn't the build just plain
>> broken for PXP=n?
>
> With clang/lld 16 on OpenBSD with PXP=n, intel_pxp.o with -O0 has an
> undefined reference to intel_pxp_gsccs_is_ready_for_sessions,
> with -O1 and -O2 it doesn't and the kernel links.

Right, so it can determine intel_pxp_get_readiness_status() is basically
a nop for PXP=n.

BR,
Jani.


>
>> 
>> BR,
>> Jani.
>> 
>> 
>> >
>> > Fixes: 99afb7cc8c44 ("drm/i915/pxp: Add ARB session creation and cleanup")
>> > Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
>> > ---
>> >  drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h | 8 ++++++--
>> >  1 file changed, 6 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h b/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h
>> > index 9aae779c4da3..b93488e99685 100644
>> > --- a/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h
>> > +++ b/drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.h
>> > @@ -16,26 +16,30 @@ struct intel_pxp;
>> >  #define GSC_PENDING_RETRY_PAUSE_MS 50
>> >  #define GSCFW_MAX_ROUND_TRIP_LATENCY_MS (GSC_HECI_REPLY_LATENCY_MS + \
>> >  					 (GSC_PENDING_RETRY_MAXCOUNT * GSC_PENDING_RETRY_PAUSE_MS))
>> >  
>> >  #ifdef CONFIG_DRM_I915_PXP
>> >  void intel_pxp_gsccs_fini(struct intel_pxp *pxp);
>> >  int intel_pxp_gsccs_init(struct intel_pxp *pxp);
>> > +bool intel_pxp_gsccs_is_ready_for_sessions(struct intel_pxp *pxp);
>> >  
>> >  int intel_pxp_gsccs_create_session(struct intel_pxp *pxp, int arb_session_id);
>> >  void intel_pxp_gsccs_end_arb_fw_session(struct intel_pxp *pxp, u32 arb_session_id);
>> >  
>> >  #else
>> >  static inline void intel_pxp_gsccs_fini(struct intel_pxp *pxp)
>> >  {
>> >  }
>> >  
>> >  static inline int intel_pxp_gsccs_init(struct intel_pxp *pxp)
>> >  {
>> >  	return 0;
>> >  }
>> >  
>> > -#endif
>> > +static inline bool intel_pxp_gsccs_is_ready_for_sessions(struct intel_pxp *pxp)
>> > +{
>> > +	return false;
>> > +}
>> >  
>> > -bool intel_pxp_gsccs_is_ready_for_sessions(struct intel_pxp *pxp);
>> > +#endif
>> >  
>> >  #endif /*__INTEL_PXP_GSCCS_H__ */
>> 
>> -- 
>> Jani Nikula, Intel
>> 

-- 
Jani Nikula, Intel


More information about the dri-devel mailing list