From: Lars-Peter Clausen <lars@metafoo.de>
To: "Ivan T. Ivanov" <iivanov@mm-sol.com>
Cc: Jonathan Cameron <jic23@kernel.org>,
Hartmut Knaack <knaack.h@gmx.de>,
Peter Meerwald <pmeerw@pmeerw.net>,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] iio: Simplify IIO provider access locking mechanism
Date: Mon, 12 Jan 2015 17:11:59 +0100 [thread overview]
Message-ID: <54B3F24F.2010508@metafoo.de> (raw)
In-Reply-To: <1421070898.28652.13.camel@mm-sol.com>
On 01/12/2015 02:54 PM, Ivan T. Ivanov wrote:
>
> On Fri, 2015-01-09 at 17:16 +0100, Lars-Peter Clausen wrote:
>> On 01/09/2015 05:14 PM, Ivan T. Ivanov wrote:
>>> On Fri, 2015-01-09 at 16:54 +0100, Lars-Peter Clausen wrote:
>>>> On 01/09/2015 04:50 PM, Ivan T. Ivanov wrote:
>>>>> On Fri, 2015-01-09 at 16:41 +0100, Lars-Peter Clausen wrote:
>>>>>> On 01/09/2015 04:38 PM, Ivan T. Ivanov wrote:
>>>>>>> Instead of checking whether provider module is still
>>>>>>> loaded on every access to device just lock module to
>>>>>>> memory when client get reference to provider device.
>>>>>>>
>>>>>>
>>>>>> This has nothing to do with the module, it's about the device. In the Linux
>>>>>> device driver model as device can be unbound at any time and the IIO
>>>>>> framework needs to handle this.
>>>>>>
>>>>>
>>>>> Hm. Probably i am missing something here, but is this
>>>>> still true if we have reference to device structure?
>>>>
>>>> Yes, that only prevents the memory of device from being freed. But the
>>>> device can still be unbound from the driver.
>>>>
>>>> Think of e.g. a USB device that is pulled from the USB connector. Nothing
>>>> you can do in software about having the device disappear.
>>>>
>>>
>>> Agree, but I think that the patch is still valid. Module
>>> have to be pinned in memory as long as there are device
>>> driver users.
>>
>> No, the idea of the Linux driver model is that you can remove the module of
>> a driver at any time, which will unbind the device from the driver. Once you
>> reinsert the module the device will be re-bound to the driver.
>
> I will say that device can be unbind at any time and not that module be can
> unload at any time. But yes, and I'm not saying the opposite. There are a
> lot of examples in kernel, where you can not unload driver if it is used by
> another driver. See kernel-haking.tmpl.
If you remove the module the driver will be unregistered. Unregistering the
driver will unbind all devices currently bound to the driver. This will
invoke the drivers remove callback for those devices. In the remove callback
the device is supposed to release all resource etc. that depend on the
driver module being loaded. So there is no need to increase the module
refcount and prevent it from being removed if there is a device registered
for the driver.
- Lars
prev parent reply other threads:[~2015-01-12 16:12 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-09 15:38 [PATCH] iio: Simplify IIO provider access locking mechanism Ivan T. Ivanov
2015-01-09 15:41 ` Lars-Peter Clausen
2015-01-09 15:50 ` Ivan T. Ivanov
2015-01-09 15:54 ` Lars-Peter Clausen
2015-01-09 16:14 ` Ivan T. Ivanov
2015-01-09 16:16 ` Lars-Peter Clausen
2015-01-12 13:54 ` Ivan T. Ivanov
2015-01-12 16:11 ` Lars-Peter Clausen [this message]
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=54B3F24F.2010508@metafoo.de \
--to=lars@metafoo.de \
--cc=iivanov@mm-sol.com \
--cc=jic23@kernel.org \
--cc=knaack.h@gmx.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pmeerw@pmeerw.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).