Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp4667953ybv; Tue, 11 Feb 2020 00:57:29 -0800 (PST) X-Google-Smtp-Source: APXvYqw585TIBxzlrz4fgzXUkb8QeL4jdnOukIlMebkrjxt8Bhc2oFXLCJ0R/3Kt3h0bMsGdUNYg X-Received: by 2002:aca:44d7:: with SMTP id r206mr2223732oia.33.1581411449550; Tue, 11 Feb 2020 00:57:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581411449; cv=none; d=google.com; s=arc-20160816; b=hxSXPhWi4qI42ZB3H0oVH4SJMo7luJEEC3LAdcRKKJFtls1mNcnb0zU0tSxUccJt1L 2fsLf+ZFGazG0wqLtIQGDbnCY+i5RUxgnrgp0lKTz9wA9+Mm8vlqmpE+uPwIJivuUOC4 DnuIs5bOyzYYP7U24jSmZe3QiXJJXOZuJ1bSVLK48qQ36bR5ADogXHk89d+2V0BJT5/n egiaHPaXz81rnOb+Uwty2+zO50ubXG1Oy8x8FWzIyEixI0GY97Et+rYw/mgiYXLs3RcL PbfS7XKM580fnFGh0GFhCobK21WLmCkXuIqLVlgSAJLIHbljRS0xcga37G15mGjvsNsP cPSg== 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=12qw/RFELavELZKsOq1yzoNyYhq/Ux+p6kyJPJeCcqc=; b=dFdbPxSUZ8WEFp3W9AK//Xi0sWbm+rhgnOukyozxHd4otEDcNA3Wav5rUc5f7J5ha9 adXPnXF7RLv3qkt7eqjJa072K1UUwBTeQTKtLDxGOVonuN4ZkhMKZGj3nUqEZYsRozYP zJANWHF3Ojizw008QBpQOtOpFSxz8eHBafRmhV8DbrhppYp0zPi3Fm55W9UDzGRux8SE MF7yasWAE1sFz8oBS9gqRYsWosisGGbsFBmr1l6HnWJidKW/nPgypjBPaclnI21EAEeW sUrjfQb9dX9yi4dqP0BcQUobDdrbpQPy/WJ0k0E0SbBqEkOXLjfcTKVhb59j+uWIHmzl 9WYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=QI4VOXf3; 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 w202si1588577oif.121.2020.02.11.00.57.17; Tue, 11 Feb 2020 00:57:29 -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=QI4VOXf3; 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 S1727928AbgBKIeT (ORCPT + 99 others); Tue, 11 Feb 2020 03:34:19 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:54407 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727264AbgBKIeS (ORCPT ); Tue, 11 Feb 2020 03:34:18 -0500 Received: by mail-wm1-f68.google.com with SMTP id g1so2284876wmh.4 for ; Tue, 11 Feb 2020 00:34:17 -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=12qw/RFELavELZKsOq1yzoNyYhq/Ux+p6kyJPJeCcqc=; b=QI4VOXf3saIUDZus86WXKl/5G4HwG/Y1akgMO5N+Zghil5vjsjTK+Flc9x/BBjmGtf VbYX62Zkk1RcDpfJlb5YwCRepv0UavNrhSZsp7c+wuwoHBcbvfkUeRiuEGe6d2Hs2zx+ HAz7E7DC78LgnltTfwXg24XFBDY5JYWfGFWBM= 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=12qw/RFELavELZKsOq1yzoNyYhq/Ux+p6kyJPJeCcqc=; b=sybVdsYWFjbQJ7BV8wf5QHEahCe4bg0QX+iodwHdk1ubCGze+RaPdh2p+vs0vPuytE 0H/QxcBTsDwmENeR76gkOJalBAEGt08Vag15R8vFrOBEmI1570xQs1kJd6QPSiGQ0Hxg vICk6gMymLvhvv1OajCINYjsSQ2/3ZXiYTmPHrVUS0/zc0cFDZFPAkRWP22VlJ1e3Mzg 5HFRb6xqJmsfyQATLH+FKGe4S/SsXhdZiBthyJ9L/2WGmimZom8v7yDy0wjlMQpbJoI7 +ykjCDJq7G2FdEAuW71PzPs7FOJd3Esr3a99VpAv2nPdxkYLr5tqbMrFOeIarDnxLuTm GHUQ== X-Gm-Message-State: APjAAAVxzWbP5sxM54mNfCHP17ouCHfAzAw4RUIWMv1rmjstf7pivFvN hw8H4rL+1EG3OVsfoYFBpYaXMneX2PI= X-Received: by 2002:a7b:c4c3:: with SMTP id g3mr4157625wmk.131.1581410057135; Tue, 11 Feb 2020 00:34:17 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id t81sm2857643wmg.6.2020.02.11.00.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2020 00:34:16 -0800 (PST) Date: Tue, 11 Feb 2020 09:34:14 +0100 From: Daniel Vetter To: Gerd Hoffmann Cc: dri-devel@lists.freedesktop.org, Dave Airlie , David Airlie , Daniel Vetter , "open list:DRM DRIVER FOR QEMU'S CIRRUS DEVICE" , open list Subject: Re: [PATCH v2] drm/cirrus: add drm_driver.release callback. Message-ID: <20200211083414.GT43062@phenom.ffwll.local> Mail-Followup-To: Gerd Hoffmann , dri-devel@lists.freedesktop.org, Dave Airlie , David Airlie , "open list:DRM DRIVER FOR QEMU'S CIRRUS DEVICE" , open list References: <20200210095310.22082-1-kraxel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200210095310.22082-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 10:53:10AM +0100, Gerd Hoffmann wrote: > Move final cleanups from cirrus_pci_remove() to the new callback. > Add drm_atomic_helper_shutdown() call to cirrus_pci_remove(). > > Set pointers to NULL after iounmap() and check them before using > them to make sure we don't touch released hardware. > > Signed-off-by: Gerd Hoffmann > --- > drivers/gpu/drm/cirrus/cirrus.c | 23 +++++++++++++++++++++-- > 1 file changed, 21 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/cirrus/cirrus.c b/drivers/gpu/drm/cirrus/cirrus.c > index a91fb0d7282c..128db11ed4d3 100644 > --- a/drivers/gpu/drm/cirrus/cirrus.c > +++ b/drivers/gpu/drm/cirrus/cirrus.c > @@ -154,6 +154,9 @@ static void cirrus_set_start_address(struct cirrus_device *cirrus, u32 offset) > u32 addr; > u8 tmp; > > + if (!cirrus->mmio) > + return; Same as with the previous one, I think you're looking for drm_dev_enter/exit. And missing patch changelog. remove/release split looks good otherwise. -Daniel > + > addr = offset >> 2; > wreg_crt(cirrus, 0x0c, (u8)((addr >> 8) & 0xff)); > wreg_crt(cirrus, 0x0d, (u8)(addr & 0xff)); > @@ -179,6 +182,9 @@ static int cirrus_mode_set(struct cirrus_device *cirrus, > int tmp; > int sr07 = 0, hdr = 0; > > + if (!cirrus->mmio) > + return -1; > + > htotal = mode->htotal / 8; > hsyncend = mode->hsync_end / 8; > hsyncstart = mode->hsync_start / 8; > @@ -301,6 +307,9 @@ static int cirrus_fb_blit_rect(struct drm_framebuffer *fb, > struct cirrus_device *cirrus = fb->dev->dev_private; > void *vmap; > > + if (!cirrus->vram) > + return -ENODEV; > + > vmap = drm_gem_shmem_vmap(fb->obj[0]); > if (!vmap) > return -ENOMEM; > @@ -502,6 +511,14 @@ static void cirrus_mode_config_init(struct cirrus_device *cirrus) > > /* ------------------------------------------------------------------ */ > > +static void cirrus_release(struct drm_device *dev) > +{ > + struct cirrus_device *cirrus = dev->dev_private; > + > + drm_mode_config_cleanup(dev); > + kfree(cirrus); > +} > + > DEFINE_DRM_GEM_FOPS(cirrus_fops); > > static struct drm_driver cirrus_driver = { > @@ -515,6 +532,7 @@ static struct drm_driver cirrus_driver = { > > .fops = &cirrus_fops, > DRM_GEM_SHMEM_DRIVER_OPS, > + .release = cirrus_release, > }; > > static int cirrus_pci_probe(struct pci_dev *pdev, > @@ -599,11 +617,12 @@ static void cirrus_pci_remove(struct pci_dev *pdev) > struct cirrus_device *cirrus = dev->dev_private; > > drm_dev_unregister(dev); > - drm_mode_config_cleanup(dev); > + drm_atomic_helper_shutdown(dev); > iounmap(cirrus->mmio); > + cirrus->mmio = NULL; > iounmap(cirrus->vram); > + cirrus->vram = NULL; > drm_dev_put(dev); > - kfree(cirrus); > pci_release_regions(pdev); > } > > -- > 2.18.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch