Gerd Hoffmann
9b2a0a1ef6
drm/virtio: use virtio_max_dma_size
...
We must make sure our scatterlist segments are not too big, otherwise
we might see swiotlb failures (happens with sev, also reproducable with
swiotlb=force).
Suggested-by: Laszlo Ersek <lersek@redhat.com >
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190821111210.27165-1-kraxel@redhat.com
2019-08-23 10:09:02 +02:00
Gerd Hoffmann
fbf0a7f44c
drm/qxl: get vga ioports
...
qxl has two modes: "native" (used by the drm driver) and "vga" (vga
compatibility mode, typically used for boot display and firmware
framebuffers).
Accessing any vga ioport will switch the qxl device into vga mode.
The qxl driver never does that, but other drivers accessing vga ports
can trigger that too and therefore disturb qxl operation. So aquire
the legacy vga ioports from vgaarb to avoid that.
Reproducer: Boot kvm guest with both qxl and i915 vgpu, with qxl being
first in pci scan order.
v2: Skip this for secondary qxl cards which don't have vga mode in the
first place (Frediano).
Cc: Frediano Ziglio <fziglio@redhat.com >
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805105401.29874-1-kraxel@redhat.com
2019-08-23 09:06:45 +02:00
Gerd Hoffmann
e7f0141a21
drm/ttm: drop ttm_buffer_object->resv
...
All users moved to ttm_buffer_object->base.resv
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-18-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
7a4db29660
drm/virtio: switch driver from bo->resv to bo->base.resv
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-17-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
5c69f132a2
drm/qxl: switch driver from bo->resv to bo->base.resv
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-16-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
27c44acebd
drm/nouveau: switch driver from bo->resv to bo->base.resv
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-15-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
5a5011a724
drm/amdgpu: switch driver from bo->resv to bo->base.resv
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-14-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
4922f55294
drm/vmwgfx: switch driver from bo->resv to bo->base.resv
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Thomas Hellstrom <thellstrom@vmware.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-13-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
336ac942f1
drm/radeon: switch driver from bo->resv to bo->base.resv
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-12-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
e532a135d7
drm/ttm: switch ttm core from bo->resv to bo->base.resv
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-11-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
2e3c9ec4d1
drm/ttm: set both resv and base.resv pointers
...
Initialize both ttm_buffer_object->resv and ttm_buffer_object->base.resv
pointers. This allows to move users from the former to the latter. When
all users are moved we can drop ttm_buffer_object->resv.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-10-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
b96f3e7c80
drm/ttm: use gem vma_node
...
Drop vma_node from ttm_buffer_object, use the gem struct
(base.vma_node) instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-9-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
1e053b10ba
drm/ttm: use gem reservation object
...
Drop ttm_resv from ttm_buffer_object, use the gem reservation object
(base._resv) instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-8-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
f8659be8ad
drm/nouveau: use embedded gem object
...
Drop drm_gem_object from nouveau_bo, use the
ttm_buffer_object.base instead.
Build tested only.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-7-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
c105de2828
drm/amdgpu: use embedded gem object
...
Drop drm_gem_object from amdgpu_bo, use the
ttm_buffer_object.base instead.
Build tested only.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-6-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
ce77038fda
drm/radeon: use embedded gem object
...
Drop drm_gem_object from radeon_bo, use the
ttm_buffer_object.base instead.
Build tested only.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-5-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
e0828d54c8
drm/qxl: use embedded gem object
...
Drop drm_gem_object from qxl_bo, use the
ttm_buffer_object.base instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-4-kraxel@redhat.com
2019-08-06 08:21:54 +02:00
Gerd Hoffmann
0e580c6d7d
drm/vram: use embedded gem object
...
Drop drm_gem_object from drm_gem_vram_object, use the
ttm_buffer_object.base instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Acked-by: Thomas Zimmermann <tzimmermann@suse.de >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-3-kraxel@redhat.com
2019-08-06 08:21:53 +02:00
Gerd Hoffmann
8eb8833e7e
drm/ttm: add gem base object
...
Add drm_gem_object struct to ttm_buffer_object, so ttm objects are a gdm
object superclass. Add a function to check whenever a given bo actually
uses the embedded drm_gem_object.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190805140119.7337-2-kraxel@redhat.com
2019-08-06 08:21:53 +02:00
Gerd Hoffmann
dd2b595978
drm/bochs: fix framebuffer setup.
...
The driver doesn't consider framebuffer pitch and offset, leading to a
wrong display in case offset != 0 or pitch != width * bpp. Fix it.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Acked-by: Thomas Zimmermann <tzimmermann@suse.de >
Link: http://patchwork.freedesktop.org/patch/msgid/20190627081206.23135-1-kraxel@redhat.com
2019-06-28 14:30:40 +02:00
Gerd Hoffmann
41de4be6f6
drm/virtio: move drm_connector_update_edid_property() call
...
drm_connector_update_edid_property can sleep, we must not
call it while holding a spinlock. Move the callsite.
Fixes: b4b01b4995 ("drm/virtio: add edid support")
Reported-by: Max Filippov <jcmvbkbc@gmail.com >
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Tested-by: Max Filippov <jcmvbkbc@gmail.com >
Tested-by: Cornelia Huck <cohuck@redhat.com >
Acked-by: Cornelia Huck <cohuck@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190405044602.2334-1-kraxel@redhat.com
2019-06-26 11:05:05 +02:00
Gerd Hoffmann
b07baa0393
drm/virtio: drop framebuffer dirty tracking code
...
No need to have our own implementation,
atomic helpers can do it for us.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190611125408.29421-1-kraxel@redhat.com
2019-06-13 08:47:15 +02:00
Gerd Hoffmann
95b74ce889
drm/qxl: drop WARN_ONCE()
...
There is no good reason to flood the kernel log with a WARN
stacktrace just because someone tried to mmap a prime buffer.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190524104251.22761-1-kraxel@redhat.com
2019-05-27 13:17:03 +02:00
Gerd Hoffmann
0388f2f61b
drm/cirrus: remove leftover files
...
cirrus_drv.h and cirrus_ttm.c are unused since commit ab3e023b1b
("drm/cirrus: rewrite and modernize driver"), apparently I ran "rm"
instead of "git rm" on them so they are still in present the tree.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Sam Ravnborg <sam@ravnborg.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190522103307.12711-1-kraxel@redhat.com
2019-05-23 12:16:01 +02:00
Gerd Hoffmann
ab042b824c
Revert "drm/qxl: drop prime import/export callbacks"
...
This reverts commit f4c34b1e2a .
Simliar to commit a0cecc23cf Revert "drm/virtio: drop prime
import/export callbacks". We have to do the same with qxl,
for the same reasons (it breaks DRI3).
Drop the WARN_ON_ONCE().
Fixes: f4c34b1e2a ("drm/qxl: drop prime import/export callbacks")
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190426053324.26443-1-kraxel@redhat.com
Acked-by: Daniel Vetter <daniel@ffwll.ch >
2019-04-30 14:08:48 +02:00
Gerd Hoffmann
b7147e9a15
drm: add drm_format_helper.c to kerneldoc
...
Also drop the dstclip parameter sphinx has warned about (leftover from
an earlier patch version).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190416090533.28374-1-kraxel@redhat.com
2019-04-17 09:39:22 +02:00
Gerd Hoffmann
beb941b970
virtio-gpu api: comment feature flags
...
Add comments to the existing feature flags,
documenting which commands belong to them.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190410114227.25846-2-kraxel@redhat.com
2019-04-11 17:00:10 +02:00
Gerd Hoffmann
79b979735e
drm: fix drm_fb_xrgb8888_to_rgb888_dstclip()
...
Oops, the __iomem annotation was added to the header file only.
Add it to the implementation (and documentation) too.
Fixes: 5c5373b51b ("drm: switch drm_fb_xrgb8888_to_rgb888_dstclip to accept __iomem dst")
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190411044932.13247-1-kraxel@redhat.com
2019-04-11 17:00:10 +02:00
Gerd Hoffmann
669105a74a
drm/bochs: use simple display pipe
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190410074828.10296-1-kraxel@redhat.com
2019-04-10 21:11:12 +02:00
Gerd Hoffmann
5c5373b51b
drm: switch drm_fb_xrgb8888_to_rgb888_dstclip to accept __iomem dst
...
Not all archs have the __io_virt() macro, so cirrus can't simply convert
pointers that way. The drm format helpers have to use memcpy_toio()
instead.
This patch makes drm_fb_xrgb8888_to_rgb888_dstclip() accept a __iomem
dst pointer and use memcpy_toio() instead of memcpy(). The helper
function (drm_fb_xrgb8888_to_rgb888_line) has been changed to process a
single scanline.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190410063815.17062-4-kraxel@redhat.com
2019-04-10 21:11:12 +02:00
Gerd Hoffmann
d653bd3948
drm: switch drm_fb_xrgb8888_to_rgb565_dstclip to accept __iomem dst
...
Not all archs have the __io_virt() macro, so cirrus can't simply convert
pointers that way. The drm format helpers have to use memcpy_toio()
instead.
This patch makes drm_fb_xrgb8888_to_rgb565_dstclip() accept a __iomem
dst pointer and use memcpy_toio() instead of memcpy(). The helper
function (drm_fb_xrgb8888_to_rgb565_line) has been changed to process
a single scanline.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190410063815.17062-3-kraxel@redhat.com
2019-04-10 21:11:11 +02:00
Gerd Hoffmann
bf4f6d16c8
drm: switch drm_fb_memcpy_dstclip to accept __iomem dst
...
Not all archs have the __io_virt() macro, so cirrus can't simply convert
pointers that way. The drm format helpers have to use memcpy_toio()
instead.
This patch makes drm_fb_memcpy_dstclip() accept a __iomem dst pointer
and use memcpy_toio() instead of memcpy(). With that separating out the
memcpy loop into the drm_fb_memcpy_lines() helper isn't useful any more,
so move the code back into the calling functins.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190410063815.17062-2-kraxel@redhat.com
2019-04-10 21:11:11 +02:00
Gerd Hoffmann
ab3e023b1b
drm/cirrus: rewrite and modernize driver.
...
Time to kill some bad sample code people are copying from ;)
This is a complete rewrite of the cirrus driver. The cirrus_mode_set()
function is pretty much the only function which is carried over largely
unmodified. Everything else is upside down.
It is a single monster patch. But given that it does some pretty
fundamental changes to the drivers workflow and also reduces the code
size by roughly 70% I think it'll still be alot easier to review than a
longish baby-step patch series.
Changes summary:
- Given the small amout of video memory (4 MB) the cirrus device has
the rewritten driver doesn't try to manage buffers there. Instead
it will blit (memcpy) the active framebuffer to video memory.
- All gem objects are stored in main memory and are manged using the
new shmem helpers. ttm is out.
- It supports RG16, RG24 and XR24 formats. XR24 gets converted to RG24
or RG16 at blit time if needed, to avoid the pitch becoming larger
than what the cirrus hardware can handle.
- The simple display pipeline is used.
- The generic fbdev emulation is used.
- It's a atomic driver now.
- It runs wayland.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Reviewed-by: Sam Ravnborg <sam@ravnborg.org >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190405095219.9231-6-kraxel@redhat.com
2019-04-08 06:59:27 +02:00
Gerd Hoffmann
ec3de7a43e
drm: add drm_fb_xrgb8888_to_rgb888_dstclip()
...
Simliar to drm_fb_xrgb8888_to_rgb565_dstclip() but converts to rgb888
instead of rgb565.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190405095219.9231-5-kraxel@redhat.com
2019-04-08 06:59:27 +02:00
Gerd Hoffmann
bcc4442008
drm: add drm_fb_xrgb8888_to_rgb565_dstclip()
...
It is a drm_fb_xrgb8888_to_rgb565() variant which checks the clip
rectangle for the destination too.
Common code between drm_fb_xrgb8888_to_rgb565() and
drm_fb_xrgb8888_to_rgb565_dstclip() was factored out into the
drm_fb_xrgb8888_to_rgb565_lines() helper function.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190405095219.9231-4-kraxel@redhat.com
2019-04-08 06:59:27 +02:00
Gerd Hoffmann
26f024f54a
drm: add drm_fb_memcpy_dstclip() helper
...
It is a drm_fb_memcpy() variant which checks the clip rectangle for the
destination too.
Common code between drm_fb_memcpy() and drm_fb_memcpy_dstclip() was
factored out into the drm_fb_memcpy_lines() helper function.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190405095219.9231-3-kraxel@redhat.com
2019-04-08 06:59:26 +02:00
Gerd Hoffmann
7415287e1f
drm: move tinydrm format conversion helpers to new drm_format_helper.c
...
Also rename them from tinydrm_* to drm_fb_*
Pure code motion, no functional change.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Sam Ravnborg <sam@ravnborg.org >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190405095219.9231-2-kraxel@redhat.com
2019-04-08 06:59:26 +02:00
Gerd Hoffmann
a719004282
drm/cirrus: drop mode_info.mode_config_initialized
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190402090459.12126-3-kraxel@redhat.com
2019-04-02 22:45:38 +02:00
Gerd Hoffmann
31c1792456
drm/bochs: drop mode_config_initialized
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190402090459.12126-2-kraxel@redhat.com
2019-04-02 22:45:37 +02:00
Gerd Hoffmann
e543e0293c
drm/cirrus: add missing drm_helper_force_disable_all() call.
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190401140306.28063-4-kraxel@redhat.com
2019-04-02 11:00:45 +02:00
Gerd Hoffmann
175d176a1a
drm/bochs: add missing drm_atomic_helper_shutdown() call.
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190401140306.28063-3-kraxel@redhat.com
2019-04-02 11:00:45 +02:00
Gerd Hoffmann
7ff8a316d1
drm/virtio: add missing drm_atomic_helper_shutdown() call.
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190401140306.28063-2-kraxel@redhat.com
2019-04-02 11:00:45 +02:00
Gerd Hoffmann
b0e999c955
fbdev: list all pci memory bars as conflicting apertures
...
Simply add all pci memory bars to struct apertures_struct in
remove_conflicting_pci_framebuffers(), without depending on the
res_id parameter.
The plan is to drop the res_id parameter later on. For now keep the
parameter, use it for sanity-checking and warn on inconsistencies.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com >
2019-04-01 17:46:57 +02:00
Gerd Hoffmann
530b28426a
drm/virtio: rework resource creation workflow.
...
This patch moves the virtio_gpu_cmd_create_resource() call (which
notifies the host about the new resource created) into the
virtio_gpu_object_create() function. That way we can call
virtio_gpu_cmd_create_resource() before ttm_bo_init(), so the host
already knows about the object when ttm initializes the object and calls
our driver callbacks.
Specifically the object is already created when the
virtio_gpu_ttm_tt_bind() callback invokes virtio_gpu_object_attach(),
so the extra virtio_gpu_object_attach() calls done after
virtio_gpu_object_create() are not needed any more.
The fence support for the create ioctl becomes a bit more tricky though.
The code moved into virtio_gpu_object_create() too. We first submit the
(fenced) virtio_gpu_cmd_create_resource() command, then initialize the
ttm object, and finally attach just created object to the fence for the
command in case it didn't finish yet.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190318113332.10900-6-kraxel@redhat.com
2019-03-28 12:11:56 +01:00
Gerd Hoffmann
fd4d6a4277
drm/virtio: params struct for virtio_gpu_cmd_create_resource_3d()
...
Add 3d resource parameters to virtio_gpu_object_params struct. With
that in place we can use it for virtio_gpu_cmd_resource_create_3d()
calls.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190318113332.10900-5-kraxel@redhat.com
2019-03-28 12:11:56 +01:00
Gerd Hoffmann
f9659329f2
drm/virtio: params struct for virtio_gpu_cmd_create_resource()
...
Add format, width and height fields to the virtio_gpu_object_params
struct. With that in place we can use the parameter struct for
virtio_gpu_cmd_create_resource() calls too.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190318113332.10900-4-kraxel@redhat.com
2019-03-28 12:11:56 +01:00
Gerd Hoffmann
4441235f95
drm/virtio: use struct to pass params to virtio_gpu_object_create()
...
Create virtio_gpu_object_params, use that to pass object parameters to
virtio_gpu_object_create. This is just the first step, followup patches
will add more parameters to the struct. The plan is to use the struct
for all object parameters.
Drop unused "kernel" parameter for virtio_gpu_alloc_object(), it is
unused and always false.
Also drop "pinned" parameter. virtio-gpu doesn't shuffle around
objects, so effecively they all are pinned anyway. Hardcode
TTM_PL_FLAG_NO_EVICT so ttm knows. Doesn't change much for the moment
as virtio-gpu supports TTM_PL_FLAG_TT only so there is no opportunity to
move around objects. That'll probably change in the future though.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190318113332.10900-3-kraxel@redhat.com
2019-03-28 12:11:55 +01:00
Gerd Hoffmann
42ca472603
drm/virtio: move virtio_gpu_object_{attach, detach} calls.
...
Drop the dummy ttm backend implementation, add a real one for
TTM_PL_FLAG_TT objects. The bin/unbind callbacks will call
virtio_gpu_object_{attach,detach}, to update the object state
on the host side, instead of invoking those calls from the
move_notify() callback.
With that in place the move and move_notify callbacks are not
needed any more, so drop them.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190318113332.10900-2-kraxel@redhat.com
2019-03-28 12:11:55 +01:00
Gerd Hoffmann
6bbeae35b6
drm/virtio: add virtio-gpu-features debugfs file.
...
This file prints which features the virtio-gpu device has.
Also add "virtio-gpu-" prefix to the existing fence file,
to make clear this is a driver-specific debugfs file.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190320083612.32067-1-kraxel@redhat.com
2019-03-28 12:11:55 +01:00
Gerd Hoffmann
c34674a23d
drm/qxl: remove conflicting framebuffers earlier
...
Add error checking while being at it.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190301092502.30948-4-kraxel@redhat.com
2019-03-07 10:34:38 +01:00
Gerd Hoffmann
1c74ca7a1a
drm/fb-helper: call vga_remove_vgacon automatically.
...
Add vga_remove_vgacon() call to
drm_fb_helper_remove_conflicting_pci_framebuffers().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190301092502.30948-3-kraxel@redhat.com
2019-03-07 10:34:38 +01:00
Gerd Hoffmann
c6b38fbbde
drm: move i915_kick_out_vgacon to vgaarb
...
Also rename it to vga_remove_vgacon and add kerneldoc text.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190301092502.30948-2-kraxel@redhat.com
2019-03-07 10:34:37 +01:00
Gerd Hoffmann
98f41dc3b3
drm/virtio: implement prime export
...
Just run drm_prime_pages_to_sg() on the ttm pages list to get an
sg_table for export. The pages list is created at object initialization
time, so there should be no need to handle an unpopulated page list.
Add a sanity check nevertheless.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190227144441.6755-4-kraxel@redhat.com
2019-02-28 09:09:02 +01:00
Gerd Hoffmann
873f51d434
drm/virtio: remove prime pin/unpin callbacks.
...
virtio-gpu objects never move around, so effectively they are
pinned all the time. Therefore we don't need the (optional)
pin/unpin callbacks. Remove them.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190227144441.6755-3-kraxel@redhat.com
2019-02-28 09:09:01 +01:00
Gerd Hoffmann
c837da88c3
drm/virtio: implement prime mmap
...
Sync gem vm_node.start with ttm vm_node.start,
then we can just call drm_gem_prime_mmap().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190227144441.6755-2-kraxel@redhat.com
2019-02-28 09:09:01 +01:00
Gerd Hoffmann
16065fcdd1
drm/virtio: do NOT reuse resource ids
...
Bisected guest kernel changes crashing qemu. Landed at
"6c1cd97bda drm/virtio: fix resource id handling". Looked again, and
noticed we where not only leaking *some* ids, but *all* ids. The old
code never ever called virtio_gpu_resource_id_put().
So, commit 6c1cd97bda effectively makes the linux kernel starting
re-using IDs after releasing them, and apparently virglrenderer can't
deal with that. Oops.
This patch puts a temporary stopgap into place for the 5.0 release.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Signed-off-by: Dave Airlie <airlied@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190208140409.15280-1-kraxel@redhat.com
2019-02-11 14:44:10 +10:00
Gerd Hoffmann
86c5b359d9
drm/bochs: fix bochs_gem_prime_mmap
...
ttm_fbdev_mmap() just doesn't work. It appears to work fine, mmap()
returns success, but any attempt to actually access the mapping causes a
SIGBUS.
We can just use drm_gem_prime_mmap() instead. Almost. We have to copy
over the start offset from the ttm_buffer_object vm_node to the
drm_gem_object vm_node so the offset math in drm_gem_prime_mmap() works
correctly for us even though we use ttm to manage our objects.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190204183858.8976-1-kraxel@redhat.com
2019-02-05 10:28:15 +01:00
Gerd Hoffmann
db97dd0eef
drm/cirrus: add plane setup
...
Commit "f4bd542bca drm/fb-helper: Scale back depth to supported maximum"
uncovered a bug in the cirrus driver. It must create its own primary
plane, using the correct format list, depending on the bpp module
parameter, so it is consistent with mode_config->preferred_depth.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190204110131.21467-1-kraxel@redhat.com
2019-02-05 10:28:13 +01:00
Gerd Hoffmann
11ca1b663a
drm/qxl: use ttm_tt
...
qxl device will not dma, so we don't need ttm_dma_tt. Go use ttm_tt
instead, to avoid wasting resources (swiotlb bounce buffers for
example).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190129082541.1392-1-kraxel@redhat.com
2019-01-30 10:51:35 +01:00
Gerd Hoffmann
b5f030b7b4
drm/qxl: use kernel mode db
...
Add all standard modes from the kernel's video mode data base.
Keep a few non-standard modes in the qxl mode list.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-23-kraxel@redhat.com
2019-01-28 14:24:54 +01:00
Gerd Hoffmann
1b043677d4
drm/qxl: add qxl_add_mode helper function
...
Add a helper function to add custom video modes to a connector.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-22-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
feba24de70
drm/qxl: add mode/framebuffer check functions
...
Add a helper functions to check video modes. Also add a helper to check
framebuffer buffer objects, using the former for consistency. That way
we should not fail in qxl_primary_atomic_check() because video modes
which are too big will not be added to the mode list in the first place.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-21-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
182e7f96f0
drm/qxl: implement qxl_gem_prime_(un)pin
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-20-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
13aff184ed
drm/qxl: remove dead qxl fbdev emulation code
...
Lovely diffstat, thanks to the new generic fbdev emulation.
drm/qxl/Makefile | 2
drm/qxl/qxl_draw.c | 232 ----------------------------------------
drm/qxl/qxl_drv.h | 21 ---
drm/qxl/qxl_fb.c | 300 -----------------------------------------------------
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-19-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
26d4707d44
drm/qxl: use generic fbdev emulation
...
Switch qxl over to the new generic fbdev emulation.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-18-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
9b369116fd
drm/qxl: implement prime kmap/kunmap
...
Generic fbdev emulation needs this. Also: We must keep track of the
number of mappings now, so we don't unmap early in case two users want a
kmap of the same bo. Add a sanity check to destroy callback to make
sure kmap/kunmap is balanced.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-17-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
21c76bd19e
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: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-16-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
90adda2ce8
drm/qxl: cover all crtcs in shadow bo.
...
The qxl device supports only a single active framebuffer ("primary
surface" in spice terminology). In multihead configurations are handled
by defining rectangles within the primary surface for each head/crtc.
Userspace which uses the qxl ioctl interface (xorg qxl driver) is aware
of this limitation and will setup framebuffers and crtcs accordingly.
Userspace which uses dumb framebuffers (xorg modesetting driver,
wayland) is not aware of this limitation and tries to use two
framebuffers (one for each crtc) instead.
The qxl kms driver already has the dumb bo separated from the primary
surface, by using a (shared) shadow bo as primary surface. This is
needed to support pageflips without having to re-create the primary
surface. The qxl driver will blit from the dumb bo to the shadow bo
instead.
So we can extend the shadow logic: Maintain a global shadow bo (aka
primary surface), make it big enough that dumb bo's for all crtcs fit in
side-by-side. Adjust the pageflip blits to place the heads next to each
other in the shadow.
With this patch in place multihead qxl works with wayland.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-15-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
4979904c62
drm/qxl: use shadow bo directly
...
Pass the shadow bo to qxl_io_create_primary() instead of expecting
qxl_io_create_primary to check bo->shadow. Set is_primary flag on the
shadow bo. Move the is_primary tracking into qxl_io_create_primary()
and qxl_io_destroy_primary() functions.
That simplifies primary surface tracking and the workflow in
qxl_primary_atomic_update().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-14-kraxel@redhat.com
qxl_io_create/destroy_primary: primary_bo tracking [fixup]
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
166205444b
drm/qxl: track primary bo
...
Track which bo is used as primary surface. With that in place we don't
need the primary_created flag any more, we can just check the primary bo
pointer instead.
Also verify we don't already have a primary surface in
qxl_io_create_primary().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-13-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
fb7ebc0119
drm/qxl: drop unused offset parameter from qxl_io_create_primary()
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-12-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
1f85535cd0
drm/qxl: move qxl_primary_apply_cursor to correct place
...
The qxl device ties the cursor to the primary surface. Therefore
calling qxl_io_destroy_primary() and qxl_io_create_primary() to switch
the framebuffer causes the cursor information being lost and the driver
must re-apply it.
The correct call order to do that is qxl_io_destroy_primary() +
qxl_io_create_primary() + qxl_primary_apply_cursor().
The old code did qxl_io_destroy_primary() + qxl_primary_apply_cursor() +
qxl_io_create_primary(). Due to qxl_primary_apply_cursor request being
queued in a ringbuffer and qxl_io_create_primary() trapping to the
hypervisor instantly there is a high chance that qxl_io_create_primary()
is processed first even with the wrong call order. But it's racy and
thus not reliable.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-11-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
f3bc22f04d
drm/qxl: use QXL_GEM_DOMAIN_SURFACE for dumb gem objects
...
dumb buffers are used as qxl surfaces, so allocate them as
QXL_GEM_DOMAIN_SURFACE. Should usually be allocated in
PRIV ttm domain then, so this reduces VRAM memory pressure.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-10-kraxel@redhat.com
2019-01-28 14:24:53 +01:00
Gerd Hoffmann
247156d7e2
drm/qxl: use QXL_GEM_DOMAIN_SURFACE for shadow bo.
...
The shadow bo is used as qxl surface, so allocate it as
QXL_GEM_DOMAIN_SURFACE. Should usually be allocated in
PRIV ttm domain then, so this reduces VRAM memory pressure.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-9-kraxel@redhat.com
2019-01-28 14:24:52 +01:00
Gerd Hoffmann
6957c6867b
drm/qxl: allow both PRIV and VRAM placement for QXL_GEM_DOMAIN_SURFACE
...
qxl surfaces (used for framebuffers and gem objects) can live in both
VRAM and PRIV ttm domains. Update placement setup to include both.
Put PRIV first in the list so it is preferred, so VRAM will have more
room for objects which must be allocated there.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-8-kraxel@redhat.com
2019-01-28 14:24:52 +01:00
Gerd Hoffmann
96e8f15396
drm/qxl: use separate offset spaces for the two slots / ttm memory types.
...
Without that ttm offsets are not unique, they can refer to objects
in both VRAM and PRIV memory (aka main and surfaces slot).
One of those "why things didn't blow up without this" moments.
Probably offset conflicts are rare enough by pure luck.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-7-kraxel@redhat.com
2019-01-28 14:24:52 +01:00
Gerd Hoffmann
3ebe3ddf37
drm/qxl: drop unused fields from struct qxl_device
...
slot_id_bits and slot_gen_bits can be read directly from qxlrom instead.
va_slot_mask is never used anywhere.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-6-kraxel@redhat.com
2019-01-28 14:24:52 +01:00
Gerd Hoffmann
2ec6bd67b7
drm/qxl: simplify slot management
...
Drop pointless indirection, remove the mem_slots array and index
variables, drop dynamic allocation. Store memslots in qxl_device
instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-4-kraxel@redhat.com
2019-01-28 14:24:52 +01:00
Gerd Hoffmann
d934ef6b98
drm/qxl: drop unused qxl_fb_virtual_address
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-3-kraxel@redhat.com
2019-01-28 14:24:52 +01:00
Gerd Hoffmann
edd38a1e59
drm/qxl: drop ttm_mem_reg arg from qxl_hw_surface_alloc()
...
Not used, is always NULL.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Noralf Trønnes <noralf@tronnes.org >
Link: http://patchwork.freedesktop.org/patch/msgid/20190118122020.27596-2-kraxel@redhat.com
2019-01-28 14:24:52 +01:00
Gerd Hoffmann
19b85cfabf
drm/bochs: move remaining fb bits to kms
...
bochs_fbdev.c is almost empty now. Move the remaining framebuffer bits
over to bochs_kms.c. Pure code motion. No functional change.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-17-kraxel@redhat.com
2019-01-14 08:39:17 +01:00
Gerd Hoffmann
60119b0ba0
drm/bochs: drop old fbdev emulation code
...
Not needed any more, bochs uses the generic emulation now.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-16-kraxel@redhat.com
2019-01-14 08:39:16 +01:00
Gerd Hoffmann
7a0483ac4f
drm/bochs: switch to generic drm fbdev emulation
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-15-kraxel@redhat.com
2019-01-14 08:39:15 +01:00
Gerd Hoffmann
132a45340a
drm/bochs: add basic prime support
...
Just enough to make the generic framebuffer emulation happy.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-14-kraxel@redhat.com
2019-01-14 08:39:15 +01:00
Gerd Hoffmann
0bcdda5e35
drm/bochs: move ttm_bo_(un)reserve calls into bochs_bo_{pin, unpin}
...
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-13-kraxel@redhat.com
2019-01-14 08:39:14 +01:00
Gerd Hoffmann
dde8fb5555
drm/bochs: drop unused gpu_addr arg from bochs_bo_pin()
...
It's always NULL, so just remove it.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-12-kraxel@redhat.com
2019-01-14 08:39:14 +01:00
Gerd Hoffmann
e9af3c6088
drm/bochs: remove old bochs_crtc_* functions
...
Remove the old, now unused crtc callbacks.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-11-kraxel@redhat.com
2019-01-14 08:39:13 +01:00
Gerd Hoffmann
834adb3bb8
drm/bochs: atomic: set DRIVER_ATOMIC
...
Conversion to atomic modesetting, final step.
Set the DRIVER_ATOMIC flag.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-10-kraxel@redhat.com
2019-01-14 08:39:12 +01:00
Gerd Hoffmann
568a4c72d4
drm/bochs: atomic: use suspend/resume helpers
...
Switch to atomic helpers: drm_mode_config_helper_suspend/resume().
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-9-kraxel@redhat.com
2019-01-14 08:39:12 +01:00
Gerd Hoffmann
b635ecb5f2
drm/bochs: atomic: use atomic page_flip helper
...
Conversion to atomic modesetting, step five.
Use atomic page_flip helper for crtc.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-8-kraxel@redhat.com
2019-01-14 08:39:11 +01:00
Gerd Hoffmann
c13008562f
drm/bochs: atomic: use atomic set_config helper
...
Conversion to atomic modesetting, step four.
Use atomic set_config helper for crtc.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-7-kraxel@redhat.com
2019-01-14 08:39:10 +01:00
Gerd Hoffmann
6579c39594
drm/bochs: atomic: switch planes to atomic, wire up helpers.
...
Conversion to atomic modesetting, step three.
Wire up atomic helpers. Switch planes to atomic.
We are late to the party, the transitional helpers are gone,
so this can't be splitted into smaller steps any more.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-6-kraxel@redhat.com
2019-01-14 08:39:10 +01:00
Gerd Hoffmann
6309200184
drm/bochs: atomic: add mode_set_nofb callback.
...
Conversion to atomic modesetting, step two.
Add mode_set_nofb crtc helper callback.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-5-kraxel@redhat.com
2019-01-14 08:39:09 +01:00
Gerd Hoffmann
0f0eb98e33
drm/bochs: atomic: add atomic_flush+atomic_enable callbacks.
...
Conversion to atomic modesetting, step one.
Add atomic crtc helper callbacks.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-4-kraxel@redhat.com
2019-01-14 08:39:09 +01:00
Gerd Hoffmann
472fde887f
drm/bochs: split bochs_hw_setmode
...
Create a separate bochs_hw_setformat function to configure
the framebuffer format (actually just the byteorder).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-3-kraxel@redhat.com
2019-01-14 08:39:08 +01:00
Gerd Hoffmann
3528966121
drm/bochs: encoder cleanup
...
Most unused callbacks can be NULL pointers these days.
Drop a bunch of empty encoder callbacks.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-2-kraxel@redhat.com
2019-01-14 08:39:07 +01:00
Gerd Hoffmann
b318e3ff7c
drm/virtio: drop prime import/export callbacks
...
Also set prime_handle_to_fd and prime_fd_to_handle to NULL,
so drm will not advertive DRM_PRIME_CAP_{IMPORT,EXPORT} to
userspace.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190110111545.26768-1-kraxel@redhat.com
2019-01-14 08:16:19 +01:00
Gerd Hoffmann
f4c34b1e2a
drm/qxl: drop prime import/export callbacks
...
Also set prime_handle_to_fd and prime_fd_to_handle to NULL,
so drm will not advertive DRM_PRIME_CAP_{IMPORT,EXPORT} to
userspace.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Dave Airlie <airlied@redhat.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20190110081750.11358-1-kraxel@redhat.com
2019-01-14 08:16:18 +01:00
Gerd Hoffmann
cb66c6daa5
drm/virtio: drop virtio_gpu_fence_cleanup()
...
Just call drm_fence_put directly instead.
Also set vgfb->fence to NULL after dropping the reference.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20181219122708.4586-4-kraxel@redhat.com
2019-01-08 12:00:01 +01:00
Gerd Hoffmann
6a01d277ac
drm/virtio: fix pageflip flush
...
Sending the flush command only makes sense if we actually have
a framebuffer attached to the scanout (handle != 0).
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20181219122708.4586-3-kraxel@redhat.com
2019-01-08 12:00:00 +01:00