From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Andrzej Hajda <a.hajda@samsung.com>
Cc: "moderated list:ARM/S5P EXYNOS AR..."
<linux-samsung-soc@vger.kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
open list <linux-kernel@vger.kernel.org>,
dri-devel@lists.freedesktop.org,
Kyungmin Park <kyungmin.park@samsung.com>,
"moderated list:ARM/S5P EXYNOS AR..."
<linux-arm-kernel@lists.infradead.org>,
Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [PATCH RFC 3/3] drm/exynos: use pending_components for components tracking
Date: Wed, 23 Apr 2014 17:43:28 +0100 [thread overview]
Message-ID: <20140423164328.GG24070@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <5357D68E.8060605@samsung.com>
On Wed, Apr 23, 2014 at 05:04:46PM +0200, Andrzej Hajda wrote:
> On 04/22/2014 01:51 PM, Russell King - ARM Linux wrote:
> > Yes, I know that you're desperate to play that down, but you can't get
>
> Not true. I only try to find the best solution and the approach with
> multiple re-probing just to avoid potential bugs in drivers does not
> look to me correct.
>
> > away from this fact: your approach _forces_ a split up of the
> > initialisation into dependent two stages and that fact _alone_ adds
> > additional complexity, and along with that additional complexity comes
> > more opportunity for bugs.
>
> This sound so funny, just look at componentize patches - every patch
> adds two stage initialization for every component and the master,
> with forced unwinding and two levels of devres management.
*Sigh*. Why am I bothering discussing this with you.
*NO* it does not, for the VERY SIMPLE reason that NOTHING is done before
the BIND. NO structures are allocated. NOTHING is setup. The *only*
thing that is done is the driver registers with the component helper.
That's not two stage initialisation. That's *single* stage.
> 'My approach' adds only one call to probe and one call to remove of
> components, and very simple and straightforward interface to the master.
You're talking utter garbage there.
> 'My approach' is very standard - during probe driver probes hardware,
> and registers interfaces which can be used by other drivers, for example
> by drm master. The only addition is reporting its readiness. Comparing to
> 'your approach' it is bloody simple.
More unbelievable crap.
> > Also with that additional complexity comes
> > the need to perform more tests to find those bugs, and given that most
> > people just say "okay, it boots and seems to work, that's good enough
> > for me" there is a high possibility that these kinds of bugs will take
> > a long time to find.
>
> Volume of changes for each component and drm device management
> dispersed on all components makes your argument very valid for
> component subsystem.
>
> Btw have you observed component framework when one of the components
> during bind returns -EPROBE_DEFER ? In my tests it resulted in
> deferred probing of master and unbind/bind of other components.
> So lets say you have N components and the last component will be deferred
> K times, it results in:
> - K times deferring of the last component and the master,
> - (N - 1) * K - unbinds and binds of other components.
True, and you can't get away from that with proper behaviour.
> >> As I wrote already, this framework was proposed for drivers which
> >> are tied together anyway, and this is case of many drivers, not
> >> only exynos.
> > Please name them.
You ignored this. Therefore, I assume that you *can't* name them because
there *aren't* any. I called your bluff, I win.
> > At the moment, I don't see a justification for your "simplified"
> > and restrictive solution, which if used will lock drivers into that
> > simplisitic method, and which can't ever be extended without lots of
> > ifdeffery to having other components (such as TDA998x) attached.
> >
> > My objections are entirely based on where imx-drm and armada DRM are
> > going, neither of which could ever use your implementation.
> >
> > Before you say that it isn't meant to deal with stuff like the TDA998x,
> > take a moment to think about this - the Dove video subsystem was
> > designed to support OLPC. It was primerly designed to drive a LCD
> > screen plus an on-board VGA DAC. Everything for that is on-SoC. With
> > that, the hardware is well known, and your solution could be used.
> >
> > However, then SolidRun came along and dropped a TDA998x on the LCD output
> > pins. Suddenly, things aren't that simple, and your solution falls
> > apart, because it can't cope with a generic component that has no knowledge
> > of the rest of its "master".
> >
> > This kind of scenario can happen /any/ time, and any time it does happen,
> > your simple solution falls apart.
>
> I think I have answered you two or three times that it is not a problem
> to remove
> 'glued drivers' restriction. I desperately try to avoid accusing you for
> 'desperately
> playing down' on this subject, so I will not comment this anymore.
Right, so what I draw from this is that *you* again refuse to answer this
point because despite your assertions that your solution can do it, you
have no clue as to *how* it can be done. I've looked at your solution
with respect to this, and I *can't* see how it can be done either. That's
why I've been asking *you* the question, so that *you* can provide some
technical input to it.
> On the other hand you have not answered quite important question - how
> do you plan to componentize drivers shared by different drms when
> one of drms is not componentized???
Read this, from a message I sent at the beginning of February:
| Here's my changes to the TDA998x driver to add support for the component
| helper. The TDA998x driver retains support for the old way so that
| drivers can be transitioned. For any one DRM "card" the transition to
| using the component layer must be all-in or all-out - partial transitions
| are not permitted with the simple locking implementation currently in
| the component helper due to the possibility of deadlock. (Master
| binds, holding the component lock, master declares i2c device, i2c
| device is bound to tda998x, which tries to register with the component
| layer, trying to take the held lock.)
|
| http://ftp.arm.linux.org.uk/cgit/linux-cubox.git/log/?h=unstable/tda998x-devel
It would appear that I've already converted a driver there into a
structure where it can exist as either a componentised device, _or_
it can exist as a DRM slave device.
Ergo, your claim that I haven't answered this question is... interesting
because I seem to have an implementation dated over two months ago.
So, maybe you would like to finally address *my* point about TDA998x
and your solution in a way that provides a satisfactory answer. *Show*
how it can be done, or *outline* how it can be done.
If you can't or won't do either of those, I shall continue to regard your
solution as highly sub-optimal and only suitable for exynos, and continue
to request that it should live in drivers/gpu/drm/exynos and not
drivers/base.
--
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.
WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC 3/3] drm/exynos: use pending_components for components tracking
Date: Wed, 23 Apr 2014 17:43:28 +0100 [thread overview]
Message-ID: <20140423164328.GG24070@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <5357D68E.8060605@samsung.com>
On Wed, Apr 23, 2014 at 05:04:46PM +0200, Andrzej Hajda wrote:
> On 04/22/2014 01:51 PM, Russell King - ARM Linux wrote:
> > Yes, I know that you're desperate to play that down, but you can't get
>
> Not true. I only try to find the best solution and the approach with
> multiple re-probing just to avoid potential bugs in drivers does not
> look to me correct.
>
> > away from this fact: your approach _forces_ a split up of the
> > initialisation into dependent two stages and that fact _alone_ adds
> > additional complexity, and along with that additional complexity comes
> > more opportunity for bugs.
>
> This sound so funny, just look at componentize patches - every patch
> adds two stage initialization for every component and the master,
> with forced unwinding and two levels of devres management.
*Sigh*. Why am I bothering discussing this with you.
*NO* it does not, for the VERY SIMPLE reason that NOTHING is done before
the BIND. NO structures are allocated. NOTHING is setup. The *only*
thing that is done is the driver registers with the component helper.
That's not two stage initialisation. That's *single* stage.
> 'My approach' adds only one call to probe and one call to remove of
> components, and very simple and straightforward interface to the master.
You're talking utter garbage there.
> 'My approach' is very standard - during probe driver probes hardware,
> and registers interfaces which can be used by other drivers, for example
> by drm master. The only addition is reporting its readiness. Comparing to
> 'your approach' it is bloody simple.
More unbelievable crap.
> > Also with that additional complexity comes
> > the need to perform more tests to find those bugs, and given that most
> > people just say "okay, it boots and seems to work, that's good enough
> > for me" there is a high possibility that these kinds of bugs will take
> > a long time to find.
>
> Volume of changes for each component and drm device management
> dispersed on all components makes your argument very valid for
> component subsystem.
>
> Btw have you observed component framework when one of the components
> during bind returns -EPROBE_DEFER ? In my tests it resulted in
> deferred probing of master and unbind/bind of other components.
> So lets say you have N components and the last component will be deferred
> K times, it results in:
> - K times deferring of the last component and the master,
> - (N - 1) * K - unbinds and binds of other components.
True, and you can't get away from that with proper behaviour.
> >> As I wrote already, this framework was proposed for drivers which
> >> are tied together anyway, and this is case of many drivers, not
> >> only exynos.
> > Please name them.
You ignored this. Therefore, I assume that you *can't* name them because
there *aren't* any. I called your bluff, I win.
> > At the moment, I don't see a justification for your "simplified"
> > and restrictive solution, which if used will lock drivers into that
> > simplisitic method, and which can't ever be extended without lots of
> > ifdeffery to having other components (such as TDA998x) attached.
> >
> > My objections are entirely based on where imx-drm and armada DRM are
> > going, neither of which could ever use your implementation.
> >
> > Before you say that it isn't meant to deal with stuff like the TDA998x,
> > take a moment to think about this - the Dove video subsystem was
> > designed to support OLPC. It was primerly designed to drive a LCD
> > screen plus an on-board VGA DAC. Everything for that is on-SoC. With
> > that, the hardware is well known, and your solution could be used.
> >
> > However, then SolidRun came along and dropped a TDA998x on the LCD output
> > pins. Suddenly, things aren't that simple, and your solution falls
> > apart, because it can't cope with a generic component that has no knowledge
> > of the rest of its "master".
> >
> > This kind of scenario can happen /any/ time, and any time it does happen,
> > your simple solution falls apart.
>
> I think I have answered you two or three times that it is not a problem
> to remove
> 'glued drivers' restriction. I desperately try to avoid accusing you for
> 'desperately
> playing down' on this subject, so I will not comment this anymore.
Right, so what I draw from this is that *you* again refuse to answer this
point because despite your assertions that your solution can do it, you
have no clue as to *how* it can be done. I've looked at your solution
with respect to this, and I *can't* see how it can be done either. That's
why I've been asking *you* the question, so that *you* can provide some
technical input to it.
> On the other hand you have not answered quite important question - how
> do you plan to componentize drivers shared by different drms when
> one of drms is not componentized???
Read this, from a message I sent at the beginning of February:
| Here's my changes to the TDA998x driver to add support for the component
| helper. The TDA998x driver retains support for the old way so that
| drivers can be transitioned. For any one DRM "card" the transition to
| using the component layer must be all-in or all-out - partial transitions
| are not permitted with the simple locking implementation currently in
| the component helper due to the possibility of deadlock. (Master
| binds, holding the component lock, master declares i2c device, i2c
| device is bound to tda998x, which tries to register with the component
| layer, trying to take the held lock.)
|
| http://ftp.arm.linux.org.uk/cgit/linux-cubox.git/log/?h=unstable/tda998x-devel
It would appear that I've already converted a driver there into a
structure where it can exist as either a componentised device, _or_
it can exist as a DRM slave device.
Ergo, your claim that I haven't answered this question is... interesting
because I seem to have an implementation dated over two months ago.
So, maybe you would like to finally address *my* point about TDA998x
and your solution in a way that provides a satisfactory answer. *Show*
how it can be done, or *outline* how it can be done.
If you can't or won't do either of those, I shall continue to regard your
solution as highly sub-optimal and only suitable for exynos, and continue
to request that it should live in drivers/gpu/drm/exynos and not
drivers/base.
--
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.
WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Andrzej Hajda <a.hajda@samsung.com>
Cc: dri-devel@lists.freedesktop.org,
Marek Szyprowski <m.szyprowski@samsung.com>,
Inki Dae <inki.dae@samsung.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
"moderated list:ARM/S5P EXYNOS AR..."
<linux-samsung-soc@vger.kernel.org>,
Tomasz Figa <t.figa@samsung.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
David Airlie <airlied@linux.ie>,
open list <linux-kernel@vger.kernel.org>,
"moderated list:ARM/S5P EXYNOS AR..."
<linux-arm-kernel@lists.infradead.org>,
Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH RFC 3/3] drm/exynos: use pending_components for components tracking
Date: Wed, 23 Apr 2014 17:43:28 +0100 [thread overview]
Message-ID: <20140423164328.GG24070@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <5357D68E.8060605@samsung.com>
On Wed, Apr 23, 2014 at 05:04:46PM +0200, Andrzej Hajda wrote:
> On 04/22/2014 01:51 PM, Russell King - ARM Linux wrote:
> > Yes, I know that you're desperate to play that down, but you can't get
>
> Not true. I only try to find the best solution and the approach with
> multiple re-probing just to avoid potential bugs in drivers does not
> look to me correct.
>
> > away from this fact: your approach _forces_ a split up of the
> > initialisation into dependent two stages and that fact _alone_ adds
> > additional complexity, and along with that additional complexity comes
> > more opportunity for bugs.
>
> This sound so funny, just look at componentize patches - every patch
> adds two stage initialization for every component and the master,
> with forced unwinding and two levels of devres management.
*Sigh*. Why am I bothering discussing this with you.
*NO* it does not, for the VERY SIMPLE reason that NOTHING is done before
the BIND. NO structures are allocated. NOTHING is setup. The *only*
thing that is done is the driver registers with the component helper.
That's not two stage initialisation. That's *single* stage.
> 'My approach' adds only one call to probe and one call to remove of
> components, and very simple and straightforward interface to the master.
You're talking utter garbage there.
> 'My approach' is very standard - during probe driver probes hardware,
> and registers interfaces which can be used by other drivers, for example
> by drm master. The only addition is reporting its readiness. Comparing to
> 'your approach' it is bloody simple.
More unbelievable crap.
> > Also with that additional complexity comes
> > the need to perform more tests to find those bugs, and given that most
> > people just say "okay, it boots and seems to work, that's good enough
> > for me" there is a high possibility that these kinds of bugs will take
> > a long time to find.
>
> Volume of changes for each component and drm device management
> dispersed on all components makes your argument very valid for
> component subsystem.
>
> Btw have you observed component framework when one of the components
> during bind returns -EPROBE_DEFER ? In my tests it resulted in
> deferred probing of master and unbind/bind of other components.
> So lets say you have N components and the last component will be deferred
> K times, it results in:
> - K times deferring of the last component and the master,
> - (N - 1) * K - unbinds and binds of other components.
True, and you can't get away from that with proper behaviour.
> >> As I wrote already, this framework was proposed for drivers which
> >> are tied together anyway, and this is case of many drivers, not
> >> only exynos.
> > Please name them.
You ignored this. Therefore, I assume that you *can't* name them because
there *aren't* any. I called your bluff, I win.
> > At the moment, I don't see a justification for your "simplified"
> > and restrictive solution, which if used will lock drivers into that
> > simplisitic method, and which can't ever be extended without lots of
> > ifdeffery to having other components (such as TDA998x) attached.
> >
> > My objections are entirely based on where imx-drm and armada DRM are
> > going, neither of which could ever use your implementation.
> >
> > Before you say that it isn't meant to deal with stuff like the TDA998x,
> > take a moment to think about this - the Dove video subsystem was
> > designed to support OLPC. It was primerly designed to drive a LCD
> > screen plus an on-board VGA DAC. Everything for that is on-SoC. With
> > that, the hardware is well known, and your solution could be used.
> >
> > However, then SolidRun came along and dropped a TDA998x on the LCD output
> > pins. Suddenly, things aren't that simple, and your solution falls
> > apart, because it can't cope with a generic component that has no knowledge
> > of the rest of its "master".
> >
> > This kind of scenario can happen /any/ time, and any time it does happen,
> > your simple solution falls apart.
>
> I think I have answered you two or three times that it is not a problem
> to remove
> 'glued drivers' restriction. I desperately try to avoid accusing you for
> 'desperately
> playing down' on this subject, so I will not comment this anymore.
Right, so what I draw from this is that *you* again refuse to answer this
point because despite your assertions that your solution can do it, you
have no clue as to *how* it can be done. I've looked at your solution
with respect to this, and I *can't* see how it can be done either. That's
why I've been asking *you* the question, so that *you* can provide some
technical input to it.
> On the other hand you have not answered quite important question - how
> do you plan to componentize drivers shared by different drms when
> one of drms is not componentized???
Read this, from a message I sent at the beginning of February:
| Here's my changes to the TDA998x driver to add support for the component
| helper. The TDA998x driver retains support for the old way so that
| drivers can be transitioned. For any one DRM "card" the transition to
| using the component layer must be all-in or all-out - partial transitions
| are not permitted with the simple locking implementation currently in
| the component helper due to the possibility of deadlock. (Master
| binds, holding the component lock, master declares i2c device, i2c
| device is bound to tda998x, which tries to register with the component
| layer, trying to take the held lock.)
|
| http://ftp.arm.linux.org.uk/cgit/linux-cubox.git/log/?h=unstable/tda998x-devel
It would appear that I've already converted a driver there into a
structure where it can exist as either a componentised device, _or_
it can exist as a DRM slave device.
Ergo, your claim that I haven't answered this question is... interesting
because I seem to have an implementation dated over two months ago.
So, maybe you would like to finally address *my* point about TDA998x
and your solution in a way that provides a satisfactory answer. *Show*
how it can be done, or *outline* how it can be done.
If you can't or won't do either of those, I shall continue to regard your
solution as highly sub-optimal and only suitable for exynos, and continue
to request that it should live in drivers/gpu/drm/exynos and not
drivers/base.
--
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.
next prev parent reply other threads:[~2014-04-23 16:43 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-17 11:28 [PATCH RFC 0/3] drm/exynos: refactoring drm initialization/cleanup code Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 11:28 ` [PATCH RFC 1/3] drm/exynos: refactor drm drivers registration code Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 11:28 ` [PATCH RFC 2/3] drivers/base: provide lightweight framework for componentized devices Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 11:28 ` [PATCH RFC 3/3] drm/exynos: use pending_components for components tracking Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 11:28 ` Andrzej Hajda
2014-04-17 21:47 ` Russell King - ARM Linux
2014-04-17 21:47 ` Russell King - ARM Linux
2014-04-17 21:47 ` Russell King - ARM Linux
2014-04-18 11:27 ` Andrzej Hajda
2014-04-18 11:27 ` Andrzej Hajda
2014-04-18 11:27 ` Andrzej Hajda
2014-04-18 12:42 ` Russell King - ARM Linux
2014-04-18 12:42 ` Russell King - ARM Linux
2014-04-18 12:42 ` Russell King - ARM Linux
2014-04-22 8:43 ` Andrzej Hajda
2014-04-22 8:43 ` Andrzej Hajda
2014-04-22 8:43 ` Andrzej Hajda
2014-04-17 22:04 ` Russell King - ARM Linux
2014-04-17 22:04 ` Russell King - ARM Linux
2014-04-17 22:04 ` Russell King - ARM Linux
2014-04-18 12:02 ` Andrzej Hajda
2014-04-18 12:02 ` Andrzej Hajda
2014-04-18 12:02 ` Andrzej Hajda
2014-04-18 12:46 ` Russell King - ARM Linux
2014-04-18 12:46 ` Russell King - ARM Linux
2014-04-18 12:46 ` Russell King - ARM Linux
2014-04-22 11:29 ` Andrzej Hajda
2014-04-22 11:29 ` Andrzej Hajda
2014-04-22 11:29 ` Andrzej Hajda
2014-04-22 11:51 ` Russell King - ARM Linux
2014-04-22 11:51 ` Russell King - ARM Linux
2014-04-22 11:51 ` Russell King - ARM Linux
2014-04-23 15:04 ` Andrzej Hajda
2014-04-23 15:04 ` Andrzej Hajda
2014-04-23 15:04 ` Andrzej Hajda
2014-04-23 16:43 ` Russell King - ARM Linux [this message]
2014-04-23 16:43 ` Russell King - ARM Linux
2014-04-23 16:43 ` Russell King - ARM Linux
2014-04-23 17:13 ` Russell King - ARM Linux
2014-04-23 17:13 ` Russell King - ARM Linux
2014-04-23 17:13 ` Russell King - ARM Linux
2014-04-25 14:36 ` Andrzej Hajda
2014-04-25 14:36 ` Andrzej Hajda
2014-04-26 15:30 ` Russell King - ARM Linux
2014-04-26 15:30 ` Russell King - ARM Linux
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=20140423164328.GG24070@n2100.arm.linux.org.uk \
--to=linux@arm.linux.org.uk \
--cc=a.hajda@samsung.com \
--cc=arnd@arndb.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=kyungmin.park@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=m.szyprowski@samsung.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.