Lines Matching refs:persist
55 ret = pci_read_config_word(dev->persist->pdev, 0, &vendor_id);
76 if (!pci_channel_offline(dev->persist->pdev)) {
103 if (pci_channel_offline(dev->persist->pdev))
163 void mlx4_enter_error_state(struct mlx4_dev_persistent *persist)
171 mutex_lock(&persist->device_state_mutex);
172 if (persist->state & MLX4_DEVICE_STATE_INTERNAL_ERROR)
175 dev = persist->dev;
190 if (!pci_channel_offline(dev->persist->pdev))
193 dev->persist->state |= MLX4_DEVICE_STATE_INTERNAL_ERROR;
194 mutex_unlock(&persist->device_state_mutex);
202 mutex_unlock(&persist->device_state_mutex);
205 static void mlx4_handle_error_state(struct mlx4_dev_persistent *persist)
209 mlx4_enter_error_state(persist);
210 mutex_lock(&persist->interface_state_mutex);
211 if (persist->interface_state & MLX4_INTERFACE_STATE_UP &&
212 !(persist->interface_state & MLX4_INTERFACE_STATE_DELETION)) {
213 err = mlx4_restart_one(persist->pdev);
214 mlx4_info(persist->dev, "mlx4_restart_one was ended, ret=%d\n",
217 mutex_unlock(&persist->interface_state_mutex);
249 if (dev->persist->state & MLX4_DEVICE_STATE_INTERNAL_ERROR) {
260 queue_work(dev->persist->catas_wq, &dev->persist->catas_work);
265 struct mlx4_dev_persistent *persist =
269 mlx4_handle_error_state(persist);
282 addr = pci_resource_start(dev->persist->pdev,
310 if (dev->persist->interface_state & MLX4_INTERFACE_STATE_DELETION)
311 flush_workqueue(dev->persist->catas_wq);
316 INIT_WORK(&dev->persist->catas_work, catas_reset);
317 dev->persist->catas_wq = create_singlethread_workqueue("mlx4_health");
318 if (!dev->persist->catas_wq)
326 if (dev->persist->catas_wq) {
327 destroy_workqueue(dev->persist->catas_wq);
328 dev->persist->catas_wq = NULL;