powerpc/pseries: Advertise Hot Plug Event support to firmware
authorMichael Roth <mdroth@linux.vnet.ibm.com>
Tue, 21 Feb 2017 01:12:18 +0000 (19:12 -0600)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 21 Feb 2017 10:32:53 +0000 (21:32 +1100)
With the inclusion of commit 333f7b76865b ("powerpc/pseries: Implement
indexed-count hotplug memory add") and commit 753843471cbb
("powerpc/pseries: Implement indexed-count hotplug memory remove"), we
now have complete handling of the RTAS hotplug event format as described
by PAPR via ACR "PAPR Changes for Hotplug RTAS Events".

This capability is indicated by byte 6, bit 2 (5 in IBM numbering) of
architecture option vector 5, and allows for greater control over
cpu/memory/pci hot plug/unplug operations.

Existing pseries kernels will utilize this capability based on the
existence of the /event-sources/hot-plug-events DT property, so we
only need to advertise it via CAS and do not need a corresponding
FW_FEATURE_* value to test for.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/prom.h
arch/powerpc/kernel/prom_init.c

index 2c8001c..4a90634 100644 (file)
@@ -153,6 +153,7 @@ struct of_drconf_cell {
 #define OV5_XCMO               0x0440  /* Page Coalescing */
 #define OV5_TYPE1_AFFINITY     0x0580  /* Type 1 NUMA affinity */
 #define OV5_PRRN               0x0540  /* Platform Resource Reassignment */
+#define OV5_HP_EVT             0x0604  /* Hot Plug Event support */
 #define OV5_RESIZE_HPT         0x0601  /* Hash Page Table resizing */
 #define OV5_PFO_HW_RNG         0x1180  /* PFO Random Number Generator */
 #define OV5_PFO_HW_842         0x1140  /* PFO Compression Accelerator */
index f3c8799..1a835e7 100644 (file)
@@ -839,7 +839,7 @@ struct ibm_arch_vec __cacheline_aligned ibm_architecture_vec = {
                0,
 #endif
                .associativity = OV5_FEAT(OV5_TYPE1_AFFINITY) | OV5_FEAT(OV5_PRRN),
-               .bin_opts = OV5_FEAT(OV5_RESIZE_HPT),
+               .bin_opts = OV5_FEAT(OV5_RESIZE_HPT) | OV5_FEAT(OV5_HP_EVT),
                .micro_checkpoint = 0,
                .reserved0 = 0,
                .max_cpus = cpu_to_be32(NR_CPUS),       /* number of cores supported */