Re: [RFC PATCH v2 01/12] Add sys_hotplug.h for system device hotplug framework
From: Rafael J. Wysocki <hidden>
Date: 2013-02-04 19:38:57
Also in:
linux-acpi, linux-mm, linux-s390, lkml
On Monday, February 04, 2013 09:46:18 AM Toshi Kani wrote:
On Mon, 2013-02-04 at 04:46 -0800, Greg KH wrote:quoted
On Sun, Feb 03, 2013 at 05:28:09PM -0700, Toshi Kani wrote:quoted
On Sat, 2013-02-02 at 16:01 +0100, Greg KH wrote:quoted
On Fri, Feb 01, 2013 at 01:40:10PM -0700, Toshi Kani wrote:quoted
On Fri, 2013-02-01 at 07:30 +0000, Greg KH wrote:quoted
On Thu, Jan 31, 2013 at 06:32:18PM -0700, Toshi Kani wrote: > This is already done for PCI host bridges and platform devices and I don'tquoted
quoted
see why we can't do that for the other types of devices too. The only missing piece I see is a way to handle the "eject" problem, i.e. when we try do eject a device at the top of a subtree and need to tear down the entire subtree below it, but if that's going to lead to a system crash, for example, we want to cancel the eject. It seems to me that we'll need some help from the driver core here.There are three different approaches suggested for system device hot-plug: A. Proceed within system device bus scan. B. Proceed within ACPI bus scan. C. Proceed with a sequence (as a mini-boot). Option A uses system devices as tokens, option B uses acpi devices as tokens, and option C uses resource tables as tokens, for their handlers. Here is summary of key questions & answers so far. I hope this clarifies why I am suggesting option 3. 1. What are the system devices? System devices provide system-wide core computing resources, which are essential to compose a computer system. System devices are not connected to any particular standard buses.Not a problem, lots of devices are not connected to any "particular standard busses". All this means is that system devices are connected to the "system" bus, nothing more.Can you give me a few examples of other devices that support hotplug and are not connected to any particular buses? I will investigate them to see how they are managed to support hotplug.Any device that is attached to any bus in the driver model can be hotunplugged from userspace by telling it to be "unbound" from the driver controlling it. Try it for any platform device in your system to see how it happens.The unbind operation, as I understand from you, is to detach a driver from a device. Yes, unbinding can be done for any devices. It is however different from hot-plug operation, which unplugs a device.Physically, yes, but to the driver involved, and the driver core, there is no difference. That was one of the primary goals of the driver core creation so many years ago.quoted
Today, the unbind operation to an ACPI cpu/memory devices causes hot-unplug (offline) operation to them, which is one of the major issues for us since unbind cannot fail. This patchset addresses this issue by making the unbind operation of ACPI cpu/memory devices to do the unbinding only. ACPI drivers no longer control cpu and memory as they are supposed to be controlled by their drivers, cpu and memory modules.I think that's the problem right there, solve that, please.We cannot eliminate the ACPI drivers since we have to scan ACPI. But we can limit the ACPI drivers to do the scanning stuff only. This is precisely the intend of this patchset. The real stuff, removing actual devices, is done by the system device drivers/modules.
In case you haven't realized that yet, the $subject patchset has no future. Let's just talk about how we can get what we need in more general terms. Thanks, Rafael -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.