All of lore.kernel.org
 help / color / mirror / Atom feed
* [ogabbay:habanalabs-next 4/11] drivers/misc/habanalabs/common/device.c:1137 hl_device_reset() warn: missing error code 'rc'
@ 2021-02-23  2:18 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-02-23  2:18 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 38675 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Oded Gabbay <ogabbay@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git habanalabs-next
head:   ea9bcaec82e5895e1090b36a850c119075ca590e
commit: 5755bd9a5a1212b52dbbb5864a863d5dc20c91cb [4/11] habanalabs: fail reset if device is not idle
:::::: branch date: 7 hours ago
:::::: commit date: 7 hours ago
config: x86_64-randconfig-m031-20210222 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/misc/habanalabs/common/device.c:1137 hl_device_reset() warn: missing error code 'rc'

Old smatch warnings:
drivers/misc/habanalabs/common/device.c:1400 hl_device_init() warn: missing error code 'rc'

vim +/rc +1137 drivers/misc/habanalabs/common/device.c

f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   889  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   890  /*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   891   * hl_device_reset - reset the device
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   892   *
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   893   * @hdev: pointer to habanalabs device structure
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   894   * @hard_reset: should we do hard reset to all engines or just reset the
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   895   *              compute/dma engines
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   896   * @from_hard_reset_thread: is the caller the hard-reset thread
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   897   *
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   898   * Block future CS and wait for pending CS to be enqueued
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   899   * Call ASIC H/W fini
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   900   * Flush all completions
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   901   * Re-initialize all internal data structures
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   902   * Call ASIC H/W init, late_init
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   903   * Test queues
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   904   * Enable device
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   905   *
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   906   * Returns 0 for success or an error on failure.
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   907   */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   908  int hl_device_reset(struct hl_device *hdev, bool hard_reset,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   909  			bool from_hard_reset_thread)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   910  {
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16   911  	u64 idle_mask[HL_BUSY_ENGINES_MASK_EXT_SIZE] = {0};
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   912  	int i, rc;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   913  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   914  	if (!hdev->init_done) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   915  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   916  			"Can't reset before initialization is done\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   917  		return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   918  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   919  
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   920  	if ((!hard_reset) && (!hdev->supports_soft_reset)) {
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   921  		dev_dbg(hdev->dev, "Doing hard-reset instead of soft-reset\n");
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   922  		hard_reset = true;
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   923  	}
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   924  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   925  	/* Re-entry of reset thread */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   926  	if (from_hard_reset_thread && hdev->process_kill_trial_cnt)
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   927  		goto kill_processes;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   928  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   929  	/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   930  	 * Prevent concurrency in this function - only one reset should be
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   931  	 * done at any given time. Only need to perform this if we didn't
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   932  	 * get from the dedicated hard reset thread
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   933  	 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   934  	if (!from_hard_reset_thread) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   935  		/* Block future CS/VM/JOB completion operations */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   936  		rc = atomic_cmpxchg(&hdev->in_reset, 0, 1);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   937  		if (rc)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   938  			return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   939  
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   940  		if (hard_reset) {
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   941  			/* Disable PCI access from device F/W so he won't send
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   942  			 * us additional interrupts. We disable MSI/MSI-X at
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   943  			 * the halt_engines function and we can't have the F/W
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   944  			 * sending us interrupts after that. We need to disable
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   945  			 * the access here because if the device is marked
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   946  			 * disable, the message won't be send. Also, in case
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   947  			 * of heartbeat, the device CPU is marked as disable
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   948  			 * so this message won't be sent
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   949  			 */
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   950  			if (hl_fw_send_pci_access_msg(hdev,
2f55342c5e4d3e drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-08-15   951  					CPUCP_PACKET_DISABLE_PCI_ACCESS))
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   952  				dev_warn(hdev->dev,
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   953  					"Failed to disable PCI access by F/W\n");
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   954  		}
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   955  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   956  		/* This also blocks future CS/VM/JOB completion operations */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   957  		hdev->disabled = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   958  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   959  		/* Flush anyone that is inside the critical section of enqueue
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   960  		 * jobs to the H/W
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   961  		 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   962  		hdev->asic_funcs->hw_queues_lock(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   963  		hdev->asic_funcs->hw_queues_unlock(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   964  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   965  		/* Flush anyone that is inside device open */
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   966  		mutex_lock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   967  		mutex_unlock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   968  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   969  		dev_err(hdev->dev, "Going to RESET device!\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   970  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   971  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   972  again:
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   973  	if ((hard_reset) && (!from_hard_reset_thread)) {
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06   974  		hdev->hard_reset_pending = true;
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06   975  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   976  		hdev->process_kill_trial_cnt = 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   977  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   978  		/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   979  		 * Because the reset function can't run from interrupt or
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   980  		 * from heartbeat work, we need to call the reset function
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   981  		 * from a dedicated work
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   982  		 */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   983  		queue_delayed_work(hdev->device_reset_work.wq,
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   984  			&hdev->device_reset_work.reset_work, 0);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   985  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   986  		return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   987  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   988  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   989  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   990  		device_late_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   991  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   992  		/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   993  		 * Now that the heartbeat thread is closed, flush processes
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   994  		 * which are sending messages to CPU
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   995  		 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   996  		mutex_lock(&hdev->send_cpu_message_lock);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   997  		mutex_unlock(&hdev->send_cpu_message_lock);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   998  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   999  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1000  	/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1001  	 * Halt the engines and disable interrupts so we won't get any more
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1002  	 * completions from H/W and we won't have any accesses from the
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1003  	 * H/W to the host machine
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1004  	 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1005  	hdev->asic_funcs->halt_engines(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1006  
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1007  	/* Go over all the queues, release all CS and their jobs */
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1008  	hl_cs_rollback_all(hdev);
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1009  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1010  kill_processes:
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1011  	if (hard_reset) {
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1012  		/* Kill processes here after CS rollback. This is because the
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1013  		 * process can't really exit until all its CSs are done, which
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1014  		 * is what we do in cs rollback
4aecb05e526a42 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-22  1015  		 */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1016  		rc = device_kill_open_processes(hdev, 0);
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1017  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1018  		if (rc == -EBUSY) {
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1019  			if (hdev->device_fini_pending) {
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1020  				dev_crit(hdev->dev,
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1021  					"Failed to kill all open processes, stopping hard reset\n");
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1022  				goto out_err;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1023  			}
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1024  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1025  			/* signal reset thread to reschedule */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1026  			return rc;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1027  		}
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1028  
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1029  		if (rc) {
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1030  			dev_crit(hdev->dev,
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1031  				"Failed to kill all open processes, stopping hard reset\n");
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1032  			goto out_err;
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1033  		}
4aecb05e526a42 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-22  1034  
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1035  		/* Flush the Event queue workers to make sure no other thread is
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1036  		 * reading or writing to registers during the reset
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1037  		 */
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1038  		flush_workqueue(hdev->eq_wq);
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1039  	}
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1040  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1041  	/* Reset the H/W. It will be in idle state after this returns */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1042  	hdev->asic_funcs->hw_fini(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1043  
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1044  	if (hard_reset) {
9e2e8fc7d65c9c drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-09-23  1045  		/* Release kernel context */
aa6df6533b8f9e drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-01-11  1046  		if (hdev->kernel_ctx && hl_ctx_put(hdev->kernel_ctx) == 1)
9e2e8fc7d65c9c drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-09-23  1047  			hdev->kernel_ctx = NULL;
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1048  		hl_vm_fini(hdev);
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1049  		hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1050  		hl_eq_reset(hdev, &hdev->event_queue);
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1051  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1052  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1053  	/* Re-initialize PI,CI to 0 in all queues (hw queue, cq) */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1054  	hl_hw_queue_reset(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1055  	for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1056  		hl_cq_reset(hdev, &hdev->completion_queue[i]);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1057  
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1058  	hdev->idle_busy_ts_idx = 0;
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1059  	hdev->idle_busy_ts_arr[0].busy_to_idle_ts = ktime_set(0, 0);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1060  	hdev->idle_busy_ts_arr[0].idle_to_busy_ts = ktime_set(0, 0);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1061  
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1062  	if (hdev->cs_active_cnt)
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1063  		dev_crit(hdev->dev, "CS active cnt %d is not 0 during reset\n",
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1064  			hdev->cs_active_cnt);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1065  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1066  	mutex_lock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1067  
027d35d0b6999c drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-25  1068  	/* Make sure the context switch phase will run again */
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1069  	if (hdev->compute_ctx) {
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1070  		atomic_set(&hdev->compute_ctx->thread_ctx_switch_token, 1);
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1071  		hdev->compute_ctx->thread_ctx_switch_wait_token = 0;
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1072  	}
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1073  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1074  	mutex_unlock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1075  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1076  	/* Finished tear-down, starting to re-initialize */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1077  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1078  	if (hard_reset) {
a28ce422a6d926 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-28  1079  		hdev->device_cpu_disabled = false;
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06  1080  		hdev->hard_reset_pending = false;
a28ce422a6d926 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-28  1081  
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1082  		if (hdev->kernel_ctx) {
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1083  			dev_crit(hdev->dev,
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1084  				"kernel ctx was alive during hard reset, something is terribly wrong\n");
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1085  			rc = -EBUSY;
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1086  			goto out_err;
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1087  		}
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1088  
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1089  		rc = hl_mmu_init(hdev);
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1090  		if (rc) {
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1091  			dev_err(hdev->dev,
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1092  				"Failed to initialize MMU S/W after hard reset\n");
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1093  			goto out_err;
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1094  		}
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1095  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1096  		/* Allocate the kernel context */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1097  		hdev->kernel_ctx = kzalloc(sizeof(*hdev->kernel_ctx),
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1098  						GFP_KERNEL);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1099  		if (!hdev->kernel_ctx) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1100  			rc = -ENOMEM;
b000700d6db50c drivers/misc/habanalabs/common/device.c Dinghao Liu     2020-12-26  1101  			hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1102  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1103  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1104  
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1105  		hdev->compute_ctx = NULL;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1106  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1107  		rc = hl_ctx_init(hdev, hdev->kernel_ctx, true);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1108  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1109  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1110  				"failed to init kernel ctx in hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1111  			kfree(hdev->kernel_ctx);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1112  			hdev->kernel_ctx = NULL;
b000700d6db50c drivers/misc/habanalabs/common/device.c Dinghao Liu     2020-12-26  1113  			hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1114  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1115  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1116  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1117  
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1118  	/* Device is now enabled as part of the initialization requires
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1119  	 * communication with the device firmware to get information that
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1120  	 * is required for the initialization itself
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1121  	 */
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1122  	hdev->disabled = false;
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1123  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1124  	rc = hdev->asic_funcs->hw_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1125  	if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1126  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1127  			"failed to initialize the H/W after reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1128  		goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1129  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1130  
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1131  	/* If device is not idle fail the reset process */
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1132  	if (!hdev->asic_funcs->is_device_idle(hdev, idle_mask,
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1133  			HL_BUSY_ENGINES_MASK_EXT_SIZE, NULL)) {
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1134  		dev_err(hdev->dev,
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1135  			"device is not idle (mask %#llx %#llx) after reset\n",
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1136  			idle_mask[0], idle_mask[1]);
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16 @1137  		goto out_err;
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1138  	}
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1139  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1140  	/* Check that the communication with the device is working */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1141  	rc = hdev->asic_funcs->test_queues(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1142  	if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1143  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1144  			"Failed to detect if device is alive after reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1145  		goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1146  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1147  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1148  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1149  		rc = device_late_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1150  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1151  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1152  				"Failed late init after hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1153  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1154  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1155  
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1156  		rc = hl_vm_init(hdev);
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1157  		if (rc) {
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1158  			dev_err(hdev->dev,
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1159  				"Failed to init memory module after hard reset\n");
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1160  			goto out_err;
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1161  		}
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1162  
58361aae4b0eed drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-08-08  1163  		hl_set_max_power(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1164  	} else {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1165  		rc = hdev->asic_funcs->soft_reset_late_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1166  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1167  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1168  				"Failed late init after soft reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1169  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1170  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1171  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1172  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1173  	atomic_set(&hdev->in_reset, 0);
66a76401c50b26 drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-05  1174  	hdev->needs_reset = false;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1175  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1176  	dev_notice(hdev->dev, "Successfully finished resetting the device\n");
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1177  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1178  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1179  		hdev->hard_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1180  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1181  		/* After reset is done, we are ready to receive events from
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1182  		 * the F/W. We can't do it before because we will ignore events
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1183  		 * and if those events are fatal, we won't know about it and
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1184  		 * the device will be operational although it shouldn't be
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1185  		 */
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1186  		hdev->asic_funcs->enable_events_from_fw(hdev);
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1187  	} else {
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1188  		hdev->soft_reset_cnt++;
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1189  	}
867b58ac944557 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-08  1190  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1191  	return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1192  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1193  out_err:
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1194  	hdev->disabled = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1195  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1196  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1197  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1198  			"Failed to reset! Device is NOT usable\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1199  		hdev->hard_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1200  	} else {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1201  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1202  			"Failed to do soft-reset, trying hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1203  		hdev->soft_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1204  		hard_reset = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1205  		goto again;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1206  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1207  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1208  	atomic_set(&hdev->in_reset, 0);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1209  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1210  	return rc;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1211  }
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1212  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32261 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [ogabbay:habanalabs-next 4/11] drivers/misc/habanalabs/common/device.c:1137 hl_device_reset() warn: missing error code 'rc'
@ 2021-02-23  7:53 ` Dan Carpenter
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2021-02-23  7:53 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 36215 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git habanalabs-next
head:   ea9bcaec82e5895e1090b36a850c119075ca590e
commit: 5755bd9a5a1212b52dbbb5864a863d5dc20c91cb [4/11] habanalabs: fail reset if device is not idle
config: x86_64-randconfig-m031-20210222 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/misc/habanalabs/common/device.c:1137 hl_device_reset() warn: missing error code 'rc'

Old smatch warnings:
drivers/misc/habanalabs/common/device.c:1400 hl_device_init() warn: missing error code 'rc'

vim +/rc +1137 drivers/misc/habanalabs/common/device.c

f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   908  int hl_device_reset(struct hl_device *hdev, bool hard_reset,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   909  			bool from_hard_reset_thread)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   910  {
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16   911  	u64 idle_mask[HL_BUSY_ENGINES_MASK_EXT_SIZE] = {0};
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   912  	int i, rc;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   913  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   914  	if (!hdev->init_done) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   915  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   916  			"Can't reset before initialization is done\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   917  		return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   918  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   919  
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   920  	if ((!hard_reset) && (!hdev->supports_soft_reset)) {
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   921  		dev_dbg(hdev->dev, "Doing hard-reset instead of soft-reset\n");
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   922  		hard_reset = true;
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   923  	}
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   924  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   925  	/* Re-entry of reset thread */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   926  	if (from_hard_reset_thread && hdev->process_kill_trial_cnt)
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   927  		goto kill_processes;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   928  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   929  	/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   930  	 * Prevent concurrency in this function - only one reset should be
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   931  	 * done at any given time. Only need to perform this if we didn't
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   932  	 * get from the dedicated hard reset thread
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   933  	 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   934  	if (!from_hard_reset_thread) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   935  		/* Block future CS/VM/JOB completion operations */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   936  		rc = atomic_cmpxchg(&hdev->in_reset, 0, 1);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   937  		if (rc)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   938  			return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   939  
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   940  		if (hard_reset) {
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   941  			/* Disable PCI access from device F/W so he won't send
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   942  			 * us additional interrupts. We disable MSI/MSI-X at
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   943  			 * the halt_engines function and we can't have the F/W
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   944  			 * sending us interrupts after that. We need to disable
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   945  			 * the access here because if the device is marked
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   946  			 * disable, the message won't be send. Also, in case
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   947  			 * of heartbeat, the device CPU is marked as disable
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   948  			 * so this message won't be sent
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   949  			 */
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   950  			if (hl_fw_send_pci_access_msg(hdev,
2f55342c5e4d3e drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-08-15   951  					CPUCP_PACKET_DISABLE_PCI_ACCESS))
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   952  				dev_warn(hdev->dev,
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   953  					"Failed to disable PCI access by F/W\n");
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   954  		}
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   955  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   956  		/* This also blocks future CS/VM/JOB completion operations */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   957  		hdev->disabled = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   958  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   959  		/* Flush anyone that is inside the critical section of enqueue
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   960  		 * jobs to the H/W
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   961  		 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   962  		hdev->asic_funcs->hw_queues_lock(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   963  		hdev->asic_funcs->hw_queues_unlock(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   964  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   965  		/* Flush anyone that is inside device open */
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   966  		mutex_lock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   967  		mutex_unlock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   968  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   969  		dev_err(hdev->dev, "Going to RESET device!\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   970  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   971  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   972  again:
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   973  	if ((hard_reset) && (!from_hard_reset_thread)) {
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06   974  		hdev->hard_reset_pending = true;
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06   975  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   976  		hdev->process_kill_trial_cnt = 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   977  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   978  		/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   979  		 * Because the reset function can't run from interrupt or
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   980  		 * from heartbeat work, we need to call the reset function
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   981  		 * from a dedicated work
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   982  		 */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   983  		queue_delayed_work(hdev->device_reset_work.wq,
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   984  			&hdev->device_reset_work.reset_work, 0);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   985  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   986  		return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   987  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   988  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   989  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   990  		device_late_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   991  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   992  		/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   993  		 * Now that the heartbeat thread is closed, flush processes
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   994  		 * which are sending messages to CPU
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   995  		 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   996  		mutex_lock(&hdev->send_cpu_message_lock);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   997  		mutex_unlock(&hdev->send_cpu_message_lock);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   998  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   999  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1000  	/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1001  	 * Halt the engines and disable interrupts so we won't get any more
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1002  	 * completions from H/W and we won't have any accesses from the
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1003  	 * H/W to the host machine
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1004  	 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1005  	hdev->asic_funcs->halt_engines(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1006  
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1007  	/* Go over all the queues, release all CS and their jobs */
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1008  	hl_cs_rollback_all(hdev);
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1009  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1010  kill_processes:
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1011  	if (hard_reset) {
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1012  		/* Kill processes here after CS rollback. This is because the
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1013  		 * process can't really exit until all its CSs are done, which
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1014  		 * is what we do in cs rollback
4aecb05e526a42 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-22  1015  		 */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1016  		rc = device_kill_open_processes(hdev, 0);
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1017  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1018  		if (rc == -EBUSY) {
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1019  			if (hdev->device_fini_pending) {
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1020  				dev_crit(hdev->dev,
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1021  					"Failed to kill all open processes, stopping hard reset\n");
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1022  				goto out_err;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1023  			}
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1024  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1025  			/* signal reset thread to reschedule */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1026  			return rc;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1027  		}
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1028  
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1029  		if (rc) {
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1030  			dev_crit(hdev->dev,
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1031  				"Failed to kill all open processes, stopping hard reset\n");
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1032  			goto out_err;
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1033  		}
4aecb05e526a42 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-22  1034  
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1035  		/* Flush the Event queue workers to make sure no other thread is
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1036  		 * reading or writing to registers during the reset
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1037  		 */
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1038  		flush_workqueue(hdev->eq_wq);
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1039  	}
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1040  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1041  	/* Reset the H/W. It will be in idle state after this returns */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1042  	hdev->asic_funcs->hw_fini(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1043  
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1044  	if (hard_reset) {
9e2e8fc7d65c9c drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-09-23  1045  		/* Release kernel context */
aa6df6533b8f9e drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-01-11  1046  		if (hdev->kernel_ctx && hl_ctx_put(hdev->kernel_ctx) == 1)
9e2e8fc7d65c9c drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-09-23  1047  			hdev->kernel_ctx = NULL;
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1048  		hl_vm_fini(hdev);
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1049  		hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1050  		hl_eq_reset(hdev, &hdev->event_queue);
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1051  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1052  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1053  	/* Re-initialize PI,CI to 0 in all queues (hw queue, cq) */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1054  	hl_hw_queue_reset(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1055  	for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1056  		hl_cq_reset(hdev, &hdev->completion_queue[i]);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1057  
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1058  	hdev->idle_busy_ts_idx = 0;
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1059  	hdev->idle_busy_ts_arr[0].busy_to_idle_ts = ktime_set(0, 0);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1060  	hdev->idle_busy_ts_arr[0].idle_to_busy_ts = ktime_set(0, 0);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1061  
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1062  	if (hdev->cs_active_cnt)
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1063  		dev_crit(hdev->dev, "CS active cnt %d is not 0 during reset\n",
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1064  			hdev->cs_active_cnt);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1065  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1066  	mutex_lock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1067  
027d35d0b6999c drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-25  1068  	/* Make sure the context switch phase will run again */
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1069  	if (hdev->compute_ctx) {
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1070  		atomic_set(&hdev->compute_ctx->thread_ctx_switch_token, 1);
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1071  		hdev->compute_ctx->thread_ctx_switch_wait_token = 0;
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1072  	}
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1073  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1074  	mutex_unlock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1075  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1076  	/* Finished tear-down, starting to re-initialize */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1077  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1078  	if (hard_reset) {
a28ce422a6d926 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-28  1079  		hdev->device_cpu_disabled = false;
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06  1080  		hdev->hard_reset_pending = false;
a28ce422a6d926 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-28  1081  
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1082  		if (hdev->kernel_ctx) {
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1083  			dev_crit(hdev->dev,
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1084  				"kernel ctx was alive during hard reset, something is terribly wrong\n");
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1085  			rc = -EBUSY;
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1086  			goto out_err;
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1087  		}
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1088  
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1089  		rc = hl_mmu_init(hdev);
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1090  		if (rc) {
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1091  			dev_err(hdev->dev,
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1092  				"Failed to initialize MMU S/W after hard reset\n");
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1093  			goto out_err;
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1094  		}
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1095  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1096  		/* Allocate the kernel context */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1097  		hdev->kernel_ctx = kzalloc(sizeof(*hdev->kernel_ctx),
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1098  						GFP_KERNEL);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1099  		if (!hdev->kernel_ctx) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1100  			rc = -ENOMEM;
b000700d6db50c drivers/misc/habanalabs/common/device.c Dinghao Liu     2020-12-26  1101  			hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1102  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1103  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1104  
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1105  		hdev->compute_ctx = NULL;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1106  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1107  		rc = hl_ctx_init(hdev, hdev->kernel_ctx, true);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1108  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1109  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1110  				"failed to init kernel ctx in hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1111  			kfree(hdev->kernel_ctx);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1112  			hdev->kernel_ctx = NULL;
b000700d6db50c drivers/misc/habanalabs/common/device.c Dinghao Liu     2020-12-26  1113  			hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1114  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1115  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1116  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1117  
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1118  	/* Device is now enabled as part of the initialization requires
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1119  	 * communication with the device firmware to get information that
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1120  	 * is required for the initialization itself
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1121  	 */
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1122  	hdev->disabled = false;
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1123  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1124  	rc = hdev->asic_funcs->hw_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1125  	if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1126  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1127  			"failed to initialize the H/W after reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1128  		goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1129  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1130  
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1131  	/* If device is not idle fail the reset process */
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1132  	if (!hdev->asic_funcs->is_device_idle(hdev, idle_mask,
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1133  			HL_BUSY_ENGINES_MASK_EXT_SIZE, NULL)) {
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1134  		dev_err(hdev->dev,
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1135  			"device is not idle (mask %#llx %#llx) after reset\n",
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1136  			idle_mask[0], idle_mask[1]);
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16 @1137  		goto out_err;

"rc = -EIO;" ?

5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1138  	}
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1139  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1140  	/* Check that the communication with the device is working */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1141  	rc = hdev->asic_funcs->test_queues(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1142  	if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1143  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1144  			"Failed to detect if device is alive after reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1145  		goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1146  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1147  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1148  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1149  		rc = device_late_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1150  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1151  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1152  				"Failed late init after hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1153  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1154  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1155  
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1156  		rc = hl_vm_init(hdev);
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1157  		if (rc) {
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1158  			dev_err(hdev->dev,
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1159  				"Failed to init memory module after hard reset\n");
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1160  			goto out_err;
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1161  		}
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1162  
58361aae4b0eed drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-08-08  1163  		hl_set_max_power(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1164  	} else {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1165  		rc = hdev->asic_funcs->soft_reset_late_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1166  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1167  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1168  				"Failed late init after soft reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1169  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1170  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1171  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1172  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1173  	atomic_set(&hdev->in_reset, 0);
66a76401c50b26 drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-05  1174  	hdev->needs_reset = false;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1175  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1176  	dev_notice(hdev->dev, "Successfully finished resetting the device\n");
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1177  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1178  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1179  		hdev->hard_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1180  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1181  		/* After reset is done, we are ready to receive events from
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1182  		 * the F/W. We can't do it before because we will ignore events
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1183  		 * and if those events are fatal, we won't know about it and
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1184  		 * the device will be operational although it shouldn't be
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1185  		 */
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1186  		hdev->asic_funcs->enable_events_from_fw(hdev);
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1187  	} else {
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1188  		hdev->soft_reset_cnt++;
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1189  	}
867b58ac944557 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-08  1190  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1191  	return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1192  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1193  out_err:
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1194  	hdev->disabled = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1195  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1196  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1197  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1198  			"Failed to reset! Device is NOT usable\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1199  		hdev->hard_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1200  	} else {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1201  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1202  			"Failed to do soft-reset, trying hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1203  		hdev->soft_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1204  		hard_reset = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1205  		goto again;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1206  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1207  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1208  	atomic_set(&hdev->in_reset, 0);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1209  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1210  	return rc;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1211  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32261 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [ogabbay:habanalabs-next 4/11] drivers/misc/habanalabs/common/device.c:1137 hl_device_reset() warn: missing error code 'rc'
@ 2021-02-23  7:53 ` Dan Carpenter
  0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2021-02-23  7:53 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 36215 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/ogabbay/linux.git habanalabs-next
head:   ea9bcaec82e5895e1090b36a850c119075ca590e
commit: 5755bd9a5a1212b52dbbb5864a863d5dc20c91cb [4/11] habanalabs: fail reset if device is not idle
config: x86_64-randconfig-m031-20210222 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/misc/habanalabs/common/device.c:1137 hl_device_reset() warn: missing error code 'rc'

Old smatch warnings:
drivers/misc/habanalabs/common/device.c:1400 hl_device_init() warn: missing error code 'rc'

vim +/rc +1137 drivers/misc/habanalabs/common/device.c

f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   908  int hl_device_reset(struct hl_device *hdev, bool hard_reset,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   909  			bool from_hard_reset_thread)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   910  {
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16   911  	u64 idle_mask[HL_BUSY_ENGINES_MASK_EXT_SIZE] = {0};
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   912  	int i, rc;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   913  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   914  	if (!hdev->init_done) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   915  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   916  			"Can't reset before initialization is done\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   917  		return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   918  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   919  
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   920  	if ((!hard_reset) && (!hdev->supports_soft_reset)) {
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   921  		dev_dbg(hdev->dev, "Doing hard-reset instead of soft-reset\n");
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   922  		hard_reset = true;
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   923  	}
66446820df1864 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-05-18   924  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   925  	/* Re-entry of reset thread */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   926  	if (from_hard_reset_thread && hdev->process_kill_trial_cnt)
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   927  		goto kill_processes;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   928  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   929  	/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   930  	 * Prevent concurrency in this function - only one reset should be
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   931  	 * done at any given time. Only need to perform this if we didn't
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   932  	 * get from the dedicated hard reset thread
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   933  	 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   934  	if (!from_hard_reset_thread) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   935  		/* Block future CS/VM/JOB completion operations */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   936  		rc = atomic_cmpxchg(&hdev->in_reset, 0, 1);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   937  		if (rc)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   938  			return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   939  
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   940  		if (hard_reset) {
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   941  			/* Disable PCI access from device F/W so he won't send
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   942  			 * us additional interrupts. We disable MSI/MSI-X at
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   943  			 * the halt_engines function and we can't have the F/W
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   944  			 * sending us interrupts after that. We need to disable
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   945  			 * the access here because if the device is marked
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   946  			 * disable, the message won't be send. Also, in case
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   947  			 * of heartbeat, the device CPU is marked as disable
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   948  			 * so this message won't be sent
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   949  			 */
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   950  			if (hl_fw_send_pci_access_msg(hdev,
2f55342c5e4d3e drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-08-15   951  					CPUCP_PACKET_DISABLE_PCI_ACCESS))
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   952  				dev_warn(hdev->dev,
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   953  					"Failed to disable PCI access by F/W\n");
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   954  		}
c83c4171933bc4 drivers/misc/habanalabs/device.c        Oded Gabbay     2020-07-05   955  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   956  		/* This also blocks future CS/VM/JOB completion operations */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   957  		hdev->disabled = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   958  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   959  		/* Flush anyone that is inside the critical section of enqueue
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   960  		 * jobs to the H/W
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   961  		 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   962  		hdev->asic_funcs->hw_queues_lock(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   963  		hdev->asic_funcs->hw_queues_unlock(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   964  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   965  		/* Flush anyone that is inside device open */
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   966  		mutex_lock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   967  		mutex_unlock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30   968  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   969  		dev_err(hdev->dev, "Going to RESET device!\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   970  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   971  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   972  again:
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   973  	if ((hard_reset) && (!from_hard_reset_thread)) {
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06   974  		hdev->hard_reset_pending = true;
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06   975  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   976  		hdev->process_kill_trial_cnt = 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   977  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   978  		/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   979  		 * Because the reset function can't run from interrupt or
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   980  		 * from heartbeat work, we need to call the reset function
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   981  		 * from a dedicated work
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   982  		 */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   983  		queue_delayed_work(hdev->device_reset_work.wq,
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08   984  			&hdev->device_reset_work.reset_work, 0);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   985  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   986  		return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   987  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   988  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   989  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   990  		device_late_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   991  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   992  		/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   993  		 * Now that the heartbeat thread is closed, flush processes
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   994  		 * which are sending messages to CPU
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   995  		 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   996  		mutex_lock(&hdev->send_cpu_message_lock);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   997  		mutex_unlock(&hdev->send_cpu_message_lock);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   998  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16   999  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1000  	/*
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1001  	 * Halt the engines and disable interrupts so we won't get any more
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1002  	 * completions from H/W and we won't have any accesses from the
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1003  	 * H/W to the host machine
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1004  	 */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1005  	hdev->asic_funcs->halt_engines(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1006  
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1007  	/* Go over all the queues, release all CS and their jobs */
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1008  	hl_cs_rollback_all(hdev);
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1009  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1010  kill_processes:
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1011  	if (hard_reset) {
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1012  		/* Kill processes here after CS rollback. This is because the
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1013  		 * process can't really exit until all its CSs are done, which
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1014  		 * is what we do in cs rollback
4aecb05e526a42 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-22  1015  		 */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1016  		rc = device_kill_open_processes(hdev, 0);
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1017  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1018  		if (rc == -EBUSY) {
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1019  			if (hdev->device_fini_pending) {
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1020  				dev_crit(hdev->dev,
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1021  					"Failed to kill all open processes, stopping hard reset\n");
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1022  				goto out_err;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1023  			}
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1024  
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1025  			/* signal reset thread to reschedule */
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1026  			return rc;
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1027  		}
adb51298fdc41b drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-08  1028  
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1029  		if (rc) {
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1030  			dev_crit(hdev->dev,
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1031  				"Failed to kill all open processes, stopping hard reset\n");
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1032  			goto out_err;
36fafe87edd636 drivers/misc/habanalabs/device.c        Omer Shpigelman 2020-05-18  1033  		}
4aecb05e526a42 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-22  1034  
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1035  		/* Flush the Event queue workers to make sure no other thread is
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1036  		 * reading or writing to registers during the reset
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1037  		 */
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1038  		flush_workqueue(hdev->eq_wq);
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1039  	}
55f6d680970ea9 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-11-17  1040  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1041  	/* Reset the H/W. It will be in idle state after this returns */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1042  	hdev->asic_funcs->hw_fini(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1043  
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1044  	if (hard_reset) {
9e2e8fc7d65c9c drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-09-23  1045  		/* Release kernel context */
aa6df6533b8f9e drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-01-11  1046  		if (hdev->kernel_ctx && hl_ctx_put(hdev->kernel_ctx) == 1)
9e2e8fc7d65c9c drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-09-23  1047  			hdev->kernel_ctx = NULL;
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1048  		hl_vm_fini(hdev);
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1049  		hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1050  		hl_eq_reset(hdev, &hdev->event_queue);
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1051  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1052  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1053  	/* Re-initialize PI,CI to 0 in all queues (hw queue, cq) */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1054  	hl_hw_queue_reset(hdev, hard_reset);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1055  	for (i = 0 ; i < hdev->asic_prop.completion_queues_count ; i++)
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1056  		hl_cq_reset(hdev, &hdev->completion_queue[i]);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1057  
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1058  	hdev->idle_busy_ts_idx = 0;
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1059  	hdev->idle_busy_ts_arr[0].busy_to_idle_ts = ktime_set(0, 0);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1060  	hdev->idle_busy_ts_arr[0].idle_to_busy_ts = ktime_set(0, 0);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1061  
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1062  	if (hdev->cs_active_cnt)
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1063  		dev_crit(hdev->dev, "CS active cnt %d is not 0 during reset\n",
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1064  			hdev->cs_active_cnt);
75b3cb2bb08037 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-28  1065  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1066  	mutex_lock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1067  
027d35d0b6999c drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-25  1068  	/* Make sure the context switch phase will run again */
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1069  	if (hdev->compute_ctx) {
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1070  		atomic_set(&hdev->compute_ctx->thread_ctx_switch_token, 1);
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1071  		hdev->compute_ctx->thread_ctx_switch_wait_token = 0;
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1072  	}
eff6f4a0e70b7b drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1073  
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1074  	mutex_unlock(&hdev->fpriv_list_lock);
eb7caf84b02938 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1075  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1076  	/* Finished tear-down, starting to re-initialize */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1077  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1078  	if (hard_reset) {
a28ce422a6d926 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-28  1079  		hdev->device_cpu_disabled = false;
3f5398cfbf051d drivers/misc/habanalabs/device.c        Oded Gabbay     2019-04-06  1080  		hdev->hard_reset_pending = false;
a28ce422a6d926 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-28  1081  
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1082  		if (hdev->kernel_ctx) {
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1083  			dev_crit(hdev->dev,
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1084  				"kernel ctx was alive during hard reset, something is terribly wrong\n");
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1085  			rc = -EBUSY;
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1086  			goto out_err;
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1087  		}
0878a42086e0a6 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-03-17  1088  
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1089  		rc = hl_mmu_init(hdev);
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1090  		if (rc) {
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1091  			dev_err(hdev->dev,
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1092  				"Failed to initialize MMU S/W after hard reset\n");
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1093  			goto out_err;
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1094  		}
37d68ce5274fac drivers/misc/habanalabs/device.c        Oded Gabbay     2019-05-29  1095  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1096  		/* Allocate the kernel context */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1097  		hdev->kernel_ctx = kzalloc(sizeof(*hdev->kernel_ctx),
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1098  						GFP_KERNEL);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1099  		if (!hdev->kernel_ctx) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1100  			rc = -ENOMEM;
b000700d6db50c drivers/misc/habanalabs/common/device.c Dinghao Liu     2020-12-26  1101  			hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1102  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1103  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1104  
86d5307a6d3507 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-07-30  1105  		hdev->compute_ctx = NULL;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1106  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1107  		rc = hl_ctx_init(hdev, hdev->kernel_ctx, true);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1108  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1109  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1110  				"failed to init kernel ctx in hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1111  			kfree(hdev->kernel_ctx);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1112  			hdev->kernel_ctx = NULL;
b000700d6db50c drivers/misc/habanalabs/common/device.c Dinghao Liu     2020-12-26  1113  			hl_mmu_fini(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1114  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1115  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1116  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1117  
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1118  	/* Device is now enabled as part of the initialization requires
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1119  	 * communication with the device firmware to get information that
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1120  	 * is required for the initialization itself
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1121  	 */
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1122  	hdev->disabled = false;
8df8cb1efc1962 drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-07-15  1123  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1124  	rc = hdev->asic_funcs->hw_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1125  	if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1126  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1127  			"failed to initialize the H/W after reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1128  		goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1129  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1130  
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1131  	/* If device is not idle fail the reset process */
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1132  	if (!hdev->asic_funcs->is_device_idle(hdev, idle_mask,
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1133  			HL_BUSY_ENGINES_MASK_EXT_SIZE, NULL)) {
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1134  		dev_err(hdev->dev,
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1135  			"device is not idle (mask %#llx %#llx) after reset\n",
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1136  			idle_mask[0], idle_mask[1]);
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16 @1137  		goto out_err;

"rc = -EIO;" ?

5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1138  	}
5755bd9a5a1212 drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-16  1139  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1140  	/* Check that the communication with the device is working */
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1141  	rc = hdev->asic_funcs->test_queues(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1142  	if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1143  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1144  			"Failed to detect if device is alive after reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1145  		goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1146  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1147  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1148  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1149  		rc = device_late_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1150  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1151  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1152  				"Failed late init after hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1153  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1154  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1155  
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1156  		rc = hl_vm_init(hdev);
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1157  		if (rc) {
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1158  			dev_err(hdev->dev,
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1159  				"Failed to init memory module after hard reset\n");
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1160  			goto out_err;
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1161  		}
0feaf86d4e6950 drivers/misc/habanalabs/device.c        Omer Shpigelman 2019-02-16  1162  
58361aae4b0eed drivers/misc/habanalabs/common/device.c Oded Gabbay     2020-08-08  1163  		hl_set_max_power(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1164  	} else {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1165  		rc = hdev->asic_funcs->soft_reset_late_init(hdev);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1166  		if (rc) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1167  			dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1168  				"Failed late init after soft reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1169  			goto out_err;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1170  		}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1171  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1172  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1173  	atomic_set(&hdev->in_reset, 0);
66a76401c50b26 drivers/misc/habanalabs/common/device.c Ofir Bitton     2020-10-05  1174  	hdev->needs_reset = false;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1175  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1176  	dev_notice(hdev->dev, "Successfully finished resetting the device\n");
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1177  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1178  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1179  		hdev->hard_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1180  
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1181  		/* After reset is done, we are ready to receive events from
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1182  		 * the F/W. We can't do it before because we will ignore events
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1183  		 * and if those events are fatal, we won't know about it and
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1184  		 * the device will be operational although it shouldn't be
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1185  		 */
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1186  		hdev->asic_funcs->enable_events_from_fw(hdev);
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1187  	} else {
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1188  		hdev->soft_reset_cnt++;
28bcf1fdc408cd drivers/misc/habanalabs/common/device.c Oded Gabbay     2021-02-01  1189  	}
867b58ac944557 drivers/misc/habanalabs/device.c        Oded Gabbay     2019-08-08  1190  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1191  	return 0;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1192  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1193  out_err:
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1194  	hdev->disabled = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1195  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1196  	if (hard_reset) {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1197  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1198  			"Failed to reset! Device is NOT usable\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1199  		hdev->hard_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1200  	} else {
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1201  		dev_err(hdev->dev,
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1202  			"Failed to do soft-reset, trying hard reset\n");
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1203  		hdev->soft_reset_cnt++;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1204  		hard_reset = true;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1205  		goto again;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1206  	}
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1207  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1208  	atomic_set(&hdev->in_reset, 0);
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1209  
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1210  	return rc;
f8c8c7d5f1b0ea drivers/misc/habanalabs/device.c        Oded Gabbay     2019-02-16  1211  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32261 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-02-23  7:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-23  7:53 [ogabbay:habanalabs-next 4/11] drivers/misc/habanalabs/common/device.c:1137 hl_device_reset() warn: missing error code 'rc' Dan Carpenter
2021-02-23  7:53 ` Dan Carpenter
  -- strict thread matches above, loose matches on Subject: below --
2021-02-23  2:18 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.