From 0a9b0570e9266d7d03e17de85f67fb64041dee5d Mon Sep 17 00:00:00 2001 From: Douglas Henrique Koerich Date: Thu, 28 Jul 2022 13:42:53 -0300 Subject: [PATCH] Don't exit when reading of PHC fails with EBUSY Pull in the following upstream commits for both CentOS and Debian: https://sourceforge.net/p/linuxptp/code/ci/7824b13db9533ddebe37cf444d7aaa5d235575d3/ https://sourceforge.net/p/linuxptp/code/ci/270709323a161ff1cb83af511ce50691152c75cf/ https://sourceforge.net/p/linuxptp/code/ci/dadd2593c7beaee9eba5828a7bd8a0b5849dd8bb/ https://sourceforge.net/p/linuxptp/code/ci/e8dc364f9fd5fbdac5d2c5e433f28e9da0028d49/ See the patches themselves for more details. Closes-Bug: 1983022 Signed-off-by: Douglas Henrique Koerich Change-Id: I20f18b17752588b5b031eed88b5e52fb15c830fa --- ...te-package-versioning-for-STX-format.patch | 2 +- ...-for-default_sync-and-BC-performance.patch | 2 +- ...patches-to-fix-phc2sys-exit-with-255.patch | 40 ++++++++ base/linuxptp/centos/meta_patches/PATCH_ORDER | 1 + ...e-when-switching-port-with-same-best.patch | 2 +- ...lock-check-on-best-clock-port-change.patch | 2 +- ...heck-timestamps-from-non-slave-ports.patch | 2 +- .../0004-port-Don-t-renew-raw-transport.patch | 2 +- ...clockcheck-Increase-minimum-interval.patch | 2 +- ...sable-default-port-selection-in-phc2.patch | 2 +- ...hange-sysoff_measure-to-return-errno.patch | 93 +++++++++++++++++++ ...ge-log-level-of-ioctl-error-messages.patch | 66 +++++++++++++ ...-EBUSY-when-probing-supported-ioctls.patch | 52 +++++++++++ ...it-when-reading-of-PHC-fails-with-EB.patch | 83 +++++++++++++++++ ...e-when-switching-port-with-same-best.patch | 2 +- ...lock-check-on-best-clock-port-change.patch | 2 +- ...heck-timestamps-from-non-slave-ports.patch | 2 +- .../0004-port-Don-t-renew-raw-transport.patch | 2 +- ...clockcheck-Increase-minimum-interval.patch | 2 +- ...sable-default-port-selection-in-phc2.patch | 2 +- ...hange-sysoff_measure-to-return-errno.patch | 93 +++++++++++++++++++ ...ge-log-level-of-ioctl-error-messages.patch | 66 +++++++++++++ ...-EBUSY-when-probing-supported-ioctls.patch | 52 +++++++++++ ...it-when-reading-of-PHC-fails-with-EB.patch | 83 +++++++++++++++++ base/linuxptp/debian/patches/series | 4 + 25 files changed, 647 insertions(+), 14 deletions(-) create mode 100644 base/linuxptp/centos/meta_patches/0003-STX-patches-to-fix-phc2sys-exit-with-255.patch create mode 100644 base/linuxptp/centos/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch create mode 100644 base/linuxptp/centos/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch create mode 100644 base/linuxptp/centos/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch create mode 100644 base/linuxptp/centos/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch create mode 100644 base/linuxptp/debian/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch create mode 100644 base/linuxptp/debian/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch create mode 100644 base/linuxptp/debian/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch create mode 100644 base/linuxptp/debian/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch diff --git a/base/linuxptp/centos/meta_patches/0001-Update-package-versioning-for-STX-format.patch b/base/linuxptp/centos/meta_patches/0001-Update-package-versioning-for-STX-format.patch index 485fa38b3..890b38ab3 100644 --- a/base/linuxptp/centos/meta_patches/0001-Update-package-versioning-for-STX-format.patch +++ b/base/linuxptp/centos/meta_patches/0001-Update-package-versioning-for-STX-format.patch @@ -2,7 +2,7 @@ From da79b26cb5749800112c38cb55b1135f78c3433a Mon Sep 17 00:00:00 2001 Message-Id: From: Cole Walker Date: Mon, 21 Jun 2021 15:24:03 -0400 -Subject: [PATCH 1/2] Update package versioning for STX format +Subject: [PATCH 1/3] Update package versioning for STX format Signed-off-by: Jim Somerville --- diff --git a/base/linuxptp/centos/meta_patches/0002-STX-patches-for-default_sync-and-BC-performance.patch b/base/linuxptp/centos/meta_patches/0002-STX-patches-for-default_sync-and-BC-performance.patch index c3e6afd15..ea358372a 100644 --- a/base/linuxptp/centos/meta_patches/0002-STX-patches-for-default_sync-and-BC-performance.patch +++ b/base/linuxptp/centos/meta_patches/0002-STX-patches-for-default_sync-and-BC-performance.patch @@ -4,7 +4,7 @@ In-Reply-To: From: Cole Walker Date: Wed, 23 Jun 2021 13:21:58 -0400 -Subject: [PATCH 2/2] STX patches for default_sync and BC performance +Subject: [PATCH 2/3] STX patches for default_sync and BC performance Signed-off-by: Jim Somerville --- diff --git a/base/linuxptp/centos/meta_patches/0003-STX-patches-to-fix-phc2sys-exit-with-255.patch b/base/linuxptp/centos/meta_patches/0003-STX-patches-to-fix-phc2sys-exit-with-255.patch new file mode 100644 index 000000000..bf4649385 --- /dev/null +++ b/base/linuxptp/centos/meta_patches/0003-STX-patches-to-fix-phc2sys-exit-with-255.patch @@ -0,0 +1,40 @@ +From 0d7ba07f1c39d47b701caf2da0699f4f217d5746 Mon Sep 17 00:00:00 2001 +From: Douglas Henrique Koerich +Date: Mon, 1 Aug 2022 13:48:40 -0400 +Subject: [PATCH 3/3] STX patches to fix phc2sys exit with 255 + +Signed-off-by: Douglas Henrique Koerich +--- + SPECS/linuxptp.spec | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/SPECS/linuxptp.spec b/SPECS/linuxptp.spec +index e4c01a8..1218533 100644 +--- a/SPECS/linuxptp.spec ++++ b/SPECS/linuxptp.spec +@@ -49,6 +49,11 @@ Patch13: 0004-port-Don-t-renew-raw-transport.patch + Patch14: 0005-clockcheck-Increase-minimum-interval.patch + # StarlingX + Patch15: 0006-Add-option-to-disable-default-port-selection-in-phc2.patch ++# StarlingX: Upstream commits to fix phc2sys exit with 255 ++Patch16: 0007-sysoff-Change-sysoff_measure-to-return-errno.patch ++Patch17: 0008-sysoff-Change-log-level-of-ioctl-error-messages.patch ++Patch18: 0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch ++Patch19: 0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch + + BuildRequires: kernel-headers > 4.18.0-87 + BuildRequires: systemd +@@ -78,6 +83,10 @@ Supporting legacy APIs and other platforms is not a goal. + %patch13 -p1 + %patch14 -p1 + %patch15 -p1 ++%patch16 -p1 ++%patch17 -p1 ++%patch18 -p1 ++%patch19 -p1 + mv linuxptp-testsuite-%{testsuite_ver}* testsuite + mv clknetsim-%{clknetsim_ver}* testsuite/clknetsim + +-- +2.29.2 + diff --git a/base/linuxptp/centos/meta_patches/PATCH_ORDER b/base/linuxptp/centos/meta_patches/PATCH_ORDER index 0adb2efc4..33939e789 100644 --- a/base/linuxptp/centos/meta_patches/PATCH_ORDER +++ b/base/linuxptp/centos/meta_patches/PATCH_ORDER @@ -1,2 +1,3 @@ 0001-Update-package-versioning-for-STX-format.patch 0002-STX-patches-for-default_sync-and-BC-performance.patch +0003-STX-patches-to-fix-phc2sys-exit-with-255.patch diff --git a/base/linuxptp/centos/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch b/base/linuxptp/centos/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch index 5d5452b10..eb65964b9 100644 --- a/base/linuxptp/centos/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch +++ b/base/linuxptp/centos/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch @@ -2,7 +2,7 @@ From 0389752e3aecf8d2b2743f16ce1408a58088bea9 Mon Sep 17 00:00:00 2001 Message-Id: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:52 +0200 -Subject: [PATCH 1/6] clock: Reset state when switching port with same best +Subject: [PATCH 1/10] clock: Reset state when switching port with same best clock. When the best port is changed, but the ID of the best clock doesn't diff --git a/base/linuxptp/centos/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch b/base/linuxptp/centos/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch index e37c53295..2a16b5a43 100644 --- a/base/linuxptp/centos/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch +++ b/base/linuxptp/centos/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:53 +0200 -Subject: [PATCH 2/6] clock: Reset clock check on best clock/port change. +Subject: [PATCH 2/10] clock: Reset clock check on best clock/port change. Reset the clock check when the best clock or port changes, together with the other state like current estimated delay and frequency. This avoids diff --git a/base/linuxptp/centos/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch b/base/linuxptp/centos/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch index f3dcde6c6..06ed3bbc0 100644 --- a/base/linuxptp/centos/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch +++ b/base/linuxptp/centos/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:54 +0200 -Subject: [PATCH 3/6] port: Don't check timestamps from non-slave ports. +Subject: [PATCH 3/10] port: Don't check timestamps from non-slave ports. Don't perform the sanity check on receive timestamps from ports in non-slave states to avoid false positives in the jbod mode, where diff --git a/base/linuxptp/centos/patches/0004-port-Don-t-renew-raw-transport.patch b/base/linuxptp/centos/patches/0004-port-Don-t-renew-raw-transport.patch index 0675f3d99..bbbe3b209 100644 --- a/base/linuxptp/centos/patches/0004-port-Don-t-renew-raw-transport.patch +++ b/base/linuxptp/centos/patches/0004-port-Don-t-renew-raw-transport.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:55 +0200 -Subject: [PATCH 4/6] port: Don't renew raw transport. +Subject: [PATCH 4/10] port: Don't renew raw transport. Renewing of the transport on announce/sync timeout is needed in the client-only mode to avoid getting stuck with a broken multicast socket diff --git a/base/linuxptp/centos/patches/0005-clockcheck-Increase-minimum-interval.patch b/base/linuxptp/centos/patches/0005-clockcheck-Increase-minimum-interval.patch index eca0fdc2c..6ddb5c60f 100644 --- a/base/linuxptp/centos/patches/0005-clockcheck-Increase-minimum-interval.patch +++ b/base/linuxptp/centos/patches/0005-clockcheck-Increase-minimum-interval.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630611367.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630611367.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:56 +0200 -Subject: [PATCH 5/6] clockcheck: Increase minimum interval. +Subject: [PATCH 5/10] clockcheck: Increase minimum interval. Increase the minimum check interval to 1 second to measure the frequency offset more accurately and with default configuration make false diff --git a/base/linuxptp/centos/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch b/base/linuxptp/centos/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch index f609cd1a8..5947d95ee 100644 --- a/base/linuxptp/centos/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch +++ b/base/linuxptp/centos/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Cole Walker Date: Wed, 23 Jun 2021 11:14:41 -0400 -Subject: [PATCH 6/6] Add option to disable default port selection in phc2sys +Subject: [PATCH 6/10] Add option to disable default port selection in phc2sys This change serves to address an issue in phc2sys where the local ptp clocks are not synced together properly if the local diff --git a/base/linuxptp/centos/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch b/base/linuxptp/centos/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch new file mode 100644 index 000000000..4d4bee37c --- /dev/null +++ b/base/linuxptp/centos/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch @@ -0,0 +1,93 @@ +From 6428c2628c013c408ec09355ad37eb12fa6bb20f Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:35 +0200 +Subject: [PATCH 7/10] sysoff: Change sysoff_measure() to return errno. + +Return -errno from failed ioctl instead of the SYSOFF_* enum from the +measurement functions to allow the callers to check for specific errors. + +Signed-off-by: Miroslav Lichvar +[commit 7824b13db9533ddebe37cf444d7aaa5d235575d3 upstream] +Signed-off-by: Douglas Henrique Koerich +--- + sysoff.c | 15 ++++++++------- + sysoff.h | 2 +- + 2 files changed, 9 insertions(+), 8 deletions(-) + +diff --git a/sysoff.c b/sysoff.c +index 2743859..5d3b907 100644 +--- a/sysoff.c ++++ b/sysoff.c +@@ -17,6 +17,7 @@ + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ ++#include + #include + #include + #include +@@ -38,11 +39,11 @@ static int sysoff_precise(int fd, int64_t *result, uint64_t *ts) + memset(&pso, 0, sizeof(pso)); + if (ioctl(fd, PTP_SYS_OFFSET_PRECISE, &pso)) { + pr_debug("ioctl PTP_SYS_OFFSET_PRECISE: %m"); +- return SYSOFF_RUN_TIME_MISSING; ++ return -errno; + } + *result = pctns(&pso.sys_realtime) - pctns(&pso.device); + *ts = pctns(&pso.sys_realtime); +- return SYSOFF_PRECISE; ++ return 0; + } + + static int64_t sysoff_estimate(struct ptp_clock_time *pct, int extended, +@@ -98,10 +99,10 @@ static int sysoff_extended(int fd, int n_samples, + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED, &pso)) { + pr_debug("ioctl PTP_SYS_OFFSET_EXTENDED: %m"); +- return SYSOFF_RUN_TIME_MISSING; ++ return -errno; + } + *result = sysoff_estimate(&pso.ts[0][0], 1, n_samples, ts, delay); +- return SYSOFF_EXTENDED; ++ return 0; + } + + static int sysoff_basic(int fd, int n_samples, +@@ -112,10 +113,10 @@ static int sysoff_basic(int fd, int n_samples, + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET, &pso)) { + perror("ioctl PTP_SYS_OFFSET"); +- return SYSOFF_RUN_TIME_MISSING; ++ return -errno; + } + *result = sysoff_estimate(pso.ts, 0, n_samples, ts, delay); +- return SYSOFF_BASIC; ++ return 0; + } + + int sysoff_measure(int fd, int method, int n_samples, +@@ -130,7 +131,7 @@ int sysoff_measure(int fd, int method, int n_samples, + case SYSOFF_BASIC: + return sysoff_basic(fd, n_samples, result, ts, delay); + } +- return SYSOFF_RUN_TIME_MISSING; ++ return -EOPNOTSUPP; + } + + int sysoff_probe(int fd, int n_samples) +diff --git a/sysoff.h b/sysoff.h +index e4de919..5480f8f 100644 +--- a/sysoff.h ++++ b/sysoff.h +@@ -44,7 +44,7 @@ int sysoff_probe(int fd, int n_samples); + * @param result The estimated offset in nanoseconds. + * @param ts The system time corresponding to the 'result'. + * @param delay The delay in reading of the clock in nanoseconds. +- * @return One of the SYSOFF_ enumeration values. ++ * @return Zero on success, negative error code otherwise. + */ + int sysoff_measure(int fd, int method, int n_samples, + int64_t *result, uint64_t *ts, int64_t *delay); +-- +2.29.2 + diff --git a/base/linuxptp/centos/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch b/base/linuxptp/centos/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch new file mode 100644 index 000000000..95392c01f --- /dev/null +++ b/base/linuxptp/centos/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch @@ -0,0 +1,66 @@ +From 38a530d94fc5aa73bde424d05e2e38348e64d7e5 Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:36 +0200 +Subject: [PATCH 8/10] sysoff: Change log level of ioctl error messages. + +Change the log level of ioctl error messages to the error level to make +them visible in default configuration, with the exception of EOPNOTSUPP +which is expected in probing and should stay at the debug level to avoid +confusing users. + +Signed-off-by: Miroslav Lichvar +[commit 270709323a161ff1cb83af511ce50691152c75cf upstream] +Signed-off-by: Douglas Henrique Koerich +--- + sysoff.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/sysoff.c b/sysoff.c +index 5d3b907..a425275 100644 +--- a/sysoff.c ++++ b/sysoff.c +@@ -28,6 +28,14 @@ + + #define NS_PER_SEC 1000000000LL + ++static void print_ioctl_error(const char *name) ++{ ++ if (errno == EOPNOTSUPP) ++ pr_debug("ioctl %s: %s", name, strerror(errno)); ++ else ++ pr_err("ioctl %s: %s", name, strerror(errno)); ++} ++ + static int64_t pctns(struct ptp_clock_time *t) + { + return t->sec * NS_PER_SEC + t->nsec; +@@ -38,7 +46,7 @@ static int sysoff_precise(int fd, int64_t *result, uint64_t *ts) + struct ptp_sys_offset_precise pso; + memset(&pso, 0, sizeof(pso)); + if (ioctl(fd, PTP_SYS_OFFSET_PRECISE, &pso)) { +- pr_debug("ioctl PTP_SYS_OFFSET_PRECISE: %m"); ++ print_ioctl_error("PTP_SYS_OFFSET_PRECISE"); + return -errno; + } + *result = pctns(&pso.sys_realtime) - pctns(&pso.device); +@@ -98,7 +106,7 @@ static int sysoff_extended(int fd, int n_samples, + memset(&pso, 0, sizeof(pso)); + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED, &pso)) { +- pr_debug("ioctl PTP_SYS_OFFSET_EXTENDED: %m"); ++ print_ioctl_error("PTP_SYS_OFFSET_EXTENDED"); + return -errno; + } + *result = sysoff_estimate(&pso.ts[0][0], 1, n_samples, ts, delay); +@@ -112,7 +120,7 @@ static int sysoff_basic(int fd, int n_samples, + memset(&pso, 0, sizeof(pso)); + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET, &pso)) { +- perror("ioctl PTP_SYS_OFFSET"); ++ print_ioctl_error("PTP_SYS_OFFSET"); + return -errno; + } + *result = sysoff_estimate(pso.ts, 0, n_samples, ts, delay); +-- +2.29.2 + diff --git a/base/linuxptp/centos/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch b/base/linuxptp/centos/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch new file mode 100644 index 000000000..e664e3bd9 --- /dev/null +++ b/base/linuxptp/centos/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch @@ -0,0 +1,52 @@ +From 11ae077e31d9957df01aacfa17eea5b5d548b249 Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:37 +0200 +Subject: [PATCH 9/10] sysoff: Retry on EBUSY when probing supported ioctls. + +Handle EBUSY when probing support for a PTP_SYS_OFFSET ioctl. Try each +ioctl up to three times before giving up on it to make the detection +more reliable. + +Signed-off-by: Miroslav Lichvar +[commit dadd2593c7beaee9eba5828a7bd8a0b5849dd8bb upstream] +Signed-off-by: Douglas Henrique Koerich +--- + sysoff.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/sysoff.c b/sysoff.c +index a425275..fc1f7ca 100644 +--- a/sysoff.c ++++ b/sysoff.c +@@ -145,8 +145,8 @@ int sysoff_measure(int fd, int method, int n_samples, + int sysoff_probe(int fd, int n_samples) + { + int64_t junk, delay; ++ int i, j, err; + uint64_t ts; +- int i; + + if (n_samples > PTP_MAX_SAMPLES) { + fprintf(stderr, "warning: %d exceeds kernel max readings %d\n", +@@ -156,9 +156,15 @@ int sysoff_probe(int fd, int n_samples) + } + + for (i = 0; i < SYSOFF_LAST; i++) { +- if (sysoff_measure(fd, i, n_samples, &junk, &ts, &delay) < 0) +- continue; +- return i; ++ for (j = 0; j < 3; j++) { ++ err = sysoff_measure(fd, i, n_samples, &junk, &ts, ++ &delay); ++ if (err == -EBUSY) ++ continue; ++ if (err) ++ break; ++ return i; ++ } + } + + return SYSOFF_RUN_TIME_MISSING; +-- +2.29.2 + diff --git a/base/linuxptp/centos/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch b/base/linuxptp/centos/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch new file mode 100644 index 000000000..6b09fd434 --- /dev/null +++ b/base/linuxptp/centos/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch @@ -0,0 +1,83 @@ +From e4fd6a930213e6f0f009eb070d51b1e14db60d1b Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:38 +0200 +Subject: [PATCH 10/10] phc2sys: Don't exit when reading of PHC fails with EBUSY. + +Reading of the PHC can occasionally fail with some drivers, e.g. the ice +driver returns EBUSY when it fails to get a lock. Continue in the loop +instead of exiting on the error. + +Signed-off-by: Miroslav Lichvar + +[ commit e8dc364f9fd5fbdac5d2c5e433f28e9da0028d49 upstream + We drop two hunks of it, namely the stuff that applies to + clockadj_compare, because they apply to the source code + ahead of baseline currently used by StarlingX ] + +Signed-off-by: Douglas Henrique Koerich +--- + phc2sys.c | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/phc2sys.c b/phc2sys.c +index 44d6872..7959015 100644 +--- a/phc2sys.c ++++ b/phc2sys.c +@@ -722,6 +722,7 @@ static int do_loop(struct phc2sys_private *priv, int subscriptions) + struct clock *clock; + uint64_t ts; + int64_t offset, delay; ++ int err; + + interval.tv_sec = priv->phc_interval; + interval.tv_nsec = (priv->phc_interval - interval.tv_sec) * 1e9; +@@ -765,28 +766,34 @@ static int do_loop(struct phc2sys_private *priv, int subscriptions) + if (clock->clkid == CLOCK_REALTIME && + priv->master->sysoff_method >= 0) { + /* use sysoff */ +- if (sysoff_measure(CLOCKID_TO_FD(priv->master->clkid), +- priv->master->sysoff_method, +- priv->phc_readings, +- &offset, &ts, &delay) < 0) +- return -1; ++ err = sysoff_measure(CLOCKID_TO_FD(priv->master->clkid), ++ priv->master->sysoff_method, ++ priv->phc_readings, ++ &offset, &ts, &delay); + } else if (priv->master->clkid == CLOCK_REALTIME && + clock->sysoff_method >= 0) { + /* use reversed sysoff */ +- if (sysoff_measure(CLOCKID_TO_FD(clock->clkid), +- clock->sysoff_method, +- priv->phc_readings, +- &offset, &ts, &delay) < 0) +- return -1; +- offset = -offset; +- ts += offset; ++ err = sysoff_measure(CLOCKID_TO_FD(clock->clkid), ++ clock->sysoff_method, ++ priv->phc_readings, ++ &offset, &ts, &delay); ++ if (!err) { ++ offset = -offset; ++ ts += offset; ++ } + } else { ++ err = 0; + /* use phc */ + if (!read_phc(priv->master->clkid, clock->clkid, + priv->phc_readings, + &offset, &ts, &delay)) + continue; + } ++ if (err == -EBUSY) ++ continue; ++ if (err) ++ return -1; ++ + update_clock(priv, clock, offset, ts, delay); + } + } +-- +2.29.2 + diff --git a/base/linuxptp/debian/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch b/base/linuxptp/debian/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch index d2a0108ce..f2de9379b 100644 --- a/base/linuxptp/debian/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch +++ b/base/linuxptp/debian/patches/0001-clock-Reset-state-when-switching-port-with-same-best.patch @@ -1,7 +1,7 @@ From 63b43924294da6cb177d0509120b2e957580441c Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:52 +0200 -Subject: [PATCH] clock: Reset state when switching port with same best clock. +Subject: [PATCH 1/10] clock: Reset state when switching port with same best clock. When the best port is changed, but the ID of the best clock doesn't change (e.g. a passive port is activated on link failure), reset the diff --git a/base/linuxptp/debian/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch b/base/linuxptp/debian/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch index e37c53295..2a16b5a43 100644 --- a/base/linuxptp/debian/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch +++ b/base/linuxptp/debian/patches/0002-clock-Reset-clock-check-on-best-clock-port-change.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:53 +0200 -Subject: [PATCH 2/6] clock: Reset clock check on best clock/port change. +Subject: [PATCH 2/10] clock: Reset clock check on best clock/port change. Reset the clock check when the best clock or port changes, together with the other state like current estimated delay and frequency. This avoids diff --git a/base/linuxptp/debian/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch b/base/linuxptp/debian/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch index f3dcde6c6..06ed3bbc0 100644 --- a/base/linuxptp/debian/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch +++ b/base/linuxptp/debian/patches/0003-port-Don-t-check-timestamps-from-non-slave-ports.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:54 +0200 -Subject: [PATCH 3/6] port: Don't check timestamps from non-slave ports. +Subject: [PATCH 3/10] port: Don't check timestamps from non-slave ports. Don't perform the sanity check on receive timestamps from ports in non-slave states to avoid false positives in the jbod mode, where diff --git a/base/linuxptp/debian/patches/0004-port-Don-t-renew-raw-transport.patch b/base/linuxptp/debian/patches/0004-port-Don-t-renew-raw-transport.patch index 0675f3d99..bbbe3b209 100644 --- a/base/linuxptp/debian/patches/0004-port-Don-t-renew-raw-transport.patch +++ b/base/linuxptp/debian/patches/0004-port-Don-t-renew-raw-transport.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:55 +0200 -Subject: [PATCH 4/6] port: Don't renew raw transport. +Subject: [PATCH 4/10] port: Don't renew raw transport. Renewing of the transport on announce/sync timeout is needed in the client-only mode to avoid getting stuck with a broken multicast socket diff --git a/base/linuxptp/debian/patches/0005-clockcheck-Increase-minimum-interval.patch b/base/linuxptp/debian/patches/0005-clockcheck-Increase-minimum-interval.patch index eca0fdc2c..6ddb5c60f 100644 --- a/base/linuxptp/debian/patches/0005-clockcheck-Increase-minimum-interval.patch +++ b/base/linuxptp/debian/patches/0005-clockcheck-Increase-minimum-interval.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630611367.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630611367.git.Jim.Somerville@windriver.com> From: Miroslav Lichvar Date: Mon, 31 May 2021 11:07:56 +0200 -Subject: [PATCH 5/6] clockcheck: Increase minimum interval. +Subject: [PATCH 5/10] clockcheck: Increase minimum interval. Increase the minimum check interval to 1 second to measure the frequency offset more accurately and with default configuration make false diff --git a/base/linuxptp/debian/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch b/base/linuxptp/debian/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch index f609cd1a8..5947d95ee 100644 --- a/base/linuxptp/debian/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch +++ b/base/linuxptp/debian/patches/0006-Add-option-to-disable-default-port-selection-in-phc2.patch @@ -4,7 +4,7 @@ In-Reply-To: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerv References: <0389752e3aecf8d2b2743f16ce1408a58088bea9.1630418391.git.Jim.Somerville@windriver.com> From: Cole Walker Date: Wed, 23 Jun 2021 11:14:41 -0400 -Subject: [PATCH 6/6] Add option to disable default port selection in phc2sys +Subject: [PATCH 6/10] Add option to disable default port selection in phc2sys This change serves to address an issue in phc2sys where the local ptp clocks are not synced together properly if the local diff --git a/base/linuxptp/debian/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch b/base/linuxptp/debian/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch new file mode 100644 index 000000000..4d4bee37c --- /dev/null +++ b/base/linuxptp/debian/patches/0007-sysoff-Change-sysoff_measure-to-return-errno.patch @@ -0,0 +1,93 @@ +From 6428c2628c013c408ec09355ad37eb12fa6bb20f Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:35 +0200 +Subject: [PATCH 7/10] sysoff: Change sysoff_measure() to return errno. + +Return -errno from failed ioctl instead of the SYSOFF_* enum from the +measurement functions to allow the callers to check for specific errors. + +Signed-off-by: Miroslav Lichvar +[commit 7824b13db9533ddebe37cf444d7aaa5d235575d3 upstream] +Signed-off-by: Douglas Henrique Koerich +--- + sysoff.c | 15 ++++++++------- + sysoff.h | 2 +- + 2 files changed, 9 insertions(+), 8 deletions(-) + +diff --git a/sysoff.c b/sysoff.c +index 2743859..5d3b907 100644 +--- a/sysoff.c ++++ b/sysoff.c +@@ -17,6 +17,7 @@ + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ ++#include + #include + #include + #include +@@ -38,11 +39,11 @@ static int sysoff_precise(int fd, int64_t *result, uint64_t *ts) + memset(&pso, 0, sizeof(pso)); + if (ioctl(fd, PTP_SYS_OFFSET_PRECISE, &pso)) { + pr_debug("ioctl PTP_SYS_OFFSET_PRECISE: %m"); +- return SYSOFF_RUN_TIME_MISSING; ++ return -errno; + } + *result = pctns(&pso.sys_realtime) - pctns(&pso.device); + *ts = pctns(&pso.sys_realtime); +- return SYSOFF_PRECISE; ++ return 0; + } + + static int64_t sysoff_estimate(struct ptp_clock_time *pct, int extended, +@@ -98,10 +99,10 @@ static int sysoff_extended(int fd, int n_samples, + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED, &pso)) { + pr_debug("ioctl PTP_SYS_OFFSET_EXTENDED: %m"); +- return SYSOFF_RUN_TIME_MISSING; ++ return -errno; + } + *result = sysoff_estimate(&pso.ts[0][0], 1, n_samples, ts, delay); +- return SYSOFF_EXTENDED; ++ return 0; + } + + static int sysoff_basic(int fd, int n_samples, +@@ -112,10 +113,10 @@ static int sysoff_basic(int fd, int n_samples, + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET, &pso)) { + perror("ioctl PTP_SYS_OFFSET"); +- return SYSOFF_RUN_TIME_MISSING; ++ return -errno; + } + *result = sysoff_estimate(pso.ts, 0, n_samples, ts, delay); +- return SYSOFF_BASIC; ++ return 0; + } + + int sysoff_measure(int fd, int method, int n_samples, +@@ -130,7 +131,7 @@ int sysoff_measure(int fd, int method, int n_samples, + case SYSOFF_BASIC: + return sysoff_basic(fd, n_samples, result, ts, delay); + } +- return SYSOFF_RUN_TIME_MISSING; ++ return -EOPNOTSUPP; + } + + int sysoff_probe(int fd, int n_samples) +diff --git a/sysoff.h b/sysoff.h +index e4de919..5480f8f 100644 +--- a/sysoff.h ++++ b/sysoff.h +@@ -44,7 +44,7 @@ int sysoff_probe(int fd, int n_samples); + * @param result The estimated offset in nanoseconds. + * @param ts The system time corresponding to the 'result'. + * @param delay The delay in reading of the clock in nanoseconds. +- * @return One of the SYSOFF_ enumeration values. ++ * @return Zero on success, negative error code otherwise. + */ + int sysoff_measure(int fd, int method, int n_samples, + int64_t *result, uint64_t *ts, int64_t *delay); +-- +2.29.2 + diff --git a/base/linuxptp/debian/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch b/base/linuxptp/debian/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch new file mode 100644 index 000000000..95392c01f --- /dev/null +++ b/base/linuxptp/debian/patches/0008-sysoff-Change-log-level-of-ioctl-error-messages.patch @@ -0,0 +1,66 @@ +From 38a530d94fc5aa73bde424d05e2e38348e64d7e5 Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:36 +0200 +Subject: [PATCH 8/10] sysoff: Change log level of ioctl error messages. + +Change the log level of ioctl error messages to the error level to make +them visible in default configuration, with the exception of EOPNOTSUPP +which is expected in probing and should stay at the debug level to avoid +confusing users. + +Signed-off-by: Miroslav Lichvar +[commit 270709323a161ff1cb83af511ce50691152c75cf upstream] +Signed-off-by: Douglas Henrique Koerich +--- + sysoff.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/sysoff.c b/sysoff.c +index 5d3b907..a425275 100644 +--- a/sysoff.c ++++ b/sysoff.c +@@ -28,6 +28,14 @@ + + #define NS_PER_SEC 1000000000LL + ++static void print_ioctl_error(const char *name) ++{ ++ if (errno == EOPNOTSUPP) ++ pr_debug("ioctl %s: %s", name, strerror(errno)); ++ else ++ pr_err("ioctl %s: %s", name, strerror(errno)); ++} ++ + static int64_t pctns(struct ptp_clock_time *t) + { + return t->sec * NS_PER_SEC + t->nsec; +@@ -38,7 +46,7 @@ static int sysoff_precise(int fd, int64_t *result, uint64_t *ts) + struct ptp_sys_offset_precise pso; + memset(&pso, 0, sizeof(pso)); + if (ioctl(fd, PTP_SYS_OFFSET_PRECISE, &pso)) { +- pr_debug("ioctl PTP_SYS_OFFSET_PRECISE: %m"); ++ print_ioctl_error("PTP_SYS_OFFSET_PRECISE"); + return -errno; + } + *result = pctns(&pso.sys_realtime) - pctns(&pso.device); +@@ -98,7 +106,7 @@ static int sysoff_extended(int fd, int n_samples, + memset(&pso, 0, sizeof(pso)); + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED, &pso)) { +- pr_debug("ioctl PTP_SYS_OFFSET_EXTENDED: %m"); ++ print_ioctl_error("PTP_SYS_OFFSET_EXTENDED"); + return -errno; + } + *result = sysoff_estimate(&pso.ts[0][0], 1, n_samples, ts, delay); +@@ -112,7 +120,7 @@ static int sysoff_basic(int fd, int n_samples, + memset(&pso, 0, sizeof(pso)); + pso.n_samples = n_samples; + if (ioctl(fd, PTP_SYS_OFFSET, &pso)) { +- perror("ioctl PTP_SYS_OFFSET"); ++ print_ioctl_error("PTP_SYS_OFFSET"); + return -errno; + } + *result = sysoff_estimate(pso.ts, 0, n_samples, ts, delay); +-- +2.29.2 + diff --git a/base/linuxptp/debian/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch b/base/linuxptp/debian/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch new file mode 100644 index 000000000..e664e3bd9 --- /dev/null +++ b/base/linuxptp/debian/patches/0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch @@ -0,0 +1,52 @@ +From 11ae077e31d9957df01aacfa17eea5b5d548b249 Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:37 +0200 +Subject: [PATCH 9/10] sysoff: Retry on EBUSY when probing supported ioctls. + +Handle EBUSY when probing support for a PTP_SYS_OFFSET ioctl. Try each +ioctl up to three times before giving up on it to make the detection +more reliable. + +Signed-off-by: Miroslav Lichvar +[commit dadd2593c7beaee9eba5828a7bd8a0b5849dd8bb upstream] +Signed-off-by: Douglas Henrique Koerich +--- + sysoff.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/sysoff.c b/sysoff.c +index a425275..fc1f7ca 100644 +--- a/sysoff.c ++++ b/sysoff.c +@@ -145,8 +145,8 @@ int sysoff_measure(int fd, int method, int n_samples, + int sysoff_probe(int fd, int n_samples) + { + int64_t junk, delay; ++ int i, j, err; + uint64_t ts; +- int i; + + if (n_samples > PTP_MAX_SAMPLES) { + fprintf(stderr, "warning: %d exceeds kernel max readings %d\n", +@@ -156,9 +156,15 @@ int sysoff_probe(int fd, int n_samples) + } + + for (i = 0; i < SYSOFF_LAST; i++) { +- if (sysoff_measure(fd, i, n_samples, &junk, &ts, &delay) < 0) +- continue; +- return i; ++ for (j = 0; j < 3; j++) { ++ err = sysoff_measure(fd, i, n_samples, &junk, &ts, ++ &delay); ++ if (err == -EBUSY) ++ continue; ++ if (err) ++ break; ++ return i; ++ } + } + + return SYSOFF_RUN_TIME_MISSING; +-- +2.29.2 + diff --git a/base/linuxptp/debian/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch b/base/linuxptp/debian/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch new file mode 100644 index 000000000..6b09fd434 --- /dev/null +++ b/base/linuxptp/debian/patches/0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch @@ -0,0 +1,83 @@ +From e4fd6a930213e6f0f009eb070d51b1e14db60d1b Mon Sep 17 00:00:00 2001 +From: Miroslav Lichvar +Date: Wed, 18 May 2022 11:33:38 +0200 +Subject: [PATCH 10/10] phc2sys: Don't exit when reading of PHC fails with EBUSY. + +Reading of the PHC can occasionally fail with some drivers, e.g. the ice +driver returns EBUSY when it fails to get a lock. Continue in the loop +instead of exiting on the error. + +Signed-off-by: Miroslav Lichvar + +[ commit e8dc364f9fd5fbdac5d2c5e433f28e9da0028d49 upstream + We drop two hunks of it, namely the stuff that applies to + clockadj_compare, because they apply to the source code + ahead of baseline currently used by StarlingX ] + +Signed-off-by: Douglas Henrique Koerich +--- + phc2sys.c | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +diff --git a/phc2sys.c b/phc2sys.c +index 44d6872..7959015 100644 +--- a/phc2sys.c ++++ b/phc2sys.c +@@ -722,6 +722,7 @@ static int do_loop(struct phc2sys_private *priv, int subscriptions) + struct clock *clock; + uint64_t ts; + int64_t offset, delay; ++ int err; + + interval.tv_sec = priv->phc_interval; + interval.tv_nsec = (priv->phc_interval - interval.tv_sec) * 1e9; +@@ -765,28 +766,34 @@ static int do_loop(struct phc2sys_private *priv, int subscriptions) + if (clock->clkid == CLOCK_REALTIME && + priv->master->sysoff_method >= 0) { + /* use sysoff */ +- if (sysoff_measure(CLOCKID_TO_FD(priv->master->clkid), +- priv->master->sysoff_method, +- priv->phc_readings, +- &offset, &ts, &delay) < 0) +- return -1; ++ err = sysoff_measure(CLOCKID_TO_FD(priv->master->clkid), ++ priv->master->sysoff_method, ++ priv->phc_readings, ++ &offset, &ts, &delay); + } else if (priv->master->clkid == CLOCK_REALTIME && + clock->sysoff_method >= 0) { + /* use reversed sysoff */ +- if (sysoff_measure(CLOCKID_TO_FD(clock->clkid), +- clock->sysoff_method, +- priv->phc_readings, +- &offset, &ts, &delay) < 0) +- return -1; +- offset = -offset; +- ts += offset; ++ err = sysoff_measure(CLOCKID_TO_FD(clock->clkid), ++ clock->sysoff_method, ++ priv->phc_readings, ++ &offset, &ts, &delay); ++ if (!err) { ++ offset = -offset; ++ ts += offset; ++ } + } else { ++ err = 0; + /* use phc */ + if (!read_phc(priv->master->clkid, clock->clkid, + priv->phc_readings, + &offset, &ts, &delay)) + continue; + } ++ if (err == -EBUSY) ++ continue; ++ if (err) ++ return -1; ++ + update_clock(priv, clock, offset, ts, delay); + } + } +-- +2.29.2 + diff --git a/base/linuxptp/debian/patches/series b/base/linuxptp/debian/patches/series index a53e97388..8da68686b 100644 --- a/base/linuxptp/debian/patches/series +++ b/base/linuxptp/debian/patches/series @@ -4,3 +4,7 @@ 0004-port-Don-t-renew-raw-transport.patch 0005-clockcheck-Increase-minimum-interval.patch 0006-Add-option-to-disable-default-port-selection-in-phc2.patch +0007-sysoff-Change-sysoff_measure-to-return-errno.patch +0008-sysoff-Change-log-level-of-ioctl-error-messages.patch +0009-sysoff-Retry-on-EBUSY-when-probing-supported-ioctls.patch +0010-phc2sys-Don-t-exit-when-reading-of-PHC-fails-with-EB.patch