mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
habanalabs: pass reset flags to reset thread
The reset flags used by the reset thread are currently a mix of hard-coded values and a specific flag which is passed from the context that initiates the reset. To make it easier to pass more flags in future from this context to the reset thread, modify it to pass all the original reset flags to the thread. Signed-off-by: Tomer Tayar <ttayar@habana.ai> Reviewed-by: Oded Gabbay <ogabbay@kernel.org> Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
This commit is contained in:
parent
2487f4a281
commit
d214636be8
2 changed files with 5 additions and 9 deletions
|
@ -324,16 +324,12 @@ static void device_cdev_sysfs_del(struct hl_device *hdev)
|
|||
static void device_hard_reset_pending(struct work_struct *work)
|
||||
{
|
||||
struct hl_device_reset_work *device_reset_work =
|
||||
container_of(work, struct hl_device_reset_work,
|
||||
reset_work.work);
|
||||
container_of(work, struct hl_device_reset_work, reset_work.work);
|
||||
struct hl_device *hdev = device_reset_work->hdev;
|
||||
u32 flags;
|
||||
int rc;
|
||||
|
||||
flags = HL_DRV_RESET_HARD | HL_DRV_RESET_FROM_RESET_THR;
|
||||
|
||||
if (device_reset_work->fw_reset)
|
||||
flags |= HL_DRV_RESET_BYPASS_REQ_TO_FW;
|
||||
flags = device_reset_work->flags | HL_DRV_RESET_FROM_RESET_THR;
|
||||
|
||||
rc = hl_device_reset(hdev, flags);
|
||||
if ((rc == -EBUSY) && !hdev->device_fini_pending) {
|
||||
|
@ -1040,7 +1036,7 @@ int hl_device_reset(struct hl_device *hdev, u32 flags)
|
|||
|
||||
hdev->process_kill_trial_cnt = 0;
|
||||
|
||||
hdev->device_reset_work.fw_reset = fw_reset;
|
||||
hdev->device_reset_work.flags = flags;
|
||||
|
||||
/*
|
||||
* Because the reset function can't run from heartbeat work,
|
||||
|
|
|
@ -2214,13 +2214,13 @@ struct hwmon_chip_info;
|
|||
* @wq: work queue for device reset procedure.
|
||||
* @reset_work: reset work to be done.
|
||||
* @hdev: habanalabs device structure.
|
||||
* @fw_reset: whether f/w will do the reset without us sending them a message to do it.
|
||||
* @flags: reset flags.
|
||||
*/
|
||||
struct hl_device_reset_work {
|
||||
struct workqueue_struct *wq;
|
||||
struct delayed_work reset_work;
|
||||
struct hl_device *hdev;
|
||||
bool fw_reset;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue