CC: [email protected] TO: Oded Gabbay <[email protected]> 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 <[email protected]> Reported-by: Dan Carpenter <[email protected]> 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/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
