]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.5-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Mar 2020 09:34:41 +0000 (10:34 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Mar 2020 09:34:41 +0000 (10:34 +0100)
added patches:
alsa-hda-realtek-fix-pop-noise-on-alc225.patch
arm64-smp-fix-crash_smp_send_stop-behaviour.patch
arm64-smp-fix-smp_send_stop-behaviour.patch
btrfs-fix-removal-of-raid-56-1c34-incompat-flags-after-removing-block-group.patch
drm-bridge-dw-hdmi-fix-avi-frame-colorimetry.patch
drm-i915-execlists-track-active-elements-during-dequeue.patch
drm-i915-handle-all-mcr-ranges.patch
int128-fix-__uint128_t-compiler-test-in-kconfig.patch
modpost-get-proper-section-index-by-get_secindex-instead-of-st_shndx.patch
nvmet-tcp-set-msg_more-only-if-we-actually-have-more-to-send.patch
revert-drm-i915-tgl-add-extra-hdc-flush-workaround.patch
staging-greybus-loopback_test-fix-potential-path-truncation.patch
staging-greybus-loopback_test-fix-potential-path-truncations.patch
thunderbolt-fix-error-code-in-tb_port_is_width_supported.patch

15 files changed:
queue-5.5/alsa-hda-realtek-fix-pop-noise-on-alc225.patch [new file with mode: 0644]
queue-5.5/arm64-smp-fix-crash_smp_send_stop-behaviour.patch [new file with mode: 0644]
queue-5.5/arm64-smp-fix-smp_send_stop-behaviour.patch [new file with mode: 0644]
queue-5.5/btrfs-fix-removal-of-raid-56-1c34-incompat-flags-after-removing-block-group.patch [new file with mode: 0644]
queue-5.5/drm-bridge-dw-hdmi-fix-avi-frame-colorimetry.patch [new file with mode: 0644]
queue-5.5/drm-i915-execlists-track-active-elements-during-dequeue.patch [new file with mode: 0644]
queue-5.5/drm-i915-handle-all-mcr-ranges.patch [new file with mode: 0644]
queue-5.5/int128-fix-__uint128_t-compiler-test-in-kconfig.patch [new file with mode: 0644]
queue-5.5/modpost-get-proper-section-index-by-get_secindex-instead-of-st_shndx.patch [new file with mode: 0644]
queue-5.5/nvmet-tcp-set-msg_more-only-if-we-actually-have-more-to-send.patch [new file with mode: 0644]
queue-5.5/revert-drm-i915-tgl-add-extra-hdc-flush-workaround.patch [new file with mode: 0644]
queue-5.5/series
queue-5.5/staging-greybus-loopback_test-fix-potential-path-truncation.patch [new file with mode: 0644]
queue-5.5/staging-greybus-loopback_test-fix-potential-path-truncations.patch [new file with mode: 0644]
queue-5.5/thunderbolt-fix-error-code-in-tb_port_is_width_supported.patch [new file with mode: 0644]

diff --git a/queue-5.5/alsa-hda-realtek-fix-pop-noise-on-alc225.patch b/queue-5.5/alsa-hda-realtek-fix-pop-noise-on-alc225.patch
new file mode 100644 (file)
index 0000000..c1a78ea
--- /dev/null
@@ -0,0 +1,36 @@
+From 3b36b13d5e69d6f51ff1c55d1b404a74646c9757 Mon Sep 17 00:00:00 2001
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Date: Wed, 11 Mar 2020 14:13:28 +0800
+Subject: ALSA: hda/realtek: Fix pop noise on ALC225
+
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+
+commit 3b36b13d5e69d6f51ff1c55d1b404a74646c9757 upstream.
+
+Commit 317d9313925c ("ALSA: hda/realtek - Set default power save node to
+0") makes the ALC225 have pop noise on S3 resume and cold boot.
+
+So partially revert this commit for ALC225 to fix the regression.
+
+Fixes: 317d9313925c ("ALSA: hda/realtek - Set default power save node to 0")
+BugLink: https://bugs.launchpad.net/bugs/1866357
+Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Link: https://lore.kernel.org/r/20200311061328.17614-1-kai.heng.feng@canonical.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -8051,6 +8051,8 @@ static int patch_alc269(struct hda_codec
+               spec->gen.mixer_nid = 0;
+               break;
+       case 0x10ec0225:
++              codec->power_save_node = 1;
++              /* fall through */
+       case 0x10ec0295:
+       case 0x10ec0299:
+               spec->codec_variant = ALC269_TYPE_ALC225;
diff --git a/queue-5.5/arm64-smp-fix-crash_smp_send_stop-behaviour.patch b/queue-5.5/arm64-smp-fix-crash_smp_send_stop-behaviour.patch
new file mode 100644 (file)
index 0000000..0f9a945
--- /dev/null
@@ -0,0 +1,118 @@
+From f50b7dacccbab2b9e3ef18f52a6dcc18ed2050b9 Mon Sep 17 00:00:00 2001
+From: Cristian Marussi <cristian.marussi@arm.com>
+Date: Wed, 11 Mar 2020 17:12:45 +0000
+Subject: arm64: smp: fix crash_smp_send_stop() behaviour
+
+From: Cristian Marussi <cristian.marussi@arm.com>
+
+commit f50b7dacccbab2b9e3ef18f52a6dcc18ed2050b9 upstream.
+
+On a system configured to trigger a crash_kexec() reboot, when only one CPU
+is online and another CPU panics while starting-up, crash_smp_send_stop()
+will fail to send any STOP message to the other already online core,
+resulting in fail to freeze and registers not properly saved.
+
+Moreover even if the proper messages are sent (case CPUs > 2)
+it will similarly fail to account for the booting CPU when executing
+the final stop wait-loop, so potentially resulting in some CPU not
+been waited for shutdown before rebooting.
+
+A tangible effect of this behaviour can be observed when, after a panic
+with kexec enabled and loaded, on the following reboot triggered by kexec,
+the cpu that could not be successfully stopped fails to come back online:
+
+[  362.291022] ------------[ cut here ]------------
+[  362.291525] kernel BUG at arch/arm64/kernel/cpufeature.c:886!
+[  362.292023] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
+[  362.292400] Modules linked in:
+[  362.292970] CPU: 3 PID: 0 Comm: swapper/3 Kdump: loaded Not tainted 5.6.0-rc4-00003-gc780b890948a #105
+[  362.293136] Hardware name: Foundation-v8A (DT)
+[  362.293382] pstate: 200001c5 (nzCv dAIF -PAN -UAO)
+[  362.294063] pc : has_cpuid_feature+0xf0/0x348
+[  362.294177] lr : verify_local_elf_hwcaps+0x84/0xe8
+[  362.294280] sp : ffff800011b1bf60
+[  362.294362] x29: ffff800011b1bf60 x28: 0000000000000000
+[  362.294534] x27: 0000000000000000 x26: 0000000000000000
+[  362.294631] x25: 0000000000000000 x24: ffff80001189a25c
+[  362.294718] x23: 0000000000000000 x22: 0000000000000000
+[  362.294803] x21: ffff8000114aa018 x20: ffff800011156a00
+[  362.294897] x19: ffff800010c944a0 x18: 0000000000000004
+[  362.294987] x17: 0000000000000000 x16: 0000000000000000
+[  362.295073] x15: 00004e53b831ae3c x14: 00004e53b831ae3c
+[  362.295165] x13: 0000000000000384 x12: 0000000000000000
+[  362.295251] x11: 0000000000000000 x10: 00400032b5503510
+[  362.295334] x9 : 0000000000000000 x8 : ffff800010c7e204
+[  362.295426] x7 : 00000000410fd0f0 x6 : 0000000000000001
+[  362.295508] x5 : 00000000410fd0f0 x4 : 0000000000000000
+[  362.295592] x3 : 0000000000000000 x2 : ffff8000100939d8
+[  362.295683] x1 : 0000000000180420 x0 : 0000000000180480
+[  362.296011] Call trace:
+[  362.296257]  has_cpuid_feature+0xf0/0x348
+[  362.296350]  verify_local_elf_hwcaps+0x84/0xe8
+[  362.296424]  check_local_cpu_capabilities+0x44/0x128
+[  362.296497]  secondary_start_kernel+0xf4/0x188
+[  362.296998] Code: 52805001 72a00301 6b01001f 54000ec0 (d4210000)
+[  362.298652] SMP: stopping secondary CPUs
+[  362.300615] Starting crashdump kernel...
+[  362.301168] Bye!
+[    0.000000] Booting Linux on physical CPU 0x0000000003 [0x410fd0f0]
+[    0.000000] Linux version 5.6.0-rc4-00003-gc780b890948a (crimar01@e120937-lin) (gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))) #105 SMP PREEMPT Fri Mar 6 17:00:42 GMT 2020
+[    0.000000] Machine model: Foundation-v8A
+[    0.000000] earlycon: pl11 at MMIO 0x000000001c090000 (options '')
+[    0.000000] printk: bootconsole [pl11] enabled
+.....
+[    0.138024] rcu: Hierarchical SRCU implementation.
+[    0.153472] its@2f020000: unable to locate ITS domain
+[    0.154078] its@2f020000: Unable to locate ITS domain
+[    0.157541] EFI services will not be available.
+[    0.175395] smp: Bringing up secondary CPUs ...
+[    0.209182] psci: failed to boot CPU1 (-22)
+[    0.209377] CPU1: failed to boot: -22
+[    0.274598] Detected PIPT I-cache on CPU2
+[    0.278707] GICv3: CPU2: found redistributor 1 region 0:0x000000002f120000
+[    0.285212] CPU2: Booted secondary processor 0x0000000001 [0x410fd0f0]
+[    0.369053] Detected PIPT I-cache on CPU3
+[    0.372947] GICv3: CPU3: found redistributor 2 region 0:0x000000002f140000
+[    0.378664] CPU3: Booted secondary processor 0x0000000002 [0x410fd0f0]
+[    0.401707] smp: Brought up 1 node, 3 CPUs
+[    0.404057] SMP: Total of 3 processors activated.
+
+Make crash_smp_send_stop() account also for the online status of the
+calling CPU while evaluating how many CPUs are effectively online: this way
+the right number of STOPs is sent and all other stopped-cores's registers
+are properly saved.
+
+Fixes: 78fd584cdec05 ("arm64: kdump: implement machine_crash_shutdown()")
+Acked-by: Mark Rutland <mark.rutland@arm.com>
+Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
+Signed-off-by: Will Deacon <will@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/kernel/smp.c |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/arch/arm64/kernel/smp.c
++++ b/arch/arm64/kernel/smp.c
+@@ -1012,7 +1012,11 @@ void crash_smp_send_stop(void)
+       cpus_stopped = 1;
+-      if (num_online_cpus() == 1) {
++      /*
++       * If this cpu is the only one alive at this point in time, online or
++       * not, there are no stop messages to be sent around, so just back out.
++       */
++      if (num_other_online_cpus() == 0) {
+               sdei_mask_local_cpu();
+               return;
+       }
+@@ -1020,7 +1024,7 @@ void crash_smp_send_stop(void)
+       cpumask_copy(&mask, cpu_online_mask);
+       cpumask_clear_cpu(smp_processor_id(), &mask);
+-      atomic_set(&waiting_for_crash_ipi, num_online_cpus() - 1);
++      atomic_set(&waiting_for_crash_ipi, num_other_online_cpus());
+       pr_crit("SMP: stopping secondary CPUs\n");
+       smp_cross_call(&mask, IPI_CPU_CRASH_STOP);
diff --git a/queue-5.5/arm64-smp-fix-smp_send_stop-behaviour.patch b/queue-5.5/arm64-smp-fix-smp_send_stop-behaviour.patch
new file mode 100644 (file)
index 0000000..01a8346
--- /dev/null
@@ -0,0 +1,115 @@
+From d0bab0c39e32d39a8c5cddca72e5b4a3059fe050 Mon Sep 17 00:00:00 2001
+From: Cristian Marussi <cristian.marussi@arm.com>
+Date: Wed, 11 Mar 2020 17:12:44 +0000
+Subject: arm64: smp: fix smp_send_stop() behaviour
+
+From: Cristian Marussi <cristian.marussi@arm.com>
+
+commit d0bab0c39e32d39a8c5cddca72e5b4a3059fe050 upstream.
+
+On a system with only one CPU online, when another one CPU panics while
+starting-up, smp_send_stop() will fail to send any STOP message to the
+other already online core, resulting in a system still responsive and
+alive at the end of the panic procedure.
+
+[  186.700083] CPU3: shutdown
+[  187.075462] CPU2: shutdown
+[  187.162869] CPU1: shutdown
+[  188.689998] ------------[ cut here ]------------
+[  188.691645] kernel BUG at arch/arm64/kernel/cpufeature.c:886!
+[  188.692079] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
+[  188.692444] Modules linked in:
+[  188.693031] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 5.6.0-rc4-00001-g338d25c35a98 #104
+[  188.693175] Hardware name: Foundation-v8A (DT)
+[  188.693492] pstate: 200001c5 (nzCv dAIF -PAN -UAO)
+[  188.694183] pc : has_cpuid_feature+0xf0/0x348
+[  188.694311] lr : verify_local_elf_hwcaps+0x84/0xe8
+[  188.694410] sp : ffff800011b1bf60
+[  188.694536] x29: ffff800011b1bf60 x28: 0000000000000000
+[  188.694707] x27: 0000000000000000 x26: 0000000000000000
+[  188.694801] x25: 0000000000000000 x24: ffff80001189a25c
+[  188.694905] x23: 0000000000000000 x22: 0000000000000000
+[  188.694996] x21: ffff8000114aa018 x20: ffff800011156a38
+[  188.695089] x19: ffff800010c944a0 x18: 0000000000000004
+[  188.695187] x17: 0000000000000000 x16: 0000000000000000
+[  188.695280] x15: 0000249dbde5431e x14: 0262cbe497efa1fa
+[  188.695371] x13: 0000000000000002 x12: 0000000000002592
+[  188.695472] x11: 0000000000000080 x10: 00400032b5503510
+[  188.695572] x9 : 0000000000000000 x8 : ffff800010c80204
+[  188.695659] x7 : 00000000410fd0f0 x6 : 0000000000000001
+[  188.695750] x5 : 00000000410fd0f0 x4 : 0000000000000000
+[  188.695836] x3 : 0000000000000000 x2 : ffff8000100939d8
+[  188.695919] x1 : 0000000000180420 x0 : 0000000000180480
+[  188.696253] Call trace:
+[  188.696410]  has_cpuid_feature+0xf0/0x348
+[  188.696504]  verify_local_elf_hwcaps+0x84/0xe8
+[  188.696591]  check_local_cpu_capabilities+0x44/0x128
+[  188.696666]  secondary_start_kernel+0xf4/0x188
+[  188.697150] Code: 52805001 72a00301 6b01001f 54000ec0 (d4210000)
+[  188.698639] ---[ end trace 3f12ca47652f7b72 ]---
+[  188.699160] Kernel panic - not syncing: Attempted to kill the idle task!
+[  188.699546] Kernel Offset: disabled
+[  188.699828] CPU features: 0x00004,20c02008
+[  188.700012] Memory Limit: none
+[  188.700538] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---
+
+[root@arch ~]# echo Helo
+Helo
+[root@arch ~]# cat /proc/cpuinfo | grep proce
+processor      : 0
+
+Make smp_send_stop() account also for the online status of the calling CPU
+while evaluating how many CPUs are effectively online: this way, the right
+number of STOPs is sent, so enforcing a proper freeze of the system at the
+end of panic even under the above conditions.
+
+Fixes: 08e875c16a16c ("arm64: SMP support")
+Reported-by: Dave Martin <Dave.Martin@arm.com>
+Acked-by: Mark Rutland <mark.rutland@arm.com>
+Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
+Signed-off-by: Will Deacon <will@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/kernel/smp.c |   17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+--- a/arch/arm64/kernel/smp.c
++++ b/arch/arm64/kernel/smp.c
+@@ -958,11 +958,22 @@ void tick_broadcast(const struct cpumask
+ }
+ #endif
++/*
++ * The number of CPUs online, not counting this CPU (which may not be
++ * fully online and so not counted in num_online_cpus()).
++ */
++static inline unsigned int num_other_online_cpus(void)
++{
++      unsigned int this_cpu_online = cpu_online(smp_processor_id());
++
++      return num_online_cpus() - this_cpu_online;
++}
++
+ void smp_send_stop(void)
+ {
+       unsigned long timeout;
+-      if (num_online_cpus() > 1) {
++      if (num_other_online_cpus()) {
+               cpumask_t mask;
+               cpumask_copy(&mask, cpu_online_mask);
+@@ -975,10 +986,10 @@ void smp_send_stop(void)
+       /* Wait up to one second for other CPUs to stop */
+       timeout = USEC_PER_SEC;
+-      while (num_online_cpus() > 1 && timeout--)
++      while (num_other_online_cpus() && timeout--)
+               udelay(1);
+-      if (num_online_cpus() > 1)
++      if (num_other_online_cpus())
+               pr_warn("SMP: failed to stop secondary CPUs %*pbl\n",
+                       cpumask_pr_args(cpu_online_mask));
diff --git a/queue-5.5/btrfs-fix-removal-of-raid-56-1c34-incompat-flags-after-removing-block-group.patch b/queue-5.5/btrfs-fix-removal-of-raid-56-1c34-incompat-flags-after-removing-block-group.patch
new file mode 100644 (file)
index 0000000..6782d95
--- /dev/null
@@ -0,0 +1,41 @@
+From d8e6fd5c7991033037842b32c9774370a038e902 Mon Sep 17 00:00:00 2001
+From: Filipe Manana <fdmanana@suse.com>
+Date: Fri, 20 Mar 2020 18:43:48 +0000
+Subject: btrfs: fix removal of raid[56|1c34} incompat flags after removing block group
+
+From: Filipe Manana <fdmanana@suse.com>
+
+commit d8e6fd5c7991033037842b32c9774370a038e902 upstream.
+
+We are incorrectly dropping the raid56 and raid1c34 incompat flags when
+there are still raid56 and raid1c34 block groups, not when we do not any
+of those anymore. The logic just got unintentionally broken after adding
+the support for the raid1c34 modes.
+
+Fix this by clear the flags only if we do not have block groups with the
+respective profiles.
+
+Fixes: 9c907446dce3 ("btrfs: drop incompat bit for raid1c34 after last block group is gone")
+Signed-off-by: Filipe Manana <fdmanana@suse.com>
+Reviewed-by: David Sterba <dsterba@suse.com>
+Signed-off-by: David Sterba <dsterba@suse.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/btrfs/block-group.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/btrfs/block-group.c
++++ b/fs/btrfs/block-group.c
+@@ -849,9 +849,9 @@ static void clear_incompat_bg_bits(struc
+                               found_raid1c34 = true;
+                       up_read(&sinfo->groups_sem);
+               }
+-              if (found_raid56)
++              if (!found_raid56)
+                       btrfs_clear_fs_incompat(fs_info, RAID56);
+-              if (found_raid1c34)
++              if (!found_raid1c34)
+                       btrfs_clear_fs_incompat(fs_info, RAID1C34);
+       }
+ }
diff --git a/queue-5.5/drm-bridge-dw-hdmi-fix-avi-frame-colorimetry.patch b/queue-5.5/drm-bridge-dw-hdmi-fix-avi-frame-colorimetry.patch
new file mode 100644 (file)
index 0000000..3e2f3c4
--- /dev/null
@@ -0,0 +1,79 @@
+From e8dca30f7118461d47e1c3510d0e31b277439151 Mon Sep 17 00:00:00 2001
+From: Jernej Skrabec <jernej.skrabec@siol.net>
+Date: Thu, 5 Mar 2020 00:25:09 +0100
+Subject: drm/bridge: dw-hdmi: fix AVI frame colorimetry
+
+From: Jernej Skrabec <jernej.skrabec@siol.net>
+
+commit e8dca30f7118461d47e1c3510d0e31b277439151 upstream.
+
+CTA-861-F explicitly states that for RGB colorspace colorimetry should
+be set to "none". Fix that.
+
+Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Fixes: def23aa7e982 ("drm: bridge: dw-hdmi: Switch to V4L bus format and encodings")
+Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
+Link: https://patchwork.freedesktop.org/patch/msgid/20200304232512.51616-2-jernej.skrabec@siol.net
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/bridge/synopsys/dw-hdmi.c |   46 ++++++++++++++++--------------
+ 1 file changed, 26 insertions(+), 20 deletions(-)
+
+--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
++++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+@@ -1624,28 +1624,34 @@ static void hdmi_config_AVI(struct dw_hd
+               frame.colorspace = HDMI_COLORSPACE_RGB;
+       /* Set up colorimetry */
+-      switch (hdmi->hdmi_data.enc_out_encoding) {
+-      case V4L2_YCBCR_ENC_601:
+-              if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV601)
+-                      frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
+-              else
++      if (!hdmi_bus_fmt_is_rgb(hdmi->hdmi_data.enc_out_bus_format)) {
++              switch (hdmi->hdmi_data.enc_out_encoding) {
++              case V4L2_YCBCR_ENC_601:
++                      if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV601)
++                              frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
++                      else
++                              frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
++                      frame.extended_colorimetry =
++                                      HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
++                      break;
++              case V4L2_YCBCR_ENC_709:
++                      if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV709)
++                              frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
++                      else
++                              frame.colorimetry = HDMI_COLORIMETRY_ITU_709;
++                      frame.extended_colorimetry =
++                                      HDMI_EXTENDED_COLORIMETRY_XV_YCC_709;
++                      break;
++              default: /* Carries no data */
+                       frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
++                      frame.extended_colorimetry =
++                                      HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
++                      break;
++              }
++      } else {
++              frame.colorimetry = HDMI_COLORIMETRY_NONE;
+               frame.extended_colorimetry =
+-                              HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
+-              break;
+-      case V4L2_YCBCR_ENC_709:
+-              if (hdmi->hdmi_data.enc_in_encoding == V4L2_YCBCR_ENC_XV709)
+-                      frame.colorimetry = HDMI_COLORIMETRY_EXTENDED;
+-              else
+-                      frame.colorimetry = HDMI_COLORIMETRY_ITU_709;
+-              frame.extended_colorimetry =
+-                              HDMI_EXTENDED_COLORIMETRY_XV_YCC_709;
+-              break;
+-      default: /* Carries no data */
+-              frame.colorimetry = HDMI_COLORIMETRY_ITU_601;
+-              frame.extended_colorimetry =
+-                              HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
+-              break;
++                      HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
+       }
+       frame.scan_mode = HDMI_SCAN_MODE_NONE;
diff --git a/queue-5.5/drm-i915-execlists-track-active-elements-during-dequeue.patch b/queue-5.5/drm-i915-execlists-track-active-elements-during-dequeue.patch
new file mode 100644 (file)
index 0000000..84954c9
--- /dev/null
@@ -0,0 +1,114 @@
+From 9777d8b2d2a148bc5d46694ec4f2559282fec8cf Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed, 11 Mar 2020 09:26:23 +0000
+Subject: drm/i915/execlists: Track active elements during dequeue
+
+From: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 9777d8b2d2a148bc5d46694ec4f2559282fec8cf upstream.
+
+Record the initial active element we use when building the next ELSP
+submission, so that we can compare against it latter to see if there's
+no change.
+
+Fixes: 44d0a9c05bc0 ("drm/i915/execlists: Skip redundant resubmission")
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20200311092624.10012-2-chris@chris-wilson.co.uk
+(cherry picked from commit 60ef5b7ac6a131f09d287a5f156c878c2c926a30)
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/gt/intel_lrc.c |   32 ++++++++++++--------------------
+ 1 file changed, 12 insertions(+), 20 deletions(-)
+
+--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
++++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
+@@ -1422,17 +1422,6 @@ static void virtual_xfer_breadcrumbs(str
+       spin_unlock(&old->breadcrumbs.irq_lock);
+ }
+-static struct i915_request *
+-last_active(const struct intel_engine_execlists *execlists)
+-{
+-      struct i915_request * const *last = READ_ONCE(execlists->active);
+-
+-      while (*last && i915_request_completed(*last))
+-              last++;
+-
+-      return *last;
+-}
+-
+ #define for_each_waiter(p__, rq__) \
+       list_for_each_entry_lockless(p__, \
+                                    &(rq__)->sched.waiters_list, \
+@@ -1562,11 +1551,9 @@ static void record_preemption(struct int
+       (void)I915_SELFTEST_ONLY(execlists->preempt_hang.count++);
+ }
+-static unsigned long active_preempt_timeout(struct intel_engine_cs *engine)
++static unsigned long active_preempt_timeout(struct intel_engine_cs *engine,
++                                          const struct i915_request *rq)
+ {
+-      struct i915_request *rq;
+-
+-      rq = last_active(&engine->execlists);
+       if (!rq)
+               return 0;
+@@ -1577,13 +1564,14 @@ static unsigned long active_preempt_time
+       return READ_ONCE(engine->props.preempt_timeout_ms);
+ }
+-static void set_preempt_timeout(struct intel_engine_cs *engine)
++static void set_preempt_timeout(struct intel_engine_cs *engine,
++                              const struct i915_request *rq)
+ {
+       if (!intel_engine_has_preempt_reset(engine))
+               return;
+       set_timer_ms(&engine->execlists.preempt,
+-                   active_preempt_timeout(engine));
++                   active_preempt_timeout(engine, rq));
+ }
+ static void execlists_dequeue(struct intel_engine_cs *engine)
+@@ -1591,6 +1579,7 @@ static void execlists_dequeue(struct int
+       struct intel_engine_execlists * const execlists = &engine->execlists;
+       struct i915_request **port = execlists->pending;
+       struct i915_request ** const last_port = port + execlists->port_mask;
++      struct i915_request * const *active;
+       struct i915_request *last;
+       struct rb_node *rb;
+       bool submit = false;
+@@ -1645,7 +1634,10 @@ static void execlists_dequeue(struct int
+        * i.e. we will retrigger preemption following the ack in case
+        * of trouble.
+        */
+-      last = last_active(execlists);
++      active = READ_ONCE(execlists->active);
++      while ((last = *active) && i915_request_completed(last))
++              active++;
++
+       if (last) {
+               if (need_preempt(engine, last, rb)) {
+                       GEM_TRACE("%s: preempting last=%llx:%lld, prio=%d, hint=%d\n",
+@@ -1930,7 +1922,7 @@ done:
+                * Skip if we ended up with exactly the same set of requests,
+                * e.g. trying to timeslice a pair of ordered contexts
+                */
+-              if (!memcmp(execlists->active, execlists->pending,
++              if (!memcmp(active, execlists->pending,
+                           (port - execlists->pending + 1) * sizeof(*port))) {
+                       do
+                               execlists_schedule_out(fetch_and_zero(port));
+@@ -1942,7 +1934,7 @@ done:
+               memset(port + 1, 0, (last_port - port) * sizeof(*port));
+               execlists_submit_ports(engine);
+-              set_preempt_timeout(engine);
++              set_preempt_timeout(engine, *active);
+       } else {
+ skip_submit:
+               ring_set_paused(engine, 0);
diff --git a/queue-5.5/drm-i915-handle-all-mcr-ranges.patch b/queue-5.5/drm-i915-handle-all-mcr-ranges.patch
new file mode 100644 (file)
index 0000000..edfb63d
--- /dev/null
@@ -0,0 +1,66 @@
+From fe8b7085cac3b0db03cdbb26d9309bc27325df0a Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Wed, 11 Mar 2020 09:22:55 -0700
+Subject: drm/i915: Handle all MCR ranges
+
+From: Matt Roper <matthew.d.roper@intel.com>
+
+commit fe8b7085cac3b0db03cdbb26d9309bc27325df0a upstream.
+
+The bspec documents multiple MCR ranges; make sure they're all captured
+by the driver.
+
+Bspec: 13991, 52079
+Fixes: 592a7c5e082e ("drm/i915: Extend non readable mcr range")
+Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20200311162300.1838847-2-matthew.d.roper@intel.com
+Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
+(cherry picked from commit 415d1269975d3fc21c13a6ae8de7b5fe0e6febb1)
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/gt/intel_workarounds.c |   25 ++++++++++++++++++++++---
+ 1 file changed, 22 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
++++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
+@@ -1504,15 +1504,34 @@ err_obj:
+       return ERR_PTR(err);
+ }
++static const struct {
++      u32 start;
++      u32 end;
++} mcr_ranges_gen8[] = {
++      { .start = 0x5500, .end = 0x55ff },
++      { .start = 0x7000, .end = 0x7fff },
++      { .start = 0x9400, .end = 0x97ff },
++      { .start = 0xb000, .end = 0xb3ff },
++      { .start = 0xe000, .end = 0xe7ff },
++      {},
++};
++
+ static bool mcr_range(struct drm_i915_private *i915, u32 offset)
+ {
++      int i;
++
++      if (INTEL_GEN(i915) < 8)
++              return false;
++
+       /*
+-       * Registers in this range are affected by the MCR selector
++       * Registers in these ranges are affected by the MCR selector
+        * which only controls CPU initiated MMIO. Routing does not
+        * work for CS access so we cannot verify them on this path.
+        */
+-      if (INTEL_GEN(i915) >= 8 && (offset >= 0xb000 && offset <= 0xb4ff))
+-              return true;
++      for (i = 0; mcr_ranges_gen8[i].start; i++)
++              if (offset >= mcr_ranges_gen8[i].start &&
++                  offset <= mcr_ranges_gen8[i].end)
++                      return true;
+       return false;
+ }
diff --git a/queue-5.5/int128-fix-__uint128_t-compiler-test-in-kconfig.patch b/queue-5.5/int128-fix-__uint128_t-compiler-test-in-kconfig.patch
new file mode 100644 (file)
index 0000000..51deec3
--- /dev/null
@@ -0,0 +1,49 @@
+From 3a7c733165a4799fa1beb262fe244bfbcdd1c163 Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <masahiroy@kernel.org>
+Date: Tue, 10 Mar 2020 19:12:50 +0900
+Subject: int128: fix __uint128_t compiler test in Kconfig
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+commit 3a7c733165a4799fa1beb262fe244bfbcdd1c163 upstream.
+
+The support for __uint128_t is dependent on the target bit size.
+
+GCC that defaults to the 32-bit can still build the 64-bit kernel
+with -m64 flag passed.
+
+However, $(cc-option,-D__SIZEOF_INT128__=0) is evaluated against the
+default machine bit, which may not match to the kernel it is building.
+
+Theoretically, this could be evaluated separately for 64BIT/32BIT.
+
+  config CC_HAS_INT128
+          bool
+          default !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) if 64BIT
+          default !$(cc-option,$(m32-flag) -D__SIZEOF_INT128__=0)
+
+I simplified it more because the 32-bit compiler is unlikely to support
+__uint128_t.
+
+Fixes: c12d3362a74b ("int128: move __uint128_t compiler test to Kconfig")
+Reported-by: George Spelvin <lkml@sdf.org>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Tested-by: George Spelvin <lkml@sdf.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ init/Kconfig |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -767,8 +767,7 @@ config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
+       bool
+ config CC_HAS_INT128
+-      def_bool y
+-      depends on !$(cc-option,-D__SIZEOF_INT128__=0)
++      def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT
+ #
+ # For architectures that know their GCC __int128 support is sound
diff --git a/queue-5.5/modpost-get-proper-section-index-by-get_secindex-instead-of-st_shndx.patch b/queue-5.5/modpost-get-proper-section-index-by-get_secindex-instead-of-st_shndx.patch
new file mode 100644 (file)
index 0000000..7bfd70d
--- /dev/null
@@ -0,0 +1,39 @@
+From 4b8a5cfb5fd375cf4c7502a18f0096ed2881be27 Mon Sep 17 00:00:00 2001
+From: Xiao Yang <yangx.jy@cn.fujitsu.com>
+Date: Wed, 18 Mar 2020 18:34:16 +0800
+Subject: modpost: Get proper section index by get_secindex() instead of st_shndx
+
+From: Xiao Yang <yangx.jy@cn.fujitsu.com>
+
+commit 4b8a5cfb5fd375cf4c7502a18f0096ed2881be27 upstream.
+
+(uint16_t) st_shndx is limited to 65535(i.e. SHN_XINDEX) so sym_get_data() gets
+wrong section index by st_shndx if requested symbol contains extended section
+index that is more than 65535.  In this case, we need to get proper section index
+by .symtab_shndx section.
+
+Module.symvers generated by building kernel with "-ffunction-sections -fdata-sections"
+shows the issue.
+
+Fixes: 56067812d5b0 ("kbuild: modversions: add infrastructure for emitting relative CRCs")
+Fixes: e84f9fbbece1 ("modpost: refactor namespace_from_kstrtabns() to not hard-code section name")
+Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ scripts/mod/modpost.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/scripts/mod/modpost.c
++++ b/scripts/mod/modpost.c
+@@ -307,7 +307,8 @@ static const char *sec_name(struct elf_i
+ static void *sym_get_data(const struct elf_info *info, const Elf_Sym *sym)
+ {
+-      Elf_Shdr *sechdr = &info->sechdrs[sym->st_shndx];
++      unsigned int secindex = get_secindex(info, sym);
++      Elf_Shdr *sechdr = &info->sechdrs[secindex];
+       unsigned long offset;
+       offset = sym->st_value;
diff --git a/queue-5.5/nvmet-tcp-set-msg_more-only-if-we-actually-have-more-to-send.patch b/queue-5.5/nvmet-tcp-set-msg_more-only-if-we-actually-have-more-to-send.patch
new file mode 100644 (file)
index 0000000..8a59ed6
--- /dev/null
@@ -0,0 +1,70 @@
+From 98fd5c723730f560e5bea919a64ac5b83d45eb72 Mon Sep 17 00:00:00 2001
+From: Sagi Grimberg <sagi@grimberg.me>
+Date: Thu, 12 Mar 2020 16:06:38 -0700
+Subject: nvmet-tcp: set MSG_MORE only if we actually have more to send
+
+From: Sagi Grimberg <sagi@grimberg.me>
+
+commit 98fd5c723730f560e5bea919a64ac5b83d45eb72 upstream.
+
+When we send PDU data, we want to optimize the tcp stack
+operation if we have more data to send. So when we set MSG_MORE
+when:
+- We have more fragments coming in the batch, or
+- We have a more data to send in this PDU
+- We don't have a data digest trailer
+- We optimize with the SUCCESS flag and omit the NVMe completion
+  (used if sq_head pointer update is disabled)
+
+This addresses a regression in QD=1 with SUCCESS flag optimization
+as we unconditionally set MSG_MORE when we didn't actually have
+more data to send.
+
+Fixes: 70583295388a ("nvmet-tcp: implement C2HData SUCCESS optimization")
+Reported-by: Mark Wunderlich <mark.wunderlich@intel.com>
+Tested-by: Mark Wunderlich <mark.wunderlich@intel.com>
+Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
+Signed-off-by: Keith Busch <kbusch@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/nvme/target/tcp.c |   12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+--- a/drivers/nvme/target/tcp.c
++++ b/drivers/nvme/target/tcp.c
+@@ -515,7 +515,7 @@ static int nvmet_try_send_data_pdu(struc
+       return 1;
+ }
+-static int nvmet_try_send_data(struct nvmet_tcp_cmd *cmd)
++static int nvmet_try_send_data(struct nvmet_tcp_cmd *cmd, bool last_in_batch)
+ {
+       struct nvmet_tcp_queue *queue = cmd->queue;
+       int ret;
+@@ -523,9 +523,15 @@ static int nvmet_try_send_data(struct nv
+       while (cmd->cur_sg) {
+               struct page *page = sg_page(cmd->cur_sg);
+               u32 left = cmd->cur_sg->length - cmd->offset;
++              int flags = MSG_DONTWAIT;
++
++              if ((!last_in_batch && cmd->queue->send_list_len) ||
++                  cmd->wbytes_done + left < cmd->req.transfer_len ||
++                  queue->data_digest || !queue->nvme_sq.sqhd_disabled)
++                      flags |= MSG_MORE;
+               ret = kernel_sendpage(cmd->queue->sock, page, cmd->offset,
+-                                      left, MSG_DONTWAIT | MSG_MORE);
++                                      left, flags);
+               if (ret <= 0)
+                       return ret;
+@@ -660,7 +666,7 @@ static int nvmet_tcp_try_send_one(struct
+       }
+       if (cmd->state == NVMET_TCP_SEND_DATA) {
+-              ret = nvmet_try_send_data(cmd);
++              ret = nvmet_try_send_data(cmd, last_in_batch);
+               if (ret <= 0)
+                       goto done_send;
+       }
diff --git a/queue-5.5/revert-drm-i915-tgl-add-extra-hdc-flush-workaround.patch b/queue-5.5/revert-drm-i915-tgl-add-extra-hdc-flush-workaround.patch
new file mode 100644 (file)
index 0000000..15656bb
--- /dev/null
@@ -0,0 +1,59 @@
+From c09f6b4d0883dfb859c1ddcfb04c3260ef310ce0 Mon Sep 17 00:00:00 2001
+From: Caz Yokoyama <caz.yokoyama@intel.com>
+Date: Wed, 4 Mar 2020 14:13:59 -0800
+Subject: Revert "drm/i915/tgl: Add extra hdc flush workaround"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Caz Yokoyama <caz.yokoyama@intel.com>
+
+commit c09f6b4d0883dfb859c1ddcfb04c3260ef310ce0 upstream.
+
+This reverts commit 36a6b5d964d995b536b1925ec42052ee40ba92c4.
+
+The commit takes care Wa_1604544889 which was fixed on a0 stepping based on
+a0 replan. So no SW workaround is required on any stepping now.
+
+Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
+Signed-off-by: Caz Yokoyama <caz.yokoyama@intel.com>
+Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
+Fixes: 36a6b5d964d9 ("drm/i915/tgl: Add extra hdc flush workaround")
+Link: https://patchwork.freedesktop.org/patch/msgid/1c751032ce79c80c5485cae315f1a9904ce07cac.1583359940.git.caz.yokoyama@intel.com
+(cherry picked from commit 175c4d9b3b9a60b4ea0b8cd034011808c6a03b05)
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/gt/intel_lrc.c |   20 --------------------
+ 1 file changed, 20 deletions(-)
+
+--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
++++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
+@@ -3503,26 +3503,6 @@ static int gen12_emit_flush_render(struc
+               *cs++ = preparser_disable(false);
+               intel_ring_advance(request, cs);
+-
+-              /*
+-               * Wa_1604544889:tgl
+-               */
+-              if (IS_TGL_REVID(request->i915, TGL_REVID_A0, TGL_REVID_A0)) {
+-                      flags = 0;
+-                      flags |= PIPE_CONTROL_CS_STALL;
+-                      flags |= PIPE_CONTROL_HDC_PIPELINE_FLUSH;
+-
+-                      flags |= PIPE_CONTROL_STORE_DATA_INDEX;
+-                      flags |= PIPE_CONTROL_QW_WRITE;
+-
+-                      cs = intel_ring_begin(request, 6);
+-                      if (IS_ERR(cs))
+-                              return PTR_ERR(cs);
+-
+-                      cs = gen8_emit_pipe_control(cs, flags,
+-                                                  LRC_PPHWSP_SCRATCH_ADDR);
+-                      intel_ring_advance(request, cs);
+-              }
+       }
+       return 0;
index 2b441cfd85293047ca575b0eee1784fd9ec5255a..add91fd9aaa42df2982970ec60fde1597642a016 100644 (file)
@@ -102,3 +102,17 @@ x86-mm-split-vmalloc_sync_all.patch
 io_uring-null-deref-for-iosqe_-async-drain.patch
 futex-fix-inode-life-time-issue.patch
 futex-unbreak-futex-hashing.patch
+alsa-hda-realtek-fix-pop-noise-on-alc225.patch
+thunderbolt-fix-error-code-in-tb_port_is_width_supported.patch
+arm64-smp-fix-smp_send_stop-behaviour.patch
+arm64-smp-fix-crash_smp_send_stop-behaviour.patch
+nvmet-tcp-set-msg_more-only-if-we-actually-have-more-to-send.patch
+modpost-get-proper-section-index-by-get_secindex-instead-of-st_shndx.patch
+btrfs-fix-removal-of-raid-56-1c34-incompat-flags-after-removing-block-group.patch
+revert-drm-i915-tgl-add-extra-hdc-flush-workaround.patch
+drm-bridge-dw-hdmi-fix-avi-frame-colorimetry.patch
+drm-i915-execlists-track-active-elements-during-dequeue.patch
+drm-i915-handle-all-mcr-ranges.patch
+staging-greybus-loopback_test-fix-potential-path-truncation.patch
+staging-greybus-loopback_test-fix-potential-path-truncations.patch
+int128-fix-__uint128_t-compiler-test-in-kconfig.patch
diff --git a/queue-5.5/staging-greybus-loopback_test-fix-potential-path-truncation.patch b/queue-5.5/staging-greybus-loopback_test-fix-potential-path-truncation.patch
new file mode 100644 (file)
index 0000000..84626a5
--- /dev/null
@@ -0,0 +1,46 @@
+From f16023834863932f95dfad13fac3fc47f77d2f29 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Thu, 12 Mar 2020 12:01:50 +0100
+Subject: staging: greybus: loopback_test: fix potential path truncation
+
+From: Johan Hovold <johan@kernel.org>
+
+commit f16023834863932f95dfad13fac3fc47f77d2f29 upstream.
+
+Newer GCC warns about a possible truncation of a generated sysfs path
+name as we're concatenating a directory path with a file name and
+placing the result in a buffer that is half the size of the maximum
+length of the directory path (which is user controlled).
+
+loopback_test.c: In function 'open_poll_files':
+loopback_test.c:651:31: warning: '%s' directive output may be truncated writing up to 511 bytes into a region of size 255 [-Wformat-truncation=]
+  651 |   snprintf(buf, sizeof(buf), "%s%s", dev->sysfs_entry, "iteration_count");
+      |                               ^~
+loopback_test.c:651:3: note: 'snprintf' output between 16 and 527 bytes into a destination of size 255
+  651 |   snprintf(buf, sizeof(buf), "%s%s", dev->sysfs_entry, "iteration_count");
+      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Fix this by making sure the buffer is large enough the concatenated
+strings.
+
+Fixes: 6b0658f68786 ("greybus: tools: Add tools directory to greybus repo and add loopback")
+Fixes: 9250c0ee2626 ("greybus: Loopback_test: use poll instead of inotify")
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Link: https://lore.kernel.org/r/20200312110151.22028-3-johan@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/staging/greybus/tools/loopback_test.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/greybus/tools/loopback_test.c
++++ b/drivers/staging/greybus/tools/loopback_test.c
+@@ -637,7 +637,7 @@ baddir:
+ static int open_poll_files(struct loopback_test *t)
+ {
+       struct loopback_device *dev;
+-      char buf[MAX_STR_LEN];
++      char buf[MAX_SYSFS_PATH + MAX_STR_LEN];
+       char dummy;
+       int fds_idx = 0;
+       int i;
diff --git a/queue-5.5/staging-greybus-loopback_test-fix-potential-path-truncations.patch b/queue-5.5/staging-greybus-loopback_test-fix-potential-path-truncations.patch
new file mode 100644 (file)
index 0000000..39e32ea
--- /dev/null
@@ -0,0 +1,94 @@
+From ae62cf5eb2792d9a818c2d93728ed92119357017 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan@kernel.org>
+Date: Thu, 12 Mar 2020 12:01:51 +0100
+Subject: staging: greybus: loopback_test: fix potential path truncations
+
+From: Johan Hovold <johan@kernel.org>
+
+commit ae62cf5eb2792d9a818c2d93728ed92119357017 upstream.
+
+Newer GCC warns about possible truncations of two generated path names as
+we're concatenating the configurable sysfs and debugfs path prefixes
+with a filename and placing the results in buffers of the same size as
+the maximum length of the prefixes.
+
+       snprintf(d->name, MAX_STR_LEN, "gb_loopback%u", dev_id);
+
+       snprintf(d->sysfs_entry, MAX_SYSFS_PATH, "%s%s/",
+                t->sysfs_prefix, d->name);
+
+       snprintf(d->debugfs_entry, MAX_SYSFS_PATH, "%sraw_latency_%s",
+                t->debugfs_prefix, d->name);
+
+Fix this by separating the maximum path length from the maximum prefix
+length and reducing the latter enough to fit the generated strings.
+
+Note that we also need to reduce the device-name buffer size as GCC
+isn't smart enough to figure out that we ever only used MAX_STR_LEN
+bytes of it.
+
+Fixes: 6b0658f68786 ("greybus: tools: Add tools directory to greybus repo and add loopback")
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Link: https://lore.kernel.org/r/20200312110151.22028-4-johan@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/staging/greybus/tools/loopback_test.c |   15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+--- a/drivers/staging/greybus/tools/loopback_test.c
++++ b/drivers/staging/greybus/tools/loopback_test.c
+@@ -19,6 +19,7 @@
+ #include <signal.h>
+ #define MAX_NUM_DEVICES 10
++#define MAX_SYSFS_PREFIX 0x80
+ #define MAX_SYSFS_PATH        0x200
+ #define CSV_MAX_LINE  0x1000
+ #define SYSFS_MAX_INT 0x20
+@@ -67,7 +68,7 @@ struct loopback_results {
+ };
+ struct loopback_device {
+-      char name[MAX_SYSFS_PATH];
++      char name[MAX_STR_LEN];
+       char sysfs_entry[MAX_SYSFS_PATH];
+       char debugfs_entry[MAX_SYSFS_PATH];
+       struct loopback_results results;
+@@ -93,8 +94,8 @@ struct loopback_test {
+       int stop_all;
+       int poll_count;
+       char test_name[MAX_STR_LEN];
+-      char sysfs_prefix[MAX_SYSFS_PATH];
+-      char debugfs_prefix[MAX_SYSFS_PATH];
++      char sysfs_prefix[MAX_SYSFS_PREFIX];
++      char debugfs_prefix[MAX_SYSFS_PREFIX];
+       struct timespec poll_timeout;
+       struct loopback_device devices[MAX_NUM_DEVICES];
+       struct loopback_results aggregate_results;
+@@ -907,10 +908,10 @@ int main(int argc, char *argv[])
+                       t.iteration_max = atoi(optarg);
+                       break;
+               case 'S':
+-                      snprintf(t.sysfs_prefix, MAX_SYSFS_PATH, "%s", optarg);
++                      snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg);
+                       break;
+               case 'D':
+-                      snprintf(t.debugfs_prefix, MAX_SYSFS_PATH, "%s", optarg);
++                      snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", optarg);
+                       break;
+               case 'm':
+                       t.mask = atol(optarg);
+@@ -961,10 +962,10 @@ int main(int argc, char *argv[])
+       }
+       if (!strcmp(t.sysfs_prefix, ""))
+-              snprintf(t.sysfs_prefix, MAX_SYSFS_PATH, "%s", sysfs_prefix);
++              snprintf(t.sysfs_prefix, MAX_SYSFS_PREFIX, "%s", sysfs_prefix);
+       if (!strcmp(t.debugfs_prefix, ""))
+-              snprintf(t.debugfs_prefix, MAX_SYSFS_PATH, "%s", debugfs_prefix);
++              snprintf(t.debugfs_prefix, MAX_SYSFS_PREFIX, "%s", debugfs_prefix);
+       ret = find_loopback_devices(&t);
+       if (ret)
diff --git a/queue-5.5/thunderbolt-fix-error-code-in-tb_port_is_width_supported.patch b/queue-5.5/thunderbolt-fix-error-code-in-tb_port_is_width_supported.patch
new file mode 100644 (file)
index 0000000..85525ad
--- /dev/null
@@ -0,0 +1,33 @@
+From e9d0e7511fda92a6511904996dd0aa57b6d7687a Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Tue, 3 Mar 2020 13:17:16 +0300
+Subject: thunderbolt: Fix error code in tb_port_is_width_supported()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit e9d0e7511fda92a6511904996dd0aa57b6d7687a upstream.
+
+This function is type bool, and it's supposed to return true on success.
+Unfortunately, this path takes negative error codes and casts them to
+bool (true) so it's treated as success instead of failure.
+
+Fixes: 91c0c12080d0 ("thunderbolt: Add support for lane bonding")
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/thunderbolt/switch.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/thunderbolt/switch.c
++++ b/drivers/thunderbolt/switch.c
+@@ -848,7 +848,7 @@ static bool tb_port_is_width_supported(s
+       ret = tb_port_read(port, &phy, TB_CFG_PORT,
+                          port->cap_phy + LANE_ADP_CS_0, 1);
+       if (ret)
+-              return ret;
++              return false;
+       widths = (phy & LANE_ADP_CS_0_SUPPORTED_WIDTH_MASK) >>
+               LANE_ADP_CS_0_SUPPORTED_WIDTH_SHIFT;