svn commit: r300992 - head/sys/dev/hyperv/vmbus

Sepherosa Ziehau sephe at FreeBSD.org
Mon May 30 09:20:09 UTC 2016


Author: sephe
Date: Mon May 30 09:20:08 2016
New Revision: 300992
URL: https://svnweb.freebsd.org/changeset/base/300992

Log:
  hyperv: Move timer frequency definition to common place.
  
  And cleanup event timer period settings.
  
  MFC after:	1 week
  Sponsored by:	Microsoft OSTC
  Differential Revision:	https://reviews.freebsd.org/D6597

Modified:
  head/sys/dev/hyperv/vmbus/hv_et.c
  head/sys/dev/hyperv/vmbus/hv_hv.c
  head/sys/dev/hyperv/vmbus/hyperv_var.h

Modified: head/sys/dev/hyperv/vmbus/hv_et.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_et.c	Mon May 30 09:18:12 2016	(r300991)
+++ head/sys/dev/hyperv/vmbus/hv_et.c	Mon May 30 09:20:08 2016	(r300992)
@@ -41,10 +41,6 @@ __FBSDID("$FreeBSD$");
 #include <dev/hyperv/vmbus/hyperv_var.h>
 #include <dev/hyperv/vmbus/vmbus_var.h>
 
-#define HV_TIMER_FREQUENCY		(10 * 1000 * 1000LL) /* 100ns period */
-#define HV_MAX_DELTA_TICKS		0xffffffffLL
-#define HV_MIN_DELTA_TICKS		1LL
-
 #define MSR_HV_STIMER0_CFG_SINT		\
 	((((uint64_t)VMBUS_SINT_TIMER) << MSR_HV_STIMER_CFG_SINT_SHIFT) & \
 	 MSR_HV_STIMER_CFG_SINT_MASK)
@@ -67,7 +63,8 @@ sbintime2tick(sbintime_t time)
 	struct timespec val;
 
 	val = sbttots(time);
-	return (val.tv_sec * HV_TIMER_FREQUENCY) + (val.tv_nsec / 100);
+	return (val.tv_sec * HYPERV_TIMER_FREQ) +
+	    (val.tv_nsec / HYPERV_TIMER_NS_FACTOR);
 }
 
 static int
@@ -151,11 +148,9 @@ hv_et_attach(device_t dev)
 	vmbus_et.et_name = "Hyper-V";
 	vmbus_et.et_flags = ET_FLAGS_ONESHOT | ET_FLAGS_PERCPU;
 	vmbus_et.et_quality = 1000;
-	vmbus_et.et_frequency = HV_TIMER_FREQUENCY;
-	vmbus_et.et_min_period =
-	    HV_MIN_DELTA_TICKS * ((1LL << 32) / HV_TIMER_FREQUENCY);
-	vmbus_et.et_max_period =
-	    HV_MAX_DELTA_TICKS * ((1LL << 32) / HV_TIMER_FREQUENCY);
+	vmbus_et.et_frequency = HYPERV_TIMER_FREQ;
+	vmbus_et.et_min_period = (0x00000001ULL << 32) / HYPERV_TIMER_FREQ;
+	vmbus_et.et_max_period = (0xfffffffeULL << 32) / HYPERV_TIMER_FREQ;
 	vmbus_et.et_start = hv_et_start;
 
 	/*

Modified: head/sys/dev/hyperv/vmbus/hv_hv.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_hv.c	Mon May 30 09:18:12 2016	(r300991)
+++ head/sys/dev/hyperv/vmbus/hv_hv.c	Mon May 30 09:20:08 2016	(r300992)
@@ -49,8 +49,6 @@ __FBSDID("$FreeBSD$");
 #include <dev/hyperv/vmbus/hyperv_var.h>
 #include <dev/hyperv/vmbus/vmbus_var.h>
 
-#define HV_NANOSECONDS_PER_SEC		1000000000L
-
 #define HYPERV_FREEBSD_BUILD		0ULL
 #define HYPERV_FREEBSD_VERSION		((uint64_t)__FreeBSD_version)
 #define HYPERV_FREEBSD_OSID		0ULL
@@ -87,7 +85,7 @@ static struct timecounter	hyperv_timecou
 	.tc_get_timecount	= hyperv_get_timecount,
 	.tc_poll_pps		= NULL,
 	.tc_counter_mask	= 0xffffffff,
-	.tc_frequency		= HV_NANOSECONDS_PER_SEC/100,
+	.tc_frequency		= HYPERV_TIMER_FREQ,
 	.tc_name		= "Hyper-V",
 	.tc_quality		= 2000,
 	.tc_flags		= 0,

Modified: head/sys/dev/hyperv/vmbus/hyperv_var.h
==============================================================================
--- head/sys/dev/hyperv/vmbus/hyperv_var.h	Mon May 30 09:18:12 2016	(r300991)
+++ head/sys/dev/hyperv/vmbus/hyperv_var.h	Mon May 30 09:20:08 2016	(r300992)
@@ -29,6 +29,12 @@
 #ifndef _HYPERV_VAR_H_
 #define _HYPERV_VAR_H_
 
+#ifndef NANOSEC
+#define NANOSEC			1000000000ULL
+#endif
+#define HYPERV_TIMER_NS_FACTOR	100ULL
+#define HYPERV_TIMER_FREQ	(NANOSEC / HYPERV_TIMER_NS_FACTOR)
+
 extern u_int	hyperv_features;
 extern u_int	hyperv_recommends;
 


More information about the svn-src-head mailing list