From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,PDS_BAD_THREAD_QP_64,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5AD4C433DB for ; Fri, 5 Feb 2021 00:35:23 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 88DB364F8C for ; Fri, 5 Feb 2021 00:35:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 88DB364F8C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 28D296EF2C; Fri, 5 Feb 2021 00:35:23 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 473DF6EF2C for ; Fri, 5 Feb 2021 00:35:21 +0000 (UTC) IronPort-SDR: M5fdkdXuc9ev1fJs1jT/TXxLOySqtj2leyhIfPe+ZNHwBXB1hQ87Ik4GyVUPkhgOf9qFp/6waq pSw2pEXz7+5A== X-IronPort-AV: E=McAfee;i="6000,8403,9885"; a="168471198" X-IronPort-AV: E=Sophos;i="5.81,153,1610438400"; d="scan'208,217";a="168471198" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2021 16:35:20 -0800 IronPort-SDR: 8V1QvnhKx7JsBKXCMID/hkOwNINCIHJgarvuu/v2QKUfiffo+86LhntBsJO8wNmipoTupFoSCV 3FohDcwYsZtA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,153,1610438400"; d="scan'208,217";a="415409605" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by FMSMGA003.fm.intel.com with ESMTP; 04 Feb 2021 16:35:20 -0800 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 4 Feb 2021 16:35:19 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Thu, 4 Feb 2021 16:35:19 -0800 Received: from orsmsx610.amr.corp.intel.com ([10.22.229.23]) by ORSMSX610.amr.corp.intel.com ([10.22.229.23]) with mapi id 15.01.2106.002; Thu, 4 Feb 2021 16:35:19 -0800 From: "Chang, Yu bruce" To: Chris Wilson , "intel-gfx@lists.freedesktop.org" Thread-Topic: [PATCH] drm/i915/selftest: Synchronise with the GPU timestamp Thread-Index: AQHW+1KCb3S3itjg5kqE92p0mxU7kapIsyqf Date: Fri, 5 Feb 2021 00:35:18 +0000 Message-ID: <3fe13ce156d5447dadf43afdff954b74@intel.com> References: <20210205000437.16079-1-chris@chris-wilson.co.uk> In-Reply-To: <20210205000437.16079-1-chris@chris-wilson.co.uk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.1.200.100] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH] drm/i915/selftest: Synchronise with the GPU timestamp X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0362542817==" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" --===============0362542817== Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_3fe13ce156d5447dadf43afdff954b74intelcom_" --_000_3fe13ce156d5447dadf43afdff954b74intelcom_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > Wait for the GPU to wake up from the semaphore before measuring the >time, so that we coordinate the sampling on both the CPU and GPU for > more accurate comparisons. > >Reported-by: Bruce Chang > Signed-off-by: Chris Wilson > Cc: CQ Tang > --- > drivers/gpu/drm/i915/gt/selftest_engine_pm.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c b/drivers/gpu/d= rm/i915/gt/selftest_engine_pm.c >index 3ce8cb3329f3..007a7c790778 100644 > --- a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c > +++ b/drivers/gpu/drm/i915/gt/selftest_engine_pm.c > @@ -111,8 +111,10 @@ static int __measure_timestamps(struct intel_context= *ce, > > /* Run the request for a 100us, sampling timestamps before/after = */ > preempt_disable(); > - *dt =3D local_clock(); > write_semaphore(&sema[2], 0); > + while (READ_ONCE(sema[1]) =3D=3D 0) /* wait for the gpu to catch = up */ > + cpu_relax(); > + *dt =3D local_clock(); > udelay(100); > *dt =3D local_clock() - *dt; > write_semaphore(&sema[2], 1); > -- >2.20.1 > This trick should work! Thanks! Reviewed-by: Bruce Chang --_000_3fe13ce156d5447dadf43afdff954b74intelcom_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

> Wait for the GPU to wake up from the semaphore before measuring t= he
>time, so that we coordinate the sampling on both the CPU and GPU f= or
> more accurate comparisons.
>Reported-by: Bruce Chang <yu.bruce.chang@intel.com>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: CQ Tang <cq.tang@intel.com>
> ---
>  drivers/gpu/drm/i915/gt/selftest_engine_pm.c | 4 ++= +-
> 1 file changed, 3 insertions(+), 1 deletion(-)
> diff --git a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c b/drive= rs/gpu/drm/i915/gt/selftest_engine_pm.c
>index 3ce8cb3329f3..007a7c790778 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
> @@ -111,8 +111,10 @@ static int __measure_timestamps(struct i= ntel_context *ce,
>  
>         /* Run the request for a 100us, = sampling timestamps before/after */
>          preempt_disable();
> -       *dt =3D local_clock();
>         write_semaphore(&sema[2], 0)= ;
> +       while (READ_ONCE(sema[1]) =3D=3D = 0) /* wait for the gpu to catch up */
> +               cpu_r= elax();
> +       *dt =3D local_clock();
>          udelay(100);
>         *dt =3D local_clock() - *dt;
>          write_semaphore(&sema[2], 1= );
> -- 
>2.20.1

This trick should work!
Thanks!

Reviewed-by: Bruce Chang <yu= .bruce.chang@intel.com> 

--_000_3fe13ce156d5447dadf43afdff954b74intelcom_-- --===============0362542817== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx --===============0362542817==--