Lines Matching refs:tgtdev
338 struct mpi3mr_tgt_dev *tgtdev; in mpi3mr_invalidate_devhandles() local
341 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) { in mpi3mr_invalidate_devhandles()
342 tgtdev->dev_handle = MPI3MR_INVALID_DEV_HANDLE; in mpi3mr_invalidate_devhandles()
343 if (tgtdev->starget && tgtdev->starget->hostdata) { in mpi3mr_invalidate_devhandles()
344 tgt_priv = tgtdev->starget->hostdata; in mpi3mr_invalidate_devhandles()
452 struct mpi3mr_tgt_dev *tgtdev; in mpi3mr_alloc_tgtdev() local
454 tgtdev = kzalloc(sizeof(*tgtdev), GFP_ATOMIC); in mpi3mr_alloc_tgtdev()
455 if (!tgtdev) in mpi3mr_alloc_tgtdev()
457 kref_init(&tgtdev->ref_count); in mpi3mr_alloc_tgtdev()
458 return tgtdev; in mpi3mr_alloc_tgtdev()
471 struct mpi3mr_tgt_dev *tgtdev) in mpi3mr_tgtdev_add_to_list() argument
476 mpi3mr_tgtdev_get(tgtdev); in mpi3mr_tgtdev_add_to_list()
477 INIT_LIST_HEAD(&tgtdev->list); in mpi3mr_tgtdev_add_to_list()
478 list_add_tail(&tgtdev->list, &mrioc->tgtdev_list); in mpi3mr_tgtdev_add_to_list()
492 struct mpi3mr_tgt_dev *tgtdev) in mpi3mr_tgtdev_del_from_list() argument
497 if (!list_empty(&tgtdev->list)) { in mpi3mr_tgtdev_del_from_list()
498 list_del_init(&tgtdev->list); in mpi3mr_tgtdev_del_from_list()
499 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_tgtdev_del_from_list()
517 struct mpi3mr_tgt_dev *tgtdev; in __mpi3mr_get_tgtdev_by_handle() local
520 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) in __mpi3mr_get_tgtdev_by_handle()
521 if (tgtdev->dev_handle == handle) in __mpi3mr_get_tgtdev_by_handle()
526 mpi3mr_tgtdev_get(tgtdev); in __mpi3mr_get_tgtdev_by_handle()
527 return tgtdev; in __mpi3mr_get_tgtdev_by_handle()
543 struct mpi3mr_tgt_dev *tgtdev; in mpi3mr_get_tgtdev_by_handle() local
547 tgtdev = __mpi3mr_get_tgtdev_by_handle(mrioc, handle); in mpi3mr_get_tgtdev_by_handle()
549 return tgtdev; in mpi3mr_get_tgtdev_by_handle()
565 struct mpi3mr_tgt_dev *tgtdev; in __mpi3mr_get_tgtdev_by_perst_id() local
568 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) in __mpi3mr_get_tgtdev_by_perst_id()
569 if (tgtdev->perst_id == persist_id) in __mpi3mr_get_tgtdev_by_perst_id()
574 mpi3mr_tgtdev_get(tgtdev); in __mpi3mr_get_tgtdev_by_perst_id()
575 return tgtdev; in __mpi3mr_get_tgtdev_by_perst_id()
591 struct mpi3mr_tgt_dev *tgtdev; in mpi3mr_get_tgtdev_by_perst_id() local
595 tgtdev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, persist_id); in mpi3mr_get_tgtdev_by_perst_id()
597 return tgtdev; in mpi3mr_get_tgtdev_by_perst_id()
613 struct mpi3mr_tgt_dev *tgtdev; in __mpi3mr_get_tgtdev_from_tgtpriv() local
616 tgtdev = tgt_priv->tgt_dev; in __mpi3mr_get_tgtdev_from_tgtpriv()
617 if (tgtdev) in __mpi3mr_get_tgtdev_from_tgtpriv()
618 mpi3mr_tgtdev_get(tgtdev); in __mpi3mr_get_tgtdev_from_tgtpriv()
619 return tgtdev; in __mpi3mr_get_tgtdev_from_tgtpriv()
634 struct mpi3mr_tgt_dev *tgtdev) in mpi3mr_remove_tgtdev_from_host() argument
639 __func__, tgtdev->dev_handle, (unsigned long long)tgtdev->wwid); in mpi3mr_remove_tgtdev_from_host()
640 if (tgtdev->starget && tgtdev->starget->hostdata) { in mpi3mr_remove_tgtdev_from_host()
641 tgt_priv = tgtdev->starget->hostdata; in mpi3mr_remove_tgtdev_from_host()
645 if (tgtdev->starget) { in mpi3mr_remove_tgtdev_from_host()
646 scsi_remove_target(&tgtdev->starget->dev); in mpi3mr_remove_tgtdev_from_host()
647 tgtdev->host_exposed = 0; in mpi3mr_remove_tgtdev_from_host()
650 __func__, tgtdev->dev_handle, (unsigned long long)tgtdev->wwid); in mpi3mr_remove_tgtdev_from_host()
668 struct mpi3mr_tgt_dev *tgtdev; in mpi3mr_report_tgtdev_to_host() local
670 tgtdev = mpi3mr_get_tgtdev_by_perst_id(mrioc, perst_id); in mpi3mr_report_tgtdev_to_host()
671 if (!tgtdev) { in mpi3mr_report_tgtdev_to_host()
675 if (tgtdev->is_hidden) { in mpi3mr_report_tgtdev_to_host()
679 if (!tgtdev->host_exposed && !mrioc->reset_in_progress) { in mpi3mr_report_tgtdev_to_host()
680 tgtdev->host_exposed = 1; in mpi3mr_report_tgtdev_to_host()
682 tgtdev->perst_id, in mpi3mr_report_tgtdev_to_host()
684 if (!tgtdev->starget) in mpi3mr_report_tgtdev_to_host()
685 tgtdev->host_exposed = 0; in mpi3mr_report_tgtdev_to_host()
688 if (tgtdev) in mpi3mr_report_tgtdev_to_host()
689 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_report_tgtdev_to_host()
735 struct mpi3mr_tgt_dev *tgtdev; in mpi3mr_update_sdev() local
737 tgtdev = (struct mpi3mr_tgt_dev *)data; in mpi3mr_update_sdev()
738 if (!tgtdev) in mpi3mr_update_sdev()
741 mpi3mr_change_queue_depth(sdev, tgtdev->q_depth); in mpi3mr_update_sdev()
742 switch (tgtdev->dev_type) { in mpi3mr_update_sdev()
746 tgtdev->dev_spec.pcie_inf.mdts / 512); in mpi3mr_update_sdev()
748 ((1 << tgtdev->dev_spec.pcie_inf.pgsz) - 1)); in mpi3mr_update_sdev()
769 struct mpi3mr_tgt_dev *tgtdev, *tgtdev_next; in mpi3mr_rfresh_tgtdevs() local
771 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list, in mpi3mr_rfresh_tgtdevs()
773 if ((tgtdev->dev_handle == MPI3MR_INVALID_DEV_HANDLE) && in mpi3mr_rfresh_tgtdevs()
774 tgtdev->host_exposed) { in mpi3mr_rfresh_tgtdevs()
775 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev); in mpi3mr_rfresh_tgtdevs()
776 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev); in mpi3mr_rfresh_tgtdevs()
777 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_rfresh_tgtdevs()
781 tgtdev = NULL; in mpi3mr_rfresh_tgtdevs()
782 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) { in mpi3mr_rfresh_tgtdevs()
783 if ((tgtdev->dev_handle != MPI3MR_INVALID_DEV_HANDLE) && in mpi3mr_rfresh_tgtdevs()
784 !tgtdev->is_hidden && !tgtdev->host_exposed) in mpi3mr_rfresh_tgtdevs()
785 mpi3mr_report_tgtdev_to_host(mrioc, tgtdev->perst_id); in mpi3mr_rfresh_tgtdevs()
801 struct mpi3mr_tgt_dev *tgtdev, struct mpi3_device_page0 *dev_pg0) in mpi3mr_update_tgtdev() argument
807 tgtdev->perst_id = le16_to_cpu(dev_pg0->persistent_id); in mpi3mr_update_tgtdev()
808 tgtdev->dev_handle = le16_to_cpu(dev_pg0->dev_handle); in mpi3mr_update_tgtdev()
809 tgtdev->dev_type = dev_pg0->device_form; in mpi3mr_update_tgtdev()
810 tgtdev->encl_handle = le16_to_cpu(dev_pg0->enclosure_handle); in mpi3mr_update_tgtdev()
811 tgtdev->parent_handle = le16_to_cpu(dev_pg0->parent_dev_handle); in mpi3mr_update_tgtdev()
812 tgtdev->slot = le16_to_cpu(dev_pg0->slot); in mpi3mr_update_tgtdev()
813 tgtdev->q_depth = le16_to_cpu(dev_pg0->queue_depth); in mpi3mr_update_tgtdev()
814 tgtdev->wwid = le64_to_cpu(dev_pg0->wwid); in mpi3mr_update_tgtdev()
817 tgtdev->is_hidden = (flags & MPI3_DEVICE0_FLAGS_HIDDEN); in mpi3mr_update_tgtdev()
819 if (tgtdev->starget && tgtdev->starget->hostdata) { in mpi3mr_update_tgtdev()
821 tgtdev->starget->hostdata; in mpi3mr_update_tgtdev()
822 scsi_tgt_priv_data->perst_id = tgtdev->perst_id; in mpi3mr_update_tgtdev()
823 scsi_tgt_priv_data->dev_handle = tgtdev->dev_handle; in mpi3mr_update_tgtdev()
824 scsi_tgt_priv_data->dev_type = tgtdev->dev_type; in mpi3mr_update_tgtdev()
827 switch (tgtdev->dev_type) { in mpi3mr_update_tgtdev()
834 tgtdev->dev_spec.sas_sata_inf.dev_info = dev_info; in mpi3mr_update_tgtdev()
835 tgtdev->dev_spec.sas_sata_inf.sas_address = in mpi3mr_update_tgtdev()
839 tgtdev->is_hidden = 1; in mpi3mr_update_tgtdev()
842 tgtdev->is_hidden = 1; in mpi3mr_update_tgtdev()
851 tgtdev->dev_spec.pcie_inf.capb = in mpi3mr_update_tgtdev()
853 tgtdev->dev_spec.pcie_inf.mdts = MPI3MR_DEFAULT_MDTS; in mpi3mr_update_tgtdev()
855 tgtdev->dev_spec.pcie_inf.pgsz = 12; in mpi3mr_update_tgtdev()
857 tgtdev->dev_spec.pcie_inf.mdts = in mpi3mr_update_tgtdev()
859 tgtdev->dev_spec.pcie_inf.pgsz = pcieinf->page_size; in mpi3mr_update_tgtdev()
860 tgtdev->dev_spec.pcie_inf.reset_to = in mpi3mr_update_tgtdev()
862 tgtdev->dev_spec.pcie_inf.abort_to = in mpi3mr_update_tgtdev()
865 if (tgtdev->dev_spec.pcie_inf.mdts > (1024 * 1024)) in mpi3mr_update_tgtdev()
866 tgtdev->dev_spec.pcie_inf.mdts = (1024 * 1024); in mpi3mr_update_tgtdev()
869 tgtdev->is_hidden = 1; in mpi3mr_update_tgtdev()
887 tgtdev->dev_spec.vol_inf.state = vdinf->vd_state; in mpi3mr_update_tgtdev()
889 tgtdev->is_hidden = 1; in mpi3mr_update_tgtdev()
913 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_devstatuschg_evt_bh() local
938 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle); in mpi3mr_devstatuschg_evt_bh()
939 if (!tgtdev) in mpi3mr_devstatuschg_evt_bh()
942 tgtdev->is_hidden = 0; in mpi3mr_devstatuschg_evt_bh()
943 if (!tgtdev->host_exposed) in mpi3mr_devstatuschg_evt_bh()
944 mpi3mr_report_tgtdev_to_host(mrioc, tgtdev->perst_id); in mpi3mr_devstatuschg_evt_bh()
946 if (tgtdev->starget && tgtdev->starget->hostdata) { in mpi3mr_devstatuschg_evt_bh()
948 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev); in mpi3mr_devstatuschg_evt_bh()
951 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev); in mpi3mr_devstatuschg_evt_bh()
952 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_devstatuschg_evt_bh()
956 if (tgtdev) in mpi3mr_devstatuschg_evt_bh()
957 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_devstatuschg_evt_bh()
975 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_devinfochg_evt_bh() local
983 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle); in mpi3mr_devinfochg_evt_bh()
984 if (!tgtdev) in mpi3mr_devinfochg_evt_bh()
986 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0); in mpi3mr_devinfochg_evt_bh()
987 if (!tgtdev->is_hidden && !tgtdev->host_exposed) in mpi3mr_devinfochg_evt_bh()
989 if (tgtdev->is_hidden && tgtdev->host_exposed) in mpi3mr_devinfochg_evt_bh()
990 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev); in mpi3mr_devinfochg_evt_bh()
991 if (!tgtdev->is_hidden && tgtdev->host_exposed && tgtdev->starget) in mpi3mr_devinfochg_evt_bh()
992 starget_for_each_device(tgtdev->starget, (void *)tgtdev, in mpi3mr_devinfochg_evt_bh()
995 if (tgtdev) in mpi3mr_devinfochg_evt_bh()
996 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_devinfochg_evt_bh()
1097 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_sastopochg_evt_bh() local
1105 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle); in mpi3mr_sastopochg_evt_bh()
1106 if (!tgtdev) in mpi3mr_sastopochg_evt_bh()
1114 if (tgtdev->host_exposed) in mpi3mr_sastopochg_evt_bh()
1115 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev); in mpi3mr_sastopochg_evt_bh()
1116 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev); in mpi3mr_sastopochg_evt_bh()
1117 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_sastopochg_evt_bh()
1122 if (tgtdev) in mpi3mr_sastopochg_evt_bh()
1123 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_sastopochg_evt_bh()
1228 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_pcietopochg_evt_bh() local
1237 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle); in mpi3mr_pcietopochg_evt_bh()
1238 if (!tgtdev) in mpi3mr_pcietopochg_evt_bh()
1245 if (tgtdev->host_exposed) in mpi3mr_pcietopochg_evt_bh()
1246 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev); in mpi3mr_pcietopochg_evt_bh()
1247 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev); in mpi3mr_pcietopochg_evt_bh()
1248 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_pcietopochg_evt_bh()
1253 if (tgtdev) in mpi3mr_pcietopochg_evt_bh()
1254 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_pcietopochg_evt_bh()
1360 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_create_tgtdev() local
1364 tgtdev = mpi3mr_get_tgtdev_by_perst_id(mrioc, perst_id); in mpi3mr_create_tgtdev()
1365 if (tgtdev) { in mpi3mr_create_tgtdev()
1366 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0); in mpi3mr_create_tgtdev()
1367 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_create_tgtdev()
1369 tgtdev = mpi3mr_alloc_tgtdev(); in mpi3mr_create_tgtdev()
1370 if (!tgtdev) in mpi3mr_create_tgtdev()
1372 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0); in mpi3mr_create_tgtdev()
1373 mpi3mr_tgtdev_add_to_list(mrioc, tgtdev); in mpi3mr_create_tgtdev()
1633 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_pcietopochg_evt_th() local
1642 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle); in mpi3mr_pcietopochg_evt_th()
1643 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata) in mpi3mr_pcietopochg_evt_th()
1645 tgtdev->starget->hostdata; in mpi3mr_pcietopochg_evt_th()
1674 if (tgtdev) in mpi3mr_pcietopochg_evt_th()
1675 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_pcietopochg_evt_th()
1699 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_sastopochg_evt_th() local
1709 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle); in mpi3mr_sastopochg_evt_th()
1710 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata) in mpi3mr_sastopochg_evt_th()
1712 tgtdev->starget->hostdata; in mpi3mr_sastopochg_evt_th()
1741 if (tgtdev) in mpi3mr_sastopochg_evt_th()
1742 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_sastopochg_evt_th()
1763 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_devstatuschg_evt_th() local
1794 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle); in mpi3mr_devstatuschg_evt_th()
1795 if (!tgtdev) in mpi3mr_devstatuschg_evt_th()
1798 tgtdev->is_hidden = hide; in mpi3mr_devstatuschg_evt_th()
1799 if (tgtdev->starget && tgtdev->starget->hostdata) { in mpi3mr_devstatuschg_evt_th()
1801 tgtdev->starget->hostdata; in mpi3mr_devstatuschg_evt_th()
1817 if (tgtdev) in mpi3mr_devstatuschg_evt_th()
1818 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_devstatuschg_evt_th()
2594 struct mpi3mr_tgt_dev *tgtdev = NULL; in mpi3mr_issue_tm() local
2632 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle); in mpi3mr_issue_tm()
2633 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata) { in mpi3mr_issue_tm()
2635 tgtdev->starget->hostdata; in mpi3mr_issue_tm()
2643 if (tgtdev && (tgtdev->dev_type == MPI3_DEVICE_DEVFORM_PCIE)) { in mpi3mr_issue_tm()
2644 if (cmd_priv && tgtdev->dev_spec.pcie_inf.abort_to) in mpi3mr_issue_tm()
2645 timeout = tgtdev->dev_spec.pcie_inf.abort_to; in mpi3mr_issue_tm()
2646 else if (!cmd_priv && tgtdev->dev_spec.pcie_inf.reset_to) in mpi3mr_issue_tm()
2647 timeout = tgtdev->dev_spec.pcie_inf.reset_to; in mpi3mr_issue_tm()
2714 if (tgtdev) in mpi3mr_issue_tm()
2715 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_issue_tm()
3829 struct mpi3mr_tgt_dev *tgtdev, *tgtdev_next; in mpi3mr_remove() local
3848 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list, in mpi3mr_remove()
3850 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev); in mpi3mr_remove()
3851 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev); in mpi3mr_remove()
3852 mpi3mr_tgtdev_put(tgtdev); in mpi3mr_remove()