Newer firmware on Power systems can transparently reassign platform resources (CPU and Memory) in use. For instance, if a processor or memory unit is predicted to fail, the platform may transparently move the processing to an equivalent unused processor or the memory state to an equivalent unused memory unit. However, reassigning resources across NUMA boundaries may alter the performance of the partition. When such reassignment is necessary, the Platform Resource Reassignment Notification (PRRN) option provides a mechanism to inform the Linux kernel of changes to the NUMA affinity of its platform resources.
PRRN Events are RTAS events sent up through the event-scan mechanism on Power. When these events are received the system needs can get the updated device tree affinity information for the affected CPUs/memory via the rtas update-nodes and update-properties calls. This information is then used to update the NUMA affinity of the CPUs/Memory in the kernel. This patch set adds the ability to recognize PRRN events, update the device tree and kernel information for CPUs (memory will be handled in a later patch), and add an interface to enable/disable toplogy updates from /proc. Additionally, these updates solve an exisitng problem with the VPHN (Virtual Processor Home Node) capability and allow us to re-enable this feature. Nathan Fontenot Updates for Version 2 of this patchset - Merged the functionality of platform_has_feature into the existing firmware_has_feature routine. - Corrected the new way certain bits in the architecture vector are defined based on config options. --- arch/powerpc/include/asm/firmware.h | 3 arch/powerpc/include/asm/prom.h | 46 ++--- arch/powerpc/include/asm/rtas.h | 2 arch/powerpc/kernel/prom_init.c | 98 ++--------- arch/powerpc/kernel/rtasd.c | 35 ++++ arch/powerpc/mm/numa.c | 183 ++++++++++++++-------- arch/powerpc/platforms/pseries/firmware.c | 1 powerpc/arch/powerpc/include/asm/firmware.h | 4 powerpc/arch/powerpc/include/asm/prom.h | 73 ++++++++ powerpc/arch/powerpc/include/asm/rtas.h | 1 powerpc/arch/powerpc/include/asm/topology.h | 5 powerpc/arch/powerpc/kernel/prom_init.c | 2 powerpc/arch/powerpc/kernel/rtasd.c | 6 powerpc/arch/powerpc/mm/numa.c | 62 +++++++ powerpc/arch/powerpc/platforms/pseries/firmware.c | 67 +++++++- powerpc/arch/powerpc/platforms/pseries/mobility.c | 21 +- powerpc/arch/powerpc/platforms/pseries/pseries.h | 5 powerpc/arch/powerpc/platforms/pseries/setup.c | 40 +++- 18 files changed, 455 insertions(+), 199 deletions(-) _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev