Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752971AbbHVBww (ORCPT ); Fri, 21 Aug 2015 21:52:52 -0400 Received: from mga01.intel.com ([192.55.52.88]:39052 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751560AbbHVBwt (ORCPT ); Fri, 21 Aug 2015 21:52:49 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,726,1432623600"; d="scan'208";a="753236144" From: "Christopher S. Hall" To: jeffrey.t.kirsher@intel.com, hpa@zytor.com, mingo@redhat.com, tglx@linutronix.de, john.stultz@linaro.org Cc: richardcochran@gmail.com, x86@kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org, peterz@infradead.org, "Christopher S. Hall" Subject: [PATCH v3 0/4] Patchset enabling hardware based cross-timestamps for next gen Intel platforms Date: Fri, 21 Aug 2015 11:52:04 -0700 Message-Id: <1440183128-1384-1-git-send-email-christopher.s.hall@intel.com> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3118 Lines: 76 6th generation Intel platforms will have an Always Running Timer (ART) that always runs when the system is powered and is available to both the CPU and various on-board devices. Initially, those devices include audio and network. The ART will give these devices the capability of precisely cross timestamping their local device clock with the system clock. The ART is precisely related to the TSC by a ratio read from CPUID leaf 0x15. A device (such as the network controller) produces cross timestamps in terms of the ART and the local device clock. The ART value on its own isn't useful. The first two patches enable translation of ART to system time. The first patch adds the correlated clocksource concept which is an auxiliary clock directly relate-able to a clock registered as a clocksource. The second patch adds the Intel specific ART correlated clocksource. The last two patches modify the PTP character driver to call a cross timestamp function (getsynctime()) in the driver when available and perform the cross timestamp in the e1000e driver. The patches taken together enable sub-microsecond cross timestamps between the system clock and network device clock Changelog since v2: Split out x86 architecture specific code from common timekeeping code additions Split ART initialization between early TSC initialization and TSC frequency refinement. Now, cpu_has_art can be used in driver initialization code Added e1000e PTP init code that detects presence of ART/spt disabling cross timestamp if they're not available Added additional commenting in TSC/ART init code, minor renaming of functions and variables for greater clarity Fixed a few formatting problems in e1000e driver patch Christopher Hall (2): Add support for driver cross-timestamp to PTP_SYS_OFFSET ioctl Enabling hardware supported PTP system/device crosstimestamping Christopher S. Hall (2): Add correlated clocksource deriving system time from an auxiliary clocksource Added ART correlated clocksource and ART CPU feature Documentation/ptp/testptp.c | 6 +- arch/x86/include/asm/cpufeature.h | 3 +- arch/x86/include/asm/tsc.h | 2 + arch/x86/kernel/tsc.c | 54 ++++++++++++++++++ drivers/net/ethernet/intel/e1000e/defines.h | 5 ++ drivers/net/ethernet/intel/e1000e/ptp.c | 88 +++++++++++++++++++++++++++++ drivers/net/ethernet/intel/e1000e/regs.h | 4 ++ drivers/ptp/ptp_chardev.c | 29 +++++++--- include/linux/clocksource.h | 33 +++++++++++ include/linux/ptp_clock_kernel.h | 7 +++ include/linux/timekeeping.h | 4 ++ include/uapi/linux/ptp_clock.h | 4 +- kernel/time/timekeeping.c | 65 +++++++++++++++++++++ 13 files changed, 292 insertions(+), 12 deletions(-) -- 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/