All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philipp Zabel <p.zabel@pengutronix.de>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Andy Yan <andy.yan@rock-chips.com>,
	airlied@linux.ie, heiko@sntech.de, fabio.estevam@freescale.com,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Grant Likely <grant.likely@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Shawn Guo <shawn.guo@linaro.org>, Josh Boyer <jwboyer@redhat.com>,
	Sean Paul <seanpaul@chromium.org>,
	Inki Dae <inki.dae@samsung.com>, Dave Airlie <airlied@redhat.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Lucas Stach <l.stach@pengutronix.de>,
	Zubair.Kakakhel@imgtec.com, djkurtz@google.com,
	ykk@rock-chips.com, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, devel@driverdev.osuosl.org,
	devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org,
	jay.xu@rock-chips.com, Pawel Moll <pawel.moll@arm.com>,
	mark.yao@rock-chips.com, Mark Rutland <mark.rutland@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	vladimir_zapolskiy@mentor.com, Kumar Gala <galak@codeaurora.org>
Subject: Re: [PATCH v16 03/12] drm: imx: imx-hdmi: convert imx-hdmi to drm_bridge mode
Date: Thu, 04 Dec 2014 09:40:10 +0100	[thread overview]
Message-ID: <1417682410.3744.1.camel@pengutronix.de> (raw)
In-Reply-To: <20141203163009.GG11285@n2100.arm.linux.org.uk>

Hi Russell,

Am Mittwoch, den 03.12.2014, 16:30 +0000 schrieb Russell King - ARM
Linux:
> On Wed, Dec 03, 2014 at 05:20:15PM +0100, Philipp Zabel wrote:
> > Hi Andy,
> > 
> > It would be better if the bind function would not have to care about
> > platform resources, that should be handled in the probe function. I had
> > a patch to move them:
> > 
> > http://lists.freedesktop.org/archives/dri-devel/2014-May/059630.html
> > 
> > Maybe you could incorporate something like this?
> 
> Personally, I hate this idea.  Having a two-layered setup means that
> the when the bind() method is called, the state of struct imx_hdmi is
> indeterminant.
> 
> If it's called immediately from probe, most of the structure will be
> zeroed, and only those members initialised by the probe function will
> be set to non-zero values.
> 
> However, if the HDMI interface has been previously bound, and is
> subsequently re-bound, then the structure will most definitely no
> longer be in a known state on the second bind() call.
> 
> This is fragile.
> 
> Now, people have tried to tell me that this isn't fragile, but, I now
> have proof that it is as fragile as I fear.  The component helper
> doesn't yet have that many users, and already we have one user (okay,
> it's not part of the mainline kernel - it's etnaviv) which contained
> exactly this kind of bug: it expected its private structures to be
> zeroed on the bind() call.
>
> So, I /really/ hate this idea.  If you really want to do this, then
> please ensure that the bind() call explicitly zeros the bits of the
> struct which aren't initialised by the probe() call, so we know that
> the driver will always start off with a known initial state.

You are right, no I don't want this. When I initially wrote this patch I
was under the impression that the memory allocated by devm_kzalloc in
bind() wouldn't be freed on unbind(). I remember I stopped pursuing this
patch when I got aware of the devres_open/close/remove_group dance in
the component framework code, but somehow forgot to drop it altogether
locally.

regards
Philipp


WARNING: multiple messages have this Message-ID (diff)
From: Philipp Zabel <p.zabel@pengutronix.de>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Mark Rutland <mark.rutland@arm.com>,
	heiko@sntech.de, airlied@linux.ie,
	dri-devel@lists.freedesktop.org, ykk@rock-chips.com,
	devel@driverdev.osuosl.org, Pawel Moll <pawel.moll@arm.com>,
	linux-rockchip@lists.infradead.org,
	Grant Likely <grant.likely@linaro.org>,
	Dave Airlie <airlied@redhat.com>,
	jay.xu@rock-chips.com, devicetree@vger.kernel.org,
	Zubair.Kakakhel@imgtec.com, Arnd Bergmann <arnd@arndb.de>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Inki Dae <inki.dae@samsung.com>, Rob Herring <robh+dt@kernel.org>,
	Sean Paul <seanpaul@chromium.org>,
	mark.yao@rock-chips.com, fabio.estevam@freescale.com,
	Josh Boyer <jwboyer@redhat.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-kernel@vger.kernel.org, djkurtz@google.com,
	Kumar Gala <galak@codeaurora.org>,
	Andy Yan <andy.yan@rock-chips.com>,
	Shawn Guo <shawn.guo@linaro.org>,
	vladimir_zapolskiy@mentor.com, Lucas
Subject: Re: [PATCH v16 03/12] drm: imx: imx-hdmi: convert imx-hdmi to drm_bridge mode
Date: Thu, 04 Dec 2014 09:40:10 +0100	[thread overview]
Message-ID: <1417682410.3744.1.camel@pengutronix.de> (raw)
In-Reply-To: <20141203163009.GG11285@n2100.arm.linux.org.uk>

Hi Russell,

Am Mittwoch, den 03.12.2014, 16:30 +0000 schrieb Russell King - ARM
Linux:
> On Wed, Dec 03, 2014 at 05:20:15PM +0100, Philipp Zabel wrote:
> > Hi Andy,
> > 
> > It would be better if the bind function would not have to care about
> > platform resources, that should be handled in the probe function. I had
> > a patch to move them:
> > 
> > http://lists.freedesktop.org/archives/dri-devel/2014-May/059630.html
> > 
> > Maybe you could incorporate something like this?
> 
> Personally, I hate this idea.  Having a two-layered setup means that
> the when the bind() method is called, the state of struct imx_hdmi is
> indeterminant.
> 
> If it's called immediately from probe, most of the structure will be
> zeroed, and only those members initialised by the probe function will
> be set to non-zero values.
> 
> However, if the HDMI interface has been previously bound, and is
> subsequently re-bound, then the structure will most definitely no
> longer be in a known state on the second bind() call.
> 
> This is fragile.
> 
> Now, people have tried to tell me that this isn't fragile, but, I now
> have proof that it is as fragile as I fear.  The component helper
> doesn't yet have that many users, and already we have one user (okay,
> it's not part of the mainline kernel - it's etnaviv) which contained
> exactly this kind of bug: it expected its private structures to be
> zeroed on the bind() call.
>
> So, I /really/ hate this idea.  If you really want to do this, then
> please ensure that the bind() call explicitly zeros the bits of the
> struct which aren't initialised by the probe() call, so we know that
> the driver will always start off with a known initial state.

You are right, no I don't want this. When I initially wrote this patch I
was under the impression that the memory allocated by devm_kzalloc in
bind() wouldn't be freed on unbind(). I remember I stopped pursuing this
patch when I got aware of the devres_open/close/remove_group dance in
the component framework code, but somehow forgot to drop it altogether
locally.

regards
Philipp

  reply	other threads:[~2014-12-04  8:41 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-03 15:26 [PATCH v16 0/12] dw-hdmi: convert imx hdmi to bridge/dw_hdmi Andy Yan
2014-12-03 15:26 ` Andy Yan
2014-12-03 15:27 ` [PATCH v16 01/12] drm: imx: imx-hdmi: make checkpatch happy Andy Yan
2014-12-03 15:27   ` Andy Yan
2014-12-03 15:28 ` [PATCH v16 02/12] drm: imx: imx-hdmi: return defer if can't get ddc i2c adapter Andy Yan
2014-12-03 15:28   ` Andy Yan
2014-12-03 15:29 ` [PATCH v16 03/12] drm: imx: imx-hdmi: convert imx-hdmi to drm_bridge mode Andy Yan
2014-12-03 15:29   ` Andy Yan
2014-12-03 15:38   ` Russell King - ARM Linux
2014-12-03 15:38     ` Russell King - ARM Linux
2014-12-03 16:04     ` Andy Yan
2014-12-03 16:04       ` Andy Yan
2014-12-03 16:11       ` Russell King - ARM Linux
2014-12-03 16:11         ` Russell King - ARM Linux
2014-12-03 16:30         ` Andy Yan
2014-12-03 16:30           ` Andy Yan
2014-12-03 16:33           ` Russell King - ARM Linux
2014-12-03 16:33             ` Russell King - ARM Linux
2014-12-03 16:56             ` Andy Yan
2014-12-03 16:56               ` Andy Yan
2014-12-03 23:40               ` Russell King - ARM Linux
2014-12-03 23:40                 ` Russell King - ARM Linux
2014-12-04  0:51                 ` Andy Yan
2014-12-04  0:51                   ` Andy Yan
2014-12-03 16:20       ` Philipp Zabel
2014-12-03 16:20         ` Philipp Zabel
2014-12-03 16:30         ` Russell King - ARM Linux
2014-12-03 16:30           ` Russell King - ARM Linux
2014-12-04  8:40           ` Philipp Zabel [this message]
2014-12-04  8:40             ` Philipp Zabel
2014-12-04 10:09             ` Russell King - ARM Linux
2014-12-04 10:09               ` Russell King - ARM Linux
2014-12-03 15:30 ` [PATCH v16 04/12] drm: imx: imx-hdmi: split phy configuration to platform driver Andy Yan
2014-12-03 15:30   ` Andy Yan
2014-12-03 15:32 ` [PATCH v16 05/12] drm: imx: imx-hdmi: move imx-hdmi to bridge/dw_hdmi Andy Yan
2014-12-03 15:32   ` Andy Yan
2014-12-03 15:45   ` Russell King - ARM Linux
2014-12-03 15:45     ` Russell King - ARM Linux
2014-12-03 16:01     ` Andy Yan
2014-12-03 16:01       ` Andy Yan
2014-12-03 16:10       ` Russell King - ARM Linux
2014-12-03 16:10         ` Russell King - ARM Linux
2014-12-03 15:32 ` [PATCH v16 06/12] dt-bindings: add document for dw_hdmi Andy Yan
2014-12-03 15:32   ` Andy Yan
2014-12-03 15:33 ` [PATCH v16 07/12] drm: bridge/dw_hdmi: add support for multi-byte register width access Andy Yan
2014-12-03 15:33   ` Andy Yan
2014-12-03 15:34 ` [PATCH v16 08/12] drm: bridge/dw_hdmi: add mode_valid support Andy Yan
2014-12-03 15:34   ` Andy Yan
2014-12-03 15:34 ` [PATCH v16 09/12] drm: bridge/dw_hdmi: clear i2cmphy_stat0 reg in hdmi_phy_wait_i2c_done Andy Yan
2014-12-03 15:34   ` Andy Yan
2014-12-03 15:35 ` [PATCH v16 10/12] drm: bridge/dw_hdmi: add function dw_hdmi_phy_enable_spare Andy Yan
2014-12-03 15:35   ` Andy Yan
2014-12-03 15:36 ` [PATCH v16 11/12] dt-bindings: Add documentation for rockchip dw hdmi Andy Yan
2014-12-03 15:36   ` Andy Yan
2014-12-03 15:37 ` [PATCH v16 12/12] drm: bridge/dw_hdmi: add rockchip rk3288 support Andy Yan
2014-12-03 15:37   ` Andy Yan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1417682410.3744.1.camel@pengutronix.de \
    --to=p.zabel@pengutronix.de \
    --cc=Zubair.Kakakhel@imgtec.com \
    --cc=airlied@linux.ie \
    --cc=airlied@redhat.com \
    --cc=andy.yan@rock-chips.com \
    --cc=arnd@arndb.de \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree@vger.kernel.org \
    --cc=djkurtz@google.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=fabio.estevam@freescale.com \
    --cc=galak@codeaurora.org \
    --cc=grant.likely@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=heiko@sntech.de \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=inki.dae@samsung.com \
    --cc=jay.xu@rock-chips.com \
    --cc=jwboyer@redhat.com \
    --cc=l.stach@pengutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=mark.yao@rock-chips.com \
    --cc=pawel.moll@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=seanpaul@chromium.org \
    --cc=shawn.guo@linaro.org \
    --cc=vladimir_zapolskiy@mentor.com \
    --cc=ykk@rock-chips.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.