Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
@ 2025-03-09 10:03 Mohammed Thasleem
  2025-03-09 10:23 ` ✗ Fi.CI.BUILD: failure for " Patchwork
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Mohammed Thasleem @ 2025-03-09 10:03 UTC (permalink / raw)
  To: igt-dev; +Cc: Mohammed Thasleem

PkgC counter was removed from MTL onwards, so an alternative counter was
used to validate deep pkgC tests. With the new KMD changes, a dedicated DC6
debugfs entry counter has been created to validate these tests,
allowing for the removal of the existing alternative counter code.

Signed-off-by: Mohammed Thasleem <mohammed.thasleem@intel.com>
---
 tests/intel/kms_pm_dc.c | 27 ++++++---------------------
 1 file changed, 6 insertions(+), 21 deletions(-)

diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index b4f30a37d..b47a65f1a 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -617,22 +617,7 @@ static int has_panels_without_dc_support(igt_display_t *display)
 	return external_panel;
 }
 
-static unsigned int read_pkgc_counter(int debugfs_root_fd)
-{
-	char buf[4096];
-	char *str;
-	int len;
-
-	len = igt_sysfs_read(debugfs_root_fd, PACKAGE_CSTATE_PATH, buf, sizeof(buf) - 1);
-	igt_skip_on_f(len < 0, "PKGC state file not found\n");
-	buf[len] = '\0';
-	str = strstr(buf, "Package C10");
-	igt_skip_on_f(!str, "PKGC10 is not supported.\n");
-
-	return get_dc_counter(str);
-}
-
-static void test_deep_pkgc_state(data_t *data)
+static void test_deep_pkgc_state(data_t *data, int dc_target)
 {
 	unsigned int pre_val = 0, cur_val = 0;
 	time_t start = time(NULL);
@@ -694,7 +679,7 @@ static void test_deep_pkgc_state(data_t *data)
 	igt_display_commit(&data->display);
 	/* Wait for the vblank to sync the frame time */
 	igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 1);
-	pre_val = read_pkgc_counter(data->debugfs_root_fd);
+	pre_val = read_dc_counter(data->debugfs_fd, dc_target);
 	/* Add a half-frame delay to ensure the flip occurs when the frame is active. */
 	usleep(delay * 0.5);
 
@@ -703,8 +688,8 @@ static void test_deep_pkgc_state(data_t *data)
 		igt_plane_set_fb(primary, flip ? &data->fb_rgb : &data->fb_rgr);
 		igt_display_commit(&data->display);
 
-		igt_wait((cur_val = read_pkgc_counter(data->debugfs_root_fd)) > pre_val,
-						      (delay * 2), (5 * MSEC));
+		igt_wait((cur_val = read_dc_counter(data->debugfs_fd, dc_target)) > pre_val,
+						    (delay * 2), (5 * MSEC));
 		if (cur_val > pre_val) {
 			pkgc_flag = true;
 			break;
@@ -712,7 +697,7 @@ static void test_deep_pkgc_state(data_t *data)
 	}
 
 	cleanup_dc3co_fbs(data);
-	igt_assert_f(pkgc_flag, "PKGC10 is not achieved.\n");
+	igt_assert_f(pkgc_flag, "Deep pkgc state is not achieved.\n");
 }
 
 static void kms_poll_state_restore(int sig)
@@ -787,7 +772,7 @@ igt_main
 		igt_require_f(igt_pm_pc8_plus_residencies_enabled(data.msr_fd),
 			      "PC8+ residencies not supported\n");
 		igt_require(intel_display_ver(data.devid) >= 20);
-		test_deep_pkgc_state(&data);
+		test_deep_pkgc_state(&data, CHECK_DC6);
 	}
 
 	igt_describe("This test validates display engine entry to DC5 state "
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* ✗ Fi.CI.BUILD: failure for tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
  2025-03-09 10:03 [PATCH i-g-t] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test Mohammed Thasleem
@ 2025-03-09 10:23 ` Patchwork
  2025-03-09 10:28 ` [PATCH i-g-t v2] " Mohammed Thasleem
  2025-03-09 11:05 ` ✗ Fi.CI.BUILD: failure for tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test (rev2) Patchwork
  2 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2025-03-09 10:23 UTC (permalink / raw)
  To: Mohammed Thasleem; +Cc: igt-dev

== Series Details ==

Series: tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
URL   : https://patchwork.freedesktop.org/series/146049/
State : failure

== Summary ==

Applying: tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
Patch failed at 0001 tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH i-g-t v2] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
  2025-03-09 10:03 [PATCH i-g-t] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test Mohammed Thasleem
  2025-03-09 10:23 ` ✗ Fi.CI.BUILD: failure for " Patchwork
@ 2025-03-09 10:28 ` Mohammed Thasleem
  2025-03-25 16:28   ` Imre Deak
  2025-03-09 11:05 ` ✗ Fi.CI.BUILD: failure for tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test (rev2) Patchwork
  2 siblings, 1 reply; 6+ messages in thread
From: Mohammed Thasleem @ 2025-03-09 10:28 UTC (permalink / raw)
  To: igt-dev; +Cc: Mohammed Thasleem

PkgC counter was removed from MTL onwards, so an alternative counter was
used to validate deep pkgC tests. With the new KMD changes, a dedicated DC6
debugfs entry counter has been created to validate these tests,
allowing for the removal of the existing alternative counter code.

v2: Updated igt_describe and discription.

Signed-off-by: Mohammed Thasleem <mohammed.thasleem@intel.com>
---
 tests/intel/kms_pm_dc.c | 34 ++++++++++------------------------
 1 file changed, 10 insertions(+), 24 deletions(-)

diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
index b4f30a37d..ed24a24b8 100644
--- a/tests/intel/kms_pm_dc.c
+++ b/tests/intel/kms_pm_dc.c
@@ -78,7 +78,8 @@
  * Description: This test validates display engine entry to DC9 state
  *
  * SUBTEST: deep-pkgc
- * Description: This test validates display engine entry to PKGC10 state for extended vblank
+ * Description: This test validates display engine entry to deep pkgc by
+ *              checking dc6 entry for extended vblank
  * Functionality: pm_dc
  *
  * SUBTEST: dc5-retention-flops
@@ -617,22 +618,7 @@ static int has_panels_without_dc_support(igt_display_t *display)
 	return external_panel;
 }
 
-static unsigned int read_pkgc_counter(int debugfs_root_fd)
-{
-	char buf[4096];
-	char *str;
-	int len;
-
-	len = igt_sysfs_read(debugfs_root_fd, PACKAGE_CSTATE_PATH, buf, sizeof(buf) - 1);
-	igt_skip_on_f(len < 0, "PKGC state file not found\n");
-	buf[len] = '\0';
-	str = strstr(buf, "Package C10");
-	igt_skip_on_f(!str, "PKGC10 is not supported.\n");
-
-	return get_dc_counter(str);
-}
-
-static void test_deep_pkgc_state(data_t *data)
+static void test_deep_pkgc_state(data_t *data, int dc_target)
 {
 	unsigned int pre_val = 0, cur_val = 0;
 	time_t start = time(NULL);
@@ -694,7 +680,7 @@ static void test_deep_pkgc_state(data_t *data)
 	igt_display_commit(&data->display);
 	/* Wait for the vblank to sync the frame time */
 	igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 1);
-	pre_val = read_pkgc_counter(data->debugfs_root_fd);
+	pre_val = read_dc_counter(data->debugfs_fd, dc_target);
 	/* Add a half-frame delay to ensure the flip occurs when the frame is active. */
 	usleep(delay * 0.5);
 
@@ -703,8 +689,8 @@ static void test_deep_pkgc_state(data_t *data)
 		igt_plane_set_fb(primary, flip ? &data->fb_rgb : &data->fb_rgr);
 		igt_display_commit(&data->display);
 
-		igt_wait((cur_val = read_pkgc_counter(data->debugfs_root_fd)) > pre_val,
-						      (delay * 2), (5 * MSEC));
+		igt_wait((cur_val = read_dc_counter(data->debugfs_fd, dc_target)) > pre_val,
+						    (delay * 2), (5 * MSEC));
 		if (cur_val > pre_val) {
 			pkgc_flag = true;
 			break;
@@ -712,7 +698,7 @@ static void test_deep_pkgc_state(data_t *data)
 	}
 
 	cleanup_dc3co_fbs(data);
-	igt_assert_f(pkgc_flag, "PKGC10 is not achieved.\n");
+	igt_assert_f(pkgc_flag, "Deep pkgc state is not achieved.\n");
 }
 
 static void kms_poll_state_restore(int sig)
@@ -781,13 +767,13 @@ igt_main
 		test_dc_state_psr(&data, CHECK_DC6);
 	}
 
-	igt_describe("This test validates display engine entry to PKGC10 state "
-		     "during extended vblank");
+	igt_describe("This test validates display engine entry to deep pkgc by "
+		     "checking dc6 state entry during extended vblank");
 	igt_subtest("deep-pkgc") {
 		igt_require_f(igt_pm_pc8_plus_residencies_enabled(data.msr_fd),
 			      "PC8+ residencies not supported\n");
 		igt_require(intel_display_ver(data.devid) >= 20);
-		test_deep_pkgc_state(&data);
+		test_deep_pkgc_state(&data, CHECK_DC6);
 	}
 
 	igt_describe("This test validates display engine entry to DC5 state "
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* ✗ Fi.CI.BUILD: failure for tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test (rev2)
  2025-03-09 10:03 [PATCH i-g-t] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test Mohammed Thasleem
  2025-03-09 10:23 ` ✗ Fi.CI.BUILD: failure for " Patchwork
  2025-03-09 10:28 ` [PATCH i-g-t v2] " Mohammed Thasleem
@ 2025-03-09 11:05 ` Patchwork
  2 siblings, 0 replies; 6+ messages in thread
From: Patchwork @ 2025-03-09 11:05 UTC (permalink / raw)
  To: Mohammed Thasleem; +Cc: igt-dev

== Series Details ==

Series: tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test (rev2)
URL   : https://patchwork.freedesktop.org/series/146049/
State : failure

== Summary ==

Applying: tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
Patch failed at 0001 tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH i-g-t v2] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
  2025-03-09 10:28 ` [PATCH i-g-t v2] " Mohammed Thasleem
@ 2025-03-25 16:28   ` Imre Deak
  2025-04-04 14:22     ` Thasleem, Mohammed
  0 siblings, 1 reply; 6+ messages in thread
From: Imre Deak @ 2025-03-25 16:28 UTC (permalink / raw)
  To: Mohammed Thasleem; +Cc: igt-dev

On Sun, Mar 09, 2025 at 03:58:33PM +0530, Mohammed Thasleem wrote:
> PkgC counter was removed from MTL onwards, so an alternative counter was
> used to validate deep pkgC tests. With the new KMD changes, a dedicated DC6
> debugfs entry counter has been created to validate these tests,
> allowing for the removal of the existing alternative counter code.
> 
> v2: Updated igt_describe and discription.
> 
> Signed-off-by: Mohammed Thasleem <mohammed.thasleem@intel.com>
> ---
>  tests/intel/kms_pm_dc.c | 34 ++++++++++------------------------
>  1 file changed, 10 insertions(+), 24 deletions(-)
> 
> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
> index b4f30a37d..ed24a24b8 100644
> --- a/tests/intel/kms_pm_dc.c
> +++ b/tests/intel/kms_pm_dc.c
> @@ -78,7 +78,8 @@
>   * Description: This test validates display engine entry to DC9 state
>   *
>   * SUBTEST: deep-pkgc
> - * Description: This test validates display engine entry to PKGC10 state for extended vblank
> + * Description: This test validates display engine entry to deep pkgc by
> + *              checking dc6 entry for extended vblank
>   * Functionality: pm_dc
>   *
>   * SUBTEST: dc5-retention-flops
> @@ -617,22 +618,7 @@ static int has_panels_without_dc_support(igt_display_t *display)
>  	return external_panel;
>  }
>  
> -static unsigned int read_pkgc_counter(int debugfs_root_fd)
> -{
> -	char buf[4096];
> -	char *str;
> -	int len;
> -
> -	len = igt_sysfs_read(debugfs_root_fd, PACKAGE_CSTATE_PATH, buf, sizeof(buf) - 1);
> -	igt_skip_on_f(len < 0, "PKGC state file not found\n");
> -	buf[len] = '\0';
> -	str = strstr(buf, "Package C10");
> -	igt_skip_on_f(!str, "PKGC10 is not supported.\n");
> -
> -	return get_dc_counter(str);
> -}
> -
> -static void test_deep_pkgc_state(data_t *data)
> +static void test_deep_pkgc_state(data_t *data, int dc_target)
>  {
>  	unsigned int pre_val = 0, cur_val = 0;
>  	time_t start = time(NULL);
> @@ -694,7 +680,7 @@ static void test_deep_pkgc_state(data_t *data)
>  	igt_display_commit(&data->display);
>  	/* Wait for the vblank to sync the frame time */
>  	igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 1);
> -	pre_val = read_pkgc_counter(data->debugfs_root_fd);
> +	pre_val = read_dc_counter(data->debugfs_fd, dc_target);
>  	/* Add a half-frame delay to ensure the flip occurs when the frame is active. */
>  	usleep(delay * 0.5);
>  
> @@ -703,8 +689,8 @@ static void test_deep_pkgc_state(data_t *data)
>  		igt_plane_set_fb(primary, flip ? &data->fb_rgb : &data->fb_rgr);
>  		igt_display_commit(&data->display);
>  
> -		igt_wait((cur_val = read_pkgc_counter(data->debugfs_root_fd)) > pre_val,
> -						      (delay * 2), (5 * MSEC));
> +		igt_wait((cur_val = read_dc_counter(data->debugfs_fd, dc_target)) > pre_val,
> +						    (delay * 2), (5 * MSEC));
>  		if (cur_val > pre_val) {
>  			pkgc_flag = true;
>  			break;
> @@ -712,7 +698,7 @@ static void test_deep_pkgc_state(data_t *data)
>  	}
>  
>  	cleanup_dc3co_fbs(data);
> -	igt_assert_f(pkgc_flag, "PKGC10 is not achieved.\n");
> +	igt_assert_f(pkgc_flag, "Deep pkgc state is not achieved.\n");
>  }
>  
>  static void kms_poll_state_restore(int sig)
> @@ -781,13 +767,13 @@ igt_main
>  		test_dc_state_psr(&data, CHECK_DC6);
>  	}
>  
> -	igt_describe("This test validates display engine entry to PKGC10 state "
> -		     "during extended vblank");
> +	igt_describe("This test validates display engine entry to deep pkgc by "
> +		     "checking dc6 state entry during extended vblank");
>  	igt_subtest("deep-pkgc") {
>  		igt_require_f(igt_pm_pc8_plus_residencies_enabled(data.msr_fd),
>  			      "PC8+ residencies not supported\n");
>  		igt_require(intel_display_ver(data.devid) >= 20);
> -		test_deep_pkgc_state(&data);
> +		test_deep_pkgc_state(&data, CHECK_DC6);

What would be now the difference between this and the DC6 tests?

>  	}
>  
>  	igt_describe("This test validates display engine entry to DC5 state "
> -- 
> 2.43.0
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH i-g-t v2] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test
  2025-03-25 16:28   ` Imre Deak
@ 2025-04-04 14:22     ` Thasleem, Mohammed
  0 siblings, 0 replies; 6+ messages in thread
From: Thasleem, Mohammed @ 2025-04-04 14:22 UTC (permalink / raw)
  To: imre.deak; +Cc: igt-dev



On 3/25/2025 9:58 PM, Imre Deak wrote:
> On Sun, Mar 09, 2025 at 03:58:33PM +0530, Mohammed Thasleem wrote:
>> PkgC counter was removed from MTL onwards, so an alternative counter was
>> used to validate deep pkgC tests. With the new KMD changes, a dedicated DC6
>> debugfs entry counter has been created to validate these tests,
>> allowing for the removal of the existing alternative counter code.
>>
>> v2: Updated igt_describe and discription.
>>
>> Signed-off-by: Mohammed Thasleem <mohammed.thasleem@intel.com>
>> ---
>>   tests/intel/kms_pm_dc.c | 34 ++++++++++------------------------
>>   1 file changed, 10 insertions(+), 24 deletions(-)
>>
>> diff --git a/tests/intel/kms_pm_dc.c b/tests/intel/kms_pm_dc.c
>> index b4f30a37d..ed24a24b8 100644
>> --- a/tests/intel/kms_pm_dc.c
>> +++ b/tests/intel/kms_pm_dc.c
>> @@ -78,7 +78,8 @@
>>    * Description: This test validates display engine entry to DC9 state
>>    *
>>    * SUBTEST: deep-pkgc
>> - * Description: This test validates display engine entry to PKGC10 state for extended vblank
>> + * Description: This test validates display engine entry to deep pkgc by
>> + *              checking dc6 entry for extended vblank
>>    * Functionality: pm_dc
>>    *
>>    * SUBTEST: dc5-retention-flops
>> @@ -617,22 +618,7 @@ static int has_panels_without_dc_support(igt_display_t *display)
>>   	return external_panel;
>>   }
>>   
>> -static unsigned int read_pkgc_counter(int debugfs_root_fd)
>> -{
>> -	char buf[4096];
>> -	char *str;
>> -	int len;
>> -
>> -	len = igt_sysfs_read(debugfs_root_fd, PACKAGE_CSTATE_PATH, buf, sizeof(buf) - 1);
>> -	igt_skip_on_f(len < 0, "PKGC state file not found\n");
>> -	buf[len] = '\0';
>> -	str = strstr(buf, "Package C10");
>> -	igt_skip_on_f(!str, "PKGC10 is not supported.\n");
>> -
>> -	return get_dc_counter(str);
>> -}
>> -
>> -static void test_deep_pkgc_state(data_t *data)
>> +static void test_deep_pkgc_state(data_t *data, int dc_target)
>>   {
>>   	unsigned int pre_val = 0, cur_val = 0;
>>   	time_t start = time(NULL);
>> @@ -694,7 +680,7 @@ static void test_deep_pkgc_state(data_t *data)
>>   	igt_display_commit(&data->display);
>>   	/* Wait for the vblank to sync the frame time */
>>   	igt_wait_for_vblank_count(data->drm_fd, data->display.pipes[pipe].crtc_offset, 1);
>> -	pre_val = read_pkgc_counter(data->debugfs_root_fd);
>> +	pre_val = read_dc_counter(data->debugfs_fd, dc_target);
>>   	/* Add a half-frame delay to ensure the flip occurs when the frame is active. */
>>   	usleep(delay * 0.5);
>>   
>> @@ -703,8 +689,8 @@ static void test_deep_pkgc_state(data_t *data)
>>   		igt_plane_set_fb(primary, flip ? &data->fb_rgb : &data->fb_rgr);
>>   		igt_display_commit(&data->display);
>>   
>> -		igt_wait((cur_val = read_pkgc_counter(data->debugfs_root_fd)) > pre_val,
>> -						      (delay * 2), (5 * MSEC));
>> +		igt_wait((cur_val = read_dc_counter(data->debugfs_fd, dc_target)) > pre_val,
>> +						    (delay * 2), (5 * MSEC));
>>   		if (cur_val > pre_val) {
>>   			pkgc_flag = true;
>>   			break;
>> @@ -712,7 +698,7 @@ static void test_deep_pkgc_state(data_t *data)
>>   	}
>>   
>>   	cleanup_dc3co_fbs(data);
>> -	igt_assert_f(pkgc_flag, "PKGC10 is not achieved.\n");
>> +	igt_assert_f(pkgc_flag, "Deep pkgc state is not achieved.\n");
>>   }
>>   
>>   static void kms_poll_state_restore(int sig)
>> @@ -781,13 +767,13 @@ igt_main
>>   		test_dc_state_psr(&data, CHECK_DC6);
>>   	}
>>   
>> -	igt_describe("This test validates display engine entry to PKGC10 state "
>> -		     "during extended vblank");
>> +	igt_describe("This test validates display engine entry to deep pkgc by "
>> +		     "checking dc6 state entry during extended vblank");
>>   	igt_subtest("deep-pkgc") {
>>   		igt_require_f(igt_pm_pc8_plus_residencies_enabled(data.msr_fd),
>>   			      "PC8+ residencies not supported\n");
>>   		igt_require(intel_display_ver(data.devid) >= 20);
>> -		test_deep_pkgc_state(&data);
>> +		test_deep_pkgc_state(&data, CHECK_DC6);
> 
> What would be now the difference between this and the DC6 tests?
	-->this test also depends on deep-pkgc(pkgc8), which validates 	display 
engine entry to PkgC8 state for extended vblank scenario. 	Here we took 
ref of pkgc10 as pkgc8 has been removed.
> 
>>   	}
>>   
>>   	igt_describe("This test validates display engine entry to DC5 state "
>> -- 
>> 2.43.0
>>


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-04-04 14:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-09 10:03 [PATCH i-g-t] tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test Mohammed Thasleem
2025-03-09 10:23 ` ✗ Fi.CI.BUILD: failure for " Patchwork
2025-03-09 10:28 ` [PATCH i-g-t v2] " Mohammed Thasleem
2025-03-25 16:28   ` Imre Deak
2025-04-04 14:22     ` Thasleem, Mohammed
2025-03-09 11:05 ` ✗ Fi.CI.BUILD: failure for tests/intel/kms_pm_dc: Remove PkgC dependecy to validate deep-pkgc test (rev2) Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox