All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chanwoo Choi <cw00.choi@samsung.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org, myungjoo.ham@samsung.com,
	kyungmin.park@samsung.com, Graeme Gregory <gg@slimlogic.co.uk>,
	Kishon Vijay Abraham I <kishon@ti.com>,
	Charles Keepax <ckeepax@opensource.wolfsonmicro.com>,
	Mark Brown <broonie@kernel.org>
Subject: Re: [PATCH 3/3] extcon: Simplify extcon_dev_register() prototype by removing unnecessary parameter
Date: Wed, 04 Sep 2013 14:18:30 +0900	[thread overview]
Message-ID: <5226C2A6.9000805@samsung.com> (raw)
In-Reply-To: <20130904011640.GA24275@kroah.com>

On 09/04/2013 10:16 AM, Greg KH wrote:
> On Wed, Sep 04, 2013 at 09:17:02AM +0900, Chanwoo Choi wrote:
>> On 09/04/2013 12:57 AM, Greg KH wrote:
>>> On Mon, Sep 02, 2013 at 10:13:44AM +0900, Chanwoo Choi wrote:
>>>> Hi Greg,
>>>>
>>>> On 09/02/2013 09:40 AM, Greg KH wrote:
>>>>> On Mon, Sep 02, 2013 at 09:20:08AM +0900, Chanwoo Choi wrote:
>>>>>> This patch remove extcon_dev_register()'s second parameter which means
>>>>>> the pointer of parent device to simplify prototype of this function.
>>>>>
>>>>> No, please don't.  You want the parent to be passed in, as the core
>>>>> needs it when it is registered with the system, otherwise it will not
>>>>> show up in sysfs properly (i.e. you can't set it afterwards.)
>>>>
>>>> Currently, each extcon driver have allocated memory for extcon device
>>>> by using devm_kzalloc() in each extcon device driver.
>>>
>>> That seems backwards, the extcon core should be the one doing the
>>> allocation, and ownership of the device, like all other subsystem cores
>>> do.  That makes the driver logic much simpler, and the lifetime
>>> ownership correct (i.e. what happens when a device is unbound from a
>>> driver by userspace?  The driver can't control the device memory
>>> anymore...)
>>>
>>
>> OK,
>> The extcon core will control memory allocation instead of extcon device driver
>> as following.
>> - devm_extcon_allocate_device(struct device *dev)
> 
> Huh?  Why do you need a devm allocator?  This is a "real" child device,
> just create it with a "extcon_create_device()" or some such call, like
> all other busses do?

I refer Input/IIO subsystem to check the process of device registration.
Input subsystem has following functions for memory allocation of input device
and input device registration.

Input subsystem
- struct input_dev *devm_input_allocate_device(struct device *device)
- struct input_dev *input_allocate_device(void)
- int input_register_device(struct input_dev *dev)
drivers/input/input.c

devm_input_allocate_device()/input_allocate_device() can allocate
memory for input device in input core. And then created input device
pass input_register_device() as parameter.

So, input device driver haven't executed kmalloc() or devm_kmalloc()
to allocate memory of input device by using input_allocate_device()/
devm_input_allocate_device().


Also,IIO subsystem has separate iio_device_alloc() function
to allocate memory for iio device. But IIO subsystem hasn't
"devm_" allocator. So, If iio device driver fail initialization
in *_probe, should execute iio_device_free() to free allocated memory.

IIO Subsystem
- iio_device_alloc(int sizeof_priv)
- iio_device_register(struct iio_dev *indio_dev);
drivers/iio/industrialio-core.c


So, I think extcon subsystem need extcon_allocate_device()/devm_extcon_allocate_device()
to allocate for memory extcon device. To implement devm_extcon_allocate_device() function
, extcon subsystem need extcon_allocate_device() because devm_extcon_allocate_device()
must call extcon_allocate_device for memory allocation.

If extcon_allocate_device()/devm_extcon_allocate_device() is implemented to extcon core,
I think extcon core can control the memory operation of extcon device.

EXTCON Subsystem
- devm_extcon_allocate_device(struct device *dev)
- extcon_allocate_device(void)
- extcon_dev_register(struct extcon_dev *edev)

If I'm wrong, please correct me. Thanks.

Best Regards,
Chanwoo Choi









  reply	other threads:[~2013-09-04  5:18 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-02  0:20 [PATCH 0/3] extcon: Code clean to fix up coding style and remove Chanwoo Choi
2013-09-02  0:20 ` [PATCH 1/3] extcon: Fix indentation coding style to improve readability Chanwoo Choi
2013-09-02  0:20 ` [PATCH 2/3] extcon: Change field type of 'dev' in extcon_dev structure Chanwoo Choi
2013-09-02  0:38   ` Greg KH
2013-09-02  0:41     ` Chanwoo Choi
2013-09-02  0:20 ` [PATCH 3/3] extcon: Simplify extcon_dev_register() prototype by removing unnecessary parameter Chanwoo Choi
2013-09-02  0:40   ` Greg KH
2013-09-02  1:13     ` Chanwoo Choi
2013-09-03 15:57       ` Greg KH
2013-09-04  0:17         ` Chanwoo Choi
2013-09-04  1:16           ` Greg KH
2013-09-04  5:18             ` Chanwoo Choi [this message]
2013-09-08 21:51               ` Greg KH
2013-09-09  2:44                 ` Chanwoo Choi

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=5226C2A6.9000805@samsung.com \
    --to=cw00.choi@samsung.com \
    --cc=broonie@kernel.org \
    --cc=ckeepax@opensource.wolfsonmicro.com \
    --cc=gg@slimlogic.co.uk \
    --cc=gregkh@linuxfoundation.org \
    --cc=kishon@ti.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=myungjoo.ham@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.