Skip site navigation (1)Skip section navigation (2)
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>