• Nathan Fontenot's avatar
    powerpc/pseries: Create new device hotplug entry point · 999e2dad
    Nathan Fontenot authored
    The current hotplug (or dlpar) of devices (the process is generally the
    same for memory, cpu, and pci) on PowerVM systems is initiated
    from the HMC, which communicates the request to the partitions through
    the RSCT framework. The RSCT framework then invokes the drmgr command.
    The drmgr command performs the hotplug operation by doing some pieces,
    such as most of the rtas calls and device tree parsing, in userspace
    and make requests to the kernel to online/offline the device, update the
    device tree and add/remove the device.
    
    For PowerKVM the approach for device hotplug is to follow what is currently
    being done for pci hotplug. A hotplug request is initiated from the host.
    QEMU then generates an EPOW interrupt to the guest which causes the guest
    to make the rtas,check-exception call. In QEMU, the rtas,check-exception call
    returns a rtas hotplug event to the guest.
    
    Please note that the current pci hotplug path for PowerKVM involves the
    kernel receiving the rtas hotplug event, passing it to rtas_errd in
    userspace, and having rtas_errd invoke drmgr. The drmgr command then
    handles the request as described above for PowerVM systems.
    
    There is no need for this circuitous route, we should just handle the entire
    hotplug of devices in the kernel. What I am planning is to enable this
    by moving the code to handle hotplug from drmgr into the kernel to
    provide a single path for handling device hotplug for both PowerVM and
    PowerKVM systems. This patch provides the common iframework and entry point.
    For PowerKVM a future update to the kernel rtas code will recognize rtas
    hotplug events returned from rtas,check-exception calls and use the common
    entry point to handle hotplug of the device.
    
    For PowerVM systems, This patch creates /sys/kernel/dlpar that can be
    used by the drmgr command to initiate hotplug requests. In order to do
    this a string of the format "<resource> <action> <id_type> <id>" is
    written to this file. The string consists of a resource (cpu, memory, pci,
    phb), an action (add or remove), an id_type (count, drc index, drc name),
    and the corresponding id. The kernel will parse the string and create a
    rtas hotplug section that can be passed to the common entry point for
    handling hotplug requests.
    
    It should be noted that there is no chance of updating how we receive
    hotplug (dlpar) requests from the HMC on PowerVM systems.
    Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    999e2dad
dlpar.c 13.5 KB