
This commit back ports the DPLL related commits from the upstream kernel that are identified by Intel to provide the expected SyncE/GNSS functionality. There are totally 46 back ported commits included the four commits I added are used to resolve the conflicts during back porting. The 0046 patch is cherry picked from kernel-6.9. The 0031-0045 patches are cherry picked from kernel-6.8. The 0001-0030 patches are cherry picked from kernel-6.7. We also change the in-tree ice driver version to 6.6.40-stx.2 from 6.6.40-stx.1. * To fix the conflict of 91e43ca0090b ("ice: fix linking when CONFIG_PTP_1588_CLOCK=n"), we cherry pick 12a5a28b565b ("ice: remove ICE_F_PTP_EXTTS feature flag") and 89776a6a702e ("ice: check netlist before enabling ICE_F_GNSS"). Adjust 12a5a28b565b because 0d1b22367ec2 ("ice: fix pin assignment for E810-T without SMA control") already included the part code of 12a5a28b565b. https://git.yoctoproject.org/linux-yocto/commit/?id=0d1b22367ec2 * Cherry pick 7049fd5df7 ("netlink: specs: remove redundant type keys from attributes in subsets") to fix the the conflict of c3c6ab95c397 ("dpll: spec: add support for pin-dpll signal phase offset/adjust.") * Cherry pick be16574609f1 ("ice: introduce hw->phy_model for handling PTP PHY differences") to fix the confilict of 6db5f2cd9ebb ("ice: dpll:fix output pin capabilities"). Verification: - Build kernel and out of tree modules success for rt and std. - Install success onto a All-in-One lab with rt kernel. - Boot up successfully in the lab. - interfaces are up and pass packets for rt and std. - Check dmesg to see DDP package is loaded successfully and the version is 1.3.36.0 for rt and std, that is same with the OOT ice-1.14.9 driver. - The SyncE/GNSS functionality tests were done by the network team. Story: 2011056 Task: 50797 Change-Id: I715480681c7c43d53b0a0126b34135562e9d02a0 Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
53 lines
2.1 KiB
Diff
53 lines
2.1 KiB
Diff
From d5d13ad1b0bc3df914a17b874d659a0295688ef6 Mon Sep 17 00:00:00 2001
|
|
From: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
|
|
Date: Fri, 9 Feb 2024 22:24:31 +0100
|
|
Subject: [PATCH 43/46] ice: fix dpll periodic work data updates on PF reset
|
|
|
|
Do not allow dpll periodic work function to acquire data from firmware
|
|
if PF reset is in progress. Acquiring data will cause dmesg errors as the
|
|
firmware cannot respond or process the request properly during the reset
|
|
time.
|
|
|
|
Test by looping execution of below step until dmesg error appears:
|
|
- perform PF reset
|
|
$ echo 1 > /sys/class/net/<ice PF>/device/reset
|
|
|
|
Fixes: d7999f5ea64b ("ice: implement dpll interface to control cgu")
|
|
Reviewed-by: Igor Bagnucki <igor.bagnucki@intel.com>
|
|
Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
|
|
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
|
|
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
|
|
(cherry picked from commit 9a8385fe14bcb250a3889e744dc54e9c411d8400)
|
|
Signed-off-by: Jiping Ma <jiping.ma2@windriver.com>
|
|
---
|
|
drivers/net/ethernet/intel/ice/ice_dpll.c | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/net/ethernet/intel/ice/ice_dpll.c b/drivers/net/ethernet/intel/ice/ice_dpll.c
|
|
index 9c8be237c7e5..bcb9b9c13aab 100644
|
|
--- a/drivers/net/ethernet/intel/ice/ice_dpll.c
|
|
+++ b/drivers/net/ethernet/intel/ice/ice_dpll.c
|
|
@@ -1390,8 +1390,10 @@ static void ice_dpll_periodic_work(struct kthread_work *work)
|
|
struct ice_pf *pf = container_of(d, struct ice_pf, dplls);
|
|
struct ice_dpll *de = &pf->dplls.eec;
|
|
struct ice_dpll *dp = &pf->dplls.pps;
|
|
- int ret;
|
|
+ int ret = 0;
|
|
|
|
+ if (ice_is_reset_in_progress(pf->state))
|
|
+ goto resched;
|
|
mutex_lock(&pf->dplls.lock);
|
|
ret = ice_dpll_update_state(pf, de, false);
|
|
if (!ret)
|
|
@@ -1411,6 +1413,7 @@ static void ice_dpll_periodic_work(struct kthread_work *work)
|
|
ice_dpll_notify_changes(de);
|
|
ice_dpll_notify_changes(dp);
|
|
|
|
+resched:
|
|
/* Run twice a second or reschedule if update failed */
|
|
kthread_queue_delayed_work(d->kworker, &d->work,
|
|
ret ? msecs_to_jiffies(10) :
|
|
--
|
|
2.43.0
|
|
|