[PATCH] drm/amd: Drop debugfs access to the DPCD
Harry Wentland
harry.wentland at amd.com
Wed May 24 18:05:56 UTC 2023
On 5/24/23 13:58, Mario Limonciello wrote:
> There is already access to the DPCD from userspace through
> `CONFIG_DRM_DP_AUX_CHARDEV`, so it's unnecessary to reinvent the wheel
> with a set of extra debugfs nodes specific to amdgpu.
>
> The character device interface behaves more like you would expect in that
> you can seek/read/write all from the same file.
>
> Signed-off-by: Mario Limonciello <mario.limonciello at amd.com>
Reviewed-by: Harry Wentland <harry.wentland at amd.com>
Harry
> ---
> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 4 -
> .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 107 ------------------
> 2 files changed, 111 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> index 2e2413fd73a4..4561f55afa99 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
> @@ -661,10 +661,6 @@ struct amdgpu_dm_connector {
> struct mutex hpd_lock;
>
> bool fake_enable;
> -#ifdef CONFIG_DEBUG_FS
> - uint32_t debugfs_dpcd_address;
> - uint32_t debugfs_dpcd_size;
> -#endif
> bool force_yuv420_output;
> struct dsc_preferred_settings dsc_settings;
> union dp_downstream_port_present mst_downstream_port_present;
> 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 827fcb4fb3b3..82234397dd44 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
> @@ -1039,88 +1039,6 @@ static ssize_t dp_sdp_message_debugfs_write(struct file *f, const char __user *b
> return write_size;
> }
>
> -static ssize_t dp_dpcd_address_write(struct file *f, const char __user *buf,
> - size_t size, loff_t *pos)
> -{
> - int r;
> - struct amdgpu_dm_connector *connector = file_inode(f)->i_private;
> -
> - if (size < sizeof(connector->debugfs_dpcd_address))
> - return -EINVAL;
> -
> - r = copy_from_user(&connector->debugfs_dpcd_address,
> - buf, sizeof(connector->debugfs_dpcd_address));
> -
> - return size - r;
> -}
> -
> -static ssize_t dp_dpcd_size_write(struct file *f, const char __user *buf,
> - size_t size, loff_t *pos)
> -{
> - int r;
> - struct amdgpu_dm_connector *connector = file_inode(f)->i_private;
> -
> - if (size < sizeof(connector->debugfs_dpcd_size))
> - return -EINVAL;
> -
> - r = copy_from_user(&connector->debugfs_dpcd_size,
> - buf, sizeof(connector->debugfs_dpcd_size));
> -
> - if (connector->debugfs_dpcd_size > 256)
> - connector->debugfs_dpcd_size = 0;
> -
> - return size - r;
> -}
> -
> -static ssize_t dp_dpcd_data_write(struct file *f, const char __user *buf,
> - size_t size, loff_t *pos)
> -{
> - int r;
> - char *data;
> - struct amdgpu_dm_connector *connector = file_inode(f)->i_private;
> - struct dc_link *link = connector->dc_link;
> - uint32_t write_size = connector->debugfs_dpcd_size;
> -
> - if (!write_size || size < write_size)
> - return -EINVAL;
> -
> - data = kzalloc(write_size, GFP_KERNEL);
> - if (!data)
> - return 0;
> -
> - r = copy_from_user(data, buf, write_size);
> -
> - dm_helpers_dp_write_dpcd(link->ctx, link,
> - connector->debugfs_dpcd_address, data, write_size - r);
> - kfree(data);
> - return write_size - r;
> -}
> -
> -static ssize_t dp_dpcd_data_read(struct file *f, char __user *buf,
> - size_t size, loff_t *pos)
> -{
> - int r;
> - char *data;
> - struct amdgpu_dm_connector *connector = file_inode(f)->i_private;
> - struct dc_link *link = connector->dc_link;
> - uint32_t read_size = connector->debugfs_dpcd_size;
> -
> - if (!read_size || size < read_size)
> - return 0;
> -
> - data = kzalloc(read_size, GFP_KERNEL);
> - if (!data)
> - return 0;
> -
> - dm_helpers_dp_read_dpcd(link->ctx, link,
> - connector->debugfs_dpcd_address, data, read_size);
> -
> - r = copy_to_user(buf, data, read_size);
> -
> - kfree(data);
> - return read_size - r;
> -}
> -
> /* function: Read link's DSC & FEC capabilities
> *
> *
> @@ -2682,25 +2600,6 @@ static const struct file_operations sdp_message_fops = {
> .llseek = default_llseek
> };
>
> -static const struct file_operations dp_dpcd_address_debugfs_fops = {
> - .owner = THIS_MODULE,
> - .write = dp_dpcd_address_write,
> - .llseek = default_llseek
> -};
> -
> -static const struct file_operations dp_dpcd_size_debugfs_fops = {
> - .owner = THIS_MODULE,
> - .write = dp_dpcd_size_write,
> - .llseek = default_llseek
> -};
> -
> -static const struct file_operations dp_dpcd_data_debugfs_fops = {
> - .owner = THIS_MODULE,
> - .read = dp_dpcd_data_read,
> - .write = dp_dpcd_data_write,
> - .llseek = default_llseek
> -};
> -
> static const struct file_operations dp_max_bpc_debugfs_fops = {
> .owner = THIS_MODULE,
> .read = dp_max_bpc_read,
> @@ -2724,9 +2623,6 @@ static const struct {
> {"test_pattern", &dp_phy_test_pattern_fops},
> {"hdcp_sink_capability", &hdcp_sink_capability_fops},
> {"sdp_message", &sdp_message_fops},
> - {"aux_dpcd_address", &dp_dpcd_address_debugfs_fops},
> - {"aux_dpcd_size", &dp_dpcd_size_debugfs_fops},
> - {"aux_dpcd_data", &dp_dpcd_data_debugfs_fops},
> {"dsc_clock_en", &dp_dsc_clock_en_debugfs_fops},
> {"dsc_slice_width", &dp_dsc_slice_width_debugfs_fops},
> {"dsc_slice_height", &dp_dsc_slice_height_debugfs_fops},
> @@ -3025,9 +2921,6 @@ void connector_debugfs_init(struct amdgpu_dm_connector *connector)
> connector_debugfs_entries[i].fops);
> }
>
> - connector->debugfs_dpcd_address = 0;
> - connector->debugfs_dpcd_size = 0;
> -
> if (connector->base.connector_type == DRM_MODE_CONNECTOR_HDMIA) {
> for (i = 0; i < ARRAY_SIZE(hdmi_debugfs_entries); i++) {
> debugfs_create_file(hdmi_debugfs_entries[i].name,
More information about the amd-gfx
mailing list