From patchwork Mon Oct 22 17:40:05 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 1627391 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by patchwork1.kernel.org (Postfix) with ESMTP id 635B64020E for ; Mon, 22 Oct 2012 17:40:45 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 475399E7C8 for ; Mon, 22 Oct 2012 10:40:45 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga14.intel.com (mga14.intel.com [143.182.124.37]) by gabe.freedesktop.org (Postfix) with ESMTP id 674399E75D for ; Mon, 22 Oct 2012 10:40:34 -0700 (PDT) Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga102.ch.intel.com with ESMTP; 22 Oct 2012 10:40:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.80,631,1344236400"; d="scan'208";a="207580001" Received: from ideak-desk.fi.intel.com (HELO localhost) ([10.237.72.98]) by azsmga001.ch.intel.com with ESMTP; 22 Oct 2012 10:40:12 -0700 From: Imre Deak To: intel-gfx@lists.freedesktop.org Date: Mon, 22 Oct 2012 20:40:05 +0300 Message-Id: <1350927609-14649-2-git-send-email-imre.deak@intel.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1350927609-14649-1-git-send-email-imre.deak@intel.com> References: <1350927609-14649-1-git-send-email-imre.deak@intel.com> Subject: [Intel-gfx] [PATCH 2/5] flip_test: fixup zero timestamp for premature vblanks X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Signed-off-by: Imre Deak --- tests/flip_test.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/flip_test.c b/tests/flip_test.c index 81a7afe..00f98ce 100644 --- a/tests/flip_test.c +++ b/tests/flip_test.c @@ -291,6 +291,30 @@ static void page_flip_handler(int fd, unsigned int frame, unsigned int sec, event_handler(&o->flip_state, frame, sec, usec); } +static void fixup_premature_vblank_ts(struct test_output *o, + struct event_state *es) +{ + /* + * In case a power off event preempts the completion of a + * wait-for-vblank event the kernel will return a wf-vblank event with + * a zeroed-out timestamp. In order that check_state() doesn't + * complain replace this ts with a valid ts. As we can't calculate the + * exact timestamp, just use the time we received the event. + */ + struct timeval tv; + + if (!(o->flags & (TEST_DPMS | TEST_MODESET))) + return; + + if (o->vblank_state.current_ts.tv_sec != 0 || + o->vblank_state.current_ts.tv_usec != 0) + return; + + tv.tv_sec = 0; + tv.tv_usec = 1; + timersub(&es->current_received_ts, &tv, &es->current_ts); +} + static void vblank_handler(int fd, unsigned int frame, unsigned int sec, unsigned int usec, void *data) { @@ -298,6 +322,7 @@ static void vblank_handler(int fd, unsigned int frame, unsigned int sec, clear_flag(&o->pending_events, EVENT_VBLANK); event_handler(&o->vblank_state, frame, sec, usec); + fixup_premature_vblank_ts(o, &o->vblank_state); } static void check_state(struct test_output *o, struct event_state *es)