vdpa: mlx5: prevent cvq work from hogging CPU
authorJason Wang <jasowang@redhat.com>
Tue, 29 Mar 2022 04:21:07 +0000 (12:21 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Apr 2022 18:59:15 +0000 (20:59 +0200)
commit69ec350a417d4ef778c539cc8bbb68607af088b4
tree8fc2ae496104b6b656999f35423283d6311a2678
parent893c70f8b8f3acb37bbbee9d77b3c8f6ebdf556a
vdpa: mlx5: prevent cvq work from hogging CPU

[ Upstream commit 55ebf0d60e3cc6c9e8593399e185842c00e12f36 ]

A userspace triggerable infinite loop could happen in
mlx5_cvq_kick_handler() if userspace keeps sending a huge amount of
cvq requests.

Fixing this by introducing a quota and re-queue the work if we're out
of the budget (currently the implicit budget is one) . While at it,
using a per device work struct to avoid on demand memory allocation
for cvq.

Fixes: 5262912ef3cfc ("vdpa/mlx5: Add support for control VQ and MAC setting")
Signed-off-by: Jason Wang <jasowang@redhat.com>
Link: https://lore.kernel.org/r/20220329042109.4029-1-jasowang@redhat.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Eli Cohen <elic@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/vdpa/mlx5/net/mlx5_vnet.c