From 8a7d7b2d13098453380fbdf69c0136515ba33b06 Mon Sep 17 00:00:00 2001 From: Wael El-Essawy Date: Mon, 29 Aug 2016 19:33:20 -0500 Subject: 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 Tested-by: Wael El-Essawy --- src/occ_405/occ_sys_config.h | 53 +++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 15 deletions(-) (limited to 'src/occ_405/occ_sys_config.h') 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 -- cgit v1.2.1