On Tue, Jul 31, 2012 at 11:52:13AM +0200, Paolo Bonzini wrote:
More than 1kb of data is taken by the 32 copies of the PCI hotplug SSDT methods. We can build them from a single template like we do for CPUs (wrapped in a Scope(_SB.PCI0) block).
Three items differ for each slot: the device name, bits 16-23 of _ADR, the _SUN value. On top of this we have to rename the eject method for non-removable slots, like we already do in build_pcihp.
There is a small change in the ASL: instead of including the number of the slot in the implementation of _EJ0, we just call _SUN. This is also similar to what we do for CPU hotplug.
Once we do this, there is no need to keep a separate SSDT for PCI hotplug. Everything can reside in the same table.
I agree with this patch series. A couple of questions - why not create the Notify stuff dynamically (as CPU hotplug does) instead of moving it back to the dsdt? If a device doesn't support hotplug, why not skip creating the device instead of patching _EJ0?
-Kevin