Need more patches to support DPLL and syncE on Bluefield 5.15 kernel

Bug #2065664 reported by Tony Duan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux-bluefield (Ubuntu)
New
Undecided
Unassigned
Jammy
Fix Committed
Undecided
Unassigned

Bug Description

* intro
Synchronous Ethernet, or SyncE, is an ITU-T standard for computer networking that facilitates the transference of clock signals over the Ethernet physical layer. It is used to pass timing from node to node and is particularly important for mobile networks.

The DPLL subsystem in the Linux kernel provides a general interface for configuring devices that use any kind of Digital PLL. This subsystem is designed to manage the clock signal synchronization of a device with an external clock signal.

* Explain the bug(s)

Bug 2053155 already backported some patches from upstream, there are still some more patches need to be backported.

3424040 dpll: indent DPLL option type by a tab
f710345 dpll: sanitize possible null pointer dereference in dpll_pin_parent_pin_set()
040437d dpll: Fix potential msg memleak when genlmsg_put_reply failed
b45ed4c dpll: fix dpll_pin_on_pin_register() for multiple parent pins
55a0add dpll: check that pin is registered in __dpll_pin_unregister()
540c388 dpll: fix register pin with unregistered parent pin
b933eea dpll: fix dpll_xa_ref_*_del() for multiple registrations
0408c3f dpll: spec: use proper enum for pin capabilities attribute
b1368d3 dpll: move all dpll<>netdev helpers to dpll code
9c18583 dpll: fix build failure due to rcu_dereference_check() on unknown type
ba55508 dpll: rely on rcu for netdev_dpll_pin()
56be959 tools: ynl: fix header guards
7a59a12 tools: ynl: allow user to pass enum string instead of scalar value
8472117 dpll: fix possible deadlock during netlink dump operation
7ee732e tools: ynl: include dpll and mptcp_pm in C codegen
71931b4 dpll: extend lock_status_get() op by status error and expose to user
2369137 dpll: extend uapi by lock status error attribute
f57230e dpll: move xa_erase() call in to match dpll_pin_alloc() error path order
5ba255b dpll: fix userspace availability of pins
ec378a6 dpll: fix pin dump crash for rebound module
b2c8844 dpll: fix broken error path in dpll_pin_alloc(..)
b6e349a dpll: expose fractional frequency offset value to user
4e5e5e0 dpll: allocate pin ids in cycle
a690bc9 netlink: add variable-length / auto integers
aaeef43 netlink: allow be16 and be32 types in all uint policy checks
abf0f7e netlink: introduce bigendian integer types
0e036c0 netlink: hide validation union fields from kdoc
b5091c1 netfilter: nft_payload: reject out-of-range attributes via policy
0bf4c03 netlink: introduce NLA_POLICY_MAX_BE

* Brief explanation of fixes

Basic function of DPLL is not full supported. Still need backported relevant patches.

* How to test
$ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \
--dump device-get
ex:
root@bfqa-dell013-roy-oob:~/mlnx-ofa_kernel-4.0# /root/tools-net/ynl/cli.py --spec ~/netlink/specs/dpll.yaml --dump device-get
[{'clock-id': 5237736944144095348,
  'id': 0,
  'lock-status': 'unlocked',
  'mode': 'manual',
  'mode-supported': ['manual'],
  'module-name': 'mlx5_core',
  'type': 'eec'}]

$ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml \
--do pin-get
ex:
root@bfqa-dell013-roy-oob:~# /root/tools-net/ynl/cli.py --spec ~/netlink/specs/dpll.yaml --dump pin-get
[{'capabilities': 4,
  'clock-id': 5237736944144095348,
  'id': 0,
  'module-name': 'mlx5_core',
  'parent-device': [{'direction': 'input',
                     'parent-id': 0,
                     'state': 'disconnected'}],
  'phase-adjust-max': 0,
  'phase-adjust-min': 0,
  'type': 'synce-eth-port'},
 {'capabilities': 4,
  'clock-id': 5237736944144095348,
  'id': 1,
  'module-name': 'mlx5_core',
  'parent-device': [{'direction': 'input',
                     'parent-id': 0,
                     'state': 'disconnected'}],
  'phase-adjust-max': 0,
  'phase-adjust-min': 0,
  'type': 'synce-eth-port'}]

* detect whether your device supports DPLL/SyncE
root@bfqa-dell013-roy-oob:~/linux-bluefield-jammy# mlxreg -d 03:00.0 --reg_name MCAM --get -i "access_reg_group=2,feature_group=0"
Field Name | Data
===========================================
access_reg_group | 0x00000002
feature_group | 0x00000000
mng_access_reg_cap_mask[0] | 0x00000004
mng_access_reg_cap_mask[1] | 0x00600000 --> must see 6

Tony Duan (yifeid)
description: updated
Tony Duan (yifeid)
description: updated
Changed in linux-bluefield (Ubuntu Jammy):
status: New → Fix Committed
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the linux-bluefield/5.15.0-1044.46 kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-jammy-linux-bluefield' to 'verification-done-jammy-linux-bluefield'. If the problem still exists, change the tag 'verification-needed-jammy-linux-bluefield' to 'verification-failed-jammy-linux-bluefield'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: kernel-spammed-jammy-linux-bluefield-v2 verification-needed-jammy-linux-bluefield
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.