summaryrefslogtreecommitdiffstats
path: root/src/occ_405/occ_sys_config.h
diff options
context:
space:
mode:
authorWael El-Essawy <welessa@us.ibm.com>2016-08-29 19:33:20 -0500
committerWael El-Essawy <welessa@us.ibm.com>2016-09-16 11:19:15 -0400
commit8a7d7b2d13098453380fbdf69c0136515ba33b06 (patch)
tree9ce20ff68625d0a6d4b5d118514a48949232e173 /src/occ_405/occ_sys_config.h
parent444caf2b8e674263f27963b3c9739e48aa793d00 (diff)
downloadtalos-occ-8a7d7b2d13098453380fbdf69c0136515ba33b06.tar.gz
talos-occ-8a7d7b2d13098453380fbdf69c0136515ba33b06.zip
Memory Temperature Control Loop (memory throttling)
* Memory throttling due to over temp * Throttle when reach timeout getting new temperature readings * Log error for temperature exceeding ERROR threshold Change-Id: I089c88aadba84e7296ad87b8cb87fa8c045ff912 RTC: 131188 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28933 Reviewed-by: Wael El-Essawy <welessa@us.ibm.com> Tested-by: Wael El-Essawy <welessa@us.ibm.com>
Diffstat (limited to 'src/occ_405/occ_sys_config.h')
-rwxr-xr-xsrc/occ_405/occ_sys_config.h53
1 files changed, 38 insertions, 15 deletions
diff --git a/src/occ_405/occ_sys_config.h b/src/occ_405/occ_sys_config.h
index ae52556..2fd7535 100755
--- a/src/occ_405/occ_sys_config.h
+++ b/src/occ_405/occ_sys_config.h
@@ -45,12 +45,21 @@
#define MAX_NUM_MEM_CONTROLLERS 8
#define MAX_NUM_CENTAURS 8
#define NUM_PROC_VRMS 2
+
#define MAX_NUM_MCU_PORTS 4
+#define MC01 0
+#define MC23 1
+#define NUM_NIMBUS_MC_PAIRS 2
+
+#define NUM_DIMMS_PER_MEM_CONTROLLER 8
+#define NUM_I2C_PORTS 2
+
#define NUM_PROC_CHIPS_PER_OCC 1
#define NUM_CENTAURS_PER_MEM_CONTROLLER 1
#define NUM_PORT_PAIRS_PER_CENTAUR 2
-#define NUM_DIMMS_PER_CENTAUR 8
+#define NUM_DIMMS_PER_CENTAUR \
+ (NUM_DIMMS_PER_MEM_CONTROLLER/NUM_CENTAURS_PER_MEM_CONTROLLER)
#define NUM_MBAS_PER_CENTAUR 2
#define UPPER_LIMIT_PROC_FREQ_MHZ 6000
@@ -223,27 +232,30 @@ typedef struct
uint8_t pcap_data_count; // Used by OCC only. Initialized to 0 and incremented by 1 with every new packet.
} pcap_config_data_t;
-// Memory Throttle settings
+// Memory Centaur Throttle settings
typedef struct
{
- uint16_t min_n_per_mba; //minimum value
- uint16_t min_mem_power; // Max mem Power @min (x0.1W)
+ uint16_t min_n_per_mba; //minimum value
+ uint16_t min_mem_power; //Max mem Power @min (x0.1W)
- uint16_t pcap1_n_per_mba; //max mba value for Power Cap Level 1
- uint16_t pcap1_mem_power; //max memory power @PCAP L1
+ uint16_t turbo_n_per_mba; //max mba value for Power Cap @Turbo
+ uint16_t turbo_n_per_chip; //Static per chip numerator @Turbo
+ uint16_t turbo_mem_power; //max memory power @Turbo L1
- uint16_t pcap2_n_per_mba; //max mba value for Power Cap Level 2
- uint16_t pcap2_mem_power; //max memory power @PCAP L2
+ uint16_t pcap_n_per_mba; //max mba value for Power Cap Level 2
+ uint16_t pcap_n_per_chip; //Static per chip numerator @PCAP
+ uint16_t pcap_mem_power; //max memory power @PCAP L2
- uint16_t nom_n_per_mba; //max mba value for nominal mode
- uint16_t nom_n_per_chip; //chip setting for nominal mode
- uint16_t nom_mem_power; //max memory power @Redundant
+ uint16_t nom_n_per_mba; //max mba value for nominal mode
+ uint16_t nom_n_per_chip; //chip setting for nominal mode
+ uint16_t nom_mem_power; //max memory power @Redundant
- uint16_t ovs_n_per_mba; //max mba value for oversubscription
- uint16_t ovs_n_per_chip; //chip setting for oversubscription
- uint16_t ovs_mem_power; //max memory power @oversubscription
+ uint16_t reserved_n_per_mba; //reserved
+ uint16_t reserved_n_per_chip; //reserved
+ uint16_t reserved_mem_power; //reserved
} mem_throt_config_data_t;
+
// Sys Config Structure
// Needs to be 128 bytes aligned so we can do a DMA to transfer this to SRAM from
@@ -353,7 +365,18 @@ typedef struct
// --------------------------------------
// Memory Throttle limits
// --------------------------------------
- mem_throt_config_data_t mem_throt_limits[MAX_NUM_CENTAURS][NUM_MBAS_PER_CENTAUR];
+ // This array holds throttle configuration parameters for
+ // both nimbus and cumulus systems.
+
+ // Throttle limits are layout:
+ // - Nimbus: mem_throt_limits[mc_pair][port]
+ // mc_pair = 0/1 for MC01/MC23, port=0-3
+ // (only first two rows populated)
+
+ // - Cumulus mem_throt_limits[cent][mba]
+ // cent=0-8, mba = 0/1 for mba01/mba23
+ // (only first two columns populated)
+ mem_throt_config_data_t mem_throt_limits[MAX_NUM_MEM_CONTROLLERS][MAX_NUM_MCU_PORTS];
// --------------------------------------
// Vdd/Vcs Uplift vid codes
OpenPOWER on IntegriCloud