Print this page


Split Close
Expand all
Collapse all
          --- old/./mr_sas_tbolt.c
          +++ new/./mr_sas_tbolt.c
↓ open down ↓ 8 lines elided ↑ open up ↑
   9    9   * Version:
  10   10   * Author:
  11   11   *              Swaminathan K S
  12   12   *              Arun Chandrashekhar
  13   13   *              Manju R
  14   14   *              Rasheed
  15   15   *              Shakeel Bukhari
  16   16   */
  17   17  
  18   18  
  19      -#include <stddef.h>
  20   19  #include <sys/types.h>
  21   20  #include <sys/file.h>
  22   21  #include <sys/atomic.h>
  23   22  #include <sys/scsi/scsi.h>
  24   23  #include <sys/byteorder.h>
  25   24  #include "ld_pd_map.h"
  26   25  #include "mr_sas.h"
  27   26  #include "fusion.h"
  28   27  
  29   28  
↓ open down ↓ 167 lines elided ↑ open up ↑
 197  196          bzero(instance->mpi2_frame_pool_dma_obj.buffer, total_size);
 198  197          instance->mpi2_frame_pool_dma_obj.status |= DMA_OBJ_ALLOCATED;
 199  198  
 200  199          instance->io_request_frames =
 201  200              (uint8_t *)instance->mpi2_frame_pool_dma_obj.buffer;
 202  201          instance->io_request_frames_phy =
 203  202              (uint32_t)
 204  203              instance->mpi2_frame_pool_dma_obj.dma_cookie[0].dmac_address;
 205  204  
 206  205          con_log(CL_DLEVEL3, (CE_NOTE,
 207      -            "io_request_frames 0x%x",
      206 +            "io_request_frames 0x%p",
 208  207              instance->io_request_frames));
 209  208  
 210  209          con_log(CL_DLEVEL3, (CE_NOTE,
 211  210              "io_request_frames_phy 0x%x",
 212  211              instance->io_request_frames_phy));
 213  212  
 214  213          io_req_base = (uint8_t *)instance->io_request_frames +
 215  214              MRSAS_THUNDERBOLT_MSG_SIZE;
 216  215          io_req_base_phys = instance->io_request_frames_phy +
 217  216              MRSAS_THUNDERBOLT_MSG_SIZE;
↓ open down ↓ 25 lines elided ↑ open up ↑
 243  242  
 244  243                  cmd->sense_phys_addr1 =
 245  244                      (io_req_base_phys +
 246  245                      (max_cmd * raid_msg_size) + (max_cmd * sgl_sz) +
 247  246                      (i * SENSE_LENGTH));
 248  247  
 249  248  
 250  249                  cmd->SMID = i+1;
 251  250  
 252  251                  con_log(CL_DLEVEL3, (CE_NOTE,
 253      -                    "Frame Pool Addr [%x]0x%x",
      252 +                    "Frame Pool Addr [%x]0x%p",
 254  253                      cmd->index, cmd->scsi_io_request));
 255  254  
 256  255                  con_log(CL_DLEVEL3, (CE_NOTE,
 257  256                      "Frame Pool Phys Addr [%x]0x%x",
 258  257                      cmd->index, cmd->scsi_io_request_phys_addr));
 259  258  
 260  259                  con_log(CL_DLEVEL3, (CE_NOTE,
 261      -                    "Sense Addr [%x]0x%x",
      260 +                    "Sense Addr [%x]0x%p",
 262  261                      cmd->index, cmd->sense1));
 263  262  
 264  263                  con_log(CL_DLEVEL3, (CE_NOTE,
 265  264                      "Sense Addr Phys [%x]0x%x",
 266  265                      cmd->index, cmd->sense_phys_addr1));
 267  266  
 268  267  
 269  268                  con_log(CL_DLEVEL3, (CE_NOTE,
 270      -                    "Sgl bufffers [%x]0x%x",
      269 +                    "Sgl bufffers [%x]0x%p",
 271  270                      cmd->index, cmd->sgl));
 272  271  
 273  272                  con_log(CL_DLEVEL3, (CE_NOTE,
 274  273                      "Sgl bufffers phys  [%x]0x%x",
 275  274                      cmd->index, cmd->sgl_phys_addr));
 276  275          }
 277  276  
 278  277          return (DDI_SUCCESS);
 279  278  
 280  279  }
↓ open down ↓ 145 lines elided ↑ open up ↑
 426  425  
 427  426          /*
 428  427           * ThunderBolt(TB) There's no longer producer consumer mechanism.
 429  428           * Once we have an interrupt we are supposed to scan through the list of
 430  429           * reply descriptors and process them accordingly. We would be needing
 431  430           * to allocate memory for 1024 reply descriptors
 432  431           */
 433  432  
 434  433          /* Allocate Reply Descriptors */
 435  434          con_log(CL_ANN1, (CE_NOTE, " reply q desc len = %x\n",
 436      -            sizeof (MPI2_REPLY_DESCRIPTORS_UNION)));
      435 +            (uint_t)sizeof (MPI2_REPLY_DESCRIPTORS_UNION)));
 437  436  
 438  437          // reply queue size should be multiple of 16
 439  438          max_reply_q_sz = ((instance->max_fw_cmds + 1 + 15)/16)*16;
 440  439  
 441  440          reply_q_sz = 8 * max_reply_q_sz;
 442  441  
 443  442  
 444  443          con_log(CL_ANN1, (CE_NOTE, " reply q desc len = %x\n",
 445      -            sizeof (MPI2_REPLY_DESCRIPTORS_UNION)));
      444 +            (uint_t)sizeof (MPI2_REPLY_DESCRIPTORS_UNION)));
 446  445  
 447  446          instance->reply_desc_dma_obj.size = reply_q_sz;
 448  447          instance->reply_desc_dma_obj.dma_attr = mrsas_generic_dma_attr;
 449  448          instance->reply_desc_dma_obj.dma_attr.dma_attr_addr_hi = 0xFFFFFFFFU;
 450  449          instance->reply_desc_dma_obj.dma_attr.dma_attr_count_max = 0xFFFFFFFFU;
 451  450          instance->reply_desc_dma_obj.dma_attr.dma_attr_sgllen = 1;
 452  451          instance->reply_desc_dma_obj.dma_attr.dma_attr_align = 16;
 453  452  
 454  453          if (mrsas_alloc_dma_obj(instance, &instance->reply_desc_dma_obj,
 455  454                          (uchar_t)DDI_STRUCTURE_LE_ACC) != 1) {
↓ open down ↓ 7 lines elided ↑ open up ↑
 463  462  
 464  463          // virtual address of  reply queue
 465  464          instance->reply_frame_pool = (MPI2_REPLY_DESCRIPTORS_UNION *)(
 466  465              instance->reply_desc_dma_obj.buffer);
 467  466  
 468  467          instance->reply_q_depth = max_reply_q_sz;
 469  468  
 470  469          con_log(CL_ANN1, (CE_NOTE, "[reply queue depth]0x%x",
 471  470              instance->reply_q_depth));
 472  471  
 473      -        con_log(CL_ANN1, (CE_NOTE, "[reply queue virt addr]0x%x",
      472 +        con_log(CL_ANN1, (CE_NOTE, "[reply queue virt addr]0x%p",
 474  473              instance->reply_frame_pool));
 475  474  
 476  475          /* initializing reply address to 0xFFFFFFFF */
 477  476          reply_desc = instance->reply_frame_pool;
 478  477  
 479  478          for (i = 0; i < instance->reply_q_depth; i++) {
 480  479                  reply_desc->Words = (uint64_t)~0;
 481  480                  reply_desc++;
 482  481          }
 483  482  
↓ open down ↓ 6 lines elided ↑ open up ↑
 490  489  
 491  490  
 492  491          instance->reply_pool_limit_phy = (instance->reply_frame_pool_phy +
 493  492              reply_q_sz);
 494  493  
 495  494          con_log(CL_ANN1, (CE_NOTE, "[reply pool limit phys addr]0x%x",
 496  495              instance->reply_pool_limit_phy));
 497  496  
 498  497  
 499  498          con_log(CL_ANN1, (CE_NOTE, " request q desc len = %x\n",
 500      -            sizeof (MRSAS_REQUEST_DESCRIPTOR_UNION)));
      499 +            (int)sizeof (MRSAS_REQUEST_DESCRIPTOR_UNION)));
 501  500  
 502  501          /* Allocate Request Descriptors */
 503  502          con_log(CL_ANN1, (CE_NOTE, " request q desc len = %x\n",
 504      -            sizeof (MRSAS_REQUEST_DESCRIPTOR_UNION)));
      503 +            (int)sizeof (MRSAS_REQUEST_DESCRIPTOR_UNION)));
 505  504  
 506  505          request_q_sz = 8 *
 507  506              (instance->max_fw_cmds);
 508  507  
 509  508          instance->request_desc_dma_obj.size = request_q_sz;
 510  509          instance->request_desc_dma_obj.dma_attr = mrsas_generic_dma_attr;
 511  510          instance->request_desc_dma_obj.dma_attr.dma_attr_addr_hi = 0xFFFFFFFFU;
 512  511          instance->request_desc_dma_obj.dma_attr.dma_attr_count_max = 0xFFFFFFFFU;
 513  512          instance->request_desc_dma_obj.dma_attr.dma_attr_sgllen = 1;
 514  513          instance->request_desc_dma_obj.dma_attr.dma_attr_align = 16;
↓ open down ↓ 384 lines elided ↑ open up ↑
 899  898          struct mrsas_cmd                *cmd = NULL;
 900  899          struct mrsas_drv_ver            drv_ver_info;
 901  900          MRSAS_REQUEST_DESCRIPTOR_UNION  *req_desc;
 902  901  
 903  902  
 904  903          con_log(CL_ANN, (CE_NOTE, "chkpnt:%s:%d", __func__, __LINE__));
 905  904  
 906  905  
 907  906  #ifdef DEBUG
 908  907          con_log(CL_ANN1, (CE_CONT, " mfiFrameInit2 len = %x\n",
 909      -            sizeof (*mfiFrameInit2)));
 910      -        con_log(CL_ANN1, (CE_CONT, " MPI len = %x\n", sizeof (*init)));
      908 +            (int)sizeof (*mfiFrameInit2)));
      909 +        con_log(CL_ANN1, (CE_CONT, " MPI len = %x\n", (int)sizeof (*init)));
 911  910          con_log(CL_ANN1, (CE_CONT, " mfiFrameInit2 len = %x\n",
 912      -            sizeof (struct mrsas_init_frame2)));
      911 +            (int)sizeof (struct mrsas_init_frame2)));
 913  912          con_log(CL_ANN1, (CE_CONT, " MPI len = %x\n",
 914      -            sizeof (Mpi2IOCInitRequest_t)));
      913 +            (int)sizeof (Mpi2IOCInitRequest_t)));
 915  914  #endif
 916  915  
 917  916          init = (Mpi2IOCInitRequest_t *)mpi2_dma_obj->buffer;
 918  917          numbytes = sizeof (*init);
 919  918          bzero(init, numbytes);
 920  919  
 921  920          ddi_put8(mpi2_dma_obj->acc_handle, &init->Function,
 922  921              MPI2_FUNCTION_IOC_INIT);
 923  922  
 924  923          ddi_put8(mpi2_dma_obj->acc_handle, &init->WhoInit,
↓ open down ↓ 37 lines elided ↑ open up ↑
 962  961  
 963  962          cmd = instance->cmd_list[0];
 964  963          if (cmd == NULL) {
 965  964                  return (DDI_FAILURE);
 966  965          }
 967  966          cmd->retry_count_for_ocr = 0;
 968  967          cmd->pkt = NULL;
 969  968          cmd->drv_pkt_time = 0;
 970  969  
 971  970          mfiFrameInit2 = (struct mrsas_init_frame2 *)cmd->scsi_io_request;
 972      -        con_log(CL_ANN1, (CE_CONT, "[mfi vaddr]%x", mfiFrameInit2));
      971 +        con_log(CL_ANN1, (CE_CONT, "[mfi vaddr]%p", mfiFrameInit2));
 973  972  
 974  973          frame_hdr = &cmd->frame->hdr;
 975  974  
 976  975          ddi_put8(cmd->frame_dma_obj.acc_handle, &frame_hdr->cmd_status,
 977  976              MFI_CMD_STATUS_POLL_MODE);
 978  977  
 979  978          flags = ddi_get16(cmd->frame_dma_obj.acc_handle, &frame_hdr->flags);
 980  979  
 981  980          flags   |= MFI_FRAME_DONT_POST_IN_REPLY_QUEUE;
 982  981  
↓ open down ↓ 16 lines elided ↑ open up ↑
 999  998  
1000  999          ddi_put32(instance->mpi2_frame_pool_dma_obj.acc_handle,
1001 1000              &mfiFrameInit2->queue_info_new_phys_addr_lo,
1002 1001              mpi2_dma_obj->dma_cookie[0].dmac_address);
1003 1002  
1004 1003          ddi_put32(instance->mpi2_frame_pool_dma_obj.acc_handle,
1005 1004              &mfiFrameInit2->data_xfer_len,
1006 1005              sizeof (Mpi2IOCInitRequest_t));
1007 1006  
1008 1007          con_log(CL_ANN1, (CE_CONT, "[reply q desc addr]%x",
1009      -            init->ReplyDescriptorPostQueueAddress));
     1008 +            (int)init->ReplyDescriptorPostQueueAddress));
1010 1009  
1011 1010          /* fill driver version information*/    
1012 1011          fill_up_drv_ver(&drv_ver_info);
1013 1012          
1014 1013          /* allocate the driver version data transfer buffer */
1015 1014          instance->drv_ver_dma_obj.size = sizeof(drv_ver_info.drv_ver);
1016 1015          instance->drv_ver_dma_obj.dma_attr = mrsas_generic_dma_attr;
1017 1016          instance->drv_ver_dma_obj.dma_attr.dma_attr_addr_hi = 0xFFFFFFFFU;
1018 1017          instance->drv_ver_dma_obj.dma_attr.dma_attr_count_max = 0xFFFFFFFFU;
1019 1018          instance->drv_ver_dma_obj.dma_attr.dma_attr_sgllen = 1;
↓ open down ↓ 11 lines elided ↑ open up ↑
1031 1030                  (uint8_t *)drv_ver_info.drv_ver,
1032 1031                  (uint8_t *)instance->drv_ver_dma_obj.buffer, 
1033 1032                  sizeof(drv_ver_info.drv_ver), DDI_DEV_AUTOINCR);        
1034 1033  
1035 1034          /*send driver version physical address to firmware*/
1036 1035          ddi_put64(cmd->frame_dma_obj.acc_handle,
1037 1036              &mfiFrameInit2->driverversion, instance->drv_ver_dma_obj.dma_cookie[0].dmac_address);
1038 1037  
1039 1038          con_log(CL_ANN1, (CE_CONT, "[MPIINIT2 frame Phys addr ]0x%x len = %x",
1040 1039              mfiFrameInit2->queue_info_new_phys_addr_lo,
1041      -            sizeof (Mpi2IOCInitRequest_t)));
     1040 +            (int)sizeof (Mpi2IOCInitRequest_t)));
1042 1041  
1043 1042          con_log(CL_ANN1, (CE_CONT, "[Length]%x", mfiFrameInit2->data_xfer_len));
1044 1043  
1045 1044          con_log(CL_ANN1, (CE_CONT, "[MFI frame Phys Address]%x len = %x",
1046      -            cmd->scsi_io_request_phys_addr, sizeof (struct mrsas_init_frame2)));
     1045 +            cmd->scsi_io_request_phys_addr,
     1046 +            (int) sizeof (struct mrsas_init_frame2)));
1047 1047  
1048 1048          /* disable interrupts before sending INIT2 frame */
1049 1049          instance->func_ptr->disable_intr(instance);
1050 1050  
1051 1051          req_desc = (MRSAS_REQUEST_DESCRIPTOR_UNION *)
1052 1052              instance->request_message_pool;
1053 1053          req_desc->Words = cmd->scsi_io_request_phys_addr;
1054 1054          req_desc->MFAIo.RequestFlags =
1055 1055              (MPI2_REQ_DESCRIPT_FLAGS_MFA << MPI2_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
1056 1056  
↓ open down ↓ 120 lines elided ↑ open up ↑
1177 1177                              "Command Queue Full... Returning BUSY \n");
1178 1178                          return_raid_msg_pkt(instance, cmd);
1179 1179                          return (TRAN_BUSY);
1180 1180                  }
1181 1181  
1182 1182                  /* Synchronize the Cmd frame for the controller */
1183 1183                  (void) ddi_dma_sync(cmd->frame_dma_obj.dma_handle, 0, 0,
1184 1184                      DDI_DMA_SYNC_FORDEV);
1185 1185  
1186 1186                  con_log(CL_ANN, (CE_CONT, "tbolt_issue_cmd: SCSI CDB[0]=0x%x "
1187      -                    "cmd->index:0x%x SMID %0x%x\n", pkt->pkt_cdbp[0], cmd->index, cmd->SMID));
     1187 +                    "cmd->index:0x%x SMID 0x%x\n", pkt->pkt_cdbp[0], cmd->index, cmd->SMID));
1188 1188  
1189 1189                  instance->func_ptr->issue_cmd(cmd, instance);
1190 1190  
1191 1191                  return (TRAN_ACCEPT);
1192 1192  
1193 1193          } else {
1194 1194                  instance->func_ptr->issue_cmd(cmd, instance);   
1195 1195                  (void) wait_for_outstanding_poll_io(instance);
1196 1196                  return (TRAN_ACCEPT);
1197 1197          }
↓ open down ↓ 111 lines elided ↑ open up ↑
1309 1309          
1310 1310                  if (instance->device_id == PCI_DEVICE_ID_LSI_INVADER) {
1311 1311                          if (i == (numElements - 1))
1312 1312                                  ddi_put8(instance->mpi2_frame_pool_dma_obj.acc_handle,
1313 1313                                          &scsi_raid_io_sgl_ieee->Flags, IEEE_SGE_FLAGS_END_OF_LIST);
1314 1314                  }
1315 1315  
1316 1316                  *datalen += acmd->cmd_dmacookies[i].dmac_size;
1317 1317  
1318 1318  #ifdef DEBUG
1319      -                con_log(CL_DLEVEL1, (CE_NOTE, "[SGL Address]:%llx",
     1319 +                con_log(CL_DLEVEL1, (CE_NOTE, "[SGL Address]: %" PRIx64,
1320 1320                      scsi_raid_io_sgl_ieee->Address));
1321 1321                  con_log(CL_DLEVEL1, (CE_NOTE, "[SGL Length]:%x",
1322 1322                      scsi_raid_io_sgl_ieee->Length));
1323 1323                  con_log(CL_DLEVEL1, (CE_NOTE, "[SGL Flags]:%x",
1324 1324                      scsi_raid_io_sgl_ieee->Flags));
1325 1325  #endif
1326 1326  
1327 1327          }
1328 1328  
1329 1329          ddi_put8(instance->mpi2_frame_pool_dma_obj.acc_handle,
↓ open down ↓ 69 lines elided ↑ open up ↑
1399 1399                          if (instance->device_id == PCI_DEVICE_ID_LSI_INVADER) {
1400 1400                                  if (i == (numElements - 1))
1401 1401                                          ddi_put8(instance->mpi2_frame_pool_dma_obj.acc_handle,
1402 1402                                                  &scsi_raid_io_sgl_ieee->Flags, IEEE_SGE_FLAGS_END_OF_LIST);
1403 1403                          }
1404 1404  
1405 1405                          *datalen += acmd->cmd_dmacookies[i].dmac_size;
1406 1406  
1407 1407  #if DEBUG
1408 1408                          con_log(CL_DLEVEL1, (CE_NOTE,
1409      -                            "[SGL Address]:%llx",
     1409 +                            "[SGL Address]: %" PRIx64,
1410 1410                              scsi_raid_io_sgl_ieee->Address));
1411 1411                          con_log(CL_DLEVEL1, (CE_NOTE,
1412 1412                              "[SGL Length]:%x", scsi_raid_io_sgl_ieee->Length));
1413 1413                          con_log(CL_DLEVEL1, (CE_NOTE,
1414 1414                              "[SGL Flags]:%x", scsi_raid_io_sgl_ieee->Flags));
1415 1415  #endif
1416 1416  
1417 1417                          i++;
1418 1418                  }
1419 1419          }
↓ open down ↓ 559 lines elided ↑ open up ↑
1979 1979  tbolt_issue_cmd(struct mrsas_cmd *cmd, struct mrsas_instance *instance)
1980 1980  {
1981 1981          MRSAS_REQUEST_DESCRIPTOR_UNION *req_desc = cmd->request_desc;
1982 1982          atomic_add_16(&instance->fw_outstanding, 1);
1983 1983  
1984 1984          struct scsi_pkt *pkt;
1985 1985  
1986 1986          con_log(CL_ANN1, (CE_NOTE, "tbolt_issue_cmd: cmd->[SMID]=0x%X", cmd->SMID));
1987 1987  
1988 1988          con_log(CL_DLEVEL1, (CE_CONT,
1989      -            " [req desc Words] %llx \n", req_desc->Words));
     1989 +            " [req desc Words] %" PRIx64 " \n", req_desc->Words));
1990 1990          con_log(CL_DLEVEL1, (CE_CONT,
1991      -            " [req desc low part] %x \n", req_desc->Words));
     1991 +            " [req desc low part] %x \n",
     1992 +            (uint_t)(req_desc->Words & 0xffffffffff)));
1992 1993          con_log(CL_DLEVEL1, (CE_CONT,
1993      -            " [req desc high part] %x \n", (req_desc->Words >> 32)));
     1994 +            " [req desc high part] %x \n", (uint_t)(req_desc->Words >> 32)));
1994 1995          pkt = cmd->pkt;
1995 1996          
1996 1997          if (pkt) {
1997 1998                  con_log(CL_ANN1, (CE_CONT, "%llx :TBOLT issue_cmd_ppc:"
1998 1999                      "ISSUED CMD TO FW : called : cmd:"
1999 2000                      ": %p instance : %p pkt : %p pkt_time : %x\n",
2000 2001                      gethrtime(), (void *)cmd, (void *)instance,
2001 2002                      (void *)pkt, cmd->drv_pkt_time));
2002 2003                  if (instance->adapterresetinprogress) {
2003 2004                          cmd->drv_pkt_time = (uint16_t)debug_timeout_g;
↓ open down ↓ 46 lines elided ↑ open up ↑
2050 2051                  WR_IB_HIGH_QPORT((uint32_t)(req_desc->Words >> 32), instance);
2051 2052                  mutex_exit(&instance->reg_write_mtx);
2052 2053  
2053 2054                  return (DDI_SUCCESS);
2054 2055          } else {
2055 2056                  con_log(CL_ANN1, (CE_NOTE, "tbolt_issue_cmd_in_sync_mode: pushing the pkt\n"));
2056 2057                  push_pending_mfi_pkt(instance, cmd);
2057 2058          }
2058 2059  
2059 2060          con_log(CL_DLEVEL2, (CE_NOTE,
2060      -            "HighQport offset :%lx",
     2061 +            "HighQport offset :%p",
2061 2062              (uint32_t *)((uintptr_t)(instance)->regmap + IB_HIGH_QPORT)));
2062 2063          con_log(CL_DLEVEL2, (CE_NOTE,
2063      -            "LowQport offset :%lx",
     2064 +            "LowQport offset :%p",
2064 2065              (uint32_t *)((uintptr_t)(instance)->regmap + IB_LOW_QPORT)));
2065 2066  
2066 2067          cmd->sync_cmd = MRSAS_TRUE;
2067 2068          cmd->cmd_status =  ENODATA;
2068 2069  
2069 2070  
2070 2071          mutex_enter(&instance->reg_write_mtx);
2071 2072          WR_IB_LOW_QPORT((uint32_t)(req_desc->Words), instance);
2072 2073          WR_IB_HIGH_QPORT((uint32_t)(req_desc->Words >> 32), instance);
2073 2074          mutex_exit(&instance->reg_write_mtx);
2074 2075  
2075 2076          con_log(CL_ANN1, (CE_NOTE,
2076      -            " req desc high part %x \n", (req_desc->Words >> 32)));
     2077 +            " req desc high part %x \n", (uint_t)(req_desc->Words >> 32)));
2077 2078          con_log(CL_ANN1, (CE_NOTE,
2078      -            " req desc low part %x \n", req_desc->Words));
     2079 +            " req desc low part %x \n", (uint_t)(req_desc->Words & 0xffffffff)));
2079 2080  
2080 2081          mutex_enter(&instance->int_cmd_mtx);
2081 2082          for (i = 0; i < msecs && (cmd->cmd_status == ENODATA); i++) {
2082 2083                  cv_wait(&instance->int_cmd_cv, &instance->int_cmd_mtx);
2083 2084          }
2084 2085          mutex_exit(&instance->int_cmd_mtx);
2085 2086  
2086 2087  
2087 2088          if (i < (msecs -1)) {
2088 2089                  return (DDI_SUCCESS);
↓ open down ↓ 19 lines elided ↑ open up ↑
2108 2109          MRSAS_REQUEST_DESCRIPTOR_UNION *req_desc = cmd->request_desc;
2109 2110  
2110 2111          frame_hdr = (struct mrsas_header *)&cmd->frame->hdr;
2111 2112          ddi_put8(cmd->frame_dma_obj.acc_handle, &frame_hdr->cmd_status,
2112 2113              MFI_CMD_STATUS_POLL_MODE);
2113 2114          flags = ddi_get16(cmd->frame_dma_obj.acc_handle, &frame_hdr->flags);
2114 2115          flags   |= MFI_FRAME_DONT_POST_IN_REPLY_QUEUE;
2115 2116          ddi_put16(cmd->frame_dma_obj.acc_handle, &frame_hdr->flags, flags);
2116 2117  
2117 2118          con_log(CL_ANN1, (CE_NOTE,
2118      -            " req desc low part %x \n", req_desc->Words));
     2119 +            " req desc low part %x \n", (uint_t)(req_desc->Words & 0xffffffff)));
2119 2120          con_log(CL_ANN1, (CE_NOTE,
2120      -            " req desc high part %x \n", (req_desc->Words >> 32)));
     2121 +            " req desc high part %x \n", (uint_t)(req_desc->Words >> 32)));
2121 2122  
2122 2123          /* issue the frame using inbound queue port */
2123 2124          mutex_enter(&instance->reg_write_mtx);
2124 2125          WR_IB_LOW_QPORT((uint32_t)(req_desc->Words), instance);
2125 2126          WR_IB_HIGH_QPORT((uint32_t)(req_desc->Words >> 32), instance);
2126 2127          mutex_exit(&instance->reg_write_mtx);
2127 2128  
2128 2129          for (i = 0; i < msecs && (
2129 2130              ddi_get8(cmd->frame_dma_obj.acc_handle, &frame_hdr->cmd_status)
2130 2131              == MFI_CMD_STATUS_POLL_MODE); i++) {
2131 2132                  /* wait for cmd_status to change from 0xFF */
2132 2133                  drv_usecwait(MILLISEC); /* wait for 1000 usecs */
2133 2134          }
2134 2135  
2135 2136          if (ddi_get8(cmd->frame_dma_obj.acc_handle,
2136 2137              &frame_hdr->cmd_status) == MFI_CMD_STATUS_POLL_MODE) {
2137 2138                  con_log(CL_ANN1, (CE_NOTE,
2138      -                    " cmd failed %x \n", (req_desc->Words)));
     2139 +                    " cmd failed %" PRIx64 " \n", (req_desc->Words)));
2139 2140                  return (DDI_FAILURE);
2140 2141          }
2141 2142  
2142 2143          return (DDI_SUCCESS);
2143 2144  }
2144 2145  
2145 2146  void
2146 2147  tbolt_enable_intr(struct mrsas_instance *instance)
2147 2148  {
2148 2149          uint32_t        mask;
↓ open down ↓ 156 lines elided ↑ open up ↑
2305 2306                  con_log(CL_ANN, (CE_NOTE, "Not MFA enabled.\n"));
2306 2307                  return;
2307 2308          }
2308 2309  
2309 2310          index = cmd->index;
2310 2311  
2311 2312          ReqDescUnion =
2312 2313              mr_sas_get_request_descriptor(instance, index, cmd);
2313 2314  
2314 2315          if (!ReqDescUnion) {
2315      -                con_log(CL_ANN1, (CE_NOTE, "[NULL REQDESC]%x"));
     2316 +                con_log(CL_ANN1, (CE_NOTE, "[NULL REQDESC]"));
2316 2317                  return;
2317 2318          }
2318 2319  
2319 2320          con_log(CL_ANN1, (CE_NOTE, "[SMID]%x", cmd->SMID));
2320 2321  
2321 2322          ReqDescUnion->Words = 0;
2322 2323  
2323 2324          ReqDescUnion->SCSIIO.RequestFlags =
2324 2325              (MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO <<
2325 2326              MPI2_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
↓ open down ↓ 37 lines elided ↑ open up ↑
2363 2364              (U64)cmd->frame_phys_addr);
2364 2365  
2365 2366          ddi_put8(instance->mpi2_frame_pool_dma_obj.acc_handle,
2366 2367              &scsi_raid_io_sgl_ieee->Flags,
2367 2368              (IEEE_SGE_FLAGS_CHAIN_ELEMENT |
2368 2369                     MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR));
2369 2370          ddi_put32(instance->mpi2_frame_pool_dma_obj.acc_handle,
2370 2371              &scsi_raid_io_sgl_ieee->Length, 1024); //MEGASAS_MAX_SZ_CHAIN_FRAME
2371 2372  
2372 2373          con_log(CL_ANN1, (CE_NOTE,
2373      -            "[MFI CMD PHY ADDRESS]:%x",
     2374 +            "[MFI CMD PHY ADDRESS]:%" PRIx64,
2374 2375              scsi_raid_io_sgl_ieee->Address));
2375 2376          con_log(CL_ANN1, (CE_NOTE,
2376 2377              "[SGL Length]:%x", scsi_raid_io_sgl_ieee->Length));
2377 2378          con_log(CL_ANN1, (CE_NOTE, "[SGL Flags]:%x",
2378 2379              scsi_raid_io_sgl_ieee->Flags));
2379 2380  }
2380 2381  
2381 2382  
2382 2383  void
2383 2384  tbolt_complete_cmd(struct mrsas_instance *instance,
↓ open down ↓ 239 lines elided ↑ open up ↑
2623 2624                          con_log(CL_ANN, (CE_NOTE,
2624 2625                             "LDMAP sync command  SMID RECEIVED 0x%X",
2625 2626                             cmd->SMID));
2626 2627                          if (cmd->frame->hdr.cmd_status != 0) {
2627 2628                                  cmn_err(CE_WARN,
2628 2629                                          "map sync failed, status = 0x%x.\n",cmd->frame->hdr.cmd_status);
2629 2630                          }
2630 2631                          else {
2631 2632                                  instance->map_id++;
2632 2633                                  cmn_err(CE_NOTE,
2633      -                                        "map sync received, switched map_id to %ld \n",instance->map_id);
     2634 +                                        "map sync received, switched map_id to %" PRIu64 " \n",instance->map_id);
2634 2635                          }
2635 2636  
2636 2637                          if (MR_ValidateMapInfo(instance->ld_map[(instance->map_id & 1)], instance->load_balance_info))
2637 2638                                  instance->fast_path_io = 1; 
2638 2639                          else 
2639 2640                                  instance->fast_path_io = 0;     
2640 2641                          
2641 2642                          con_log(CL_ANN, (CE_NOTE,
2642 2643                                  "instance->fast_path_io %d \n",instance->fast_path_io));
2643 2644  
↓ open down ↓ 73 lines elided ↑ open up ↑
2717 2718          desc = instance->reply_frame_pool;
2718 2719          desc += instance->reply_read_index;
2719 2720  
2720 2721          replyDesc = (MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR *)desc;
2721 2722          replyType = replyDesc->ReplyFlags &
2722 2723              MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK;
2723 2724  
2724 2725          if (replyType == MPI2_RPY_DESCRIPT_FLAGS_UNUSED)
2725 2726                  return (DDI_INTR_UNCLAIMED);
2726 2727  
2727      -        con_log(CL_ANN1, (CE_NOTE, "Reply Desc  = %llx  Words = %llx \n",
     2728 +        con_log(CL_ANN1, (CE_NOTE, "Reply Desc  = %p  Words = %" PRIx64 " \n",
2728 2729                                  desc, desc->Words));
2729 2730  
2730 2731          d_val.word = desc->Words;
2731 2732          
2732 2733  
2733 2734          /* Read Reply descriptor */
2734 2735          while ((d_val.u1.low != 0xffffffff) &&
2735 2736              (d_val.u1.high != 0xffffffff)) {
2736 2737  
2737 2738                  (void) ddi_dma_sync(instance->reply_desc_dma_obj.dma_handle,
2738 2739                  0, 0, DDI_DMA_SYNC_FORCPU);
2739 2740  
2740 2741                  smid = replyDesc->SMID;
2741 2742  
2742 2743                  if (!smid || smid > instance->max_fw_cmds + 1) {
2743 2744                          con_log(CL_ANN1, (CE_NOTE,
2744      -                            "Reply Desc at Break  = %llx  Words = %llx \n",
     2745 +                            "Reply Desc at Break  = %p  Words = %" PRIx64 " \n",
2745 2746                              desc, desc->Words));
2746 2747                          break;
2747 2748                  }
2748 2749  
2749 2750                  cmd     = instance->cmd_list[smid - 1];
2750 2751                  if(!cmd ) {
2751 2752                          con_log(CL_ANN1, (CE_NOTE,
2752 2753                                  "mr_sas_tbolt_process_outstanding_cmd: Invalid command "
2753 2754                                  " or Poll commad Received in completion path\n"));
2754 2755                  }
↓ open down ↓ 35 lines elided ↑ open up ↑
2790 2791                  if (!instance->reply_read_index)
2791 2792                          desc = instance->reply_frame_pool;
2792 2793                  else
2793 2794                          desc++;
2794 2795  
2795 2796                  replyDesc = (MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR *)desc;
2796 2797  
2797 2798                  d_val.word = desc->Words;
2798 2799  
2799 2800                  con_log(CL_ANN1, (CE_NOTE,
2800      -                    "Next Reply Desc  = %llx Words = %llx\n",
     2801 +                    "Next Reply Desc  = %p Words = %" PRIx64 "\n",
2801 2802                      desc, desc->Words));
2802 2803  
2803 2804                  replyType = replyDesc->ReplyFlags &
2804 2805                      MPI2_RPY_DESCRIPT_FLAGS_TYPE_MASK;
2805 2806  
2806 2807                  if (replyType == MPI2_RPY_DESCRIPT_FLAGS_UNUSED)
2807 2808                          break;
2808 2809  
2809 2810          } /* End of while loop. */
2810 2811  
↓ open down ↓ 947 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX