From: Jim Bride <jim.bride@linux.intel.com>
To: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Cc: intel-gfx <intel-gfx@lists.freedesktop.org>,
Paulo Zanoni <paulo.r.zanoni@intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>
Subject: Re: [PATCH IGT v2 4/6] tests/kms_frontbuffer_tracking: Refactor to use IGT PSR library functions
Date: Fri, 7 Jul 2017 15:30:20 -0700 [thread overview]
Message-ID: <20170707223020.GA10605@shiv> (raw)
In-Reply-To: <CABVU7+vy-42HPgMA61ZX+y-GMB4jf_iFXq0YvKbA=uMsbffK7Q@mail.gmail.com>
On Fri, Jun 30, 2017 at 01:19:57PM -0700, Rodrigo Vivi wrote:
> I believe it would be better to create the psr lib with only one
> function at time and on every patch that adds the new function already
> removes that from here and from frontbuffer tracking test as well...
>
> easier to review and to make sure that we are not changing the behaviour.
I'm testing a new series with the requested structural changes and review
feedback to-date. I hope to send them out on Monday (testing takes a while.)
Jim
> also...
>
> On Fri, Jun 30, 2017 at 12:12 PM, Jim Bride <jim.bride@linux.intel.com> wrote:
> > v2: * Minor functional tweaks and bug fixes
> > * Rebase
> >
> > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > Signed-off-by: Jim Bride <jim.bride@linux.intel.com>
> > ---
> > tests/kms_frontbuffer_tracking.c | 119 +++++++--------------------------------
> > 1 file changed, 19 insertions(+), 100 deletions(-)
> >
> > diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c
> > index c24e4a8..3a8b754 100644
> > --- a/tests/kms_frontbuffer_tracking.c
> > +++ b/tests/kms_frontbuffer_tracking.c
> > @@ -183,7 +183,7 @@ struct {
> > };
> >
> >
> > -#define SINK_CRC_SIZE 12
> > +#define SINK_CRC_SIZE 6
>
> I believe this deserves a separated patch...
>
> > typedef struct {
> > char data[SINK_CRC_SIZE];
> > } sink_crc_t;
> > @@ -327,28 +327,6 @@ drmModeModeInfo std_1024_mode = {
> > .name = "Custom 1024x768",
> > };
> >
> > -static drmModeModeInfoPtr get_connector_smallest_mode(drmModeConnectorPtr c)
> > -{
> > - int i;
> > - drmModeModeInfoPtr smallest = NULL;
> > -
> > - for (i = 0; i < c->count_modes; i++) {
> > - drmModeModeInfoPtr mode = &c->modes[i];
> > -
> > - if (!smallest)
> > - smallest = mode;
> > -
> > - if (mode->hdisplay * mode->vdisplay <
> > - smallest->hdisplay * smallest->vdisplay)
> > - smallest = mode;
> > - }
> > -
> > - if (c->connector_type == DRM_MODE_CONNECTOR_eDP)
> > - smallest = &std_1024_mode;
> > -
> > - return smallest;
> > -}
> > -
> > static drmModeConnectorPtr get_connector(uint32_t id)
> > {
> > int i;
> > @@ -421,30 +399,6 @@ static void init_mode_params(struct modeset_params *params, uint32_t crtc_id,
> > params->sprite.h = 64;
> > }
> >
> > -static bool connector_get_mode(drmModeConnectorPtr c, drmModeModeInfoPtr *mode)
> > -{
> > - *mode = NULL;
> > -
> > - if (c->connection != DRM_MODE_CONNECTED || !c->count_modes)
> > - return false;
> > -
> > - if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
> > - return false;
> > -
> > - if (opt.small_modes)
> > - *mode = get_connector_smallest_mode(c);
> > - else
> > - *mode = &c->modes[0];
> > -
> > - /* On HSW the CRC WA is so awful that it makes you think everything is
> > - * bugged. */
> > - if (IS_HASWELL(intel_get_drm_devid(drm.fd)) &&
> > - c->connector_type == DRM_MODE_CONNECTOR_eDP)
> > - *mode = &std_1024_mode;
> > -
> > - return true;
> > -}
> > -
> > static bool connector_supports_pipe_a(drmModeConnectorPtr connector)
> > {
> > int i;
> > @@ -473,7 +427,7 @@ static bool find_connector(bool edp_only, bool pipe_a, uint32_t forbidden_id,
> > continue;
> > if (c->connector_id == forbidden_id)
> > continue;
> > - if (!connector_get_mode(c, &mode))
> > + if (!igt_psr_find_good_mode(c, &mode))
> > continue;
> >
> > *ret_connector = c;
> > @@ -804,23 +758,6 @@ static void fbc_print_status(void)
> > igt_info("FBC status:\n%s\n", buf);
> > }
> >
> > -static bool psr_is_enabled(void)
> > -{
> > - char buf[256];
> > -
> > - debugfs_read("i915_edp_psr_status", buf);
> > - return strstr(buf, "\nActive: yes\n") &&
> > - strstr(buf, "\nHW Enabled & Active bit: yes\n");
> > -}
> > -
> > -static void psr_print_status(void)
> > -{
> > - char buf[256];
> > -
> > - debugfs_read("i915_edp_psr_status", buf);
> > - igt_info("PSR status:\n%s\n", buf);
> > -}
> > -
> > static struct timespec fbc_get_last_action(void)
> > {
> > struct timespec ret = { 0, 0 };
> > @@ -926,44 +863,31 @@ static bool fbc_wait_until_enabled(void)
> > return igt_wait(fbc_is_enabled(), 2000, 1);
> > }
> >
> > -static bool psr_wait_until_enabled(void)
> > -{
> > - return igt_wait(psr_is_enabled(), 5000, 1);
> > -}
> > -
> > #define fbc_enable() igt_set_module_param_int("enable_fbc", 1)
> > #define fbc_disable() igt_set_module_param_int("enable_fbc", 0)
> > -#define psr_enable() igt_set_module_param_int("enable_psr", 1)
> > -#define psr_disable() igt_set_module_param_int("enable_psr", 0)
> >
> > static void get_sink_crc(sink_crc_t *crc, bool mandatory)
> > {
> > - int rc, errno_;
> > + int rc;
> >
> > if (!sink_crc.supported) {
> > memcpy(crc, "unsupported!", SINK_CRC_SIZE);
>
> this doesn't fit anymore
>
> > return;
> > }
> >
> > - lseek(sink_crc.fd, 0, SEEK_SET);
> > -
> > - rc = read(sink_crc.fd, crc->data, SINK_CRC_SIZE);
> > - errno_ = errno;
> > -
> > - if (rc == -1 && errno_ == ENOTTY) {
> > + rc = igt_psr_get_sink_crc(sink_crc.fd, crc->data);
> > + if (rc == ENOTTY) {
> > igt_info("Sink CRC not supported: panel doesn't support it\n");
> > sink_crc.supported = false;
> > - } else if (rc == -1 && errno_ == ETIMEDOUT) {
> > - if (sink_crc.reliable) {
> > - igt_info("Sink CRC is unreliable on this machine.\n");
> > + } else if (rc == ETIMEDOUT) {
> > + if (sink_crc.reliable)
> > sink_crc.reliable = false;
> > - }
> > +
> >
> > if (mandatory)
> > igt_skip("Sink CRC is unreliable on this machine.\n");
> > } else {
> > - igt_assert_f(rc != -1, "Unexpected error: %d\n", errno_);
> > - igt_assert(rc == SINK_CRC_SIZE);
> > + igt_assert_f(rc == 0, "Unexpected error: %d\n", rc);
> > }
> > }
> >
> > @@ -1180,7 +1104,7 @@ static void disable_features(const struct test_mode *t)
> > return;
> >
> > fbc_disable();
> > - psr_disable();
> > + igt_psr_disable();
> > }
> >
> > static void *busy_thread_func(void *data)
> > @@ -1432,7 +1356,7 @@ static void setup_sink_crc(void)
> > fill_fb_region(&prim_mode_params.fb, COLOR_PRIM_BG);
> > set_mode_for_params(&prim_mode_params);
> >
> > - sink_crc.fd = openat(drm.debugfs, "i915_sink_crc_eDP1", O_RDONLY);
> > + sink_crc.fd = igt_psr_open_sink_crc(drm.debugfs);
> > igt_assert_lte(0, sink_crc.fd);
> >
> > /* Do a first read to try to detect if it's supported. */
> > @@ -1547,14 +1471,6 @@ static void teardown_fbc(void)
> > {
> > }
> >
> > -static bool psr_sink_has_support(void)
> > -{
> > - char buf[256];
> > -
> > - debugfs_read("i915_edp_psr_status", buf);
> > - return strstr(buf, "Sink_Support: yes\n");
> > -}
> > -
> > static void setup_psr(void)
> > {
> > if (get_connector(prim_mode_params.connector_id)->connector_type !=
> > @@ -1563,7 +1479,7 @@ static void setup_psr(void)
> > return;
> > }
> >
> > - if (!psr_sink_has_support()) {
> > + if (!igt_psr_sink_support(drm.fd)) {
> > igt_info("Can't test PSR: not supported by sink.\n");
> > return;
> > }
> > @@ -1717,12 +1633,15 @@ static int adjust_assertion_flags(const struct test_mode *t, int flags)
> > } \
> > \
> > if (flags_ & ASSERT_PSR_ENABLED) { \
> > - if (!psr_wait_until_enabled()) { \
> > - psr_print_status(); \
> > + if (!igt_psr_await_status(drm.fd, true)) { \
> > + igt_psr_print_status(drm.fd); \
> > igt_assert_f(false, "PSR disabled\n"); \
> > } \
> > } else if (flags_ & ASSERT_PSR_DISABLED) { \
> > - igt_assert(!psr_wait_until_enabled()); \
> > + if (!igt_psr_await_status(drm.fd, false)) { \
> > + igt_psr_print_status(drm.fd); \
> > + igt_assert_f(false, "PSR enabled\n"); \
> > + } \
> > } \
> > } while (0)
> >
> > @@ -1822,7 +1741,7 @@ static void enable_features_for_test(const struct test_mode *t)
> > if (t->feature & FEATURE_FBC)
> > fbc_enable();
> > if (t->feature & FEATURE_PSR)
> > - psr_enable();
> > + igt_psr_enable();
> > }
> >
> > static void check_test_requirements(const struct test_mode *t)
> > --
> > 2.7.4
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>
>
> --
> Rodrigo Vivi
> Blog: http://blog.vivi.eng.br
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-07-07 22:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-30 19:12 [PATCH IGT v2 0/6] IGT PSR Fix-ups Jim Bride
2017-06-30 19:12 ` [PATCH IGT v2 1/6] tests/kms_psr_sink_crc: Change assert_or_manual() to a macro Jim Bride
2017-06-30 19:55 ` Rodrigo Vivi
2017-06-30 19:12 ` [PATCH IGT v2 2/6] lib: Add PSR utility functions to igt library Jim Bride
2017-06-30 20:11 ` Rodrigo Vivi
2017-07-07 13:45 ` Jim Bride
2017-06-30 20:54 ` Paulo Zanoni
2017-07-07 13:53 ` Jim Bride
2017-06-30 19:12 ` [PATCH IGT v2 3/6] tests/kms_psr_sink_crc: Refactor to use new PSR library primitives Jim Bride
2017-06-30 19:12 ` [PATCH IGT v2 4/6] tests/kms_frontbuffer_tracking: Refactor to use IGT PSR library functions Jim Bride
2017-06-30 20:19 ` Rodrigo Vivi
2017-07-07 22:30 ` Jim Bride [this message]
2017-06-30 20:46 ` Paulo Zanoni
2017-06-30 21:10 ` Paulo Zanoni
2017-06-30 19:12 ` [PATCH IGT v2 5/6] tests/kms_frontbuffer_tracking: Fix multidraw subtest Jim Bride
2017-06-30 20:21 ` Rodrigo Vivi
2017-07-07 19:43 ` Paulo Zanoni
2017-06-30 19:12 ` [PATCH IGT v2 6/6] tests/kms_fbcon_fbt: Refactor to use IGT PSR library functions Jim Bride
2017-06-30 21:13 ` Paulo Zanoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170707223020.GA10605@shiv \
--to=jim.bride@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.com \
--cc=rodrigo.vivi@gmail.com \
--cc=rodrigo.vivi@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox