From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Tejun Heo <tj@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Luis R . Rodriguez" <mcgrof@suse.com>,
linux-kernel@vger.kernel.org,
Arjan van de Ven <arjan@linux.intel.com>,
Rusty Russell <rusty@rustcorp.com.au>,
Olof Johansson <olof@lixom.net>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Subject: Re: [PATCH 6/8] amd64_edac: enforce synchronous probe
Date: Wed, 18 Mar 2015 14:41:26 -0700 [thread overview]
Message-ID: <20150318214126.GJ11485@dtor-ws> (raw)
In-Reply-To: <20150318210226.GE25365@htj.duckdns.org>
On Wed, Mar 18, 2015 at 05:02:26PM -0400, Tejun Heo wrote:
> Hello,
>
> On Wed, Mar 18, 2015 at 01:26:05PM -0700, Dmitry Torokhov wrote:
> > Tejun, I lost you here. Certainly you are not arguing for going through
> > the drivers one by one and making their module init code to engage
> > async_schedule to continue the device creation in link order (well,
> > sorta, since deferred probing already violates it).
>
> Kind of, yes, but not by driver-by-driver, but by subsystem. I don't
> think we have too many subsystems where probing order matters and the
> ordering only matters within each subsystem.
I do not think you can always define this by subsystem. SCSI or libata
are exceptions than rule I think. Take for example I2C. Does the
probing order matter? Not if I2C happens to be an input device. But
maybe if it is a serial port. But maybe not if you can deal with it
being probed out of order. And you probably are since many systems
already ready to handle -EPROBE_DEFER.
And I think libata and SD still rely on the underlying PCI to be probed
synchronously. Try probing PCI asynchronously and see your disks getting
renumbered. And if we try to ensure that all devices are registered in
given order you will end up stalling the boot process because while you
can do some of probing simultaneously you still will have to wait till
slow device is done before allowing drivers "after" the slow one to
register their children objects.
>
> > Also, it is not only kernel that may not be prepared for asynchronous
> > probing, but userspace as well. And I do not think that we should be
> > working towards preserving the init order in the long run as more and
> > more bits become hot pluggable and we should be able to handle devices
> > come and go gracefully anyway.
>
> It's not about supporting or not supporting hotplugging. Most of the
> storage devices support hotplugging but still maintain boot order and
> at least for storage devices there are pretty good reasons for doing
> so especially as we can do so w/o giving up on parallel probing. The
You are over-stating the boot order guarantees that storage provides.
Yes, you can scan devices and partitions simultaneously on the same
controller, but it will break if controllers are registered in different
order. And if you are delaying registering cone controller because
another that you consider "first" has not done probing, you are stalling
the boot process. It may be OK for "leaf" devices, which disks are
usually are, bit not when you delaying initialization of a device that
is in a middle of the device tree.
> problem is that if you hinge enabling of general async probing on
> virtually all userlands being okay with storage devices (or ttyS
> devices and so on), we won't be able to enable this, ever.
Sure we will. I am pretty sure will do that for ChromeOS reasonably
soon, and I am sure other distributions can follow if needed.
So, to reiterate: right now we are synchronous by default. Certain
drivers can while-list themselves to be async probed when we are sure
userspace can handle this. We have a module option that can be used by
userspace to make drivers registered when module is being loaded to be
probed asynchronously. I expect newer systemd will start using it so
that they can time-out their module loading workers. We also have a
debug kernel option that can force everything asynchronous. I expect
various distributions developers to try using it once they are
comfortable with systemd loading modules asynchronously and then we can
change it to normal option and consider switching the default from sync
to async. I really do not believe that we should continue building
kernel infrastructure to help userspace pretend that the world is static
and unchanging. Userspace is already aware of this past-boot, it is time
for it to recognize the same during boot.
Thanks.
--
Dmitry
next prev parent reply other threads:[~2015-03-18 21:41 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-16 23:33 [PATCH 0/8] Asynchronous device/driver probing support Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 1/8] module: add extra argument for parse_params() callback Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 2/8] driver-core: add asynchronous probing support for drivers Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 3/8] driver-core: add driver module asynchronous probe support Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 4/8] driver-core: enable drivers to opt-out of async probe Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 5/8] driver-core: platform_driver_probe() must probe synchronously Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 6/8] amd64_edac: enforce synchronous probe Dmitry Torokhov
2015-03-18 16:56 ` Tejun Heo
2015-03-18 17:45 ` Dmitry Torokhov
2015-03-18 17:50 ` Dmitry Torokhov
2015-03-18 18:16 ` Tejun Heo
2015-03-18 18:23 ` Dmitry Torokhov
2015-03-18 18:27 ` Tejun Heo
2015-03-18 18:37 ` Dmitry Torokhov
2015-03-18 18:45 ` Tejun Heo
2015-03-18 19:36 ` Dmitry Torokhov
2015-03-18 19:51 ` Tejun Heo
2015-03-18 20:26 ` Dmitry Torokhov
2015-03-18 21:02 ` Tejun Heo
2015-03-18 21:41 ` Dmitry Torokhov [this message]
2015-03-18 21:50 ` Tejun Heo
2015-03-18 22:15 ` Dmitry Torokhov
2015-03-18 23:24 ` Tejun Heo
2015-03-19 0:26 ` Dmitry Torokhov
2015-03-19 15:41 ` Tejun Heo
2015-03-19 16:01 ` Dmitry Torokhov
2015-03-19 16:19 ` Tejun Heo
2015-03-19 17:04 ` Dmitry Torokhov
2015-01-16 23:33 ` [PATCH 7/8] module: add core_param_unsafe Dmitry Torokhov
2015-01-20 5:43 ` Rusty Russell
2015-01-16 23:33 ` [PATCH 8/8] driver-core: allow forcing async probing for modules and builtins Dmitry Torokhov
2015-02-03 23:12 ` [PATCH 0/8] Asynchronous device/driver probing support Dmitry Torokhov
2015-02-07 10:06 ` Greg Kroah-Hartman
2015-03-03 21:18 ` Dmitry Torokhov
2015-03-18 16:46 ` Dmitry Torokhov
-- strict thread matches above, loose matches on Subject: below --
2015-03-30 23:20 [PATCH v2 " Dmitry Torokhov
2015-03-30 23:20 ` [PATCH 6/8] amd64_edac: enforce synchronous probe Dmitry Torokhov
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=20150318214126.GJ11485@dtor-ws \
--to=dmitry.torokhov@gmail.com \
--cc=arjan@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@suse.com \
--cc=olof@lixom.net \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=rusty@rustcorp.com.au \
--cc=tj@kernel.org \
/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