diff options
author | Volodymyr Babchuk <Volodymyr_Babchuk@epam.com> | 2023-01-19 21:11:15 +0000 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2023-02-13 06:53:20 +0100 |
commit | c70b7741dda7586529cc270e0f2c4cae3921b9b1 (patch) | |
tree | 3cbbabb348c4973f18f76818f89d29c27e275a42 /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
parent | 3e8cd711c3da6c3d724076048038cd666bdbb2b5 (diff) |
xen/pvcalls-back: fix permanently masked event channel
There is a sequence of events that can lead to a permanently masked
event channel, because xen_irq_lateeoi() is newer called. This happens
when a backend receives spurious write event from a frontend. In this
case pvcalls_conn_back_write() returns early and it does not clears the
map->write counter. As map->write > 0, pvcalls_back_ioworker() returns
without calling xen_irq_lateeoi(). This leaves the event channel in
masked state, a backend does not receive any new events from a
frontend and the whole communication stops.
Move atomic_set(&map->write, 0) to the very beginning of
pvcalls_conn_back_write() to fix this issue.
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reported-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/20230119211037.1234931-1-volodymyr_babchuk@epam.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
0 files changed, 0 insertions, 0 deletions