[Beignet] [PATCH] runtime: Need to separate atomic in L3 test and SLM test in self_test().

Yang, Rong R rong.r.yang at intel.com
Wed Jul 15 00:13:07 PDT 2015


Pushed.

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Luo, Xionghu
> Sent: Wednesday, July 15, 2015 10:58
> To: Gong, Zhigang; beignet at lists.freedesktop.org
> Cc: Gong, Zhigang
> Subject: Re: [Beignet] [PATCH] runtime: Need to separate atomic in L3 test
> and SLM test in self_test().
> 
> LGTM, Thanks.
> 
> Luo Xionghu
> Best Regards
> 
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Zhigang Gong
> Sent: Wednesday, July 15, 2015 9:49 AM
> To: beignet at lists.freedesktop.org
> Cc: Gong, Zhigang
> Subject: [Beignet] [PATCH] runtime: Need to separate atomic in L3 test and
> SLM test in self_test().
> 
> On HSW, if we use default 4.0.x kernel without the i915.enable_ppgtt=2 boot
> argument, then the atomic in L3 will not work and the SLM will not work
> neither. We need to test atomic in L3 firstly, if it fails we need to test SLM
> again. Otherwise, beignet will not give any error/warning information for
> both atomic in L3 and SLM not working case.
> 
> v2:
> shold set the atomic test result before the second round SLM test.
> 
> Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
> ---
>  src/cl_device_id.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/src/cl_device_id.c b/src/cl_device_id.c index f772278..f351f85
> 100644
> --- a/src/cl_device_id.c
> +++ b/src/cl_device_id.c
> @@ -564,7 +564,7 @@ skl_gt4_break:
>   * SELF_TEST_ATOMIC_FAIL: for hsw enqueue  kernel failure to not enable
> atomics in L3.
>   * SELF_TEST_OTHER_FAIL: other fail like runtime API fail.*/  LOCAL
> cl_self_test_res -cl_self_test(cl_device_id device)
> +cl_self_test(cl_device_id device, cl_self_test_res atomic_in_l3_flag)
>  {
>    cl_int status;
>    cl_context ctx;
> @@ -587,6 +587,7 @@ cl_self_test(cl_device_id device)
>      return ret;
>    tested = 1;
>    ctx = clCreateContext(NULL, 1, &device, NULL, NULL, &status);
> +  cl_driver_set_atomic_flag(ctx->drv, atomic_in_l3_flag);
>    if (status == CL_SUCCESS) {
>      queue = clCreateCommandQueue(ctx, device, 0, &status);
>      if (status == CL_SUCCESS) {
> @@ -611,10 +612,13 @@ cl_self_test(cl_device_id device)
>                        printf("Beignet: self-test failed: (3, 7, 5) + (5, 7, 3) returned
> (%i, %i, %i)\n"
>                               "See README.md or
> http://www.freedesktop.org/wiki/Software/Beignet/\n",
>                               test_data[0], test_data[1], test_data[2]);
> +
>                      }
>                    }
>                  } else{
>                    ret = SELF_TEST_ATOMIC_FAIL;
> +                  // Atomic fail need to test SLM again with atomic in L3 feature
> disabled.
> +                  tested = 0;
>                  }
>                }
>              }
> @@ -643,8 +647,13 @@ cl_get_device_ids(cl_platform_id    platform,
>    /* Do we have a usable device? */
>    device = cl_get_gt_device();
>    if (device) {
> -    cl_self_test_res ret = cl_self_test(device);
> -    device->atomic_test_result = ret;
> +    cl_self_test_res ret = cl_self_test(device, SELF_TEST_PASS);
> +    if (ret == SELF_TEST_ATOMIC_FAIL) {
> +      device->atomic_test_result = ret;
> +      ret = cl_self_test(device, ret);
> +      printf("Beignet: warning - disable atomic in L3 feature.\n");
> +    }
> +
>      if(ret == SELF_TEST_SLM_FAIL) {
>        int disable_self_test = 0;
>        // can't use BVAR (backend/src/sys/cvar.hpp) here as it's C++
> --
> 1.9.1
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list