Re: [RFC PATCH 00/11] Hot-plug and Online/Offline framework

From: Greg KH
Date: Wed Dec 12 2012 - 23:13:47 EST


On Wed, Dec 12, 2012 at 08:37:44PM -0700, Toshi Kani wrote:
> On Wed, 2012-12-12 at 16:55 -0800, Greg KH wrote:
> > On Wed, Dec 12, 2012 at 05:39:36PM -0700, Toshi Kani wrote:
> > > On Wed, 2012-12-12 at 15:56 -0800, Greg KH wrote:
> > > > On Wed, Dec 12, 2012 at 04:17:12PM -0700, Toshi Kani wrote:
> > > > > This patchset is an initial prototype of proposed hot-plug framework
> > > > > for design review. The hot-plug framework is designed to provide
> > > > > the common framework for hot-plugging and online/offline operations
> > > > > of system devices, such as CPU, Memory and Node. While this patchset
> > > > > only supports ACPI-based hot-plug operations, the framework itself is
> > > > > designed to be platform-neural and can support other FW architectures
> > > > > as necessary.
> > > > >
> > > > > The patchset has not been fully tested yet, esp. for memory hot-plug.
> > > > > Any help for testing will be very appreciated since my test setup
> > > > > is limited.
> > > > >
> > > > > The patchset is based on the linux-next branch of linux-pm.git tree.
> > > > >
> > > > > Overview of the Framework
> > > > > =========================
> > > >
> > > > <snip>
> > > >
> > > > Why all the new framework, doesn't the existing bus infrastructure
> > > > provide everything you need here? Shouldn't you just be putting your
> > > > cpus and memory sticks on a bus and handle stuff that way? What makes
> > > > these types of devices so unique from all other devices that Linux has
> > > > been handling in a dynamic manner (i.e. hotplugging them) for many many
> > > > years?
> > > >
> > > > Why are you reinventing the wheel?
> > >
> > > Good question. Yes, USB and PCI hotplug operate based on their bus
> > > structures. USB and PCI cards only work under USB and PCI bus
> > > controllers. So, their framework can be composed within the bus
> > > structures as you pointed out.
> > >
> > > However, system devices such CPU and memory do not have their standard
> > > bus. ACPI allows these system devices to be enumerated, but it does not
> > > make ACPI as the HW bus hierarchy for CPU and memory, unlike PCI and
> > > USB. Therefore, CPU and memory modules manage CPU and memory outside of
> > > ACPI. This makes sense because CPU and memory can be used without ACPI.
> > >
> > > This leads us an issue when we try to manage system device hotplug
> > > within ACPI, because ACPI does not control everything. This patchset
> > > provides a common hotplug framework for system devices, which both ACPI
> > > and non-ACPI modules (i.e. CPU and memory modules) can participate and
> > > are coordinated for their hotplug operations. This is analogous to the
> > > boot-up sequence, which ACPI and non-ACPI modules can participate to
> > > enable CPU and memory.
> >
> > Then create a "virtual" bus and put the devices you wish to control on
> > that. That is what the "system bus" devices were supposed to be, it's
> > about time someone took that code and got it all working properly in
> > this way, that is why it was created oh so long ago.
>
> It may be the ideal, but it will take us great effort to make such
> things to happen based on where we are now. It is going to be a long
> way. I believe the first step is to make the boot-up flow and hot-plug
> flow consistent for system devices. This is what this patchset is
> trying to do.

If you use the system "bus" for this, the "flow" will be identical, that
is what the driver core provides for you. I don't see why you need to
implement something that sits next to it and not just use what we
already have here.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/