1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2c66ac9dbSNicholas Bellinger #ifndef TARGET_CORE_PSCSI_H 3c66ac9dbSNicholas Bellinger #define TARGET_CORE_PSCSI_H 4c66ac9dbSNicholas Bellinger 5c66ac9dbSNicholas Bellinger #define PSCSI_VERSION "v4.0" 6c66ac9dbSNicholas Bellinger 7c66ac9dbSNicholas Bellinger /* used in pscsi_find_alloc_len() */ 8c66ac9dbSNicholas Bellinger #ifndef INQUIRY_DATA_SIZE 9c66ac9dbSNicholas Bellinger #define INQUIRY_DATA_SIZE 0x24 10c66ac9dbSNicholas Bellinger #endif 11c66ac9dbSNicholas Bellinger 12c66ac9dbSNicholas Bellinger /* used in pscsi_add_device_to_list() */ 13c66ac9dbSNicholas Bellinger #define PSCSI_DEFAULT_QUEUEDEPTH 1 14c66ac9dbSNicholas Bellinger 15c66ac9dbSNicholas Bellinger #define PS_RETRY 5 16c66ac9dbSNicholas Bellinger #define PS_TIMEOUT_DISK (15*HZ) 17c66ac9dbSNicholas Bellinger #define PS_TIMEOUT_OTHER (500*HZ) 18c66ac9dbSNicholas Bellinger 198dcf07beSBart Van Assche #include <linux/cache.h> /* ___cacheline_aligned */ 208dcf07beSBart Van Assche #include <target/target_core_base.h> /* struct se_device */ 21c66ac9dbSNicholas Bellinger 228dcf07beSBart Van Assche struct block_device; 23ba929992SBart Van Assche struct scsi_device; 248dcf07beSBart Van Assche struct Scsi_Host; 25ba929992SBart Van Assche 26c66ac9dbSNicholas Bellinger #define PDF_HAS_CHANNEL_ID 0x01 27c66ac9dbSNicholas Bellinger #define PDF_HAS_TARGET_ID 0x02 28c66ac9dbSNicholas Bellinger #define PDF_HAS_LUN_ID 0x04 29c66ac9dbSNicholas Bellinger #define PDF_HAS_VPD_UNIT_SERIAL 0x08 30c66ac9dbSNicholas Bellinger #define PDF_HAS_VPD_DEV_IDENT 0x10 31c66ac9dbSNicholas Bellinger #define PDF_HAS_VIRT_HOST_ID 0x20 32c66ac9dbSNicholas Bellinger 33c66ac9dbSNicholas Bellinger struct pscsi_dev_virt { 340fd97ccfSChristoph Hellwig struct se_device dev; 35c66ac9dbSNicholas Bellinger int pdv_flags; 36c66ac9dbSNicholas Bellinger int pdv_host_id; 37c66ac9dbSNicholas Bellinger int pdv_channel_id; 38c66ac9dbSNicholas Bellinger int pdv_target_id; 39c66ac9dbSNicholas Bellinger int pdv_lun_id; 40*034f0cf8SChristian Brauner struct file *pdv_bdev_file; 41c66ac9dbSNicholas Bellinger struct scsi_device *pdv_sd; 425a7125c6SAndy Grover struct Scsi_Host *pdv_lld_host; 43c66ac9dbSNicholas Bellinger } ____cacheline_aligned; 44c66ac9dbSNicholas Bellinger 45c66ac9dbSNicholas Bellinger typedef enum phv_modes { 46e6a8a41aSStefan Hajnoczi PHV_VIRTUAL_HOST_ID, 47c66ac9dbSNicholas Bellinger PHV_LLD_SCSI_HOST_NO 48c66ac9dbSNicholas Bellinger } phv_modes_t; 49c66ac9dbSNicholas Bellinger 50c66ac9dbSNicholas Bellinger struct pscsi_hba_virt { 51c66ac9dbSNicholas Bellinger int phv_host_id; 52c66ac9dbSNicholas Bellinger phv_modes_t phv_mode; 53c66ac9dbSNicholas Bellinger struct Scsi_Host *phv_lld_host; 54c66ac9dbSNicholas Bellinger } ____cacheline_aligned; 55c66ac9dbSNicholas Bellinger 56c66ac9dbSNicholas Bellinger #endif /*** TARGET_CORE_PSCSI_H ***/ 57