Lines Matching refs:hostrcb

1056 			  struct ipr_hostrcb *hostrcb)  in ipr_send_hcam()  argument
1064 list_add_tail(&hostrcb->queue, &ioa_cfg->hostrcb_pending_q); in ipr_send_hcam()
1066 ipr_cmd->u.hostrcb = hostrcb; in ipr_send_hcam()
1073 ioarcb->cmd_pkt.cdb[7] = (sizeof(hostrcb->hcam) >> 8) & 0xff; in ipr_send_hcam()
1074 ioarcb->cmd_pkt.cdb[8] = sizeof(hostrcb->hcam) & 0xff; in ipr_send_hcam()
1076 ipr_init_ioadl(ipr_cmd, hostrcb->hostrcb_dma, in ipr_send_hcam()
1077 sizeof(hostrcb->hcam), IPR_IOADL_FLAGS_READ_LAST); in ipr_send_hcam()
1088 list_add_tail(&hostrcb->queue, &ioa_cfg->hostrcb_free_q); in ipr_send_hcam()
1340 struct ipr_hostrcb *hostrcb) in ipr_handle_config_change() argument
1349 cfgtew.u.cfgte64 = &hostrcb->hcam.u.ccn.u.cfgte64; in ipr_handle_config_change()
1352 cfgtew.u.cfgte = &hostrcb->hcam.u.ccn.u.cfgte; in ipr_handle_config_change()
1367 hostrcb); in ipr_handle_config_change()
1381 if (hostrcb->hcam.notify_type == IPR_HOST_RCB_NOTIF_TYPE_REM_ENTRY) { in ipr_handle_config_change()
1395 ipr_send_hcam(ioa_cfg, IPR_HCAM_CDB_OP_CODE_CONFIG_CHANGE, hostrcb); in ipr_handle_config_change()
1411 struct ipr_hostrcb *hostrcb = ipr_cmd->u.hostrcb; in ipr_process_ccn() local
1414 list_del_init(&hostrcb->queue); in ipr_process_ccn()
1423 ipr_send_hcam(ioa_cfg, IPR_HCAM_CDB_OP_CODE_CONFIG_CHANGE, hostrcb); in ipr_process_ccn()
1425 ipr_handle_config_change(ioa_cfg, hostrcb); in ipr_process_ccn()
1457 static void ipr_log_vpd_compact(char *prefix, struct ipr_hostrcb *hostrcb, in ipr_log_vpd_compact() argument
1473 ipr_hcam_err(hostrcb, "%s VPID/SN: %s %s %s\n", prefix, in ipr_log_vpd_compact()
1509 static void ipr_log_ext_vpd_compact(char *prefix, struct ipr_hostrcb *hostrcb, in ipr_log_ext_vpd_compact() argument
1512 ipr_log_vpd_compact(prefix, hostrcb, &vpd->vpd); in ipr_log_ext_vpd_compact()
1513 ipr_hcam_err(hostrcb, "%s WWN: %08X%08X\n", prefix, in ipr_log_ext_vpd_compact()
1540 struct ipr_hostrcb *hostrcb) in ipr_log_enhanced_cache_error() argument
1545 error = &hostrcb->hcam.u.error64.u.type_12_error; in ipr_log_enhanced_cache_error()
1547 error = &hostrcb->hcam.u.error.u.type_12_error; in ipr_log_enhanced_cache_error()
1576 struct ipr_hostrcb *hostrcb) in ipr_log_cache_error() argument
1579 &hostrcb->hcam.u.error.u.type_02_error; in ipr_log_cache_error()
1608 struct ipr_hostrcb *hostrcb) in ipr_log_enhanced_config_error() argument
1614 error = &hostrcb->hcam.u.error.u.type_13_error; in ipr_log_enhanced_config_error()
1648 struct ipr_hostrcb *hostrcb) in ipr_log_sis64_config_error() argument
1655 error = &hostrcb->hcam.u.error64.u.type_23_error; in ipr_log_sis64_config_error()
1691 struct ipr_hostrcb *hostrcb) in ipr_log_config_error() argument
1697 error = &hostrcb->hcam.u.error.u.type_03_error; in ipr_log_config_error()
1738 struct ipr_hostrcb *hostrcb) in ipr_log_enhanced_array_error() argument
1745 error = &hostrcb->hcam.u.error.u.type_14_error; in ipr_log_enhanced_array_error()
1789 struct ipr_hostrcb *hostrcb) in ipr_log_array_error() argument
1796 error = &hostrcb->hcam.u.error.u.type_04_error; in ipr_log_array_error()
1872 struct ipr_hostrcb *hostrcb) in ipr_log_enhanced_dual_ioa_error() argument
1877 error = &hostrcb->hcam.u.error64.u.type_17_error; in ipr_log_enhanced_dual_ioa_error()
1879 error = &hostrcb->hcam.u.error.u.type_17_error; in ipr_log_enhanced_dual_ioa_error()
1884 ipr_hcam_err(hostrcb, "%s [PRC: %08X]\n", error->failure_reason, in ipr_log_enhanced_dual_ioa_error()
1885 be32_to_cpu(hostrcb->hcam.u.error.prc)); in ipr_log_enhanced_dual_ioa_error()
1886 ipr_log_ext_vpd_compact("Remote IOA", hostrcb, &error->vpd); in ipr_log_enhanced_dual_ioa_error()
1888 be32_to_cpu(hostrcb->hcam.length) - in ipr_log_enhanced_dual_ioa_error()
1902 struct ipr_hostrcb *hostrcb) in ipr_log_dual_ioa_error() argument
1906 error = &hostrcb->hcam.u.error.u.type_07_error; in ipr_log_dual_ioa_error()
1910 ipr_hcam_err(hostrcb, "%s [PRC: %08X]\n", error->failure_reason, in ipr_log_dual_ioa_error()
1911 be32_to_cpu(hostrcb->hcam.u.error.prc)); in ipr_log_dual_ioa_error()
1912 ipr_log_vpd_compact("Remote IOA", hostrcb, &error->vpd); in ipr_log_dual_ioa_error()
1914 be32_to_cpu(hostrcb->hcam.length) - in ipr_log_dual_ioa_error()
1946 static void ipr_log_fabric_path(struct ipr_hostrcb *hostrcb, in ipr_log_fabric_path() argument
1963 ipr_hcam_err(hostrcb, "%s %s: IOA Port=%d\n", in ipr_log_fabric_path()
1967 ipr_hcam_err(hostrcb, "%s %s: IOA Port=%d, Phy=%d\n", in ipr_log_fabric_path()
1971 ipr_hcam_err(hostrcb, "%s %s: IOA Port=%d, Cascade=%d\n", in ipr_log_fabric_path()
1975 ipr_hcam_err(hostrcb, "%s %s: IOA Port=%d, Cascade=%d, Phy=%d\n", in ipr_log_fabric_path()
1995 static void ipr_log64_fabric_path(struct ipr_hostrcb *hostrcb, in ipr_log64_fabric_path() argument
2012 ipr_hcam_err(hostrcb, "%s %s: Resource Path=%s\n", in ipr_log64_fabric_path()
2014 ipr_format_res_path(hostrcb->ioa_cfg, in ipr_log64_fabric_path()
2022 ipr_format_res_path(hostrcb->ioa_cfg, fabric->res_path, in ipr_log64_fabric_path()
2075 static void ipr_log_path_elem(struct ipr_hostrcb *hostrcb, in ipr_log_path_elem() argument
2094 ipr_hcam_err(hostrcb, "%s %s: Phy=%d, Link rate=%s, WWN=%08X%08X\n", in ipr_log_path_elem()
2100 ipr_hcam_err(hostrcb, "%s %s: Link rate=%s, WWN=%08X%08X\n", in ipr_log_path_elem()
2105 ipr_hcam_err(hostrcb, "%s %s: Phy=%d, Link rate=%s, " in ipr_log_path_elem()
2111 ipr_hcam_err(hostrcb, "%s %s: Cascade=%d, Link rate=%s, " in ipr_log_path_elem()
2117 ipr_hcam_err(hostrcb, "%s %s: Cascade=%d, Phy=%d, Link rate=%s " in ipr_log_path_elem()
2128 ipr_hcam_err(hostrcb, "Path element=%02X: Cascade=%d Phy=%d Link rate=%s " in ipr_log_path_elem()
2142 static void ipr_log64_path_elem(struct ipr_hostrcb *hostrcb, in ipr_log64_path_elem() argument
2162 ipr_hcam_err(hostrcb, "%s %s: Resource Path=%s, Link rate=%s, WWN=%08X%08X\n", in ipr_log64_path_elem()
2164 ipr_format_res_path(hostrcb->ioa_cfg, in ipr_log64_path_elem()
2172 ipr_hcam_err(hostrcb, "Path element=%02X: Resource Path=%s, Link rate=%s " in ipr_log64_path_elem()
2174 ipr_format_res_path(hostrcb->ioa_cfg, in ipr_log64_path_elem()
2189 struct ipr_hostrcb *hostrcb) in ipr_log_fabric_error() argument
2196 error = &hostrcb->hcam.u.error.u.type_20_error; in ipr_log_fabric_error()
2198 ipr_hcam_err(hostrcb, "%s\n", error->failure_reason); in ipr_log_fabric_error()
2200 add_len = be32_to_cpu(hostrcb->hcam.length) - in ipr_log_fabric_error()
2205 ipr_log_fabric_path(hostrcb, fabric); in ipr_log_fabric_error()
2207 ipr_log_path_elem(hostrcb, cfg); in ipr_log_fabric_error()
2226 struct ipr_hostrcb *hostrcb) in ipr_log_sis64_array_error() argument
2234 error = &hostrcb->hcam.u.error64.u.type_24_error; in ipr_log_sis64_array_error()
2282 struct ipr_hostrcb *hostrcb) in ipr_log_sis64_fabric_error() argument
2289 error = &hostrcb->hcam.u.error64.u.type_30_error; in ipr_log_sis64_fabric_error()
2292 ipr_hcam_err(hostrcb, "%s\n", error->failure_reason); in ipr_log_sis64_fabric_error()
2294 add_len = be32_to_cpu(hostrcb->hcam.length) - in ipr_log_sis64_fabric_error()
2299 ipr_log64_fabric_path(hostrcb, fabric); in ipr_log_sis64_fabric_error()
2301 ipr_log64_path_elem(hostrcb, cfg); in ipr_log_sis64_fabric_error()
2320 struct ipr_hostrcb *hostrcb) in ipr_log_sis64_service_required_error() argument
2324 error = &hostrcb->hcam.u.error64.u.type_41_error; in ipr_log_sis64_service_required_error()
2329 be32_to_cpu(hostrcb->hcam.length) - in ipr_log_sis64_service_required_error()
2342 struct ipr_hostrcb *hostrcb) in ipr_log_generic_error() argument
2344 ipr_log_hex_data(ioa_cfg, hostrcb->hcam.u.raw.data, in ipr_log_generic_error()
2345 be32_to_cpu(hostrcb->hcam.length)); in ipr_log_generic_error()
2357 struct ipr_hostrcb *hostrcb) in ipr_log_sis64_device_error() argument
2362 error = &hostrcb->hcam.u.error64.u.type_21_error; in ipr_log_sis64_device_error()
2417 struct ipr_hostrcb *hostrcb) in ipr_handle_log_data() argument
2423 if (hostrcb->hcam.notify_type != IPR_HOST_RCB_NOTIF_TYPE_ERROR_LOG_ENTRY) in ipr_handle_log_data()
2426 if (hostrcb->hcam.notifications_lost == IPR_HOST_RCB_NOTIFICATIONS_LOST) in ipr_handle_log_data()
2430 ioasc = be32_to_cpu(hostrcb->hcam.u.error64.fd_ioasc); in ipr_handle_log_data()
2432 ioasc = be32_to_cpu(hostrcb->hcam.u.error.fd_ioasc); in ipr_handle_log_data()
2438 hostrcb->hcam.u.error.fd_res_addr.bus); in ipr_handle_log_data()
2447 hostrcb->hcam.overlay_id == IPR_HOST_RCB_OVERLAY_ID_21) { in ipr_handle_log_data()
2448 error = &hostrcb->hcam.u.error64.u.type_21_error; in ipr_handle_log_data()
2455 ipr_hcam_err(hostrcb, "%s\n", ipr_error_table[error_index].error); in ipr_handle_log_data()
2462 if (be32_to_cpu(hostrcb->hcam.length) > sizeof(hostrcb->hcam.u.raw)) in ipr_handle_log_data()
2463 hostrcb->hcam.length = cpu_to_be32(sizeof(hostrcb->hcam.u.raw)); in ipr_handle_log_data()
2465 switch (hostrcb->hcam.overlay_id) { in ipr_handle_log_data()
2467 ipr_log_cache_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2470 ipr_log_config_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2474 ipr_log_array_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2477 ipr_log_dual_ioa_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2480 ipr_log_enhanced_cache_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2483 ipr_log_enhanced_config_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2487 ipr_log_enhanced_array_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2490 ipr_log_enhanced_dual_ioa_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2493 ipr_log_fabric_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2496 ipr_log_sis64_device_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2499 ipr_log_sis64_config_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2503 ipr_log_sis64_array_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2506 ipr_log_sis64_fabric_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2509 ipr_log_sis64_service_required_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2514 ipr_log_generic_error(ioa_cfg, hostrcb); in ipr_handle_log_data()
2521 struct ipr_hostrcb *hostrcb; in ipr_get_free_hostrcb() local
2523 hostrcb = list_first_entry_or_null(&ioa->hostrcb_free_q, in ipr_get_free_hostrcb()
2526 if (unlikely(!hostrcb)) { in ipr_get_free_hostrcb()
2528 hostrcb = list_first_entry_or_null(&ioa->hostrcb_report_q, in ipr_get_free_hostrcb()
2532 list_del_init(&hostrcb->queue); in ipr_get_free_hostrcb()
2533 return hostrcb; in ipr_get_free_hostrcb()
2550 struct ipr_hostrcb *hostrcb = ipr_cmd->u.hostrcb; in ipr_process_error() local
2555 fd_ioasc = be32_to_cpu(hostrcb->hcam.u.error64.fd_ioasc); in ipr_process_error()
2557 fd_ioasc = be32_to_cpu(hostrcb->hcam.u.error.fd_ioasc); in ipr_process_error()
2559 list_del_init(&hostrcb->queue); in ipr_process_error()
2563 ipr_handle_log_data(ioa_cfg, hostrcb); in ipr_process_error()
2572 list_add_tail(&hostrcb->queue, &ioa_cfg->hostrcb_report_q); in ipr_process_error()
2574 hostrcb = ipr_get_free_hostrcb(ioa_cfg); in ipr_process_error()
2576 ipr_send_hcam(ioa_cfg, IPR_HCAM_CDB_OP_CODE_LOG_DATA, hostrcb); in ipr_process_error()
4095 struct ipr_hostrcb *hostrcb; in ipr_read_async_err_log() local
4100 hostrcb = list_first_entry_or_null(&ioa_cfg->hostrcb_report_q, in ipr_read_async_err_log()
4102 if (!hostrcb) { in ipr_read_async_err_log()
4106 ret = memory_read_from_buffer(buf, count, &off, &hostrcb->hcam, in ipr_read_async_err_log()
4107 sizeof(hostrcb->hcam)); in ipr_read_async_err_log()
4119 struct ipr_hostrcb *hostrcb; in ipr_next_async_err_log() local
4123 hostrcb = list_first_entry_or_null(&ioa_cfg->hostrcb_report_q, in ipr_next_async_err_log()
4125 if (!hostrcb) { in ipr_next_async_err_log()
4131 list_move_tail(&hostrcb->queue, &ioa_cfg->hostrcb_free_q); in ipr_next_async_err_log()
6529 list_del_init(&ioa_cfg->hostrcb[j]->queue); in ipr_ioa_reset_done()
6533 ioa_cfg->hostrcb[j]); in ipr_ioa_reset_done()
6537 ioa_cfg->hostrcb[j]); in ipr_ioa_reset_done()
7783 struct ipr_hostrcb *hostrcb; in ipr_get_unit_check_buffer() local
7814 hostrcb = list_entry(ioa_cfg->hostrcb_free_q.next, in ipr_get_unit_check_buffer()
7816 list_del_init(&hostrcb->queue); in ipr_get_unit_check_buffer()
7817 memset(&hostrcb->hcam, 0, sizeof(hostrcb->hcam)); in ipr_get_unit_check_buffer()
7821 (__be32 *)&hostrcb->hcam, in ipr_get_unit_check_buffer()
7822 min(length, (int)sizeof(hostrcb->hcam)) / sizeof(__be32)); in ipr_get_unit_check_buffer()
7825 ipr_handle_log_data(ioa_cfg, hostrcb); in ipr_get_unit_check_buffer()
7826 ioasc = be32_to_cpu(hostrcb->hcam.u.error.fd_ioasc); in ipr_get_unit_check_buffer()
7833 list_add_tail(&hostrcb->queue, &ioa_cfg->hostrcb_free_q); in ipr_get_unit_check_buffer()
8812 ioa_cfg->hostrcb[i], in ipr_free_mem()
9039 ioa_cfg->hostrcb[i] = dma_alloc_coherent(&pdev->dev, in ipr_alloc_mem()
9044 if (!ioa_cfg->hostrcb[i]) in ipr_alloc_mem()
9047 ioa_cfg->hostrcb[i]->hostrcb_dma = in ipr_alloc_mem()
9049 ioa_cfg->hostrcb[i]->ioa_cfg = ioa_cfg; in ipr_alloc_mem()
9050 list_add_tail(&ioa_cfg->hostrcb[i]->queue, &ioa_cfg->hostrcb_free_q); in ipr_alloc_mem()
9068 ioa_cfg->hostrcb[i], in ipr_alloc_mem()