From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031641AbbJ3OWE (ORCPT ); Fri, 30 Oct 2015 10:22:04 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:17155 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031624AbbJ3OWA (ORCPT ); Fri, 30 Oct 2015 10:22:00 -0400 X-AuditID: cbfec7f4-f79c56d0000012ee-9c-56337d05204f Subject: Re: [RFC v2 4/5] drm/dsi: Add routine to unregister dsi device To: Archit Taneja , dri-devel@lists.freedesktop.org References: <1435641851-27295-1-git-send-email-architt@codeaurora.org> <1444123482-25579-1-git-send-email-architt@codeaurora.org> <1444123482-25579-5-git-send-email-architt@codeaurora.org> Cc: linux-kernel@vger.kernel.org, airlied@linux.ie, daniel@ffwll.ch, treding@nvidia.com, l.stach@pengutronix.de, robh@kernel.org, linux-arm-msm@vger.kernel.org, jani.nikula@linux.intel.com From: Andrzej Hajda Message-id: <56337D00.9050906@samsung.com> Date: Fri, 30 Oct 2015 15:21:52 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-version: 1.0 In-reply-to: <1444123482-25579-5-git-send-email-architt@codeaurora.org> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrDLMWRmVeSWpSXmKPExsVy+t/xK7qstcZhBrfuC1v0njvJZNHU8ZbV 4v+2icwWV76+Z7NYfnk9o8WDuTeZLCbuP8tucXnXHDaL/3t2sFvc/s3nwOVxua+XyWPvtwUs HptWdbJ5bP/2gNVj3slAj/vdx5k8epvfsXn0/zXw+LxJLoAzissmJTUnsyy1SN8ugStj561Z zAXrhCue79vF1sD4hb+LkZNDQsBE4t3rjSwQtpjEhXvr2boYuTiEBJYyShw7/p0dwnnOKLFi +Xw2kCphAXeJOScfMYHYIgLeEnNW9zFCFB1glJh25ikTiMMM4vRPX8UIUsUmoCnxd/NNsG5e AS2Jp337wGwWAVWJfwe2gNmiAhESEyc0sELUCEr8mHwP7CZOoG2nlt1g7mLkABqqJ3H/ohZI mFlAXmLzmrfMExgFZiHpmIVQNQtJ1QJG5lWMoqmlyQXFSem5hnrFibnFpXnpesn5uZsYIXHy ZQfj4mNWhxgFOBiVeHh/JBiFCbEmlhVX5h5ilOBgVhLhnZVnHCbEm5JYWZValB9fVJqTWnyI UZqDRUmcd+6u9yFCAumJJanZqakFqUUwWSYOTqkGRv8dHvytRc9CxLc7NEz6OLPybXoR0w09 xh9PCk7Zzft95EHdlbfa34zu9WyOt9KQPmTGtMfuc3zOZRHn+U575C9P4F3DXbOz/5wNq8ux /meHCiu+fKx983HVAu7G6YZyC79n1/advaHo9m/6rzkJ7wRF+aZNEPUOl7gg/G6XnYX374Ot pWF+6UosxRmJhlrMRcWJALhpSEyPAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/06/2015 11:24 AM, Archit Taneja wrote: > A driver calling mipi_dsi_device_new might want to unregister the device > once it's done. It might also require it in an error handling path in > case something didn't go right. > > When the dsi host driver calls mipi_dsi_host_unregister, the devices > created by both DT and and without DT will be removed. This does leave > the possibility of the host removing the dsi device without the > peripheral driver being aware of it. I don't know a good way to solve > this. Some suggestions here would be of help too. The 2nd paragraph is not relevant here. It is another issue. Some comments about it: I am not sure, but I guess device should not be removed if it is refcounted properly, it will be just detached from the driver, bus and system (whatever it means:) ). It does not mean it will be usable and probably some races can occur anyway. I guess i2c and other buses have the same problem, am I right? > > Signed-off-by: Archit Taneja > --- > drivers/gpu/drm/drm_mipi_dsi.c | 7 +++++++ > include/drm/drm_mipi_dsi.h | 2 ++ > 2 files changed, 9 insertions(+) > > diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c > index db6130a..cbb7373 100644 > --- a/drivers/gpu/drm/drm_mipi_dsi.c > +++ b/drivers/gpu/drm/drm_mipi_dsi.c > @@ -183,6 +183,13 @@ err: > } > EXPORT_SYMBOL(mipi_dsi_device_new); > > +void mipi_dsi_device_unregister(struct mipi_dsi_device *dsi) > +{ > + if (dsi) > + device_unregister(&dsi->dev); > +} > +EXPORT_SYMBOL(mipi_dsi_device_unregister); > + I guess NULL check can be removed and the whole function can be inlined. Regards Andrzej > static struct mipi_dsi_device * > of_mipi_dsi_device_add(struct mipi_dsi_host *host, struct device_node *node) > { > diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h > index 93dec7b..68f49f4 100644 > --- a/include/drm/drm_mipi_dsi.h > +++ b/include/drm/drm_mipi_dsi.h > @@ -197,6 +197,8 @@ ssize_t mipi_dsi_generic_read(struct mipi_dsi_device *dsi, const void *params, > > struct mipi_dsi_device *mipi_dsi_device_new(struct mipi_dsi_host *host, > struct mipi_dsi_device_info *info); > +void mipi_dsi_device_unregister(struct mipi_dsi_device *dsi); > + > /** > * enum mipi_dsi_dcs_tear_mode - Tearing Effect Output Line mode > * @MIPI_DSI_DCS_TEAR_MODE_VBLANK: the TE output line consists of V-Blanking