From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH v3 43/43] drm/xe/mmio: Drop compatibility macros
Date: Wed, 11 Sep 2024 16:35:27 -0400 [thread overview]
Message-ID: <ZuH_D_pXTiY92ior@intel.com> (raw)
In-Reply-To: <20240910234719.3335472-88-matthew.d.roper@intel.com>
On Tue, Sep 10, 2024 at 04:48:03PM -0700, Matt Roper wrote:
> Now that all parts of the driver have switched over to using xe_mmio for
> direct register access, we can drop the compatibility macros that allow
> continued xe_gt usage.
>
> v2:
> - Move removal of 8/16-bit read and xe_mmio_wait32_not() wrappers to
> this patch rather than removing them in earlier patches when last
> caller was removed. (Rodrigo)
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
> ---
> drivers/gpu/drm/xe/xe_mmio.c | 38 ++++++++++----------
> drivers/gpu/drm/xe/xe_mmio.h | 67 ++++++++----------------------------
> 2 files changed, 34 insertions(+), 71 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> index 392105ba8311..a48f239cad1c 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.c
> +++ b/drivers/gpu/drm/xe/xe_mmio.c
> @@ -199,7 +199,7 @@ static void mmio_flush_pending_writes(struct xe_mmio *mmio)
> writel(0, mmio->regs + DUMMY_REG_OFFSET);
> }
>
> -u8 __xe_mmio_read8(struct xe_mmio *mmio, struct xe_reg reg)
> +u8 xe_mmio_read8(struct xe_mmio *mmio, struct xe_reg reg)
> {
> u32 addr = xe_mmio_adjusted_addr(mmio, reg.addr);
> u8 val;
> @@ -213,7 +213,7 @@ u8 __xe_mmio_read8(struct xe_mmio *mmio, struct xe_reg reg)
> return val;
> }
>
> -u16 __xe_mmio_read16(struct xe_mmio *mmio, struct xe_reg reg)
> +u16 xe_mmio_read16(struct xe_mmio *mmio, struct xe_reg reg)
> {
> u32 addr = xe_mmio_adjusted_addr(mmio, reg.addr);
> u16 val;
> @@ -227,7 +227,7 @@ u16 __xe_mmio_read16(struct xe_mmio *mmio, struct xe_reg reg)
> return val;
> }
>
> -void __xe_mmio_write32(struct xe_mmio *mmio, struct xe_reg reg, u32 val)
> +void xe_mmio_write32(struct xe_mmio *mmio, struct xe_reg reg, u32 val)
> {
> u32 addr = xe_mmio_adjusted_addr(mmio, reg.addr);
>
> @@ -239,7 +239,7 @@ void __xe_mmio_write32(struct xe_mmio *mmio, struct xe_reg reg, u32 val)
> writel(val, mmio->regs + addr);
> }
>
> -u32 __xe_mmio_read32(struct xe_mmio *mmio, struct xe_reg reg)
> +u32 xe_mmio_read32(struct xe_mmio *mmio, struct xe_reg reg)
> {
> u32 addr = xe_mmio_adjusted_addr(mmio, reg.addr);
> u32 val;
> @@ -257,7 +257,7 @@ u32 __xe_mmio_read32(struct xe_mmio *mmio, struct xe_reg reg)
> return val;
> }
>
> -u32 __xe_mmio_rmw32(struct xe_mmio *mmio, struct xe_reg reg, u32 clr, u32 set)
> +u32 xe_mmio_rmw32(struct xe_mmio *mmio, struct xe_reg reg, u32 clr, u32 set)
> {
> u32 old, reg_val;
>
> @@ -268,8 +268,8 @@ u32 __xe_mmio_rmw32(struct xe_mmio *mmio, struct xe_reg reg, u32 clr, u32 set)
> return old;
> }
>
> -int __xe_mmio_write32_and_verify(struct xe_mmio *mmio,
> - struct xe_reg reg, u32 val, u32 mask, u32 eval)
> +int xe_mmio_write32_and_verify(struct xe_mmio *mmio,
> + struct xe_reg reg, u32 val, u32 mask, u32 eval)
> {
> u32 reg_val;
>
> @@ -279,9 +279,9 @@ int __xe_mmio_write32_and_verify(struct xe_mmio *mmio,
> return (reg_val & mask) != eval ? -EINVAL : 0;
> }
>
> -bool __xe_mmio_in_range(const struct xe_mmio *mmio,
> - const struct xe_mmio_range *range,
> - struct xe_reg reg)
> +bool xe_mmio_in_range(const struct xe_mmio *mmio,
> + const struct xe_mmio_range *range,
> + struct xe_reg reg)
> {
> u32 addr = xe_mmio_adjusted_addr(mmio, reg.addr);
>
> @@ -310,7 +310,7 @@ bool __xe_mmio_in_range(const struct xe_mmio *mmio,
> *
> * Returns the value of the 64-bit register.
> */
> -u64 __xe_mmio_read64_2x32(struct xe_mmio *mmio, struct xe_reg reg)
> +u64 xe_mmio_read64_2x32(struct xe_mmio *mmio, struct xe_reg reg)
> {
> struct xe_reg reg_udw = { .addr = reg.addr + 0x4 };
> u32 ldw, udw, oldudw, retries;
> @@ -338,8 +338,8 @@ u64 __xe_mmio_read64_2x32(struct xe_mmio *mmio, struct xe_reg reg)
> return (u64)udw << 32 | ldw;
> }
>
> -static int ____xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val, u32 timeout_us,
> - u32 *out_val, bool atomic, bool expect_match)
> +static int __xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val, u32 timeout_us,
> + u32 *out_val, bool atomic, bool expect_match)
> {
> ktime_t cur = ktime_get_raw();
> const ktime_t end = ktime_add_us(cur, timeout_us);
> @@ -410,10 +410,10 @@ static int ____xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask,
> * @timeout_us for different reasons, specially in non-atomic contexts. Thus,
> * it is possible that this function succeeds even after @timeout_us has passed.
> */
> -int __xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val, u32 timeout_us,
> - u32 *out_val, bool atomic)
> +int xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val, u32 timeout_us,
> + u32 *out_val, bool atomic)
> {
> - return ____xe_mmio_wait32(mmio, reg, mask, val, timeout_us, out_val, atomic, true);
> + return __xe_mmio_wait32(mmio, reg, mask, val, timeout_us, out_val, atomic, true);
> }
>
> /**
> @@ -429,8 +429,8 @@ int __xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val,
> * This function works exactly like xe_mmio_wait32() with the exception that
> * @val is expected not to be matched.
> */
> -int __xe_mmio_wait32_not(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val, u32 timeout_us,
> - u32 *out_val, bool atomic)
> +int xe_mmio_wait32_not(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val, u32 timeout_us,
> + u32 *out_val, bool atomic)
> {
> - return ____xe_mmio_wait32(mmio, reg, mask, val, timeout_us, out_val, atomic, false);
> + return __xe_mmio_wait32(mmio, reg, mask, val, timeout_us, out_val, atomic, false);
> }
> diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> index ac6846447c52..8a46f4006a84 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.h
> +++ b/drivers/gpu/drm/xe/xe_mmio.h
> @@ -14,63 +14,26 @@ struct xe_reg;
> int xe_mmio_init(struct xe_device *xe);
> int xe_mmio_probe_tiles(struct xe_device *xe);
>
> -/*
> - * Temporary transition helper for xe_gt -> xe_mmio conversion. Allows
> - * continued usage of xe_gt as a parameter to MMIO operations which now
> - * take an xe_mmio structure instead. Will be removed once the driver-wide
> - * conversion is complete.
> - */
> -#define __to_xe_mmio(ptr) \
> - _Generic(ptr, \
> - const struct xe_gt *: (&((const struct xe_gt *)(ptr))->mmio), \
> - struct xe_gt *: (&((struct xe_gt *)(ptr))->mmio), \
> - const struct xe_mmio *: (ptr), \
> - struct xe_mmio *: (ptr))
> -
> -u8 __xe_mmio_read8(struct xe_mmio *mmio, struct xe_reg reg);
> -#define xe_mmio_read8(p, reg) __xe_mmio_read8(__to_xe_mmio(p), reg)
> -
> -u16 __xe_mmio_read16(struct xe_mmio *mmio, struct xe_reg reg);
> -#define xe_mmio_read16(p, reg) __xe_mmio_read16(__to_xe_mmio(p), reg)
> -
> -void __xe_mmio_write32(struct xe_mmio *mmio, struct xe_reg reg, u32 val);
> -#define xe_mmio_write32(p, reg, val) __xe_mmio_write32(__to_xe_mmio(p), reg, val)
> -
> -u32 __xe_mmio_read32(struct xe_mmio *mmio, struct xe_reg reg);
> -#define xe_mmio_read32(p, reg) __xe_mmio_read32(__to_xe_mmio(p), reg)
> -
> -u32 __xe_mmio_rmw32(struct xe_mmio *mmio, struct xe_reg reg, u32 clr, u32 set);
> -#define xe_mmio_rmw32(p, reg, clr, set) __xe_mmio_rmw32(__to_xe_mmio(p), reg, clr, set)
> -
> -int __xe_mmio_write32_and_verify(struct xe_mmio *mmio, struct xe_reg reg,
> - u32 val, u32 mask, u32 eval);
> -#define xe_mmio_write32_and_verify(p, reg, val, mask, eval) \
> - __xe_mmio_write32_and_verify(__to_xe_mmio(p), reg, val, mask, eval)
> -
> -bool __xe_mmio_in_range(const struct xe_mmio *mmio,
> - const struct xe_mmio_range *range, struct xe_reg reg);
> -#define xe_mmio_in_range(p, range, reg) __xe_mmio_in_range(__to_xe_mmio(p), range, reg)
> -
> -u64 __xe_mmio_read64_2x32(struct xe_mmio *mmio, struct xe_reg reg);
> -#define xe_mmio_read64_2x32(p, reg) __xe_mmio_read64_2x32(__to_xe_mmio(p), reg)
> -
> -int __xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val,
> - u32 timeout_us, u32 *out_val, bool atomic);
> -#define xe_mmio_wait32(p, reg, mask, val, timeout_us, out_val, atomic) \
> - __xe_mmio_wait32(__to_xe_mmio(p), reg, mask, val, timeout_us, out_val, atomic)
> -
> -int __xe_mmio_wait32_not(struct xe_mmio *mmio, struct xe_reg reg, u32 mask,
> - u32 val, u32 timeout_us, u32 *out_val, bool atomic);
> -#define xe_mmio_wait32_not(p, reg, mask, val, timeout_us, out_val, atomic) \
> - __xe_mmio_wait32_not(__to_xe_mmio(p), reg, mask, val, timeout_us, out_val, atomic)
> -
> -static inline u32 __xe_mmio_adjusted_addr(const struct xe_mmio *mmio, u32 addr)
> +u8 xe_mmio_read8(struct xe_mmio *mmio, struct xe_reg reg);
> +u16 xe_mmio_read16(struct xe_mmio *mmio, struct xe_reg reg);
> +void xe_mmio_write32(struct xe_mmio *mmio, struct xe_reg reg, u32 val);
> +u32 xe_mmio_read32(struct xe_mmio *mmio, struct xe_reg reg);
> +u32 xe_mmio_rmw32(struct xe_mmio *mmio, struct xe_reg reg, u32 clr, u32 set);
> +int xe_mmio_write32_and_verify(struct xe_mmio *mmio, struct xe_reg reg, u32 val, u32 mask, u32 eval);
> +bool xe_mmio_in_range(const struct xe_mmio *mmio, const struct xe_mmio_range *range, struct xe_reg reg);
> +
> +u64 xe_mmio_read64_2x32(struct xe_mmio *mmio, struct xe_reg reg);
> +int xe_mmio_wait32(struct xe_mmio *mmio, struct xe_reg reg, u32 mask, u32 val,
> + u32 timeout_us, u32 *out_val, bool atomic);
> +int xe_mmio_wait32_not(struct xe_mmio *mmio, struct xe_reg reg, u32 mask,
> + u32 val, u32 timeout_us, u32 *out_val, bool atomic);
> +
> +static inline u32 xe_mmio_adjusted_addr(const struct xe_mmio *mmio, u32 addr)
> {
> if (addr < mmio->adj_limit)
> addr += mmio->adj_offset;
> return addr;
> }
> -#define xe_mmio_adjusted_addr(p, addr) __xe_mmio_adjusted_addr(__to_xe_mmio(p), addr)
>
> static inline struct xe_mmio *xe_root_tile_mmio(struct xe_device *xe)
> {
> --
> 2.45.2
>
next prev parent reply other threads:[~2024-09-11 20:35 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-10 23:47 [PATCH v3 00/43] Stop using xe_gt as a register MMIO target Matt Roper
2024-09-10 23:47 ` [PATCH v3 01/43] drm/xe: Move forcewake to 'gt.pm' substructure Matt Roper
2024-09-10 23:47 ` [PATCH v3 02/43] drm/xe: Create dedicated xe_mmio structure Matt Roper
2024-09-10 23:47 ` [PATCH v3 03/43] drm/xe: Clarify size of MMIO region Matt Roper
2024-09-10 23:47 ` [PATCH v3 04/43] drm/xe: Move GSI offset adjustment fields into 'struct xe_mmio' Matt Roper
2024-09-10 23:47 ` [PATCH v3 05/43] drm/xe: Populate GT's mmio iomap from tile during init Matt Roper
2024-09-10 23:47 ` [PATCH v3 06/43] drm/xe: Switch mmio_ext to use 'struct xe_mmio' Matt Roper
2024-09-10 23:47 ` [PATCH v3 07/43] drm/xe: Add xe_tile backpointer to xe_mmio Matt Roper
2024-09-10 23:47 ` [PATCH v3 08/43] drm/xe: Adjust mmio code to pass VF substructure to SRIOV code Matt Roper
2024-09-10 23:47 ` [PATCH v3 09/43] drm/xe: Switch MMIO interface to take xe_mmio instead of xe_gt Matt Roper
2024-09-11 20:34 ` Rodrigo Vivi
2024-09-10 23:47 ` [PATCH v3 10/43] drm/xe/irq: Convert register access to use xe_mmio Matt Roper
2024-09-10 23:47 ` [PATCH v3 11/43] drm/xe/pcode: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 12/43] drm/xe/hwmon: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 13/43] drm/xe/vram: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 14/43] drm/xe/compat-i915: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 15/43] drm/xe/lmtt: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 16/43] drm/xe/stolen: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 17/43] drm/xe/device: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 18/43] drm/xe/pci: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 19/43] drm/xe/wa: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 20/43] drm/xe/uc: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 21/43] drm/xe/guc: " Matt Roper
2024-09-11 20:35 ` Rodrigo Vivi
2024-09-10 23:47 ` [PATCH v3 22/43] drm/xe/huc: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 23/43] drm/xe/gsc: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 24/43] drm/xe/query: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 25/43] drm/xe/mcr: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 26/43] drm/xe/mocs: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 27/43] drm/xe/hw_engine: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 28/43] drm/xe/gt_throttle: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 29/43] drm/xe/pat: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 30/43] drm/xe/wopcm: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 31/43] drm/xe/oa: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 32/43] drm/xe/topology: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 33/43] drm/xe/execlist: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 34/43] drm/xe/gt_clock: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 35/43] drm/xe/reg_sr: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 36/43] drm/xe/gt: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 37/43] drm/xe/sriov: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 38/43] drm/xe/tlb: " Matt Roper
2024-09-10 23:47 ` [PATCH v3 39/43] drm/xe/gt_idle: " Matt Roper
2024-09-10 23:48 ` [PATCH v3 40/43] drm/xe/forcewake: " Matt Roper
2024-09-10 23:48 ` [PATCH v3 41/43] drm/xe/ggtt: " Matt Roper
2024-09-10 23:48 ` [PATCH v3 42/43] drm/xe/ccs_mode: " Matt Roper
2024-09-10 23:48 ` [PATCH v3 43/43] drm/xe/mmio: Drop compatibility macros Matt Roper
2024-09-11 20:35 ` Rodrigo Vivi [this message]
2024-09-10 23:55 ` ✓ CI.Patch_applied: success for Stop using xe_gt as a register MMIO target (rev3) Patchwork
2024-09-10 23:56 ` ✗ CI.checkpatch: warning " Patchwork
2024-09-10 23:57 ` ✓ CI.KUnit: success " Patchwork
2024-09-11 0:09 ` ✓ CI.Build: " Patchwork
2024-09-11 0:11 ` ✓ CI.Hooks: " Patchwork
2024-09-11 0:13 ` ✓ CI.checksparse: " Patchwork
2024-09-11 0:55 ` ✗ CI.BAT: failure " Patchwork
2024-09-11 19:48 ` Matt Roper
2024-09-11 3:18 ` ✗ CI.FULL: " Patchwork
2024-09-11 19:52 ` Matt Roper
2024-09-11 22:46 ` Matt Roper
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=ZuH_D_pXTiY92ior@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=matthew.d.roper@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.