dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Expose max and current bpc via debugfs
@ 2022-04-08  6:53 Bhanuprakash Modem
  2022-04-08  6:53 ` [PATCH 1/3] drm/debug: Expose connector's max supported " Bhanuprakash Modem
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2022-04-08  6:53 UTC (permalink / raw)
  To: intel-gfx, dri-devel, amd-gfx, jani.nikula, ville.syrjala,
	harry.wentland, swati2.sharma
  Cc: Bhanuprakash Modem

This series will expose the Connector's max supported bpc via connector
debugfs and Crtc's current bpc via crtc debugfs. Also move the existing
vendor specific "output_bpc" logic to drm.

Test-with: 20220408065143.1485069-2-bhanuprakash.modem@intel.com

Bhanuprakash Modem (3):
  drm/debug: Expose connector's max supported bpc via debugfs
  drm/i915/display/debug: Expose crtc current bpc via debugfs
  drm/amd/display: Move connector debugfs to drm

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  4 --
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 38 +++++++------------
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.h |  2 -
 drivers/gpu/drm/drm_debugfs.c                 | 21 ++++++++++
 .../drm/i915/display/intel_display_debugfs.c  | 28 ++++++++++++++
 5 files changed, 62 insertions(+), 31 deletions(-)

--
2.35.1


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

* [PATCH 1/3] drm/debug: Expose connector's max supported bpc via debugfs
  2022-04-08  6:53 [PATCH 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem
@ 2022-04-08  6:53 ` Bhanuprakash Modem
  2022-04-08 15:02   ` Harry Wentland
  2022-04-11  3:57   ` [V2 " Bhanuprakash Modem
  2022-04-08  6:53 ` [PATCH 2/3] drm/i915/display/debug: Expose crtc current " Bhanuprakash Modem
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2022-04-08  6:53 UTC (permalink / raw)
  To: intel-gfx, dri-devel, amd-gfx, jani.nikula, ville.syrjala,
	harry.wentland, swati2.sharma
  Cc: Bhanuprakash Modem

It's useful to know the connector's max supported bpc for IGT
testing. Expose it via a debugfs file on the connector "output_bpc".

Example: cat /sys/kernel/debug/dri/0/DP-1/output_bpc

Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 drivers/gpu/drm/drm_debugfs.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 7f1b82dbaebb..33e5345c6f3e 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -395,6 +395,23 @@ static int vrr_range_show(struct seq_file *m, void *data)
 }
 DEFINE_SHOW_ATTRIBUTE(vrr_range);
 
+/*
+ * Returns Connector's max supported bpc through debugfs file.
+ * Example usage: cat /sys/kernel/debug/dri/0/DP-1/max_bpc
+ */
+static int output_bpc_show(struct seq_file *m, void *data)
+{
+	struct drm_connector *connector = m->private;
+
+	if (connector->status != connector_status_connected)
+		return -ENODEV;
+
+	seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
+
+	return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(output_bpc);
+
 static const struct file_operations drm_edid_fops = {
 	.owner = THIS_MODULE,
 	.open = edid_open,
@@ -437,6 +454,10 @@ void drm_debugfs_connector_add(struct drm_connector *connector)
 	debugfs_create_file("vrr_range", S_IRUGO, root, connector,
 			    &vrr_range_fops);
 
+	/* max bpc */
+	debugfs_create_file("output_bpc", 0444, root, connector,
+			    &output_bpc_fops);
+
 	if (connector->funcs->debugfs_init)
 		connector->funcs->debugfs_init(connector, root);
 }
-- 
2.35.1


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

* [PATCH 2/3] drm/i915/display/debug: Expose crtc current bpc via debugfs
  2022-04-08  6:53 [PATCH 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem
  2022-04-08  6:53 ` [PATCH 1/3] drm/debug: Expose connector's max supported " Bhanuprakash Modem
@ 2022-04-08  6:53 ` Bhanuprakash Modem
  2022-04-08  6:53 ` [PATCH 3/3] drm/amd/display: Move connector debugfs to drm Bhanuprakash Modem
  2022-04-11  9:48 ` [V2 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem
  3 siblings, 0 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2022-04-08  6:53 UTC (permalink / raw)
  To: intel-gfx, dri-devel, amd-gfx, jani.nikula, ville.syrjala,
	harry.wentland, swati2.sharma
  Cc: Uma Shankar, Bhanuprakash Modem

This new debugfs will expose the currently using bpc by crtc.
It is very useful for verifying whether we enter the correct
output color depth from IGT.

This patch will also add the connector's max supported bpc to
"i915_display_info" debugfs.

Example:
cat /sys/kernel/debug/dri/0/crtc-0/i915_current_bpc
Current: 8

Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 .../drm/i915/display/intel_display_debugfs.c  | 28 +++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 452d773fd4e3..6c3954479047 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -590,6 +590,8 @@ static void intel_connector_info(struct seq_file *m,
 	seq_puts(m, "\tHDCP version: ");
 	intel_hdcp_info(m, intel_connector);
 
+	seq_printf(m, "\tmax bpc: %u\n", connector->display_info.bpc);
+
 	intel_panel_info(m, intel_connector);
 
 	seq_printf(m, "\tmodes:\n");
@@ -2202,6 +2204,29 @@ static const struct file_operations i915_dsc_bpp_fops = {
 	.write = i915_dsc_bpp_write
 };
 
+/*
+ * Returns the Current CRTC's bpc.
+ * Example usage: cat /sys/kernel/debug/dri/0/crtc-0/i915_current_bpc
+ */
+static int i915_current_bpc_show(struct seq_file *m, void *data)
+{
+	struct intel_crtc *crtc = to_intel_crtc(m->private);
+	struct intel_crtc_state *crtc_state;
+	int ret;
+
+	ret = drm_modeset_lock_single_interruptible(&crtc->base.mutex);
+	if (ret)
+		return ret;
+
+	crtc_state = to_intel_crtc_state(crtc->base.state);
+	seq_printf(m, "Current: %u\n", crtc_state->pipe_bpp / 3);
+
+	drm_modeset_unlock(&crtc->base.mutex);
+
+	return ret;
+}
+DEFINE_SHOW_ATTRIBUTE(i915_current_bpc);
+
 /**
  * intel_connector_debugfs_add - add i915 specific connector debugfs files
  * @connector: pointer to a registered drm_connector
@@ -2272,4 +2297,7 @@ void intel_crtc_debugfs_add(struct drm_crtc *crtc)
 
 	crtc_updates_add(crtc);
 	intel_fbc_crtc_debugfs_add(to_intel_crtc(crtc));
+
+	debugfs_create_file("i915_current_bpc", 0444, crtc->debugfs_entry, crtc,
+			    &i915_current_bpc_fops);
 }
-- 
2.35.1


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

* [PATCH 3/3] drm/amd/display: Move connector debugfs to drm
  2022-04-08  6:53 [PATCH 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem
  2022-04-08  6:53 ` [PATCH 1/3] drm/debug: Expose connector's max supported " Bhanuprakash Modem
  2022-04-08  6:53 ` [PATCH 2/3] drm/i915/display/debug: Expose crtc current " Bhanuprakash Modem
@ 2022-04-08  6:53 ` Bhanuprakash Modem
  2022-04-08 12:56   ` kernel test robot
  2022-04-08 15:03   ` Harry Wentland
  2022-04-11  9:48 ` [V2 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem
  3 siblings, 2 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2022-04-08  6:53 UTC (permalink / raw)
  To: intel-gfx, dri-devel, amd-gfx, jani.nikula, ville.syrjala,
	harry.wentland, swati2.sharma
  Cc: Rodrigo Siqueira, Bhanuprakash Modem

As drm_connector already have the display_info, instead of creating
"output_bpc" debugfs in vendor specific driver, move the logic to
the drm layer.

This patch will also move "Current" bpc to the crtc debugfs from
connector debugfs, since we are getting this info from crtc_state.

Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  4 --
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 38 +++++++------------
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.h |  2 -
 3 files changed, 13 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 73423b805b54..f89651c71ec7 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -6615,14 +6615,12 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc)
 	return &state->base;
 }
 
-#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
 static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
 {
 	crtc_debugfs_init(crtc);
 
 	return 0;
 }
-#endif
 
 static inline int dm_set_vupdate_irq(struct drm_crtc *crtc, bool enable)
 {
@@ -6720,9 +6718,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
 	.enable_vblank = dm_enable_vblank,
 	.disable_vblank = dm_disable_vblank,
 	.get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp,
-#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
 	.late_register = amdgpu_dm_crtc_late_register,
-#endif
 };
 
 static enum drm_connector_status
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
index da17ece1a2c5..3ee26083920b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
@@ -873,28 +873,18 @@ static int psr_capability_show(struct seq_file *m, void *data)
 }
 
 /*
- * Returns the current and maximum output bpc for the connector.
- * Example usage: cat /sys/kernel/debug/dri/0/DP-1/output_bpc
+ * Returns the current bpc for the crtc.
+ * Example usage: cat /sys/kernel/debug/dri/0/crtc-0/amdgpu_current_bpc
  */
-static int output_bpc_show(struct seq_file *m, void *data)
+static int amdgpu_current_bpc_show(struct seq_file *m, void *data)
 {
-	struct drm_connector *connector = m->private;
-	struct drm_device *dev = connector->dev;
-	struct drm_crtc *crtc = NULL;
+	struct drm_crtc *crtc = m->private;
+	struct drm_device *dev = crtc->dev;
 	struct dm_crtc_state *dm_crtc_state = NULL;
 	int res = -ENODEV;
 	unsigned int bpc;
 
 	mutex_lock(&dev->mode_config.mutex);
-	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
-
-	if (connector->state == NULL)
-		goto unlock;
-
-	crtc = connector->state->crtc;
-	if (crtc == NULL)
-		goto unlock;
-
 	drm_modeset_lock(&crtc->mutex, NULL);
 	if (crtc->state == NULL)
 		goto unlock;
@@ -924,18 +914,15 @@ static int output_bpc_show(struct seq_file *m, void *data)
 	}
 
 	seq_printf(m, "Current: %u\n", bpc);
-	seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
 	res = 0;
 
 unlock:
-	if (crtc)
-		drm_modeset_unlock(&crtc->mutex);
-
-	drm_modeset_unlock(&dev->mode_config.connection_mutex);
+	drm_modeset_unlock(&crtc->mutex);
 	mutex_unlock(&dev->mode_config.mutex);
 
 	return res;
 }
+DEFINE_SHOW_ATTRIBUTE(amdgpu_current_bpc);
 
 /*
  * Example usage:
@@ -2541,7 +2528,6 @@ static int target_backlight_show(struct seq_file *m, void *unused)
 DEFINE_SHOW_ATTRIBUTE(dp_dsc_fec_support);
 DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
 DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
-DEFINE_SHOW_ATTRIBUTE(output_bpc);
 DEFINE_SHOW_ATTRIBUTE(dp_lttpr_status);
 #ifdef CONFIG_DRM_AMD_DC_HDCP
 DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
@@ -2788,7 +2774,6 @@ static const struct {
 	const struct file_operations *fops;
 } connector_debugfs_entries[] = {
 		{"force_yuv420_output", &force_yuv420_output_fops},
-		{"output_bpc", &output_bpc_fops},
 		{"trigger_hotplug", &trigger_hotplug_debugfs_fops},
 		{"internal_display", &internal_display_fops}
 };
@@ -3172,9 +3157,10 @@ static int crc_win_update_get(void *data, u64 *val)
 
 DEFINE_DEBUGFS_ATTRIBUTE(crc_win_update_fops, crc_win_update_get,
 			 crc_win_update_set, "%llu\n");
-
+#endif
 void crtc_debugfs_init(struct drm_crtc *crtc)
 {
+#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
 	struct dentry *dir = debugfs_lookup("crc", crtc->debugfs_entry);
 
 	if (!dir)
@@ -3190,9 +3176,11 @@ void crtc_debugfs_init(struct drm_crtc *crtc)
 				   &crc_win_y_end_fops);
 	debugfs_create_file_unsafe("crc_win_update", 0644, dir, crtc,
 				   &crc_win_update_fops);
-
-}
 #endif
+	debugfs_create_file("amdgpu_current_bpc", 0644, crtc->debugfs_entry,
+			    crtc, &amdgpu_current_bpc_fops);
+}
+
 /*
  * Writes DTN log state to the user supplied buffer.
  * Example usage: cat /sys/kernel/debug/dri/0/amdgpu_dm_dtn_log
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
index 3366cb644053..071200473c27 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
@@ -31,8 +31,6 @@
 
 void connector_debugfs_init(struct amdgpu_dm_connector *connector);
 void dtn_debugfs_init(struct amdgpu_device *adev);
-#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
 void crtc_debugfs_init(struct drm_crtc *crtc);
-#endif
 
 #endif
-- 
2.35.1


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

* Re: [PATCH 3/3] drm/amd/display: Move connector debugfs to drm
  2022-04-08  6:53 ` [PATCH 3/3] drm/amd/display: Move connector debugfs to drm Bhanuprakash Modem
@ 2022-04-08 12:56   ` kernel test robot
  2022-04-08 15:03   ` Harry Wentland
  1 sibling, 0 replies; 12+ messages in thread
From: kernel test robot @ 2022-04-08 12:56 UTC (permalink / raw)
  To: Bhanuprakash Modem, intel-gfx, dri-devel, amd-gfx, jani.nikula,
	ville.syrjala, harry.wentland, swati2.sharma
  Cc: Rodrigo Siqueira, kbuild-all, Bhanuprakash Modem

Hi Bhanuprakash,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-tip/drm-tip next-20220408]
[cannot apply to drm/drm-next v5.18-rc1]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Bhanuprakash-Modem/Expose-max-and-current-bpc-via-debugfs/20220408-145638
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: s390-randconfig-r022-20220408 (https://download.01.org/0day-ci/archive/20220408/202204082024.SJWgNUte-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/25c70426c3d3454fc0c82bc71b101bf7b8bdf11f
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Bhanuprakash-Modem/Expose-max-and-current-bpc-via-debugfs/20220408-145638
        git checkout 25c70426c3d3454fc0c82bc71b101bf7b8bdf11f
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=s390 SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from drivers/gpu/drm/amd/amdgpu/../display/dmub/dmub_srv.h:67,
                    from drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:35:
   drivers/gpu/drm/amd/amdgpu/../display/dmub/inc/dmub_cmd.h: In function 'dmub_rb_flush_pending':
   drivers/gpu/drm/amd/amdgpu/../display/dmub/inc/dmub_cmd.h:2961:26: warning: variable 'temp' set but not used [-Wunused-but-set-variable]
    2961 |                 uint64_t temp;
         |                          ^~~~
   drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c: In function 'amdgpu_dm_crtc_late_register':
>> drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:6614:9: error: implicit declaration of function 'crtc_debugfs_init'; did you mean 'amdgpu_debugfs_init'? [-Werror=implicit-function-declaration]
    6614 |         crtc_debugfs_init(crtc);
         |         ^~~~~~~~~~~~~~~~~
         |         amdgpu_debugfs_init
   In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:32,
                    from drivers/gpu/drm/amd/amdgpu/../display/dc/inc/link_enc_cfg.h:33,
                    from drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:32:
   At top level:
   drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:128:22: warning: 'SYNAPTICS_DEVICE_ID' defined but not used [-Wunused-const-variable=]
     128 | static const uint8_t SYNAPTICS_DEVICE_ID[] = "SYNA";
         |                      ^~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:125:22: warning: 'DP_SINK_DEVICE_STR_ID_2' defined but not used [-Wunused-const-variable=]
     125 | static const uint8_t DP_SINK_DEVICE_STR_ID_2[] = {7, 1, 8, 7, 5, 0};
         |                      ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:124:22: warning: 'DP_SINK_DEVICE_STR_ID_1' defined but not used [-Wunused-const-variable=]
     124 | static const uint8_t DP_SINK_DEVICE_STR_ID_1[] = {7, 1, 8, 7, 3, 0};
         |                      ^~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +6614 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c

e7b07ceef2a650 Harry Wentland 2017-08-10  6611  
e69231c4451ae0 Wayne Lin      2021-03-08  6612  static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
86bc221918925a Wayne Lin      2021-03-02  6613  {
86bc221918925a Wayne Lin      2021-03-02 @6614  	crtc_debugfs_init(crtc);
86bc221918925a Wayne Lin      2021-03-02  6615  
86bc221918925a Wayne Lin      2021-03-02  6616  	return 0;
86bc221918925a Wayne Lin      2021-03-02  6617  }
86bc221918925a Wayne Lin      2021-03-02  6618  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

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

* Re: [PATCH 1/3] drm/debug: Expose connector's max supported bpc via debugfs
  2022-04-08  6:53 ` [PATCH 1/3] drm/debug: Expose connector's max supported " Bhanuprakash Modem
@ 2022-04-08 15:02   ` Harry Wentland
  2022-04-08 15:25     ` Modem, Bhanuprakash
  2022-04-11  3:57   ` [V2 " Bhanuprakash Modem
  1 sibling, 1 reply; 12+ messages in thread
From: Harry Wentland @ 2022-04-08 15:02 UTC (permalink / raw)
  To: Bhanuprakash Modem, intel-gfx, dri-devel, amd-gfx, jani.nikula,
	ville.syrjala, swati2.sharma



On 2022-04-08 02:53, Bhanuprakash Modem wrote:
> It's useful to know the connector's max supported bpc for IGT
> testing. Expose it via a debugfs file on the connector "output_bpc".
> 
> Example: cat /sys/kernel/debug/dri/0/DP-1/output_bpc
> 
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  drivers/gpu/drm/drm_debugfs.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
> index 7f1b82dbaebb..33e5345c6f3e 100644
> --- a/drivers/gpu/drm/drm_debugfs.c
> +++ b/drivers/gpu/drm/drm_debugfs.c
> @@ -395,6 +395,23 @@ static int vrr_range_show(struct seq_file *m, void *data)
>  }
>  DEFINE_SHOW_ATTRIBUTE(vrr_range);
>  
> +/*
> + * Returns Connector's max supported bpc through debugfs file.
> + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/max_bpc

/s/max_bpc/output_bpc

Btw, in amdgpu we have both max_bpc and output_bpc.

Harry

> + */
> +static int output_bpc_show(struct seq_file *m, void *data)
> +{
> +	struct drm_connector *connector = m->private;
> +
> +	if (connector->status != connector_status_connected)
> +		return -ENODEV;
> +
> +	seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
> +
> +	return 0;
> +}
> +DEFINE_SHOW_ATTRIBUTE(output_bpc);
> +
>  static const struct file_operations drm_edid_fops = {
>  	.owner = THIS_MODULE,
>  	.open = edid_open,
> @@ -437,6 +454,10 @@ void drm_debugfs_connector_add(struct drm_connector *connector)
>  	debugfs_create_file("vrr_range", S_IRUGO, root, connector,
>  			    &vrr_range_fops);
>  
> +	/* max bpc */
> +	debugfs_create_file("output_bpc", 0444, root, connector,
> +			    &output_bpc_fops);
> +
>  	if (connector->funcs->debugfs_init)
>  		connector->funcs->debugfs_init(connector, root);
>  }


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

* Re: [PATCH 3/3] drm/amd/display: Move connector debugfs to drm
  2022-04-08  6:53 ` [PATCH 3/3] drm/amd/display: Move connector debugfs to drm Bhanuprakash Modem
  2022-04-08 12:56   ` kernel test robot
@ 2022-04-08 15:03   ` Harry Wentland
  2022-04-08 15:23     ` Modem, Bhanuprakash
  1 sibling, 1 reply; 12+ messages in thread
From: Harry Wentland @ 2022-04-08 15:03 UTC (permalink / raw)
  To: Bhanuprakash Modem, intel-gfx, dri-devel, amd-gfx, jani.nikula,
	ville.syrjala, swati2.sharma
  Cc: Rodrigo Siqueira



On 2022-04-08 02:53, Bhanuprakash Modem wrote:
> As drm_connector already have the display_info, instead of creating
> "output_bpc" debugfs in vendor specific driver, move the logic to
> the drm layer.
> 
> This patch will also move "Current" bpc to the crtc debugfs from
> connector debugfs, since we are getting this info from crtc_state.
> 

Does the amd_max_bpc test pass after this change?

Harry

> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  4 --
>  .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 38 +++++++------------
>  .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.h |  2 -
>  3 files changed, 13 insertions(+), 31 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index 73423b805b54..f89651c71ec7 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -6615,14 +6615,12 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc)
>  	return &state->base;
>  }
>  
> -#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
>  static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
>  {
>  	crtc_debugfs_init(crtc);
>  
>  	return 0;
>  }
> -#endif
>  
>  static inline int dm_set_vupdate_irq(struct drm_crtc *crtc, bool enable)
>  {
> @@ -6720,9 +6718,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
>  	.enable_vblank = dm_enable_vblank,
>  	.disable_vblank = dm_disable_vblank,
>  	.get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp,
> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
>  	.late_register = amdgpu_dm_crtc_late_register,
> -#endif
>  };
>  
>  static enum drm_connector_status
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> index da17ece1a2c5..3ee26083920b 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> @@ -873,28 +873,18 @@ static int psr_capability_show(struct seq_file *m, void *data)
>  }
>  
>  /*
> - * Returns the current and maximum output bpc for the connector.
> - * Example usage: cat /sys/kernel/debug/dri/0/DP-1/output_bpc
> + * Returns the current bpc for the crtc.
> + * Example usage: cat /sys/kernel/debug/dri/0/crtc-0/amdgpu_current_bpc
>   */
> -static int output_bpc_show(struct seq_file *m, void *data)
> +static int amdgpu_current_bpc_show(struct seq_file *m, void *data)
>  {
> -	struct drm_connector *connector = m->private;
> -	struct drm_device *dev = connector->dev;
> -	struct drm_crtc *crtc = NULL;
> +	struct drm_crtc *crtc = m->private;
> +	struct drm_device *dev = crtc->dev;
>  	struct dm_crtc_state *dm_crtc_state = NULL;
>  	int res = -ENODEV;
>  	unsigned int bpc;
>  
>  	mutex_lock(&dev->mode_config.mutex);
> -	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
> -
> -	if (connector->state == NULL)
> -		goto unlock;
> -
> -	crtc = connector->state->crtc;
> -	if (crtc == NULL)
> -		goto unlock;
> -
>  	drm_modeset_lock(&crtc->mutex, NULL);
>  	if (crtc->state == NULL)
>  		goto unlock;
> @@ -924,18 +914,15 @@ static int output_bpc_show(struct seq_file *m, void *data)
>  	}
>  
>  	seq_printf(m, "Current: %u\n", bpc);
> -	seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
>  	res = 0;
>  
>  unlock:
> -	if (crtc)
> -		drm_modeset_unlock(&crtc->mutex);
> -
> -	drm_modeset_unlock(&dev->mode_config.connection_mutex);
> +	drm_modeset_unlock(&crtc->mutex);
>  	mutex_unlock(&dev->mode_config.mutex);
>  
>  	return res;
>  }
> +DEFINE_SHOW_ATTRIBUTE(amdgpu_current_bpc);
>  
>  /*
>   * Example usage:
> @@ -2541,7 +2528,6 @@ static int target_backlight_show(struct seq_file *m, void *unused)
>  DEFINE_SHOW_ATTRIBUTE(dp_dsc_fec_support);
>  DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
>  DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
> -DEFINE_SHOW_ATTRIBUTE(output_bpc);
>  DEFINE_SHOW_ATTRIBUTE(dp_lttpr_status);
>  #ifdef CONFIG_DRM_AMD_DC_HDCP
>  DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
> @@ -2788,7 +2774,6 @@ static const struct {
>  	const struct file_operations *fops;
>  } connector_debugfs_entries[] = {
>  		{"force_yuv420_output", &force_yuv420_output_fops},
> -		{"output_bpc", &output_bpc_fops},
>  		{"trigger_hotplug", &trigger_hotplug_debugfs_fops},
>  		{"internal_display", &internal_display_fops}
>  };
> @@ -3172,9 +3157,10 @@ static int crc_win_update_get(void *data, u64 *val)
>  
>  DEFINE_DEBUGFS_ATTRIBUTE(crc_win_update_fops, crc_win_update_get,
>  			 crc_win_update_set, "%llu\n");
> -
> +#endif
>  void crtc_debugfs_init(struct drm_crtc *crtc)
>  {
> +#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
>  	struct dentry *dir = debugfs_lookup("crc", crtc->debugfs_entry);
>  
>  	if (!dir)
> @@ -3190,9 +3176,11 @@ void crtc_debugfs_init(struct drm_crtc *crtc)
>  				   &crc_win_y_end_fops);
>  	debugfs_create_file_unsafe("crc_win_update", 0644, dir, crtc,
>  				   &crc_win_update_fops);
> -
> -}
>  #endif
> +	debugfs_create_file("amdgpu_current_bpc", 0644, crtc->debugfs_entry,
> +			    crtc, &amdgpu_current_bpc_fops);
> +}
> +
>  /*
>   * Writes DTN log state to the user supplied buffer.
>   * Example usage: cat /sys/kernel/debug/dri/0/amdgpu_dm_dtn_log
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
> index 3366cb644053..071200473c27 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
> @@ -31,8 +31,6 @@
>  
>  void connector_debugfs_init(struct amdgpu_dm_connector *connector);
>  void dtn_debugfs_init(struct amdgpu_device *adev);
> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
>  void crtc_debugfs_init(struct drm_crtc *crtc);
> -#endif
>  
>  #endif


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

* Re: [PATCH 3/3] drm/amd/display: Move connector debugfs to drm
  2022-04-08 15:03   ` Harry Wentland
@ 2022-04-08 15:23     ` Modem, Bhanuprakash
  2022-04-08 15:25       ` Harry Wentland
  0 siblings, 1 reply; 12+ messages in thread
From: Modem, Bhanuprakash @ 2022-04-08 15:23 UTC (permalink / raw)
  To: Harry Wentland, intel-gfx, dri-devel, amd-gfx, jani.nikula,
	ville.syrjala, swati2.sharma
  Cc: Rodrigo Siqueira

On Fri-08-04-2022 08:33 pm, Harry Wentland wrote:
> 
> 
> On 2022-04-08 02:53, Bhanuprakash Modem wrote:
>> As drm_connector already have the display_info, instead of creating
>> "output_bpc" debugfs in vendor specific driver, move the logic to
>> the drm layer.
>>
>> This patch will also move "Current" bpc to the crtc debugfs from
>> connector debugfs, since we are getting this info from crtc_state.
>>
> 
> Does the amd_max_bpc test pass after this change?

We need IGT fix along with this change. And I have made the required 
changes in IGT: https://patchwork.freedesktop.org/series/102387/

- Bhanu

> 
> Harry
> 
>> Cc: Harry Wentland <harry.wentland@amd.com>
>> Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>> ---
>>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  4 --
>>   .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 38 +++++++------------
>>   .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.h |  2 -
>>   3 files changed, 13 insertions(+), 31 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> index 73423b805b54..f89651c71ec7 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> @@ -6615,14 +6615,12 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc)
>>   	return &state->base;
>>   }
>>   
>> -#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
>>   static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
>>   {
>>   	crtc_debugfs_init(crtc);
>>   
>>   	return 0;
>>   }
>> -#endif
>>   
>>   static inline int dm_set_vupdate_irq(struct drm_crtc *crtc, bool enable)
>>   {
>> @@ -6720,9 +6718,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
>>   	.enable_vblank = dm_enable_vblank,
>>   	.disable_vblank = dm_disable_vblank,
>>   	.get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp,
>> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
>>   	.late_register = amdgpu_dm_crtc_late_register,
>> -#endif
>>   };
>>   
>>   static enum drm_connector_status
>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>> index da17ece1a2c5..3ee26083920b 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>> @@ -873,28 +873,18 @@ static int psr_capability_show(struct seq_file *m, void *data)
>>   }
>>   
>>   /*
>> - * Returns the current and maximum output bpc for the connector.
>> - * Example usage: cat /sys/kernel/debug/dri/0/DP-1/output_bpc
>> + * Returns the current bpc for the crtc.
>> + * Example usage: cat /sys/kernel/debug/dri/0/crtc-0/amdgpu_current_bpc
>>    */
>> -static int output_bpc_show(struct seq_file *m, void *data)
>> +static int amdgpu_current_bpc_show(struct seq_file *m, void *data)
>>   {
>> -	struct drm_connector *connector = m->private;
>> -	struct drm_device *dev = connector->dev;
>> -	struct drm_crtc *crtc = NULL;
>> +	struct drm_crtc *crtc = m->private;
>> +	struct drm_device *dev = crtc->dev;
>>   	struct dm_crtc_state *dm_crtc_state = NULL;
>>   	int res = -ENODEV;
>>   	unsigned int bpc;
>>   
>>   	mutex_lock(&dev->mode_config.mutex);
>> -	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
>> -
>> -	if (connector->state == NULL)
>> -		goto unlock;
>> -
>> -	crtc = connector->state->crtc;
>> -	if (crtc == NULL)
>> -		goto unlock;
>> -
>>   	drm_modeset_lock(&crtc->mutex, NULL);
>>   	if (crtc->state == NULL)
>>   		goto unlock;
>> @@ -924,18 +914,15 @@ static int output_bpc_show(struct seq_file *m, void *data)
>>   	}
>>   
>>   	seq_printf(m, "Current: %u\n", bpc);
>> -	seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
>>   	res = 0;
>>   
>>   unlock:
>> -	if (crtc)
>> -		drm_modeset_unlock(&crtc->mutex);
>> -
>> -	drm_modeset_unlock(&dev->mode_config.connection_mutex);
>> +	drm_modeset_unlock(&crtc->mutex);
>>   	mutex_unlock(&dev->mode_config.mutex);
>>   
>>   	return res;
>>   }
>> +DEFINE_SHOW_ATTRIBUTE(amdgpu_current_bpc);
>>   
>>   /*
>>    * Example usage:
>> @@ -2541,7 +2528,6 @@ static int target_backlight_show(struct seq_file *m, void *unused)
>>   DEFINE_SHOW_ATTRIBUTE(dp_dsc_fec_support);
>>   DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
>>   DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
>> -DEFINE_SHOW_ATTRIBUTE(output_bpc);
>>   DEFINE_SHOW_ATTRIBUTE(dp_lttpr_status);
>>   #ifdef CONFIG_DRM_AMD_DC_HDCP
>>   DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
>> @@ -2788,7 +2774,6 @@ static const struct {
>>   	const struct file_operations *fops;
>>   } connector_debugfs_entries[] = {
>>   		{"force_yuv420_output", &force_yuv420_output_fops},
>> -		{"output_bpc", &output_bpc_fops},
>>   		{"trigger_hotplug", &trigger_hotplug_debugfs_fops},
>>   		{"internal_display", &internal_display_fops}
>>   };
>> @@ -3172,9 +3157,10 @@ static int crc_win_update_get(void *data, u64 *val)
>>   
>>   DEFINE_DEBUGFS_ATTRIBUTE(crc_win_update_fops, crc_win_update_get,
>>   			 crc_win_update_set, "%llu\n");
>> -
>> +#endif
>>   void crtc_debugfs_init(struct drm_crtc *crtc)
>>   {
>> +#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
>>   	struct dentry *dir = debugfs_lookup("crc", crtc->debugfs_entry);
>>   
>>   	if (!dir)
>> @@ -3190,9 +3176,11 @@ void crtc_debugfs_init(struct drm_crtc *crtc)
>>   				   &crc_win_y_end_fops);
>>   	debugfs_create_file_unsafe("crc_win_update", 0644, dir, crtc,
>>   				   &crc_win_update_fops);
>> -
>> -}
>>   #endif
>> +	debugfs_create_file("amdgpu_current_bpc", 0644, crtc->debugfs_entry,
>> +			    crtc, &amdgpu_current_bpc_fops);
>> +}
>> +
>>   /*
>>    * Writes DTN log state to the user supplied buffer.
>>    * Example usage: cat /sys/kernel/debug/dri/0/amdgpu_dm_dtn_log
>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
>> index 3366cb644053..071200473c27 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
>> @@ -31,8 +31,6 @@
>>   
>>   void connector_debugfs_init(struct amdgpu_dm_connector *connector);
>>   void dtn_debugfs_init(struct amdgpu_device *adev);
>> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
>>   void crtc_debugfs_init(struct drm_crtc *crtc);
>> -#endif
>>   
>>   #endif
> 


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

* Re: [PATCH 1/3] drm/debug: Expose connector's max supported bpc via debugfs
  2022-04-08 15:02   ` Harry Wentland
@ 2022-04-08 15:25     ` Modem, Bhanuprakash
  0 siblings, 0 replies; 12+ messages in thread
From: Modem, Bhanuprakash @ 2022-04-08 15:25 UTC (permalink / raw)
  To: Harry Wentland, intel-gfx, dri-devel, amd-gfx, jani.nikula,
	ville.syrjala, swati2.sharma

On Fri-08-04-2022 08:32 pm, Harry Wentland wrote:
> 
> 
> On 2022-04-08 02:53, Bhanuprakash Modem wrote:
>> It's useful to know the connector's max supported bpc for IGT
>> testing. Expose it via a debugfs file on the connector "output_bpc".
>>
>> Example: cat /sys/kernel/debug/dri/0/DP-1/output_bpc
>>
>> Cc: Jani Nikula <jani.nikula@linux.intel.com>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Cc: Harry Wentland <harry.wentland@amd.com>
>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>> ---
>>   drivers/gpu/drm/drm_debugfs.c | 21 +++++++++++++++++++++
>>   1 file changed, 21 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
>> index 7f1b82dbaebb..33e5345c6f3e 100644
>> --- a/drivers/gpu/drm/drm_debugfs.c
>> +++ b/drivers/gpu/drm/drm_debugfs.c
>> @@ -395,6 +395,23 @@ static int vrr_range_show(struct seq_file *m, void *data)
>>   }
>>   DEFINE_SHOW_ATTRIBUTE(vrr_range);
>>   
>> +/*
>> + * Returns Connector's max supported bpc through debugfs file.
>> + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/max_bpc
> 
> /s/max_bpc/output_bpc
> 
> Btw, in amdgpu we have both max_bpc and output_bpc.

I'll float a new rev, Thanks.

- Bhanu

> 
> Harry
> 
>> + */
>> +static int output_bpc_show(struct seq_file *m, void *data)
>> +{
>> +	struct drm_connector *connector = m->private;
>> +
>> +	if (connector->status != connector_status_connected)
>> +		return -ENODEV;
>> +
>> +	seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
>> +
>> +	return 0;
>> +}
>> +DEFINE_SHOW_ATTRIBUTE(output_bpc);
>> +
>>   static const struct file_operations drm_edid_fops = {
>>   	.owner = THIS_MODULE,
>>   	.open = edid_open,
>> @@ -437,6 +454,10 @@ void drm_debugfs_connector_add(struct drm_connector *connector)
>>   	debugfs_create_file("vrr_range", S_IRUGO, root, connector,
>>   			    &vrr_range_fops);
>>   
>> +	/* max bpc */
>> +	debugfs_create_file("output_bpc", 0444, root, connector,
>> +			    &output_bpc_fops);
>> +
>>   	if (connector->funcs->debugfs_init)
>>   		connector->funcs->debugfs_init(connector, root);
>>   }
> 


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

* Re: [PATCH 3/3] drm/amd/display: Move connector debugfs to drm
  2022-04-08 15:23     ` Modem, Bhanuprakash
@ 2022-04-08 15:25       ` Harry Wentland
  0 siblings, 0 replies; 12+ messages in thread
From: Harry Wentland @ 2022-04-08 15:25 UTC (permalink / raw)
  To: Modem, Bhanuprakash, intel-gfx, dri-devel, amd-gfx, jani.nikula,
	ville.syrjala, swati2.sharma
  Cc: Rodrigo Siqueira



On 2022-04-08 11:23, Modem, Bhanuprakash wrote:
> On Fri-08-04-2022 08:33 pm, Harry Wentland wrote:
>>
>>
>> On 2022-04-08 02:53, Bhanuprakash Modem wrote:
>>> As drm_connector already have the display_info, instead of creating
>>> "output_bpc" debugfs in vendor specific driver, move the logic to
>>> the drm layer.
>>>
>>> This patch will also move "Current" bpc to the crtc debugfs from
>>> connector debugfs, since we are getting this info from crtc_state.
>>>
>>
>> Does the amd_max_bpc test pass after this change?
> 
> We need IGT fix along with this change. And I have made the required changes in IGT: https://patchwork.freedesktop.org/series/102387/>> 

Thanks, I spotted that patch after I sent this email. :)

Harry

> - Bhanu
> 
>>
>> Harry
>>
>>> Cc: Harry Wentland <harry.wentland@amd.com>
>>> Cc: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
>>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>>> ---
>>>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  4 --
>>>   .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 38 +++++++------------
>>>   .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.h |  2 -
>>>   3 files changed, 13 insertions(+), 31 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>> index 73423b805b54..f89651c71ec7 100644
>>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>> @@ -6615,14 +6615,12 @@ dm_crtc_duplicate_state(struct drm_crtc *crtc)
>>>       return &state->base;
>>>   }
>>>   -#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
>>>   static int amdgpu_dm_crtc_late_register(struct drm_crtc *crtc)
>>>   {
>>>       crtc_debugfs_init(crtc);
>>>         return 0;
>>>   }
>>> -#endif
>>>     static inline int dm_set_vupdate_irq(struct drm_crtc *crtc, bool enable)
>>>   {
>>> @@ -6720,9 +6718,7 @@ static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
>>>       .enable_vblank = dm_enable_vblank,
>>>       .disable_vblank = dm_disable_vblank,
>>>       .get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp,
>>> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
>>>       .late_register = amdgpu_dm_crtc_late_register,
>>> -#endif
>>>   };
>>>     static enum drm_connector_status
>>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>>> index da17ece1a2c5..3ee26083920b 100644
>>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
>>> @@ -873,28 +873,18 @@ static int psr_capability_show(struct seq_file *m, void *data)
>>>   }
>>>     /*
>>> - * Returns the current and maximum output bpc for the connector.
>>> - * Example usage: cat /sys/kernel/debug/dri/0/DP-1/output_bpc
>>> + * Returns the current bpc for the crtc.
>>> + * Example usage: cat /sys/kernel/debug/dri/0/crtc-0/amdgpu_current_bpc
>>>    */
>>> -static int output_bpc_show(struct seq_file *m, void *data)
>>> +static int amdgpu_current_bpc_show(struct seq_file *m, void *data)
>>>   {
>>> -    struct drm_connector *connector = m->private;
>>> -    struct drm_device *dev = connector->dev;
>>> -    struct drm_crtc *crtc = NULL;
>>> +    struct drm_crtc *crtc = m->private;
>>> +    struct drm_device *dev = crtc->dev;
>>>       struct dm_crtc_state *dm_crtc_state = NULL;
>>>       int res = -ENODEV;
>>>       unsigned int bpc;
>>>         mutex_lock(&dev->mode_config.mutex);
>>> -    drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
>>> -
>>> -    if (connector->state == NULL)
>>> -        goto unlock;
>>> -
>>> -    crtc = connector->state->crtc;
>>> -    if (crtc == NULL)
>>> -        goto unlock;
>>> -
>>>       drm_modeset_lock(&crtc->mutex, NULL);
>>>       if (crtc->state == NULL)
>>>           goto unlock;
>>> @@ -924,18 +914,15 @@ static int output_bpc_show(struct seq_file *m, void *data)
>>>       }
>>>         seq_printf(m, "Current: %u\n", bpc);
>>> -    seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
>>>       res = 0;
>>>     unlock:
>>> -    if (crtc)
>>> -        drm_modeset_unlock(&crtc->mutex);
>>> -
>>> -    drm_modeset_unlock(&dev->mode_config.connection_mutex);
>>> +    drm_modeset_unlock(&crtc->mutex);
>>>       mutex_unlock(&dev->mode_config.mutex);
>>>         return res;
>>>   }
>>> +DEFINE_SHOW_ATTRIBUTE(amdgpu_current_bpc);
>>>     /*
>>>    * Example usage:
>>> @@ -2541,7 +2528,6 @@ static int target_backlight_show(struct seq_file *m, void *unused)
>>>   DEFINE_SHOW_ATTRIBUTE(dp_dsc_fec_support);
>>>   DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
>>>   DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
>>> -DEFINE_SHOW_ATTRIBUTE(output_bpc);
>>>   DEFINE_SHOW_ATTRIBUTE(dp_lttpr_status);
>>>   #ifdef CONFIG_DRM_AMD_DC_HDCP
>>>   DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
>>> @@ -2788,7 +2774,6 @@ static const struct {
>>>       const struct file_operations *fops;
>>>   } connector_debugfs_entries[] = {
>>>           {"force_yuv420_output", &force_yuv420_output_fops},
>>> -        {"output_bpc", &output_bpc_fops},
>>>           {"trigger_hotplug", &trigger_hotplug_debugfs_fops},
>>>           {"internal_display", &internal_display_fops}
>>>   };
>>> @@ -3172,9 +3157,10 @@ static int crc_win_update_get(void *data, u64 *val)
>>>     DEFINE_DEBUGFS_ATTRIBUTE(crc_win_update_fops, crc_win_update_get,
>>>                crc_win_update_set, "%llu\n");
>>> -
>>> +#endif
>>>   void crtc_debugfs_init(struct drm_crtc *crtc)
>>>   {
>>> +#ifdef CONFIG_DRM_AMD_SECURE_DISPLAY
>>>       struct dentry *dir = debugfs_lookup("crc", crtc->debugfs_entry);
>>>         if (!dir)
>>> @@ -3190,9 +3176,11 @@ void crtc_debugfs_init(struct drm_crtc *crtc)
>>>                      &crc_win_y_end_fops);
>>>       debugfs_create_file_unsafe("crc_win_update", 0644, dir, crtc,
>>>                      &crc_win_update_fops);
>>> -
>>> -}
>>>   #endif
>>> +    debugfs_create_file("amdgpu_current_bpc", 0644, crtc->debugfs_entry,
>>> +                crtc, &amdgpu_current_bpc_fops);
>>> +}
>>> +
>>>   /*
>>>    * Writes DTN log state to the user supplied buffer.
>>>    * Example usage: cat /sys/kernel/debug/dri/0/amdgpu_dm_dtn_log
>>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
>>> index 3366cb644053..071200473c27 100644
>>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
>>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.h
>>> @@ -31,8 +31,6 @@
>>>     void connector_debugfs_init(struct amdgpu_dm_connector *connector);
>>>   void dtn_debugfs_init(struct amdgpu_device *adev);
>>> -#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY)
>>>   void crtc_debugfs_init(struct drm_crtc *crtc);
>>> -#endif
>>>     #endif
>>
> 


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

* [V2 1/3] drm/debug: Expose connector's max supported bpc via debugfs
  2022-04-08  6:53 ` [PATCH 1/3] drm/debug: Expose connector's max supported " Bhanuprakash Modem
  2022-04-08 15:02   ` Harry Wentland
@ 2022-04-11  3:57   ` Bhanuprakash Modem
  1 sibling, 0 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2022-04-11  3:57 UTC (permalink / raw)
  To: intel-gfx, dri-devel, amd-gfx, jani.nikula, ville.syrjala,
	harry.wentland, swati2.sharma
  Cc: Bhanuprakash Modem

It's useful to know the connector's max supported bpc for IGT
testing. Expose it via a debugfs file on the connector "output_bpc".

Example: cat /sys/kernel/debug/dri/0/DP-1/output_bpc

V2:
* Fix typo in comments (Harry)

Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 drivers/gpu/drm/drm_debugfs.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 7f1b82dbaebb..fb04b7a984de 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -395,6 +395,23 @@ static int vrr_range_show(struct seq_file *m, void *data)
 }
 DEFINE_SHOW_ATTRIBUTE(vrr_range);
 
+/*
+ * Returns Connector's max supported bpc through debugfs file.
+ * Example usage: cat /sys/kernel/debug/dri/0/DP-1/output_bpc
+ */
+static int output_bpc_show(struct seq_file *m, void *data)
+{
+	struct drm_connector *connector = m->private;
+
+	if (connector->status != connector_status_connected)
+		return -ENODEV;
+
+	seq_printf(m, "Maximum: %u\n", connector->display_info.bpc);
+
+	return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(output_bpc);
+
 static const struct file_operations drm_edid_fops = {
 	.owner = THIS_MODULE,
 	.open = edid_open,
@@ -437,6 +454,10 @@ void drm_debugfs_connector_add(struct drm_connector *connector)
 	debugfs_create_file("vrr_range", S_IRUGO, root, connector,
 			    &vrr_range_fops);
 
+	/* max bpc */
+	debugfs_create_file("output_bpc", 0444, root, connector,
+			    &output_bpc_fops);
+
 	if (connector->funcs->debugfs_init)
 		connector->funcs->debugfs_init(connector, root);
 }
-- 
2.35.1


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

* [V2 0/3] Expose max and current bpc via debugfs
  2022-04-08  6:53 [PATCH 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem
                   ` (2 preceding siblings ...)
  2022-04-08  6:53 ` [PATCH 3/3] drm/amd/display: Move connector debugfs to drm Bhanuprakash Modem
@ 2022-04-11  9:48 ` Bhanuprakash Modem
  3 siblings, 0 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2022-04-11  9:48 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: Bhanuprakash Modem

This series will expose the Connector's max supported bpc via connector
debugfs and Crtc's current bpc via crtc debugfs. Also move the existing
vendor specific "output_bpc" logic to drm.

Test-with: 20220411094147.1650859-2-bhanuprakash.modem@intel.com

Bhanuprakash Modem (3):
  drm/debug: Expose connector's max supported bpc via debugfs
  drm/i915/display/debug: Expose crtc current bpc via debugfs
  drm/amd/display: Move connector debugfs to drm

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  4 --
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 38 +++++++------------
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.h |  2 -
 drivers/gpu/drm/drm_debugfs.c                 | 21 ++++++++++
 .../drm/i915/display/intel_display_debugfs.c  | 28 ++++++++++++++
 5 files changed, 62 insertions(+), 31 deletions(-)

--
2.35.1


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

end of thread, other threads:[~2022-04-11  9:51 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-08  6:53 [PATCH 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem
2022-04-08  6:53 ` [PATCH 1/3] drm/debug: Expose connector's max supported " Bhanuprakash Modem
2022-04-08 15:02   ` Harry Wentland
2022-04-08 15:25     ` Modem, Bhanuprakash
2022-04-11  3:57   ` [V2 " Bhanuprakash Modem
2022-04-08  6:53 ` [PATCH 2/3] drm/i915/display/debug: Expose crtc current " Bhanuprakash Modem
2022-04-08  6:53 ` [PATCH 3/3] drm/amd/display: Move connector debugfs to drm Bhanuprakash Modem
2022-04-08 12:56   ` kernel test robot
2022-04-08 15:03   ` Harry Wentland
2022-04-08 15:23     ` Modem, Bhanuprakash
2022-04-08 15:25       ` Harry Wentland
2022-04-11  9:48 ` [V2 0/3] Expose max and current bpc via debugfs Bhanuprakash Modem

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).