On Thu, 05 Nov 2026, Ville Syrjala <[email protected]> wrote:
> From: Ville Syrjälä <[email protected]>
>
> In order to eliminate runtime platform check overhead from
> the mmio read/write functions, we'll need a good way to construct
> optimal variants for each platform. Do that in the form of
> __intel_de_{read,write}() that can be customized via (compile time
> constnt) mmio_flags. The compiler will eliminate all the stuff
> we don't want.

Are the __always_inline required?

Reviewed-by: Jani Nikula <[email protected]>

>
> For now there is nothing to eliminate but next we'll start
> moving more stuff in to make that possible.
>
> Signed-off-by: Ville Syrjälä <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_de.c | 26 +++++++++++++++++++++++--
>  1 file changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_de.c 
> b/drivers/gpu/drm/i915/display/intel_de.c
> index 4f423a684ec2..cde2886fe2ca 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.c
> +++ b/drivers/gpu/drm/i915/display/intel_de.c
> @@ -163,16 +163,38 @@ u16 intel_de_read16(struct intel_display *display, 
> intel_reg_t reg)
>       return intel_uncore_read16(__to_uncore(display), reg);
>  }
>  
> +static __always_inline u32
> +__intel_de_read(struct intel_display *display, intel_reg_t reg,
> +             const unsigned int mmio_flags)
> +{
> +     u32 val;
> +
> +     val = intel_uncore_read(__to_uncore(display), reg);
> +
> +     return val;
> +}
> +
> +static __always_inline void
> +__intel_de_write(struct intel_display *display, intel_reg_t reg, u32 val,
> +              const unsigned int mmio_flags)
> +{
> +     intel_uncore_write(__to_uncore(display), reg, val);
> +}
> +
> +#define I9XX_MMIO_FLAGS 0
> +
>  static u32 i9xx_mmio_read(struct intel_display *display, intel_reg_t reg)
>  {
> -     return intel_uncore_read(__to_uncore(display), reg);
> +     return __intel_de_read(display, reg, I9XX_MMIO_FLAGS);
>  }
>  
>  static void i9xx_mmio_write(struct intel_display *display, intel_reg_t reg, 
> u32 val)
>  {
> -     intel_uncore_write(__to_uncore(display), reg, val);
> +     __intel_de_write(display, reg, val, I9XX_MMIO_FLAGS);
>  }
>  
> +#undef I9XX_MMIO_FLAGS
> +
>  static const struct intel_mmio_funcs i9xx_mmio_funcs = {
>       .read = i9xx_mmio_read,
>       .write = i9xx_mmio_write,

-- 
Jani Nikula, Intel

Reply via email to