ipr.h
来自「linux 内核源代码」· C头文件 代码 · 共 1,569 行 · 第 1/3 页
H
1,569 行
__be16 ret_stat_len; /* Length of the returned IOASA */ __be16 avail_stat_len; /* Total Length of status available. */ __be32 residual_data_len; /* number of bytes in the host data */ /* buffers that were not used by the IOARCB command. */ __be32 ilid;#define IPR_NO_ILID 0#define IPR_DRIVER_ILID 0xffffffff __be32 fd_ioasc; __be32 fd_phys_locator; __be32 fd_res_handle; __be32 ioasc_specific; /* status code specific field */#define IPR_ADDITIONAL_STATUS_FMT 0x80000000#define IPR_AUTOSENSE_VALID 0x40000000#define IPR_ATA_DEVICE_WAS_RESET 0x20000000#define IPR_IOASC_SPECIFIC_MASK 0x00ffffff#define IPR_FIELD_POINTER_VALID (0x80000000 >> 8)#define IPR_FIELD_POINTER_MASK 0x0000ffff union { struct ipr_ioasa_vset vset; struct ipr_ioasa_af_dasd dasd; struct ipr_ioasa_gpdd gpdd; struct ipr_ioasa_gata gata; } u; struct ipr_auto_sense auto_sense;}__attribute__((packed, aligned (4)));struct ipr_mode_parm_hdr { u8 length; u8 medium_type; u8 device_spec_parms; u8 block_desc_len;}__attribute__((packed));struct ipr_mode_pages { struct ipr_mode_parm_hdr hdr; u8 data[255 - sizeof(struct ipr_mode_parm_hdr)];}__attribute__((packed));struct ipr_mode_page_hdr { u8 ps_page_code;#define IPR_MODE_PAGE_PS 0x80#define IPR_GET_MODE_PAGE_CODE(hdr) ((hdr)->ps_page_code & 0x3F) u8 page_length;}__attribute__ ((packed));struct ipr_dev_bus_entry { struct ipr_res_addr res_addr; u8 flags;#define IPR_SCSI_ATTR_ENABLE_QAS 0x80#define IPR_SCSI_ATTR_DISABLE_QAS 0x40#define IPR_SCSI_ATTR_QAS_MASK 0xC0#define IPR_SCSI_ATTR_ENABLE_TM 0x20#define IPR_SCSI_ATTR_NO_TERM_PWR 0x10#define IPR_SCSI_ATTR_TM_SUPPORTED 0x08#define IPR_SCSI_ATTR_LVD_TO_SE_NOT_ALLOWED 0x04 u8 scsi_id; u8 bus_width; u8 extended_reset_delay;#define IPR_EXTENDED_RESET_DELAY 7 __be32 max_xfer_rate; u8 spinup_delay; u8 reserved3; __be16 reserved4;}__attribute__((packed, aligned (4)));struct ipr_mode_page28 { struct ipr_mode_page_hdr hdr; u8 num_entries; u8 entry_length; struct ipr_dev_bus_entry bus[0];}__attribute__((packed));struct ipr_mode_page24 { struct ipr_mode_page_hdr hdr; u8 flags;#define IPR_ENABLE_DUAL_IOA_AF 0x80}__attribute__((packed));struct ipr_ioa_vpd { struct ipr_std_inq_data std_inq_data; u8 ascii_part_num[12]; u8 reserved[40]; u8 ascii_plant_code[4];}__attribute__((packed));struct ipr_inquiry_page3 { u8 peri_qual_dev_type; u8 page_code; u8 reserved1; u8 page_length; u8 ascii_len; u8 reserved2[3]; u8 load_id[4]; u8 major_release; u8 card_type; u8 minor_release[2]; u8 ptf_number[4]; u8 patch_number[4];}__attribute__((packed));struct ipr_inquiry_cap { u8 peri_qual_dev_type; u8 page_code; u8 reserved1; u8 page_length; u8 ascii_len; u8 reserved2; u8 sis_version[2]; u8 cap;#define IPR_CAP_DUAL_IOA_RAID 0x80 u8 reserved3[15];}__attribute__((packed));#define IPR_INQUIRY_PAGE0_ENTRIES 20struct ipr_inquiry_page0 { u8 peri_qual_dev_type; u8 page_code; u8 reserved1; u8 len; u8 page[IPR_INQUIRY_PAGE0_ENTRIES];}__attribute__((packed));struct ipr_hostrcb_device_data_entry { struct ipr_vpd vpd; struct ipr_res_addr dev_res_addr; struct ipr_vpd new_vpd; struct ipr_vpd ioa_last_with_dev_vpd; struct ipr_vpd cfc_last_with_dev_vpd; __be32 ioa_data[5];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_device_data_entry_enhanced { struct ipr_ext_vpd vpd; u8 ccin[4]; struct ipr_res_addr dev_res_addr; struct ipr_ext_vpd new_vpd; u8 new_ccin[4]; struct ipr_ext_vpd ioa_last_with_dev_vpd; struct ipr_ext_vpd cfc_last_with_dev_vpd;}__attribute__((packed, aligned (4)));struct ipr_hostrcb_array_data_entry { struct ipr_vpd vpd; struct ipr_res_addr expected_dev_res_addr; struct ipr_res_addr dev_res_addr;}__attribute__((packed, aligned (4)));struct ipr_hostrcb_array_data_entry_enhanced { struct ipr_ext_vpd vpd; u8 ccin[4]; struct ipr_res_addr expected_dev_res_addr; struct ipr_res_addr dev_res_addr;}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_ff_error { __be32 ioa_data[502];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_01_error { __be32 seek_counter; __be32 read_counter; u8 sense_data[32]; __be32 ioa_data[236];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_02_error { struct ipr_vpd ioa_vpd; struct ipr_vpd cfc_vpd; struct ipr_vpd ioa_last_attached_to_cfc_vpd; struct ipr_vpd cfc_last_attached_to_ioa_vpd; __be32 ioa_data[3];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_12_error { struct ipr_ext_vpd ioa_vpd; struct ipr_ext_vpd cfc_vpd; struct ipr_ext_vpd ioa_last_attached_to_cfc_vpd; struct ipr_ext_vpd cfc_last_attached_to_ioa_vpd; __be32 ioa_data[3];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_03_error { struct ipr_vpd ioa_vpd; struct ipr_vpd cfc_vpd; __be32 errors_detected; __be32 errors_logged; u8 ioa_data[12]; struct ipr_hostrcb_device_data_entry dev[3];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_13_error { struct ipr_ext_vpd ioa_vpd; struct ipr_ext_vpd cfc_vpd; __be32 errors_detected; __be32 errors_logged; struct ipr_hostrcb_device_data_entry_enhanced dev[3];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_04_error { struct ipr_vpd ioa_vpd; struct ipr_vpd cfc_vpd; u8 ioa_data[12]; struct ipr_hostrcb_array_data_entry array_member[10]; __be32 exposed_mode_adn; __be32 array_id; struct ipr_vpd incomp_dev_vpd; __be32 ioa_data2; struct ipr_hostrcb_array_data_entry array_member2[8]; struct ipr_res_addr last_func_vset_res_addr; u8 vset_serial_num[IPR_SERIAL_NUM_LEN]; u8 protection_level[8];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_14_error { struct ipr_ext_vpd ioa_vpd; struct ipr_ext_vpd cfc_vpd; __be32 exposed_mode_adn; __be32 array_id; struct ipr_res_addr last_func_vset_res_addr; u8 vset_serial_num[IPR_SERIAL_NUM_LEN]; u8 protection_level[8]; __be32 num_entries; struct ipr_hostrcb_array_data_entry_enhanced array_member[18];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_07_error { u8 failure_reason[64]; struct ipr_vpd vpd; u32 data[222];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_type_17_error { u8 failure_reason[64]; struct ipr_ext_vpd vpd; u32 data[476];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_config_element { u8 type_status;#define IPR_PATH_CFG_TYPE_MASK 0xF0#define IPR_PATH_CFG_NOT_EXIST 0x00#define IPR_PATH_CFG_IOA_PORT 0x10#define IPR_PATH_CFG_EXP_PORT 0x20#define IPR_PATH_CFG_DEVICE_PORT 0x30#define IPR_PATH_CFG_DEVICE_LUN 0x40#define IPR_PATH_CFG_STATUS_MASK 0x0F#define IPR_PATH_CFG_NO_PROB 0x00#define IPR_PATH_CFG_DEGRADED 0x01#define IPR_PATH_CFG_FAILED 0x02#define IPR_PATH_CFG_SUSPECT 0x03#define IPR_PATH_NOT_DETECTED 0x04#define IPR_PATH_INCORRECT_CONN 0x05 u8 cascaded_expander; u8 phy; u8 link_rate;#define IPR_PHY_LINK_RATE_MASK 0x0F __be32 wwid[2];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_fabric_desc { __be16 length; u8 ioa_port; u8 cascaded_expander; u8 phy; u8 path_state;#define IPR_PATH_ACTIVE_MASK 0xC0#define IPR_PATH_NO_INFO 0x00#define IPR_PATH_ACTIVE 0x40#define IPR_PATH_NOT_ACTIVE 0x80#define IPR_PATH_STATE_MASK 0x0F#define IPR_PATH_STATE_NO_INFO 0x00#define IPR_PATH_HEALTHY 0x01#define IPR_PATH_DEGRADED 0x02#define IPR_PATH_FAILED 0x03 __be16 num_entries; struct ipr_hostrcb_config_element elem[1];}__attribute__((packed, aligned (4)));#define for_each_fabric_cfg(fabric, cfg) \ for (cfg = (fabric)->elem; \ cfg < ((fabric)->elem + be16_to_cpu((fabric)->num_entries)); \ cfg++)struct ipr_hostrcb_type_20_error { u8 failure_reason[64]; u8 reserved[3]; u8 num_entries; struct ipr_hostrcb_fabric_desc desc[1];}__attribute__((packed, aligned (4)));struct ipr_hostrcb_error { __be32 failing_dev_ioasc; struct ipr_res_addr failing_dev_res_addr; __be32 failing_dev_res_handle; __be32 prc; union { struct ipr_hostrcb_type_ff_error type_ff_error; struct ipr_hostrcb_type_01_error type_01_error; struct ipr_hostrcb_type_02_error type_02_error; struct ipr_hostrcb_type_03_error type_03_error; struct ipr_hostrcb_type_04_error type_04_error; struct ipr_hostrcb_type_07_error type_07_error; struct ipr_hostrcb_type_12_error type_12_error; struct ipr_hostrcb_type_13_error type_13_error; struct ipr_hostrcb_type_14_error type_14_error; struct ipr_hostrcb_type_17_error type_17_error; struct ipr_hostrcb_type_20_error type_20_error; } u;}__attribute__((packed, aligned (4)));struct ipr_hostrcb_raw { __be32 data[sizeof(struct ipr_hostrcb_error)/sizeof(__be32)];}__attribute__((packed, aligned (4)));struct ipr_hcam { u8 op_code;#define IPR_HOST_RCB_OP_CODE_CONFIG_CHANGE 0xE1#define IPR_HOST_RCB_OP_CODE_LOG_DATA 0xE2 u8 notify_type;#define IPR_HOST_RCB_NOTIF_TYPE_EXISTING_CHANGED 0x00#define IPR_HOST_RCB_NOTIF_TYPE_NEW_ENTRY 0x01#define IPR_HOST_RCB_NOTIF_TYPE_REM_ENTRY 0x02#define IPR_HOST_RCB_NOTIF_TYPE_ERROR_LOG_ENTRY 0x10#define IPR_HOST_RCB_NOTIF_TYPE_INFORMATION_ENTRY 0x11 u8 notifications_lost;#define IPR_HOST_RCB_NO_NOTIFICATIONS_LOST 0#define IPR_HOST_RCB_NOTIFICATIONS_LOST 0x80 u8 flags;#define IPR_HOSTRCB_INTERNAL_OPER 0x80#define IPR_HOSTRCB_ERR_RESP_SENT 0x40 u8 overlay_id;#define IPR_HOST_RCB_OVERLAY_ID_1 0x01#define IPR_HOST_RCB_OVERLAY_ID_2 0x02#define IPR_HOST_RCB_OVERLAY_ID_3 0x03#define IPR_HOST_RCB_OVERLAY_ID_4 0x04#define IPR_HOST_RCB_OVERLAY_ID_6 0x06#define IPR_HOST_RCB_OVERLAY_ID_7 0x07#define IPR_HOST_RCB_OVERLAY_ID_12 0x12#define IPR_HOST_RCB_OVERLAY_ID_13 0x13#define IPR_HOST_RCB_OVERLAY_ID_14 0x14#define IPR_HOST_RCB_OVERLAY_ID_16 0x16#define IPR_HOST_RCB_OVERLAY_ID_17 0x17#define IPR_HOST_RCB_OVERLAY_ID_20 0x20#define IPR_HOST_RCB_OVERLAY_ID_DEFAULT 0xFF u8 reserved1[3]; __be32 ilid; __be32 time_since_last_ioa_reset; __be32 reserved2; __be32 length; union { struct ipr_hostrcb_error error; struct ipr_hostrcb_cfg_ch_not ccn; struct ipr_hostrcb_raw raw; } u;}__attribute__((packed, aligned (4)));struct ipr_hostrcb { struct ipr_hcam hcam; dma_addr_t hostrcb_dma; struct list_head queue; struct ipr_ioa_cfg *ioa_cfg;};/* IPR smart dump table structures */struct ipr_sdt_entry { __be32 bar_str_offset; __be32 end_offset; u8 entry_byte; u8 reserved[3]; u8 flags;#define IPR_SDT_ENDIAN 0x80#define IPR_SDT_VALID_ENTRY 0x20 u8 resv; __be16 priority;}__attribute__((packed, aligned (4)));struct ipr_sdt_header { __be32 state; __be32 num_entries; __be32 num_entries_used; __be32 dump_size;}__attribute__((packed, aligned (4)));struct ipr_sdt { struct ipr_sdt_header hdr; struct ipr_sdt_entry entry[IPR_NUM_SDT_ENTRIES];}__attribute__((packed, aligned (4)));struct ipr_uc_sdt { struct ipr_sdt_header hdr; struct ipr_sdt_entry entry[1];}__attribute__((packed, aligned (4)));/* * Driver types */struct ipr_bus_attributes { u8 bus; u8 qas_enabled; u8 bus_width; u8 reserved; u32 max_xfer_rate;};struct ipr_sata_port { struct ipr_ioa_cfg *ioa_cfg; struct ata_port *ap; struct ipr_resource_entry *res; struct ipr_ioasa_gata ioasa;};struct ipr_resource_entry { struct ipr_config_table_entry cfgte; u8 needs_sync_complete:1; u8 in_erp:1; u8 add_to_ml:1; u8 del_from_ml:1; u8 resetting_device:1; struct scsi_device *sdev; struct ipr_sata_port *sata_port; struct list_head queue;};struct ipr_resource_hdr { u16 num_entries; u16 reserved;};struct ipr_resource_table { struct ipr_resource_hdr hdr; struct ipr_resource_entry dev[IPR_MAX_PHYSICAL_DEVS];};struct ipr_misc_cbs { struct ipr_ioa_vpd ioa_vpd; struct ipr_inquiry_page0 page0_data; struct ipr_inquiry_page3 page3_data; struct ipr_inquiry_cap cap; struct ipr_mode_pages mode_pages; struct ipr_supported_device supp_dev;};struct ipr_interrupt_offsets { unsigned long set_interrupt_mask_reg; unsigned long clr_interrupt_mask_reg; unsigned long sense_interrupt_mask_reg; unsigned long clr_interrupt_reg; unsigned long sense_interrupt_reg; unsigned long ioarrin_reg; unsigned long sense_uproc_interrupt_reg; unsigned long set_uproc_interrupt_reg; unsigned long clr_uproc_interrupt_reg;};struct ipr_interrupts { void __iomem *set_interrupt_mask_reg; void __iomem *clr_interrupt_mask_reg; void __iomem *sense_interrupt_mask_reg; void __iomem *clr_interrupt_reg; void __iomem *sense_interrupt_reg; void __iomem *ioarrin_reg; void __iomem *sense_uproc_interrupt_reg; void __iomem *set_uproc_interrupt_reg; void __iomem *clr_uproc_interrupt_reg;};struct ipr_chip_cfg_t { u32 mailbox; u8 cache_line_size; struct ipr_interrupt_offsets regs;};struct ipr_chip_t { u16 vendor; u16 device; const struct ipr_chip_cfg_t *cfg;};enum ipr_shutdown_type { IPR_SHUTDOWN_NORMAL = 0x00, IPR_SHUTDOWN_PREPARE_FOR_NORMAL = 0x40, IPR_SHUTDOWN_ABBREV = 0x80, IPR_SHUTDOWN_NONE = 0x100};struct ipr_trace_entry { u32 time; u8 op_code; u8 ata_op_code; u8 type;#define IPR_TRACE_START 0x00#define IPR_TRACE_FINISH 0xff u8 cmd_index;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?