Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp4672638ybv; Tue, 11 Feb 2020 01:02:51 -0800 (PST) X-Google-Smtp-Source: APXvYqzvyMF5CoRaH3Y5HrtTIsI9rrV5z7UaOu3BuFZxVIWpv217rmdVHu7WJCI1UUWboM5uBfdr X-Received: by 2002:a05:6830:22e2:: with SMTP id t2mr4522082otc.129.1581411771326; Tue, 11 Feb 2020 01:02:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581411771; cv=none; d=google.com; s=arc-20160816; b=Jmd5BeHOZ6bQ3/7jmeoxsyV8B9bYQieX6fSPpZ/SfLvM4CPkGiEuslsaz7EfozC+JP GRJuL43g36q6MjrDN2ZGT1Sg9yaf7EYapE1doGEiD19KyNJGl6jdYYO/sbrJCPXTSINV Yz3C9b08m33HgmrBhZ/3P9nB3JabPybsfNkcQa9Md0GudHXfad6i1e8pWPyHFL+dIW71 CtqMxxT9wAvZZZSj2v+X2aTrKdMSW35o9hmA7yzTzTKmOoCekzSmAPJW3rMzhQJr2Itn 0SSF1Q/V9Wn1tNJ9ahEfmkJr5W0k2w5oxEY60lC466svKhYs7WAoxLCD9pkjlfk99dt9 lzxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:mail-followup-to:message-id:subject:cc:to :from:date:dkim-signature; bh=Hsu+gXyOgop18isowZZKKs2ga2iqsZd2LEer6p5GpPQ=; b=u15FDkR9otM7kfobQr6tI/LDZFJC6TuY2H6X5hqiz/2M46e4SUTnMn5AyFYRz90/X3 CH+WkURaguYoQ6mtiw3HNkgeljFC66PkDSAo5IR2VrKMZX9K5LfYH1gD3viaQBm7YX06 F4hmchPBTUp0HbnUnadMh43NRyTGFtjQlAk72n6c18ok8Yg7KZEVy/jH95mK8yLcInQU E196ta1fqaRd5yPN8i2AwmuFGOGXdN2Y/Be5r5bCQwGIQgNS63pqEMWf12QB6psojMPA N4PmgGKbwfMyFM6eS5JgSrxHPK0lBgihJUuxlPIDNNlgkoX3hc0gRNjqB2p0HeVPfAXY Jykg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=IkJTmHnB; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l17si1698309otk.218.2020.02.11.01.02.38; Tue, 11 Feb 2020 01:02:51 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=IkJTmHnB; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727975AbgBKIf6 (ORCPT + 99 others); Tue, 11 Feb 2020 03:35:58 -0500 Received: from mail-wr1-f66.google.com ([209.85.221.66]:34646 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727121AbgBKIf6 (ORCPT ); Tue, 11 Feb 2020 03:35:58 -0500 Received: by mail-wr1-f66.google.com with SMTP id t2so11154789wrr.1 for ; Tue, 11 Feb 2020 00:35:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to; bh=Hsu+gXyOgop18isowZZKKs2ga2iqsZd2LEer6p5GpPQ=; b=IkJTmHnBqkSeqUtyUWgNsTGgarFx+e3w/pLKfpfvylxwfnqItWne0uhDNuJjsmEQPz eBoEqm24oNpn2kKUaXmY2H/1Y0dafzRIrS2z5zJBlBsOw7nR8uxS1iuitDxWII11t6qQ I+F4zEX6w7lXT5sYkbD6O7gN4/WdTkZ7s9Arw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to; bh=Hsu+gXyOgop18isowZZKKs2ga2iqsZd2LEer6p5GpPQ=; b=JbLVpk6CpzyCcpWPat1Tw8vvWyIw91/YnJglRf0sKvpWqRU8BlA7tL/D1YnFtQBI6k b8sLJSk5c9lblgnvBWwPv2W/OaeWUywgqI8FYzI+04EIp9irAt+RH+CGP/adx11ZaCLZ q/nb6c6xYUqApNt6YUnTC5oV17t136e1x4N1BlpR2Vl4kXTbeJRDm0s8pSYI1rYKjueK ktNn6cb6ytjYu6rdNqTG8EA+j5ScNIjzpE747crIEjdfhGMZP2frmVRDh8+EidKdBsYP xv1Zmdq0fF66cqB3hiMKKEHipiDCEek2Ci2Ddtp51Lx0Dxa4/9h+W4wgOMDQIvWsWeYB O1CQ== X-Gm-Message-State: APjAAAUEI5U8FUAC7mU5aNWgoqQ+u2/GgxqoJKCRBRI91tkhqsaanP7e gcUmyJ49RcP+ZP6MBqhx7SEJOQ== X-Received: by 2002:a5d:56ca:: with SMTP id m10mr7476980wrw.313.1581410155601; Tue, 11 Feb 2020 00:35:55 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id b17sm4407581wrp.49.2020.02.11.00.35.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2020 00:35:55 -0800 (PST) Date: Tue, 11 Feb 2020 09:35:53 +0100 From: Daniel Vetter To: Gerd Hoffmann Cc: dri-devel@lists.freedesktop.org, gurchetansingh@chromium.org, olvaffe@gmail.com, David Airlie , Daniel Vetter , "open list:VIRTIO GPU DRIVER" , open list Subject: Re: [PATCH v2] drm/virtio: add drm_driver.release callback. Message-ID: <20200211083553.GU43062@phenom.ffwll.local> Mail-Followup-To: Gerd Hoffmann , dri-devel@lists.freedesktop.org, gurchetansingh@chromium.org, olvaffe@gmail.com, David Airlie , "open list:VIRTIO GPU DRIVER" , open list References: <20200210100819.29761-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200210100819.29761-1-kraxel@redhat.com> X-Operating-System: Linux phenom 5.3.0-3-amd64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 10, 2020 at 11:08:19AM +0100, Gerd Hoffmann wrote: > Split virtio_gpu_deinit(), move the drm shutdown and release to > virtio_gpu_release(). Also free vbufs in case we can't queue them. > > Signed-off-by: Gerd Hoffmann > --- > drivers/gpu/drm/virtio/virtgpu_drv.h | 1 + > drivers/gpu/drm/virtio/virtgpu_display.c | 1 - > drivers/gpu/drm/virtio/virtgpu_drv.c | 4 ++++ > drivers/gpu/drm/virtio/virtgpu_kms.c | 5 +++++ > drivers/gpu/drm/virtio/virtgpu_vq.c | 9 ++++++++- > 5 files changed, 18 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h > index d278c8c50f39..09a485b001e7 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_drv.h > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h > @@ -217,6 +217,7 @@ extern struct drm_ioctl_desc virtio_gpu_ioctls[DRM_VIRTIO_NUM_IOCTLS]; > /* virtio_kms.c */ > int virtio_gpu_init(struct drm_device *dev); > void virtio_gpu_deinit(struct drm_device *dev); > +void virtio_gpu_release(struct drm_device *dev); > 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); > > diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c > index 7b0f0643bb2d..af953db4a0c9 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_display.c > +++ b/drivers/gpu/drm/virtio/virtgpu_display.c > @@ -368,6 +368,5 @@ void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev) > > for (i = 0 ; i < vgdev->num_scanouts; ++i) > kfree(vgdev->outputs[i].edid); > - drm_atomic_helper_shutdown(vgdev->ddev); > drm_mode_config_cleanup(vgdev->ddev); > } > diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c > index 8cf27af3ad53..664a741a3b0b 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_drv.c > +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c > @@ -31,6 +31,7 @@ > #include > > #include > +#include > #include > #include > > @@ -136,6 +137,7 @@ static void virtio_gpu_remove(struct virtio_device *vdev) > struct drm_device *dev = vdev->priv; > > drm_dev_unregister(dev); > + drm_atomic_helper_shutdown(dev); > virtio_gpu_deinit(dev); > drm_dev_put(dev); > } > @@ -214,4 +216,6 @@ static struct drm_driver driver = { > .major = DRIVER_MAJOR, > .minor = DRIVER_MINOR, > .patchlevel = DRIVER_PATCHLEVEL, > + > + .release = virtio_gpu_release, > }; > diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c > index c1086df49816..b45d12e3db2a 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_kms.c > +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c > @@ -240,6 +240,11 @@ void virtio_gpu_deinit(struct drm_device *dev) > flush_work(&vgdev->config_changed_work); > vgdev->vdev->config->reset(vgdev->vdev); > vgdev->vdev->config->del_vqs(vgdev->vdev); > +} > + > +void virtio_gpu_release(struct drm_device *dev) Split lgtm, but again I think you want drm_dev_enter/exit. And maybe a changelog. -Daniel > +{ > + struct virtio_gpu_device *vgdev = dev->dev_private; > > virtio_gpu_modeset_fini(vgdev); > virtio_gpu_free_vbufs(vgdev); > diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c > index cc02fc4bab2a..cc674b45f904 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_vq.c > +++ b/drivers/gpu/drm/virtio/virtgpu_vq.c > @@ -330,6 +330,11 @@ static void virtio_gpu_queue_ctrl_sgs(struct virtio_gpu_device *vgdev, > bool notify = false; > int ret; > > + if (!vgdev->vqs_ready) { > + free_vbuf(vgdev, vbuf); > + return; > + } > + > if (vgdev->has_indirect) > elemcnt = 1; > > @@ -462,8 +467,10 @@ static void virtio_gpu_queue_cursor(struct virtio_gpu_device *vgdev, > int ret; > int outcnt; > > - if (!vgdev->vqs_ready) > + if (!vgdev->vqs_ready) { > + free_vbuf(vgdev, vbuf); > return; > + } > > sg_init_one(&ccmd, vbuf->buf, vbuf->size); > sgs[0] = &ccmd; > -- > 2.18.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch