[Intel-gfx] [PATCH 2/2] igt/gem_workarounds: rework igt to test workaround registers

Damien Lespiau damien.lespiau at intel.com
Mon Sep 1 16:12:11 CEST 2014


On Mon, Sep 01, 2014 at 02:29:47PM +0100, Arun Siluvery wrote:
> kernel patch that exports w/a data to debugfs is reworked so
> update igt accordingly.
> 
> Address review comments from Damien.
> - if kernel is not exposing w/a data instead of failing just skip instead.
> - if the platform is not exposing w/a table then no of workarounds
> applied are 0; we can use this data to skip platform checks.
> 
> Signed-off-by: Arun Siluvery <arun.siluvery at linux.intel.com>
> ---
>  tests/gem_workarounds.c | 44 +++++++++++++++++++++++---------------------
>  1 file changed, 23 insertions(+), 21 deletions(-)
> 
> diff --git a/tests/gem_workarounds.c b/tests/gem_workarounds.c
> index 32156d2..fae4382 100644
> --- a/tests/gem_workarounds.c
> +++ b/tests/gem_workarounds.c
> @@ -62,7 +62,7 @@ int drm_fd;
>  uint32_t devid;
>  static drm_intel_bufmgr *bufmgr;
>  struct intel_batchbuffer *batch;
> -int num_wa_regs;
> +int num_wa_regs = 0;
>  struct intel_wa_reg *wa_regs;
>  
>  
> @@ -153,7 +153,7 @@ static void check_workarounds(enum operation op, int num)
>  	igt_info("Address\tbefore\t\tafter\t\tw/a mask\tresult\n");
>  	for (i = 0; i < num; ++i) {
>  		status = (current_wa[i].value & current_wa[i].mask) !=
> -			(wa_regs[i].value & wa_regs[i].mask);
> +			wa_regs[i].mask;

Hum. This looks so fishy it can't be right. The heart of the problem is
that you're not clear what a mask or value should be.

To me:

  - A mask selects bits
  - value is the reference W/A value (containing only the correct bits
    for a single W/A, some of those bits can be 0, mask is telling us
    which bits we're interested about.
  - read(reg) & mask is the W/A value read back from the register

-- 
Damien




More information about the Intel-gfx mailing list