drm/virtgpu: Replace dev_private by helper function

Thomas Zimmermann tzimmermann at suse.de
Wed Jun 21 10:36:31 UTC 2023



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 at suse.de>
>> Acked-by: Gerd Hoffmann <kraxel at 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)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230621/de33f47e/attachment-0001.sig>


More information about the dri-devel mailing list