From patchwork Tue Oct 20 21:22:18 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Zanoni, Paulo R" X-Patchwork-Id: 7450551 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 26FF6BEEA4 for ; Tue, 20 Oct 2015 21:22:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3D7E62086D for ; Tue, 20 Oct 2015 21:22:58 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id F115D2086F for ; Tue, 20 Oct 2015 21:22:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9E51C721C7; Tue, 20 Oct 2015 14:22:54 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E5816E16F for ; Tue, 20 Oct 2015 14:22:53 -0700 (PDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP; 20 Oct 2015 14:22:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,708,1437462000"; d="scan'208";a="831572754" Received: from rehlert-mobl1.amr.corp.intel.com (HELO panetone.amr.corp.intel.com) ([10.252.197.226]) by fmsmga002.fm.intel.com with ESMTP; 20 Oct 2015 14:22:36 -0700 From: Paulo Zanoni To: intel-gfx@lists.freedesktop.org Date: Tue, 20 Oct 2015 19:22:18 -0200 Message-Id: <1445376139-14817-3-git-send-email-paulo.r.zanoni@intel.com> X-Mailer: git-send-email 2.6.1 In-Reply-To: <1445376139-14817-1-git-send-email-paulo.r.zanoni@intel.com> References: <1445349004-16409-1-git-send-email-paulo.r.zanoni@intel.com> <1445376139-14817-1-git-send-email-paulo.r.zanoni@intel.com> Subject: [Intel-gfx] [PATCH igt 3/4] kms_frontbuffer_tracking: add stridechange subtest X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This is a corner case not exercised by the other subtests. The test is expected to pass both with the current Kernel tree and with the patches that are on the mailing list. The patches currently on the mailing list change how the CFB is allocated, and this subtest is designed to make sure everything still works as expected. Signed-off-by: Paulo Zanoni --- tests/kms_frontbuffer_tracking.c | 47 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c index 2c0295c..e183a06 100644 --- a/tests/kms_frontbuffer_tracking.c +++ b/tests/kms_frontbuffer_tracking.c @@ -2876,6 +2876,47 @@ static void badstride_subtest(const struct test_mode *t) igt_remove_fb(drm.fd, &wide_fb); } +/** + * stridechange - change the frontbuffer stride by doing a modeset + * + * METHOD + * This test sets a mode on a CRTC, then creates a buffer with a different + * stride - still compatible with FBC -, and sets the mode on it. The Kernel + * currently shortcuts the modeset path for this case, so it won't trigger + * calls to xx_crtc_enable or xx_crtc_disable, and that could lead to + * problems, so test the case. + * + * EXPECTED RESULTS + * With the current Kernel, FBC may or may not remain enabled on this case, + * but we can still check the CRC values. + * + * FAILURES + * A bad Kernel may just not resize the CFB while keeping FBC enabled, and + * this can lead to underruns or stolen memory corruption. Underruns usually + * lead to CRC check errors, and stolen memory corruption can't be easily + * checked currently. A bad Kernel may also just throw some WARNs on dmesg. + */ +static void stridechange_subtest(const struct test_mode *t) +{ + struct igt_fb new_fb; + struct modeset_params *params = pick_params(t); + + prepare_subtest(t, NULL); + + create_fb(t->format, params->fb.fb->width + 512, params->fb.fb->height, + LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &new_fb); + fill_fb(&new_fb, COLOR_PRIM_BG); + + params->fb.fb = &new_fb; + set_mode_for_params(params); + + /* We can't assert that FBC will be enabled since there may not be + * enough space for the CFB, but we can check the CRC. */ + do_assertions(DONT_ASSERT_FEATURE_STATUS); + + igt_remove_fb(drm.fd, &new_fb); +} + static int opt_handler(int option, int option_index, void *data) { switch (option) { @@ -3276,10 +3317,14 @@ int main(int argc, char *argv[]) igt_subtest_f("%s-modesetfrombusy", feature_str(t.feature)) modesetfrombusy_subtest(&t); - if (t.feature & FEATURE_FBC) + if (t.feature & FEATURE_FBC) { igt_subtest_f("%s-badstride", feature_str(t.feature)) badstride_subtest(&t); + igt_subtest_f("%s-stridechange", feature_str(t.feature)) + stridechange_subtest(&t); + } + if (t.feature & FEATURE_PSR) igt_subtest_f("%s-slowdraw", feature_str(t.feature)) slow_draw_subtest(&t);