tpd and pds Depending upon system load, the read pmc call can timeout. When it happens the corresponding data set is reset, allowing the HA algorithm to switch over the current source. Although the read timeout is undesirable, the error message is misleading because the failure is mitigated. Downgrade the error message to notice to disable it in the default log level. Test Plan: PASS: Deploy T-BC with single PTP4L instance - Load system (stress -c 64 -m 5 -t 60) check user.log, phc2sys not showing the error message phc2sys: notice [1200995.017] phc-inst2 pmc agent index 0, timeout reading pmc tpd PASS: Deploy T-BC with single PTP4L instance - Adjust the log to debug level system ptp-instance-parameter-add phc-inst2 logging_level=7 - Load system (stress -c 64 -m 5 -t 60) check user.log, phc2sys eventually shows the error message phc2sys: notice [1215208.628] phc-inst2 pmc agent index 0, timeout reading pmc tpd PASS: Build linuxptp package Closes-Bug: 2132273 Change-Id: I3e05de4006c0e35b725178d9e56eaf8c72d52747 Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
42 lines
1.3 KiB
Diff
42 lines
1.3 KiB
Diff
From: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
Date: Mon, 12 Jun 2023 15:18:36 -0300
|
|
Subject: [PATCH 22/67] pmc_agent: Simplify logic in update method.
|
|
|
|
If the pmc pointer is not set, then there is no need to read the time only
|
|
to later discard the result. This patch simplifies the flow by returning
|
|
early if there is no work to be done.
|
|
|
|
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
|
|
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
|
|
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
|
|
|
|
[commit 956b7eeb8247e3f0658b1205dfd3bea3e1011ee2 upstream]
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
pmc_agent.c | 6 ++++--
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/pmc_agent.c b/pmc_agent.c
|
|
index dd509af..f30f174 100644
|
|
--- a/pmc_agent.c
|
|
+++ b/pmc_agent.c
|
|
@@ -342,14 +342,16 @@ int update_pmc_node(struct pmc_agent *node)
|
|
struct timespec tp;
|
|
uint64_t ts;
|
|
|
|
+ if (!node->pmc) {
|
|
+ return 0;
|
|
+ }
|
|
if (clock_gettime(CLOCK_MONOTONIC, &tp)) {
|
|
pr_err("failed to read clock: %m");
|
|
return -1;
|
|
}
|
|
ts = tp.tv_sec * NS_PER_SEC + tp.tv_nsec;
|
|
|
|
- if (node->pmc &&
|
|
- !(ts > node->pmc_last_update &&
|
|
+ if (!(ts > node->pmc_last_update &&
|
|
ts - node->pmc_last_update < PMC_UPDATE_INTERVAL)) {
|
|
if (node->stay_subscribed) {
|
|
renew_subscription(node, 0);
|