mca: fix writes to MSR_MC_CTL2 in cmci_update

Previously, if the threshold was changed, then MC_CTL2_CMCI_EN would get
cleared and the logic would switch to the polling only mode.

Discussed with:	jhb
MFC after:	2 weeks
This commit is contained in:
avg 2017-02-14 22:30:22 +00:00
parent 648f260ae8
commit 2e3128b7ec

View File

@ -548,7 +548,7 @@ cmci_update(enum scan_mode mode, int bank, int valid, struct mca_record *rec)
limit = min(limit << 1, cc->max_threshold);
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= limit;
wrmsr(MSR_MC_CTL2(bank), limit);
wrmsr(MSR_MC_CTL2(bank), ctl);
}
cc->last_intr = ticks;
return;
@ -581,7 +581,7 @@ cmci_update(enum scan_mode mode, int bank, int valid, struct mca_record *rec)
if ((ctl & MC_CTL2_THRESHOLD) != limit) {
ctl &= ~MC_CTL2_THRESHOLD;
ctl |= limit;
wrmsr(MSR_MC_CTL2(bank), limit);
wrmsr(MSR_MC_CTL2(bank), ctl);
}
}
#endif