Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'drm-fixes-2019-04-24' of git://anongit.freedesktop.org/drm/drm

Pull drm regression fixes from Dave Airlie:
"We interrupt your regularly scheduled drm fixes for a regression
special.

The first is for a fix in i915 that had unexpected side effects
fallout in the userspace X.org modesetting driver where X would no
longer start. I got tired of the nitpicking and issued a large hammer
on it. The X.org driver is buggy, but blackscreen regressions are
worse.

The second was an oversight that myself and Gerd should have noticed
better, Gerd is trying to fix this properly, but the regression is too
large to leave, even if the original behaviour is bad in some cases,
it's clearly bad to break a bunch of working use cases.

I'll likely have a regular fixes pull later, but I really wanted to
highlight these"

* tag 'drm-fixes-2019-04-24' of git://anongit.freedesktop.org/drm/drm:
Revert "drm/virtio: drop prime import/export callbacks"
Revert "drm/i915/fbdev: Actually configure untiled displays"

+25 -7
+5 -7
drivers/gpu/drm/i915/intel_fbdev.c
··· 338 338 bool *enabled, int width, int height) 339 339 { 340 340 struct drm_i915_private *dev_priv = to_i915(fb_helper->dev); 341 + unsigned long conn_configured, conn_seq, mask; 341 342 unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG); 342 - unsigned long conn_configured, conn_seq; 343 343 int i, j; 344 344 bool *save_enabled; 345 345 bool fallback = true, ret = true; ··· 357 357 drm_modeset_backoff(&ctx); 358 358 359 359 memcpy(save_enabled, enabled, count); 360 - conn_seq = GENMASK(count - 1, 0); 360 + mask = GENMASK(count - 1, 0); 361 361 conn_configured = 0; 362 362 retry: 363 + conn_seq = conn_configured; 363 364 for (i = 0; i < count; i++) { 364 365 struct drm_fb_helper_connector *fb_conn; 365 366 struct drm_connector *connector; ··· 373 372 if (conn_configured & BIT(i)) 374 373 continue; 375 374 376 - /* First pass, only consider tiled connectors */ 377 - if (conn_seq == GENMASK(count - 1, 0) && !connector->has_tile) 375 + if (conn_seq == 0 && !connector->has_tile) 378 376 continue; 379 377 380 378 if (connector->status == connector_status_connected) ··· 477 477 conn_configured |= BIT(i); 478 478 } 479 479 480 - if (conn_configured != conn_seq) { /* repeat until no more are found */ 481 - conn_seq = conn_configured; 480 + if ((conn_configured & mask) != mask && conn_configured != conn_seq) 482 481 goto retry; 483 - } 484 482 485 483 /* 486 484 * If the BIOS didn't enable everything it could, fall back to have the
+4
drivers/gpu/drm/virtio/virtgpu_drv.c
··· 205 205 #if defined(CONFIG_DEBUG_FS) 206 206 .debugfs_init = virtio_gpu_debugfs_init, 207 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 210 .gem_prime_export = drm_gem_prime_export, 209 211 .gem_prime_import = drm_gem_prime_import, 210 212 .gem_prime_pin = virtgpu_gem_prime_pin, 211 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 216 .gem_prime_vmap = virtgpu_gem_prime_vmap, 213 217 .gem_prime_vunmap = virtgpu_gem_prime_vunmap, 214 218 .gem_prime_mmap = virtgpu_gem_prime_mmap,
+4
drivers/gpu/drm/virtio/virtgpu_drv.h
··· 354 354 /* virtgpu_prime.c */ 355 355 int virtgpu_gem_prime_pin(struct drm_gem_object *obj); 356 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 361 void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj); 358 362 void virtgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); 359 363 int virtgpu_gem_prime_mmap(struct drm_gem_object *obj,
+12
drivers/gpu/drm/virtio/virtgpu_prime.c
··· 39 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 54 void *virtgpu_gem_prime_vmap(struct drm_gem_object *obj) 43 55 { 44 56 struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);