Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp629561ybv; Fri, 7 Feb 2020 05:45:30 -0800 (PST) X-Google-Smtp-Source: APXvYqzuDFXBkMQWmQ4tfeejxXJ4LLj7g8e0KebDlit919JHPRSSnzauHD7eEqfhS9SFMzlbnB2O X-Received: by 2002:aca:af50:: with SMTP id y77mr2167927oie.8.1581083130155; Fri, 07 Feb 2020 05:45:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581083130; cv=none; d=google.com; s=arc-20160816; b=Jbp4U+i/4sz31zJVjZp9427oX6zMYx3Q0d8LLO4m5T6n1RDmxgyYD6qDkKq2GLyKvR wgGZlqJRTqd7D04LqI1joPYz2B/Ckr6n0xKcx3slhhZW0HxCHKxPpfy5bX4if3aT9g++ ttIsI1UqUluzTLEljYaXngxIzuoJR5YEH+pDX41npCKYJKTppReKdBRbcqJ+cELckjcA RiWo7oyMoImh2jDnOEQ7/NqE/DY3EAeUZn1JpcG8Jkl1pjUU+pZu9w4cJFI5ArffZPgA rxNzH4YBw4bQ2t+qZOVbm4Fb/adjtVq4IJqiQ9OdoqgVsSCwVaEtXdFU9/p2gHYeHlN8 s1Pw== 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=m9Hn1RaUXFooKHwmRZTfAKZ274VjztClE8pDRYYGw2c=; b=Kabt0/c9kz+QSxLhAjeoExhbLqZa07F8mbT0pVaIGFbeNl3oG9NfDTUgpz7qXmsRVR zEBW7Fc/CeTmkwe3evdr1VSK+Zh4P1F8nSqgPjdpTVM1WMjJdIIzrPTtrJzMSGFIywpa W5AkMbi9n11PiEwkMB0YbG3HwFfDnsdVauy7VxdK41fqy4RrCyc8/p14xHdCd5KqBRr2 5yXAy+8tQkzdBMGG7dxftWeAD5fHp20laPmh7iY+FD3u/puy324cfqvQJZGJ98UDIvVa mZSQRfOx7Ca7SDnou140VxszPw/1cHvLV0OJd6Hp1DQXxyDtYYlwkCmM49UvM0nQ+zg8 YVMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=M0PjjdgY; 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 b6si3717651oie.181.2020.02.07.05.45.17; Fri, 07 Feb 2020 05:45:30 -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=M0PjjdgY; 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 S1726956AbgBGNoR (ORCPT + 99 others); Fri, 7 Feb 2020 08:44:17 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:43928 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726674AbgBGNoR (ORCPT ); Fri, 7 Feb 2020 08:44:17 -0500 Received: by mail-wr1-f65.google.com with SMTP id z9so2719894wrs.10 for ; Fri, 07 Feb 2020 05:44:14 -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=m9Hn1RaUXFooKHwmRZTfAKZ274VjztClE8pDRYYGw2c=; b=M0PjjdgYCPa6DgxGqO3xxPQ3OX262TSN0UqM6Kqiq8/lumJMhLG+2HPA3bnZvyhpwc CVSO/cXMEAMr+UUk3ef8vaeTxw3+qSrjyvfJWj/sLyvEzrHr1LqWAjHi8Ap3jRrWzagR fWYlOeYeXN31g0NzMnTA5QYYX6ZfrRyNtdkGc= 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=m9Hn1RaUXFooKHwmRZTfAKZ274VjztClE8pDRYYGw2c=; b=lHtpejGyJKk1YCdJJtCieink4f7B5Aqk3qr40j52a7oSjCwvp9VMNO1EFjI8/UXYAy XgfQ5wUqVlvLsqYDYMMZP1qGb9Qy9An8GOoRWnG9nutadjyk2QgB0XZfOTbsfyhHhxwt 3KjeewjRnEoRFqjTbiFszdb/IKITmwe6i1+o+DlsCjzxP+uqa9GZnG8Ywr0D+rodw9ex UU7ODPL5/KpVUZf7IoIGwpGhfUnXnjEJ3BUxiJoIoRgJvKD+GaU/SYRxsx07yqxVtC/Q l/dQYlzT1VvMsLayzM9BVDYM8a7DWIi0ZcLCesy/t7m1uq1t6E2+3Y6gZjhl04fqphPi M4tQ== X-Gm-Message-State: APjAAAXcsGzWowgvZsPvg1aklEf0Zj7vwXwWm4ZAnT1D/nXRDUw907/C QVs6GnpLhoAGQHT3Gpk1KnUqCCgwhKLqEQ== X-Received: by 2002:adf:d4ca:: with SMTP id w10mr5065348wrk.53.1581083054017; Fri, 07 Feb 2020 05:44:14 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id g25sm16762868wmh.3.2020.02.07.05.44.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Feb 2020 05:44:13 -0800 (PST) Date: Fri, 7 Feb 2020 14:44:11 +0100 From: Daniel Vetter To: Gerd Hoffmann Cc: dri-devel@lists.freedesktop.org, Dave Airlie , David Airlie , Daniel Vetter , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , open list Subject: Re: [PATCH] drm/qxl: add drm_driver.release callback. Message-ID: <20200207134411.GB43062@phenom.ffwll.local> Mail-Followup-To: Gerd Hoffmann , dri-devel@lists.freedesktop.org, Dave Airlie , David Airlie , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , open list References: <20200207121405.25895-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200207121405.25895-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 Fri, Feb 07, 2020 at 01:14:05PM +0100, Gerd Hoffmann wrote: > Move final cleanups to qxl_drm_release() callback. > Add drm_atomic_helper_shutdown() call to qxl_pci_remove(). > > Reorder calls in qxl_device_fini(). Cleaning up gem & ttm > might trigger qxl commands, so we should do that before > releaseing command rings. > > Signed-off-by: Gerd Hoffmann > --- > drivers/gpu/drm/qxl/qxl_drv.c | 21 ++++++++++++++------- > drivers/gpu/drm/qxl/qxl_kms.c | 8 ++++---- > 2 files changed, 18 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c > index 1d601f57a6ba..8044363ba0f2 100644 > --- a/drivers/gpu/drm/qxl/qxl_drv.c > +++ b/drivers/gpu/drm/qxl/qxl_drv.c > @@ -34,6 +34,7 @@ > #include > > #include > +#include > #include > #include > #include > @@ -132,21 +133,25 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > return ret; > } > > +static void qxl_drm_release(struct drm_device *dev) > +{ > + struct qxl_device *qdev = dev->dev_private; > + > + qxl_modeset_fini(qdev); > + qxl_device_fini(qdev); Same here, there's a few iounmap and io_mapping_free which I think should be in the pci_remove hook. -Daniel > + dev->dev_private = NULL; > + kfree(qdev); > +} > + > static void > qxl_pci_remove(struct pci_dev *pdev) > { > struct drm_device *dev = pci_get_drvdata(pdev); > - struct qxl_device *qdev = dev->dev_private; > > drm_dev_unregister(dev); > - > - qxl_modeset_fini(qdev); > - qxl_device_fini(qdev); > + drm_atomic_helper_shutdown(dev); > if (is_vga(pdev)) > vga_put(pdev, VGA_RSRC_LEGACY_IO); > - > - dev->dev_private = NULL; > - kfree(qdev); > drm_dev_put(dev); > } > > @@ -279,6 +284,8 @@ static struct drm_driver qxl_driver = { > .major = 0, > .minor = 1, > .patchlevel = 0, > + > + .release = qxl_drm_release, > }; > > static int __init qxl_init(void) > diff --git a/drivers/gpu/drm/qxl/qxl_kms.c b/drivers/gpu/drm/qxl/qxl_kms.c > index bfc1631093e9..70b20ee4741a 100644 > --- a/drivers/gpu/drm/qxl/qxl_kms.c > +++ b/drivers/gpu/drm/qxl/qxl_kms.c > @@ -299,12 +299,12 @@ void qxl_device_fini(struct qxl_device *qdev) > { > qxl_bo_unref(&qdev->current_release_bo[0]); > qxl_bo_unref(&qdev->current_release_bo[1]); > - flush_work(&qdev->gc_work); > - qxl_ring_free(qdev->command_ring); > - qxl_ring_free(qdev->cursor_ring); > - qxl_ring_free(qdev->release_ring); > qxl_gem_fini(qdev); > qxl_bo_fini(qdev); > + flush_work(&qdev->gc_work); > + qxl_ring_free(qdev->command_ring); > + qxl_ring_free(qdev->cursor_ring); > + qxl_ring_free(qdev->release_ring); > io_mapping_free(qdev->surface_mapping); > io_mapping_free(qdev->vram_mapping); > iounmap(qdev->ram_header); > -- > 2.18.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch