From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [RFC v2 4/5] drm/dsi: Add routine to unregister dsi device Date: Fri, 30 Oct 2015 15:21:52 +0100 Message-ID: <56337D00.9050906@samsung.com> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1444123482-25579-5-git-send-email-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Archit Taneja , dri-devel@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, treding@nvidia.com List-Id: linux-arm-msm@vger.kernel.org T24gMTAvMDYvMjAxNSAxMToyNCBBTSwgQXJjaGl0IFRhbmVqYSB3cm90ZToKPiBBIGRyaXZlciBj YWxsaW5nIG1pcGlfZHNpX2RldmljZV9uZXcgbWlnaHQgd2FudCB0byB1bnJlZ2lzdGVyIHRoZSBk ZXZpY2UKPiBvbmNlIGl0J3MgZG9uZS4gSXQgbWlnaHQgYWxzbyByZXF1aXJlIGl0IGluIGFuIGVy cm9yIGhhbmRsaW5nIHBhdGggaW4KPiBjYXNlIHNvbWV0aGluZyBkaWRuJ3QgZ28gcmlnaHQuCj4K PiBXaGVuIHRoZSBkc2kgaG9zdCBkcml2ZXIgY2FsbHMgbWlwaV9kc2lfaG9zdF91bnJlZ2lzdGVy LCB0aGUgZGV2aWNlcwo+IGNyZWF0ZWQgYnkgYm90aCBEVCBhbmQgYW5kIHdpdGhvdXQgRFQgd2ls bCBiZSByZW1vdmVkLiBUaGlzIGRvZXMgbGVhdmUKPiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlIGhv c3QgcmVtb3ZpbmcgdGhlIGRzaSBkZXZpY2Ugd2l0aG91dCB0aGUKPiBwZXJpcGhlcmFsIGRyaXZl ciBiZWluZyBhd2FyZSBvZiBpdC4gSSBkb24ndCBrbm93IGEgZ29vZCB3YXkgdG8gc29sdmUKPiB0 aGlzLiBTb21lIHN1Z2dlc3Rpb25zIGhlcmUgd291bGQgYmUgb2YgaGVscCB0b28uClRoZSAybmQg cGFyYWdyYXBoIGlzIG5vdCByZWxldmFudCBoZXJlLiBJdCBpcyBhbm90aGVyIGlzc3VlLiBTb21l IGNvbW1lbnRzCmFib3V0IGl0OgpJIGFtIG5vdCBzdXJlLCBidXQgSSBndWVzcyBkZXZpY2Ugc2hv dWxkIG5vdCBiZSByZW1vdmVkIGlmIGl0IGlzIHJlZmNvdW50ZWQKcHJvcGVybHksIGl0IHdpbGwg YmUganVzdCBkZXRhY2hlZCBmcm9tIHRoZSBkcml2ZXIsIGJ1cyBhbmQgc3lzdGVtICh3aGF0ZXZl ciBpdAptZWFuczopICkuCkl0IGRvZXMgbm90IG1lYW4gaXQgd2lsbCBiZSB1c2FibGUgYW5kIHBy b2JhYmx5IHNvbWUgcmFjZXMgY2FuIG9jY3VyIGFueXdheS4KSSBndWVzcyBpMmMgYW5kIG90aGVy IGJ1c2VzIGhhdmUgdGhlIHNhbWUgcHJvYmxlbSwgYW0gSSByaWdodD8KCj4KPiBTaWduZWQtb2Zm LWJ5OiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX21pcGlfZHNpLmMgfCA3ICsrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJt X21pcGlfZHNpLmggICAgIHwgMiArKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygr KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYwo+IGluZGV4IGRiNjEzMGEuLmNiYjczNzMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9taXBpX2RzaS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9taXBpX2RzaS5jCj4gQEAgLTE4Myw2ICsxODMsMTMgQEAgZXJyOgo+ICB9Cj4g IEVYUE9SVF9TWU1CT0wobWlwaV9kc2lfZGV2aWNlX25ldyk7Cj4gIAo+ICt2b2lkIG1pcGlfZHNp X2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPiArewo+ICsJ aWYgKGRzaSkKPiArCQlkZXZpY2VfdW5yZWdpc3RlcigmZHNpLT5kZXYpOwo+ICt9Cj4gK0VYUE9S VF9TWU1CT0wobWlwaV9kc2lfZGV2aWNlX3VucmVnaXN0ZXIpOwo+ICsKSSBndWVzcyBOVUxMIGNo ZWNrIGNhbiBiZSByZW1vdmVkIGFuZCB0aGUgd2hvbGUgZnVuY3Rpb24gY2FuIGJlIGlubGluZWQu CgpSZWdhcmRzCkFuZHJ6ZWoKPiAgc3RhdGljIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKgo+ICBv Zl9taXBpX2RzaV9kZXZpY2VfYWRkKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LCBzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5vZGUpCj4gIHsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX21p cGlfZHNpLmggYi9pbmNsdWRlL2RybS9kcm1fbWlwaV9kc2kuaAo+IGluZGV4IDkzZGVjN2IuLjY4 ZjQ5ZjQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21pcGlfZHNpLmgKPiArKysgYi9p bmNsdWRlL2RybS9kcm1fbWlwaV9kc2kuaAo+IEBAIC0xOTcsNiArMTk3LDggQEAgc3NpemVfdCBt aXBpX2RzaV9nZW5lcmljX3JlYWQoc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpLCBjb25zdCB2 b2lkICpwYXJhbXMsCj4gIAo+ICBzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICptaXBpX2RzaV9kZXZp Y2VfbmV3KHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+ICAJCQkJCSAgICBzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlX2luZm8gKmluZm8pOwo+ICt2b2lkIG1pcGlfZHNpX2RldmljZV91bnJlZ2lz dGVyKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSk7Cj4gKwo+ICAvKioKPiAgICogZW51bSBt aXBpX2RzaV9kY3NfdGVhcl9tb2RlIC0gVGVhcmluZyBFZmZlY3QgT3V0cHV0IExpbmUgbW9kZQo+ ICAgKiBATUlQSV9EU0lfRENTX1RFQVJfTU9ERV9WQkxBTks6IHRoZSBURSBvdXRwdXQgbGluZSBj b25zaXN0cyBvZiBWLUJsYW5raW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo= 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