Eliminate psci_suspend_context array

psci_suspend_context is an array of cache-line aligned structures
containing the single power_state integer per cpu. This array is
the only structure indexed by the aff_map_node.data integer.

This patch saves 2KB of BL3-1 memory by placing the CPU
power_state value directly in the aff_map_node structure. As a
result, this value is now never cached and the cache clean when
writing the value is no longer required.

Fixes ARM-software/tf-issues#195

Change-Id: Ib4c70c8f79eed295ea541e7827977a588a19ef9b
diff --git a/services/std_svc/psci/psci_setup.c b/services/std_svc/psci/psci_setup.c
index af82150..68f19a0 100644
--- a/services/std_svc/psci/psci_setup.c
+++ b/services/std_svc/psci/psci_setup.c
@@ -58,12 +58,6 @@
 static aff_limits_node_t psci_aff_limits[MPIDR_MAX_AFFLVL + 1];
 
 /*******************************************************************************
- * 'psci_ns_einfo_idx' keeps track of the next free index in the
- * 'psci_suspend_context' arrays.
- ******************************************************************************/
-static unsigned int psci_ns_einfo_idx;
-
-/*******************************************************************************
  * Routines for retrieving the node corresponding to an affinity level instance
  * in the mpidr. The first one uses binary search to find the node corresponding
  * to the mpidr (key) at a particular affinity level. The second routine decides
@@ -195,13 +189,8 @@
 		if (state & PSCI_AFF_PRESENT)
 			psci_set_state(&psci_aff_map[idx], PSCI_STATE_OFF);
 
-		/* Ensure that we have not overflowed the psci_ns_einfo array */
-		assert(psci_ns_einfo_idx < PSCI_NUM_AFFS);
-
-		psci_aff_map[idx].data = psci_ns_einfo_idx;
 		/* Invalidate the suspend context for the node */
-		psci_suspend_context[psci_ns_einfo_idx].power_state = PSCI_INVALID_DATA;
-		psci_ns_einfo_idx++;
+		psci_aff_map[idx].power_state = PSCI_INVALID_DATA;
 
 		/*
 		 * Associate a non-secure context with this affinity
@@ -301,7 +290,6 @@
 	int afflvl, affmap_idx, max_afflvl;
 	aff_map_node_t *node;
 
-	psci_ns_einfo_idx = 0;
 	psci_plat_pm_ops = NULL;
 
 	/* Find out the maximum affinity level that the platform implements */