]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.19
authorSasha Levin <sashal@kernel.org>
Fri, 12 May 2023 06:32:39 +0000 (02:32 -0400)
committerSasha Levin <sashal@kernel.org>
Fri, 12 May 2023 06:32:39 +0000 (02:32 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
19 files changed:
queue-4.19/af_packet-don-t-send-zero-byte-data-in-packet_sendms.patch [new file with mode: 0644]
queue-4.19/alsa-caiaq-input-add-error-handling-for-unsupported-.patch [new file with mode: 0644]
queue-4.19/drm-amdgpu-add-a-missing-lock-for-amdgpu_sched.patch [new file with mode: 0644]
queue-4.19/drm-amdgpu-add-amdgpu_gfx_off_ctrl-function.patch [new file with mode: 0644]
queue-4.19/drm-amdgpu-add-command-to-override-the-context-prior.patch [new file with mode: 0644]
queue-4.19/drm-amdgpu-put-enable-gfx-off-feature-to-a-delay-thr.patch [new file with mode: 0644]
queue-4.19/net-bcmgenet-remove-phy_stop-from-bcmgenet_netif_sto.patch [new file with mode: 0644]
queue-4.19/net-dsa-mv88e6xxx-add-missing-watchdog-ops-for-6320-.patch [new file with mode: 0644]
queue-4.19/net-dsa-mv88e6xxx-add-mv88e6321-rsvd2cpu.patch [new file with mode: 0644]
queue-4.19/net-sched-act_mirred-add-carrier-check.patch [new file with mode: 0644]
queue-4.19/perf-map-delete-two-variable-initialisations-before-.patch [new file with mode: 0644]
queue-4.19/perf-symbols-fix-return-incorrect-build_id-size-in-e.patch [new file with mode: 0644]
queue-4.19/perf-vendor-events-power9-remove-utf-8-characters-fr.patch [new file with mode: 0644]
queue-4.19/rxrpc-fix-hard-call-timeout-units.patch [new file with mode: 0644]
queue-4.19/series
queue-4.19/sit-update-dev-needed_headroom-in-ipip6_tunnel_bind_.patch [new file with mode: 0644]
queue-4.19/virtio_net-split-free_unused_bufs.patch [new file with mode: 0644]
queue-4.19/virtio_net-suppress-cpu-stall-when-free_unused_bufs.patch [new file with mode: 0644]
queue-4.19/writeback-fix-call-of-incorrect-macro.patch [new file with mode: 0644]

diff --git a/queue-4.19/af_packet-don-t-send-zero-byte-data-in-packet_sendms.patch b/queue-4.19/af_packet-don-t-send-zero-byte-data-in-packet_sendms.patch
new file mode 100644 (file)
index 0000000..c14660a
--- /dev/null
@@ -0,0 +1,111 @@
+From fa4bc49db0687fda190dafb6b2840c5d8cc6d2e4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 1 May 2023 13:28:57 -0700
+Subject: af_packet: Don't send zero-byte data in packet_sendmsg_spkt().
+
+From: Kuniyuki Iwashima <kuniyu@amazon.com>
+
+[ Upstream commit 6a341729fb31b4c5df9f74f24b4b1c98410c9b87 ]
+
+syzkaller reported a warning below [0].
+
+We can reproduce it by sending 0-byte data from the (AF_PACKET,
+SOCK_PACKET) socket via some devices whose dev->hard_header_len
+is 0.
+
+    struct sockaddr_pkt addr = {
+        .spkt_family = AF_PACKET,
+        .spkt_device = "tun0",
+    };
+    int fd;
+
+    fd = socket(AF_PACKET, SOCK_PACKET, 0);
+    sendto(fd, NULL, 0, 0, (struct sockaddr *)&addr, sizeof(addr));
+
+We have a similar fix for the (AF_PACKET, SOCK_RAW) socket as
+commit dc633700f00f ("net/af_packet: check len when min_header_len
+equals to 0").
+
+Let's add the same test for the SOCK_PACKET socket.
+
+[0]:
+skb_assert_len
+WARNING: CPU: 1 PID: 19945 at include/linux/skbuff.h:2552 skb_assert_len include/linux/skbuff.h:2552 [inline]
+WARNING: CPU: 1 PID: 19945 at include/linux/skbuff.h:2552 __dev_queue_xmit+0x1f26/0x31d0 net/core/dev.c:4159
+Modules linked in:
+CPU: 1 PID: 19945 Comm: syz-executor.0 Not tainted 6.3.0-rc7-02330-gca6270c12e20 #1
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
+RIP: 0010:skb_assert_len include/linux/skbuff.h:2552 [inline]
+RIP: 0010:__dev_queue_xmit+0x1f26/0x31d0 net/core/dev.c:4159
+Code: 89 de e8 1d a2 85 fd 84 db 75 21 e8 64 a9 85 fd 48 c7 c6 80 2a 1f 86 48 c7 c7 c0 06 1f 86 c6 05 23 cf 27 04 01 e8 fa ee 56 fd <0f> 0b e8 43 a9 85 fd 0f b6 1d 0f cf 27 04 31 ff 89 de e8 e3 a1 85
+RSP: 0018:ffff8880217af6e0 EFLAGS: 00010282
+RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffc90001133000
+RDX: 0000000000040000 RSI: ffffffff81186922 RDI: 0000000000000001
+RBP: ffff8880217af8b0 R08: 0000000000000001 R09: 0000000000000000
+R10: 0000000000000001 R11: 0000000000000001 R12: ffff888030045640
+R13: ffff8880300456b0 R14: ffff888030045650 R15: ffff888030045718
+FS:  00007fc5864da640(0000) GS:ffff88806cd00000(0000) knlGS:0000000000000000
+CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 0000000020005740 CR3: 000000003f856003 CR4: 0000000000770ee0
+DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
+PKRU: 55555554
+Call Trace:
+ <TASK>
+ dev_queue_xmit include/linux/netdevice.h:3085 [inline]
+ packet_sendmsg_spkt+0xc4b/0x1230 net/packet/af_packet.c:2066
+ sock_sendmsg_nosec net/socket.c:724 [inline]
+ sock_sendmsg+0x1b4/0x200 net/socket.c:747
+ ____sys_sendmsg+0x331/0x970 net/socket.c:2503
+ ___sys_sendmsg+0x11d/0x1c0 net/socket.c:2557
+ __sys_sendmmsg+0x18c/0x430 net/socket.c:2643
+ __do_sys_sendmmsg net/socket.c:2672 [inline]
+ __se_sys_sendmmsg net/socket.c:2669 [inline]
+ __x64_sys_sendmmsg+0x9c/0x100 net/socket.c:2669
+ do_syscall_x64 arch/x86/entry/common.c:50 [inline]
+ do_syscall_64+0x3c/0x90 arch/x86/entry/common.c:80
+ entry_SYSCALL_64_after_hwframe+0x72/0xdc
+RIP: 0033:0x7fc58791de5d
+Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 73 9f 1b 00 f7 d8 64 89 01 48
+RSP: 002b:00007fc5864d9cc8 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
+RAX: ffffffffffffffda RBX: 00000000004bbf80 RCX: 00007fc58791de5d
+RDX: 0000000000000001 RSI: 0000000020005740 RDI: 0000000000000004
+RBP: 00000000004bbf80 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
+R13: 000000000000000b R14: 00007fc58797e530 R15: 0000000000000000
+ </TASK>
+---[ end trace 0000000000000000 ]---
+skb len=0 headroom=16 headlen=0 tailroom=304
+mac=(16,0) net=(16,-1) trans=-1
+shinfo(txflags=0 nr_frags=0 gso(size=0 type=0 segs=0))
+csum(0x0 ip_summed=0 complete_sw=0 valid=0 level=0)
+hash(0x0 sw=0 l4=0) proto=0x0000 pkttype=0 iif=0
+dev name=sit0 feat=0x00000006401d7869
+sk family=17 type=10 proto=0
+
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Reported-by: syzbot <syzkaller@googlegroups.com>
+Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
+Reviewed-by: Willem de Bruijn <willemb@google.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/packet/af_packet.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
+index 60986c209311f..aa12bee4133a9 100644
+--- a/net/packet/af_packet.c
++++ b/net/packet/af_packet.c
+@@ -1955,7 +1955,7 @@ static int packet_sendmsg_spkt(struct socket *sock, struct msghdr *msg,
+               goto retry;
+       }
+-      if (!dev_validate_header(dev, skb->data, len)) {
++      if (!dev_validate_header(dev, skb->data, len) || !skb->len) {
+               err = -EINVAL;
+               goto out_unlock;
+       }
+-- 
+2.39.2
+
diff --git a/queue-4.19/alsa-caiaq-input-add-error-handling-for-unsupported-.patch b/queue-4.19/alsa-caiaq-input-add-error-handling-for-unsupported-.patch
new file mode 100644 (file)
index 0000000..929b22b
--- /dev/null
@@ -0,0 +1,44 @@
+From dd2cdf830506db9a37402bde8aafe08593eedf66 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 4 May 2023 14:50:53 +0800
+Subject: ALSA: caiaq: input: Add error handling for unsupported input methods
+ in `snd_usb_caiaq_input_init`
+
+From: Ruliang Lin <u202112092@hust.edu.cn>
+
+[ Upstream commit 0d727e1856ef22dd9337199430258cb64cbbc658 ]
+
+Smatch complains that:
+snd_usb_caiaq_input_init() warn: missing error code 'ret'
+
+This patch adds a new case to handle the situation where the
+device does not support any input methods in the
+`snd_usb_caiaq_input_init` function. It returns an `-EINVAL` error code
+to indicate that no input methods are supported on the device.
+
+Fixes: 523f1dce3743 ("[ALSA] Add Native Instrument usb audio device support")
+Signed-off-by: Ruliang Lin <u202112092@hust.edu.cn>
+Reviewed-by: Dongliang Mu <dzm91@hust.edu.cn>
+Acked-by: Daniel Mack <daniel@zonque.org>
+Link: https://lore.kernel.org/r/20230504065054.3309-1-u202112092@hust.edu.cn
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/usb/caiaq/input.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/usb/caiaq/input.c b/sound/usb/caiaq/input.c
+index e883659ea6e77..19951e1dbbb01 100644
+--- a/sound/usb/caiaq/input.c
++++ b/sound/usb/caiaq/input.c
+@@ -817,6 +817,7 @@ int snd_usb_caiaq_input_init(struct snd_usb_caiaqdev *cdev)
+       default:
+               /* no input methods supported on this device */
++              ret = -EINVAL;
+               goto exit_free_idev;
+       }
+-- 
+2.39.2
+
diff --git a/queue-4.19/drm-amdgpu-add-a-missing-lock-for-amdgpu_sched.patch b/queue-4.19/drm-amdgpu-add-a-missing-lock-for-amdgpu_sched.patch
new file mode 100644 (file)
index 0000000..ee6cdbb
--- /dev/null
@@ -0,0 +1,54 @@
+From 9b724df6607367aee71beeb252f1c14f60ca4a19 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 26 Apr 2023 15:54:55 -0700
+Subject: drm/amdgpu: add a missing lock for AMDGPU_SCHED
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Chia-I Wu <olvaffe@gmail.com>
+
+[ Upstream commit 2397e3d8d2e120355201a8310b61929f5a8bd2c0 ]
+
+mgr->ctx_handles should be protected by mgr->lock.
+
+v2: improve commit message
+v3: add a Fixes tag
+
+Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Fixes: 52c6a62c64fa ("drm/amdgpu: add interface for editing a foreign process's priority v3")
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+index 0767a93e4d913..018f06f154b88 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+@@ -55,6 +55,7 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,
+ {
+       struct file *filp = fget(fd);
+       struct amdgpu_fpriv *fpriv;
++      struct amdgpu_ctx_mgr *mgr;
+       struct amdgpu_ctx *ctx;
+       uint32_t id;
+       int r;
+@@ -68,8 +69,11 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,
+               return r;
+       }
+-      idr_for_each_entry(&fpriv->ctx_mgr.ctx_handles, ctx, id)
++      mgr = &fpriv->ctx_mgr;
++      mutex_lock(&mgr->lock);
++      idr_for_each_entry(&mgr->ctx_handles, ctx, id)
+               amdgpu_ctx_priority_override(ctx, priority);
++      mutex_unlock(&mgr->lock);
+       fput(filp);
+-- 
+2.39.2
+
diff --git a/queue-4.19/drm-amdgpu-add-amdgpu_gfx_off_ctrl-function.patch b/queue-4.19/drm-amdgpu-add-amdgpu_gfx_off_ctrl-function.patch
new file mode 100644 (file)
index 0000000..368afe0
--- /dev/null
@@ -0,0 +1,120 @@
+From d5c3ca18e79d7e327f16b58a7b8b504234c8762b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 30 Jul 2018 16:59:09 +0800
+Subject: drm/amdgpu: Add amdgpu_gfx_off_ctrl function
+
+From: Rex Zhu <Rex.Zhu@amd.com>
+
+[ Upstream commit d23ee13fba23a3039971a976b2c4857cb5ba9c73 ]
+
+v2:
+   1. drop the special handling for the hw IP
+      suggested by hawking and Christian.
+   2. refine the variable name suggested by Flora.
+
+This funciton as the entry of gfx off feature.
+we arbitrat gfx off feature enable/disable in this
+function.
+
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Stable-dep-of: 2397e3d8d2e1 ("drm/amdgpu: add a missing lock for AMDGPU_SCHED")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  5 +++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  2 ++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c    | 36 ++++++++++++++++++++++
+ 3 files changed, 43 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+index acbd33fcb73d3..624864148f1d6 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -950,6 +950,10 @@ struct amdgpu_gfx {
+       /* NGG */
+       struct amdgpu_ngg               ngg;
++      /* gfx off */
++      bool                            gfx_off_state; /* true: enabled, false: disabled */
++      struct mutex                    gfx_off_mutex;
++      uint32_t                        gfx_off_req_count; /* default 1, enable gfx off: dec 1, disable gfx off: add 1 */
+       /* pipe reservation */
+       struct mutex                    pipe_reserve_mutex;
+       DECLARE_BITMAP                  (pipe_reserve_bitmap, AMDGPU_MAX_COMPUTE_QUEUES);
+@@ -1776,6 +1780,7 @@ void amdgpu_device_program_register_sequence(struct amdgpu_device *adev,
+                                            const u32 array_size);
+ bool amdgpu_device_is_px(struct drm_device *dev);
++void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable);
+ /* atpx handler */
+ #if defined(CONFIG_VGA_SWITCHEROO)
+ void amdgpu_register_atpx_handler(void);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+index 102b05b8f0c2b..fed1097c64690 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+@@ -2369,6 +2369,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
+       mutex_init(&adev->gfx.gpu_clock_mutex);
+       mutex_init(&adev->srbm_mutex);
+       mutex_init(&adev->gfx.pipe_reserve_mutex);
++      mutex_init(&adev->gfx.gfx_off_mutex);
+       mutex_init(&adev->grbm_idx_mutex);
+       mutex_init(&adev->mn_lock);
+       mutex_init(&adev->virt.vf_errors.lock);
+@@ -2396,6 +2397,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
+       INIT_DELAYED_WORK(&adev->late_init_work,
+                         amdgpu_device_ip_late_init_func_handler);
++      adev->gfx.gfx_off_req_count = 1;
+       adev->pm.ac_power = power_supply_is_system_supplied() > 0 ? true : false;
+       /* Registers mapping */
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+index eeaa2e825858b..889d1266f3ae7 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+@@ -340,3 +340,39 @@ void amdgpu_gfx_compute_mqd_sw_fini(struct amdgpu_device *adev)
+                             &ring->mqd_gpu_addr,
+                             &ring->mqd_ptr);
+ }
++
++/* amdgpu_gfx_off_ctrl - Handle gfx off feature enable/disable
++ *
++ * @adev: amdgpu_device pointer
++ * @bool enable true: enable gfx off feature, false: disable gfx off feature
++ *
++ * 1. gfx off feature will be enabled by gfx ip after gfx cg gp enabled.
++ * 2. other client can send request to disable gfx off feature, the request should be honored.
++ * 3. other client can cancel their request of disable gfx off feature
++ * 4. other client should not send request to enable gfx off feature before disable gfx off feature.
++ */
++
++void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)
++{
++      if (!(adev->powerplay.pp_feature & PP_GFXOFF_MASK))
++              return;
++
++      if (!adev->powerplay.pp_funcs->set_powergating_by_smu)
++              return;
++
++      mutex_lock(&adev->gfx.gfx_off_mutex);
++
++      if (!enable)
++              adev->gfx.gfx_off_req_count++;
++      else if (adev->gfx.gfx_off_req_count > 0)
++              adev->gfx.gfx_off_req_count--;
++
++      if (enable && !adev->gfx.gfx_off_state && !adev->gfx.gfx_off_req_count) {
++              if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, true))
++                      adev->gfx.gfx_off_state = true;
++      } else if (!enable && adev->gfx.gfx_off_state) {
++              if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, false))
++                      adev->gfx.gfx_off_state = false;
++      }
++      mutex_unlock(&adev->gfx.gfx_off_mutex);
++}
+-- 
+2.39.2
+
diff --git a/queue-4.19/drm-amdgpu-add-command-to-override-the-context-prior.patch b/queue-4.19/drm-amdgpu-add-command-to-override-the-context-prior.patch
new file mode 100644 (file)
index 0000000..1182c10
--- /dev/null
@@ -0,0 +1,123 @@
+From b743edb98f141cac0a6112d851366ec8f3111edc Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 30 Jan 2019 02:53:22 +0100
+Subject: drm/amdgpu: Add command to override the context priority.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
+
+[ Upstream commit b5bb37eddb63b16b7ab959598d108b1c444be77d ]
+
+Given a master fd we can then override the priority of the context
+in another fd.
+
+Using these overrides was recommended by Christian instead of trying
+to submit from a master fd, and I am adding a way to override a
+single context instead of the entire process so we can only upgrade
+a single Vulkan queue and not effectively the entire process.
+
+Reused the flags field as it was checked to be 0 anyways, so nothing
+used it. This is source-incompatible (due to the name change), but
+ABI compatible.
+
+Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Stable-dep-of: 2397e3d8d2e1 ("drm/amdgpu: add a missing lock for AMDGPU_SCHED")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 41 ++++++++++++++++++++++-
+ include/uapi/drm/amdgpu_drm.h             |  3 +-
+ 2 files changed, 42 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+index 0b70410488b66..0767a93e4d913 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+@@ -76,6 +76,39 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,
+       return 0;
+ }
++static int amdgpu_sched_context_priority_override(struct amdgpu_device *adev,
++                                                int fd,
++                                                unsigned ctx_id,
++                                                enum drm_sched_priority priority)
++{
++      struct file *filp = fget(fd);
++      struct amdgpu_fpriv *fpriv;
++      struct amdgpu_ctx *ctx;
++      int r;
++
++      if (!filp)
++              return -EINVAL;
++
++      r = amdgpu_file_to_fpriv(filp, &fpriv);
++      if (r) {
++              fput(filp);
++              return r;
++      }
++
++      ctx = amdgpu_ctx_get(fpriv, ctx_id);
++
++      if (!ctx) {
++              fput(filp);
++              return -EINVAL;
++      }
++
++      amdgpu_ctx_priority_override(ctx, priority);
++      amdgpu_ctx_put(ctx);
++      fput(filp);
++
++      return 0;
++}
++
+ int amdgpu_sched_ioctl(struct drm_device *dev, void *data,
+                      struct drm_file *filp)
+ {
+@@ -85,7 +118,7 @@ int amdgpu_sched_ioctl(struct drm_device *dev, void *data,
+       int r;
+       priority = amdgpu_to_sched_priority(args->in.priority);
+-      if (args->in.flags || priority == DRM_SCHED_PRIORITY_INVALID)
++      if (priority == DRM_SCHED_PRIORITY_INVALID)
+               return -EINVAL;
+       switch (args->in.op) {
+@@ -94,6 +127,12 @@ int amdgpu_sched_ioctl(struct drm_device *dev, void *data,
+                                                          args->in.fd,
+                                                          priority);
+               break;
++      case AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE:
++              r = amdgpu_sched_context_priority_override(adev,
++                                                         args->in.fd,
++                                                         args->in.ctx_id,
++                                                         priority);
++              break;
+       default:
+               DRM_ERROR("Invalid sched op specified: %d\n", args->in.op);
+               r = -EINVAL;
+diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
+index 1ceec56de0157..b72aeb766fc7a 100644
+--- a/include/uapi/drm/amdgpu_drm.h
++++ b/include/uapi/drm/amdgpu_drm.h
+@@ -272,13 +272,14 @@ union drm_amdgpu_vm {
+ /* sched ioctl */
+ #define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE     1
++#define AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE     2
+ struct drm_amdgpu_sched_in {
+       /* AMDGPU_SCHED_OP_* */
+       __u32   op;
+       __u32   fd;
+       __s32   priority;
+-      __u32   flags;
++      __u32   ctx_id;
+ };
+ union drm_amdgpu_sched {
+-- 
+2.39.2
+
diff --git a/queue-4.19/drm-amdgpu-put-enable-gfx-off-feature-to-a-delay-thr.patch b/queue-4.19/drm-amdgpu-put-enable-gfx-off-feature-to-a-delay-thr.patch
new file mode 100644 (file)
index 0000000..2181859
--- /dev/null
@@ -0,0 +1,109 @@
+From 978ddaa6977c40c605c6233ae5f8bd293b227d0f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 27 Jul 2018 21:06:30 +0800
+Subject: drm/amdgpu: Put enable gfx off feature to a delay thread
+
+From: Rex Zhu <Rex.Zhu@amd.com>
+
+[ Upstream commit 1e317b99f0c244bd8830918fdae9715210baf4fe ]
+
+delay to enable gfx off feature to avoid gfx on/off frequently
+suggested by Alex and Evan.
+
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Stable-dep-of: 2397e3d8d2e1 ("drm/amdgpu: add a missing lock for AMDGPU_SCHED")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  2 ++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 15 +++++++++++++++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c    |  8 ++++++--
+ 3 files changed, 23 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+index 624864148f1d6..45e6dfa330adc 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -954,6 +954,8 @@ struct amdgpu_gfx {
+       bool                            gfx_off_state; /* true: enabled, false: disabled */
+       struct mutex                    gfx_off_mutex;
+       uint32_t                        gfx_off_req_count; /* default 1, enable gfx off: dec 1, disable gfx off: add 1 */
++      struct delayed_work             gfx_off_delay_work;
++
+       /* pipe reservation */
+       struct mutex                    pipe_reserve_mutex;
+       DECLARE_BITMAP                  (pipe_reserve_bitmap, AMDGPU_MAX_COMPUTE_QUEUES);
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+index fed1097c64690..787cbeea8dc55 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+@@ -1927,6 +1927,19 @@ static void amdgpu_device_ip_late_init_func_handler(struct work_struct *work)
+               DRM_ERROR("ib ring test failed (%d).\n", r);
+ }
++static void amdgpu_device_delay_enable_gfx_off(struct work_struct *work)
++{
++      struct amdgpu_device *adev =
++              container_of(work, struct amdgpu_device, gfx.gfx_off_delay_work.work);
++
++      mutex_lock(&adev->gfx.gfx_off_mutex);
++      if (!adev->gfx.gfx_off_state && !adev->gfx.gfx_off_req_count) {
++              if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, true))
++                      adev->gfx.gfx_off_state = true;
++      }
++      mutex_unlock(&adev->gfx.gfx_off_mutex);
++}
++
+ /**
+  * amdgpu_device_ip_suspend_phase1 - run suspend for hardware IPs (phase 1)
+  *
+@@ -2396,6 +2409,8 @@ int amdgpu_device_init(struct amdgpu_device *adev,
+       INIT_DELAYED_WORK(&adev->late_init_work,
+                         amdgpu_device_ip_late_init_func_handler);
++      INIT_DELAYED_WORK(&adev->gfx.gfx_off_delay_work,
++                        amdgpu_device_delay_enable_gfx_off);
+       adev->gfx.gfx_off_req_count = 1;
+       adev->pm.ac_power = power_supply_is_system_supplied() > 0 ? true : false;
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+index 889d1266f3ae7..af42c2464a598 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+@@ -26,6 +26,9 @@
+ #include "amdgpu.h"
+ #include "amdgpu_gfx.h"
++/* 0.5 second timeout */
++#define GFX_OFF_DELAY_ENABLE         msecs_to_jiffies(500)
++
+ /*
+  * GPU scratch registers helpers function.
+  */
+@@ -360,6 +363,7 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)
+       if (!adev->powerplay.pp_funcs->set_powergating_by_smu)
+               return;
++
+       mutex_lock(&adev->gfx.gfx_off_mutex);
+       if (!enable)
+@@ -368,11 +372,11 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)
+               adev->gfx.gfx_off_req_count--;
+       if (enable && !adev->gfx.gfx_off_state && !adev->gfx.gfx_off_req_count) {
+-              if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, true))
+-                      adev->gfx.gfx_off_state = true;
++              schedule_delayed_work(&adev->gfx.gfx_off_delay_work, GFX_OFF_DELAY_ENABLE);
+       } else if (!enable && adev->gfx.gfx_off_state) {
+               if (!amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GFX, false))
+                       adev->gfx.gfx_off_state = false;
+       }
++
+       mutex_unlock(&adev->gfx.gfx_off_mutex);
+ }
+-- 
+2.39.2
+
diff --git a/queue-4.19/net-bcmgenet-remove-phy_stop-from-bcmgenet_netif_sto.patch b/queue-4.19/net-bcmgenet-remove-phy_stop-from-bcmgenet_netif_sto.patch
new file mode 100644 (file)
index 0000000..407871f
--- /dev/null
@@ -0,0 +1,37 @@
+From b562a60c0c6c4904bffc513cad98e2ac48e0de1c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 4 May 2023 16:07:27 -0700
+Subject: net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop()
+
+From: Florian Fainelli <f.fainelli@gmail.com>
+
+[ Upstream commit 93e0401e0fc0c54b0ac05b687cd135c2ac38187c ]
+
+The call to phy_stop() races with the later call to phy_disconnect(),
+resulting in concurrent phy_suspend() calls being run from different
+CPUs. The final call to phy_disconnect() ensures that the PHY is
+stopped and suspended, too.
+
+Fixes: c96e731c93ff ("net: bcmgenet: connect and disconnect from the PHY state machine")
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/broadcom/genet/bcmgenet.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+index 84bcb3ce00f73..b3dedd56a9882 100644
+--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
++++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+@@ -2995,7 +2995,6 @@ static void bcmgenet_netif_stop(struct net_device *dev)
+       /* Disable MAC transmit. TX DMA disabled must be done before this */
+       umac_enable_set(priv, CMD_TX_EN, false);
+-      phy_stop(dev->phydev);
+       bcmgenet_disable_rx_napi(priv);
+       bcmgenet_intr_disable(priv);
+-- 
+2.39.2
+
diff --git a/queue-4.19/net-dsa-mv88e6xxx-add-missing-watchdog-ops-for-6320-.patch b/queue-4.19/net-dsa-mv88e6xxx-add-missing-watchdog-ops-for-6320-.patch
new file mode 100644 (file)
index 0000000..7e1d3a4
--- /dev/null
@@ -0,0 +1,44 @@
+From 532668d84b321a2629d9d6f11d0fbd2fd51bff7e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 19 Dec 2018 18:28:54 +0100
+Subject: net: dsa: mv88e6xxx: Add missing watchdog ops for 6320 family
+
+From: Andrew Lunn <andrew@lunn.ch>
+
+[ Upstream commit 9c7f37e5ca14f5b04894b1b699a9903885cdafa6 ]
+
+The 6320 family of switches uses the same watchdog registers as the
+6390.
+
+Signed-off-by: Andrew Lunn <andrew@lunn.ch>
+Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Stable-dep-of: 6686317855c6 ("net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/dsa/mv88e6xxx/chip.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
+index 6b310f7235801..fddd7e4f3de71 100644
+--- a/drivers/net/dsa/mv88e6xxx/chip.c
++++ b/drivers/net/dsa/mv88e6xxx/chip.c
+@@ -3601,6 +3601,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
+       .stats_get_stats = mv88e6320_stats_get_stats,
+       .set_cpu_port = mv88e6095_g1_set_cpu_port,
+       .set_egress_port = mv88e6095_g1_set_egress_port,
++      .watchdog_ops = &mv88e6390_watchdog_ops,
+       .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
+       .pot_clear = mv88e6xxx_g2_pot_clear,
+       .reset = mv88e6352_g1_reset,
+@@ -3643,6 +3644,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
+       .stats_get_stats = mv88e6320_stats_get_stats,
+       .set_cpu_port = mv88e6095_g1_set_cpu_port,
+       .set_egress_port = mv88e6095_g1_set_egress_port,
++      .watchdog_ops = &mv88e6390_watchdog_ops,
+       .reset = mv88e6352_g1_reset,
+       .vtu_getnext = mv88e6185_g1_vtu_getnext,
+       .vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
+-- 
+2.39.2
+
diff --git a/queue-4.19/net-dsa-mv88e6xxx-add-mv88e6321-rsvd2cpu.patch b/queue-4.19/net-dsa-mv88e6xxx-add-mv88e6321-rsvd2cpu.patch
new file mode 100644 (file)
index 0000000..5a561c5
--- /dev/null
@@ -0,0 +1,36 @@
+From a01821ff2fa1f3e2a643539ff4a403f1eb5d9328 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 26 Apr 2023 22:28:15 +0200
+Subject: net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu
+
+From: Angelo Dureghello <angelo.dureghello@timesys.com>
+
+[ Upstream commit 6686317855c6997671982d4489ccdd946f644957 ]
+
+Add rsvd2cpu capability for mv88e6321 model, to allow proper bpdu
+processing.
+
+Signed-off-by: Angelo Dureghello <angelo.dureghello@timesys.com>
+Fixes: 51c901a775621 ("net: dsa: mv88e6xxx: distinguish Global 2 Rsvd2CPU")
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/dsa/mv88e6xxx/chip.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
+index fddd7e4f3de71..b593e4d85e9c0 100644
+--- a/drivers/net/dsa/mv88e6xxx/chip.c
++++ b/drivers/net/dsa/mv88e6xxx/chip.c
+@@ -3645,6 +3645,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
+       .set_cpu_port = mv88e6095_g1_set_cpu_port,
+       .set_egress_port = mv88e6095_g1_set_egress_port,
+       .watchdog_ops = &mv88e6390_watchdog_ops,
++      .mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
+       .reset = mv88e6352_g1_reset,
+       .vtu_getnext = mv88e6185_g1_vtu_getnext,
+       .vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
+-- 
+2.39.2
+
diff --git a/queue-4.19/net-sched-act_mirred-add-carrier-check.patch b/queue-4.19/net-sched-act_mirred-add-carrier-check.patch
new file mode 100644 (file)
index 0000000..d938a1c
--- /dev/null
@@ -0,0 +1,49 @@
+From efc83bffde537ca8c4ec9700118ae0555a67067f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 26 Apr 2023 15:19:40 +0000
+Subject: net/sched: act_mirred: Add carrier check
+
+From: Victor Nogueira <victor@mojatatu.com>
+
+[ Upstream commit 526f28bd0fbdc699cda31426928802650c1528e5 ]
+
+There are cases where the device is adminstratively UP, but operationally
+down. For example, we have a physical device (Nvidia ConnectX-6 Dx, 25Gbps)
+who's cable was pulled out, here is its ip link output:
+
+5: ens2f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
+    link/ether b8:ce:f6:4b:68:35 brd ff:ff:ff:ff:ff:ff
+    altname enp179s0f1np1
+
+As you can see, it's administratively UP but operationally down.
+In this case, sending a packet to this port caused a nasty kernel hang (so
+nasty that we were unable to capture it). Aborting a transmit based on
+operational status (in addition to administrative status) fixes the issue.
+
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
+Signed-off-by: Victor Nogueira <victor@mojatatu.com>
+v1->v2: Add fixes tag
+v2->v3: Remove blank line between tags + add change log, suggested by Leon
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/sched/act_mirred.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c
+index a30c17a282819..9aad86e4a0fb9 100644
+--- a/net/sched/act_mirred.c
++++ b/net/sched/act_mirred.c
+@@ -220,7 +220,7 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a,
+               goto out;
+       }
+-      if (unlikely(!(dev->flags & IFF_UP))) {
++      if (unlikely(!(dev->flags & IFF_UP)) || !netif_carrier_ok(dev)) {
+               net_notice_ratelimited("tc mirred to Houston: device %s is down\n",
+                                      dev->name);
+               goto out;
+-- 
+2.39.2
+
diff --git a/queue-4.19/perf-map-delete-two-variable-initialisations-before-.patch b/queue-4.19/perf-map-delete-two-variable-initialisations-before-.patch
new file mode 100644 (file)
index 0000000..f4f7b66
--- /dev/null
@@ -0,0 +1,60 @@
+From eba514a4837e046c895dbcae8b0848a5b7c89210 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 13 Apr 2023 14:46:39 +0200
+Subject: perf map: Delete two variable initialisations before null pointer
+ checks in sort__sym_from_cmp()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Markus Elfring <Markus.Elfring@web.de>
+
+[ Upstream commit c160118a90d4acf335993d8d59b02ae2147a524e ]
+
+Addresses of two data structure members were determined before
+corresponding null pointer checks in the implementation of the function
+“sort__sym_from_cmp”.
+
+Thus avoid the risk for undefined behaviour by removing extra
+initialisations for the local variables “from_l” and “from_r” (also
+because they were already reassigned with the same value behind this
+pointer check).
+
+This issue was detected by using the Coccinelle software.
+
+Fixes: 1b9e97a2a95e4941 ("perf tools: Fix report -F symbol_from for data without branch info")
+Signed-off-by: <elfring@users.sourceforge.net>
+Acked-by: Ian Rogers <irogers@google.com>
+Cc: Adrian Hunter <adrian.hunter@intel.com>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Andi Kleen <ak@linux.intel.com>
+Cc: German Gomez <german.gomez@arm.com>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: Jiri Olsa <jolsa@kernel.org>
+Cc: Kan Liang <kan.liang@linux.intel.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Link: https://lore.kernel.org/cocci/54a21fea-64e3-de67-82ef-d61b90ffad05@web.de/
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/perf/util/sort.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
+index 85ff4f68adc00..66e11e6bb7197 100644
+--- a/tools/perf/util/sort.c
++++ b/tools/perf/util/sort.c
+@@ -735,8 +735,7 @@ static int hist_entry__dso_to_filter(struct hist_entry *he, int type,
+ static int64_t
+ sort__sym_from_cmp(struct hist_entry *left, struct hist_entry *right)
+ {
+-      struct addr_map_symbol *from_l = &left->branch_info->from;
+-      struct addr_map_symbol *from_r = &right->branch_info->from;
++      struct addr_map_symbol *from_l, *from_r;
+       if (!left->branch_info || !right->branch_info)
+               return cmp_null(left->branch_info, right->branch_info);
+-- 
+2.39.2
+
diff --git a/queue-4.19/perf-symbols-fix-return-incorrect-build_id-size-in-e.patch b/queue-4.19/perf-symbols-fix-return-incorrect-build_id-size-in-e.patch
new file mode 100644 (file)
index 0000000..f9a42ab
--- /dev/null
@@ -0,0 +1,52 @@
+From b1c62a534a0f7cc178e79fd15f142bb228bb090e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 27 Apr 2023 01:28:41 +0000
+Subject: perf symbols: Fix return incorrect build_id size in
+ elf_read_build_id()
+
+From: Yang Jihong <yangjihong1@huawei.com>
+
+[ Upstream commit 1511e4696acb715a4fe48be89e1e691daec91c0e ]
+
+In elf_read_build_id(), if gnu build_id is found, should return the size of
+the actually copied data. If descsz is greater thanBuild_ID_SIZE,
+write_buildid data access may occur.
+
+Fixes: be96ea8ffa788dcc ("perf symbols: Fix issue with binaries using 16-bytes buildids (v2)")
+Reported-by: Will Ochowicz <Will.Ochowicz@genusplc.com>
+Signed-off-by: Yang Jihong <yangjihong1@huawei.com>
+Tested-by: Will Ochowicz <Will.Ochowicz@genusplc.com>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Ian Rogers <irogers@google.com>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: Jiri Olsa <jolsa@kernel.org>
+Cc: Leo Yan <leo.yan@linaro.org>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Stephane Eranian <eranian@google.com>
+Link: https://lore.kernel.org/lkml/CWLP265MB49702F7BA3D6D8F13E4B1A719C649@CWLP265MB4970.GBRP265.PROD.OUTLOOK.COM/T/
+Link: https://lore.kernel.org/r/20230427012841.231729-1-yangjihong1@huawei.com
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/perf/util/symbol-elf.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
+index 8dde4369fbcdb..227dfe33063c9 100644
+--- a/tools/perf/util/symbol-elf.c
++++ b/tools/perf/util/symbol-elf.c
+@@ -517,7 +517,7 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
+                               size_t sz = min(size, descsz);
+                               memcpy(bf, ptr, sz);
+                               memset(bf + sz, 0, size - sz);
+-                              err = descsz;
++                              err = sz;
+                               break;
+                       }
+               }
+-- 
+2.39.2
+
diff --git a/queue-4.19/perf-vendor-events-power9-remove-utf-8-characters-fr.patch b/queue-4.19/perf-vendor-events-power9-remove-utf-8-characters-fr.patch
new file mode 100644 (file)
index 0000000..23151a0
--- /dev/null
@@ -0,0 +1,108 @@
+From edecc8a0eb4b3dcdf46492c51cdba6d43d274f7d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 28 Mar 2023 16:59:08 +0530
+Subject: perf vendor events power9: Remove UTF-8 characters from JSON files
+
+From: Kajol Jain <kjain@linux.ibm.com>
+
+[ Upstream commit 5d9df8731c0941f3add30f96745a62586a0c9d52 ]
+
+Commit 3c22ba5243040c13 ("perf vendor events powerpc: Update POWER9
+events") added and updated power9 PMU JSON events. However some of the
+JSON events which are part of other.json and pipeline.json files,
+contains UTF-8 characters in their brief description.  Having UTF-8
+character could breaks the perf build on some distros.
+
+Fix this issue by removing the UTF-8 characters from other.json and
+pipeline.json files.
+
+Result without the fix:
+
+  [command]# file -i pmu-events/arch/powerpc/power9/*
+  pmu-events/arch/powerpc/power9/cache.json:          application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/floating-point.json: application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/frontend.json:       application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/marked.json:         application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/memory.json:         application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/metrics.json:        application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/nest_metrics.json:   application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/other.json:          application/json; charset=utf-8
+  pmu-events/arch/powerpc/power9/pipeline.json:       application/json; charset=utf-8
+  pmu-events/arch/powerpc/power9/pmc.json:            application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/translation.json:    application/json; charset=us-ascii
+  [command]#
+
+Result with the fix:
+
+  [command]# file -i pmu-events/arch/powerpc/power9/*
+  pmu-events/arch/powerpc/power9/cache.json:          application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/floating-point.json: application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/frontend.json:       application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/marked.json:         application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/memory.json:         application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/metrics.json:        application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/nest_metrics.json:   application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/other.json:          application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/pipeline.json:       application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/pmc.json:            application/json; charset=us-ascii
+  pmu-events/arch/powerpc/power9/translation.json:    application/json; charset=us-ascii
+  [command]#
+
+Fixes: 3c22ba5243040c13 ("perf vendor events powerpc: Update POWER9 events")
+Reported-by: Arnaldo Carvalho de Melo <acme@kernel.com>
+Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
+Acked-by: Ian Rogers <irogers@google.com>
+Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
+Cc: Disha Goel <disgoel@linux.ibm.com>
+Cc: Jiri Olsa <jolsa@kernel.org>
+Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
+Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
+Cc: linuxppc-dev@lists.ozlabs.org
+Link: https://lore.kernel.org/lkml/ZBxP77deq7ikTxwG@kernel.org/
+Link: https://lore.kernel.org/r/20230328112908.113158-1-kjain@linux.ibm.com
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/perf/pmu-events/arch/powerpc/power9/other.json    | 4 ++--
+ tools/perf/pmu-events/arch/powerpc/power9/pipeline.json | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tools/perf/pmu-events/arch/powerpc/power9/other.json b/tools/perf/pmu-events/arch/powerpc/power9/other.json
+index 48cf4f920b3ff..064341c0df575 100644
+--- a/tools/perf/pmu-events/arch/powerpc/power9/other.json
++++ b/tools/perf/pmu-events/arch/powerpc/power9/other.json
+@@ -1417,7 +1417,7 @@
+   {,
+     "EventCode": "0x45054",
+     "EventName": "PM_FMA_CMPL",
+-    "BriefDescription": "two flops operation completed (fmadd, fnmadd, fmsub, fnmsub) Scalar instructions only. "
++    "BriefDescription": "two flops operation completed (fmadd, fnmadd, fmsub, fnmsub) Scalar instructions only."
+   },
+   {,
+     "EventCode": "0x201E8",
+@@ -2017,7 +2017,7 @@
+   {,
+     "EventCode": "0xC0BC",
+     "EventName": "PM_LSU_FLUSH_OTHER",
+-    "BriefDescription": "Other LSU flushes including: Sync (sync ack from L2 caused search of LRQ for oldest snooped load, This will either signal a Precise Flush of the oldest snooped loa or a Flush Next PPC); Data Valid Flush Next (several cases of this, one example is store and reload are lined up such that a store-hit-reload scenario exists and the CDF has already launched and has gotten bad/stale data); Bad Data Valid Flush Next (might be a few cases of this, one example is a larxa (D$ hit) return data and dval but can't allocate to LMQ (LMQ full or other reason). Already gave dval but can't watch it for snoop_hit_larx. Need to take the “bad dval” back and flush all younger ops)"
++    "BriefDescription": "Other LSU flushes including: Sync (sync ack from L2 caused search of LRQ for oldest snooped load, This will either signal a Precise Flush of the oldest snooped loa or a Flush Next PPC); Data Valid Flush Next (several cases of this, one example is store and reload are lined up such that a store-hit-reload scenario exists and the CDF has already launched and has gotten bad/stale data); Bad Data Valid Flush Next (might be a few cases of this, one example is a larxa (D$ hit) return data and dval but can't allocate to LMQ (LMQ full or other reason). Already gave dval but can't watch it for snoop_hit_larx. Need to take the 'bad dval' back and flush all younger ops)"
+   },
+   {,
+     "EventCode": "0x5094",
+diff --git a/tools/perf/pmu-events/arch/powerpc/power9/pipeline.json b/tools/perf/pmu-events/arch/powerpc/power9/pipeline.json
+index b4772f54a2718..e2f2ed0a35496 100644
+--- a/tools/perf/pmu-events/arch/powerpc/power9/pipeline.json
++++ b/tools/perf/pmu-events/arch/powerpc/power9/pipeline.json
+@@ -442,7 +442,7 @@
+   {,
+     "EventCode": "0x4D052",
+     "EventName": "PM_2FLOP_CMPL",
+-    "BriefDescription": "DP vector version of fmul, fsub, fcmp, fsel, fabs, fnabs, fres ,fsqrte, fneg "
++    "BriefDescription": "DP vector version of fmul, fsub, fcmp, fsel, fabs, fnabs, fres ,fsqrte, fneg"
+   },
+   {,
+     "EventCode": "0x1F142",
+-- 
+2.39.2
+
diff --git a/queue-4.19/rxrpc-fix-hard-call-timeout-units.patch b/queue-4.19/rxrpc-fix-hard-call-timeout-units.patch
new file mode 100644 (file)
index 0000000..0f71e64
--- /dev/null
@@ -0,0 +1,45 @@
+From 1712809f21b218477e84c93170fa69aae213dd7d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 28 Apr 2023 21:27:54 +0100
+Subject: rxrpc: Fix hard call timeout units
+
+From: David Howells <dhowells@redhat.com>
+
+[ Upstream commit 0d098d83c5d9e107b2df7f5e11f81492f56d2fe7 ]
+
+The hard call timeout is specified in the RXRPC_SET_CALL_TIMEOUT cmsg in
+seconds, so fix the point at which sendmsg() applies it to the call to
+convert to jiffies from seconds, not milliseconds.
+
+Fixes: a158bdd3247b ("rxrpc: Fix timeout of a call that hasn't yet been granted a channel")
+Signed-off-by: David Howells <dhowells@redhat.com>
+cc: Marc Dionne <marc.dionne@auristor.com>
+cc: "David S. Miller" <davem@davemloft.net>
+cc: Eric Dumazet <edumazet@google.com>
+cc: Jakub Kicinski <kuba@kernel.org>
+cc: Paolo Abeni <pabeni@redhat.com>
+cc: linux-afs@lists.infradead.org
+cc: netdev@vger.kernel.org
+cc: linux-kernel@vger.kernel.org
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/rxrpc/sendmsg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/rxrpc/sendmsg.c b/net/rxrpc/sendmsg.c
+index a7a09eb04d93b..eaa032c498c96 100644
+--- a/net/rxrpc/sendmsg.c
++++ b/net/rxrpc/sendmsg.c
+@@ -709,7 +709,7 @@ int rxrpc_do_sendmsg(struct rxrpc_sock *rx, struct msghdr *msg, size_t len)
+               /* Fall through */
+       case 1:
+               if (p.call.timeouts.hard > 0) {
+-                      j = msecs_to_jiffies(p.call.timeouts.hard);
++                      j = p.call.timeouts.hard * HZ;
+                       now = jiffies;
+                       j += now;
+                       WRITE_ONCE(call->expect_term_by, j);
+-- 
+2.39.2
+
index 80afef0c5d59ec4c0f7906ce036e1fe582d202a8..1c563a3bac249f5607d2f96f60a18d3e7778d888 100644 (file)
@@ -146,3 +146,21 @@ dm-verity-skip-redundant-verity_handle_err-on-i-o-er.patch
 dm-verity-fix-error-handling-for-check_at_most_once-.patch
 kernel-relay.c-fix-read_pos-error-when-multiple-read.patch
 relayfs-fix-out-of-bounds-access-in-relay_file_read.patch
+sit-update-dev-needed_headroom-in-ipip6_tunnel_bind_.patch
+net-dsa-mv88e6xxx-add-missing-watchdog-ops-for-6320-.patch
+net-dsa-mv88e6xxx-add-mv88e6321-rsvd2cpu.patch
+writeback-fix-call-of-incorrect-macro.patch
+net-sched-act_mirred-add-carrier-check.patch
+rxrpc-fix-hard-call-timeout-units.patch
+af_packet-don-t-send-zero-byte-data-in-packet_sendms.patch
+drm-amdgpu-add-amdgpu_gfx_off_ctrl-function.patch
+drm-amdgpu-put-enable-gfx-off-feature-to-a-delay-thr.patch
+drm-amdgpu-add-command-to-override-the-context-prior.patch
+drm-amdgpu-add-a-missing-lock-for-amdgpu_sched.patch
+alsa-caiaq-input-add-error-handling-for-unsupported-.patch
+virtio_net-split-free_unused_bufs.patch
+virtio_net-suppress-cpu-stall-when-free_unused_bufs.patch
+net-bcmgenet-remove-phy_stop-from-bcmgenet_netif_sto.patch
+perf-vendor-events-power9-remove-utf-8-characters-fr.patch
+perf-map-delete-two-variable-initialisations-before-.patch
+perf-symbols-fix-return-incorrect-build_id-size-in-e.patch
diff --git a/queue-4.19/sit-update-dev-needed_headroom-in-ipip6_tunnel_bind_.patch b/queue-4.19/sit-update-dev-needed_headroom-in-ipip6_tunnel_bind_.patch
new file mode 100644 (file)
index 0000000..dcd744b
--- /dev/null
@@ -0,0 +1,69 @@
+From 87e0751b0e63da3cde62987ac3706ee07f8608f9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 26 Apr 2023 23:00:06 -0700
+Subject: sit: update dev->needed_headroom in ipip6_tunnel_bind_dev()
+
+From: Cong Wang <cong.wang@bytedance.com>
+
+[ Upstream commit c88f8d5cd95fd039cff95d682b8e71100c001df0 ]
+
+When a tunnel device is bound with the underlying device, its
+dev->needed_headroom needs to be updated properly. IPv4 tunnels
+already do the same in ip_tunnel_bind_dev(). Otherwise we may
+not have enough header room for skb, especially after commit
+b17f709a2401 ("gue: TX support for using remote checksum offload option").
+
+Fixes: 32b8a8e59c9c ("sit: add IPv4 over IPv4 support")
+Reported-by: Palash Oswal <oswalpalash@gmail.com>
+Link: https://lore.kernel.org/netdev/CAGyP=7fDcSPKu6nttbGwt7RXzE3uyYxLjCSE97J64pRxJP8jPA@mail.gmail.com/
+Cc: Kuniyuki Iwashima <kuniyu@amazon.com>
+Cc: Eric Dumazet <edumazet@google.com>
+Signed-off-by: Cong Wang <cong.wang@bytedance.com>
+Reviewed-by: Eric Dumazet <edumazet@google.com>
+Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/ipv6/sit.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
+index df734fe64d10a..ec1de1e6b8e3c 100644
+--- a/net/ipv6/sit.c
++++ b/net/ipv6/sit.c
+@@ -1053,12 +1053,13 @@ static netdev_tx_t sit_tunnel_xmit(struct sk_buff *skb,
+ static void ipip6_tunnel_bind_dev(struct net_device *dev)
+ {
++      struct ip_tunnel *tunnel = netdev_priv(dev);
++      int t_hlen = tunnel->hlen + sizeof(struct iphdr);
+       struct net_device *tdev = NULL;
+-      struct ip_tunnel *tunnel;
++      int hlen = LL_MAX_HEADER;
+       const struct iphdr *iph;
+       struct flowi4 fl4;
+-      tunnel = netdev_priv(dev);
+       iph = &tunnel->parms.iph;
+       if (iph->daddr) {
+@@ -1081,14 +1082,15 @@ static void ipip6_tunnel_bind_dev(struct net_device *dev)
+               tdev = __dev_get_by_index(tunnel->net, tunnel->parms.link);
+       if (tdev && !netif_is_l3_master(tdev)) {
+-              int t_hlen = tunnel->hlen + sizeof(struct iphdr);
+               int mtu;
+               mtu = tdev->mtu - t_hlen;
+               if (mtu < IPV6_MIN_MTU)
+                       mtu = IPV6_MIN_MTU;
+               WRITE_ONCE(dev->mtu, mtu);
++              hlen = tdev->hard_header_len + tdev->needed_headroom;
+       }
++      dev->needed_headroom = t_hlen + hlen;
+ }
+ static void ipip6_tunnel_update(struct ip_tunnel *t, struct ip_tunnel_parm *p,
+-- 
+2.39.2
+
diff --git a/queue-4.19/virtio_net-split-free_unused_bufs.patch b/queue-4.19/virtio_net-split-free_unused_bufs.patch
new file mode 100644 (file)
index 0000000..c44726c
--- /dev/null
@@ -0,0 +1,91 @@
+From 66a96c93904ed8780e5b0610f6e59bf087797da5 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 1 Aug 2022 14:38:59 +0800
+Subject: virtio_net: split free_unused_bufs()
+
+From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
+
+[ Upstream commit 6e345f8c7cd029ad3aaece15ad4425ac26e4eb63 ]
+
+This patch separates two functions for freeing sq buf and rq buf from
+free_unused_bufs().
+
+When supporting the enable/disable tx/rq queue in the future, it is
+necessary to support separate recovery of a sq buf or a rq buf.
+
+Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
+Acked-by: Jason Wang <jasowang@redhat.com>
+Message-Id: <20220801063902.129329-40-xuanzhuo@linux.alibaba.com>
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+Stable-dep-of: f8bb51043945 ("virtio_net: suppress cpu stall when free_unused_bufs")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/virtio_net.c | 41 ++++++++++++++++++++++++----------------
+ 1 file changed, 25 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
+index 0cd46735e3950..9b72b3f0b5bf9 100644
+--- a/drivers/net/virtio_net.c
++++ b/drivers/net/virtio_net.c
+@@ -2655,6 +2655,27 @@ static void free_receive_page_frags(struct virtnet_info *vi)
+                       put_page(vi->rq[i].alloc_frag.page);
+ }
++static void virtnet_sq_free_unused_buf(struct virtqueue *vq, void *buf)
++{
++      if (!is_xdp_frame(buf))
++              dev_kfree_skb(buf);
++      else
++              xdp_return_frame(ptr_to_xdp(buf));
++}
++
++static void virtnet_rq_free_unused_buf(struct virtqueue *vq, void *buf)
++{
++      struct virtnet_info *vi = vq->vdev->priv;
++      int i = vq2rxq(vq);
++
++      if (vi->mergeable_rx_bufs)
++              put_page(virt_to_head_page(buf));
++      else if (vi->big_packets)
++              give_pages(&vi->rq[i], buf);
++      else
++              put_page(virt_to_head_page(buf));
++}
++
+ static void free_unused_bufs(struct virtnet_info *vi)
+ {
+       void *buf;
+@@ -2662,26 +2683,14 @@ static void free_unused_bufs(struct virtnet_info *vi)
+       for (i = 0; i < vi->max_queue_pairs; i++) {
+               struct virtqueue *vq = vi->sq[i].vq;
+-              while ((buf = virtqueue_detach_unused_buf(vq)) != NULL) {
+-                      if (!is_xdp_frame(buf))
+-                              dev_kfree_skb(buf);
+-                      else
+-                              xdp_return_frame(ptr_to_xdp(buf));
+-              }
++              while ((buf = virtqueue_detach_unused_buf(vq)) != NULL)
++                      virtnet_sq_free_unused_buf(vq, buf);
+       }
+       for (i = 0; i < vi->max_queue_pairs; i++) {
+               struct virtqueue *vq = vi->rq[i].vq;
+-
+-              while ((buf = virtqueue_detach_unused_buf(vq)) != NULL) {
+-                      if (vi->mergeable_rx_bufs) {
+-                              put_page(virt_to_head_page(buf));
+-                      } else if (vi->big_packets) {
+-                              give_pages(&vi->rq[i], buf);
+-                      } else {
+-                              put_page(virt_to_head_page(buf));
+-                      }
+-              }
++              while ((buf = virtqueue_detach_unused_buf(vq)) != NULL)
++                      virtnet_rq_free_unused_buf(vq, buf);
+       }
+ }
+-- 
+2.39.2
+
diff --git a/queue-4.19/virtio_net-suppress-cpu-stall-when-free_unused_bufs.patch b/queue-4.19/virtio_net-suppress-cpu-stall-when-free_unused_bufs.patch
new file mode 100644 (file)
index 0000000..ec8527f
--- /dev/null
@@ -0,0 +1,44 @@
+From a9ecd751d7d90f41c56621af0d76aa35a25950ef Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 4 May 2023 10:27:06 +0800
+Subject: virtio_net: suppress cpu stall when free_unused_bufs
+
+From: Wenliang Wang <wangwenliang.1995@bytedance.com>
+
+[ Upstream commit f8bb5104394560e29017c25bcade4c6b7aabd108 ]
+
+For multi-queue and large ring-size use case, the following error
+occurred when free_unused_bufs:
+rcu: INFO: rcu_sched self-detected stall on CPU.
+
+Fixes: 986a4f4d452d ("virtio_net: multiqueue support")
+Signed-off-by: Wenliang Wang <wangwenliang.1995@bytedance.com>
+Acked-by: Michael S. Tsirkin <mst@redhat.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/virtio_net.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
+index 9b72b3f0b5bf9..d45e8de79f286 100644
+--- a/drivers/net/virtio_net.c
++++ b/drivers/net/virtio_net.c
+@@ -2685,12 +2685,14 @@ static void free_unused_bufs(struct virtnet_info *vi)
+               struct virtqueue *vq = vi->sq[i].vq;
+               while ((buf = virtqueue_detach_unused_buf(vq)) != NULL)
+                       virtnet_sq_free_unused_buf(vq, buf);
++              cond_resched();
+       }
+       for (i = 0; i < vi->max_queue_pairs; i++) {
+               struct virtqueue *vq = vi->rq[i].vq;
+               while ((buf = virtqueue_detach_unused_buf(vq)) != NULL)
+                       virtnet_rq_free_unused_buf(vq, buf);
++              cond_resched();
+       }
+ }
+-- 
+2.39.2
+
diff --git a/queue-4.19/writeback-fix-call-of-incorrect-macro.patch b/queue-4.19/writeback-fix-call-of-incorrect-macro.patch
new file mode 100644 (file)
index 0000000..cde7992
--- /dev/null
@@ -0,0 +1,41 @@
+From 1450357ee754e0d54010c98973e1b18875c50b72 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 19 Jan 2023 13:44:43 +0300
+Subject: writeback: fix call of incorrect macro
+
+From: Maxim Korotkov <korotkov.maxim.s@gmail.com>
+
+[ Upstream commit 3e46c89c74f2c38e5337d2cf44b0b551adff1cb4 ]
+
+ the variable 'history' is of type u16, it may be an error
+ that the hweight32 macro was used for it
+ I guess macro hweight16 should be used
+
+Found by Linux Verification Center (linuxtesting.org) with SVACE.
+
+Fixes: 2a81490811d0 ("writeback: implement foreign cgroup inode detection")
+Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>
+Reviewed-by: Jan Kara <jack@suse.cz>
+Link: https://lore.kernel.org/r/20230119104443.3002-1-korotkov.maxim.s@gmail.com
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/fs-writeback.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
+index 4d687e2e23735..61dc0dc139f87 100644
+--- a/fs/fs-writeback.c
++++ b/fs/fs-writeback.c
+@@ -702,7 +702,7 @@ void wbc_detach_inode(struct writeback_control *wbc)
+                * is okay.  The main goal is avoiding keeping an inode on
+                * the wrong wb for an extended period of time.
+                */
+-              if (hweight32(history) > WB_FRN_HIST_THR_SLOTS)
++              if (hweight16(history) > WB_FRN_HIST_THR_SLOTS)
+                       inode_switch_wbs(inode, max_id);
+       }
+-- 
+2.39.2
+