layerscape: add patches-5.4
[openwrt/staging/wigyori.git] / target / linux / layerscape / patches-5.4 / 701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch
diff --git a/target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch b/target/linux/layerscape/patches-5.4/701-net-0085-staging-fsl_qbman-stop-using-current_kernel_time.patch
new file mode 100644 (file)
index 0000000..71f16e9
--- /dev/null
@@ -0,0 +1,40 @@
+From 91c2f372e3f70ab5b5afff5af60348fd5656d739 Mon Sep 17 00:00:00 2001
+From: Camelia Groza <camelia.groza@nxp.com>
+Date: Wed, 10 Oct 2018 17:30:18 +0300
+Subject: [PATCH] staging/fsl_qbman: stop using current_kernel_time()
+
+The current_kernel_time() call was removed in [1] in order to avoid
+overflows in 2038. Use ktime_get_coarse_real_ts64() instead.
+
+[1] 9765164 ("y2038: remove unused time interfaces")
+
+Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
+---
+ drivers/staging/fsl_qbman/qbman_driver.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/drivers/staging/fsl_qbman/qbman_driver.c
++++ b/drivers/staging/fsl_qbman/qbman_driver.c
+@@ -57,7 +57,10 @@ static __init int qbman_init(void)
+               };
+               struct qm_mcr_queryfq_np np;
+               int err, retry = CONFIG_FSL_QMAN_INIT_TIMEOUT;
+-              struct timespec nowts, diffts, startts = current_kernel_time();
++              struct timespec64 nowts, diffts, startts;
++
++              ktime_get_coarse_real_ts64(&startts);
++
+               /* Loop while querying given fqid succeeds or time out */
+               while (1) {
+                       err = qman_query_fq_np(&fq, &np);
+@@ -68,8 +71,8 @@ static __init int qbman_init(void)
+                               pr_err("QMan: I/O error, continuing anyway\n");
+                               break;
+                       }
+-                      nowts = current_kernel_time();
+-                      diffts = timespec_sub(nowts, startts);
++                      ktime_get_coarse_real_ts64(&nowts);
++                      diffts = timespec64_sub(nowts, startts);
+                       if (diffts.tv_sec > 0) {
+                               if (!retry--) {
+                                       pr_err("QMan: time out, control-plane"