From: Jani Nikula <jani.nikula@linux.intel.com>
To: bradley.d.volkin@intel.com, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 1/3] drm/i915: BUG_ON() when cmd/reg tables are not sorted
Date: Wed, 02 Apr 2014 12:11:37 +0300 [thread overview]
Message-ID: <87sipwayeu.fsf@intel.com> (raw)
In-Reply-To: <1395945820-20376-2-git-send-email-bradley.d.volkin@intel.com>
On Thu, 27 Mar 2014, bradley.d.volkin@intel.com wrote:
> From: Brad Volkin <bradley.d.volkin@intel.com>
>
> As suggested during review, this makes it much more obvious
> when the tables are not sorted.
Let's look at the optimizations later.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Signed-off-by: Brad Volkin <bradley.d.volkin@intel.com>
> ---
> drivers/gpu/drm/i915/i915_cmd_parser.c | 31 +++++++++++++++++++++----------
> 1 file changed, 21 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_cmd_parser.c b/drivers/gpu/drm/i915/i915_cmd_parser.c
> index 788bd96..8a93db3 100644
> --- a/drivers/gpu/drm/i915/i915_cmd_parser.c
> +++ b/drivers/gpu/drm/i915/i915_cmd_parser.c
> @@ -493,12 +493,13 @@ static u32 gen7_blt_get_cmd_length_mask(u32 cmd_header)
> return 0;
> }
>
> -static void validate_cmds_sorted(struct intel_ring_buffer *ring)
> +static bool validate_cmds_sorted(struct intel_ring_buffer *ring)
> {
> int i;
> + bool ret = true;
>
> if (!ring->cmd_tables || ring->cmd_table_count == 0)
> - return;
> + return true;
>
> for (i = 0; i < ring->cmd_table_count; i++) {
> const struct drm_i915_cmd_table *table = &ring->cmd_tables[i];
> @@ -510,35 +511,45 @@ static void validate_cmds_sorted(struct intel_ring_buffer *ring)
> &table->table[i];
> u32 curr = desc->cmd.value & desc->cmd.mask;
>
> - if (curr < previous)
> + if (curr < previous) {
> DRM_ERROR("CMD: table not sorted ring=%d table=%d entry=%d cmd=0x%08X prev=0x%08X\n",
> ring->id, i, j, curr, previous);
> + ret = false;
> + }
>
> previous = curr;
> }
> }
> +
> + return ret;
> }
>
> -static void check_sorted(int ring_id, const u32 *reg_table, int reg_count)
> +static bool check_sorted(int ring_id, const u32 *reg_table, int reg_count)
> {
> int i;
> u32 previous = 0;
> + bool ret = true;
>
> for (i = 0; i < reg_count; i++) {
> u32 curr = reg_table[i];
>
> - if (curr < previous)
> + if (curr < previous) {
> DRM_ERROR("CMD: table not sorted ring=%d entry=%d reg=0x%08X prev=0x%08X\n",
> ring_id, i, curr, previous);
> + ret = false;
> + }
>
> previous = curr;
> }
> +
> + return ret;
> }
>
> -static void validate_regs_sorted(struct intel_ring_buffer *ring)
> +static bool validate_regs_sorted(struct intel_ring_buffer *ring)
> {
> - check_sorted(ring->id, ring->reg_table, ring->reg_count);
> - check_sorted(ring->id, ring->master_reg_table, ring->master_reg_count);
> + return check_sorted(ring->id, ring->reg_table, ring->reg_count) &&
> + check_sorted(ring->id, ring->master_reg_table,
> + ring->master_reg_count);
> }
>
> /**
> @@ -617,8 +628,8 @@ void i915_cmd_parser_init_ring(struct intel_ring_buffer *ring)
> BUG();
> }
>
> - validate_cmds_sorted(ring);
> - validate_regs_sorted(ring);
> + BUG_ON(!validate_cmds_sorted(ring));
> + BUG_ON(!validate_regs_sorted(ring));
> }
>
> static const struct drm_i915_cmd_descriptor*
> --
> 1.8.3.2
>
--
Jani Nikula, Intel Open Source Technology Center
next prev parent reply other threads:[~2014-04-02 9:11 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 18:43 [PATCH 0/3] Fix up cmd parser OACONTROL handling + refactorings bradley.d.volkin
2014-03-27 18:43 ` [PATCH 1/3] drm/i915: BUG_ON() when cmd/reg tables are not sorted bradley.d.volkin
2014-03-27 21:47 ` Kenneth Graunke
2014-03-27 23:56 ` Volkin, Bradley D
2014-04-02 9:11 ` Jani Nikula [this message]
2014-04-02 9:35 ` Daniel Vetter
2014-03-27 18:43 ` [PATCH 2/3] drm/i915: Refactor cmd parser checks into a function bradley.d.volkin
2014-03-27 21:49 ` Kenneth Graunke
2014-04-02 9:14 ` Jani Nikula
2014-03-27 18:43 ` [PATCH 3/3] drm/i915: Track OACONTROL register enable/disable during parsing bradley.d.volkin
2014-03-27 21:58 ` Kenneth Graunke
2014-03-28 0:06 ` Volkin, Bradley D
2014-03-28 7:51 ` Daniel Vetter
2014-03-28 17:21 ` [PATCH v2 " bradley.d.volkin
2014-03-28 17:37 ` Kenneth Graunke
2014-04-02 9:35 ` Jani Nikula
2014-04-10 6:07 ` Zhenyu Wang
2014-04-10 6:43 ` Daniel Vetter
2014-04-10 7:51 ` Zhenyu Wang
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=87sipwayeu.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=bradley.d.volkin@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/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.