* [PATCH] drm/virtgpu: Replace dev_private by helper function
@ 2023-06-20 10:33 Thomas Zimmermann
2023-06-21 7:57 ` Gerd Hoffmann
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2023-06-20 10:33 UTC (permalink / raw)
To: airlied, kraxel, gurchetansingh, olvaffe, daniel
Cc: Thomas Zimmermann, dri-devel, virtualization
Dereference struct drm_device.dev_private in the helper function
do_virtio_gpu_device(). The dev_private field is deprecated and
drivers are advised not ot use it. Encapsulating it in a helper
function will help with a later removal. No functional changes.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/virtio/virtgpu_debugfs.c | 6 +++---
drivers/gpu/drm/virtio/virtgpu_display.c | 4 ++--
drivers/gpu/drm/virtio/virtgpu_drv.c | 2 +-
drivers/gpu/drm/virtio/virtgpu_drv.h | 12 ++++++++++++
drivers/gpu/drm/virtio/virtgpu_gem.c | 8 ++++----
drivers/gpu/drm/virtio/virtgpu_ioctl.c | 18 +++++++++---------
drivers/gpu/drm/virtio/virtgpu_kms.c | 8 ++++----
drivers/gpu/drm/virtio/virtgpu_object.c | 4 ++--
drivers/gpu/drm/virtio/virtgpu_plane.c | 8 ++++----
drivers/gpu/drm/virtio/virtgpu_prime.c | 4 ++--
drivers/gpu/drm/virtio/virtgpu_submit.c | 4 ++--
drivers/gpu/drm/virtio/virtgpu_vq.c | 4 ++--
drivers/gpu/drm/virtio/virtgpu_vram.c | 8 ++++----
13 files changed, 51 insertions(+), 39 deletions(-)
diff --git a/drivers/gpu/drm/virtio/virtgpu_debugfs.c b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
index 853dd9aa397eb..e768c6253db33 100644
--- a/drivers/gpu/drm/virtio/virtgpu_debugfs.c
+++ b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
@@ -44,7 +44,7 @@ static void virtio_gpu_add_int(struct seq_file *m, const char *name, int value)
static int virtio_gpu_features(struct seq_file *m, void *data)
{
struct drm_info_node *node = (struct drm_info_node *)m->private;
- struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(node->minor->dev);
virtio_gpu_add_bool(m, "virgl", vgdev->has_virgl_3d);
virtio_gpu_add_bool(m, "edid", vgdev->has_edid);
@@ -69,7 +69,7 @@ static int
virtio_gpu_debugfs_irq_info(struct seq_file *m, void *data)
{
struct drm_info_node *node = (struct drm_info_node *) m->private;
- struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(node->minor->dev);
seq_printf(m, "fence %llu %lld\n",
(u64)atomic64_read(&vgdev->fence_drv.last_fence_id),
@@ -81,7 +81,7 @@ static int
virtio_gpu_debugfs_host_visible_mm(struct seq_file *m, void *data)
{
struct drm_info_node *node = (struct drm_info_node *)m->private;
- struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(node->minor->dev);
struct drm_printer p;
if (!vgdev->has_host_visible) {
diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index ad924a8502e90..6cf143e06b003 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -86,7 +86,7 @@ virtio_gpu_framebuffer_init(struct drm_device *dev,
static void virtio_gpu_crtc_mode_set_nofb(struct drm_crtc *crtc)
{
struct drm_device *dev = crtc->dev;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
virtio_gpu_cmd_set_scanout(vgdev, output->index, 0,
@@ -104,7 +104,7 @@ static void virtio_gpu_crtc_atomic_disable(struct drm_crtc *crtc,
struct drm_atomic_state *state)
{
struct drm_device *dev = crtc->dev;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
virtio_gpu_cmd_set_scanout(vgdev, output->index, 0, 0, 0, 0, 0);
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 91ace7a44f2a6..0e251c604049e 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -125,7 +125,7 @@ static void virtio_gpu_remove(struct virtio_device *vdev)
static void virtio_gpu_config_changed(struct virtio_device *vdev)
{
struct drm_device *dev = vdev->priv;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
schedule_work(&vgdev->config_changed_work);
}
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
index 4126c384286bf..d2f9a5862d6b7 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -40,6 +40,7 @@
#include <drm/drm_gem.h>
#include <drm/drm_gem_shmem_helper.h>
#include <drm/drm_ioctl.h>
+#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
#include <drm/virtgpu_drm.h>
@@ -266,6 +267,17 @@ struct virtio_gpu_device {
spinlock_t host_visible_lock;
};
+static inline struct virtio_gpu_device *to_virtio_gpu_device(struct drm_device *dev)
+{
+ drm_WARN_ON_ONCE(dev, !dev->dev_private);
+
+ /*
+ * TODO: Embed struct drm_device in struct virtio_gpu_device and
+ * upcast with container_of().
+ */
+ return dev->dev_private;
+}
+
struct virtio_gpu_fpriv {
uint32_t ctx_id;
uint32_t context_init;
diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/virtgpu_gem.c
index 7db48d17ee3a8..6b1663a2c31eb 100644
--- a/drivers/gpu/drm/virtio/virtgpu_gem.c
+++ b/drivers/gpu/drm/virtio/virtgpu_gem.c
@@ -34,7 +34,7 @@ static int virtio_gpu_gem_create(struct drm_file *file,
struct drm_gem_object **obj_p,
uint32_t *handle_p)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_object *obj;
int ret;
u32 handle;
@@ -64,7 +64,7 @@ int virtio_gpu_mode_dumb_create(struct drm_file *file_priv,
{
struct drm_gem_object *gobj;
struct virtio_gpu_object_params params = { 0 };
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
int ret;
uint32_t pitch;
@@ -117,7 +117,7 @@ int virtio_gpu_mode_dumb_mmap(struct drm_file *file_priv,
int virtio_gpu_gem_object_open(struct drm_gem_object *obj,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = obj->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
struct virtio_gpu_object_array *objs;
@@ -144,7 +144,7 @@ int virtio_gpu_gem_object_open(struct drm_gem_object *obj,
void virtio_gpu_gem_object_close(struct drm_gem_object *obj,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = obj->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
struct virtio_gpu_object_array *objs;
diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c b/drivers/gpu/drm/virtio/virtgpu_ioctl.c
index b24b11f25197d..aefcc7fb2e3e7 100644
--- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c
+++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c
@@ -54,7 +54,7 @@ static void virtio_gpu_create_context_locked(struct virtio_gpu_device *vgdev,
void virtio_gpu_create_context(struct drm_device *dev, struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
mutex_lock(&vfpriv->context_lock);
@@ -70,7 +70,7 @@ void virtio_gpu_create_context(struct drm_device *dev, struct drm_file *file)
static int virtio_gpu_map_ioctl(struct drm_device *dev, void *data,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct drm_virtgpu_map *virtio_gpu_map = data;
return virtio_gpu_mode_dumb_mmap(file, vgdev->ddev,
@@ -81,7 +81,7 @@ static int virtio_gpu_map_ioctl(struct drm_device *dev, void *data,
static int virtio_gpu_getparam_ioctl(struct drm_device *dev, void *data,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct drm_virtgpu_getparam *param = data;
int value;
@@ -119,7 +119,7 @@ static int virtio_gpu_getparam_ioctl(struct drm_device *dev, void *data,
static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct drm_virtgpu_resource_create *rc = data;
struct virtio_gpu_fence *fence;
int ret;
@@ -214,7 +214,7 @@ static int virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
void *data,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
struct drm_virtgpu_3d_transfer_from_host *args = data;
struct virtio_gpu_object *bo;
@@ -269,7 +269,7 @@ static int virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
static int virtio_gpu_transfer_to_host_ioctl(struct drm_device *dev, void *data,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
struct drm_virtgpu_3d_transfer_to_host *args = data;
struct virtio_gpu_object *bo;
@@ -358,7 +358,7 @@ static int virtio_gpu_wait_ioctl(struct drm_device *dev, void *data,
static int virtio_gpu_get_caps_ioctl(struct drm_device *dev,
void *data, struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct drm_virtgpu_get_caps *args = data;
unsigned size, host_caps_size;
int i;
@@ -493,7 +493,7 @@ static int virtio_gpu_resource_create_blob_ioctl(struct drm_device *dev,
struct drm_gem_object *obj;
struct virtio_gpu_object *bo;
struct virtio_gpu_object_params params = { 0 };
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
struct drm_virtgpu_resource_create_blob *rc_blob = data;
@@ -569,7 +569,7 @@ static int virtio_gpu_context_init_ioctl(struct drm_device *dev,
uint64_t valid_ring_mask;
size_t len;
struct drm_virtgpu_context_set_param *ctx_set_params = NULL;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
struct drm_virtgpu_context_init *args = data;
diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
index 5a3b5aaed1f36..ab8c0a6719ac7 100644
--- a/drivers/gpu/drm/virtio/virtgpu_kms.c
+++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
@@ -280,7 +280,7 @@ static void virtio_gpu_cleanup_cap_cache(struct virtio_gpu_device *vgdev)
void virtio_gpu_deinit(struct drm_device *dev)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
flush_work(&vgdev->obj_free_work);
flush_work(&vgdev->ctrlq.dequeue_work);
@@ -292,7 +292,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
void virtio_gpu_release(struct drm_device *dev)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
if (!vgdev)
return;
@@ -307,7 +307,7 @@ void virtio_gpu_release(struct drm_device *dev)
int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv;
int handle;
@@ -335,7 +335,7 @@ int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file)
void virtio_gpu_driver_postclose(struct drm_device *dev, struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
if (!vgdev->has_virgl_3d)
diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c
index c7e74cf130221..d5613b74b0456 100644
--- a/drivers/gpu/drm/virtio/virtgpu_object.c
+++ b/drivers/gpu/drm/virtio/virtgpu_object.c
@@ -63,7 +63,7 @@ static void virtio_gpu_resource_id_put(struct virtio_gpu_device *vgdev, uint32_t
void virtio_gpu_cleanup_object(struct virtio_gpu_object *bo)
{
- struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
virtio_gpu_resource_id_put(vgdev, bo->hw_res_handle);
if (virtio_gpu_is_shmem(bo)) {
@@ -86,7 +86,7 @@ void virtio_gpu_cleanup_object(struct virtio_gpu_object *bo)
static void virtio_gpu_free_object(struct drm_gem_object *obj)
{
struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
- struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
if (bo->created) {
virtio_gpu_cmd_unref_resource(vgdev, bo);
diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
index a2e045f3a0004..1f867af2555b1 100644
--- a/drivers/gpu/drm/virtio/virtgpu_plane.c
+++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
@@ -126,7 +126,7 @@ static void virtio_gpu_resource_flush(struct drm_plane *plane,
uint32_t width, uint32_t height)
{
struct drm_device *dev = plane->dev;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_framebuffer *vgfb;
struct virtio_gpu_object *bo;
@@ -161,7 +161,7 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state,
plane);
struct drm_device *dev = plane->dev;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_output *output = NULL;
struct virtio_gpu_object *bo;
struct drm_rect rect;
@@ -235,7 +235,7 @@ static int virtio_gpu_plane_prepare_fb(struct drm_plane *plane,
struct drm_plane_state *new_state)
{
struct drm_device *dev = plane->dev;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_framebuffer *vgfb;
struct virtio_gpu_object *bo;
@@ -278,7 +278,7 @@ static void virtio_gpu_cursor_plane_update(struct drm_plane *plane,
struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state,
plane);
struct drm_device *dev = plane->dev;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_output *output = NULL;
struct virtio_gpu_framebuffer *vgfb;
struct virtio_gpu_object *bo = NULL;
diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
index 44425f20d91aa..44e761dc4d79f 100644
--- a/drivers/gpu/drm/virtio/virtgpu_prime.c
+++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
@@ -32,7 +32,7 @@ static int virtgpu_virtio_get_uuid(struct dma_buf *buf,
{
struct drm_gem_object *obj = buf->priv;
struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
- struct virtio_gpu_device *vgdev = obj->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
wait_event(vgdev->resp_wq, bo->uuid_state != STATE_INITIALIZING);
if (bo->uuid_state != STATE_OK)
@@ -106,7 +106,7 @@ struct dma_buf *virtgpu_gem_prime_export(struct drm_gem_object *obj,
{
struct dma_buf *buf;
struct drm_device *dev = obj->dev;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
int ret = 0;
bool blob = bo->host3d_blob || bo->guest_blob;
diff --git a/drivers/gpu/drm/virtio/virtgpu_submit.c b/drivers/gpu/drm/virtio/virtgpu_submit.c
index cf3c04b16a7a8..5a599064aa265 100644
--- a/drivers/gpu/drm/virtio/virtgpu_submit.c
+++ b/drivers/gpu/drm/virtio/virtgpu_submit.c
@@ -162,7 +162,7 @@ static int virtio_gpu_init_submit(struct virtio_gpu_submit *submit,
u64 fence_ctx, u32 ring_idx)
{
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fence *out_fence;
int err;
@@ -251,7 +251,7 @@ static int virtio_gpu_lock_buflist(struct virtio_gpu_submit *submit)
int virtio_gpu_execbuffer_ioctl(struct drm_device *dev, void *data,
struct drm_file *file)
{
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
u64 fence_ctx = vgdev->fence_drv.context;
struct drm_virtgpu_execbuffer *exbuf = data;
diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c
index b1a00c0c25a70..7faa7f1a84005 100644
--- a/drivers/gpu/drm/virtio/virtgpu_vq.c
+++ b/drivers/gpu/drm/virtio/virtgpu_vq.c
@@ -56,7 +56,7 @@ static void convert_to_hw_box(struct virtio_gpu_box *dst,
void virtio_gpu_ctrl_ack(struct virtqueue *vq)
{
struct drm_device *dev = vq->vdev->priv;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
schedule_work(&vgdev->ctrlq.dequeue_work);
}
@@ -64,7 +64,7 @@ void virtio_gpu_ctrl_ack(struct virtqueue *vq)
void virtio_gpu_cursor_ack(struct virtqueue *vq)
{
struct drm_device *dev = vq->vdev->priv;
- struct virtio_gpu_device *vgdev = dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
schedule_work(&vgdev->cursorq.dequeue_work);
}
diff --git a/drivers/gpu/drm/virtio/virtgpu_vram.c b/drivers/gpu/drm/virtio/virtgpu_vram.c
index 25df81c027837..c4a82f4da5a48 100644
--- a/drivers/gpu/drm/virtio/virtgpu_vram.c
+++ b/drivers/gpu/drm/virtio/virtgpu_vram.c
@@ -6,7 +6,7 @@
static void virtio_gpu_vram_free(struct drm_gem_object *obj)
{
struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
- struct virtio_gpu_device *vgdev = obj->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
bool unmap;
@@ -33,7 +33,7 @@ static int virtio_gpu_vram_mmap(struct drm_gem_object *obj,
struct vm_area_struct *vma)
{
int ret;
- struct virtio_gpu_device *vgdev = obj->dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
unsigned long vm_size = vma->vm_end - vma->vm_start;
@@ -70,7 +70,7 @@ struct sg_table *virtio_gpu_vram_map_dma_buf(struct virtio_gpu_object *bo,
struct device *dev,
enum dma_data_direction dir)
{
- struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
struct sg_table *sgt;
dma_addr_t addr;
@@ -143,7 +143,7 @@ static int virtio_gpu_vram_map(struct virtio_gpu_object *bo)
int ret;
uint64_t offset;
struct virtio_gpu_object_array *objs;
- struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
+ struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
if (!vgdev->has_host_visible)
--
2.41.0
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/virtgpu: Replace dev_private by helper function
2023-06-20 10:33 [PATCH] drm/virtgpu: Replace dev_private by helper function Thomas Zimmermann
@ 2023-06-21 7:57 ` Gerd Hoffmann
2023-06-21 8:03 ` Thomas Zimmermann
[not found] ` <50e1a288-4560-c7bd-27a8-30f93d81b3d1@loongson.cn>
2 siblings, 0 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2023-06-21 7:57 UTC (permalink / raw)
To: Thomas Zimmermann
Cc: dri-devel, virtualization, daniel, airlied, gurchetansingh,
olvaffe
On Tue, Jun 20, 2023 at 12:33:28PM +0200, Thomas Zimmermann wrote:
> Dereference struct drm_device.dev_private in the helper function
> do_virtio_gpu_device(). The dev_private field is deprecated and
> drivers are advised not ot use it. Encapsulating it in a helper
> function will help with a later removal. No functional changes.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/virtgpu: Replace dev_private by helper function
2023-06-20 10:33 [PATCH] drm/virtgpu: Replace dev_private by helper function Thomas Zimmermann
2023-06-21 7:57 ` Gerd Hoffmann
@ 2023-06-21 8:03 ` Thomas Zimmermann
[not found] ` <50e1a288-4560-c7bd-27a8-30f93d81b3d1@loongson.cn>
2 siblings, 0 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2023-06-21 8:03 UTC (permalink / raw)
To: airlied, kraxel, gurchetansingh, olvaffe, daniel
Cc: dri-devel, virtualization
[-- Attachment #1.1.1: Type: text/plain, Size: 21833 bytes --]
Am 20.06.23 um 12:33 schrieb Thomas Zimmermann:
> Dereference struct drm_device.dev_private in the helper function
> do_virtio_gpu_device(). The dev_private field is deprecated and
> drivers are advised not ot use it. Encapsulating it in a helper
> function will help with a later removal. No functional changes.
This paragraph needs some spell checking before it lands. :)
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/gpu/drm/virtio/virtgpu_debugfs.c | 6 +++---
> drivers/gpu/drm/virtio/virtgpu_display.c | 4 ++--
> drivers/gpu/drm/virtio/virtgpu_drv.c | 2 +-
> drivers/gpu/drm/virtio/virtgpu_drv.h | 12 ++++++++++++
> drivers/gpu/drm/virtio/virtgpu_gem.c | 8 ++++----
> drivers/gpu/drm/virtio/virtgpu_ioctl.c | 18 +++++++++---------
> drivers/gpu/drm/virtio/virtgpu_kms.c | 8 ++++----
> drivers/gpu/drm/virtio/virtgpu_object.c | 4 ++--
> drivers/gpu/drm/virtio/virtgpu_plane.c | 8 ++++----
> drivers/gpu/drm/virtio/virtgpu_prime.c | 4 ++--
> drivers/gpu/drm/virtio/virtgpu_submit.c | 4 ++--
> drivers/gpu/drm/virtio/virtgpu_vq.c | 4 ++--
> drivers/gpu/drm/virtio/virtgpu_vram.c | 8 ++++----
> 13 files changed, 51 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_debugfs.c b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
> index 853dd9aa397eb..e768c6253db33 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_debugfs.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
> @@ -44,7 +44,7 @@ static void virtio_gpu_add_int(struct seq_file *m, const char *name, int value)
> static int virtio_gpu_features(struct seq_file *m, void *data)
> {
> struct drm_info_node *node = (struct drm_info_node *)m->private;
> - struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(node->minor->dev);
>
> virtio_gpu_add_bool(m, "virgl", vgdev->has_virgl_3d);
> virtio_gpu_add_bool(m, "edid", vgdev->has_edid);
> @@ -69,7 +69,7 @@ static int
> virtio_gpu_debugfs_irq_info(struct seq_file *m, void *data)
> {
> struct drm_info_node *node = (struct drm_info_node *) m->private;
> - struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(node->minor->dev);
>
> seq_printf(m, "fence %llu %lld\n",
> (u64)atomic64_read(&vgdev->fence_drv.last_fence_id),
> @@ -81,7 +81,7 @@ static int
> virtio_gpu_debugfs_host_visible_mm(struct seq_file *m, void *data)
> {
> struct drm_info_node *node = (struct drm_info_node *)m->private;
> - struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(node->minor->dev);
> struct drm_printer p;
>
> if (!vgdev->has_host_visible) {
> diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
> index ad924a8502e90..6cf143e06b003 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_display.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_display.c
> @@ -86,7 +86,7 @@ virtio_gpu_framebuffer_init(struct drm_device *dev,
> static void virtio_gpu_crtc_mode_set_nofb(struct drm_crtc *crtc)
> {
> struct drm_device *dev = crtc->dev;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
>
> virtio_gpu_cmd_set_scanout(vgdev, output->index, 0,
> @@ -104,7 +104,7 @@ static void virtio_gpu_crtc_atomic_disable(struct drm_crtc *crtc,
> struct drm_atomic_state *state)
> {
> struct drm_device *dev = crtc->dev;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
>
> virtio_gpu_cmd_set_scanout(vgdev, output->index, 0, 0, 0, 0, 0);
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
> index 91ace7a44f2a6..0e251c604049e 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -125,7 +125,7 @@ static void virtio_gpu_remove(struct virtio_device *vdev)
> static void virtio_gpu_config_changed(struct virtio_device *vdev)
> {
> struct drm_device *dev = vdev->priv;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>
> schedule_work(&vgdev->config_changed_work);
> }
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
> index 4126c384286bf..d2f9a5862d6b7 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
> @@ -40,6 +40,7 @@
> #include <drm/drm_gem.h>
> #include <drm/drm_gem_shmem_helper.h>
> #include <drm/drm_ioctl.h>
> +#include <drm/drm_print.h>
> #include <drm/drm_probe_helper.h>
> #include <drm/virtgpu_drm.h>
>
> @@ -266,6 +267,17 @@ struct virtio_gpu_device {
> spinlock_t host_visible_lock;
> };
>
> +static inline struct virtio_gpu_device *to_virtio_gpu_device(struct drm_device *dev)
> +{
> + drm_WARN_ON_ONCE(dev, !dev->dev_private);
> +
> + /*
> + * TODO: Embed struct drm_device in struct virtio_gpu_device and
> + * upcast with container_of().
> + */
> + return dev->dev_private;
> +}
> +
> struct virtio_gpu_fpriv {
> uint32_t ctx_id;
> uint32_t context_init;
> diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/virtgpu_gem.c
> index 7db48d17ee3a8..6b1663a2c31eb 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_gem.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_gem.c
> @@ -34,7 +34,7 @@ static int virtio_gpu_gem_create(struct drm_file *file,
> struct drm_gem_object **obj_p,
> uint32_t *handle_p)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_object *obj;
> int ret;
> u32 handle;
> @@ -64,7 +64,7 @@ int virtio_gpu_mode_dumb_create(struct drm_file *file_priv,
> {
> struct drm_gem_object *gobj;
> struct virtio_gpu_object_params params = { 0 };
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> int ret;
> uint32_t pitch;
>
> @@ -117,7 +117,7 @@ int virtio_gpu_mode_dumb_mmap(struct drm_file *file_priv,
> int virtio_gpu_gem_object_open(struct drm_gem_object *obj,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> struct virtio_gpu_object_array *objs;
>
> @@ -144,7 +144,7 @@ int virtio_gpu_gem_object_open(struct drm_gem_object *obj,
> void virtio_gpu_gem_object_close(struct drm_gem_object *obj,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> struct virtio_gpu_object_array *objs;
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c b/drivers/gpu/drm/virtio/virtgpu_ioctl.c
> index b24b11f25197d..aefcc7fb2e3e7 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c
> @@ -54,7 +54,7 @@ static void virtio_gpu_create_context_locked(struct virtio_gpu_device *vgdev,
>
> void virtio_gpu_create_context(struct drm_device *dev, struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>
> mutex_lock(&vfpriv->context_lock);
> @@ -70,7 +70,7 @@ void virtio_gpu_create_context(struct drm_device *dev, struct drm_file *file)
> static int virtio_gpu_map_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct drm_virtgpu_map *virtio_gpu_map = data;
>
> return virtio_gpu_mode_dumb_mmap(file, vgdev->ddev,
> @@ -81,7 +81,7 @@ static int virtio_gpu_map_ioctl(struct drm_device *dev, void *data,
> static int virtio_gpu_getparam_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct drm_virtgpu_getparam *param = data;
> int value;
>
> @@ -119,7 +119,7 @@ static int virtio_gpu_getparam_ioctl(struct drm_device *dev, void *data,
> static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct drm_virtgpu_resource_create *rc = data;
> struct virtio_gpu_fence *fence;
> int ret;
> @@ -214,7 +214,7 @@ static int virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
> void *data,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> struct drm_virtgpu_3d_transfer_from_host *args = data;
> struct virtio_gpu_object *bo;
> @@ -269,7 +269,7 @@ static int virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
> static int virtio_gpu_transfer_to_host_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> struct drm_virtgpu_3d_transfer_to_host *args = data;
> struct virtio_gpu_object *bo;
> @@ -358,7 +358,7 @@ static int virtio_gpu_wait_ioctl(struct drm_device *dev, void *data,
> static int virtio_gpu_get_caps_ioctl(struct drm_device *dev,
> void *data, struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct drm_virtgpu_get_caps *args = data;
> unsigned size, host_caps_size;
> int i;
> @@ -493,7 +493,7 @@ static int virtio_gpu_resource_create_blob_ioctl(struct drm_device *dev,
> struct drm_gem_object *obj;
> struct virtio_gpu_object *bo;
> struct virtio_gpu_object_params params = { 0 };
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> struct drm_virtgpu_resource_create_blob *rc_blob = data;
>
> @@ -569,7 +569,7 @@ static int virtio_gpu_context_init_ioctl(struct drm_device *dev,
> uint64_t valid_ring_mask;
> size_t len;
> struct drm_virtgpu_context_set_param *ctx_set_params = NULL;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> struct drm_virtgpu_context_init *args = data;
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
> index 5a3b5aaed1f36..ab8c0a6719ac7 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_kms.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
> @@ -280,7 +280,7 @@ static void virtio_gpu_cleanup_cap_cache(struct virtio_gpu_device *vgdev)
>
> void virtio_gpu_deinit(struct drm_device *dev)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>
> flush_work(&vgdev->obj_free_work);
> flush_work(&vgdev->ctrlq.dequeue_work);
> @@ -292,7 +292,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
>
> void virtio_gpu_release(struct drm_device *dev)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>
> if (!vgdev)
> return;
> @@ -307,7 +307,7 @@ void virtio_gpu_release(struct drm_device *dev)
>
> int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv;
> int handle;
>
> @@ -335,7 +335,7 @@ int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file)
>
> void virtio_gpu_driver_postclose(struct drm_device *dev, struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>
> if (!vgdev->has_virgl_3d)
> diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virtio/virtgpu_object.c
> index c7e74cf130221..d5613b74b0456 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_object.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_object.c
> @@ -63,7 +63,7 @@ static void virtio_gpu_resource_id_put(struct virtio_gpu_device *vgdev, uint32_t
>
> void virtio_gpu_cleanup_object(struct virtio_gpu_object *bo)
> {
> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
>
> virtio_gpu_resource_id_put(vgdev, bo->hw_res_handle);
> if (virtio_gpu_is_shmem(bo)) {
> @@ -86,7 +86,7 @@ void virtio_gpu_cleanup_object(struct virtio_gpu_object *bo)
> static void virtio_gpu_free_object(struct drm_gem_object *obj)
> {
> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
>
> if (bo->created) {
> virtio_gpu_cmd_unref_resource(vgdev, bo);
> diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
> index a2e045f3a0004..1f867af2555b1 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_plane.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
> @@ -126,7 +126,7 @@ static void virtio_gpu_resource_flush(struct drm_plane *plane,
> uint32_t width, uint32_t height)
> {
> struct drm_device *dev = plane->dev;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_framebuffer *vgfb;
> struct virtio_gpu_object *bo;
>
> @@ -161,7 +161,7 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
> struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state,
> plane);
> struct drm_device *dev = plane->dev;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_output *output = NULL;
> struct virtio_gpu_object *bo;
> struct drm_rect rect;
> @@ -235,7 +235,7 @@ static int virtio_gpu_plane_prepare_fb(struct drm_plane *plane,
> struct drm_plane_state *new_state)
> {
> struct drm_device *dev = plane->dev;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_framebuffer *vgfb;
> struct virtio_gpu_object *bo;
>
> @@ -278,7 +278,7 @@ static void virtio_gpu_cursor_plane_update(struct drm_plane *plane,
> struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state,
> plane);
> struct drm_device *dev = plane->dev;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_output *output = NULL;
> struct virtio_gpu_framebuffer *vgfb;
> struct virtio_gpu_object *bo = NULL;
> diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
> index 44425f20d91aa..44e761dc4d79f 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_prime.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
> @@ -32,7 +32,7 @@ static int virtgpu_virtio_get_uuid(struct dma_buf *buf,
> {
> struct drm_gem_object *obj = buf->priv;
> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
>
> wait_event(vgdev->resp_wq, bo->uuid_state != STATE_INITIALIZING);
> if (bo->uuid_state != STATE_OK)
> @@ -106,7 +106,7 @@ struct dma_buf *virtgpu_gem_prime_export(struct drm_gem_object *obj,
> {
> struct dma_buf *buf;
> struct drm_device *dev = obj->dev;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
> int ret = 0;
> bool blob = bo->host3d_blob || bo->guest_blob;
> diff --git a/drivers/gpu/drm/virtio/virtgpu_submit.c b/drivers/gpu/drm/virtio/virtgpu_submit.c
> index cf3c04b16a7a8..5a599064aa265 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_submit.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_submit.c
> @@ -162,7 +162,7 @@ static int virtio_gpu_init_submit(struct virtio_gpu_submit *submit,
> u64 fence_ctx, u32 ring_idx)
> {
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fence *out_fence;
> int err;
>
> @@ -251,7 +251,7 @@ static int virtio_gpu_lock_buflist(struct virtio_gpu_submit *submit)
> int virtio_gpu_execbuffer_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file)
> {
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
> u64 fence_ctx = vgdev->fence_drv.context;
> struct drm_virtgpu_execbuffer *exbuf = data;
> diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c
> index b1a00c0c25a70..7faa7f1a84005 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_vq.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_vq.c
> @@ -56,7 +56,7 @@ static void convert_to_hw_box(struct virtio_gpu_box *dst,
> void virtio_gpu_ctrl_ack(struct virtqueue *vq)
> {
> struct drm_device *dev = vq->vdev->priv;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>
> schedule_work(&vgdev->ctrlq.dequeue_work);
> }
> @@ -64,7 +64,7 @@ void virtio_gpu_ctrl_ack(struct virtqueue *vq)
> void virtio_gpu_cursor_ack(struct virtqueue *vq)
> {
> struct drm_device *dev = vq->vdev->priv;
> - struct virtio_gpu_device *vgdev = dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>
> schedule_work(&vgdev->cursorq.dequeue_work);
> }
> diff --git a/drivers/gpu/drm/virtio/virtgpu_vram.c b/drivers/gpu/drm/virtio/virtgpu_vram.c
> index 25df81c027837..c4a82f4da5a48 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_vram.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_vram.c
> @@ -6,7 +6,7 @@
> static void virtio_gpu_vram_free(struct drm_gem_object *obj)
> {
> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
> bool unmap;
>
> @@ -33,7 +33,7 @@ static int virtio_gpu_vram_mmap(struct drm_gem_object *obj,
> struct vm_area_struct *vma)
> {
> int ret;
> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
> unsigned long vm_size = vma->vm_end - vma->vm_start;
> @@ -70,7 +70,7 @@ struct sg_table *virtio_gpu_vram_map_dma_buf(struct virtio_gpu_object *bo,
> struct device *dev,
> enum dma_data_direction dir)
> {
> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
> struct sg_table *sgt;
> dma_addr_t addr;
> @@ -143,7 +143,7 @@ static int virtio_gpu_vram_map(struct virtio_gpu_object *bo)
> int ret;
> uint64_t offset;
> struct virtio_gpu_object_array *objs;
> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(bo->base.base.dev);
> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
>
> if (!vgdev->has_host_visible)
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
[-- Attachment #2: Type: text/plain, Size: 183 bytes --]
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: drm/virtgpu: Replace dev_private by helper function
[not found] ` <50e1a288-4560-c7bd-27a8-30f93d81b3d1@loongson.cn>
@ 2023-06-21 10:36 ` Thomas Zimmermann
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2023-06-21 10:36 UTC (permalink / raw)
To: Sui Jingfeng, airlied, kraxel, gurchetansingh, olvaffe, daniel
Cc: dri-devel, virtualization
[-- Attachment #1.1.1: Type: text/plain, Size: 26944 bytes --]
Am 21.06.23 um 11:12 schrieb Sui Jingfeng:
> Hi,
>
> On 2023/6/20 18:33, Thomas Zimmermann wrote:
>> Dereference struct drm_device.dev_private in the helper function
>> do_virtio_gpu_device().
>
> Is the word "Dereference" accurate enough ?
It's not really the correct word, you're right. 'Access' or 'read' would
be a better term.
>
> I know what you means, I heard of de-reference a pointer frequently,
>
> It stand for fetch the value of a pointer, say "*p = val" or " val = *p".
>
>
> While here you are introducing a helper function to fetch the pointer to
> a driver specific device from the pointer to drm_device,
>
> this is actually doing the copy of a pointer.
>
>> The dev_private field is deprecated and
>> drivers are advised not ot use it.
>
> "ot" -> "to" ,
>
>
> Here, I have some understanding toward this.
>
>
> The drm_device is not a real device, it is a kind of software service.
>
> Because the struct drm_device don't contain a 'struct device' instance.
>
> While 'struct pci_dev' and 'struct platform_device' contain a 'struct
> device' instance,
>
> they are real device.
>
>
> Component based driver tend to bind the multiple miscellaneous
> sub-device to
>
> a virtual master. So these driver have multiple platform device
> instance or
>
> multiple xxx_device_private. Embed the 'struct drm_device' to any of
> those
>
> xxx_device_private would be not fair to others.
>
>
> A GPU can have multiple GPU core also.
>
> In those case, the instance of struct drm_device in intended to be
> shared by all GPU core.
>
> Or to be shared by a DC driver + GPU driver + External encoder drivers
> etc.
>
> So this depend on the device driver's implement and the hardware.
I get what you want to say, but it's rarely a problem in practice. Most
of the hardware has a single DRM device. If a hardware device has
entirely distict components, it's like two separate graphics chips: we
can create two instances of struct drm_device, each embedded in its own
private structure. And if there's really a case where sub-devices
require shared state, drivers can still implement this internally.
Best regards
Thomas
>
>
>> Encapsulating it in a helper
>> function will help with a later removal. No functional changes.
>
> Indeed, the later removal only need to change the to_virtio_gpu_device()
> function itself
>
> as well as the drm device allocation.
>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
>> ---
>> drivers/gpu/drm/virtio/virtgpu_debugfs.c | 6 +++---
>> drivers/gpu/drm/virtio/virtgpu_display.c | 4 ++--
>> drivers/gpu/drm/virtio/virtgpu_drv.c | 2 +-
>> drivers/gpu/drm/virtio/virtgpu_drv.h | 12 ++++++++++++
>> drivers/gpu/drm/virtio/virtgpu_gem.c | 8 ++++----
>> drivers/gpu/drm/virtio/virtgpu_ioctl.c | 18 +++++++++---------
>> drivers/gpu/drm/virtio/virtgpu_kms.c | 8 ++++----
>> drivers/gpu/drm/virtio/virtgpu_object.c | 4 ++--
>> drivers/gpu/drm/virtio/virtgpu_plane.c | 8 ++++----
>> drivers/gpu/drm/virtio/virtgpu_prime.c | 4 ++--
>> drivers/gpu/drm/virtio/virtgpu_submit.c | 4 ++--
>> drivers/gpu/drm/virtio/virtgpu_vq.c | 4 ++--
>> drivers/gpu/drm/virtio/virtgpu_vram.c | 8 ++++----
>> 13 files changed, 51 insertions(+), 39 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_debugfs.c
>> b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
>> index 853dd9aa397eb..e768c6253db33 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_debugfs.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_debugfs.c
>> @@ -44,7 +44,7 @@ static void virtio_gpu_add_int(struct seq_file *m,
>> const char *name, int value)
>> static int virtio_gpu_features(struct seq_file *m, void *data)
>> {
>> struct drm_info_node *node = (struct drm_info_node *)m->private;
>> - struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
>> + struct virtio_gpu_device *vgdev =
>> to_virtio_gpu_device(node->minor->dev);
>> virtio_gpu_add_bool(m, "virgl", vgdev->has_virgl_3d);
>> virtio_gpu_add_bool(m, "edid", vgdev->has_edid);
>> @@ -69,7 +69,7 @@ static int
>> virtio_gpu_debugfs_irq_info(struct seq_file *m, void *data)
>> {
>> struct drm_info_node *node = (struct drm_info_node *) m->private;
>> - struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
>> + struct virtio_gpu_device *vgdev =
>> to_virtio_gpu_device(node->minor->dev);
>> seq_printf(m, "fence %llu %lld\n",
>> (u64)atomic64_read(&vgdev->fence_drv.last_fence_id),
>> @@ -81,7 +81,7 @@ static int
>> virtio_gpu_debugfs_host_visible_mm(struct seq_file *m, void *data)
>> {
>> struct drm_info_node *node = (struct drm_info_node *)m->private;
>> - struct virtio_gpu_device *vgdev = node->minor->dev->dev_private;
>> + struct virtio_gpu_device *vgdev =
>> to_virtio_gpu_device(node->minor->dev);
>> struct drm_printer p;
>> if (!vgdev->has_host_visible) {
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c
>> b/drivers/gpu/drm/virtio/virtgpu_display.c
>> index ad924a8502e90..6cf143e06b003 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_display.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_display.c
>> @@ -86,7 +86,7 @@ virtio_gpu_framebuffer_init(struct drm_device *dev,
>> static void virtio_gpu_crtc_mode_set_nofb(struct drm_crtc *crtc)
>> {
>> struct drm_device *dev = crtc->dev;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_output *output =
>> drm_crtc_to_virtio_gpu_output(crtc);
>> virtio_gpu_cmd_set_scanout(vgdev, output->index, 0,
>> @@ -104,7 +104,7 @@ static void virtio_gpu_crtc_atomic_disable(struct
>> drm_crtc *crtc,
>> struct drm_atomic_state *state)
>> {
>> struct drm_device *dev = crtc->dev;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_output *output =
>> drm_crtc_to_virtio_gpu_output(crtc);
>> virtio_gpu_cmd_set_scanout(vgdev, output->index, 0, 0, 0, 0, 0);
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c
>> b/drivers/gpu/drm/virtio/virtgpu_drv.c
>> index 91ace7a44f2a6..0e251c604049e 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
>> @@ -125,7 +125,7 @@ static void virtio_gpu_remove(struct virtio_device
>> *vdev)
>> static void virtio_gpu_config_changed(struct virtio_device *vdev)
>> {
>> struct drm_device *dev = vdev->priv;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> schedule_work(&vgdev->config_changed_work);
>> }
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h
>> b/drivers/gpu/drm/virtio/virtgpu_drv.h
>> index 4126c384286bf..d2f9a5862d6b7 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
>> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
>> @@ -40,6 +40,7 @@
>> #include <drm/drm_gem.h>
>> #include <drm/drm_gem_shmem_helper.h>
>> #include <drm/drm_ioctl.h>
>> +#include <drm/drm_print.h>
>> #include <drm/drm_probe_helper.h>
>> #include <drm/virtgpu_drm.h>
>> @@ -266,6 +267,17 @@ struct virtio_gpu_device {
>> spinlock_t host_visible_lock;
>> };
>> +static inline struct virtio_gpu_device *to_virtio_gpu_device(struct
>> drm_device *dev)
>> +{
>> + drm_WARN_ON_ONCE(dev, !dev->dev_private);
>> +
>> + /*
>> + * TODO: Embed struct drm_device in struct virtio_gpu_device and
>> + * upcast with container_of().
>> + */
>> + return dev->dev_private;
>> +}
>> +
>> struct virtio_gpu_fpriv {
>> uint32_t ctx_id;
>> uint32_t context_init;
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c
>> b/drivers/gpu/drm/virtio/virtgpu_gem.c
>> index 7db48d17ee3a8..6b1663a2c31eb 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_gem.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_gem.c
>> @@ -34,7 +34,7 @@ static int virtio_gpu_gem_create(struct drm_file *file,
>> struct drm_gem_object **obj_p,
>> uint32_t *handle_p)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_object *obj;
>> int ret;
>> u32 handle;
>> @@ -64,7 +64,7 @@ int virtio_gpu_mode_dumb_create(struct drm_file
>> *file_priv,
>> {
>> struct drm_gem_object *gobj;
>> struct virtio_gpu_object_params params = { 0 };
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> int ret;
>> uint32_t pitch;
>> @@ -117,7 +117,7 @@ int virtio_gpu_mode_dumb_mmap(struct drm_file
>> *file_priv,
>> int virtio_gpu_gem_object_open(struct drm_gem_object *obj,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> struct virtio_gpu_object_array *objs;
>> @@ -144,7 +144,7 @@ int virtio_gpu_gem_object_open(struct
>> drm_gem_object *obj,
>> void virtio_gpu_gem_object_close(struct drm_gem_object *obj,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> struct virtio_gpu_object_array *objs;
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c
>> b/drivers/gpu/drm/virtio/virtgpu_ioctl.c
>> index b24b11f25197d..aefcc7fb2e3e7 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c
>> @@ -54,7 +54,7 @@ static void virtio_gpu_create_context_locked(struct
>> virtio_gpu_device *vgdev,
>> void virtio_gpu_create_context(struct drm_device *dev, struct
>> drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> mutex_lock(&vfpriv->context_lock);
>> @@ -70,7 +70,7 @@ void virtio_gpu_create_context(struct drm_device
>> *dev, struct drm_file *file)
>> static int virtio_gpu_map_ioctl(struct drm_device *dev, void *data,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct drm_virtgpu_map *virtio_gpu_map = data;
>> return virtio_gpu_mode_dumb_mmap(file, vgdev->ddev,
>> @@ -81,7 +81,7 @@ static int virtio_gpu_map_ioctl(struct drm_device
>> *dev, void *data,
>> static int virtio_gpu_getparam_ioctl(struct drm_device *dev, void
>> *data,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct drm_virtgpu_getparam *param = data;
>> int value;
>> @@ -119,7 +119,7 @@ static int virtio_gpu_getparam_ioctl(struct
>> drm_device *dev, void *data,
>> static int virtio_gpu_resource_create_ioctl(struct drm_device *dev,
>> void *data,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct drm_virtgpu_resource_create *rc = data;
>> struct virtio_gpu_fence *fence;
>> int ret;
>> @@ -214,7 +214,7 @@ static int
>> virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
>> void *data,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> struct drm_virtgpu_3d_transfer_from_host *args = data;
>> struct virtio_gpu_object *bo;
>> @@ -269,7 +269,7 @@ static int
>> virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev,
>> static int virtio_gpu_transfer_to_host_ioctl(struct drm_device *dev,
>> void *data,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> struct drm_virtgpu_3d_transfer_to_host *args = data;
>> struct virtio_gpu_object *bo;
>> @@ -358,7 +358,7 @@ static int virtio_gpu_wait_ioctl(struct drm_device
>> *dev, void *data,
>> static int virtio_gpu_get_caps_ioctl(struct drm_device *dev,
>> void *data, struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct drm_virtgpu_get_caps *args = data;
>> unsigned size, host_caps_size;
>> int i;
>> @@ -493,7 +493,7 @@ static int
>> virtio_gpu_resource_create_blob_ioctl(struct drm_device *dev,
>> struct drm_gem_object *obj;
>> struct virtio_gpu_object *bo;
>> struct virtio_gpu_object_params params = { 0 };
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> struct drm_virtgpu_resource_create_blob *rc_blob = data;
>> @@ -569,7 +569,7 @@ static int virtio_gpu_context_init_ioctl(struct
>> drm_device *dev,
>> uint64_t valid_ring_mask;
>> size_t len;
>> struct drm_virtgpu_context_set_param *ctx_set_params = NULL;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> struct drm_virtgpu_context_init *args = data;
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c
>> b/drivers/gpu/drm/virtio/virtgpu_kms.c
>> index 5a3b5aaed1f36..ab8c0a6719ac7 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_kms.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
>> @@ -280,7 +280,7 @@ static void virtio_gpu_cleanup_cap_cache(struct
>> virtio_gpu_device *vgdev)
>> void virtio_gpu_deinit(struct drm_device *dev)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> flush_work(&vgdev->obj_free_work);
>> flush_work(&vgdev->ctrlq.dequeue_work);
>> @@ -292,7 +292,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
>> void virtio_gpu_release(struct drm_device *dev)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> if (!vgdev)
>> return;
>> @@ -307,7 +307,7 @@ void virtio_gpu_release(struct drm_device *dev)
>> int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file
>> *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv;
>> int handle;
>> @@ -335,7 +335,7 @@ int virtio_gpu_driver_open(struct drm_device *dev,
>> struct drm_file *file)
>> void virtio_gpu_driver_postclose(struct drm_device *dev, struct
>> drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> if (!vgdev->has_virgl_3d)
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c
>> b/drivers/gpu/drm/virtio/virtgpu_object.c
>> index c7e74cf130221..d5613b74b0456 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_object.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_object.c
>> @@ -63,7 +63,7 @@ static void virtio_gpu_resource_id_put(struct
>> virtio_gpu_device *vgdev, uint32_t
>> void virtio_gpu_cleanup_object(struct virtio_gpu_object *bo)
>> {
>> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
>> + struct virtio_gpu_device *vgdev =
>> to_virtio_gpu_device(bo->base.base.dev);
>> virtio_gpu_resource_id_put(vgdev, bo->hw_res_handle);
>> if (virtio_gpu_is_shmem(bo)) {
>> @@ -86,7 +86,7 @@ void virtio_gpu_cleanup_object(struct
>> virtio_gpu_object *bo)
>> static void virtio_gpu_free_object(struct drm_gem_object *obj)
>> {
>> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
>> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
>> + struct virtio_gpu_device *vgdev =
>> to_virtio_gpu_device(bo->base.base.dev);
>> if (bo->created) {
>> virtio_gpu_cmd_unref_resource(vgdev, bo);
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c
>> b/drivers/gpu/drm/virtio/virtgpu_plane.c
>> index a2e045f3a0004..1f867af2555b1 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_plane.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
>> @@ -126,7 +126,7 @@ static void virtio_gpu_resource_flush(struct
>> drm_plane *plane,
>> uint32_t width, uint32_t height)
>> {
>> struct drm_device *dev = plane->dev;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_framebuffer *vgfb;
>> struct virtio_gpu_object *bo;
>> @@ -161,7 +161,7 @@ static void virtio_gpu_primary_plane_update(struct
>> drm_plane *plane,
>> struct drm_plane_state *old_state =
>> drm_atomic_get_old_plane_state(state,
>> plane);
>> struct drm_device *dev = plane->dev;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_output *output = NULL;
>> struct virtio_gpu_object *bo;
>> struct drm_rect rect;
>> @@ -235,7 +235,7 @@ static int virtio_gpu_plane_prepare_fb(struct
>> drm_plane *plane,
>> struct drm_plane_state *new_state)
>> {
>> struct drm_device *dev = plane->dev;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_framebuffer *vgfb;
>> struct virtio_gpu_object *bo;
>> @@ -278,7 +278,7 @@ static void virtio_gpu_cursor_plane_update(struct
>> drm_plane *plane,
>> struct drm_plane_state *old_state =
>> drm_atomic_get_old_plane_state(state,
>> plane);
>> struct drm_device *dev = plane->dev;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_output *output = NULL;
>> struct virtio_gpu_framebuffer *vgfb;
>> struct virtio_gpu_object *bo = NULL;
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c
>> b/drivers/gpu/drm/virtio/virtgpu_prime.c
>> index 44425f20d91aa..44e761dc4d79f 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_prime.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
>> @@ -32,7 +32,7 @@ static int virtgpu_virtio_get_uuid(struct dma_buf *buf,
>> {
>> struct drm_gem_object *obj = buf->priv;
>> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
>> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
>> wait_event(vgdev->resp_wq, bo->uuid_state != STATE_INITIALIZING);
>> if (bo->uuid_state != STATE_OK)
>> @@ -106,7 +106,7 @@ struct dma_buf *virtgpu_gem_prime_export(struct
>> drm_gem_object *obj,
>> {
>> struct dma_buf *buf;
>> struct drm_device *dev = obj->dev;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
>> int ret = 0;
>> bool blob = bo->host3d_blob || bo->guest_blob;
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_submit.c
>> b/drivers/gpu/drm/virtio/virtgpu_submit.c
>> index cf3c04b16a7a8..5a599064aa265 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_submit.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_submit.c
>> @@ -162,7 +162,7 @@ static int virtio_gpu_init_submit(struct
>> virtio_gpu_submit *submit,
>> u64 fence_ctx, u32 ring_idx)
>> {
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fence *out_fence;
>> int err;
>> @@ -251,7 +251,7 @@ static int virtio_gpu_lock_buflist(struct
>> virtio_gpu_submit *submit)
>> int virtio_gpu_execbuffer_ioctl(struct drm_device *dev, void *data,
>> struct drm_file *file)
>> {
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> struct virtio_gpu_fpriv *vfpriv = file->driver_priv;
>> u64 fence_ctx = vgdev->fence_drv.context;
>> struct drm_virtgpu_execbuffer *exbuf = data;
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c
>> b/drivers/gpu/drm/virtio/virtgpu_vq.c
>> index b1a00c0c25a70..7faa7f1a84005 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_vq.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_vq.c
>> @@ -56,7 +56,7 @@ static void convert_to_hw_box(struct virtio_gpu_box
>> *dst,
>> void virtio_gpu_ctrl_ack(struct virtqueue *vq)
>> {
>> struct drm_device *dev = vq->vdev->priv;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> schedule_work(&vgdev->ctrlq.dequeue_work);
>> }
>> @@ -64,7 +64,7 @@ void virtio_gpu_ctrl_ack(struct virtqueue *vq)
>> void virtio_gpu_cursor_ack(struct virtqueue *vq)
>> {
>> struct drm_device *dev = vq->vdev->priv;
>> - struct virtio_gpu_device *vgdev = dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(dev);
>> schedule_work(&vgdev->cursorq.dequeue_work);
>> }
>> diff --git a/drivers/gpu/drm/virtio/virtgpu_vram.c
>> b/drivers/gpu/drm/virtio/virtgpu_vram.c
>> index 25df81c027837..c4a82f4da5a48 100644
>> --- a/drivers/gpu/drm/virtio/virtgpu_vram.c
>> +++ b/drivers/gpu/drm/virtio/virtgpu_vram.c
>> @@ -6,7 +6,7 @@
>> static void virtio_gpu_vram_free(struct drm_gem_object *obj)
>> {
>> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
>> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
>> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
>> bool unmap;
>> @@ -33,7 +33,7 @@ static int virtio_gpu_vram_mmap(struct
>> drm_gem_object *obj,
>> struct vm_area_struct *vma)
>> {
>> int ret;
>> - struct virtio_gpu_device *vgdev = obj->dev->dev_private;
>> + struct virtio_gpu_device *vgdev = to_virtio_gpu_device(obj->dev);
>> struct virtio_gpu_object *bo = gem_to_virtio_gpu_obj(obj);
>> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
>> unsigned long vm_size = vma->vm_end - vma->vm_start;
>> @@ -70,7 +70,7 @@ struct sg_table *virtio_gpu_vram_map_dma_buf(struct
>> virtio_gpu_object *bo,
>> struct device *dev,
>> enum dma_data_direction dir)
>> {
>> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
>> + struct virtio_gpu_device *vgdev =
>> to_virtio_gpu_device(bo->base.base.dev);
>> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
>> struct sg_table *sgt;
>> dma_addr_t addr;
>> @@ -143,7 +143,7 @@ static int virtio_gpu_vram_map(struct
>> virtio_gpu_object *bo)
>> int ret;
>> uint64_t offset;
>> struct virtio_gpu_object_array *objs;
>> - struct virtio_gpu_device *vgdev = bo->base.base.dev->dev_private;
>> + struct virtio_gpu_device *vgdev =
>> to_virtio_gpu_device(bo->base.base.dev);
>> struct virtio_gpu_object_vram *vram = to_virtio_gpu_vram(bo);
>> if (!vgdev->has_host_visible)
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
[-- Attachment #2: Type: text/plain, Size: 183 bytes --]
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-06-21 10:36 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-20 10:33 [PATCH] drm/virtgpu: Replace dev_private by helper function Thomas Zimmermann
2023-06-21 7:57 ` Gerd Hoffmann
2023-06-21 8:03 ` Thomas Zimmermann
[not found] ` <50e1a288-4560-c7bd-27a8-30f93d81b3d1@loongson.cn>
2023-06-21 10:36 ` Thomas Zimmermann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).