Print this page
3500 Support LSI SAS2008 (Falcon) Skinny FW for mr_sas(7D)

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/mdb/common/modules/mr_sas/mr_sas.c
          +++ new/usr/src/cmd/mdb/common/modules/mr_sas/mr_sas.c
↓ open down ↓ 15 lines elided ↑ open up ↑
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
  24   24   */
  25   25  
       26 +/*
       27 + * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
       28 + */
       29 +
  26   30  #include <limits.h>
  27   31  #include <sys/mdb_modapi.h>
  28   32  #include <sys/sysinfo.h>
  29   33  #include <sys/sunmdi.h>
  30   34  #include <sys/scsi/scsi.h>
  31   35  #include "mr_sas.h"
  32   36  
  33   37  int
  34   38  construct_path(uintptr_t addr, char *result)
  35   39  {
↓ open down ↓ 14 lines elided ↑ open up ↑
  50   54                      (uintptr_t)d.devi_addr);
  51   55                  mdb_snprintf(result+strlen(result),
  52   56                      PATH_MAX-strlen(result),
  53   57                      "/%s%s%s", devi_node, (*devi_addr ? "@" : ""),
  54   58                      devi_addr);
  55   59          }
  56   60          return (DCMD_OK);
  57   61  }
  58   62  
  59   63  void
  60      -display_targets(struct mrsas_instance m, int verbose)
       64 +display_targets(struct mrsas_instance *m, int verbose)
  61   65  {
  62   66          int     tgt;
  63      -        struct mrsas_ld *mr_ldp;
       67 +        struct mrsas_ld mr_ldp[MRDRV_MAX_LD];
       68 +        struct mrsas_tbolt_pd mr_pdp[MRSAS_TBOLT_PD_TGT_MAX];
  64   69          char    device_path[PATH_MAX];
  65   70  
  66   71          if (verbose) {
  67   72                  *device_path = 0;
  68      -                if (construct_path((uintptr_t)m.dip, device_path) != DCMD_OK) {
       73 +                if (construct_path((uintptr_t)m->dip, device_path) != DCMD_OK) {
  69   74                          strcpy(device_path, "couldn't determine device path");
  70   75                  }
  71   76          }
  72   77  
  73   78          mdb_printf("\n");
  74   79          if (verbose)
  75   80                  mdb_printf("%s\n", device_path);
  76      -        mdb_printf("dev_type target\n");
  77      -        mdb_printf("----------");
  78      -        mdb_printf("\n");
       81 +        mdb_printf("Physical/Logical Target\n");
       82 +        mdb_printf("-----------------------\n");
       83 +
       84 +        if (mdb_vread(&mr_ldp, sizeof (mr_ldp), (uintptr_t)m->mr_ld_list)
       85 +            == -1 ||
       86 +            mdb_vread(&mr_pdp, sizeof (mr_pdp), (uintptr_t)m->mr_tbolt_pd_list)
       87 +            == -1) {
       88 +                mdb_warn("can't read list of disks");
       89 +                return;
       90 +        }
       91 +
  79   92          for (tgt = 0; tgt < MRDRV_MAX_LD; tgt++) {
  80      -                mr_ldp = (struct mrsas_ld *)&m.mr_ld_list[tgt];
  81      -                if ((mr_ldp != NULL) && (mr_ldp->dip != NULL) &&
  82      -                    (mr_ldp->lun_type == MRSAS_LD_LUN)) {
  83      -                        mdb_printf("sd %d", tgt);
  84      -                        mdb_printf("\n");
       93 +                if (mr_ldp[tgt].dip != NULL &&
       94 +                    mr_ldp[tgt].lun_type == MRSAS_LD_LUN) {
       95 +                        mdb_printf("Logical          sd %d\n", tgt);
  85   96                  }
  86   97          }
       98 +        for (tgt = 0; tgt < MRSAS_TBOLT_PD_TGT_MAX; tgt++) {
       99 +                if (mr_pdp[tgt].dip != NULL &&
      100 +                    mr_pdp[tgt].lun_type == MRSAS_TBOLT_PD_LUN) {
      101 +                        mdb_printf("Physical         sd %d\n", tgt);
      102 +                }
      103 +        }
  87  104          mdb_printf("\n");
  88  105  }
  89  106  
  90  107  void
  91      -display_deviceinfo(struct mrsas_instance m)
      108 +display_deviceinfo(struct mrsas_instance *m)
  92  109  {
  93  110          uint16_t vid, did, svid, sid;
  94  111  
  95      -        vid = m.vendor_id;
  96      -        did = m.device_id;
  97      -        svid = m.subsysvid;
  98      -        sid = m.subsysid;
      112 +        vid = m->vendor_id;
      113 +        did = m->device_id;
      114 +        svid = m->subsysvid;
      115 +        sid = m->subsysid;
  99  116  
 100  117          mdb_printf("\n");
 101  118          mdb_printf("vendor_id device_id subsysvid subsysid");
 102  119          mdb_printf("\n");
 103  120          mdb_printf("--------------------------------------");
 104  121          mdb_printf("\n");
 105  122          mdb_printf("    0x%x   0x%x    0x%x    0x%x",
 106  123              vid, did, svid, sid);
 107  124          mdb_printf("\n");
 108  125  }
↓ open down ↓ 62 lines elided ↑ open up ↑
 171  188                          break;
 172  189                  case DDI_INTR_TYPE_FIXED:
 173  190                          mdb_printf("FIXED");
 174  191                          break;
 175  192                  default:
 176  193                          mdb_printf("INVALD");
 177  194          }
 178  195          mdb_printf("\n");
 179  196  
 180  197          if (target_info)
 181      -                display_targets(m, verbose);
      198 +                display_targets(&m, verbose);
 182  199  
 183  200          if (device_info)
 184      -                display_deviceinfo(m);
      201 +                display_deviceinfo(&m);
 185  202  
 186  203          return (rv);
 187  204  }
 188  205  
 189  206  void
 190  207  mr_sas_help(void)
 191  208  {
 192  209          mdb_printf("Prints summary information about each mr_sas instance, "
 193  210              "Without the address of a \"struct mrsas_instance\", prints every "
 194  211              "instance.\n\n"
↓ open down ↓ 21 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX