linux/drivers/scsi/scsi_transport_sas.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2005-2006 Dell Inc.
   3 *      Released under GPL v2.
   4 *
   5 * Serial Attached SCSI (SAS) transport class.
   6 *
   7 * The SAS transport class contains common code to deal with SAS HBAs,
   8 * an aproximated representation of SAS topologies in the driver model,
   9 * and various sysfs attributes to expose these topologies and management
  10 * interfaces to userspace.
  11 *
  12 * In addition to the basic SCSI core objects this transport class
  13 * introduces two additional intermediate objects:  The SAS PHY
  14 * as represented by struct sas_phy defines an "outgoing" PHY on
  15 * a SAS HBA or Expander, and the SAS remote PHY represented by
  16 * struct sas_rphy defines an "incoming" PHY on a SAS Expander or
  17 * end device.  Note that this is purely a software concept, the
  18 * underlying hardware for a PHY and a remote PHY is the exactly
  19 * the same.
  20 *
  21 * There is no concept of a SAS port in this code, users can see
  22 * what PHYs form a wide port based on the port_identifier attribute,
  23 * which is the same for all PHYs in a port.
  24 */
  25
  26#include <linux/init.h>
  27#include <linux/module.h>
  28#include <linux/jiffies.h>
  29#include <linux/err.h>
  30#include <linux/slab.h>
  31#include <linux/string.h>
  32#include <linux/blkdev.h>
  33#include <linux/bsg.h>
  34
  35#include <scsi/scsi.h>
  36#include <scsi/scsi_device.h>
  37#include <scsi/scsi_host.h>
  38#include <scsi/scsi_transport.h>
  39#include <scsi/scsi_transport_sas.h>
  40
  41#include "scsi_sas_internal.h"
  42struct sas_host_attrs {
  43        struct list_head rphy_list;
  44        struct mutex lock;
  45        struct request_queue *q;
  46        u32 next_target_id;
  47        u32 next_expander_id;
  48        int next_port_id;
  49};
  50#define to_sas_host_attrs(host) ((struct sas_host_attrs *)(host)->shost_data)
  51
  52
  53/*
  54 * Hack to allow attributes of the same name in different objects.
  55 */
  56#define SAS_DEVICE_ATTR(_prefix,_name,_mode,_show,_store) \
  57        struct device_attribute dev_attr_##_prefix##_##_name = \
  58        __ATTR(_name,_mode,_show,_store)
  59
  60
  61/*
  62 * Pretty printing helpers
  63 */
  64
  65#define sas_bitfield_name_match(title, table)                   \
  66static ssize_t                                                  \
  67get_sas_##title##_names(u32 table_key, char *buf)               \
  68{                                                               \
  69        char *prefix = "";                                      \
  70        ssize_t len = 0;                                        \
  71        int i;                                                  \
  72                                                                \
  73        for (i = 0; i < ARRAY_SIZE(table); i++) {               \
  74                if (table[i].value & table_key) {               \
  75                        len += sprintf(buf + len, "%s%s",       \
  76                                prefix, table[i].name);         \
  77                        prefix = ", ";                          \
  78                }                                               \
  79        }                                                       \
  80        len += sprintf(buf + len, "\n");                        \
  81        return len;                                             \
  82}
  83
  84#define sas_bitfield_name_set(title, table)                     \
  85static ssize_t                                                  \
  86set_sas_##title##_names(u32 *table_key, const char *buf)        \
  87{                                                               \
  88        ssize_t len = 0;                                        \
  89        int i;                                                  \
  90                                                                \
  91        for (i = 0; i < ARRAY_SIZE(table); i++) {               \
  92                len = strlen(table[i].name);                    \
  93                if (strncmp(buf, table[i].name, len) == 0 &&    \
  94                    (buf[len] == '\n' || buf[len] == '\0')) {   \
  95                        *table_key = table[i].value;            \
  96                        return 0;                               \
  97                }                                               \
  98        }                                                       \
  99        return -EINVAL;                                         \
 100}
 101
 102#define sas_bitfield_name_search(title, table)                  \
 103static ssize_t                                                  \
 104get_sas_##title##_names(u32 table_key, char *buf)               \
 105{                                                               \
 106        ssize_t len = 0;                                        \
 107        int i;                                                  \
 108                                                                \
 109        for (i = 0; i < ARRAY_SIZE(table); i++) {               \
 110                if (table[i].value == table_key) {              \
 111                        len += sprintf(buf + len, "%s",         \
 112                                table[i].name);                 \
 113                        break;                                  \
 114                }                                               \
 115        }                                                       \
 116        len += sprintf(buf + len, "\n");                        \
 117        return len;                                             \
 118}
 119
 120static struct {
 121        u32             value;
 122        char            *name;
 123} sas_device_type_names[] = {
 124        { SAS_PHY_UNUSED,               "unused" },
 125        { SAS_END_DEVICE,               "end device" },
 126        { SAS_EDGE_EXPANDER_DEVICE,     "edge expander" },
 127        { SAS_FANOUT_EXPANDER_DEVICE,   "fanout expander" },
 128};
 129sas_bitfield_name_search(device_type, sas_device_type_names)
 130
 131
 132static struct {
 133        u32             value;
 134        char            *name;
 135} sas_protocol_names[] = {
 136        { SAS_PROTOCOL_SATA,            "sata" },
 137        { SAS_PROTOCOL_SMP,             "smp" },
 138        { SAS_PROTOCOL_STP,             "stp" },
 139        { SAS_PROTOCOL_SSP,             "ssp" },
 140};
 141sas_bitfield_name_match(protocol, sas_protocol_names)
 142
 143static struct {
 144        u32             value;
 145        char            *name;
 146} sas_linkspeed_names[] = {
 147        { SAS_LINK_RATE_UNKNOWN,        "Unknown" },
 148        { SAS_PHY_DISABLED,             "Phy disabled" },
 149        { SAS_LINK_RATE_FAILED,         "Link Rate failed" },
 150        { SAS_SATA_SPINUP_HOLD,         "Spin-up hold" },
 151        { SAS_LINK_RATE_1_5_GBPS,       "1.5 Gbit" },
 152        { SAS_LINK_RATE_3_0_GBPS,       "3.0 Gbit" },
 153        { SAS_LINK_RATE_6_0_GBPS,       "6.0 Gbit" },
 154        { SAS_LINK_RATE_12_0_GBPS,      "12.0 Gbit" },
 155};
 156sas_bitfield_name_search(linkspeed, sas_linkspeed_names)
 157sas_bitfield_name_set(linkspeed, sas_linkspeed_names)
 158
 159static struct sas_end_device *sas_sdev_to_rdev(struct scsi_device *sdev)
 160{
 161        struct sas_rphy *rphy = target_to_rphy(sdev->sdev_target);
 162        struct sas_end_device *rdev;
 163
 164        BUG_ON(rphy->identify.device_type != SAS_END_DEVICE);
 165
 166        rdev = rphy_to_end_device(rphy);
 167        return rdev;
 168}
 169
 170static void sas_smp_request(struct request_queue *q, struct Scsi_Host *shost,
 171                            struct sas_rphy *rphy)
 172{
 173        struct request *req;
 174        int ret;
 175        int (*handler)(struct Scsi_Host *, struct sas_rphy *, struct request *);
 176
 177        while ((req = blk_fetch_request(q)) != NULL) {
 178                spin_unlock_irq(q->queue_lock);
 179
 180                handler = to_sas_internal(shost->transportt)->f->smp_handler;
 181                ret = handler(shost, rphy, req);
 182                req->errors = ret;
 183
 184                blk_end_request_all(req, ret);
 185
 186                spin_lock_irq(q->queue_lock);
 187        }
 188}
 189
 190static void sas_host_smp_request(struct request_queue *q)
 191{
 192        sas_smp_request(q, (struct Scsi_Host *)q->queuedata, NULL);
 193}
 194
 195static void sas_non_host_smp_request(struct request_queue *q)
 196{
 197        struct sas_rphy *rphy = q->queuedata;
 198        sas_smp_request(q, rphy_to_shost(rphy), rphy);
 199}
 200
 201static void sas_host_release(struct device *dev)
 202{
 203        struct Scsi_Host *shost = dev_to_shost(dev);
 204        struct sas_host_attrs *sas_host = to_sas_host_attrs(shost);
 205        struct request_queue *q = sas_host->q;
 206
 207        if (q)
 208                blk_cleanup_queue(q);
 209}
 210
 211static int sas_bsg_initialize(struct Scsi_Host *shost, struct sas_rphy *rphy)
 212{
 213        struct request_queue *q;
 214        int error;
 215        struct device *dev;
 216        char namebuf[20];
 217        const char *name;
 218        void (*release)(struct device *);
 219
 220        if (!to_sas_internal(shost->transportt)->f->smp_handler) {
 221                printk("%s can't handle SMP requests\n", shost->hostt->name);
 222                return 0;
 223        }
 224
 225        if (rphy) {
 226                q = blk_init_queue(sas_non_host_smp_request, NULL);
 227                dev = &rphy->dev;
 228                name = dev_name(dev);
 229                release = NULL;
 230        } else {
 231                q = blk_init_queue(sas_host_smp_request, NULL);
 232                dev = &shost->shost_gendev;
 233                snprintf(namebuf, sizeof(namebuf),
 234                         "sas_host%d", shost->host_no);
 235                name = namebuf;
 236                release = sas_host_release;
 237        }
 238        if (!q)
 239                return -ENOMEM;
 240
 241        error = bsg_register_queue(q, dev, name, release);
 242        if (error) {
 243                blk_cleanup_queue(q);
 244                return -ENOMEM;
 245        }
 246
 247        if (rphy)
 248                rphy->q = q;
 249        else
 250                to_sas_host_attrs(shost)->q = q;
 251
 252        if (rphy)
 253                q->queuedata = rphy;
 254        else
 255                q->queuedata = shost;
 256
 257        queue_flag_set_unlocked(QUEUE_FLAG_BIDI, q);
 258        return 0;
 259}
 260
 261static void sas_bsg_remove(struct Scsi_Host *shost, struct sas_rphy *rphy)
 262{
 263        struct request_queue *q;
 264
 265        if (rphy)
 266                q = rphy->q;
 267        else
 268                q = to_sas_host_attrs(shost)->q;
 269
 270        if (!q)
 271                return;
 272
 273        bsg_unregister_queue(q);
 274}
 275
 276/*
 277 * SAS host attributes
 278 */
 279
 280static int sas_host_setup(struct transport_container *tc, struct device *dev,
 281                          struct device *cdev)
 282{
 283        struct Scsi_Host *shost = dev_to_shost(dev);
 284        struct sas_host_attrs *sas_host = to_sas_host_attrs(shost);
 285
 286        INIT_LIST_HEAD(&sas_host->rphy_list);
 287        mutex_init(&sas_host->lock);
 288        sas_host->next_target_id = 0;
 289        sas_host->next_expander_id = 0;
 290        sas_host->next_port_id = 0;
 291
 292        if (sas_bsg_initialize(shost, NULL))
 293                dev_printk(KERN_ERR, dev, "fail to a bsg device %d\n",
 294                           shost->host_no);
 295
 296        return 0;
 297}
 298
 299static int sas_host_remove(struct transport_container *tc, struct device *dev,
 300                           struct device *cdev)
 301{
 302        struct Scsi_Host *shost = dev_to_shost(dev);
 303
 304        sas_bsg_remove(shost, NULL);
 305
 306        return 0;
 307}
 308
 309static DECLARE_TRANSPORT_CLASS(sas_host_class,
 310                "sas_host", sas_host_setup, sas_host_remove, NULL);
 311
 312static int sas_host_match(struct attribute_container *cont,
 313                            struct device *dev)
 314{
 315        struct Scsi_Host *shost;
 316        struct sas_internal *i;
 317
 318        if (!scsi_is_host_device(dev))
 319                return 0;
 320        shost = dev_to_shost(dev);
 321
 322        if (!shost->transportt)
 323                return 0;
 324        if (shost->transportt->host_attrs.ac.class !=
 325                        &sas_host_class.class)
 326                return 0;
 327
 328        i = to_sas_internal(shost->transportt);
 329        return &i->t.host_attrs.ac == cont;
 330}
 331
 332static int do_sas_phy_delete(struct device *dev, void *data)
 333{
 334        int pass = (int)(unsigned long)data;
 335
 336        if (pass == 0 && scsi_is_sas_port(dev))
 337                sas_port_delete(dev_to_sas_port(dev));
 338        else if (pass == 1 && scsi_is_sas_phy(dev))
 339                sas_phy_delete(dev_to_phy(dev));
 340        return 0;
 341}
 342
 343/**
 344 * sas_remove_children  -  tear down a devices SAS data structures
 345 * @dev:        device belonging to the sas object
 346 *
 347 * Removes all SAS PHYs and remote PHYs for a given object
 348 */
 349void sas_remove_children(struct device *dev)
 350{
 351        device_for_each_child(dev, (void *)0, do_sas_phy_delete);
 352        device_for_each_child(dev, (void *)1, do_sas_phy_delete);
 353}
 354EXPORT_SYMBOL(sas_remove_children);
 355
 356/**
 357 * sas_remove_host  -  tear down a Scsi_Host's SAS data structures
 358 * @shost:      Scsi Host that is torn down
 359 *
 360 * Removes all SAS PHYs and remote PHYs for a given Scsi_Host.
 361 * Must be called just before scsi_remove_host for SAS HBAs.
 362 */
 363void sas_remove_host(struct Scsi_Host *shost)
 364{
 365        sas_remove_children(&shost->shost_gendev);
 366}
 367EXPORT_SYMBOL(sas_remove_host);
 368
 369/**
 370 * sas_tlr_supported - checking TLR bit in vpd 0x90
 371 * @sdev: scsi device struct
 372 *
 373 * Check Transport Layer Retries are supported or not.
 374 * If vpd page 0x90 is present, TRL is supported.
 375 *
 376 */
 377unsigned int
 378sas_tlr_supported(struct scsi_device *sdev)
 379{
 380        const int vpd_len = 32;
 381        struct sas_end_device *rdev = sas_sdev_to_rdev(sdev);
 382        char *buffer = kzalloc(vpd_len, GFP_KERNEL);
 383        int ret = 0;
 384
 385        if (scsi_get_vpd_page(sdev, 0x90, buffer, vpd_len))
 386                goto out;
 387
 388        /*
 389         * Magic numbers: the VPD Protocol page (0x90)
 390         * has a 4 byte header and then one entry per device port
 391         * the TLR bit is at offset 8 on each port entry
 392         * if we take the first port, that's at total offset 12
 393         */
 394        ret = buffer[12] & 0x01;
 395
 396 out:
 397        kfree(buffer);
 398        rdev->tlr_supported = ret;
 399        return ret;
 400
 401}
 402EXPORT_SYMBOL_GPL(sas_tlr_supported);
 403
 404/**
 405 * sas_disable_tlr - setting TLR flags
 406 * @sdev: scsi device struct
 407 *
 408 * Seting tlr_enabled flag to 0.
 409 *
 410 */
 411void
 412sas_disable_tlr(struct scsi_device *sdev)
 413{
 414        struct sas_end_device *rdev = sas_sdev_to_rdev(sdev);
 415
 416        rdev->tlr_enabled = 0;
 417}
 418EXPORT_SYMBOL_GPL(sas_disable_tlr);
 419
 420/**
 421 * sas_enable_tlr - setting TLR flags
 422 * @sdev: scsi device struct
 423 *
 424 * Seting tlr_enabled flag 1.
 425 *
 426 */
 427void sas_enable_tlr(struct scsi_device *sdev)
 428{
 429        unsigned int tlr_supported = 0;
 430        tlr_supported  = sas_tlr_supported(sdev);
 431
 432        if (tlr_supported) {
 433                struct sas_end_device *rdev = sas_sdev_to_rdev(sdev);
 434
 435                rdev->tlr_enabled = 1;
 436        }
 437
 438        return;
 439}
 440EXPORT_SYMBOL_GPL(sas_enable_tlr);
 441
 442unsigned int sas_is_tlr_enabled(struct scsi_device *sdev)
 443{
 444        struct sas_end_device *rdev = sas_sdev_to_rdev(sdev);
 445        return rdev->tlr_enabled;
 446}
 447EXPORT_SYMBOL_GPL(sas_is_tlr_enabled);
 448
 449/*
 450 * SAS Phy attributes
 451 */
 452
 453#define sas_phy_show_simple(field, name, format_string, cast)           \
 454static ssize_t                                                          \
 455show_sas_phy_##name(struct device *dev,                                 \
 456                    struct device_attribute *attr, char *buf)           \
 457{                                                                       \
 458        struct sas_phy *phy = transport_class_to_phy(dev);              \
 459                                                                        \
 460        return snprintf(buf, 20, format_string, cast phy->field);       \
 461}
 462
 463#define sas_phy_simple_attr(field, name, format_string, type)           \
 464        sas_phy_show_simple(field, name, format_string, (type)) \
 465static DEVICE_ATTR(name, S_IRUGO, show_sas_phy_##name, NULL)
 466
 467#define sas_phy_show_protocol(field, name)                              \
 468static ssize_t                                                          \
 469show_sas_phy_##name(struct device *dev,                                 \
 470                    struct device_attribute *attr, char *buf)           \
 471{                                                                       \
 472        struct sas_phy *phy = transport_class_to_phy(dev);              \
 473                                                                        \
 474        if (!phy->field)                                                \
 475                return snprintf(buf, 20, "none\n");                     \
 476        return get_sas_protocol_names(phy->field, buf);         \
 477}
 478
 479#define sas_phy_protocol_attr(field, name)                              \
 480        sas_phy_show_protocol(field, name)                              \
 481static DEVICE_ATTR(name, S_IRUGO, show_sas_phy_##name, NULL)
 482
 483#define sas_phy_show_linkspeed(field)                                   \
 484static ssize_t                                                          \
 485show_sas_phy_##field(struct device *dev,                                \
 486                     struct device_attribute *attr, char *buf)          \
 487{                                                                       \
 488        struct sas_phy *phy = transport_class_to_phy(dev);              \
 489                                                                        \
 490        return get_sas_linkspeed_names(phy->field, buf);                \
 491}
 492
 493/* Fudge to tell if we're minimum or maximum */
 494#define sas_phy_store_linkspeed(field)                                  \
 495static ssize_t                                                          \
 496store_sas_phy_##field(struct device *dev,                               \
 497                      struct device_attribute *attr,                    \
 498                      const char *buf,  size_t count)                   \
 499{                                                                       \
 500        struct sas_phy *phy = transport_class_to_phy(dev);              \
 501        struct Scsi_Host *shost = dev_to_shost(phy->dev.parent);        \
 502        struct sas_internal *i = to_sas_internal(shost->transportt);    \
 503        u32 value;                                                      \
 504        struct sas_phy_linkrates rates = {0};                           \
 505        int error;                                                      \
 506                                                                        \
 507        error = set_sas_linkspeed_names(&value, buf);                   \
 508        if (error)                                                      \
 509                return error;                                           \
 510        rates.field = value;                                            \
 511        error = i->f->set_phy_speed(phy, &rates);                       \
 512                                                                        \
 513        return error ? error : count;                                   \
 514}
 515
 516#define sas_phy_linkspeed_rw_attr(field)                                \
 517        sas_phy_show_linkspeed(field)                                   \
 518        sas_phy_store_linkspeed(field)                                  \
 519static DEVICE_ATTR(field, S_IRUGO, show_sas_phy_##field,                \
 520        store_sas_phy_##field)
 521
 522#define sas_phy_linkspeed_attr(field)                                   \
 523        sas_phy_show_linkspeed(field)                                   \
 524static DEVICE_ATTR(field, S_IRUGO, show_sas_phy_##field, NULL)
 525
 526
 527#define sas_phy_show_linkerror(field)                                   \
 528static ssize_t                                                          \
 529show_sas_phy_##field(struct device *dev,                                \
 530                     struct device_attribute *attr, char *buf)          \
 531{                                                                       \
 532        struct sas_phy *phy = transport_class_to_phy(dev);              \
 533        struct Scsi_Host *shost = dev_to_shost(phy->dev.parent);        \
 534        struct sas_internal *i = to_sas_internal(shost->transportt);    \
 535        int error;                                                      \
 536                                                                        \
 537        error = i->f->get_linkerrors ? i->f->get_linkerrors(phy) : 0;   \
 538        if (error)                                                      \
 539                return error;                                           \
 540        return snprintf(buf, 20, "%u\n", phy->field);                   \
 541}
 542
 543#define sas_phy_linkerror_attr(field)                                   \
 544        sas_phy_show_linkerror(field)                                   \
 545static DEVICE_ATTR(field, S_IRUGO, show_sas_phy_##field, NULL)
 546
 547
 548static ssize_t
 549show_sas_device_type(struct device *dev,
 550                     struct device_attribute *attr, char *buf)
 551{
 552        struct sas_phy *phy = transport_class_to_phy(dev);
 553
 554        if (!phy->identify.device_type)
 555                return snprintf(buf, 20, "none\n");
 556        return get_sas_device_type_names(phy->identify.device_type, buf);
 557}
 558static DEVICE_ATTR(device_type, S_IRUGO, show_sas_device_type, NULL);
 559
 560static ssize_t do_sas_phy_enable(struct device *dev,
 561                size_t count, int enable)
 562{
 563        struct sas_phy *phy = transport_class_to_phy(dev);
 564        struct Scsi_Host *shost = dev_to_shost(phy->dev.parent);
 565        struct sas_internal *i = to_sas_internal(shost->transportt);
 566        int error;
 567
 568        error = i->f->phy_enable(phy, enable);
 569        if (error)
 570                return error;
 571        phy->enabled = enable;
 572        return count;
 573};
 574
 575static ssize_t
 576store_sas_phy_enable(struct device *dev, struct device_attribute *attr,
 577                     const char *buf, size_t count)
 578{
 579        if (count < 1)
 580                return -EINVAL;
 581
 582        switch (buf[0]) {
 583        case '0':
 584                do_sas_phy_enable(dev, count, 0);
 585                break;
 586        case '1':
 587                do_sas_phy_enable(dev, count, 1);
 588                break;
 589        default:
 590                return -EINVAL;
 591        }
 592
 593        return count;
 594}
 595
 596static ssize_t
 597show_sas_phy_enable(struct device *dev, struct device_attribute *attr,
 598                    char *buf)
 599{
 600        struct sas_phy *phy = transport_class_to_phy(dev);
 601
 602        return snprintf(buf, 20, "%d", phy->enabled);
 603}
 604
 605static DEVICE_ATTR(enable, S_IRUGO | S_IWUSR, show_sas_phy_enable,
 606                         store_sas_phy_enable);
 607
 608static ssize_t
 609do_sas_phy_reset(struct device *dev, size_t count, int hard_reset)
 610{
 611        struct sas_phy *phy = transport_class_to_phy(dev);
 612        struct Scsi_Host *shost = dev_to_shost(phy->dev.parent);
 613        struct sas_internal *i = to_sas_internal(shost->transportt);
 614        int error;
 615
 616        error = i->f->phy_reset(phy, hard_reset);
 617        if (error)
 618                return error;
 619        phy->enabled = 1;
 620        return count;
 621};
 622
 623static ssize_t
 624store_sas_link_reset(struct device *dev, struct device_attribute *attr,
 625                     const char *buf, size_t count)
 626{
 627        return do_sas_phy_reset(dev, count, 0);
 628}
 629static DEVICE_ATTR(link_reset, S_IWUSR, NULL, store_sas_link_reset);
 630
 631static ssize_t
 632store_sas_hard_reset(struct device *dev, struct device_attribute *attr,
 633                     const char *buf, size_t count)
 634{
 635        return do_sas_phy_reset(dev, count, 1);
 636}
 637static DEVICE_ATTR(hard_reset, S_IWUSR, NULL, store_sas_hard_reset);
 638
 639sas_phy_protocol_attr(identify.initiator_port_protocols,
 640                initiator_port_protocols);
 641sas_phy_protocol_attr(identify.target_port_protocols,
 642                target_port_protocols);
 643sas_phy_simple_attr(identify.sas_address, sas_address, "0x%016llx\n",
 644                unsigned long long);
 645sas_phy_simple_attr(identify.phy_identifier, phy_identifier, "%d\n", u8);
 646//sas_phy_simple_attr(port_identifier, port_identifier, "%d\n", int);
 647sas_phy_linkspeed_attr(negotiated_linkrate);
 648sas_phy_linkspeed_attr(minimum_linkrate_hw);
 649sas_phy_linkspeed_rw_attr(minimum_linkrate);
 650sas_phy_linkspeed_attr(maximum_linkrate_hw);
 651sas_phy_linkspeed_rw_attr(maximum_linkrate);
 652sas_phy_linkerror_attr(invalid_dword_count);
 653sas_phy_linkerror_attr(running_disparity_error_count);
 654sas_phy_linkerror_attr(loss_of_dword_sync_count);
 655sas_phy_linkerror_attr(phy_reset_problem_count);
 656
 657static int sas_phy_setup(struct transport_container *tc, struct device *dev,
 658                         struct device *cdev)
 659{
 660        struct sas_phy *phy = dev_to_phy(dev);
 661        struct Scsi_Host *shost = dev_to_shost(phy->dev.parent);
 662        struct sas_internal *i = to_sas_internal(shost->transportt);
 663
 664        if (i->f->phy_setup)
 665                i->f->phy_setup(phy);
 666
 667        return 0;
 668}
 669
 670static DECLARE_TRANSPORT_CLASS(sas_phy_class,
 671                "sas_phy", sas_phy_setup, NULL, NULL);
 672
 673static int sas_phy_match(struct attribute_container *cont, struct device *dev)
 674{
 675        struct Scsi_Host *shost;
 676        struct sas_internal *i;
 677
 678        if (!scsi_is_sas_phy(dev))
 679                return 0;
 680        shost = dev_to_shost(dev->parent);
 681
 682        if (!shost->transportt)
 683                return 0;
 684        if (shost->transportt->host_attrs.ac.class !=
 685                        &sas_host_class.class)
 686                return 0;
 687
 688        i = to_sas_internal(shost->transportt);
 689        return &i->phy_attr_cont.ac == cont;
 690}
 691
 692static void sas_phy_release(struct device *dev)
 693{
 694        struct sas_phy *phy = dev_to_phy(dev);
 695        struct Scsi_Host *shost = dev_to_shost(phy->dev.parent);
 696        struct sas_internal *i = to_sas_internal(shost->transportt);
 697
 698        if (i->f->phy_release)
 699                i->f->phy_release(phy);
 700        put_device(dev->parent);
 701        kfree(phy);
 702}
 703
 704/**
 705 * sas_phy_alloc  -  allocates and initialize a SAS PHY structure
 706 * @parent:     Parent device
 707 * @number:     Phy index
 708 *
 709 * Allocates an SAS PHY structure.  It will be added in the device tree
 710 * below the device specified by @parent, which has to be either a Scsi_Host
 711 * or sas_rphy.
 712 *
 713 * Returns:
 714 *      SAS PHY allocated or %NULL if the allocation failed.
 715 */
 716struct sas_phy *sas_phy_alloc(struct device *parent, int number)
 717{
 718        struct Scsi_Host *shost = dev_to_shost(parent);
 719        struct sas_phy *phy;
 720
 721        phy = kzalloc(sizeof(*phy), GFP_KERNEL);
 722        if (!phy)
 723                return NULL;
 724
 725        phy->number = number;
 726        phy->enabled = 1;
 727
 728        device_initialize(&phy->dev);
 729        phy->dev.parent = get_device(parent);
 730        phy->dev.release = sas_phy_release;
 731        INIT_LIST_HEAD(&phy->port_siblings);
 732        if (scsi_is_sas_expander_device(parent)) {
 733                struct sas_rphy *rphy = dev_to_rphy(parent);
 734                dev_set_name(&phy->dev, "phy-%d:%d:%d", shost->host_no,
 735                        rphy->scsi_target_id, number);
 736        } else
 737                dev_set_name(&phy->dev, "phy-%d:%d", shost->host_no, number);
 738
 739        transport_setup_device(&phy->dev);
 740
 741        return phy;
 742}
 743EXPORT_SYMBOL(sas_phy_alloc);
 744
 745/**
 746 * sas_phy_add  -  add a SAS PHY to the device hierarchy
 747 * @phy:        The PHY to be added
 748 *
 749 * Publishes a SAS PHY to the rest of the system.
 750 */
 751int sas_phy_add(struct sas_phy *phy)
 752{
 753        int error;
 754
 755        error = device_add(&phy->dev);
 756        if (!error) {
 757                transport_add_device(&phy->dev);
 758                transport_configure_device(&phy->dev);
 759        }
 760
 761        return error;
 762}
 763EXPORT_SYMBOL(sas_phy_add);
 764
 765/**
 766 * sas_phy_free  -  free a SAS PHY
 767 * @phy:        SAS PHY to free
 768 *
 769 * Frees the specified SAS PHY.
 770 *
 771 * Note:
 772 *   This function must only be called on a PHY that has not
 773 *   successfully been added using sas_phy_add().
 774 */
 775void sas_phy_free(struct sas_phy *phy)
 776{
 777        transport_destroy_device(&phy->dev);
 778        put_device(&phy->dev);
 779}
 780EXPORT_SYMBOL(sas_phy_free);
 781
 782/**
 783 * sas_phy_delete  -  remove SAS PHY
 784 * @phy:        SAS PHY to remove
 785 *
 786 * Removes the specified SAS PHY.  If the SAS PHY has an
 787 * associated remote PHY it is removed before.
 788 */
 789void
 790sas_phy_delete(struct sas_phy *phy)
 791{
 7ode=phy" class="sref">phy->
parentran32774">as_host_cl" namas.cnameef="+"> 775void  775vclass=22ns"line" npss="sphy clapar="L74auot;& whn c/scsi_dss="line" name="L787"> 787 * aas_phy" c7ass="sref">sas_phy *7a hre79f="+code=error" class="sref"BUG_ON2" id="L792" clBUG_ONtrans="sref">device_alist_emptphy->dev);
"drivers/scsi/scsi_transport_sas.c#L731" id="L779}
dev_to_shos7(79ref="+code=f" class="sref">f->phy)="commf="drivers/scsi/scsi_transport_s="commf="drivscsi_transport_sas.cenabled /sc54" id="L754" class="l/scscsi_transport_sas.c 698        if 7number)
i->8a hre8="+code=f" class="sref">f->phy_release(put_device(&dev);

(phy);
 702}

 765 claclass="liL708"> 7o.checkL765" class="line" name="L765"> 765 765 * @number:     8hy in8ex
->ansport_sas.c#L712" id="L712" class="line" name="L718csi/scsi_8ransport_sas.c#L709" id=8L709"8class="line" name="L709"> 709<="line" name="L787"> 787 * 8csi_trans8ort_sas.c#L710" id="L7108 clas81
 673static int sas_phy_match(struct 
sas_phy_add(struct  * or 8as_rp81href="+code=pe="L759"> 759     se(phyparent);
 730         712 *8/span8
put_device(&dev);
f->sas_phy8alloc(struct  765parent, int <8 href81rs/scsi/scsi_transport_sas.c#i5" idt;&  765 * 787 * 8si_transp8rt_sas.c#L719" id="L719"8class8"line"#def9" /scsi/scsi_transport_ommenhow.c#mpl0" id="L730" class="lommenhow.c#mpl0scsi_transport_sas.cfiel"L762" class="lifiel"scsiss="sref">phy-si/scsi_transport_36" id="ss="sref">phyformamenL737" 762" class="liformamenL737"id="ss="sref">phyca"+code=dev_set_naca"+e=phy""""""""""\name="L787"> 787 * 8ssi_trans8hy" class="sref">sas_phy8/a> *8a hrefclass="line" name="L66s"lin_+code=dev_set_nam"lin_+ class="sref">transppppppppppppppppppppppppppppppppppppppppppp\name="L787"> 787 * 8s has to 8y =  691
 787 * 8s1GFP_KERNEL);

 787 * 8s> 712)
transpppppppppppppppppppppppppppppppppppppppppppppppppppppppp\name="L787"> 787 * 8svers/scs83                ret8rn  789f">parent);
-&gd="L_sport_s=omm" id="L730" claaphy-&gd="L_sport_s=ommass="sref">phy_release( 787 * 8sed or "L725"> 725        <8 href8"+code=phy" clf">transpppppppppppppppppppppppppppppppppppppppppppppppppppppppp\name="L787"> 787 * 8s>sas_phy8rt_sas.c#L726" id="L726"8class82href="+code=phy" clas.c#L789" id="L7np737t href="+code=phy7np737t ass="sref">phy_releabu href="+code=phybu e=ph, 20ss="sref">phyformamenL737" 762" class="liformamenL737"id="ss="sref">phyca"+code=dev_set_naca"+e=phass="sref">f-omm" id="L730" clalomm> 78="sref">f-> 787 * 8st" class8sref">phy-> 666
 667        return 0;
dev.(phy-si/scsi_transport_36" id="ss="sref">phyformamenL737" 762" class="liformamenL737"id="ss="sref">phytypvers/scsi/scsi_trypve=phy""""""""""\name="L787"> 787 * 8ref">phy<8a>->dev.phy-si/scsi_transport_36" id="ss="sref">phyformamenL737" 762" class="liformamenL737"id="ss_transport_sas.ctypvers/scsi/scsi_trypve=phy)""""""""\name="L787"> 787 * 8r has to 8ode=INIT_LIST_HEAD" clas8="sre83690" class="transport_sas.cDEVICE_ATTRers/scsi/scsi_tDEVICE_ATTRscsi_transport_sas.c-si/scsi_transport_36" id="ss="sref">phyS_IRUGOscsi_transport_S_IRUGOid="ss="sref">phy how.cs="lommecode=dev_set_namhow.cs="lommeine"##+codc#L671" id="L671" class="line" name="L671"> 6name="L787"> 787 * 8r1 732        if 8phy);
 *(phy-umrt_si/scsi_transportnumrt_siscsiss=.c#L737" id="L737" class=""L737"\n> 737      37ti_transport_sas.c#L778" id="L778" class="line" 8>dev,8&qu8t;phy8%dtransport_sas.c#L778" id="L778" class="line" 8>ed or      -&gd="Lr(>sas_phy8_id, numberDECLARE_TRass> 737                 c#L671" id="L671" class="line" name="L671"> 671                &qu8#37;d:&d", shost->host_no, <8 href8"+codecode=NULL" class="sref">NULL 672
 673static int sas_phy_match(struct sas_phy_add(struct phy8><8 href="+code=dev" class="sref">dev)
 674{
 740
phyScsi_Host *shost;
 741        re8urn <84ref="+code=phy" class="sref">phy);
i;
;
phy_release(,8MBOL(sas_hos8L744" id=8L744" class="line" name=8L744"84+code=phy" class="sref">phy 679                return 0;
 680         726        if="+code=dev_set_name" class="sref">dev_set_name  681
 8 @phy:        The PHY to8be ad8478"> 678        if (!scsi_8an>
if="+code=dev_set_name" class="sref">dev_set_name  684        if (shost-> 678        iiiiiiiii">host_attrs.ac.class !=
 781int  678        if (!scsi_8ae" name=8y" class="sref">sas_phy<8a> *<85ref="+code=phy" class="sref">phy);
 752{
phyparent);
 696        struct sas_internal *i 753        in8 shost-> port_sas.c#L689" id="L689" class="line" name="L689"> 689        return &error =  666
dev);
 726        shost->
sas_phy_match(struct phy->sas_phy_add(struct dev 789void
 789f">parent);
<9   89" omm" id="L730" cla9   89" ommass="sref">phy_release(sas_phy_add(struct  780"> 760
sas_phy_add(struct  761        return8phydevice_alist_emptphy->omm" id="L730" clalomm> 78="sref">f->sas_phy_add(struct  763EXPO8T_SYMBOL(phy_release(phy);
phy(deomm" id="L730" clalomm> 78_transport_sas.c#L700" id="L700" class="line" n8Lass="sre8*
 666
shost-> * @phy:        SAS PH8 to f86+codecode=NUn>
 78stransport_sas.c#L778" id="L778" class="line" 8s="commen8"> *
 789void
 * Frees the specified8SAS P87" class="sref">sas_phy_delete(struct  7708/a>INIT_LIST_HEAL" class="sref">NUreef">class !=resme="L689"> 689        return &phy);
phyclass !=resme="rs/scsi/scsi_transpysfsscreateelinkr(phy->omm" id="L730" clalomm> 78="sref">f->( 791{
phy);
EXPO8 been added using sas_ph8_add(87#37;d:%d:%d"phy<9phy->dev);
 775<8a>void phyclass !=resme="port_sas.c#L790" id="L790" class="line" name="8sass="sre8y" class="sref">sas_phy<8a> *<87class="sref">number 759        f">class !=   me="L689"> 689        return &transport_destroyreef">class !=resme="rs/scsi/scsi_transpysfsscreateelinkr(phy->
 791{omm" id="L730" clalomm> 78="sref">f->(phyclass !=resme="port_sas.c#L790" id="L790" class="line" name="8="+code=p8y" class="sref">phy-8gt; 759        f">class !=   me="L689"> 689        return & 689        return & 7708SYMBOL(class !=   me=":689"> 689        return &phy(dine"_ERRers/scsi/scsi_tine"_ERRcode==.c#L737" id="L737" class=""L737s: Cannot createuot;& links,    ="L737"\n> 737     689"> 689        return &rphy class="sref">d__rt_s_ecode=dev_set_na__rt_s_es="linsss="sref">phyclass !=resme="pL689"> 689        return &EXPO8HY
 666
f->
 78stransport_sas.c#L778" id="L778" class="line" 8/span>
transppppppppppppppppppport_sas.c#L789" id="L789" class="line" name="L789"> 789void
sas_phy_delete(struct  7889"+code=f" class="sref">fpysfss="commflinkr(phy->omm" id="L730" clalomm> 78="sref">f->(phy<9phy->dev);
 7908/a>dev.(phy->
sas_phy<8a> *<89i/scsi_transport_sas.c#L761" id="L761" class="line"8->
<8 a6" id="L79_793lasurn 0;
parentran327748>as_host_8l" namas.cnameef="+"> 778v89702" class="line" name="L702"> port_ommeL742" - L742"ateuand transport_L765" iot;& port_surtansport_sas.c#L712" id="L712" class="line" name="L718as_phy" c8ass="sref">sas_phy *8a hre89scsi_transport_sas.c#L784" id="L784" class="line" name="L784"> 784dev_to_shos8(89705" class="line" name="L705"> /scsi/class=/scsi/ se" clasL784" class="line" name="L784"> 784 784
shost-> 767 698        if 8
 766 * sas_phy_free  - 9="+code=i9 class="sref">i->9a hre90lass="line" name="L709"> 709 766 * sas_phy_free  - 9=1+code=i9 a>(
 779" id=9L702" class="line" name="L70cs="line" name="L787"> 787 * 9L703" id=9L703" class="line" name=9L703"9 703( 74sport_sas.c#L789" id="L>static int );
NU7sas_phy_free(struct ev" class="sref">dev)
 679                return 0;
);
->ev" class="sref">dev 789void
 78transport_sas.c#L700" id="L700" class="line" n9v9rs/scsi9s98"> 698        if 9hy in90 name="L667"> 667        return 0;
f-omm" id="L730" clalomm> 789f">parent);
( 74sprt_of(void
 78)inass="sref">phydev=omm" id="L730" clalomm> 78)ransport_sas.c#L700" id="L700" class="line" n9crs/scsi/9e either a Scsi_Host
 678        if (! class="line" name="L671"> transport_sas.c#L700" id="L700" class="line" n9c3s/scsi/9n class="comment"> * or 9as_rp91a6" id="L79_793lasurn 0;
parentran327749"> 712 *9/span914code=phy" class="sref">phy 78="sref">f->class !=l="sr
 789f">parent);
<7phyphy->omm" id="L730" clalomm> 78="sref">f->((struct  726        parent, int <9 href91ass="sref">transport_destroy_omm" id="L730" clalomm> 78="sref">f->(parent);
n_omm" id="L730" clalomm> 78="sref">f->(parent);
dev);
sas_phy9/a> *92="sref">dev.phy->omm" id="L730" clalomm> 78="sref">f-> = dev.phy->omm" id="L730" clalomm> 78="sref">f->GFP_KERNEL);
parentran327749s> 712)
;
;
);
phy->                ret9rn dev 789void
 789L679" id="L679" class="lr class="line" namelass="lr cl         return 0;
);
 725        <9 href9"+code=phy" clf">trans79" id="L679" classsegt-si/scsi_transport_9phy->omm" id="L730" clalomm> 78="sref">f->( 737                 696        struct . 6a>. 78stransport_sas.c#L778" id="L778" class="line" 9s>sas_phy9rt_sas.c#L726" id="L726"9class92class="sref">numbervoid
 78     struct phy 78="sref">f->class !=l="sr
 78_transport_sas.c#L700" id="L700" class="line" n9st" class9sref">phy->tr}>->ransport_sas.c#L700" id="L700" class="line" n9s class="9    678        i79" id="L679" classsegt-si/scsi_transport_9phy->omm" id="L730" clalomm> 78="sref">f->( 737                 696        struct . 6a>. 78stransport_sas.c#L778" id="L778" class="line" 9 class="s9ef">dev.phy 78="sref">f->class !=l="sr
 78_transport_sas.c#L700" id="L700" class="line" n9ref">phy<9a>-> 780dev.phy->omm" id="L730" clalomm> 78="sref">f->( 732        if 9phy);
 *=omm" id="L730" clalomm> 78transport_sas.c#L700" id="L700" class="line" n9>dev,9&qu9t;phy93scsi_e="L666"> 666
s="sref">dev);
( 74_transport_sas.c#L700" id="L700" class="line" n9r>sas_phy9_id,  726         port_ommeL742"_num - L742"ateuand transport_L765" iot;& port_surtansport_sas.c#L712" id="L712" class="line" name="L719st_no" cl9ss="sref">host_no, <9 href93x
 709 784phy9><94.
 784 740

 765 741        re9urn <94781
 65" class="line" name="L765"> 765 765
 65" class="line" name="L765"> 765ei45"rL765/scsi_triorL76se=port_siblings" cRemoves the specified SAS PHY.  If the SAS PHY has an9href="dri9ers/scsi/scsi_transport_9as.c#94csi/scsi_transport_sas.c#L706L765" class="line" name="L765"> 765 9 @phy:        The PHY to9be ad94x
 787 * 9an>
( 74sport_sas.c#L789" id="L>static int );
sas_phy_delete(struct  791int NUisibxa href="driversisibx> 78transport_sas.c#L700" id="L700" class="line" n9ae" name=9y" class="sref">sas_phy<9a> *<953code=phy" clev" class="sref">dev)
 679                return 0;
);
 752{
 789void
   89"h"drivers/scsi/scsi_trans>   89"h"drivers/scsi_transport_sas.c#="L674" class="line" name="L_transport_sas.c#L700" id="L700" class="line" n9adev,9L753"> 753        in9 error =  775vclaev> 7uL74y s="line" name="L787"> 787 * 9aref="dri9">dev);
(phy-&gport="L674" class="line"ort="L6e="L="sref">f->(;
;
);
phy-> 678        iev" class="sref">dev 789void
 789L679" id="L679" class="lr class="line" namelass="lr cl         return 0;
);
phy->devvoid
 789L679" id="L679" cr cls="lort_siblings" c" id="L730" clar cls="lort_siblings" c         return 0;
 78_transport_sas.c#L700" id="L700" class="line" n9pshes a S9nsport_sas.c#L759" id="L959" c960"> 780 790"> 760
 678        iclass="sref">NUisibxa href="driversisibx> 789L679" id="L679" cort" id="L730" claort> 78="sref">f-> 78++transport_sas.c#L700" id="L700" class="line" n9pe" name=9"> 761        return9->ransport_sas.c#L700" id="L700" class="line" n9i" name="9" id="L763" class="line"9name=96y" class="sref">rphyiclass="sref">NUisibxa href="driversisibx> 789L679" id="L679" cport="L674" class="line"ort="L6e="L="sref">f-> 78++transport_sas.c#L700" id="L700" class="line" n9pdev,9T_SYMBOL((phy-&gport="L674" class="line"ort="L6e="L="sref">f->(( 74s    return 0;
);
 78_transport_sas.c#L700" id="L700" class="line" n9Lref="dri9*
 666
s="sref">dev);
( 74_transport_sas.c#L700" id="L700" class="line" n9Lf="+code9"> * @phy:        SAS PH9 to f96 name="L667"> 667        return 0;
 *
 70/*6L765" class="line" name="L765"> 765 * Frees the specified9SAS P97.
 65" class="line" name="L765"> 765 79/a>
 765
 765 65" class="line" name="L765"> 765 787 * 975"> 775<9a>void NULL( 78)ransport_sas.c#L700" id="L700" class="line" n9sass="sre9y" class="sref">sas_phy<9a> *<97class class="sref">phy->trLL" class="sref">NUs/scs" id="L730" clao/scsi/78transport_sas.c#L700" id="L700" class="line" n97="commen9> 778         667        return 0;
phy-9gt; 775 787 * 9s.c#L780"9id="L780" class="line" n9me="L98="sref">dev.device_alist_emptphy->omm" id="L730" clalomm> 78="sref">f->sas_phy_add(struct  7709SYMBOL(sas_phy_add(struct phy(phy->omm" id="L730" clalomm> 78="sref">f->(

 763EXPO9HY
transhy" clas.c#L789" id="Ls/scs" id="L730" clao/scsi/78transport_sas.c#L700" id="L700" class="line" n9href="dri9ers/scsi/scsi_transport_9as.c#98line" name="L726"> 726        transport_destroy phy->omm" id="L730" clalomm> 78="sref">f->(n0" class="configureings" c" id="L730" claSYMBOL" clconfigureings" c" class="sref">phy->omm" id="L730" clalomm> 78="sref">f->( 7899de=dev" class="sref">dev);
 7909/a>scsi_9ode=sas_p9y" class="sref">sas_phy<9a> *<99i/scsi_transport_sas.c#L761" id="L761" class="line"9->
<9 a6" i" class="sref">s="sref">dev);
(
 779v99763"> 763sas_phy *9a hre99scsi_transport_sas.c#L784" /*6L765" class="line" name="L765"> 765dev_to_shos9(99705" class="line" name="L705">port_ommecode  -  code 765" iiverL765" class="line" name="L765"> 765 766 * sas_phy_free  - 9tspan>
shost-> 767 698        if 9
 698        if 10="+>10="/scsi_transport_sas.c#L767" id="L767"/pre>he specified SAS PHY.  If the SAS PHY has an10=1+code=i10=a>sas_phy<10=" >10=n>
 766 * sas_phy_free  - 10=3+code=i10=f="+code=dehref="+cocla10=f=>10=781
 7710=" >10=702" class="line" name="L70cs="line" name="L787"> 787 * 10=5+code=i10=ss="sref">sas_phy *10=ss>10=scsi_n>
 74sport_sas.c#L789" id="L789" omm" id="L730" class="lomm> 789void
 78)ransport_sas.c#L700" id="L700" class="line" n10=6+code=i10=lass="sref">dev_to_shos10=la>10=ee" class="sref">sas_phy_free(struct 10=href="+code=phy" class="srefstruct phy->omm" id="L730" clalomm> 78="sref">f->(->transport_destroy_>phy->omm" id="L730" clalomm> 78="sref">f->( 698        if 10=98>10=9/scsi_transport_sas.c#L761" id="L761" class="line"101"+code=i10ransport_sas.c#L709" id=10ran>10ra6" i" class="sref">s="sref">dev);
 74_transport_sas.c#L700" id="L700" class="line" n1011+code=i10ort_sas.c#L710" id="L71010ort>10r0"> 780 765 * or 10n c>10r781
 765 *1010ri_transport_sas.c#L783" id="L7L7 765 78410r705" class="line" name="L705">R"comms745" crt_sas.c#5" iiverR  If745" 5" iiver ne" an="L784" class="line" name="L784"> 784(struct 10rcsi_transport_sas.c#L766" id="_saociat.c#t_si, unlinkue" m7fLomue" npt;& e" wellRemoves the specified SAS PHY.  If the SAS PHY has an1018+code=i10"sref">parent, int <10"sr>10ri/scsi_transport_sas.c#L767" ="line" name="L787"> 787 * 1019+code=i10Host *( 78)ransport_sas.c#L700" id="L700" class="line" n102"+code=i10rt_sas.c#L719" id="L719"10rt_>10rte" class="sref">sas_phy_free(struct sas_phy10hy">10rhref="+code=dev" class="sref">devstatic int sas_phy_match( =nname="L791"> 791{omm" id="L730" clalomm> 78="sref">f->( = dev 789void
GFP_KERNEL);
GF>10rref="+code=phy" class="sref">phy);
10rransportt)
 78="sref">f-> 78_" class="sref">phy->                ret10310r#37;d:%d:%d&qss="sref">dev( 78="sref">f-> 78_transport_sas.c#L700" id="L700" class="line" n1026+code=i10"L725"> 725        <10"L7>10r+code=phy" clf">trans79" id="L679" caomm" id="L730" clalomm> 78="sref">f-> 789L679" id="L679" c class="line" name="L671"> transport_sas.c#L700" id="L700" class="line" n10r7+code=i10rt_sas.c#L726" id="L726"10rt_>10rhref="+code=pi_transport_sas.c#L761" id="L761" class="line"1028+code=i10sref">phy->10rshost" class="sref">shost->10r+code=number" class="sref">nmutexl42"kr(phy->omm" id="L730" clalomm> 78="sref">f->dev.10efcode=number" class="sref">nlist_for_each_#L7ry"lif_e( 74s    return 0;
void
 791{omm" id="L730" clalomm> 78="sref">f->->transsssssssssssssssss"L791"> 791{omm_sibling/scsi/scsi_trans{omm_sibling/> 78_" class="sref">phy->10e28"> 678        iclass="sref">NUscsi/rt_s/scsi_elinkr( 791{omm" id="L730" clalomm> 78inass="sref">phy 732        if 10732>10e38"> 678        iclass="sref">NUlist_/scltran" id="L730" clalist_/scltran" class="sref">phy->
 *&qu1010eref="+code=NULL" class="srefmutexlun42"kr(phy->omm" id="L730" clalomm> 78="sref">f->f->10ehref="+code=p)
 78="sref">f->(phy->, 10e" class="sref">transpport_sas.c#L789" id="L>static int );
parent);
<7 78="sref">f->(host_no, <10ss=>10e name="L667"> 667        return 0;
10="8"> 678        iclass="sref">NUsysfss="commflinkr(phy->omm" id="L730" clalomm> 78="sref">f->(phy<9sas_phy_add(struct phy10hy">10=1code=phy" clf">trans href="drivers/{omm" id="L730" clalomm> 78="sref">f->(scsi_10=2+code=i10"L740"> 740
10=2ref="+code=pi_transport_sas.c#L761" id="L761" class="line"1043+code=i10L741"> 741        re10L74>10=ref="+code=phy" class="sref">phy);
phy);
(10=+code=phy" class="sref">phy10=href="+code=phy" class="sref_>
10=96" i" class="sref">s="sref">dev);
 74_transport_sas.c#L700" id="L700" class="line" n105"+code=i10f="drivers/scsi/scsi_tra10f=">10f=ef="+code=phy" class="sref">phy);
 76510fn>
 765sas_phy<10y" >10f781
 765 752{
 765 753        in10L75>10f703
error = 10f705" class="line" name="L705">>>>>>"L7371p)
<45" class="repressi/sL765" iP PH,>"L7370>->emoves the specified SAS PHY.  If the SAS PHY has an1057+code=i10">dev);
d>10fcsi_transport_sas.c#L766" id=="line" name="L787"> 787 * 1058+code=i10href="+code=transport_ad10hre>10f8/scsLL" class="sref">NUL 765;
(devstatic int sas_phy_match()ransport_sas.c#L700" id="L700" class="line" n1059+code=i10transport_configure_devi10tra>10fsas_phy_delete(struct phy->sas_phy_match(="sref">f->parent);
 760
>10=26" i" class="sref">s="sref">dev);
 761        return10"> >10=ref="+code=phy" class="sref">phy);
10=702" class="line" name="L702">"line" name="L787"> 787 * 1065+code=i10T_SYMBOL( 78410=705" class="line" name="L705"> / 76510=csi_transport_sas.c#L766" id=="line" name="L787"> 787 * 1068+code=i10 PHY
dev 789void
 78)ransport_sas.c#L700" id="L700" class="line" n1069+code=i10"> * @phy:        SAS PH10"> >10=sas_phy_delete(struct  *
 >10">ref="+code=dev" class="sref">dev 789void
 * Frees the specified10"> >10"0"> 780>10"2"sref">dev.(phy->omm" id="L730" clalomm> 78="sref">f->10"38"> 678 )
phy->omm" id="L730" clalomm> 78="sref">f->10"y" class="sref">rphyiclass="sref">NU="drivers/scsi/scsi_trans9L679" id="L679" c class="line" name="L671"> transport_sas.c#L700" id="L700" class="line" n1075+code=i10 been added using sas_ph10 be>10"ref="+code=NU->" class="sref">phy->void transev" class="sref">dev( 789void
parent);
<7 78="sref">f-> transport_sas.c#L700" id="L700" class="line" n1077+code=i10y" class="sref">sas_phy<10y" >10"line" name="L726"> 726        10"" class="sref">transpclass="sref">NU="drivers/scsi/scsi_trans9L679" id="L679" clist_eL7rya href="driverslist_eL7ryscsi_transport_sas.c;
void
phy<{omm_sibling/scsi/scsi_trans{omm_sibling/> 78_transport_sas.c#L700" id="L700" class="line" n1079+code=i10> 778         7>10"78"> 678        i79" id="L679" cgegt;phy->
phy-10y" >10y"ref="+code=pi_transport_sas.c#L761" id="L761" class="line"1081+code=i10id="L780" class="line" n10id=>10y="sref">dev.(phy->omm" id="L730" clalomm> 78="sref">f->(sas_phy_add(struct 10y38"> 678 f (!="drivers/scsi/scsi_transtransport_sas.c#L700" id="L700" class="line" n1084+code=i10/span>

s="sref">dev);
10yref="+code=f" class="sref">f->"line" name="L787"> 787 * 1088+code=i10href="drivers/scsi/scsi_10hre>10yrs/scsi/scsi_transport_sas.c#iport_ommeLddtphy - LddL7no45"rLphy toL76ot;& "L7formL76wideiot;&L765" class="line" name="L765"> 765 76510" 
 65" class="line" name="L765"> 765
 784sas_phy<10y" >10"n>
 78410"781
 765 7710l" >10"i_transport_sas.c#L783" id="L7m771"have at #L731"two.  The curcsi/ sas. make" no#dif7erens=L765" class="line" name="L765"> 765sas_phy *10ass>10"703
 65" class="line" name="L765"> 765dev_to_shos10cla>10"705" class="line" name="L705">connectco="L 76"Lmot" class="isL76ot;&, sL7> 65" class="line" name="L765"> 76510"csi_transport_sas.c#L766" id="_ll6class=s with t_si )
<45"y'rensonnectco="L 7nythingRemoves the specified SAS PHY.  If the SAS PHY has an1098+code=i10>shost-> 787 * 1099+code=i10698"> 698        if 10698>10"9csi_n>
 78,dev" class="sref">dev 789void
 698        if 11="+>110te" class="sref">sas_phy_free(struct >110="sref">dev.(phy->omm" id="L730" clalomm> 78="sref">f->sas_phy<11=" >110>INIT_LIST_HEA
device_alist_emptphy->
phy->11038"> 678        iclass="sref"f="+"> 775vclapt;&  ="line" name="L787"> 787 * 11=4+code=i11=" namas.cnameef="+"> 7711=" >110y" class="sref">rphyiev" class="sref">dev 789void
sas_phy *11=ss>110#37;dtransport_sas.c#L778" id="L778" class="line" 1106+code=i11=lass="sref">dev_to_shos11=la>110+code=phy" clf">trans79" id="L679" clist_for_each_#L7rya href="driverslist_for_each_#L7ryscsi_transport_sas.ctmt" id="L730" clatmtransinname="L791"> 791{omm" id="L730" clalomm> 78="sref">f->phy<{omm_sibling/scsi/scsi_trans{omm_sibling/> 78_transport_sas.c#L778" id="L778" class="line" 1107+code=i11=="+code=to_sas_internal11==">11=href="+code=pppppppppppppppppA
->transpppppppppppppppppbreaktransport_sas.c#L700" id="L700" class="line" n11=9+code=i11=98"> 698        if 11=98>11078"> 678        i7lass="sref"f="+"> 775 787 * 111"+code=i11ransport_sas.c#L709" id=11ran>111 
 787 * 1111+code=i11ort_sas.c#L710" id="L71011ort>1111code=phy" clf">transA
phy->11128"> 678        if">trans79" id="L679" c9( 791{omm" id="L730" clalomm> 78="sref">f->("7ry37"i"L7LddLphy "L737s fails: it'" already=/scriof7ano45"rLpomm\n""line" stransport_sas.c#L778" id="L778" class="line" 11r3+code=i11n class="comment"> * or 11n c>11138"> 678        ia>        if">trans79" id="L679" c9phy->
 *11111y" class="sref">rphyif">trans79" id="L679" cBUGice(111#37;d:%d:%d&qi_transport_sas.c#L761" id="L761" class="line"11r6+code=i117;NULL if the allocation117;N>111+code=phy" cl}U->" class="sref">phy->(struct 111href="+code=ppppppppp href="drivers/scsi/rt_screat.elinkr( 78,d href="drivers/="drivers/scsi/scsi_transstransport_sas.c#L700" id="L700" class="line" n11r8+code=i11"sref">parent, int <11"sr>111" class="sref">transpclass="sref">NUlist_Lddttaila href="driverslist_Lddttail" class="sref">phy->
 791{omm" id="L730" clalomm> 78="sref">f-> * 678        i79" id="L679" c{omm" id="L730" clalomm> 78="sref">f-> 78++transport_sas.c#L700" id="L700" class="line" n112"+code=i11rt_sas.c#L719" id="L719"11rt_>112"ref="+code=pi_transport_sas.c#L761" id="L761" class="line"1121+code=i11hy" class="sref">sas_phy11hy">112="sref">dev.(phy->omm" id="L730" clalomm> 78="sref">f-> = GFP_KERNEL);
GF>112a6" i" class="sref">s="sref">dev);
)
 763 765 725        <11"L7>112705" class="line" name="L705">port_omme/scsi_ephy - ="comm6anphy fLomuaipt;& or6wideiot;&L765" class="line" name="L765"> 765112csi_transport_sas.c#L766" id="L7 765phy->112rs/scsi/scsi_transport_sas.c#iL7hy:phy" cl phy toL="commL765" class="line" name="L765"> 765112x
 765dev.113 
 765->113.
113n>
 787 * 1133+code=i11732"> 732        if 11732>11e38"> n>
 78,dev" class="sref">dev 789void
 *phy->&qu1111eref="+code=NULL" class="srefmutexl42"kr(phy->omm" id="L730" clalomm> 78="sref">f->phy( 791{omm" id="L730" clalomm> 78inass="sref">phy, phy->
, 113ass="sref">transport_destroy_omm" id="L730" clalomm> 78="sref">f-> 78--transport_sas.c#L700" id="L700" class="line" n1139+code=i11ss="sref">host_no, <11ss=>113+code=number" class="sref">nmutexlun42"kr(phy->omm" id="L730" clalomm> 78="sref">f->11="8"> i_transport_sas.c#L761" id="L761" class="line"11=1+code=i11hy" class="sref">phy11hy">11=1code" class="sref">s="sref">dev);
 740
114i/scslass="sref">sas_phy_add(struct  741        re11L74>11438"> n>
 74sport_sas.c#L789" id="L789" omm" id="L730" class="lomm> 789void
 78sransport_sas.c#L700" id="L700" class="line" n1144+code=i11="L743" class="line" nam11="L>1144ref= class="sref">phy->(NUre/scsi/scsi_transre/ranstransport_sas.c#L700" id="L700" class="line" n1146+code=i11L744" class="line" name=11L74>11=+code=phy" clport_sas.c#L789" id="L>static int );
parent);
<7 78="sref">f->(f->);
f->);
114line" name="L726"> 726        114ass="sref">trL
 78="sref">f->( 726         678        if (!115fcode=number" class="sref">n{omm" id="L730" clalomm> 78="sref">f->(115="sref">dev.parent);
(phy->omm" id="L730" clalomm> 78="sref">f->(phy->>);
f->(int  678        if">transf">dev.sas_phy_add(struct sas_phy<11y" >11538"> 678 )
 726         752{
rphyigotoas.c#L789" id="Ls/sscsi/scsi_transs/sscsitransport_sas.c#L700" id="L700" class="line" n1155+code=i11L753"> 753        in11L75>115ref="+code=NUf (!error = 11f705" c.c#L789" id="Ls/sscsi/scsi_transs/sscsi:ransport_sas.c#L700" id="L700" class="line" n1157+code=i11">dev);
d>115href="+code=phy" class="sref_rintkr(""L737s: Cannot creat.iot;&"backlink, s/s="L737d\n""line" stransport_sas.c#L778" id="L778" class="line" 1158+code=i11href="+code=transport_ad11hre>115" class="sref">trans href="drivers/__rt_s__r(phy115 name="L667"> 667        return 0;
phy-> i_transport_sas.c#L761" id="L761" class="line"11=1+code=i11nsport_sas.c#L759" id="L11nsp>1161code" class="sref">s="sref">dev);
 74_transport_sas.c#L700" id="L700" class="line" n1162+code=i110"> 760
>116i/scslass="sref">sas_phy_add(struct  761        return11"> >116781
 76511=702" class="line" name="L70 *65" i"Lmot" PHY atv"ibutesRemoves the specified SAS PHY.  If the SAS PHY has an1165+code=i11T_SYMBOL( 787 * 11=6+code=i11L764" class="line" name=11L76>116ref="+code=f" class="sref">f->11=csi_t#defhreqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(phy 74_ref">trans\+code=f" class="sref">f->11=8/scsevaticqss="sref">dev 678        if">transf">devf-> * @phy:        SAS PH11"> >11696" i" class="sref">show_s89"r cls" id="L730" clashow_s89"r clssi_t## SASsport_sas.c#L789" id="L>static int sas_phy_match(,>devf-> *
 >117"8"> 678        iiiiiiport_sas.c#L789" id="L>stati_atv"ibutec int (,>charphy_match" class=buf" id="L730" clabuf> 74_ref">trans\+code=f" class="sref">f-> * Frees the specified11"> >11"0"> 7{678        if">transf">devf->>1172ref="+code=dev" class="sref">dev 789L679" id="L679" c>(f-> 678        ia>        if">trans/////////////////////////////////////\+code=f" class="sref">f->snprintf" id="L730" clasnprintfscsi_transport_sas.cbuf" id="L730" clabuf> 74, 20inass="sref">phy(phy 74nass="sref">phy 78="sref">f->( 78_t//////\+code=f" class="sref">f->void f->sas_phy<11y" >117csi_t#defhreqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(phy 74_ref">trans\+code=f" class="sref">f->transport_destroys89"r clsshow_simpl/scsi_transport_s89"r clsshow_simpl/scsi_transport_sas.cfiel"r( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy( 74_)f">trans\+code=f" class="sref">f-> evaticqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(f->phy-11y" >118"8"> 678        iclass="sref">NUshow_s89"r cls" id="L730" clashow_s89"r clssi_t## SASinass="sref">phy< class="line" name="L671"> _ name="L726"> 726        1180"> 78011yi/scs#defhreqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" cl)devf->11y38"> evaticqss="sref">dev 678        if">transf">devf->11y4/scs" class="sref">show_s89"r cls" id="L730" clashow_s89"r clssi_t## SASsport_sas.c#L789" id="L>static int sas_phy_match(,>devf->118#37;d:%d:%d&qqqqqqport_sas.c#L789" id="L>stati_atv"ibutec int (,>charphy_match" class=buf" id="L730" clabuf> 74_ref">trans\+code=f" class="sref">f->        if">transf">devf->dev 789L679" id="L679" c>(f->118" class="sref">transppppppppppppppppp////////////////////////////////////////\+code=f" class="sref">f-> 678 )
device_ar class="line" namer89"> 78="sref">f->( 78_///////////////////////////////////////\+code=f" class="sref">f->119"8"> 678        if (!snprintf" id="L730" clasnprintfscsi_transport_sas.cbuf" id="L730" clabuf> 74, 20inalass="sref"fev"ing">"none\n""line" _t/////////////////////\+code=f" class="sref">f->>119="sref">devgegtscsi/rotocola-si//scsi/scsi_transgegtscsi/rotocola-si//scsi_transport_sas.cr class="line" namer89"> 78="sref">f->( 78inass="sref">phy 74_;////////\+code=f" class="sref">f->sas_phy<11y" >119i/scsi_transport_sas.c#L761" id="L761" class="line"11"3+code=i11ef="+code=dehref="+cocla11ef=>119ref="+code=phy" class="sref">phy);
 7711l" >11"i_tra#defhreqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" cl)devf->sas_phy *11ass>119ref="+code=NULL" class="srefs89"r clsshow_protocola href="driverss89"r clsshow_protocolscsi_transport_sas.cfiel"r( 78inass="sref">phy<-si/scsi_transport_-si/" cl)devf->dev_to_shos11cla>11"705" evaticqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(f->119href="+code=ppppppppp href="drivers/show_s89"r cls" id="L730" clashow_s89"r clssi_t## SASinass="sref">phy< class="line" name="L671"> _ name="L726"> 726        sh>11"i/scs name="L726"> 726         698        if 11698>11978"> evaticqss="sref">dev  name="L726"> 726         698        if 12="+>120te" c href="drivers/show_s89"r cls+code=_typeass="line" nameshow_s89"r cls+code=_typescsi_port_sas.c#L789" id="L>static int sas_phy_match(, name="L726"> 726        >1201code=phy" clf">transssssssssssport_sas.c#L789" id="L>stati_atv"ibutec int (,>charphy_match" class=buf" id="L730" clabuf> 74_ name="L726"> 726        sas_phy<12=" >120>INIT class="sref">phy->12038"> 678 ev" class="sref">dev 789L679" id="L679" c>(phy-> 7712=" >120763"> 763sas_phy *12=ss>120ref="+code=NUL
device_ar class="line" namer89"> 78="sref">f-> 78=parent" class="+code=_typeass="line" name+code=_typescsi_ name="L726"> 726        dev_to_shos12=la>120+code=phy" clf">transf (!snprintf" id="L730" clasnprintfscsi_transport_sas.cbuf" id="L730" clabuf> 74, 20inalass="sref"fev"ing">"none\n""line" _t name="L726"> 726        12=href="+code=pf (!gegtscsi+code=_typea-si//scsi/scsi_transgegtscsi+code=_typea-si//scsi_ name="L726"> 726        120" class="sref">transppppppppp"sref">device_ar class="line" namer89"> 78="sref">f-> 78=parent" class="+code=_typeass="line" name+code=_typescsiinass="sref">phy 74_; name="L726"> 726         698        if 12=98>12078"> i_transport_sas.c#L761" id="L761" class="line"121"+code=i12ransport_sas.c#L709" id=12ran>121=ef="+code=phy" class="sref">phy);
dev( 78inass="sref">phy<+code=_typeass="line" name+code=_typescsiinass="sref">phy(phy);
 678        i href="drivers/show_s89"r cls+code=_typeass="line" nameshow_s89"r cls+code=_typescsiinass="sref">phy< class="line" name="L671"> _; name="L726"> 726         * or 12n c>121ref="+code=phy" class="sref">phy);
 *12121y" clevaticqss="sref">dev  name="L726"> 726        show_s89"r clsenclosurt_identifie"c int sas_phy_match(, name="L726"> 726        translf">transssssssssssport_sas.c#L789" id="L>stati_atv"ibutec int (,>charphy_match" class=buf" id="L730" clabuf> 74_ name="L726"> 726        phy->parent, int <12"sr>121" class="srefev" class="sref">dev 789L679" id="L679" c>(phy-> * 678 ev" class="sref">dev 789void
 78="sref">f->(phy->122>ref="+code=dev" class="sref">dev 789void
phy->sas_phy12hy">122="sref">devdev 789void
 789L679" id="L679" c&o_s89"internala href="drivers&o_s89"internalscsi_transport_sas.cshost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_tclass="sref">phy-> = dev..phy->GFP_KERNEL);
GF>12238"> 678 )L" class="sref">NUerrosscsi/scsi_transs/so"scsitclass="sref">phy->)
 763
 765 725        <12"L7>122705" class="line" name="L70555555555* Only class=s behind an exassder scs supspan.c, becausm6e" L765" class="line" name="L765"> 765122csi_transport_sas.c#L766" id55555555* enclosurt identifie""isL76SMP featurtRemoves the specified SAS PHY.  If the SAS PHY has an12r8+code=i12sref">phy->122rs/scsi/scsi_transport_sas.c55555555*="line" name="L787"> 787 * 12r9+code=i12    678 )
 726        dev.123"8"> 678        if (!);
phy->-> 7801232"sref">dev. 78="sref">f->(f-> 78inss="sref">phy-&gidentifie"c int phy-> 732        if 12732>12338"> 678 )
 726        123y" class="sref">rphyif (!errosscsi/scsi_transs/so"scsitclass="sref">phy->&qu1212eref="+code=NUf (!sprintf" id="L730" clasprintfscsi_transport_sas.cbuf" id="L730" clabuf> 74, alass="sref"fev"ing">"0x"L737llx\n""line" s (unsigned long long)ref">phy-&gidentifie"c int phy->,  726        dev( 78inass="sref">phyphy(phy);
host_no, <12ss=>123+code=number"f">dev.phy< class="line" name="L671"> _; name="L726"> 726        124=ef="+code=phy" class="sref">phy);
phy12hy">1241codeevaticqss="sref">dev  name="L726"> 726         740
124i/scsa>.sas_phy_match(, name="L726"> 726         741        re12L74>12438"> 678        ia>        if"port_sas.c#L789" id="L>stati_atv"ibutec int (,>charphy_match" class=buf" id="L730" clabuf> 74_ name="L726"> 726        phy->(dev 789L679" id="L679" c>(phy->12=+code=phy" clport_sas.c#L789" id="Ls89" class="line" name="L789"> 789void
 78="sref">f->(phy->124href="+code=pev" class="sref">dev 789void
phy->
dev 789void
 789L679" id="L679" c&o_s89"internala href="drivers&o_s89"internalscsi_transport_sas.cshost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_tclass="sref">phy->12478"> 678 )L" class="sref">NUvala href="driversvalscsitclass="sref">phy->125=ef="+code=phy" class="sref">phy);
dev 726        12528"> 678        if (!);
phy->sas_phy<12y" >125ref="+code=phy" class="sref">phy);
 752{
NUvala href="driversvalscsi9L679" id="L679" ciass="line" namei> 78="sref">f->(f-> 78_tclass="sref">phy-> 753        in12L75>125ref="+code=NUL
NUvala href="driversvalscsi9< 0_ name="L726"> 726        error = 125+code=phy" clf">transf (!vala href="driversvalscsitclass="sref">phy->dev);
d>125href="+code=pf (!sprintf" id="L730" clasprintfscsi_transport_sas.cbuf" id="L730" clabuf> 74, alass="sref"fev"ing">""L737d\n""line" s " class="sref">vala href="driversvalscsi_tclass="sref">phy->125" clai_transport_sas.c#L761" id="L761" class="line"1259+code=i12transport_configure_devi12tra>125 name="L667"> 667        return 0;
phy-> evaticqss="sref">dev( 78inass="sref">phyphy(phy);
transa>.phy< class="line" name="L671"> _; name="L726"> 726         760
>126i/scslass="sref">sas_phy_add(struct  761        return12"> >126a6" i" class="sref">s89"r cls/rotocolaatv"c int  78=parent" class="traniatori/rt_s/rotocol/scsi/scsi_transtraniatori/rt_s/rotocol//a>(,+code=phy" class="sref">phy);
126y" class="sref">rphyiparent" class="traniatori/rt_s/rotocol/scsi/scsi_transtraniatori/rt_s/rotocol//a>(_; name="L726"> 726        12656" i" class="sref">s89"r cls/rotocolaatv"c int  78=parent" class="targegt/rt_s/rotocol/scsi/scsi_transtargegt/rt_s/rotocol/scsiinass="sref">phy 726        126705" c.c#L789" id="Ls89"r clssimpl/_atv"c int  78=parent" class="s89"addres/scsi/scsi_transs89"addres/scsiinass="sref">phy"0x"L737016llx\n""line" s name="L726"> 726        126href="+code=pppppppppunsigned long long); name="L726"> 726        12=8/scsc.c#L789" id="Ls89"r clssimpl/_atv"c int  78=parent" class=" clsidentifie"c int phy< clsidentifie"c int ""L737d\n""line" s " class="sref">u8c int  726         * @phy:        SAS PH12"> >126 name="L667"> 667        return 0;
 *
 >127 
 787 * 1271+code=i12"> * Frees the specified12"> >12"0"> 7#defhreqss="sref">dev 787 * 1272+code=i12/a>>127i/scslass="sref">sas_phy_add(struct  )L" class="sref">NUs89"readi/rt_sm">N_pageass="line" names89"readi/rt_sm">N_pagescsi_port_sas.c#L789" id="L(>static int sas_phy_add(struct phy->127ref="+code=NUcharphy_match" class=buffe"c int GFP_KERNEass="line" name=GFP_KERNEacode_,phy_match" class=msdatass="line" name=msdatascsitclass="sref">phy->void static int statisas_phy_match" class=rdevice(parent);
((phy->sas_phy<12y" >127href="+code=pev" class="sref">devN_datass="line" name=s;N_dataref="y_match" class=m">N_datass="line" name=m">N_dataref=tclass="sref">phy->127ass="sref">trLL" class="sref">NUre/scsi/scsi_transre/ransinass="sref">phyphy-> 778         7>127 name="L667"> 667        return 0;
phy-12y" >128"8"> 678 L
device_abuffe"c int sas_phy_add(struct 1281code=phy" clf">transf (!);
phy->(sas_phy_add(struct 12838"> 678 class="sref">NUre/scsi/scsi_transre/rans9f">parent);
N_sensic int N_sensiscsi_transport_sas.csdevice(phyphy 726        128y" class="sref">rphyiiiiiiiiiiiiiiiss="sref">phy-&gm">N_datass="line" name=m">N_dataref=inass="sref">phy< class="line" name="L671"> _; name="L726"> 726        128#37;d name="L726"> 726         678 class="sref">NUerrosscsi/scsi_transs/so"scsi9L6-transport_sas.cEINVA);
phy->128href="+code=pL
device_at;(sas_phy_add(struct 128" class="sref">transpgotoas.c#L789" id="Lout" id="L730" claoutscsitclass="sref">phy->128 name="L667"> 667        return 0;
129fcode=number" class="sref">nmsdatass="line" name=msdatascsi9f">parent);
nm">N_datass="line" name=m">N_dataref==parent" class="header_lengthss="line" name=header_lengthscsi9+="L667"> 667        return 0;
>1291code=phy" clf">transa>.N_datass="line" name=m">N_dataref==parent" class="block(>sscriptorilengthss="line" name=block(>sscriptorilengthscsitclass="sref">phy->sas_phy<12y" >129i/scslass="sref">sas_phy_add(struct 12938"> 678 )
parent);
devsas_phy_add(struct  7712l" >129y" class="sref">rphyigotoas.c#L789" id="Lout" id="L730" claoutscsitclass="sref">phy->sas_phy *12ass>129#37;d name="L726"> 726        dev_to_shos12cla>12968"> 678 class="sref">NUerrosscsi/scsi_transs/so"scsi9L60tclass="sref">phy->129line" name="L726"> 726        sh>129ass="sref">transport_destroyrdevice(f->(parent);
phy-> 698        if 12698>1299ss="sref">transport_destroyrdevice(f->phy-> 698        if 13="+>130fcode=number" class="sref">nrdevice(f->phy-> 780sas_phy<13=" >130>INITas.c#L789" id="Lout" id="L730" claoutscsi:ransport_sas.c#L700" id="L700" class="line" n1303+code=i13=f="+code=dehref="+cocla13=f=>13038"> 678 class="sref">NUkfreic int phy-> 7713=" >130y" class="sref (!errosscsi/scsi_transs/so"scsitclass="sref">phy->sas_phy *13=ss>130ref="i_transport_sas.c#L761" id="L761" class="line"13=6+code=i13=lass="sref">dev_to_shos13=la>130705" c.c#L789" id="Ls="sref">dev);
N_pageass="line" names89"readi/rt_sm">N_pagescsi_tclass="sref">phy->130line" name="L726"> 726        1308/scsevaticqss="sref">devstes="lic int stes="li/a>(,+code=phy" class="sref">phy);
 698        if 13=98>130+code=number"f">devtransalass="sref"fev"ing">"<89"end(>stati""line" s " class="sref"> class="line" name="L671"> s " class="sref"> class="line" name="L671"> s " class="sref"> class="line" name="L671"> _tclass="sref">phy->131=ef="+code=phy" class="sref">phy);
 7#defhreqss="sref">devsteshow_simpl/scsi_transport_s89"end(>steshow_simpl/scsi_transport_sas.cfiel"r( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(phy 74_ref">tr\+code=f" class="sref">f-> evaticqss="sref">dev 678        if">transf">devf-> * or 13n c>131a6" i" class="sref">show_s89"end(>ste" id="L730" clashow_s89"end(>ste"> 7## SASsport_sas.c#L789" id="L>static int sas_phy_match(,>devf-> *13131y" class="sref">rphyiiiiiiiiiport_sas.c#L789" id="L>stati_atv"ibutec int (,>charphy_match" class=buf" id="L730" clabuf> 74_///////\+code=f" class="sref">f->        if">transf">devf-> 789L679" id="L679" c>(f->devstatic int statisas_phy_match" class=rdevice(parent);
static int statiscsi_transport_sas.cr class="line" namer89"> 78_t/////////\+code=f" class="sref">f->parent, int <13"sr>131" class="sref">transppppppppppppppppp////////////////////////////////////////\+code=f" class="sref">f->13178"> 678 f (!snprintf" id="L730" clasnprintfscsi_transport_sas.cbuf" id="L730" clabuf> 74, 20inass="sref">phy(phy 74nass="sref">phy(f->( 78_t//////\+code=f" class="sref">f->132>ref=i_transport_sas.c#L761" id="L761" class="line"1321+code=i13hy" class="sref">sas_phy13hy">1320"> 780132i/scs#defhreqss="sref">devstesimpl/_atv"c int stesimpl/_atv"scsi_transport_sas.cfiel"r( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(phy 74_ref">tr\+code=f" class="sref">f-> 678 class="sref">NU<89"end(>steshow_simpl/scsi_transport_s89"end(>steshow_simpl/scsi_transport_sas.cfiel"r( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy( 74_)f">tr\+code=f" class="sref">f->132y" clevaticqss="sref">dev(stscsi/scsi_transsnd(>st> 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(f-> class="sref">NUste" id="L730" clashow_s89"end(>ste"> 7## SASinass="sref">phy< class="line" name="L671"> _ name="L726"> 726         725        <13"L7>132705"  name="L726"> 726        132csi_trs="sref">devstesimpl/_atv"c int stesimpl/_atv"scsi_transport_sas.creadyiled_meaning"(phy(""L737d\n""line" s int_tclass="sref">phy->phy->1328/scsc.c#L789" id="Ls89"end(>stesimpl/_atv"c int stesimpl/_atv"scsi_transport_sas.cI_T_nexuslloli_timeout" id="L730" claI_T_nexuslloli_timeoutscsiinass="sref">phyphy->dev""L737d\n""line" s int_tclass="sref">phy->dev.133te" c href="drivers/s89"end(>stesimpl/_atv"c int stesimpl/_atv"scsi_transport_sas.ctraniatorire/ponsi_timeout" id="L730" clatraniatorire/ponsi_timeoutscsiinass="sref">phyphy->->transssssssssalass="sref"fev"ing">""L737d\n""line" s int_tclass="sref">phy->133i/scsa>.stesimpl/_atv"c int stesimpl/_atv"scsi_transport_sas.ctlr_supspan.cass="line" name&lr_supspan.c" clinass="sref">phyphy-> 732        if 13732>13338"> 678        ia>      alass="sref"fev"ing">""L737d\n""line" s int_tclass="sref">phy-> *.stesimpl/_atv"c int stesimpl/_atv"scsi_transport_sas.ctlr_enabl.cass="line" name&lr_enabl.c" clinass="sref">phyphy->&qu13133ref="+code=NU678 a>      alass="sref"fev"ing">""L737d\n""line" s int_tclass="sref">phy-> 726        133line"evaticqss="sref">devphy->, 133" class="sref">transppppppppppppppppalass="sref"fev"ing">"<89"exassder""line" s " class="sref"> class="line" name="L671"> s " class="sref"> class="line" name="L671"> s " class="sref"> class="line" name="L671"> _tclass="sref">phy->host_no, <13ss=>133 name="L667"> 667        return 0;
134=ef="#defhreqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(phy 74_ref">t\+code=f" class="sref">f->phy13hy">1341codeevaticqss="sref">dev ss="sref">transppppppppppppppppppppppppppppppppppppppppppp\+code=f" class="sref">f-> 740
134i/scsa>. 7## SASsport_sas.c#L789" id="L>static int sas_phy_match(,>devf-> 741        re13L74>13438"> 678        ia>       port_sas.c#L789" id="L>stati_atv"ibutec int (,>charphy_match" class=buf" id="L730" clabuf> 74_//////\+code=f" class="sref">f->transppppppppppppppppppppppppppppppppppppppppppp/////////////\+code=f" class="sref">f->13=ref="+code=NUev" class="sref">dev 789L679" id="L679" c>(f->13=+code=phy" clport_sas.c#L789" id="Ls89"exassdere>static int statisas_phy_match" class=e>stscsi/scsi_transs="+code9f">parent);
static int statiscsi_transport_sas.cr class="line" namer89"> 78_t/\+code=f" class="sref">f->f->134" class="sreff (!snprintf" id="L730" clasnprintfscsi_transport_sas.cbuf" id="L730" clabuf> 74, 20inass="sref">phy(phy 74nass="sref">phystscsi/scsi_transs="+code="sref">f->( 78_t//////\+code=f" class="sref">f-> i_transport_sas.c#L761" id="L761" class="line"135"+code=i13f="drivers/scsi/scsi_tra13f=">135=ef="+code=phy" class="sref">phy);
 7#defhreqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(phy 74_ref">t\+code=f" class="sref">f->13528"> 678 ss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy( 74_)f">t\+code=f" class="sref">f->sas_phy<13y" >135ref="evaticqss="sref">dev( 78inass="sref">phy<-si/scsi_transport_-si/" clinass="sref">phy(f-> 752{
rphyia>. 7## SASinass="sref">phy< class="line" name="L671"> _ name="L726"> 726         753        in13L75>135#37;d name="L726"> 726        error = 135705" c.c#L789" id="Ls89"exassderesimpl/_atv"c int (phy(""L737s\n""line" s charph_tclass="sref">phy->dev);
d>135csi_trs="sref">dev(phy(""L737s\n""line" s charph_tclass="sref">phy->1358/scsc.c#L789" id="Ls89"exassderesimpl/_atv"c int phy""L737s\n""line" s charph_tclass="sref">phy->135 namec.c#L789" id="Ls89"exassderesimpl/_atv"c int (phy(phy->phy-> 678        ief">rphyialass="sref"fev"ing">""L737s\n""line" s charph_tclass="sref">phy->(phy(""L737u\n""line" s unsigned int_tclass="sref">phy-> 760
>136i/scsa>.(phy(""L737u\n""line" sclass="sref">phy-> 761        return13"> >13638"> 678        ia>       unsigned int_tclass="sref">phy->136y" cla>.phy""L737d\n""line" s int_tclass="sref">phy->( 726        136705" evaticqss="sref">devphy->
"<89">stati""line" s " class="sref"> class="line" name="L671"> s " class="sref"> class="line" name="L671"> s " class="sref"> class="line" name="L671"> _tclass="sref">phy->
phy-> * @phy:        SAS PH13"> >136 nameevaticq)L" class="sref">NUs89"r clsmatchss="line" name=s89"r clsmatchscsi_port_sas.c#L789" id="Latv"ibute_conta   "c int (sas_phy_match(_ name="L726"> 726         *
 >137 phy-> * Frees the specified13"> >1371code=phy" clev" class="sref">dev 789void
phy->>1372code=phy" clev" class="sref">dev 789void
 78tclass="sref">phy->137ref="+code=phy" class="sref">phy);
device_at; 726         f (!phy->void  678 class="sref">NUshost" id="L730" clashostrans9L679" id="L679" c9(f->);
f->);
phy->sas_phy<13y" >137line" name="L726"> 726        trL
device_athost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_ name="L726"> 726        devphy->phy-13y" >138"8"> 678 L
device_athost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsicsi_transport_sas.c#host_atv"ic int phy->1381code=phy" clf">transssssssssss="sref">phy-&g="L7host_s="lic int  726        13828"> 678        if (!phy->138ref="+code=phy" class="sref">phy);
138y" class="sre/a>void
 789L679" id="L679" c&o_s89"internala href="drivers&o_s89"internalscsi_transport_sas.cshost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_tclass="sref">phy->
phy-&giass="line" namei> 78="sref">f->((phy->13868"> i_transport_sas.c#L761" id="L761" class="line"1387+code=i13ers/scsi/scsi_transport_13ers>138line" name="L726"> 726        1388/scsevaticq)L" class="sref">NUs89"end(>stematchss="line" name=s89"end(>stematchscsi_port_sas.c#L789" id="Latv"ibute_conta   "c int ( 726        devtraport_sas.c#L789" id="L>static int sas_phy_match(_ name="L726"> 726        139 phy->dev 789void
phy->sas_phy<13y" >1392code=phy" clev" class="sref">dev 789void
 78tclass="sref">phy->13938"> 678 ev" class="sref">dev 78tclass="sref">phy-> 7713l" >139y" clclass="sref">phy->sas_phy *13ass>139ref="+code=NUL
device_at; 726        dev_to_shos13cla>13968"> 678        if (!phy->139href="+code=pclass="sref">NUshost" id="L730" clashostrans9L679" id="L679" c9(f->);
f->);
phy->shost->transport_destroyr class="line" namer89"> 789L679" id="L679" c9(phy-> 698        if 13698>139 name="L667"> 667        return 0;
 698        if 14="+>140"8"> 678 L
device_athost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_ name="L726"> 726        >1401code=phy" clf">transf (!phy->sas_phy<14=" >14028"> 678 L
device_athost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsicsi_transport_sas.c#host_atv"ic int phy->14038"> 678        ia>      ss="sref">phy-&g="L7host_s="lic int  726         7714=" >140y" class="sref">transf (!phy->sas_phy *14=ss>140#37;d name="L726"> 726        dev_to_shos14=la>14068"> 678 class="sref">NUiass="line" namei> 789L679" id="L679" c&o_s89"internala href="drivers&o_s89"internalscsi_transport_sas.cshost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_tclass="sref">phy->140href="+code=pf (!phy-&giass="line" namei> 78="sref">f->steatv"_contr((phy->->transpansport_destroyr class="line" namer89"> 78="sref">f-> 78=parent" class="+code=_typeass="line" name+code=_typescsi =L679" id="L679" c5" _END_DEVICE" id="L730" claS" _END_DEVICE> 78tclass="sref">phy-> 698        if 14=98>14078"> i_transport_sas.c#L761" id="L761" class="line"141"+code=i14ransport_sas.c#L709" id=14ran>141=ef="+code=phy" class="sref">phy);
NUs89"exassderematchss="line" name=s89"exassderematchscsi_port_sas.c#L789" id="Latv"ibute_conta   "c int ( 726         678        iiiiiiiiiiiiiiiport_sas.c#L789" id="L>static int sas_phy_match(_ name="L726"> 726         * or 14n c>141a6" i class="sref">phy-> *14141y" class="sreev" class="sref">dev 789void
phy->141ref="+code=NUev" class="sref">dev 789void
 78tclass="sref">phy->141+code=phy" clport_sas.c#L789" id="Ls89"r class="line" names89"r clsas_phy_match" class=r class="line" namer89"> 78tclass="sref">phy->(struct 141line" name="L726"> 726        parent, int <14"sr>141ass="sref">trL
device_at; 726        141+code=number"f">devphy->142fcode=number" class="sref">nshost" id="L730" clashostrans9L679" id="L679" c9(f->);
f->);
phy->sas_phy14hy">1421code=number" class="sref">nr class="line" namer89"> 789L679" id="L679" c9(phy-> = sas_phy_add(struct  678 )
device_athost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_ name="L726"> 726        142y" class="sref">transf (!phy->                ret143142ref="+code=NUL
device_athost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsicsi_transport_sas.c#host_atv"ic int phy-> 725        <14"L7>14268"> 678        iiiiiiiiiss="sref">phy-&g="L7host_s="lic int  726        142href="+code=pppppppppf (!phy->phy->1428/scsclass="sref">phy->NUiass="line" namei> 789L679" id="L679" c&o_s89"internala href="drivers&o_s89"internalscsi_transport_sas.cshost" id="L730" clashostranscsi_transport_sas.c#href="+cot" id="L730" clahref="+cotscsi_tclass="sref">phy->dev.143fcode=number"f (!phy-&giass="line" namei> 78="sref">f->((phy->->trans_transport_sas.cr class="line" namer89"> 78="sref">f-> 78=parent" class="+code=_typeass="line" name+code=_typescsi =L679" id="L679" c5" _EDGE_EXPANDER_DEVICE" id="L730" claS" _EDGE_EXPANDER_DEVICEscsi ||class="sref">phy->14328"> 678        iitransport_sas.cr class="line" namer89"> 78="sref">f-> 78=parent" class="+code=_typeass="line" name+code=_typescsi =L679" id="L679" c5" _FANOUT_EXPANDER_DEVICE" id="L730" claS" _FANOUT_EXPANDER_DEVICEscsi_tclass="sref">phy-> 732        if 14732>14338"> i_transport_sas.c#L761" id="L761" class="line"1434+code=i14sas_rphy *phy->&qu14143ref="evaticqvoid class="sref">NUs89"exassderereleas/scsi_transport_s89"exassderereleas/scsi_port_sas.c#L789" id="L>static int sas_phy_match(_ name="L726"> 726        143705"  class="sref">phy->, dev 789L679" id="L679" c9(phy->, 143" class="srefport_sas.c#L789" id="Ls89"exassdere>static int statisas_phy_match" class=e>stscsi/scsi_transs="+code9f">parent);
static int statiscsi_transport_sas.cr class="line" namer89"> 78_tclass="sref">phy->host_no, <14ss=>143 name="L667"> 667        return 0;
144"8"> 678 L
device_ar class="line" namer89"> 78="sref">f->(_ name="L726"> 726        phy14hy">1441code=phy" clf">transf">f-> 78="sref">f->(_tclass="sref">phy-> 740
144i/scslass="sref">sas_phy_add(struct  741        re14L74>14438"> 678 f">f->static int f->);
phy->stscsi/scsi_transs="+code_tclass="sref">phy->(144705"  name="L726"> 726        NUs89"end(>statiereleas/scsi_transport_s89"end(>statiereleas/scsi_port_sas.c#L789" id="L>static int sas_phy_match(_ name="L726"> 726        144" cla class="sref">phy->1449 class="srefport_sas.c#L789" id="Ls89"r class="line" names89"r clsas_phy_match" class=r class="line" namer89"> 789L679" id="L679" c9(phy->1450 class="srefport_sas.c#L789" id="Ls89"end(>static int statisas_phy_match" class=e>stscsi/scsi_transs="+code9f">parent);
static int statiscsi_transport_sas.cr class="line" namer89"> 78_tclass="sref">phy->1450"> 78014528"> 678 L
device_ar class="line" namer89"> 78="sref">f->(_ name="L726"> 726        sas_phy<14y" >14538"> 678        if">f-> 78="sref">f->(_tclass="sref">phy-> 752{
phy-> 753        in14L75>1455" class="sre/a>void
static int f->);
phy->error = 14568"> 678 class="sref">NUkfreic int phy->dev);
d>145csi_ti_transport_sas.c#L761" id="L761" class="line"1458+code=i14href="+code=transport_ad14hre>1458/scsclass="sref">phy->145 nameclass="sref"fcomm;
/**"line" class="sref">phy->phy-> class="sref"fcomm;
 * s89"r cl_tranialize - common r clq)L"ialization"line" class="sref">phy-> * @r cl:number"f clqto tranialis/scine" class="sref">phy-> 760
>146i/scsalass="sref"fcomm;
 *scine" class="sref">phy-> 761        return14"> >14638"> class="sref"fcomm;
 * Used by both s89"end(>statiealloc() and <89"exassderealloc() toscine" class="sref">phy->146y" clalass="sref"fcomm;
 * tranialis/ the common r clqcomponent of each.scine" class="sref">phy->( */scine" class="sref">phy->146705" evaticqvoid class="sref">NUs89"r cl_tranializeass="line" names89"r cl_tranializescsi_port_sas.c#L789" id="Ls89"r class="line" names89"r clsas_phy_match" class=r class="line" namer89"> 78_ name="L726"> 726        146href= class="sref">phy->
transport_destroyINIT_LIST_HEADass="line" nameINIT_LIST_HEADscsi_ss="sref">phy-&gr class="line" namer89"> 78="sref">f->phy-> * @phy:        SAS PH14"> >14678"> i_transport_sas.c#L761" id="L761" class="line"147"+code=i14"> *
 >147=ef="+code=phy" class="sref">phy);
 * Frees the specified14"> >1471codeclass="sref"fcomm;
/**"line" class="sref">phy->>147i/scsalass="sref"fcomm;
 * s89"end(>statiealloc - allocate an r clqfor an end >statiscine" class="sref">phy->14738"> class="sref"fcomm;
 * @/scsi/: which "+coscine" class="sref">phy->147y" clalass="sref"fcomm;
 *scine" class="sref">phy->147#37;dalass="sref"fcomm;
 * Allocates an SAS remote PHYfport_sure,qconnected to @/scsi/.scine" class="sref">phy->void  alass="sref"fcomm;
 *scine" class="sref">phy->sas_phy<14y" >147line"alass="sref"fcomm;
 * R (!phy->147ass="alass="sref"fcomm;
 *      SAS PHYfallocated or "L737"L67 L
phy-> 778         7>147 nameclass="sref"fcomm;
 */scine" class="sref">phy->phy-14y" >148"8"> port_sas.c#L789" id="Ls89"r class="line" names89"r clsas_phy_match" class=s89"end(>statieallocscsi_transport_s89"end(>statieallocscsi_port_sas.c#L789" id="Ls89""+coscsi_transport_s89""+coscs_phy_match" class=a>);
phy->1481code class="sref">phy->(dev 789void
phy-&ga>);
f->(phy->14838"> 678 ev" class="sref">devstatic int statisas_phy_match" class=rdevice(phy->
phy->
(GFP_KERNEass="line" name=GFP_KERNEacode_tclass="sref">phy->14868"> 678 )
device_ardevice(phy->148href="+code=pppppppppf (!device_a class="line" name="L671"> tclass="sref">phy->148ass="sref">tr;(_tef">phy->134>138+48me="L667"> 667        return 0;
139 49de=number" class="sref">nshoatieallnializeass="line" names89atieallnializeassi_ss="sref">phy-&gr clice(f-> 78="srent" class="+code=(phy->nr clice(f-> 78="srent" class="+code=(phy-&ga>);
f->(phy->sas_phy<13y"4>139249> 678 ss="sref">dev(f-> 78="srent" class="+code=(statiereleas/scsi_transport_s89"end(>statiereleas/scsi_poass="sref">phy->139349> 678 )
f->(phy-> 7713l"4>139y49class="sref">transf (t_sas.c#L789" id="Ls89"r class="line" names89"r clsas_phy_match" class=r class="line" namer89"> 789L679" id="L679" c9f->(phy->sas_phy *13as4>139r4f="+code=NUL
nshoati_sesta> *="line" name9 *i_ss="sref">phy-&gr clice(f-> 78="srent" class="+code=(""L7(>statiere-37d\n&:37d\n&:37d\n&ot;"line" sclass="sref">phy->dev_to_shos13cl4>13964"> 678        if (NUL
nshost" id="L730" clashostranscsi_transport_sas.c#hret_s="nod="L730" clashot_s="noe_tclas>phy-&gr class="line" namer89"> 78="sref">f->(phy->139h49f="+code=pppppppppppppppppppppppppnsport_sas.cdev;
f-> i int phy->->trans} elsess="sref">phy-> 698        if 13694>139 49de=number"f">devnshoati_sesta> *="line" name9 *i_ss="sref">phy-&gr clice(f-> 78="srent" class="+code=(""L7(>statiere-37d\n&:37d\n&ot;"line" sclass="sref">phy-> 698        if 14="5>140"50> 678        ief">rphyiala" class="sref">nshost" id="L730" clashostranscsi_transport_sas.c#hret_s="nod="L730" clashot_s="noe_tclas>phy-&gr c;
f-> i int phy->nr clice(f-> 78="srent" class="+contiflass="line" nameidentifl> 78=parent" class="+code=_typeass="line" name+code=_typescsi =L67" id="L679" c5" _END_DEVICE" id="L730" claS" _END_DEVICE> 78tclass="sref">phy->sas_phy<14="5>140250> 678 ss="sref">devphy-&gr clice(f-> 78="s)ass="sref">phy->140350> 678 f">f->phy-&gr clice(f-> 78="srent" class="+code=(phy-> 7713l"5>140y50clclass="sref">phy->sas_phy *14=s5>140#50="+code=NUf (!phy-&giaslice(f-> 78="sass="sref">phy->dev_to_shos13cl5>140650> i_transport_sas.c#L761" id="L761" class="line"13875code=i14==5+code=to_sas_internal14==5>140h50_trs="sref">devstatieallocscsi_transport_s89"end(>statieallocscsi_po)ass="sref">phy->->phy-> 698        if 14=95>140750meclass="sref"fcomm;
/**"line" class="sref">phy->141=51> class="sref"fcomm;
 * s89"r cssderealloc() allocate an r clqfor an end >statiscine" class="sref">phy-> * @r csi/: which "+coscine" class="sref">phy->141251csalass="sref"fcomm;
 * s89@escs: _EDGE_EXPANDER_DEVICEscs "L7_FANOUT_EXPANDER_DEVICEscsi_" class="sref">phy-> * or 14n 5>141a51> class="sref"fcomm;
 * @/i_" class="sref">phy-> *14141y51clalass="sref"fcomm;
 * traocates an SAS remote PHYfport_sure,qconnected to @/scsi/.scine" class="sref">phy->141r51;dalass="sref"fcomm;
 * Alne" class="sref">phy->141+51> alass="sref"fcomm;
 *sci(!phy->(struct 141l51e"alass="sref"fcomm;
 * R (((((( PHYfallocated or "L737"L67 L
phy->parent, int <14"s5>141a51="alass="sref"fcomm;
 *   ine" class="sref">phy-> *);
phy->142f52> 678        ief">rphyiala" cllllllllenumc#L789" id="Ls89""+cde=_typeass="line" name+co""+cde=_typeass 678->phy->sas_phy14hy5>142152de class="sref">phy-> = dev 789void
phy-&ga>);
f->(phy->);
G2y" class="sref">transf0eatv"_contr(rphyiala" cllllllllenummvice( 7265     5 devde30" claS; 789devdevf->(phy-5gt;sas_phy5f="s="li" 5l !=class="sref">phy-5gt;devdev<""+cde=_typeass="line" name ! 78=parent" class="+code=_typeass="line" name+code=_typescsi =L679" id="L679" c5" _ED( 7265     5 dev<""+cde=_typeass="line" name ! 78=parent" class="+code=_typeass="line" name+code=_typescsi =L679" id="L679" c5" _FANOUT_EXPANDER_DEVICE" id="L730" claS" _FANOUT_EXPAN5ppppppf (!5a 0tclass="sref">phy-5gt;phy->1425/scsclass="sref">phy-5gt;
(GFP_KERNEass="line" name=5ref="+cots5si_tclass="sref">phy-5gt;14868"> 678 )
device_ardevice(phy-5gt;148href="+code=pppppppppf (!device_a class="line5R_DEVICEsc5i ||class="sref">phy-5gt;dev_to_shosER_DEVICEs5si_tclass="sref">phy-5gt;14335"> i_transport_sas.c#L7615 id="53ref="+code=dev" 14=4+code=i13" 4lass="line" name="L7813" 4>139 49de=number" class="sref">nshoatieallnializeass="line" names89atieallnializeassi_ss="sref">phy-&gr clice(f-> 78="srent" class="+code=(5+14sas>1435" clclass="sref">phy-5gt;
nr clice(f-> 78="srent" class="+code=(f-> 78="srent" class="+code=(5+="s="li" 5a>(_ name="L726"> 7265     53ref="+code=detrs="sref">dev<4HY
nr clice(f-> 78="srent" class="+code=(&qu14143ref="evaticqvoid class="sref"="line" namer89"> 78="srent" class="+code=(5+ef="s="li55"  class="sref">phy-5gt;(ku14143ref="mutex_a>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(5+pppppf (!5de_tclass="sref">phy-5gt;
nr clice( 78="srea href="+code_tcrent" ">devde30" _LIST_HEADscsi_ss="snextticqvoid c-&gr class="line"nextticqvoid c-&30" ++="line" namer89"> 78="srent" class="+code=(5+14sre>142578_tclass="sref">phy-5gt;(ku14143ref="mutex_una>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(5<14ss=>1435name="L667"> 667     5  ret54n 0;
        if 13694>139 49de=number"f">devnshoati_sesta> *="line" name9 *i_ss="sref">phy-&gr clice(f-> 78="srent" cqvoid ode=(""L7(>statiere-37d\n&:37ine" nameq5a>(_ name="L726"> 7265     5 13964"> 678        if (NUL
nshost" id="L730" clashostranscsi_transHY
nr clice( 78="sret="line" namer89"> 78="srent" class="+code=(5<_DEVICEsc5>(_tclass="sref">phy-5gt;sas_phy<13y"4>139249> 678 ss="sref">dev(f-> 78="srent" class="+contiflass="line" nameidentifl> 78=parent" clas""+cde=_typeass="line" name="line" namer89"> 78="srent" class="+code=(5sas_phy_a5d5struct sas_phy<14="5>140250> 678 ss="sref">devphy-&gr clice(f->phy-5gt;140350> 678 f">f->phy-&gr clice(f-> 78="srent" class="+code=(phy-5gt;sas_phy514MBO>144r5f="i_transport_sas.c#L7615 id="54ref="+code=dev" 14855code=i14=s5="sref">sas_phy *14=s5>140#50="+code=NUf (!phy-&giaslice(f-> 7265     54ref="+code=dev" 1457+code=i14">dev);
 7265     5 140h50_trs="sref">dev 78="srent" class="+code=(1425cla class="sref">phy-5gt;->phy-5gt; 698        if 14=95>140750meclass="sref"fcomm namer89">578_tclass="sref">phy-5gt; 678 *14-> hierarce 698        if 14=95>140750meclass="sref"fcomm _DEVICEsc5"> 780 *14 698        if 14=95>140750meclass="sref"fcomm R_DEVICEs5a>(_ name="L726"> 7265     55ref="+code=dev" 14745c3de=i14="5lass="comment"> * or 14n 5>141a51> class="sref"fcomne" nameq/5>(_tclass="sref">phy-5gt; *141455" clclass="sref">phy-5gt;(phy-5gt;phy-5gt;d>145c5i_ti_transport_sas.c#L7615 id="55ref="+code=dev" 1438+code=i14;d" 789void
;void
;devf->(1455/scsclass="sref">phy-5gt;dev 789void
f->f->(/**"l5ne" class="sref">phy-5gt;devde30" claS; 789devdevf->a56namer89">5ne" class="sref">phy-5gt;f->f>141+519 port_sas.c#L  ref">f->f->f->a56_DEVICEsc5ne" class="sref">phy-5gt;f->a56R_DEVICEs5ne" class="sref">phy-5gt;phy-5gt;phy-5gt;f->a56rs/scsi/s5ne" class="sref">phy-5gt;dev< ckzagestatic int statisas_phy_>phy-&giaslice(f-> 7265     56ref="+code=dev" 14r7+code=i14alloc(struct 146h5ef= class="sref">phy-5gt; 789_trandds_phy<14="5>140/a>_trandd;f->a5614hre>1455de_tclass="sref">phy-5gt; >14675"> i_transport_sas.c#L7615 id="57ref="+code=dev" 13635code=i14ers/scsi/scsi_erro;
f->a5i14"> >1475ef="+code=phy" class="sre5">phy57ref="+code=dev" 14835code=i1->140350> 678 nddef="+co;f->a5;
/**"l5ne" class="sref">phy-5gt;140350> 678 configureef="+co;f->a5;R_DEVICEs5ne" class="sref">phy-5gt;sas_phy<14="5>140250>bsgs="sref">sa0h50_trs="sref">devdevphy-5gt;dev< r""dku14143ref=" r""dk0h50_tline" namer89"> 78="srent";
-> (devnshoport_sas.c#hret_s="nod="L730" clashot_s="noe_tsport_sas.cdev;
f->a5;f each.sc5ne" class="sref">phy-5gt;sas_phy5@/scsi/.sc5ne" class="sref">phy-5gt; *sc5ne" class="sref">phy-5gt;(ku14143ref="mutex_a>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(5R (!phy-5gt;143ref="ass= nddet
devnshoport_sas.c#hret_s="nod="L730" clashot_s="noe_tref">phy-&gr class="lin,4"L725"> 725        <14"Lvde30" _LIST_HEADscsi_ss="s 678phy-&gr cl 678 78="srent" class="+code=(5R14hre>1455ne" class="sref">phy-5gt;f-> 78=parent" class="+coode=_typeass="line" name+code=_typescsi =LD(phy-5gt;f-> 7( 7(( >1475csi_class="sref">phy-5gt;phy-5gt;nshoport_sas.c#hret_s="nod="L730" clashot_s="noe_tclas>phy-&gr class="line" namer89"> 78="srea href="+code_tcrent" ">devde30" _LIST_HEADscsi_ss="snexttphy-&gr class="line"nexttphy-&30" ++="line" namer89"> 78="srent" class="+code=(5a href="+c5de_tclass="sref">phy-5gt;f-> 78=parent" class="+coode=_typeass="line" name+code=_typescsi =L" names89"r clsas_phy_match" class=r class="lin51oc() tosc5odetclass="sref">phy-5gt;dev 78="srea h-1="line" namer89"> 78="srent" class="+code=(5af each.sc5" clclass="sref">phy-5gt;(ku14143ref="mutex_una>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(5FP_KERNEac5de_tclass="sref">phy-5gt;phy-5gt;f-> 78=parent" class="+coode=_typeass="line" name+code=_typescsi =LD( tclass="sref">phy-5gt;dev 78="srea! h-14868"> 678 )
device_ardevice(tr;143ref="aune" nrivers/scsi/scsi="sref">f->a5em>134>138548me="L667"> 667     5  ret5961" class="line"147"+code=i14"> *
phy-5gt;f-> 7( 7(phy-5gt;dev143ref="aune" nl> 78=parent" classCAN_WILD_CARf->a5e href="+c5csi_poass="sref">phy-5gt;s4>139a4s5s/scsi/scs5="s)class="sref">phy-5gt;dev143ref="aune" nl> 0rivers/scsi/scsi="sref">f->a5ef each.sc5si="s)ass="sref">phy-5gt;sas_phy5d\n&ot;"li5e" sclass="sref">phy-5gt; gr class="line" namescaner89"> f">devnshoport_sas.c#hret_s="nod="L730" clashot_s="noe_tsport_sas.cdev;
 78="sref+trs="sref">dev143ref="aune" n, 0t="line" namer89"> 78="srent" class="+code=(5 hrefarges5phy-5gt;dev);
phy-5gt;phy->tra5s} elsess="sref">phy-5gt;f->a6d\n&ot;"li6e" sclass="sref">phy-6gt;dev);
phy-6gt;140h50_trs="sref">dev 78="srent" class="+code=(6END_DEVICE6 78tclass="sref">phy-6gt; 78="srent" class="+code=(6E3D_DEVICE6 si_poass="sref">phy-6gt; 698        if 14=95>140750meclass="sref"fcom6a href="+c6de_tc)ass="sref">phy-6gt; 678 *14 698        if 14=95>140750meclass="sref"fcom6a5href="+c6di="s)ass="sref">phy-6gt; *14 698        if 14=95>140750meclass="sref"fcom6a6href="+c6d" sclass="sref">phy-6gt;void  alass="sref"fco613cl5>140660> i_transport_sas.c#L7616 id="60ref="+code=dev" 14785code=i14aFrefsaass=specsi="dsomment"> *14phy-6gt;phy-6gt; *f the allocation147;5>141+51> alass="sref"fcomm;
 *6;
/**"l6ne" class="sref">phy-6gt; * the allocation147;5>141+51> alass="sref"fcomm;
 *6;dntifl> i6ne" class="sref">phy-6gt;141+51> alass="sref"fcomm;
 *6;ND_DEVICE6ne" class="sref">phy-6gt; 678 678ve()'d) the allocation147;5>141+51> alass="sref"fcomm;
 *6;3D_DEVICE6i_" class="sref">phy-6gt;( * @6i_" class="sref">phy-6gt;140250> 678phy-6gt; 678 )
device_ardevice( * A6ne" class="sref">phy-6gt;140350atv"_contr( 78="srent" class="+code=(6ci(!phy-6gt;dev 789void
f->clashot_s="noe_tclas>="sref">f->(phy-6gt;devde30" claS; 789devdevf->a619ieallocs6ne" class="sref">phy-6gt;->phy-6gt;(ku14143ref="mutex_a>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(6" name+coe6ss 678ass="sref">phy-6gt;143ref="ass= deaf">devnshoport_sas.c#hret_s="nod="L730" clashot_s="noe_tref">phy-&gr class="lint="line" namer89"> 78="srent" class="+code=(6"ND_DEVICE62de class="sref">phy-6gt;(ku14143ref="mutex_una>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(6a href="+c6de_tc)ass="sref">phy-6gt; 7266     6 vevve0h50_trs="sref">devdev 78="srent" class="+code=(6a/scsi/.sc6a 0tclass="sref">phy-6gt;sas_phy6f="s="li" 6l !=class="sref">phy-6gt;dev<"sref">sasdev" oyef="+cocla13ef5>140350> 678 dev" oyef="+co0h50_trs="sref">devf->a6ref="s="li6 cl_ name="L726"> 7266     62ref="+code=dev" 14r7+code=i14alloc(struct phy-6gt;devf->a6r9ieallocs6/scsclass="sref">phy-6gt;dev);
phy-6gt;140h50_trs="sref">devf->a6scsi ss="s6s="sclass="sref">phy-6gt;f->a6sND_DEVICE6i ||class="sref">phy-6gt; 698        if 14=95>140750meclass="sref"fcom6ER_DEVICEs6si_tclass="sref">phy-6gt; 678ve and href omment"> *14 698        if 14=95>140750meclass="sref"fcom614732>14336"> i_transport_sas.c#L7616 id="63ref="+code=dev" 14745c4de=i14= port_sas.c#Lomment"> *14ve and href95"> 698        if 14=95>140750meclass="sref"fcom61/scsi/.sc6" clclass="sref">phy-6gt;141r51;dalass="sref"fco6+="s="li" 6a>(_ name="L726"> 7266     63ref="+code=dev" 14765c6de=i14=s5">vesaass=specsi="dsomment"> *14 * traocates an SAS remote PHYfport_sure,qconnected to6+ef="s="li65"  class="sref">phy-6gt;(phy-6gt;(phy-6gt;dev 667     6  ret64n 0;
68"> 678 )
device_ardevice((_ name="L726"> 7266     64ref="+code=dev" 14835code=i1250> 678ves_phy<14="5>140250> 678ve0h50_trs="sref">dev 78="srent" class="+code=(6<_DEVICEsc6>(_tclass="sref">phy-6gt;140250> 678dev 78="srent" class="+code=(6sas_phy_a6d6struct+code=dev" 1457+code=i14">dev);
phy-6gt;140h50_trs="sref">dev 78="srent" class="+code=(6phy-6gt;sas_phy614MBO>144r6f="i_transport_sas.c#L7616 id="64ref="+code=dev" 14765c6de=i14=95"> 698        if 14=95>140750meclass="sref"fcom6=14L74>144605"  name="L726"> 7266     64ref="+code=dev" 14785code=i14a250> 678 *14 698        if 14=95>140750meclass="sref"fcom6phy_match<6a>(_ name="L726"> 7266     64ref="+code=dev" 14795code=i14= port_sas.c#Lomment"> *11> ctolunaink from i>s device id="L71014or5>141151declass="sref"fcomm;
 * @r csi/: w6t14sre>1426cla class="sref">phy-6gt;141151declass="sref"fcomm;
 * @r csi/: w6a href="+c6de_tclass="sref">phy-6gt;vesa * @entfevicce5tola1=51> L71014or5>141151declass="sref"fcomm;
 * @r csi/: w6ane" nameq678_tclass="sref">phy-6gt;( 780140250> 678 7266     65ref="68"> 678 )
device_ardevice((_tclass="sref">phy-6gt; 789void
;void
;devf->(1456" clclass="sref">phy-6gt;sas_phy6ers/scsi/s6si_tclass="sref">phy-6gt;dev< ckzagestatic int statisas_transport_14ers>148href="+code=pppppppppf (!device_a class="line6transs="+c6de_tclass="sref">phy-6gt;dev);
d>145c6i_ti_transport_sas.c#L7616 id="65140h50_trs="sref">dev140250> 6781426/scsclass="sref">phy-6gt;->/**"l6ne" class="sref">phy-6gt; 698        if 14=95>140750meclass="sref"fcom66namer89">6ne" class="sref">phy-6gt; 678ve  -  nt">ve omment"> *14 698        if 14=95>140750meclass="sref"fcom66_DEVICEsc6ne" class="sref">phy-6gt; *11> ctolnt">ve0h"> 698        if 14=95>140750meclass="sref"fcom66R_DEVICEs6ne" class="sref">phy-6gt; * or 14n 5>141a51> class="sref"fco6loc() tosc6ne" class="sref">phy-6gt;vesaass=specsi="dsomment"> *14phy-6gt;(phy-6gt;( 7266     6661" class="line"1387250> 678ves_phy<14="5>140250> 678ve0h50_class=s89"end(sderealloc()="line" names89"r cl_tranializescsi_port_sas.c#L789" id="Ls89"r class="line" names89"r clsas_phy_match" class=r class="lin614*146h6ef= class="sref">phy-6gt; 678 )
device_ardevice(1456de_tclass="sref">phy-6gt;140350atv"_contr( 78="srent" class="+code=(614"> >14676"> i_transport_sas.c#L7616 id="6761" class="line"147"+code=i14"> *
 >1476ef="+code=phy" class="sre6">phy67ref="+code=deswitch 1483+code=i14L78IST_HEADass="line" nameINIT_LIST_HEADscsi_ss="s  ref">f-> 78="srent" class="+contiflass="line" nameidentif4868"> 678 )
device_ardevice(/**"l6ne" class="sref">phy-6gt; 678 )
device_ardevice(phy-6gt;veer89"> gr class="line" nament">veer89"> 0h50_trs="sref">devf->a61oc() tosc6ne" class="sref">phy-6gt;f->a61f each.sc6ne" class="sref">phy-6gt; 678 )
device_ardevice(phy-6gt; 678 )
device_ardevice(phy-6gt;veechildef=ne" names89"r cl_trat">veechildef=0h50_trs="sref">devf->a614*146h6ne" class="sref">phy-6gt;f->a6114hre>1456ne" class="sref">phy-6gt; 678 )
device_ardevice( */sc6ne" class="sref">phy-6gt;f->a6;14"> >1476csi_class="sref">phy-6gt;dev);
phy-6gt; 78="srent" class="+code=(6a href="+c6de_tclass="sref">phy-6gt;dev 78="srent" class="+code=(61oc() tosc6odetclass="sref">phy-6gt;veef="+cocla13ef5>140350> 678 at">veef="+co0h50_trs="sref">devf->a6af each.sc6" clclass="sref">phy-6gt;143ref="ne" namdea0h50_trs="sref">devf->a6ars/scsi/s6de_tclass="sref">phy-6gt;dev);
phy-6gt;140h50_trs="sref">devves_phy<14="5>140250> 678ve0h50drivers/scsi/scsi="sref">f->a6a4*146h6"> tclass="sref">phy-6gt;phy-> 698        if 14=95>140750meclass="sref"fcom6em>134>138648me="L667"> 667     6  ret69ref="+code=dev" 146"5code=i14=40750is_250> 678  -  check+v" aeclass=sa>-> represodess=comment"> *14 698        if 14=95>140750meclass="sref"fcom6e14"> >1476de_tclass="sref">phy-6gt;-_sas.c#Lsa>-> to check95"> 698        if 14=95>140750meclass="sref"fcom6e4id=>14816de_tclass="sref">phy-6gt; 698        if 14=95>140750meclass="sref"fcom6e href="+c6csi_poass="sref">phy-6gt;141+51> alass="sref"fcomm;
 *6s/scsi/scs6="s)class="sref">phy-6gt;-> represodess=comment"> *14141+51> alass="sref"fcomm;
 *6sf each.sc6si="s)ass="sref">phy-6gt;(phy-6gt; 678gr class="line" nameis_250> 6780h50_consteclass=s89"end(sdereallf="+cocla13ef5>140350atv"_contr(phy-6gt; i6ii="s)ass="sref">phy-6gt;&qu14143ref="evatindef="+coring">&qa>(
phy-6gt;&qu14143ref="evaticqvoid class="sref"="line" namer89"> 78="srent" class="+code=(7d\n&ot;"li7e" sclass="sref">phy-7gt;dev);
phy-7gt;140h50_trs="sref">dev 678gr class="line" nameis_250> 6780h50drivers/scsi/scsi="sref">f->a7END_DEVICE7 78tclass="sref">phy-7gt; 78="srent" class="+code=(7E3D_DEVICE7 si_poass="sref">phy-7gt;phy-7gt; 698        if 14=95>140750meclass="sref"fcom7a5href="+c7di="s)ass="sref">phy-7gt; 698        if 14=95>140750meclass="sref"fcom7a6href="+c7d" sclass="sref">phy-7gt;(140670> i_transport_sas.c#L7617 id="70ref="+code=dev" 14r7+code=i14alloc(struct phy-7gt;usd cscanu14143ref="evatusd cscan0h50_class=s89"end(sdereallScdev143ref="channea30" s+code=dev" 14r7+code=i14alloc(struct phy-7gt;dev143ref="aune" n" names89"r clsas_phy_match" class=r class="lin7;
/**"l7ne" class="sref">phy-7gt; 678 )
device_ardevice( i7ne" class="sref">phy-7gt;devde30" claS; 789devdevf->a71ND_DEVICE7ne" class="sref">phy-7gt;f->a713D_DEVICE7i_" class="sref">phy-7gt; * @7i_" class="sref">phy-7gt;(ku14143ref="mutex_a>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(7@/scsi/.sc7ne" class="sref">phy-7gt;dev 725        <14"Lvde30" _LIST_HEADscsi_ss="s 678phy-&gr cl 678devphy-&gr class="lint868"> 678 )
device_ardevice( * A7ne" class="sref">phy-7gt;f-> 78="srent" class="+contiflass="line" nameidentifa! h8=parent" class="+coode=_typeass="line" name+code=_typescsi =La||f="+code=p1467+code=i14*
phy-7gt; 78="srea  h-14f="+code=p1467+code=i14*
phy-7gt; 78="srent" class="+code=(7@9ieallocs7ne" class="sref">phy-7gt;->phy-7gt;143ref="channea30" l> 78=parent" class=CAN_WILD_CAR143ref="channea30" l> 70)D(phy-7gt; 78="sre)t868"> 678 )
device_ardevice(phy-7gt;dev<>deviscaner89"> gr class="line" namescaner89"> f">devnshoport_sas.c#hret_s="nod="L730" clashot_s="noe_tsport_sas.cdev;
 678 )
device_ardevice(phy-7gt; 78="sref+trs="sref">dev143ref="aune" n, 1t="line" namer89"> 78="srent" class="+code=(7href="+cot7csi_ name="L726"> 7267     72ref="+code=dev" 1487++code=dev" 1457+code=i14">dev);
phy-7gt;dev);
phy-7gt;dev(ku14143ref="mutex_una>(kscsi/scsi="s79" id="L679"789"">devde30" _LIST_HEADscsi_ss="sr>(ku14143ref="a>(kscsit="line" namer89"> 78="srent" class="+code=(7ref="s="li7 cl_ name="L726"> 7267     72ref="+code=dev" 14r7+code=i14alloc(struct phy-7gt;f->a7r9ieallocs7/scsclass="sref">phy-7gt;dev);
phy-7gt; *
phy-7gt;f->a7sND_DEVICE7i ||class="sref">phy-7gt;(phy-7gt;( i_transport_sas.c#L7617 id="73ref="+code=dev" 14745c4de=i14T_SYMBOL(phy-7gt;sas_phy7+="s="li" 7a>(_ name="L726"> 7267     73ref="#def72678=parent" class=ETUP_TEMPLATeass="line" name+ETUP_TEMPLATe14h" trs="sref">devdevdevdevsas_phy7+ef="s="li75"  class="sref">phy-7gt;vef="_ef="##fiel&;88888888888\+code=dev" 14=5+code=i14=ss="sref">sas_phy7+pppppf (!7de_tclass="sref">phy-7gt; 78="sreef="ass="line" nameef="e" namer89"> 78="srem"sru14143ref="ms="_S" claS; 789sas_phy7+9ieallocs778_tclass="sref">phy-7gt;sas_phy7<14ss=>1437name="L667"> 667     7  ret74ref="+code=dev" 1483+code=i14L78tedevsas_phy7 7267     74sas_phy7(_tclass="sref">phy-7gt; 78="srent" class="+code=(7sas_phy_a7d7struct#def72678=parent" class=ETUP_TEMPLATe_RWass="line" name+ETUP_TEMPLATe_RW14h" trs="sref">devdevdevdevsas_phy7phy-7gt;vef="_ef="##fiel&;88888888888\+code=dev" 14=5+code=i14=ss="sref">sas_phy7phy-7gt; 78="sreef="ass="line" nameef="e" namer89"> 78="srem"sru14143ref="ms="_S" claS; 789sas_phy714MBO>144r7f="i_transport_sas.c#L7617 id="746ef="+code=dev" 1483+code=i14L78so_tedevsas_phy7 7267     74 78="sreef="ass="line" nameef="e" namer89"> 78="srem"sru14143ref="ms="_S" claS; 789sas_phy7(_ name="L726"> 7267     74ref="+code=de487+487+89"end(sderealligr class="line"830" _LIST_HEADscsi_ss="sp14=ate_gr class="line"p14=ate_ef="##ef="b[ostranscsi_trancouagestatic int  78="srestorqu14143ref="etorq_S" claS; 789148href="+co88888888888888888\+code=dev" 14=5+code=i14=ss="sref">sas_phy7<9ieallocs7cla class="sref">phy-7gt;sas_phy7a href="+c7de_tclass="sref">phy-7gt;sas_phy7ane" nameq778_tclass="sref">phy-7gt;sas_phy7 _DEVICEsc7"> 780nshcouagestatic int sas_phy7 R_DEVICEs7a>(_ name="L726"> 7267     75ref="+code=dev" 1383+code=i13L781" class="line" nam7ne" nameq/7>(_tclass="sref">phy-7gt;devsas_phy7 /scsi/.sc7" clclass="sref">phy-7gt;dev< 678devdevsas_phy7 4MBO>144r7si_tclass="sref">phy-7gt;phy-7gt;devdevsas_phy7 pppppf (!7i_ti_transport_sas.c#L7617 id="75ref="+code=dev" 1468+code=i1=ETUP_TEMPLATeass="line" name+ETUP_TEMPLATe14h" trs="sref">dev< 678devdevsas_phy7 9ieallocs7/scsclass="sref">phy-7gt;->/**"l7ne" class="sref">phy-7gt;devsas_phy76namer89">7ne" class="sref">phy-7gt;dev<678devdevsas_phy76_DEVICEsc7ne" class="sref">phy-7gt; 78="srent" class="+code=(76R_DEVICEs7ne" class="sref">phy-7gt;devsas_phy76e" nameq/7ne" class="sref">phy-7gt;dev<678devdevsas_phy76/scsi/.sc7ne" class="sref">phy-7gt;devsas_phy764MBO>144r7ne" class="sref">phy-7gt; 7267     76ref="#def72678=parent" class=ETUP_OPTIONAL_PHY4ATTRIBUTe_RWass="line" name+ETUP_OPTIONAL_PHY4ATTRIBUTe_RW14h" trs="sref">devdevsas_phy76pppppf (!7ef= class="sref">phy-7gt;dev<678devdevsas_phy769ieallocs7de_tclass="sref">phy-7gt;devsas_phy714"> >14677"> i_transport_sas.c#L7617 id="7761" class="line"147"+code=i14"> *
 >1477ef="+code=phy" class="sre7">phy77ref="#def72678=parent" class=ETUP_Pal14ATTRIBUTeass="line" name+ETUP_nal14ATTRIBUTe14h" trs="sref">devsas_phy7;
/**"l7ne" class="sref">phy-7gt;dev<6>sasaf="+cot" id="L730" 6>sasaf="+"sref+trs="sref">devdevsas_phy7;R_DEVICEs7ne" class="sref">phy-7gt;phy-7gt;devdevsas_phy7;/scsi/.sc7ne" class="sref">phy-7gt;dev<678devdevsas_phy7;rs/scsi/s7ne" class="sref">phy-7gt;phy-7gt;devsas_phy7;pppppf (!7ne" class="sref">phy-7gt;dev<678devdevsas_phy7;9ieallocs7ne" class="sref">phy-7gt;-> */sc7ne" class="sref">phy-7gt;devdevsas_phy7;14"> >1477csi_class="sref">phy-7gt;dev<678devdevsas_phy714id=>14817ode class="sref">phy-7gt; 78="srent" class="+code=(7a href="+c7de_tclass="sref">phy-7gt;devsas_phy7;oc() tosc7odetclass="sref">phy-7gt;devdevdevsas_phy7af each.sc7" clclass="sref">phy-7gt;sas_phy7ars/scsi/s7de_tclass="sref">phy-7gt;devsas_phy7; namer89"7e)  class="sref">phy-7gt;devdevdevsas_phy7apppppf (!7"> tclass="sref">phy-7gt;phy-> 698        if 14=95>140750meclass="sref"fcom7em>134>138748me="L667"> 667     7  ret79ref="+code=dev" 146"5code=i14=4ascaf=achtmeclass="  -  instantiate ommemeclass=" templat"_SYMBOL( >1477de_tclass="sref">phy-7gt;(14817de_tclass="sref">phy-7gt;(phy-7gt;146#37;dalass="sref"fcom7eoc() tosc7="s)class="sref">phy-7gt;devsas_phy7sf each.sc7si="s)ass="sref">phy-7gt; 678 )
device_ardevice(phy-7gt;143ref="versinternaaef="+*trs="sref">devf->a7 hrefarges7phy-7gt;f->a7 pppppf (!7ii="s)ass="sref">phy-7gt;phy->phy-7gt; 789143ref="versinternaaef=")f+trs="sref">dev148GFP_KERNEnef=")rivers/scsi/scsi="sref">f->a8d\n&ot;"li8e" sclass="sref">phy-8gt;sas_phy8=dntifl> i8ii="s)ass="sref">phy-8gt;device_a class="line8END_DEVICE8 78tclass="sref">phy-8gt; 78="srent" class="+code=(8E3D_DEVICE8 si_poass="sref">phy-8gt; 78="sreusd cscanu14143ref="usd cscan0h50claS; 789<250>usd cscanu14143ref="evatusd cscan0h50ode=pppppppppf (!device_a class="line8E4D_DEVICE8 "s)class="sref">phy-8gt;device_a class="line8E5D_DEVICE8 i="s)ass="sref">phy-8gt; 78="sre.c#href="+cot" id="L730" .c#href="+0h50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="sreef="+cot" id="L730" ef="+>141+lascsi="s79" id="L679"igr class="line"830" _LIST_HEADscsi_ss="s.c#href="+cot" id="L730" .c#href="+0h50[0]ode=pppppppppf (!device_a class="line8E6D_DEVICE8 " sclass="sref">phy-8gt;dev 78="sre.c#href="+cot" id="L730" .c#href="+0h50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="sre clasestatic int 141+lascsi="s79" id="L679"" na.c#hr clasestatic int  78="sre clasestatic int 141ode=pppppppppf (!device_a class="line8E7D_DEVICE8 /e_tclss="sref">phy-8 id="80ref="+code=dev" 13"7+code=i1igr class="line"830" _LIST_HEADscsi_ss="sev 78="sre.c#href="+cot" id="L730" .c#href="+0h50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="srematchgr class="line"match0h50claS; 789<250>.c#hrmatchgr class="line"250>.c#hrmatch>141ode=pppppppppf (!device_a class="line8E8D_DEVICE8 i="s)ass="sref">phy-8gt; 78="sre.c#href="+cot" id="L730" .c#href="+0h50)rivers/scsi/scsi="sref">f->a8d9D_DEVICE8 } elsess="sref">phy-8gt; 78="sre.c#hrvizecot" id="L730" .c#hrvize0h50clavizeof v" 145"+code=i14f="drivers.c#href="+cot" id="L730" ERNE.c#href="+>141)rivers/scsi/scsi="sref">f->a8;
/**"l8ne" class="sref">phy-8gt; *
phy-8gt; 78="sreecgr class="line"ac0h50amer89"> 78="sre clasestatic int 141+lascsi="s79" id="L679"" na678< clasestatic int  78="sre clasestatic int 141ode=pppppppppf (!device_a class="line81ND_DEVICE8ne" class="sref">phy-8gt; 78="sreecgr class="line"ac0h50amer89"> 78="sreef="+cot" id="L730" ef="+>141+lascsi="s79" id="L679"igr class="line"830" _LIST_HEADscsi_ss="s678device_a class="line813D_DEVICE8i_" class="sref">phy-8gt; 78="sreecgr class="line"ac0h50amer89"> 78="srematchgr class="line"match0h50claS; 789<250>678678141ode=pppppppppf (!device_a class="line814D_DEVICE8i_" class="sref">phy-8gt;f->a8;5D_DEVICE8ne" class="sref">phy-8gt;sas_phy8m;
 * A8ne" class="sref">phy-8gt;devsasaf="aco="0h50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="sre clasestatic int 141+lascsi="s79" id="L679"" na6 clacclasestatic int  78="sre clasestatic int 141ode=pppppppppf (!device_a class="line81_a class="ne" class="sref">phy-8-7gt;8="line"ac0h50amer89"> 78=7ref">f->a8;
/**"l8ne" class="sref">phy-8gt;device_a class="line855rmgr class="line"so_per0h50af="+cotr class="line"p14=ate_ef="##ef="b[ostranscsi_trancouagestatic int ve+code=i14f="drivers.c#ho76 phy-8gt; 78="srent" ine" name+code=_typescsicea8d9D_DEVICE8 } elsess="sref">phy-8gt; 78="sre.c#hrvizecot" id="L730" .c#hrvize0h50clavizeof v" 145"+code=i14f="rdrivers.c#href="+cot" id="L7r30" ERNE.c#href="+>141)rivers/scsi/scsi="sref">f->a8;
/**"l8ne" class="sref">phy>143ref="c8annea30" l> 70)D i8ne" class="sref">phy-8gt; 78="sre.c#hrvizec50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="sre clasestatic int 141+lascsi" class="line" nam7transs="+c7de_tclassnt  78="sre clasestatilass="line88="srel> 78=parent" class8port_82ref">device_a class="line81ND_DEVICE8ne" class="sref">phy-8gt; 78="sre.c#hrvizecs82lss=" 78="pppppf (!device_a class="linrh50amer89"> 78="sreef="+cot"r id="L730" ef="+>141+lascsi="s79" id="L679"igr class="line"83="line" na8escaner89"> f">devdevice_a class="line813D_DEVICE8i_" class="sref">phy-8gt; 678 )
d8vice_82ch0h50claS; 789<250>678 78="sri_ss="sp78 78="sri_ss=ADscsi_ss="sev 78="sre.c#hrvizecot" id="L730" .c#hrvize0h50clavizeof v" 145"+code=i14f="r89"> 78ers.c#href="+cot" id="L7r89"> 78ers.cc#href="+>141)rivers/scsi/scsi="sref">f->a8;
/**"l8ne" class="sref">phy>7     72ref="+code=de8" 14882>sas_phy8m;
 * A8ne" class="sref">phy-8gt; 78="sri_ss="sp78 78="sri_ss=ADscsi_ss="sev 78="sre.c#hrvizec50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="sre clasestatic int 141+lascsi/a>-7gt; 78="srent" nt  78="sre clasestatil int phy-7gt;8a72re82>device_a class="line81_a class="ne" class="sref">phy-8-7gt;8="lir89"> 78="sri_ss="sp78 78="sri_ss=ADscsi_ss="sev 78="sre.c#hrvizecs82lss=" 78="pppppf (!device_a class="linr89"> 78mer89"> 78="sreef="+cot"r89"> 78mer89gt;a8;
/**"l8ne" class="sref">phy>gestatic iref">phy-7gt;vef="_gr class="line"/a>ve+code=i14f="drivers.c#ho76 phy-8gt; 78="sri_ss="sp78 78="sri_ss=ADscLIST_HEADscsi_ss="sp78dev8/Scde30" _LIST_HEADscsi_ss="sr>(ku14148ref="a>(ks8sit="line" namer89"> 78="8rent"83icea8d9D_DEVICE8 } elsess="sref">phy-8gt; 78="sre.c#hrvizecot" id="L730" .c#hrvize0h50clavizeof v" 145"+code=i14f="r5+code=iers.c#href="+cot" id="L7r5+code=iers.cc#href="+>141)rivers/scsi/scsi="sref">f->a8;
/**"l8ne" class="sref">phya>7     728ef="+code=dev" 14r7+code=814all83span>
phy-8gt; 78="sre.c#hrvizec50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="sre clasestatic int 141+lascsi/>-7gt; 78="sre clasestatirivers/scs8/scsi="sref">f->device_a class="line81ND_DEVICE8ne" class="sref">phy-8gt; 78="sre.c#hrvizecs82lss=" 78="pppppf (!device_a class="linr5+code=imer89"> 78="sreef="+cot"r5+code=imer89gt;a8;
/**"l8ne" class="sref">phya"line" na8class="sref">phy-7gt;8a7361830" 678device_a class="line813D_DEVICE8i_" class="sref">phy-8gt;8-8gt;a7sND_DEVICE7i ||class="sref">phy87gt;device_a class=T_SYMBOL(phy-7gt8dev);
dev1457+code=i14">dev);
sas_phy7+pppppf (!" id="L730"  678devdev7;9ieallocs7ne" class="sreL730"  678devdev 667  8  7  84ref">device_a class="line81N=5+codL730"  678devs8s_phy8a7d7struct#">phy-7gt;dev134>138748me="L667"> 667<8i_transo_t8devdevphynegoot" id_ostkr_tcsrefLIST_HEADscsi_ss="sp78dev-7gt;devsas_phy7+pppppf (!" id="L730"  678de30" _LIST_HEADscsi_ss="sr>(ku1414888888888\+8ode=dev" 14=5+code=i14=ss8"sref85_phy7;9ieallocs7ne" class="sreL730"  678devdevdevdevdevice_a class="line81N=5+codL730"  678devdevphy-7gt85ne"func"sret+code=dev" 14=5+code=iL730"  678devdevnshcouagesta8ic in8 -7gt;devdevdev-7gt;devdevs8s_phy85UGOe" n, 1t+code=dev" 14=5+code=i1ef">phy-7gt;sas_phy7 4MBO>144r7si_> 78="sre clasestatic int 141+lascsi="s79" id="L679"" na678< clasestat" itede"lint888="sref">dev 789sa8_phy7 pppppf (!7i_ti_8ransp8rt_sas.c#L7617 id="75ref="+code=dev" 1468+code=i1=ET8P_TEMPLATe8ss="line" name+ETUP_TEMPL8Te14h86i_ss="sp14=ate_gr class="lin="sref">dev1457+code=i14">dev);
phy-7gt;dev
phy-8gt;dev 789devdev1457+code=i14">dev);
86UGOe" n, 1t+code=dev" 14=5+code=i18tedevsas_phy764MBO>144r7ne" class=8tedevsa8t88888888888888888888\+co8e=dev86sref">sas_phy7+pppppf (!" id="8tedevdevdev-7gt;devs8s_phy87IRUGOe" n, 1t+code=dev" 14=5="sre clasestatic int 141+lascsi" class="line" nam7transs="+c7de_tclassn" itede"lint888="sref">dev 789a7sND_DEVICE7i ||class="sref">phy8ss="sref">8as_phy7;/scsi/.sc7ne"8class87=parent" classoport_sas.c#hr="sref">dev1457+code=i14">dev);
dev 78ready_led_meaning"sp78 78ready_led_meaningsrefLIST_HEADscsi_ss="sp78dev 78I_T_nexus_loss_timeou="sp78 78I_T_nexus_loss_timeou=srefLIST_HEADscsi_ss="sp78sa8RONLY14h" trs="sref">dev<8iel&g87sref">sas_phy7+pppppf (!" id=""L730" 678dev 78iniot" orhre.ponse_timeou="sp78 78iniot" orhre.ponse_timeou=srefLIST_HEADscsi_ss="sp78dev 78tlr_supremome+ETUP_TEMPLATe_r89"> 78tlr_supremomesrefLIST_HEADscsi_ss="sp78s8s_phy7;9ieallocs7ne" class="sre"L730" 678dev 78tlr_enablee+ETUP_TEMPLATe_r89"> 78tlr_enableesrefLIST_HEADscsi_ss="sp787;14"> >1477csi8class88span>
phy-8gt;-7gt; 78="srent" n" itede"lint888="sref">dev 789dev1457+code=i14">dev);
dev8ode=i14=ss="sref">sas_phy8/a>7;88=parent" classoport_sas.c#hr=5+codgt;devsa8>sas_phy7; namer89"7e8  cla88sref">sas_phy7+pppppf (!" id=""t;devs89_phy7;9ieallocs7ne" class="sre"t;f->levessrefLIST_HEADscsi_ss="sp78
phy-8gt;dev 789     7  8et79ref="+code=dev" 146"58ode=i89ine"fiel&"sret88888888888888888888888888888888888888>phy-78t; 78="sre.cr class="line"kzalloc14h" vizeof v" 145"+code=i1aBUTe14h" 8>phy-7gt;8templat"ef="+*((dev);
ph8-8gt;phy-7gt;(p8y89="sref">phy-7gt;phy->f->phyphy->7apppppf (!7"> tclass>140750meclass="sref"fcom7em>134>138748me="L667"> 667<94f="driver9internaau14143ref="ve9sinte9naaef=void>device_a class="linrelease_t;( 78="sre.ce=dev" 1428+code=i14sref">phy->9-9gt;phy-7gt;phy 78="sre.ceIST_HEADscsi_ss="sp78phy-9gt; 7890t;a7sND_DEVICE7i ||class="sref">phy9ppf (!device_a class="line9E5D_D9VICE8 i="s)ass="sref">phyDEVICE8i_" class="srunvice_a class="line813D_DEVICE8i_" class="srunvice_a ce" nai1igr class="line"830" _LIST_HEADscsi_ss="sev 78="sre.c#href="+cot" id="L730" .c#href="+0h50amer89"> 78="sreecgr class="line"ac0h50amer89"> 78="srematchgr cla9"sref">dev9ce_a class="line8E6D_DEVI9E8 " 9class="sref">phy-8gt; 78="sreecgr class="line"9e clasesta9ic int 141ode=pp9ppppp9f (!device_a class="line8E7D_DEVICE8 /eunvice_a class="line813D_DEVICE8i_" class="srunvice_a ce" nai1igr class="line"830" _LIST_HEADscsi_ss="sev 789<290>.c#9rmatchgr class="line"250>.c#h"line8E7D_DEVICE8 /eunvice_a class="line813D_DEVICE8i_" class="srunvice_a ce" nai1igr class="line"830" _LIST_HEADscsi_ss="sev 78="sri_ss="sp78 78="sri_ss=ADscLIST_HEADscsi_ss="sp78f-&9t;a8d9D_DEVICE8 } elses"line8E7D_DEVICE8 /eunvice_a class="line813D_DEVICE8i_" class="srunvice_a ce" nai1igr class="line"830" _LIST_HEADscsi_ss="sev *91aaef=")f+trs="sref">dev148GF9tatic int 9a catic>141ode=pppppppppf9(!device_a class="line81Nkfre=" templat"_SYMBkfre=e" name+ETUP_TEMPLAT/a>-7gt; 78="srematchgr class="9ine"m9tch0h5/Sc141ode=pppppppppf (!devicST_HEADscsi_ss="sp78dev9code=dev" 14=5+code=i14=s9="sre9">sas_d ctica class="line81N_8iniotion templat"_S_8inioef">dnstemplat"ef="+*trsYMBOt is removiniotion templat"_SYMBOt is removinioe" navoide=dev" 1428+code=i14sref">phy->141ode=pppppppppf (!<9 "sre9">devif="driv6#37;dalass="stemplat"gr class="line" 6#9agestatic 9nt  98="srent" ine" name+code=9types9sicea8d9D_DEVICE8 } elseserror"sp78143ref="c9annea30" l> 70)Dphy-> 78=parent" class9port_923code=dev" 1468+code=gotoclass="line"fielou="sp78ort_14ers9escaner89"> f">dev0h50amer898"> 678 )
d9vice_925pan>
phy->sref">dev97     72ref="+code=de9" 14892>sas_phy8m;
 * A8ne" error"sp78 int phy-7gt;9a72re92>device_a clai="sDEVICE8 } elseserror"sp78phy->phy-7gt;vef="_gr 68+code=gotoclass="line"fielou=runvice_a c_30"tion templat"_Sou=runvice_a c_30"srefIST_HEADscsi_ss="sp78dev9/Sc 78="9rent"93icea8d9D_i="sDEVICE8 } elseserror"sp78phy->7     729ef="+code=dev" 14r7+code=914all93span>
f->device_a class="line81Nerror"sp78 78ers.c#href="+cot" id="L7r89"> 78ers.cc#hreIST_HEADscsi_ss="sp78phy-7gt;9a7361930" 678phy->9-935pan>
dev9lclass="sref">phy-7gt9phy-> 7tion templat"_Sou=runvice_a c_r89"> 7srefIST_HEADscsi_ss="sp78dev);
(ks9gestatic int dev);
 7tion templat"_Sou=runvice_a c_r89"> 7sref:57+code=i14">dev);
 667  9  7  94ref">device_a class="line81NDEVICE8i_" 78 78ers.c#href="+cot" id="L7r89"> 78ers.cc#hreIST_HEADscsi_ss="sp78s9s_phy9a7dlass="line"fielou=runvice_a c_r30"tion templat"_Sou=runvice_a c_r30"sref:57+code=i14">dev);
dev);
dev9ranscsi_trancouagestatic 9nt dev);
sas_phy7+pppppf (!DEVICE8i_" 78dev);
7;9ieallocs7ne" clasDEVICE8i_" 787     729gestatic int dev);
device_ai1igr cmplat"ef="+*trserror"sp78phy-7gt95ne"fu class="line"kzalloc14h" vizeof v" 145"+code=i9d0h50amer89+(ass="sref">nshcouagesta9ic in95e=i14} class="line"kzalloc14h" vizeof v" 145"+code=i9dgt;devs9s_phy95>sas_d cticavoid>device_a class=_7r5iotion templat"_S_8r5iome+_Ilass="line"fielYMBOt is removr5iotion templat"_SYMBOt is removr5ioe" navoide=dev" 1428+code=i14sref">phy->devif="driv6#37;dalass="stemplat"gr class="line" 6#9="sref">sa9_phy7 pppppf (!7i_ti_9ransp95sref">sas_phy7+pppppf (!DEVICE8i_" 78dev
device_a class="line81NDEVICE8i_" 78 78ers.c#href="+cot" id="L7r89"> 78ers.cc#hreIST_HEADscsi_ss="sp78dev96UGOe" class="line"83MODULE_AUTHOR#href="+cot" idMODULE_AUTHORe" nama>7apppppf (string">"Chre_aoph Hellwig"140750meIST_HEADscsi_ss="sp78sas_ class="line"83MODULE_DESCRI_TEMP#href="+cot" idMODULE_DESCRI_TEMPe" nama>7apppppf (string">"="L7T is remo Attributes"140750meIST_HEADscsi_ss="sp78sa9t88888888888888888888\+co9e=dev96sref" class="line"83MODULE_LICENScod"s79" id="L67MODULE_LICENSce" nama>7apppppf (string">"GPL"140750meIST_HEADscsi_ss="sp78devdevdev


The original LXR software by the T_HEADscshttp://sourceforge.net/projects/lxcl>LXR !7">unio"sref, this r5+eri> tcal s="sion by T_HEADscsmailto:lxc@">dux.no">lxc@">dux.nosref.
lxc.">dux.no kindly 679"ed by T_HEADscshttp://www.redpill-">dpro.no">Redpill L>dpro ASsref, provide= of L>dux !7nsulting cod o+ercti7ns ser"r cs since 1995.