Commit 21c76bd1 authored by Gerd Hoffmann's avatar Gerd Hoffmann

drm/qxl: use qxl_num_crtc directly

qdev->monitors_config->max_allowed is effectively set by the
qxl.num_heads module parameter, stored in the qxl_num_crtc variable.
Lets get rid of the indirection and use the variable qxl_num_crtc
directly.  The kernel doesn't need to dereference pointers each time it
needs the value, and when reading the code you don't have to trace where
and why qdev->monitors_config->max_allowed is set.
Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Acked-by: default avatarNoralf Trønnes <noralf@tronnes.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-16-kraxel@redhat.com
parent 90adda2c
...@@ -80,10 +80,10 @@ static int qxl_display_copy_rom_client_monitors_config(struct qxl_device *qdev) ...@@ -80,10 +80,10 @@ static int qxl_display_copy_rom_client_monitors_config(struct qxl_device *qdev)
DRM_DEBUG_KMS("no client monitors configured\n"); DRM_DEBUG_KMS("no client monitors configured\n");
return status; return status;
} }
if (num_monitors > qdev->monitors_config->max_allowed) { if (num_monitors > qxl_num_crtc) {
DRM_DEBUG_KMS("client monitors list will be truncated: %d < %d\n", DRM_DEBUG_KMS("client monitors list will be truncated: %d < %d\n",
qdev->monitors_config->max_allowed, num_monitors); qxl_num_crtc, num_monitors);
num_monitors = qdev->monitors_config->max_allowed; num_monitors = qxl_num_crtc;
} else { } else {
num_monitors = qdev->rom->client_monitors_config.count; num_monitors = qdev->rom->client_monitors_config.count;
} }
...@@ -96,8 +96,7 @@ static int qxl_display_copy_rom_client_monitors_config(struct qxl_device *qdev) ...@@ -96,8 +96,7 @@ static int qxl_display_copy_rom_client_monitors_config(struct qxl_device *qdev)
return status; return status;
} }
/* we copy max from the client but it isn't used */ /* we copy max from the client but it isn't used */
qdev->client_monitors_config->max_allowed = qdev->client_monitors_config->max_allowed = qxl_num_crtc;
qdev->monitors_config->max_allowed;
for (i = 0 ; i < qdev->client_monitors_config->count ; ++i) { for (i = 0 ; i < qdev->client_monitors_config->count ; ++i) {
struct qxl_urect *c_rect = struct qxl_urect *c_rect =
&qdev->rom->client_monitors_config.heads[i]; &qdev->rom->client_monitors_config.heads[i];
...@@ -204,7 +203,7 @@ static int qxl_add_monitors_config_modes(struct drm_connector *connector, ...@@ -204,7 +203,7 @@ static int qxl_add_monitors_config_modes(struct drm_connector *connector,
if (!qdev->monitors_config) if (!qdev->monitors_config)
return 0; return 0;
if (h >= qdev->monitors_config->max_allowed) if (h >= qxl_num_crtc)
return 0; return 0;
if (!qdev->client_monitors_config) if (!qdev->client_monitors_config)
return 0; return 0;
...@@ -307,8 +306,7 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc, ...@@ -307,8 +306,7 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc,
return; return;
} }
if (!qdev->monitors_config || if (!qdev->monitors_config || qxl_num_crtc <= i)
qdev->monitors_config->max_allowed <= i)
return; return;
head.id = i; head.id = i;
...@@ -350,9 +348,10 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc, ...@@ -350,9 +348,10 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc,
if (oldcount != qdev->monitors_config->count) if (oldcount != qdev->monitors_config->count)
DRM_DEBUG_KMS("active heads %d -> %d (%d total)\n", DRM_DEBUG_KMS("active heads %d -> %d (%d total)\n",
oldcount, qdev->monitors_config->count, oldcount, qdev->monitors_config->count,
qdev->monitors_config->max_allowed); qxl_num_crtc);
qdev->monitors_config->heads[i] = head; qdev->monitors_config->heads[i] = head;
qdev->monitors_config->max_allowed = qxl_num_crtc;
qxl_send_monitors_config(qdev); qxl_send_monitors_config(qdev);
} }
...@@ -1146,9 +1145,8 @@ int qxl_create_monitors_object(struct qxl_device *qdev) ...@@ -1146,9 +1145,8 @@ int qxl_create_monitors_object(struct qxl_device *qdev)
{ {
int ret; int ret;
struct drm_gem_object *gobj; struct drm_gem_object *gobj;
int max_allowed = qxl_num_crtc;
int monitors_config_size = sizeof(struct qxl_monitors_config) + int monitors_config_size = sizeof(struct qxl_monitors_config) +
max_allowed * sizeof(struct qxl_head); qxl_num_crtc * sizeof(struct qxl_head);
ret = qxl_gem_object_create(qdev, monitors_config_size, 0, ret = qxl_gem_object_create(qdev, monitors_config_size, 0,
QXL_GEM_DOMAIN_VRAM, QXL_GEM_DOMAIN_VRAM,
...@@ -1170,9 +1168,8 @@ int qxl_create_monitors_object(struct qxl_device *qdev) ...@@ -1170,9 +1168,8 @@ int qxl_create_monitors_object(struct qxl_device *qdev)
qxl_bo_physical_address(qdev, qdev->monitors_config_bo, 0); qxl_bo_physical_address(qdev, qdev->monitors_config_bo, 0);
memset(qdev->monitors_config, 0, monitors_config_size); memset(qdev->monitors_config, 0, monitors_config_size);
qdev->monitors_config->max_allowed = max_allowed; qdev->dumb_heads = kcalloc(qxl_num_crtc, sizeof(qdev->dumb_heads[0]),
GFP_KERNEL);
qdev->dumb_heads = kcalloc(max_allowed, sizeof(qdev->dumb_heads[0]), GFP_KERNEL);
if (!qdev->dumb_heads) { if (!qdev->dumb_heads) {
qxl_destroy_monitors_object(qdev); qxl_destroy_monitors_object(qdev);
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment