diff options
-rw-r--r-- | drivers/gpu/drm/i915/intel_fbdev.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_drv.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_drv.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_prime.c | 12 |
4 files changed, 25 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index e8f694b57b8a..376ffe842e26 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c | |||
@@ -338,8 +338,8 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, | |||
338 | bool *enabled, int width, int height) | 338 | bool *enabled, int width, int height) |
339 | { | 339 | { |
340 | struct drm_i915_private *dev_priv = to_i915(fb_helper->dev); | 340 | struct drm_i915_private *dev_priv = to_i915(fb_helper->dev); |
341 | unsigned long conn_configured, conn_seq, mask; | ||
341 | unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG); | 342 | unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG); |
342 | unsigned long conn_configured, conn_seq; | ||
343 | int i, j; | 343 | int i, j; |
344 | bool *save_enabled; | 344 | bool *save_enabled; |
345 | bool fallback = true, ret = true; | 345 | bool fallback = true, ret = true; |
@@ -357,9 +357,10 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, | |||
357 | drm_modeset_backoff(&ctx); | 357 | drm_modeset_backoff(&ctx); |
358 | 358 | ||
359 | memcpy(save_enabled, enabled, count); | 359 | memcpy(save_enabled, enabled, count); |
360 | conn_seq = GENMASK(count - 1, 0); | 360 | mask = GENMASK(count - 1, 0); |
361 | conn_configured = 0; | 361 | conn_configured = 0; |
362 | retry: | 362 | retry: |
363 | conn_seq = conn_configured; | ||
363 | for (i = 0; i < count; i++) { | 364 | for (i = 0; i < count; i++) { |
364 | struct drm_fb_helper_connector *fb_conn; | 365 | struct drm_fb_helper_connector *fb_conn; |
365 | struct drm_connector *connector; | 366 | struct drm_connector *connector; |
@@ -372,8 +373,7 @@ retry: | |||
372 | if (conn_configured & BIT(i)) | 373 | if (conn_configured & BIT(i)) |
373 | continue; | 374 | continue; |
374 | 375 | ||
375 | /* First pass, only consider tiled connectors */ | 376 | if (conn_seq == 0 && !connector->has_tile) |
376 | if (conn_seq == GENMASK(count - 1, 0) && !connector->has_tile) | ||
377 | continue; | 377 | continue; |
378 | 378 | ||
379 | if (connector->status == connector_status_connected) | 379 | if (connector->status == connector_status_connected) |
@@ -477,10 +477,8 @@ retry: | |||
477 | conn_configured |= BIT(i); | 477 | conn_configured |= BIT(i); |
478 | } | 478 | } |
479 | 479 | ||
480 | if (conn_configured != conn_seq) { /* repeat until no more are found */ | 480 | if ((conn_configured & mask) != mask && conn_configured != conn_seq) |
481 | conn_seq = conn_configured; | ||
482 | goto retry; | 481 | goto retry; |
483 | } | ||
484 | 482 | ||
485 | /* | 483 | /* |
486 | * If the BIOS didn't enable everything it could, fall back to have the | 484 | * If the BIOS didn't enable everything it could, fall back to have the |
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c index b996ac1d4fcc..af92964b6889 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.c +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c | |||
@@ -205,10 +205,14 @@ static struct drm_driver driver = { | |||
205 | #if defined(CONFIG_DEBUG_FS) | 205 | #if defined(CONFIG_DEBUG_FS) |
206 | .debugfs_init = virtio_gpu_debugfs_init, | 206 | .debugfs_init = virtio_gpu_debugfs_init, |
207 | #endif | 207 | #endif |
208 | .prime_handle_to_fd = drm_gem_prime_handle_to_fd, | ||
209 | .prime_fd_to_handle = drm_gem_prime_fd_to_handle, | ||
208 | .gem_prime_export = drm_gem_prime_export, | 210 | .gem_prime_export = drm_gem_prime_export, |
209 | .gem_prime_import = drm_gem_prime_import, | 211 | .gem_prime_import = drm_gem_prime_import, |
210 | .gem_prime_pin = virtgpu_gem_prime_pin, | 212 | .gem_prime_pin = virtgpu_gem_prime_pin, |
211 | .gem_prime_unpin = virtgpu_gem_prime_unpin, | 213 | .gem_prime_unpin = virtgpu_gem_prime_unpin, |
214 | .gem_prime_get_sg_table = virtgpu_gem_prime_get_sg_table, | ||
215 | .gem_prime_import_sg_table = virtgpu_gem_prime_import_sg_table, | ||
212 | .gem_prime_vmap = virtgpu_gem_prime_vmap, | 216 | .gem_prime_vmap = virtgpu_gem_prime_vmap, |
213 | .gem_prime_vunmap = virtgpu_gem_prime_vunmap, | 217 | .gem_prime_vunmap = virtgpu_gem_prime_vunmap, |
214 | .gem_prime_mmap = virtgpu_gem_prime_mmap, | 218 | .gem_prime_mmap = virtgpu_gem_prime_mmap, |
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h index 3238fdf58eb4..d577cb76f5ad 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.h +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h | |||
@@ -354,6 +354,10 @@ int virtio_gpu_object_wait(struct virtio_gpu_object *bo, bool no_wait); | |||
354 | /* virtgpu_prime.c */ | 354 | /* virtgpu_prime.c */ |
355 | int virtgpu_gem_prime_pin(struct drm_gem_object *obj); | 355 | int virtgpu_gem_prime_pin(struct drm_gem_object *obj); |
356 | void virtgpu_gem_prime_unpin(struct drm_gem_object *obj); | 356 | void virtgpu_gem_prime_unpin(struct drm_gem_object *obj); |
357 | struct sg_table *virtgpu_gem_prime_get_sg_table(struct drm_gem_object *obj); | ||
358 | struct drm_gem_object *virtgpu_gem_prime_import_sg_table( | ||
359 | struct drm_device *dev, struct dma_buf_attachment *attach, | ||
360 | struct sg_table *sgt); | ||
357 | void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj); | 361 | void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj); |
358 | void virtgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); | 362 | void virtgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); |
359 | int virtgpu_gem_prime_mmap(struct drm_gem_object *obj, | 363 | int virtgpu_gem_prime_mmap(struct drm_gem_object *obj, |
diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c index c59ec34c80a5..eb51a78e1199 100644 --- a/drivers/gpu/drm/virtio/virtgpu_prime.c +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c | |||
@@ -39,6 +39,18 @@ void virtgpu_gem_prime_unpin(struct drm_gem_object *obj) | |||
39 | WARN_ONCE(1, "not implemented"); | 39 | WARN_ONCE(1, "not implemented"); |
40 | } | 40 | } |
41 | 41 | ||
42 | struct sg_table *virtgpu_gem_prime_get_sg_table(struct drm_gem_object *obj) | ||
43 | { | ||
44 | return ERR_PTR(-ENODEV); | ||
45 | } | ||
46 | |||
47 | struct drm_gem_object *virtgpu_gem_prime_import_sg_table( | ||
48 | struct drm_device *dev, struct dma_buf_attachment *attach, | ||
49 | struct sg_table *table) | ||
50 | { | ||
51 | return ERR_PTR(-ENODEV); | ||
52 | } | ||
53 | |||
42 | void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj) | 54 | void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj) |
43 | { | 55 | { |
44 | struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj); | 56 | struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj); |