From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id D45946E985 for ; Fri, 19 Mar 2021 06:02:46 +0000 (UTC) From: "Gupta, Anshuman" Date: Fri, 19 Mar 2021 06:02:43 +0000 Message-ID: <47b1a35b1fe34558bc0b91206e0819c3@intel.com> References: <20210121083432.526247-1-jigar.bhatt@intel.com> <1616131284-22839-1-git-send-email-jigar.bhatt@intel.com> In-Reply-To: <1616131284-22839-1-git-send-email-jigar.bhatt@intel.com> Content-Language: en-US MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v10] tests/i915/i915_pm_dc: Add DC9 igt test Function List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Bhatt, Jigar" , "igt-dev@lists.freedesktop.org" List-ID: > -----Original Message----- > From: Bhatt, Jigar > Sent: Friday, March 19, 2021 10:51 AM > To: igt-dev@lists.freedesktop.org > Cc: Bhatt, Jigar ; Gupta, Anshuman > > Subject: [PATCH i-g-t v10] tests/i915/i915_pm_dc: Add DC9 igt test Function > > DC9 igt test validation depends on DC{5,6} counters reset. > When Display Engine enters to DC9, it resets DMC f/w and DC5/DC6 counter. > We don't have a DC9 counter unlike DC{5,6}, therefore this tests uses DC{5,6} > counter reset method to validate DC9. Reviewed-by: Anshuman Gupta > > v10: [Anshuman] > - Revert the function name with check_dc9() only. > > v9: [Anshuman] > - Change function name check_dc9() to dc9_failed(). > > v8: [Anshuman] > - Add support_dc6() to check whether a platform supports dc6. > > v7: [Anshuman] > - Skip if no support of DC6. > > v6: [Anshuman] > - assert for DC6 counter in setup_dc9_dpms. > - Move dpms_off() to test_dc9_dpms(). > > Signed-off-by: Jigar Bhatt > --- > tests/i915/i915_pm_dc.c | 53 > +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > > diff --git a/tests/i915/i915_pm_dc.c b/tests/i915/i915_pm_dc.c index > 30c6024..4ba648e 100644 > --- a/tests/i915/i915_pm_dc.c > +++ b/tests/i915/i915_pm_dc.c > @@ -384,6 +384,52 @@ static void test_dc_state_dpms(data_t *data, int > dc_flag) > cleanup_dc_dpms(data); > } > > +static bool support_dc6(int debugfs_fd) { > + char buf[4096]; > + > + igt_debugfs_simple_read(debugfs_fd, "i915_dmc_info", > + buf, sizeof(buf)); > + return strstr(buf, "DC5 -> DC6 count"); } > + > +static bool check_dc9(uint32_t debugfs_fd, int prev_dc, bool > +dc6_supported, int seconds) { > +/* > + * Since we do not have DC9 Counter, > + * So we rely on dc5/dc6 counter reset to check if Display Engine was in DC9. > + */ > + return igt_wait(dc6_supported ? read_dc_counter(debugfs_fd, > CHECK_DC6) < > + prev_dc : read_dc_counter(debugfs_fd, CHECK_DC5) < > + prev_dc, seconds, 100); > +} > + > +static void setup_dc9_dpms(data_t *data, int prev_dc, bool > +dc6_supported) { > + setup_dc_dpms(data); > + dpms_off(data); > + igt_skip_on_f(!(igt_wait(dc6_supported ? read_dc_counter(data- > >debugfs_fd, CHECK_DC6) > > + prev_dc : read_dc_counter(data->debugfs_fd, > CHECK_DC5) > > + prev_dc, 3000, 100)), "Unable to enters > shallow DC states\n"); > + dpms_on(data); > + cleanup_dc_dpms(data); > +} > + > +static void test_dc9_dpms(data_t *data) { > + require_dc_counter(data->debugfs_fd, CHECK_DC5); > + bool dc6_supported = support_dc6(data->debugfs_fd); > + > + setup_dc9_dpms(data, dc6_supported ? read_dc_counter(data- > >debugfs_fd, CHECK_DC6) : > + read_dc_counter(data->debugfs_fd, CHECK_DC5), > dc6_supported); > + dpms_off(data); > + igt_assert_f(check_dc9(data->debugfs_fd, dc6_supported ? > + read_dc_counter(data->debugfs_fd, CHECK_DC6) : > + read_dc_counter(data->debugfs_fd, CHECK_DC5), > + dc6_supported, 3000), "Not in DC9\n"); > + dpms_on(data); > +} > + > IGT_TEST_DESCRIPTION("These tests validate Display Power DC states"); int > main(int argc, char *argv[]) { @@ -449,6 +495,13 @@ int main(int argc, char > *argv[]) > test_dc_state_dpms(&data, CHECK_DC6); > } > > + igt_describe("This test validates display engine entry to DC9 state"); > + igt_subtest("dc9-dpms") { > + igt_require_f(igt_pm_pc8_plus_residencies_enabled(data.msr_fd), > + "PC8+ residencies not supported\n"); > + test_dc9_dpms(&data); > + } > + > igt_fixture { > free(data.pwr_dmn_info); > close(data.debugfs_fd); > -- > 2.8.1 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev