habanalabs: complete user context cleanup before hard reset
authorOmer Shpigelman <oshpigelman@habana.ai>
Wed, 13 Mar 2019 11:36:28 +0000 (13:36 +0200)
committerOded Gabbay <oded.gabbay@gmail.com>
Wed, 13 Mar 2019 11:36:28 +0000 (13:36 +0200)
commitf650a95b71026f5940804f273f9c36b60634131f
treebafe49399cb3acc158e5799f3a9008f2baf1b172
parent4eb1d1253ddd95e985c57fc99e9de6802dd2d867
habanalabs: complete user context cleanup before hard reset

This patch fixes a bug which led to a crash during hard reset flow.
Before a hard reset is executed, we wait a few seconds for the user
context cleanup to complete.
If it wasn't completed, we kill the user process and move on to the reset
flow.
Upon killing the user process, the context cleanup flow begins and may
take a while due to MMU unmaps.
Meanwhile, in the driver reset flow, we change the PCI DRAM bar location
which can interfere with the MMU that uses the bar.
If the context cleanup flow didn't finish quickly, a crash may occur due
to PCI DRAM bar mislocation during the MMU unmap.
Hence adding a wait between killing the user process and the start of the
reset flow.

Signed-off-by: Omer Shpigelman <oshpigelman@habana.ai>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
drivers/misc/habanalabs/device.c