/* * Previous CPU owning this bank had put it into storm mode, * but the precise history of that storm is unknown. Assume * the worst (all recent polls of the bank found a valid error * logged). This will avoid the new owner prematurely declaring * the storm has ended.
*/
storm->banks[bank].history = ~0ull;
storm->banks[bank].timestamp = jiffies;
}
/* No tracking needed for banks that do not support CMCI */ if (storm->banks[mce->bank].poll_only) return;
/* * When a bank is in storm mode it is polled once per second and * the history mask will record about the last minute of poll results. * If it is not in storm mode, then the bank is only checked when * there is a CMCI interrupt. Check how long it has been since * this bank was last checked, and adjust the amount of "shift" * to apply to history.
*/ if (!storm->banks[mce->bank].in_storm_mode) {
delta = now - storm->banks[mce->bank].timestamp;
shift = (delta + HZ) / HZ;
}
/* If it has been a long time since the last poll, clear history. */ if (shift < NUM_HISTORY_BITS)
history = storm->banks[mce->bank].history << shift;
storm->banks[mce->bank].timestamp = now;
/* History keeps track of corrected errors. VAL=1 && UC=0 */ if ((mce->status & MCI_STATUS_VAL) && mce_is_correctable(mce))
history |= 1;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.