From 9832edd84e5bccc00b8c2113b9a5f93a82e876f2 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 14 Jan 2022 06:50:12 +0100 Subject: [PATCH] 4.14-stable patches added patches: drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch staging-wlan-ng-avoid-bitwise-vs-logical-or-warning-in-hfa384x_usb_throttlefn.patch --- ...l-or-warning-in-snb_wm_latency_quirk.patch | 55 +++++++++++++++ queue-4.14/series | 2 + ...or-warning-in-hfa384x_usb_throttlefn.patch | 68 +++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 queue-4.14/drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch create mode 100644 queue-4.14/staging-wlan-ng-avoid-bitwise-vs-logical-or-warning-in-hfa384x_usb_throttlefn.patch diff --git a/queue-4.14/drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch b/queue-4.14/drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch new file mode 100644 index 00000000000..0c1854ef16b --- /dev/null +++ b/queue-4.14/drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch @@ -0,0 +1,55 @@ +From 2e70570656adfe1c5d9a29940faa348d5f132199 Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Thu, 14 Oct 2021 14:19:16 -0700 +Subject: drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Nathan Chancellor + +commit 2e70570656adfe1c5d9a29940faa348d5f132199 upstream. + +A new warning in clang points out a place in this file where a bitwise +OR is being used with boolean types: + +drivers/gpu/drm/i915/intel_pm.c:3066:12: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical] + changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12) | + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This construct is intentional, as it allows every one of the calls to +ilk_increase_wm_latency() to occur (instead of short circuiting with +logical OR) while still caring about the result of each call. + +To make this clearer to the compiler, use the '|=' operator to assign +the result of each ilk_increase_wm_latency() call to changed, which +keeps the meaning of the code the same but makes it obvious that every +one of these calls is expected to happen. + +Link: https://github.com/ClangBuiltLinux/linux/issues/1473 +Reported-by: Nick Desaulniers +Signed-off-by: Nathan Chancellor +Suggested-by: Dávid Bolvanský +Reviewed-by: Nick Desaulniers +Signed-off-by: Ville Syrjälä +Link: https://patchwork.freedesktop.org/patch/msgid/20211014211916.3550122-1-nathan@kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_pm.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_pm.c ++++ b/drivers/gpu/drm/i915/intel_pm.c +@@ -2985,9 +2985,9 @@ static void snb_wm_latency_quirk(struct + * The BIOS provided WM memory latency values are often + * inadequate for high resolution displays. Adjust them. + */ +- changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12) | +- ilk_increase_wm_latency(dev_priv, dev_priv->wm.spr_latency, 12) | +- ilk_increase_wm_latency(dev_priv, dev_priv->wm.cur_latency, 12); ++ changed = ilk_increase_wm_latency(dev_priv, dev_priv->wm.pri_latency, 12); ++ changed |= ilk_increase_wm_latency(dev_priv, dev_priv->wm.spr_latency, 12); ++ changed |= ilk_increase_wm_latency(dev_priv, dev_priv->wm.cur_latency, 12); + + if (!changed) + return; diff --git a/queue-4.14/series b/queue-4.14/series index bc2a0c4c0ee..c625681341f 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -6,3 +6,5 @@ can-gs_usb-fix-use-of-uninitialized-variable-detach-device-on-reception-of-inval can-gs_usb-gs_can_start_xmit-zero-initialize-hf-flags-reserved.patch random-fix-data-race-on-crng_node_pool.patch random-fix-data-race-on-crng-init-time.patch +staging-wlan-ng-avoid-bitwise-vs-logical-or-warning-in-hfa384x_usb_throttlefn.patch +drm-i915-avoid-bitwise-vs-logical-or-warning-in-snb_wm_latency_quirk.patch diff --git a/queue-4.14/staging-wlan-ng-avoid-bitwise-vs-logical-or-warning-in-hfa384x_usb_throttlefn.patch b/queue-4.14/staging-wlan-ng-avoid-bitwise-vs-logical-or-warning-in-hfa384x_usb_throttlefn.patch new file mode 100644 index 00000000000..7af317b4a9d --- /dev/null +++ b/queue-4.14/staging-wlan-ng-avoid-bitwise-vs-logical-or-warning-in-hfa384x_usb_throttlefn.patch @@ -0,0 +1,68 @@ +From 502408a61f4b7eb4713f44bd77f4a48e6cb1b59a Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Thu, 14 Oct 2021 14:57:03 -0700 +Subject: staging: wlan-ng: Avoid bitwise vs logical OR warning in hfa384x_usb_throttlefn() + +From: Nathan Chancellor + +commit 502408a61f4b7eb4713f44bd77f4a48e6cb1b59a upstream. + +A new warning in clang points out a place in this file where a bitwise +OR is being used with boolean expressions: + +In file included from drivers/staging/wlan-ng/prism2usb.c:2: +drivers/staging/wlan-ng/hfa384x_usb.c:3787:7: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical] + ((test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && + ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +drivers/staging/wlan-ng/hfa384x_usb.c:3787:7: note: cast one or both operands to int to silence this warning +1 warning generated. + +The comment explains that short circuiting here is undesirable, as the +calls to test_and_{clear,set}_bit() need to happen for both sides of the +expression. + +Clang's suggestion would work to silence the warning but the readability +of the expression would suffer even more. To clean up the warning and +make the block more readable, use a variable for each side of the +bitwise expression. + +Link: https://github.com/ClangBuiltLinux/linux/issues/1478 +Signed-off-by: Nathan Chancellor +Link: https://lore.kernel.org/r/20211014215703.3705371-1-nathan@kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/wlan-ng/hfa384x_usb.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +--- a/drivers/staging/wlan-ng/hfa384x_usb.c ++++ b/drivers/staging/wlan-ng/hfa384x_usb.c +@@ -3904,18 +3904,18 @@ static void hfa384x_usb_throttlefn(unsig + + spin_lock_irqsave(&hw->ctlxq.lock, flags); + +- /* +- * We need to check BOTH the RX and the TX throttle controls, +- * so we use the bitwise OR instead of the logical OR. +- */ + pr_debug("flags=0x%lx\n", hw->usb_flags); +- if (!hw->wlandev->hwremoved && +- ((test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && +- !test_and_set_bit(WORK_RX_RESUME, &hw->usb_flags)) | +- (test_and_clear_bit(THROTTLE_TX, &hw->usb_flags) && +- !test_and_set_bit(WORK_TX_RESUME, &hw->usb_flags)) +- )) { +- schedule_work(&hw->usb_work); ++ if (!hw->wlandev->hwremoved) { ++ bool rx_throttle = test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && ++ !test_and_set_bit(WORK_RX_RESUME, &hw->usb_flags); ++ bool tx_throttle = test_and_clear_bit(THROTTLE_TX, &hw->usb_flags) && ++ !test_and_set_bit(WORK_TX_RESUME, &hw->usb_flags); ++ /* ++ * We need to check BOTH the RX and the TX throttle controls, ++ * so we use the bitwise OR instead of the logical OR. ++ */ ++ if (rx_throttle | tx_throttle) ++ schedule_work(&hw->usb_work); + } + + spin_unlock_irqrestore(&hw->ctlxq.lock, flags); -- 2.47.2