mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 09:12:24 +03:00
3e4fb4927052d859bb9181921da5d2253a51e992
This patch updates the interaction between the VAB packet polling code and the VAB_ERROR MMU fault handling code. A shared atomic flag is used to determine if a VAB_ERROR MMU fault has happened while polling, which will result in polling be terminated immediately instead of waiting on a timeout to happen. This allows testing VAB_ERROR MMU fault handling in environments where a timeout may never happen or happen very slowly. The sequence for this to work is the following: 1) before requesting a VAB dump, which may trigger a fault, the atomic flag is atomically reset to 0. 2) polling eventually starts which atomically checks the flag in the loop. If flag is set, polling exits because the VAB result will never be available. 3) If a VAB_ERROR MMU fault is raised, this sets the flag to 1 atomically. Note that while there could be a race in this sequence if the VAB_ERROR MMU fault handling is somehow delayed, the chance is extremely slim because: 1) the race could only happen if the VAB dump code is re-entered before the earlier VAB_ERROR MMU fault is still pending. 2) the polling code has a large timeout 3) re-entering means a new ioctl/devctl Bug 3425981 Change-Id: I422b15b581b0c3417abd4c66fbcdde9a0ff8cd9b Signed-off-by: Martin Radev <mradev@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2664103 Reviewed-by: svcacv <svcacv@nvidia.com> Reviewed-by: Vedashree Vidwans <vvidwans@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com> Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> GVS: Gerrit_Virtual_Submit
Description
No description provided