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
