Skip to content

NUMA CPU Reconfiguration using PRRN

Nathan Fontenot linuxppc-dev 4 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest13 patches 2 repliesIn review
  2. v312 patches 13 repliesSuperseded
  3. v211 patches 14 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v110 of 11 patches13 repliesSuperseded

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/13Expose pseries devicetree_update()arch/powerpc/include/asm/rtas.h arch/powerpc/platforms/pseries/mobility.c+16 -90 replies
2/13Correct buffer parsing in update_dt_node()arch/powerpc/platforms/pseries/mobility.c+16 -41 reply
3/13Add PRRN RTAS event handlerarch/powerpc/include/asm/rtas.h arch/powerpc/kernel/rtasd.c+47 -10 replies
4/13Move architecture vector definitions to prom.harch/powerpc/include/asm/prom.h arch/powerpc/kernel/prom_init.c+77 -690 replies
5/13Use ARRAY_SIZE to iterate over firmware_features_table arrayarch/powerpc/include/asm/firmware.h arch/powerpc/platforms/pseries/firmware.c+3 -61 reply
6/13Update firmware_has_feature() to check architecture vector 5 bitsarch/powerpc/include/asm/firmware.h arch/powerpc/include/asm/prom.h arch/powerpc/kernel/prom_init.c +3 more+111 -550 replies
7/13Update numa.c to use updated firmware_has_feature()arch/powerpc/mm/numa.c+3 -190 replies
8/13Update CPU maps when device tree is updatedarch/powerpc/include/asm/firmware.h arch/powerpc/include/asm/prom.h arch/powerpc/mm/numa.c +1 more+79 -250 replies
9/13Use stop machine to update cpu mapsarch/powerpc/mm/numa.c+64 -180 replies
10/13Update NUMA VDSO information when updating CPU mapsarch/powerpc/mm/numa.c+7 -10 replies
11/13RE-enable Virtual Processor Home Node updatingarch/powerpc/mm/numa.c+1 -20 replies
12/13Enable PRRN handlingarch/powerpc/kernel/prom_init.c+1 -10 replies
13/13Add /proc interface to control topology updatesarch/powerpc/include/asm/topology.h arch/powerpc/kernel/rtasd.c arch/powerpc/mm/numa.c+71 -30 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.

Read the v4 thread

Cover letter [PATCH v4 0/13] NUMA CPU Reconfiguration using PRRN

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 existing problem with the VPHN (Virtual Processor Home Node) capability and allow us to re-enable this feature.

Nathan Fontenot

 arch/powerpc/include/asm/firmware.h               |    7 
 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                       |   46 ++++
 arch/powerpc/mm/numa.c                            |  214 +++++++++++++++-------
 arch/powerpc/platforms/pseries/firmware.c         |   50 ++++-
 arch/powerpc/platforms/pseries/mobility.c         |   21 +-
 powerpc/arch/powerpc/include/asm/firmware.h       |    1 
 powerpc/arch/powerpc/include/asm/prom.h           |   71 +++++++
 powerpc/arch/powerpc/include/asm/rtas.h           |    4 
 powerpc/arch/powerpc/include/asm/topology.h       |    5 
 powerpc/arch/powerpc/kernel/prom_init.c           |    2 
 powerpc/arch/powerpc/kernel/rtasd.c               |    7 
 powerpc/arch/powerpc/mm/numa.c                    |   62 ++++++
 powerpc/arch/powerpc/platforms/pseries/firmware.c |    8 
 powerpc/arch/powerpc/platforms/pseries/mobility.c |   20 +-
 powerpc/arch/powerpc/platforms/pseries/pseries.h  |    5 
 powerpc/arch/powerpc/platforms/pseries/setup.c    |   40 ++--
 19 files changed, 496 insertions(+), 213 deletions(-)

Updates for v4 of the patchset:
------------------------------
1/13 - Remove the hook in ppc_md for updating te device tree.

3/13 - Put the rtas code to handle PRRN events in #ifdef CONFIG_PPC_PSERIES

4/13 - New patch. Update the iteration over arrays in firmware.c to use ARRAY_SIZE()

5/13 (was 4/12) - Remove the unnecessary #ifdef

6/13 (was 5/12) - Removed the references to platform_has_feature() and update the firmware.c updates to use ARRAY_SIZE() for iteration.

8/13 (was 7/12) - Correct subject.

13/13 (was 12/12) - Remove inlining of prrn_is_enabled().

Updates for v3 of the patchset:
------------------------------
1/12 - Updated to use a ppc_md interface to invoke device tree updates, this corrects the build break previously seen in patch 2/12 for non-pseries platforms.

2/12 - New patch in the series to correct the parsing of the buffer returned from ibm,update-properties rtas call.

5/12 - The parsing of architecture vector 5 has been made more efficient.

7/12 - Correct #define used in call the firmware_has_feature()

8/12 - Updated calling of stop_machine() to only call it once per PRRN event.

12/12 - Added inclusion of topology.h to rtasd.c to correct a build failure on non-pseries platforms.