On Tue, 20 May 2014 09:38:49 +0200, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > Hi Grant, > > On Tue, May 20, 2014 at 7:50 AM, Grant Likely <grant.likely@xxxxxxxxxxxx> wrote: > >> Why has the overlay system been designed for plugging and unpluging whole > >> overlays? > >> That means the kernel has to remember the full stack, causing issues with > >> e.g. kexec. > > > > Mostly so that drivers don't see any difference in the livetree data > > structure. It also means that userspace sees a single representation of > > the hardware at any given time. > > Sorry, I don't follow the argument about the "single representation of the > hardware". Er, s/of the hardware/of the tree/. Right now the overlay design modifies the live tree which at the same time modifies the tree representation in /sys/firmware/devicetree. If the design was changed to keep the overlay logically separate, then I would think we want to expose that information to usespace also. In fact, I think we would need to for usecases like kexec. > > >> Why not allowing the addition of removal of subtrees of the full device > >> tree? > > > > Overlays is more than just a subtree. A single overlay can make > > manipulations of multiple subtrees that should be handled as logically > > atomic. > > Sure, it's more complicated due to the atomicity of multiple changes. > > >> This is similar to other hotpluggable subsystems (which are not necessarily > >> DT-based), like PCI Express. That way the kernel can pass a > >> DT-representation of the actual current device tree to a kexec'ed kernel. > > > > I'm not following you argument. Hardware hotplug systems like PCIe don't > > manipulate the firmware data. The kernel detects the new device and > > populates the Linux device model directly. Firmware provided data (ACPI > > or FDT) isn't involved. > > I mean the kernel doesn't remember the exact order in a stack, to reverse > operations. E.g. I can add hotplug a PCIe bridge with multiple devices > behind it, and unplug a single device later. It's still one subtree, though. The problem comes when one overlay adds a node or configuration that is depended on by the second overlay, but there isn't a direct reference by the second overlay into the first. g. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html