Date: Tue, 14 Feb 2017 22:46:40 +0000 (UTC) From: Andriy Gapon <avg@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r313752 - head/sys/x86/x86 Message-ID: <201702142246.v1EMkert089611@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: avg Date: Tue Feb 14 22:46:39 2017 New Revision: 313752 URL: https://svnweb.freebsd.org/changeset/base/313752 Log: mca: use time_uptime instead of ticks for CMCI throttling This solves several problems. First of all, cmc_throttle is specified in seconds and there was no conversion between ticks and seconds when they were mixed together. Second, we avoid potential problems with ticks wrapping around. Resolution of time_uptime should be sufficient for the throttling purposes. Discussed with: jhb MFC after: 12 days Modified: head/sys/x86/x86/mca.c Modified: head/sys/x86/x86/mca.c ============================================================================== --- head/sys/x86/x86/mca.c Tue Feb 14 22:30:22 2017 (r313751) +++ head/sys/x86/x86/mca.c Tue Feb 14 22:46:39 2017 (r313752) @@ -533,7 +533,7 @@ cmci_update(enum scan_mode mode, int ban cc = &cmc_state[PCPU_GET(cpuid)][bank]; ctl = rdmsr(MSR_MC_CTL2(bank)); count = (rec->mr_status & MC_STATUS_COR_COUNT) >> 38; - delta = (u_int)(ticks - cc->last_intr); + delta = (u_int)(time_uptime - cc->last_intr); /* * If an interrupt was received less than cmc_throttle seconds @@ -550,7 +550,7 @@ cmci_update(enum scan_mode mode, int ban ctl |= limit; wrmsr(MSR_MC_CTL2(bank), ctl); } - cc->last_intr = ticks; + cc->last_intr = time_uptime; return; } @@ -857,7 +857,7 @@ cmci_resume(int i) return; cc = &cmc_state[PCPU_GET(cpuid)][i]; - cc->last_intr = -ticks; + cc->last_intr = 0; ctl = rdmsr(MSR_MC_CTL2(i)); ctl &= ~MC_CTL2_THRESHOLD; ctl |= MC_CTL2_CMCI_EN | 1;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201702142246.v1EMkert089611>