* [PATCH v2 1/2] ptp: move emulated/virtual clock drivers into a dedicated subdirectory
2026-04-07 10:48 [PATCH v2 0/2] ptp: split non-NIC PHC drivers into the clock/timekeeping maintenance domain Wen Gu
@ 2026-04-07 10:48 ` Wen Gu
2026-04-07 10:48 ` [PATCH v2 2/2] MAINTAINERS: update PTP maintainer entries after directory split Wen Gu
1 sibling, 0 replies; 3+ messages in thread
From: Wen Gu @ 2026-04-07 10:48 UTC (permalink / raw)
To: tglx, richardcochran, andrew+netdev, davem, edumazet, kuba,
pabeni, linux-kernel, netdev, jstultz, anna-maria, frederic,
daniel.lezcano, sboyd, dwmw2
Cc: vladimir.oltean, wei.fang, xiaoning.wang, jonathan.lemon,
vadim.fedorenko, yangbo.lu, svens, nick.shi, ajay.kaher,
alexey.makhalov, bcm-kernel-feedback-list, linux-fpga, imx,
linux-s390, dust.li, xuanzhuo, mani, imran.shaik, taniya.das
The PTP subsystem has grown beyond the original IEEE 1588/NIC use case
and today contains both network-oriented PHC drivers and various
emulated/virtual clock implementations.
Prepare for clearer ownership and future maintenance by moving the
emulated/virtual/non-NIC PTP clock drivers into a dedicated subdirectory,
with its own Kconfig and Makefile.
The network/IEEE 1588 oriented drivers remain in drivers/ptp/ alongside
the PTP core infrastructure:
- drivers/ptp/ : PTP core infrastructure and IEEE 1588 /
network-oriented clock drivers.
- drivers/ptp/emulated/ : emulated/virtual/non-NIC implementations
that expose high-precision time sources via
the PTP interface but are not tied to the
NIC/packet-timestamping pipeline.
No functional changes are intended; this is a refactor only.
Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
---
drivers/ptp/Kconfig | 68 ++++-----------------
drivers/ptp/Makefile | 11 ++--
drivers/ptp/emulated/Kconfig | 61 ++++++++++++++++++
drivers/ptp/emulated/Makefile | 11 ++++
drivers/ptp/{ => emulated}/ptp_kvm_arm.c | 0
drivers/ptp/{ => emulated}/ptp_kvm_common.c | 0
drivers/ptp/{ => emulated}/ptp_kvm_x86.c | 0
drivers/ptp/{ => emulated}/ptp_s390.c | 0
drivers/ptp/{ => emulated}/ptp_vmclock.c | 0
drivers/ptp/{ => emulated}/ptp_vmw.c | 0
10 files changed, 87 insertions(+), 64 deletions(-)
create mode 100644 drivers/ptp/emulated/Kconfig
create mode 100644 drivers/ptp/emulated/Makefile
rename drivers/ptp/{ => emulated}/ptp_kvm_arm.c (100%)
rename drivers/ptp/{ => emulated}/ptp_kvm_common.c (100%)
rename drivers/ptp/{ => emulated}/ptp_kvm_x86.c (100%)
rename drivers/ptp/{ => emulated}/ptp_s390.c (100%)
rename drivers/ptp/{ => emulated}/ptp_vmclock.c (100%)
rename drivers/ptp/{ => emulated}/ptp_vmw.c (100%)
diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index b93640ca08b7..4cb199332546 100644
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -20,11 +20,16 @@ config PTP_1588_CLOCK
time stamping units, it can be possible to achieve
synchronization to within a few hundred nanoseconds.
- This driver adds support for PTP clocks as character
- devices. If you want to use a PTP clock, then you should
- also enable at least one clock driver as well.
+ This infrastructure adds support for PTP clocks as character
+ devices. It has since evolved into a general-purpose PTP
+ clock framework also used by high-precision clocks exposed
+ by platforms, hypervisors or special hardware, beyond the
+ traditional NIC/IEEE 1588 use case.
- To compile this driver as a module, choose M here: the module
+ If you want to use any PTP clock device, enable this option
+ and at least one clock driver.
+
+ To compile the core as a module, choose M here: the module
will be called ptp.
config PTP_1588_CLOCK_OPTIONAL
@@ -119,35 +124,6 @@ config PTP_1588_CLOCK_PCH
To compile this driver as a module, choose M here: the module
will be called ptp_pch.
-config PTP_1588_CLOCK_KVM
- tristate "KVM virtual PTP clock"
- depends on PTP_1588_CLOCK
- depends on (KVM_GUEST && X86) || (HAVE_ARM_SMCCC_DISCOVERY && ARM_ARCH_TIMER)
- default y
- help
- This driver adds support for using kvm infrastructure as a PTP
- clock. This clock is only useful if you are using KVM guests.
-
- To compile this driver as a module, choose M here: the module
- will be called ptp_kvm.
-
-config PTP_1588_CLOCK_VMCLOCK
- tristate "Virtual machine PTP clock"
- depends on X86_TSC || ARM_ARCH_TIMER
- depends on PTP_1588_CLOCK && ARCH_SUPPORTS_INT128
- default PTP_1588_CLOCK_KVM
- help
- This driver adds support for using a virtual precision clock
- advertised by the hypervisor. This clock is only useful in virtual
- machines where such a device is present.
-
- Unlike the KVM virtual PTP clock, the VMCLOCK device offers support
- for reliable timekeeping even across live migration. So this driver
- is enabled by default whenever the KVM PTP clock is.
-
- To compile this driver as a module, choose M here: the module
- will be called ptp_vmclock.
-
config PTP_1588_CLOCK_IDT82P33
tristate "IDT 82P33xxx PTP clock"
depends on PTP_1588_CLOCK && I2C
@@ -195,18 +171,6 @@ config PTP_1588_CLOCK_MOCK
To compile this driver as a module, choose M here: the module
will be called ptp_mock.
-config PTP_1588_CLOCK_VMW
- tristate "VMware virtual PTP clock"
- depends on ACPI && HYPERVISOR_GUEST && X86
- depends on PTP_1588_CLOCK
- help
- This driver adds support for using VMware virtual precision
- clock device as a PTP clock. This is only useful in virtual
- machines running on VMware virtual infrastructure.
-
- To compile this driver as a module, choose M here: the module
- will be called ptp_vmw.
-
config PTP_1588_CLOCK_OCP
tristate "OpenCompute TimeCard as PTP clock"
depends on PTP_1588_CLOCK
@@ -241,18 +205,6 @@ config PTP_DFL_TOD
To compile this driver as a module, choose M here: the module
will be called ptp_dfl_tod.
-config PTP_S390
- tristate "S390 PTP driver"
- depends on PTP_1588_CLOCK
- depends on S390
- help
- This driver adds support for S390 time steering via the PtP
- interface. This works by adding a in-kernel clock delta value,
- which is always added to time values used in the kernel. The PtP
- driver provides the raw clock value without the delta to
- userspace. That way userspace programs like chrony could steer
- the kernel clock.
-
config PTP_NETC_V4_TIMER
tristate "NXP NETC V4 Timer PTP Driver"
depends on PTP_1588_CLOCK
@@ -263,4 +215,6 @@ config PTP_NETC_V4_TIMER
synchronization. It also supports periodic output signal (e.g. PPS)
and external trigger timestamping.
+source "drivers/ptp/emulated/Kconfig"
+
endmenu
diff --git a/drivers/ptp/Makefile b/drivers/ptp/Makefile
index bdc47e284f14..bcea2d3d4efd 100644
--- a/drivers/ptp/Makefile
+++ b/drivers/ptp/Makefile
@@ -1,24 +1,21 @@
# SPDX-License-Identifier: GPL-2.0
#
-# Makefile for PTP 1588 clock support.
+# Makefile for PTP clock support.
#
+subdir-ccflags-y += -I$(srctree)/drivers/ptp
+
ptp-y := ptp_clock.o ptp_chardev.o ptp_sysfs.o ptp_vclock.o
-ptp_kvm-$(CONFIG_X86) := ptp_kvm_x86.o ptp_kvm_common.o
-ptp_kvm-$(CONFIG_HAVE_ARM_SMCCC) := ptp_kvm_arm.o ptp_kvm_common.o
obj-$(CONFIG_PTP_1588_CLOCK) += ptp.o
obj-$(CONFIG_PTP_1588_CLOCK_DTE) += ptp_dte.o
obj-$(CONFIG_PTP_1588_CLOCK_INES) += ptp_ines.o
obj-$(CONFIG_PTP_1588_CLOCK_PCH) += ptp_pch.o
-obj-$(CONFIG_PTP_1588_CLOCK_KVM) += ptp_kvm.o
-obj-$(CONFIG_PTP_1588_CLOCK_VMCLOCK) += ptp_vmclock.o
obj-$(CONFIG_PTP_1588_CLOCK_QORIQ) += ptp_qoriq.o
obj-$(CONFIG_PTP_1588_CLOCK_IDTCM) += ptp_clockmatrix.o
obj-$(CONFIG_PTP_1588_CLOCK_FC3W) += ptp_fc3.o
obj-$(CONFIG_PTP_1588_CLOCK_IDT82P33) += ptp_idt82p33.o
obj-$(CONFIG_PTP_1588_CLOCK_MOCK) += ptp_mock.o
-obj-$(CONFIG_PTP_1588_CLOCK_VMW) += ptp_vmw.o
obj-$(CONFIG_PTP_1588_CLOCK_OCP) += ptp_ocp.o
obj-$(CONFIG_PTP_DFL_TOD) += ptp_dfl_tod.o
-obj-$(CONFIG_PTP_S390) += ptp_s390.o
obj-$(CONFIG_PTP_NETC_V4_TIMER) += ptp_netc.o
+obj-$(CONFIG_PTP_1588_CLOCK) += emulated/
diff --git a/drivers/ptp/emulated/Kconfig b/drivers/ptp/emulated/Kconfig
new file mode 100644
index 000000000000..3e11f78dfbd8
--- /dev/null
+++ b/drivers/ptp/emulated/Kconfig
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Emulated PTP clock drivers configuration
+#
+
+menu "Emulated PTP clock drivers"
+
+config PTP_1588_CLOCK_KVM
+ tristate "KVM virtual PTP clock"
+ depends on PTP_1588_CLOCK
+ depends on (KVM_GUEST && X86) || (HAVE_ARM_SMCCC_DISCOVERY && ARM_ARCH_TIMER)
+ default y
+ help
+ This driver adds support for using kvm infrastructure as a PTP
+ clock. This clock is only useful if you are using KVM guests.
+
+ To compile this driver as a module, choose M here: the module
+ will be called ptp_kvm.
+
+config PTP_1588_CLOCK_VMCLOCK
+ tristate "Virtual machine PTP clock"
+ depends on X86_TSC || ARM_ARCH_TIMER
+ depends on PTP_1588_CLOCK && ARCH_SUPPORTS_INT128
+ default PTP_1588_CLOCK_KVM
+ help
+ This driver adds support for using a virtual precision clock
+ advertised by the hypervisor. This clock is only useful in virtual
+ machines where such a device is present.
+
+ Unlike the KVM virtual PTP clock, the VMCLOCK device offers support
+ for reliable timekeeping even across live migration. So this driver
+ is enabled by default whenever the KVM PTP clock is.
+
+ To compile this driver as a module, choose M here: the module
+ will be called ptp_vmclock.
+
+config PTP_1588_CLOCK_VMW
+ tristate "VMware virtual PTP clock"
+ depends on ACPI && HYPERVISOR_GUEST && X86
+ depends on PTP_1588_CLOCK
+ help
+ This driver adds support for using VMware virtual precision
+ clock device as a PTP clock. This is only useful in virtual
+ machines running on VMware virtual infrastructure.
+
+ To compile this driver as a module, choose M here: the module
+ will be called ptp_vmw.
+
+config PTP_S390
+ tristate "S390 PTP driver"
+ depends on PTP_1588_CLOCK
+ depends on S390
+ help
+ This driver adds support for S390 time steering via the PtP
+ interface. This works by adding a in-kernel clock delta value,
+ which is always added to time values used in the kernel. The PtP
+ driver provides the raw clock value without the delta to
+ userspace. That way userspace programs like chrony could steer
+ the kernel clock.
+
+endmenu
diff --git a/drivers/ptp/emulated/Makefile b/drivers/ptp/emulated/Makefile
new file mode 100644
index 000000000000..577917df3dc9
--- /dev/null
+++ b/drivers/ptp/emulated/Makefile
@@ -0,0 +1,11 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Makefile for emulated PTP clocks.
+#
+
+ptp_kvm-$(CONFIG_X86) := ptp_kvm_x86.o ptp_kvm_common.o
+ptp_kvm-$(CONFIG_HAVE_ARM_SMCCC) := ptp_kvm_arm.o ptp_kvm_common.o
+obj-$(CONFIG_PTP_1588_CLOCK_KVM) += ptp_kvm.o
+obj-$(CONFIG_PTP_1588_CLOCK_VMCLOCK) += ptp_vmclock.o
+obj-$(CONFIG_PTP_1588_CLOCK_VMW) += ptp_vmw.o
+obj-$(CONFIG_PTP_S390) += ptp_s390.o
diff --git a/drivers/ptp/ptp_kvm_arm.c b/drivers/ptp/emulated/ptp_kvm_arm.c
similarity index 100%
rename from drivers/ptp/ptp_kvm_arm.c
rename to drivers/ptp/emulated/ptp_kvm_arm.c
diff --git a/drivers/ptp/ptp_kvm_common.c b/drivers/ptp/emulated/ptp_kvm_common.c
similarity index 100%
rename from drivers/ptp/ptp_kvm_common.c
rename to drivers/ptp/emulated/ptp_kvm_common.c
diff --git a/drivers/ptp/ptp_kvm_x86.c b/drivers/ptp/emulated/ptp_kvm_x86.c
similarity index 100%
rename from drivers/ptp/ptp_kvm_x86.c
rename to drivers/ptp/emulated/ptp_kvm_x86.c
diff --git a/drivers/ptp/ptp_s390.c b/drivers/ptp/emulated/ptp_s390.c
similarity index 100%
rename from drivers/ptp/ptp_s390.c
rename to drivers/ptp/emulated/ptp_s390.c
diff --git a/drivers/ptp/ptp_vmclock.c b/drivers/ptp/emulated/ptp_vmclock.c
similarity index 100%
rename from drivers/ptp/ptp_vmclock.c
rename to drivers/ptp/emulated/ptp_vmclock.c
diff --git a/drivers/ptp/ptp_vmw.c b/drivers/ptp/emulated/ptp_vmw.c
similarity index 100%
rename from drivers/ptp/ptp_vmw.c
rename to drivers/ptp/emulated/ptp_vmw.c
--
2.43.5
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH v2 2/2] MAINTAINERS: update PTP maintainer entries after directory split
2026-04-07 10:48 [PATCH v2 0/2] ptp: split non-NIC PHC drivers into the clock/timekeeping maintenance domain Wen Gu
2026-04-07 10:48 ` [PATCH v2 1/2] ptp: move emulated/virtual clock drivers into a dedicated subdirectory Wen Gu
@ 2026-04-07 10:48 ` Wen Gu
1 sibling, 0 replies; 3+ messages in thread
From: Wen Gu @ 2026-04-07 10:48 UTC (permalink / raw)
To: tglx, richardcochran, andrew+netdev, davem, edumazet, kuba,
pabeni, linux-kernel, netdev, jstultz, anna-maria, frederic,
daniel.lezcano, sboyd, dwmw2
Cc: vladimir.oltean, wei.fang, xiaoning.wang, jonathan.lemon,
vadim.fedorenko, yangbo.lu, svens, nick.shi, ajay.kaher,
alexey.makhalov, bcm-kernel-feedback-list, linux-fpga, imx,
linux-s390, dust.li, xuanzhuo, mani, imran.shaik, taniya.das
Update MAINTAINERS to match the new drivers/ptp/ directory layout after
moving emulated/virtual PTP clock drivers into a new subdirectory.
Adjust file patterns and per-driver entries to point to their new
locations, and add a dedicated MAINTAINERS entry for the emulated PTP
clock drivers.
Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
---
MAINTAINERS | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index cb48c9ad9ddc..2b5464e38238 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -18335,6 +18335,7 @@ X: Documentation/devicetree/bindings/net/can/
X: Documentation/devicetree/bindings/net/wireless/
X: drivers/net/can/
X: drivers/net/wireless/
+X: drivers/ptp/emulated/
NETWORKING DRIVERS (WIRELESS)
M: Johannes Berg <johannes@sipsolutions.net>
@@ -21243,8 +21244,18 @@ F: Documentation/driver-api/ptp.rst
F: drivers/net/phy/dp83640*
F: drivers/ptp/*
F: include/linux/ptp_cl*
+X: drivers/ptp/emulated/
K: (?:\b|_)ptp(?:\b|_)
+PTP EMULATED CLOCK SUPPORT
+M: David Woodhouse <dwmw2@infradead.org>
+M: Wen Gu <guwen@linux.alibaba.com>
+M: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
+L: linux-kernel@vger.kernel.org
+S: Maintained
+T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
+F: drivers/ptp/emulated/
+
PTP MOCKUP CLOCK SUPPORT
M: Vladimir Oltean <vladimir.oltean@nxp.com>
L: netdev@vger.kernel.org
@@ -21261,10 +21272,10 @@ F: net/ethtool/phc_vclocks.c
PTP VMCLOCK SUPPORT
M: David Woodhouse <dwmw2@infradead.org>
-L: netdev@vger.kernel.org
+L: linux-kernel@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/ptp/amazon,vmclock.yaml
-F: drivers/ptp/ptp_vmclock.c
+F: drivers/ptp/emulated/ptp_vmclock.c
F: include/uapi/linux/vmclock-abi.h
PTRACE SUPPORT
@@ -23323,7 +23334,7 @@ S390 PTP DRIVER
M: Sven Schnelle <svens@linux.ibm.com>
L: linux-s390@vger.kernel.org
S: Supported
-F: drivers/ptp/ptp_s390.c
+F: drivers/ptp/emulated/ptp_s390.c
S390 SCM DRIVER
M: Vineeth Vijayan <vneethv@linux.ibm.com>
@@ -28219,9 +28230,9 @@ M: Nick Shi <nick.shi@broadcom.com>
R: Ajay Kaher <ajay.kaher@broadcom.com>
R: Alexey Makhalov <alexey.makhalov@broadcom.com>
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
-L: netdev@vger.kernel.org
+L: linux-kernel@vger.kernel.org
S: Supported
-F: drivers/ptp/ptp_vmw.c
+F: drivers/ptp/emulated/ptp_vmw.c
VMWARE VMCI DRIVER
M: Bryan Tan <bryan-bt.tan@broadcom.com>
--
2.43.5
^ permalink raw reply related [flat|nested] 3+ messages in thread