Merge "Granite Rapids-D GNSS and DPLL support for timing"

This commit is contained in:
Zuul
2025-09-24 16:44:09 +00:00
committed by Gerrit Code Review
5 changed files with 491 additions and 23 deletions

View File

@@ -62,6 +62,7 @@
.. |DNAT| replace:: :abbr:`DNAT (Destination Network Address Translation)`
.. |DNS| replace:: :abbr:`DNS (Domain Name System)`
.. |DPDK| replace:: :abbr:`DPDK (Data Plane Development Kit)`
.. |DPLL| replace:: :abbr:`DPLL (Digital Phase Locked Loop)`
.. |DN| replace:: :abbr:`DN (Distinguished Name)`
.. |DORA| replace:: :abbr:`DORA (Dell Open RAN Accelerator)`
.. |DRAM| replace:: :abbr:`DRAM (Dynamic Random Access Memory)`
@@ -169,6 +170,8 @@
.. |PMU| replace:: :abbr:`PMU (Performance Monitor Unit)`
.. |PQDN| replace:: :abbr:`PDQN (Partially Qualified Domain Name)`
.. |PQDNs| replace:: :abbr:`PQDNs (Partially Qualified Domain Names)`
.. |PHY| replace:: :abbr:`PHY (Physical Layer)`
.. |PPS| replace:: :abbr:`PPS (Pulse Per Second)`
.. |PRTC| replace:: :abbr:`PRTC (Primary Reference Time Clock)`
.. |PSA| replace:: :abbr:`PSA (Pod Security Admission)`
.. |PSP| replace:: :abbr:`PSP (Pod Security Policy)`
@@ -196,6 +199,7 @@
.. |RST| replace:: :abbr:`rST (reStructuredText)`
.. |RVMC| replace:: :abbr:`RVMC (Redfish Virtual Media Controller)`
.. |RWX| replace:: :abbr:`RWX (Read Write Many)`
.. |RX| replace:: :abbr:`RX (Receiver)`
.. |SA| replace:: :abbr:`SA (Security Association)`
.. |SAs| replace:: :abbr:`SAs (Security Associations)`
.. |SAN| replace:: :abbr:`SAN (Subject Alternative Name)`
@@ -243,6 +247,7 @@
.. |TPM| replace:: :abbr:`TPM (Trusted Platform Module)`
.. |TPMs| replace:: :abbr:`TPMs (Trusted Platform Modules)`
.. |TTL| replace:: :abbr:`TTL (Time-to-live)`
.. |TX| replace:: :abbr:`TX (Transmitter)`
.. |UDP| replace:: :abbr:`UDP (User Datagram Protocol)`
.. |UDS| replace:: :abbr:`UDS (Unix Domain Socket)`
.. |UEFI| replace:: :abbr:`UEFI (Unified Extensible Firmware Interface)`

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@@ -124,15 +124,73 @@ NONE
**Other requirements**
The clock type instance is a special instance used for configuring the |NIC|
control parameters of the Westport Channel or Logan Beach |NIC| clock
interface parameters.
control parameters of the Westport Channel, Logan Beach, E825 (GNR-D) and E830
(Connorsville) |NICs| clock interface parameters.
These parameters can be applied to the interface of a clock instance |PTP|
parameters:
* sma1 input/output
* sma2 input/output
* u.fl1 output
* u.fl2 input
* synce_rclka enabled
* synce_rclkb enabled
- sma1 input/output
- sma2 input/output
- u.fl1 output
- u.fl2 input
- synce_rclka enabled
- synce_rclkb enabled
- sdp0
- output - configure SDP0 pin as output and assign to channel 1
- sdp1
- input - configure SDP1 pin as input and assign to channel 1
- sdp2
- output - configure SDP2 pin as output and assign to channel 2
- sdp3
- input - configure SDP3 pin as input and assign to channel 2
- period_sdp0
- 1pps - enable 1PPS output on SDP0 pin
- 1khz - enable 1 KHz output on SDP0 pin
- 10mhz - enable 10 MHz output on SDP0 pin
- period_sdp2
- 1pps - enable 1PPS output on SDP2 pin
- 1khz - enable 1 KHz output on SDP2 pin
- 10mhz - enable 10 MHz output on SDP2 pin
- tspll_cfg:
- osc_156.25 - use the 156.25 MHz oscillator clock signal as input reference
clock for the |PHC|
- timeref_156.25 - use the 156.25 MHz |DPLL| clock signal (TIME_REF) as input
reference clock for the |PHC|.
- tx_clk
- enet - use the 25 MHz oscillator clock signal as |TX| reference clock for the
|PHY| port
- synce - use the 156.25 MHz |DPLL| clock signal as |TX| reference clock for the
|PHY| port.
- eref0 - use the 156.25 MHz oscillator clock signal as |TX| reference clock
for the |PHY| port

View File

@@ -9,22 +9,18 @@ Example PTP Instance Configurations
:depth: 2
The following sections provide example configuration steps for two |PTP|
The following sections provide example configuration steps for some |PTP|
configurations supported by |prod|.
* The first is a Border Clock setup where an external |PTP| |PTS| is providing
a time source for the system. Only ptp4l and phc2sys are used for this
configuration.
* The second shows how to setup a |PTS| node when a time source is available
via a locally connected GNSS signal. The ``ptp4l``, ``phc2sys``,
``ts2phc`` and clock instance types are used for this configuration.
Simple PTP configuration - T-BC
T-BC - Simple PTP configuration
===============================
Using the topology shown, the following examples provide
configurations for each service type:
This example presents a Border Clock setup where an external |PTP| |PTS|
provides a time source for the system. Only ``ptp4l`` and ``phc2sys`` are used
for this configuration.
Using the topology shown, the following examples provide configurations for
each service type:
.. figure:: figures/ptp-t-bc-configuration.png
:scale: 110 %
@@ -162,11 +158,12 @@ phc2sys
~(keystone_admin)]$ system ptp-instance-apply
Alternate PTP configuration - T-GM
T-GM - Alternate PTP Configuration
==================================
This example shows how to setup a |PTS| node when a time source is available
via a locally connected |GNSS| signal. The ``ptp4l``, ``phc2sys``, ``ts2phc``
and clock instance types are used for this configuration.
Using the topology shown, the following examples provide configurations for
each service type.
@@ -404,3 +401,411 @@ instance:
.. code-block::
~(keystone_admin)]$ system ptp-instance-apply
T-GM - Dual NIC Deployment with GNSS and Timing Modules
=======================================================
This scenario presents an example of |T-GM| setup where the two |NICs| use |GNSS|
as the precise time source. This configuration can be extended to include
additional |NICs|.
.. figure:: figures/t-gm-configuration.PNG
:scale: 110 %
*T-GM Configuration*
clock
-----
#. Create an instance.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add clock0 clock
#. Create an interface to configure NIC1, add parameter(s), and assign the host
interface(s) to it. The SDP1 pin is assigned to channel 1 and will receive
the signal from |DPLL|. Input reference clock for |PHC| will be a 156.25 MHz
signal from |DPLL| (TIME_REF). Use |DPLL| clock signal (SyncE) as |TX|
reference clock for |PHY| port.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add clock0if0 clock0
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if0 sdp1=input
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if0 tspll_cfg=timeref_156.25
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if0 tx_clk=synce
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f0 clk0if0
#. Create an interface to configure the other ports of NIC1. Use |DPLL| clock
signal (SyncE) as |TX| reference clock for |PHY| port.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add clock0if1 clock0
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if1 tx_clk=synce
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f1 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f2 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f3 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f4 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f5 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f6 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f7 clock0if1
#. Create an interface to configure NIC2, add parameter(s), and assign the host
interface(s) to it. SDP1 pin is assigned to channel 1 and will receive the
signal from |DPLL|. For additional |NICs|, run the following commands for each |NIC|.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add clock0if2 clock0
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if2 sdp1=input
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f0 clock0if2
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 clock0
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply
ts2phc
------
#. Create an instance and add parameter(s). This instance will synchronize the
|PHCs| with the external timestamp signal coming from the |GNSS|.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add ts0 ts2phc
~(keystone_admin)]$ system ptp-instance-parameter-add ts0 ts2phc.nmea_serialport=/dev/ttyACM0
.. note::
The |GNSS| serial port and baud rate may vary depending on the platform.
#. Create an interface, add parameter(s), and assign the host interface(s) to
it. The clock signal will be received by the SDP1 pin on channel 1 of each
|NIC|.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add ts0if0 ts0
~(keystone_admin)]$ system ptp-interface-parameter-add ts0if0 ts2phc.channel=1 ts2phc.pin_index=1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f0 ts0if0
#. Assign the host interface(s) of the other |NICs| that will be
synchronized by the |GNSS| timestamps.
.. code-block:: none
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f0 ts0if0
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 ts0
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply
ptp4l
-----
#. Create an instance for NIC1 and add parameter(s). It is recommended to
create a ``ptp4l`` instance for each |PHC|.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add ptp0 ptp4l
~(keystone_admin)]$ system ptp-instance-parameter-add ptp0 domainNumber=24
~(keystone_admin)]$ system ptp-instance-parameter-add ptp0 dataset_comparison=G.8275.x
#. Create an interface, add parameter(s), and assign host interface(s) to it.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add ptp0if0 ptp0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f0 ptp0if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f1 ptp0if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f2 ptp0if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f3 ptp0if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f4 ptp0if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f5 ptp0if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f6 ptp0if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f7 ptp0if0
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 ptp0
#. Repeat the procedure in a similar manner for the additional |NICs|.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add ptp1 ptp4l
~(keystone_admin)]$ system ptp-instance-parameter-add ptp1 domainNumber=24
~(keystone_admin)]$ system ptp-instance-parameter-add ptp1 dataset_comparison=G.8275.x
~(keystone_admin)]$ system ptp-interface-add ptp1if0 ptp1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f0 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f1 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f2 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f3 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f4 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f5 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f6 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f7 ptp1if0
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 ptp1
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply
phc2sys
-------
#. Create an instance and add parameter(s). This instance will synchronize the
system clock with the NIC1 |PHC| via the |PTP| port (-s option).
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add phc0 phc2sys
~(keystone_admin)]$ system ptp-instance-parameter-add phc0 domainNumber=24
~(keystone_admin)]$ system ptp-instance-parameter-add phc0 uds_address=/var/run/ptp4l-ptp0
~(keystone_admin)]$ system ptp-instance-parameter-add phc0 cmdline_opts='-w -s enp1s0f0'
.. note::
For the -s option in the ``cmdline_opts`` parameter, it is necessary to
add the |PTP| port of NIC1. To find the |PTP| port, find the interface
that contains the ``ptp`` folder:
.. code-block:: none
$ ls /sys/class/net/enp1*/device/ptp
/sys/class/net/enp1s0f0/device/ptp:
ptp0
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 phc0
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply
T-BC - Dual NIC Deployment with Timing Module
=============================================
This scenario presents an example of |T-BC| configuration where NIC1 is
synchronized via ``ptp4l`` and then NIC2 is synchronized via a clock signal
generated by NIC1.
This configuration can be extended to include additional |NICs|.
.. figure:: figures/t-bc-configuration.PNG
:scale: 110 %
*T-BC configuration*
.. note::
In a setup where Intel E825 and E830 |NICs| are used, the incoming |PTP| and
SyncE clock sources must be connected to the E825 ports only.
clock
-----
#. Create an instance.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add clock0 clock
#. Create an interface to configure NIC1, add parameter(s), and assign the host
interface(s) to it. The SDP0 pin is assigned to channel 1 and will generate
a 1 |PPS| signal to |DPLL|. Input reference clock for |PHC| will be a 156.25 MHz
signal from |DPLL| (TIME_REF). Use |DPLL| clock signal (SyncE) as |TX| reference
clock for |PHY| port.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add clock0if0 clock0
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if0 sdp0=output period_sdp0=1pps
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if0 tspll_cfg=timeref_156.25
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if0 tx_clk=synce
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f0 clk0if0
#. Create an interface to configure the other ports of NIC1. Use |DPLL| clock
signal (SyncE) as |TX| reference clock for |PHY| port.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add clock0if1 clock0
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if1 tx_clk=synce
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f1 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f2 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f3 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f4 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f5 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f6 clock0if1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp1s0f7 clock0if1
#. Create an interface to configure NIC2, add parameter(s), and assign the host
interface(s) to it. SDP1 pin is assigned to channel 1 and will receive the
signal from |DPLL|. For additional |NICs|, run the following commands for
each |NIC|.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add clock0if2 clock0
~(keystone_admin)]$ system ptp-interface-parameter-add clock0if2 sdp1=input
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f0 clock0if2
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 clock0
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply
ts2phc
------
#. Create an instance and add parameter(s). This instance will synchronize the
|PHCs| with the clock signal generated by NIC1.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add ts0 ts2phc
~(keystone_admin)]$ system ptp-instance-parameter-add ts0 cmdline_opts='-s generic'
#. Create an interface, add parameter(s), and assign the host interface(s) of the
|NICs| that will be synchronized by NIC1 clock signal. The clock signal
will be received by the SDP1 pin on channel 1 of each |NIC|.
.. code-block:: none
~(keystone_admin)]$ system ptp-interface-add ts0if0 ts0
~(keystone_admin)]$ system ptp-interface-parameter-add ts0if0 ts2phc.channel=1 ts2phc.pin_index=1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f0 ts0if0
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 ts0
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply
ptp4l
-----
#. Create an instance for NIC1 and add parameter(s). It is recommended to
create a ``ptp4l`` instance for each |PHC|.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add ptp0 ptp4l
~(keystone_admin)]$ system ptp-instance-parameter-add ptp0 domainNumber=24
~(keystone_admin)]$ system ptp-instance-parameter-add ptp0 dataset_comparison=G.8275.x
#. Create an interface, add parameter(s), and assign the host interface(s) to it.
.. code-block:: none
~(keystone_admin)$ system ptp-interface-add ptp0if0 ptp0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f0 ptp0if0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f1 ptp0if0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f2 ptp0if0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f3 ptp0if0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f4 ptp0if0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f5 ptp0if0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f6 ptp0if0
~(keystone_admin)$ system host-if-ptp-assign controller-0 enp1s0f7 ptp0if0
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 ptp0
#. Repeat the procedure in a similar manner for the additional |NICs|.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add ptp1 ptp4l
~(keystone_admin)]$ system ptp-instance-parameter-add ptp1 domainNumber=24
~(keystone_admin)]$ system ptp-instance-parameter-add ptp1 dataset_comparison=G.8275.x
~(keystone_admin)]$ system ptp-interface-add ptp1if0 ptp1
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f0 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f1 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f2 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f3 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f4 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f5 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f6 ptp1if0
~(keystone_admin)]$ system host-if-ptp-assign controller-0 enp2s0f7 ptp1if0
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 ptp1
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply
phc2sys
-------
#. Create an instance and add parameter(s). This instance will synchronize the
system clock with the NIC1 |PHC| via the |PTP| port (-s option).
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-add phc0 phc2sys
~(keystone_admin)]$ system ptp-instance-parameter-add phc0 domainNumber=24
~(keystone_admin)]$ system ptp-instance-parameter-add phc0 uds_address=/var/run/ptp4l-ptp0
~(keystone_admin)]$ system ptp-instance-parameter-add phc0 cmdline_opts='-w -s enp1s0f0'
#. Assign the instance to a host.
.. code-block:: none
~(keystone_admin)]$ system host-ptp-instance-assign controller-0 phc0
#. Apply the configuration.
.. code-block:: none
~(keystone_admin)]$ system ptp-instance-apply