diff options
| author | William Bryan <wilbryan@us.ibm.com> | 2018-09-14 12:35:51 -0500 |
|---|---|---|
| committer | William A. Bryan <wilbryan@us.ibm.com> | 2018-09-20 11:52:21 -0500 |
| commit | 1de1be8ec36b461f04bbe417023dbff3de5071f4 (patch) | |
| tree | 901888f389e32307e96f52ddb777a973b4c36737 /src/occ_405/timer | |
| parent | 8344884b54ca2f688f1c4d87f6aa48a48ff684be (diff) | |
| download | talos-occ-1de1be8ec36b461f04bbe417023dbff3de5071f4.tar.gz talos-occ-1de1be8ec36b461f04bbe417023dbff3de5071f4.zip | |
Memory bandwidth sensor fixes
CQ:SW445286
Change-Id: Iaf86444442a391e218256a22883d6b248c410e9a
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/66149
Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com>
Tested-by: William A. Bryan <wilbryan@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_405/timer')
| -rwxr-xr-x | src/occ_405/timer/timer.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/occ_405/timer/timer.c b/src/occ_405/timer/timer.c index e562cab..be5abbe 100755 --- a/src/occ_405/timer/timer.c +++ b/src/occ_405/timer/timer.c @@ -37,6 +37,7 @@ #include <occ_sys_config.h> #include <pgpe_shared.h> #include <sensor.h> +#include <amec_sensors_centaur.h> //*************************************************************************/ // Externs @@ -301,6 +302,7 @@ void manage_mem_deadman_task(void) // There is no way to synchronously start or stop the counter, so must // take the difference between two readings. static perf_mon_count0_t L_last_reading[NUM_NIMBUS_MCAS] = {{0}}; + static bool L_read_once[NUM_NIMBUS_MCAS] = {0}; uint32_t l_rd_wr_diff = 0; uint32_t gpe_rc = G_gpe_reset_mem_deadman_args.error.rc; // IPC task rc @@ -352,18 +354,21 @@ void manage_mem_deadman_task(void) //Reset the timeout. L_scom_timeout[mca] = 0; - // Update read/write sensors - l_rd_wr_diff = G_gpe_reset_mem_deadman_args.rd_wr_counts.mba_read_cnt - - L_last_reading[mca].mba_read_cnt; + // Update read sensors + l_rd_wr_diff = G_gpe_reset_mem_deadman_args.rd_wr_counts.mba_read_cnt; + l_rd_wr_diff = amec_diff_adjust_for_overflow(l_rd_wr_diff, L_last_reading[mca].mba_read_cnt); l_rd_wr_diff = ((l_rd_wr_diff*25)/1000); - sensor_update(AMECSENSOR_ARRAY_PTR(MRDM0,mca), l_rd_wr_diff); + if(L_read_once[mca]) sensor_update(AMECSENSOR_ARRAY_PTR(MRDM0,mca), l_rd_wr_diff); - l_rd_wr_diff = G_gpe_reset_mem_deadman_args.rd_wr_counts.mba_write_cnt - - L_last_reading[mca].mba_write_cnt; + // Update write sensors + l_rd_wr_diff = G_gpe_reset_mem_deadman_args.rd_wr_counts.mba_write_cnt; + l_rd_wr_diff = amec_diff_adjust_for_overflow(l_rd_wr_diff, L_last_reading[mca].mba_write_cnt); l_rd_wr_diff = ((l_rd_wr_diff*25)/1000); - sensor_update(AMECSENSOR_ARRAY_PTR(MWRM0,mca), l_rd_wr_diff); + if(L_read_once[mca]) sensor_update(AMECSENSOR_ARRAY_PTR(MWRM0,mca), l_rd_wr_diff); + // Update last read/write measurement L_last_reading[mca] = G_gpe_reset_mem_deadman_args.rd_wr_counts; + L_read_once[mca] = TRUE; } } |

