Lines Matching refs:dev
353 * @dev: aac driver data
358 int aac_get_config_status(struct aac_dev *dev, int commit_flag)
363 if (!(fibptr = aac_fib_alloc(dev)))
446 * @dev: aac driver data
450 int aac_get_containers(struct aac_dev *dev)
460 if (!(fibptr = aac_fib_alloc(dev)))
477 if (fibptr->dev->supplement_adapter_info.supported_options2 &
490 if (dev->fsa_dev == NULL ||
491 dev->maximum_num_containers != maximum_num_containers) {
493 fsa_dev_ptr = dev->fsa_dev;
495 dev->fsa_dev = kcalloc(maximum_num_containers,
502 if (!dev->fsa_dev)
505 dev->maximum_num_containers = maximum_num_containers;
507 for (index = 0; index < dev->maximum_num_containers; index++) {
508 dev->fsa_dev[index].devname[0] = '\0';
509 dev->fsa_dev[index].valid = 0;
511 status = aac_probe_container(dev, index);
585 struct aac_dev * dev;
587 dev = (struct aac_dev *)scsicmd->device->host->hostdata;
591 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
646 fsa_dev_ptr = fibptr->dev->fsa_dev;
653 fibptr->dev->supplement_adapter_info.supported_options2;
701 if (!aac_supports_2T(fibptr->dev)) {
718 if (fibptr->dev->supplement_adapter_info.supported_options2 &
758 if (fibptr->dev->supplement_adapter_info.supported_options2 &
819 int aac_probe_container(struct aac_dev *dev, int cid)
835 scsidev->host = dev->scsi_host_ptr;
910 static void setinqstr(struct aac_dev *dev, void *data, int tindex)
915 sup_adap_info = &dev->supplement_adapter_info;
951 struct aac_driver_ident *mp = aac_get_driver_ident(dev->cardtype);
973 struct aac_dev *dev, struct scsi_cmnd *scsicmd)
982 for (container = 0; container < dev->maximum_num_containers;
987 dev->fsa_dev[container].identifier,
1011 struct aac_dev *dev;
1015 dev = (struct aac_dev *)scsicmd->device->host->hostdata;
1032 if (dev->sa_firmware)
1087 if (dev->sa_firmware) {
1089 dev, scsicmd);
1123 struct aac_dev * dev;
1125 dev = (struct aac_dev *)scsicmd->device->host->hostdata;
1127 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
1167 static int setinqserial(struct aac_dev *dev, void *data, int cid)
1173 le32_to_cpu(dev->adapter_info.serial[0]), cid);
1203 static int aac_bounds_32(struct aac_dev * dev, struct scsi_cmnd * cmd, u64 lba)
1209 set_sense(&dev->fsa_dev[cid].sense_data,
1212 memcpy(cmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
1213 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
1221 static int aac_bounds_64(struct aac_dev * dev, struct scsi_cmnd * cmd, u64 lba)
1230 struct aac_dev *dev = fib->dev;
1235 if ((dev->comm_interface == AAC_COMM_MESSAGE_TYPE2 ||
1236 dev->comm_interface == AAC_COMM_MESSAGE_TYPE3) &&
1237 !dev->sync_mode) {
1244 dev->fsa_dev[scmd_id(cmd)].block_size);
1248 dev->scsi_host_ptr->sg_tablesize);
1260 dev->fsa_dev[scmd_id(cmd)].block_size);
1273 BUG_ON(fibsize > (fib->dev->max_fib_size - sizeof(struct aac_fibhdr)));
1307 BUG_ON (fibsize > (fib->dev->max_fib_size -
1325 struct aac_dev *dev = fib->dev;
1334 dev->fsa_dev[scmd_id(cmd)].block_size);
1342 BUG_ON (fibsize > (fib->dev->max_fib_size -
1358 struct aac_dev *dev = fib->dev;
1363 if ((dev->comm_interface == AAC_COMM_MESSAGE_TYPE2 ||
1364 dev->comm_interface == AAC_COMM_MESSAGE_TYPE3) &&
1365 !dev->sync_mode) {
1372 dev->fsa_dev[scmd_id(cmd)].block_size);
1375 (((aac_cache & 5) != 5) || !fib->dev->cache_protected)) ?
1379 dev->scsi_host_ptr->sg_tablesize);
1391 dev->fsa_dev[scmd_id(cmd)].block_size);
1394 (((aac_cache & 5) != 5) || !fib->dev->cache_protected)) ?
1407 BUG_ON(fibsize > (fib->dev->max_fib_size - sizeof(struct aac_fibhdr)));
1441 BUG_ON (fibsize > (fib->dev->max_fib_size -
1459 struct aac_dev *dev = fib->dev;
1468 dev->fsa_dev[scmd_id(cmd)].block_size);
1478 BUG_ON (fibsize > (fib->dev->max_fib_size -
1497 struct aac_dev *dev = fib->dev;
1524 timeout = (dev->sa_firmware ? AAC_SA_TIMEOUT : AAC_ARC_TIMEOUT);
1535 struct aac_dev *dev;
1539 dev = (struct aac_dev *)cmd->device->host->hostdata;
1560 hbacmd->it_nexus = dev->hba_map[bus][target].rmw_nexus;
1598 BUG_ON (fibsize > (fib->dev->max_fib_size -
1629 BUG_ON (fibsize > (fib->dev->max_fib_size -
1641 if ((sizeof(dma_addr_t) > 4) && fib->dev->needs_dac &&
1642 (fib->dev->adapter_info.options & AAC_OPT_SGMAP_HOST64))
1650 struct aac_dev *dev;
1653 dev = (struct aac_dev *)cmd->device->host->hostdata;
1656 dev->scsi_host_ptr->sg_tablesize, (u64)fib->hw_sgl_pa);
1671 static int aac_send_safw_bmic_cmd(struct aac_dev *dev,
1684 if (!dev->sa_firmware)
1688 fibptr = aac_fib_alloc(dev);
1700 addr = dma_map_single(&dev->pdev->dev, xfer_buf, xfer_len,
1702 if (dma_mapping_error(&dev->pdev->dev, addr)) {
1711 dev->supplement_adapter_info.virt_device_bus);
1713 dev->supplement_adapter_info.virt_device_target);
1750 dma_unmap_single(&dev->pdev->dev, addr, xfer_len, DMA_BIDIRECTIONAL);
1757 static void aac_set_safw_target_qd(struct aac_dev *dev, int bus, int target)
1762 if (dev->hba_map[bus][target].devtype != AAC_DEVTYPE_NATIVE_RAW)
1765 identify_resp = dev->hba_map[bus][target].safw_identify_resp;
1767 dev->hba_map[bus][target].qd_limit = 32;
1773 dev->hba_map[bus][target].qd_limit = 32;
1775 dev->hba_map[bus][target].qd_limit =
1779 static int aac_issue_safw_bmic_identify(struct aac_dev *dev,
1801 rcode = aac_send_safw_bmic_cmd(dev, &srbu, identify_reply, datasize);
1814 static inline void aac_free_safw_ciss_luns(struct aac_dev *dev)
1816 kfree(dev->safw_phys_luns);
1817 dev->safw_phys_luns = NULL;
1822 * @dev: aac_dev structure
1827 static int aac_get_safw_ciss_luns(struct aac_dev *dev)
1850 rcode = aac_send_safw_bmic_cmd(dev, &srbu, phys_luns, datasize);
1859 dev->safw_phys_luns = phys_luns;
1868 static inline u32 aac_get_safw_phys_lun_count(struct aac_dev *dev)
1870 return get_unaligned_be32(&dev->safw_phys_luns->list_length[0])/24;
1873 static inline u32 aac_get_safw_phys_bus(struct aac_dev *dev, int lun)
1875 return dev->safw_phys_luns->lun[lun].level2[1] & 0x3f;
1878 static inline u32 aac_get_safw_phys_target(struct aac_dev *dev, int lun)
1880 return dev->safw_phys_luns->lun[lun].level2[0];
1883 static inline u32 aac_get_safw_phys_expose_flag(struct aac_dev *dev, int lun)
1885 return dev->safw_phys_luns->lun[lun].bus >> 6;
1888 static inline u32 aac_get_safw_phys_attribs(struct aac_dev *dev, int lun)
1890 return dev->safw_phys_luns->lun[lun].node_ident[9];
1893 static inline u32 aac_get_safw_phys_nexus(struct aac_dev *dev, int lun)
1895 return *((u32 *)&dev->safw_phys_luns->lun[lun].node_ident[12]);
1898 static inline void aac_free_safw_identify_resp(struct aac_dev *dev,
1901 kfree(dev->hba_map[bus][target].safw_identify_resp);
1902 dev->hba_map[bus][target].safw_identify_resp = NULL;
1905 static inline void aac_free_safw_all_identify_resp(struct aac_dev *dev,
1913 luns = aac_get_safw_phys_lun_count(dev);
1921 bus = aac_get_safw_phys_bus(dev, i);
1922 target = aac_get_safw_phys_target(dev, i);
1924 aac_free_safw_identify_resp(dev, bus, target);
1928 static int aac_get_safw_attr_all_targets(struct aac_dev *dev)
1937 lun_count = aac_get_safw_phys_lun_count(dev);
1941 bus = aac_get_safw_phys_bus(dev, i);
1942 target = aac_get_safw_phys_target(dev, i);
1944 rcode = aac_issue_safw_bmic_identify(dev,
1950 dev->hba_map[bus][target].safw_identify_resp = identify_resp;
1956 aac_free_safw_all_identify_resp(dev, i);
1962 * @dev: aac_dev structure
1966 static void aac_set_safw_attr_all_targets(struct aac_dev *dev)
1973 lun_count = aac_get_safw_phys_lun_count(dev);
1975 dev->scan_counter++;
1979 bus = aac_get_safw_phys_bus(dev, i);
1980 target = aac_get_safw_phys_target(dev, i);
1981 expose_flag = aac_get_safw_phys_expose_flag(dev, i);
1982 attribs = aac_get_safw_phys_attribs(dev, i);
1983 nexus = aac_get_safw_phys_nexus(dev, i);
1989 dev->hba_map[bus][target].devtype =
1995 dev->hba_map[bus][target].devtype =
1997 dev->hba_map[bus][target].rmw_nexus =
2000 dev->hba_map[bus][target].devtype =
2003 dev->hba_map[bus][target].scan_counter = dev->scan_counter;
2005 aac_set_safw_target_qd(dev, bus, target);
2009 static int aac_setup_safw_targets(struct aac_dev *dev)
2013 rcode = aac_get_containers(dev);
2017 rcode = aac_get_safw_ciss_luns(dev);
2021 rcode = aac_get_safw_attr_all_targets(dev);
2025 aac_set_safw_attr_all_targets(dev);
2027 aac_free_safw_all_identify_resp(dev, -1);
2029 aac_free_safw_ciss_luns(dev);
2034 int aac_setup_safw_adapter(struct aac_dev *dev)
2036 return aac_setup_safw_targets(dev);
2039 int aac_get_adapter_info(struct aac_dev* dev)
2048 if (!(fibptr = aac_fib_alloc(dev)))
2072 memcpy(&dev->adapter_info, info, sizeof(*info));
2074 dev->supplement_adapter_info.virt_device_bus = 0xffff;
2075 if (dev->adapter_info.options & AAC_OPT_SUPPLEMENT_ADAPTER_INFO) {
2093 memcpy(&dev->supplement_adapter_info, sinfo, sizeof(*sinfo));
2095 fibptr = aac_fib_alloc(dev);
2105 dev->hba_map[bus][target].devtype = 0;
2106 dev->hba_map[bus][target].qd_limit = 0;
2135 dev->maximum_num_physicals = 16;
2137 dev->maximum_num_physicals = le32_to_cpu(bus_info->TargetsPerBus);
2138 dev->maximum_num_channels = le32_to_cpu(bus_info->BusCount);
2141 if (!dev->in_reset) {
2143 tmp = le32_to_cpu(dev->adapter_info.kernelrev);
2145 dev->name,
2146 dev->id,
2150 le32_to_cpu(dev->adapter_info.kernelbuild),
2151 (int)sizeof(dev->supplement_adapter_info.build_date),
2152 dev->supplement_adapter_info.build_date);
2153 tmp = le32_to_cpu(dev->adapter_info.monitorrev);
2155 dev->name, dev->id,
2157 le32_to_cpu(dev->adapter_info.monitorbuild));
2158 tmp = le32_to_cpu(dev->adapter_info.biosrev);
2160 dev->name, dev->id,
2162 le32_to_cpu(dev->adapter_info.biosbuild));
2165 shost_to_class(dev->scsi_host_ptr), buffer))
2167 dev->name, dev->id, buffer);
2168 if (dev->supplement_adapter_info.vpd_info.tsid[0]) {
2170 dev->name, dev->id,
2171 (int)sizeof(dev->supplement_adapter_info
2173 dev->supplement_adapter_info.vpd_info.tsid);
2176 (dev->supplement_adapter_info.supported_options2 &
2179 dev->name, dev->id);
2183 dev->cache_protected = 0;
2184 dev->jbod = ((dev->supplement_adapter_info.feature_bits &
2186 dev->nondasd_support = 0;
2187 dev->raid_scsi_mode = 0;
2188 if(dev->adapter_info.options & AAC_OPT_NONDASD)
2189 dev->nondasd_support = 1;
2197 * changed to support the new dev->raid_scsi_mode flag instead of
2198 * leaching off of the dev->nondasd_support flag. Also in linit.c the
2202 if ((dev->adapter_info.options & AAC_OPT_SCSI_MANAGED) &&
2203 (dev->adapter_info.options & AAC_OPT_RAID_SCSI_MODE)) {
2204 dev->nondasd_support = 1;
2205 dev->raid_scsi_mode = 1;
2207 if (dev->raid_scsi_mode != 0)
2209 dev->name, dev->id);
2212 dev->nondasd_support = (nondasd!=0);
2213 if (dev->nondasd_support && !dev->in_reset)
2214 printk(KERN_INFO "%s%d: Non-DASD support enabled.\n",dev->name, dev->id);
2216 if (dma_get_required_mask(&dev->pdev->dev) > DMA_BIT_MASK(32))
2217 dev->needs_dac = 1;
2218 dev->dac_support = 0;
2219 if ((sizeof(dma_addr_t) > 4) && dev->needs_dac &&
2220 (dev->adapter_info.options & AAC_OPT_SGMAP_HOST64)) {
2221 if (!dev->in_reset)
2223 dev->name, dev->id);
2224 dev->dac_support = 1;
2228 dev->dac_support = (dacmode!=0);
2232 if (dev->dac_support && (aac_get_driver_ident(dev->cardtype)->quirks
2234 dev->nondasd_support = 0;
2235 dev->jbod = 0;
2239 if (dev->dac_support) {
2240 if (!dma_set_mask(&dev->pdev->dev, DMA_BIT_MASK(64))) {
2241 if (!dev->in_reset)
2242 dev_info(&dev->pdev->dev, "64 Bit DAC enabled\n");
2243 } else if (!dma_set_mask(&dev->pdev->dev, DMA_BIT_MASK(32))) {
2244 dev_info(&dev->pdev->dev, "DMA mask set failed, 64 Bit DAC disabled\n");
2245 dev->dac_support = 0;
2247 dev_info(&dev->pdev->dev, "No suitable DMA available\n");
2255 dev->a_ops.adapter_scsi = (dev->dac_support)
2256 ? ((aac_get_driver_ident(dev->cardtype)->quirks & AAC_QUIRK_SCSI_32)
2260 if (dev->raw_io_interface) {
2261 dev->a_ops.adapter_bounds = (dev->raw_io_64)
2264 dev->a_ops.adapter_read = aac_read_raw_io;
2265 dev->a_ops.adapter_write = aac_write_raw_io;
2267 dev->a_ops.adapter_bounds = aac_bounds_32;
2268 dev->scsi_host_ptr->sg_tablesize = (dev->max_fib_size -
2272 if (dev->dac_support) {
2273 dev->a_ops.adapter_read = aac_read_block64;
2274 dev->a_ops.adapter_write = aac_write_block64;
2278 dev->scsi_host_ptr->sg_tablesize =
2279 (dev->max_fib_size -
2285 dev->a_ops.adapter_read = aac_read_block;
2286 dev->a_ops.adapter_write = aac_write_block;
2288 dev->scsi_host_ptr->max_sectors = AAC_MAX_32BIT_SGBCOUNT;
2289 if (!(dev->adapter_info.options & AAC_OPT_NEW_COMM)) {
2299 dev->scsi_host_ptr->max_sectors =
2300 (dev->scsi_host_ptr->sg_tablesize * 8) + 112;
2303 if (!dev->sync_mode && dev->sa_firmware &&
2304 dev->scsi_host_ptr->sg_tablesize > HBA_MAX_SG_SEPARATE)
2305 dev->scsi_host_ptr->sg_tablesize = dev->sg_tablesize =
2320 struct aac_dev *dev;
2330 dev = fibptr->dev;
2376 dev->fsa_dev[cid].sense_data.sense_key = NO_SENSE;
2380 set_sense(&dev->fsa_dev[cid].sense_data, NOT_READY,
2382 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
2383 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
2388 set_sense(&dev->fsa_dev[cid].sense_data, MEDIUM_ERROR,
2390 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
2391 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
2400 set_sense(&dev->fsa_dev[cid].sense_data,
2403 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
2404 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
2418 struct aac_dev *dev;
2422 dev = (struct aac_dev *)scsicmd->device->host->hostdata;
2471 if ((lba + count) > (dev->fsa_dev[scmd_id(scsicmd)].size)) {
2475 set_sense(&dev->fsa_dev[cid].sense_data,
2478 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
2479 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
2487 if (aac_adapter_bounds(dev,scsicmd,lba))
2492 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
2519 struct aac_dev *dev;
2523 dev = (struct aac_dev *)scsicmd->device->host->hostdata;
2562 if ((lba + count) > (dev->fsa_dev[scmd_id(scsicmd)].size)) {
2566 set_sense(&dev->fsa_dev[cid].sense_data,
2569 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
2570 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
2578 if (aac_adapter_bounds(dev,scsicmd,lba))
2583 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
2623 struct aac_dev *dev = fibptr->dev;
2629 set_sense(&dev->fsa_dev[cid].sense_data,
2632 memcpy(cmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
2633 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
2779 struct aac_dev *dev = (struct aac_dev *)host->hostdata;
2780 struct fsa_dev_info *fsa_dev_ptr = dev->fsa_dev;
2792 if((cid >= dev->maximum_num_containers) ||
2807 if (!(dev->raw_io_interface) ||
2808 !(dev->raw_io_64) ||
2815 if (dev->in_reset)
2827 dev->hba_map[bus][cid].devtype
2829 if (dev->in_reset)
2832 } else if (dev->nondasd_support || expose_physicals ||
2833 dev->jbod) {
2834 if (dev->in_reset)
2851 set_sense(&dev->fsa_dev[cid].sense_data,
2854 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
2855 min_t(size_t, sizeof(dev->fsa_dev[cid].sense_data),
2865 if (dev->in_reset)
2873 if (dev->in_reset)
2878 if (((aac_cache & 6) == 6) && dev->cache_protected) {
2911 arr[3] = setinqserial(dev, &arr[4],
2923 sno[3] = setinqserial(dev, &sno[4],
2932 set_sense(&dev->fsa_dev[cid].sense_data,
2936 &dev->fsa_dev[cid].sense_data,
2938 sizeof(dev->fsa_dev[cid].sense_data),
2953 setinqstr(dev, (void *) (inq_data.inqd_vid), ARRAY_SIZE(container_types));
2960 if (dev->in_reset)
2962 setinqstr(dev, (void *) (inq_data.inqd_vid), fsa_dev_ptr[cid].type);
2968 if (!(dev->raw_io_interface) ||
2969 !(dev->raw_io_64) ||
3059 if (dev->raw_io_interface && ((aac_cache & 5) != 1))
3138 if (dev->raw_io_interface && ((aac_cache & 5) != 1))
3193 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
3195 memset(&dev->fsa_dev[cid].sense_data, 0,
3215 set_sense(&dev->fsa_dev[cid].sense_data,
3219 &dev->fsa_dev[cid].sense_data,
3221 sizeof(dev->fsa_dev[cid].sense_data),
3244 set_sense(&dev->fsa_dev[cid].sense_data,
3247 memcpy(scsicmd->sense_buffer, &dev->fsa_dev[cid].sense_data,
3249 sizeof(dev->fsa_dev[cid].sense_data),
3259 static int query_disk(struct aac_dev *dev, void __user *arg)
3264 fsa_dev_ptr = dev->fsa_dev;
3270 if (qd.id < 0 || qd.id >= dev->maximum_num_containers)
3274 if (qd.cnum < 0 || qd.cnum >= dev->maximum_num_containers)
3276 qd.instance = dev->scsi_host_ptr->host_no;
3300 static int force_delete_disk(struct aac_dev *dev, void __user *arg)
3305 fsa_dev_ptr = dev->fsa_dev;
3312 if (dd.cnum >= dev->maximum_num_containers)
3325 static int delete_disk(struct aac_dev *dev, void __user *arg)
3330 fsa_dev_ptr = dev->fsa_dev;
3337 if (dd.cnum >= dev->maximum_num_containers)
3354 int aac_dev_ioctl(struct aac_dev *dev, unsigned int cmd, void __user *arg)
3358 return query_disk(dev, arg);
3360 return delete_disk(dev, arg);
3362 return force_delete_disk(dev, arg);
3364 return aac_get_containers(dev);
3567 static void hba_resp_task_complete(struct aac_dev *dev,
3605 static void hba_resp_task_failure(struct aac_dev *dev,
3616 if (dev->hba_map[bus][cid].devtype == AAC_DEVTYPE_NATIVE_RAW) {
3617 dev->hba_map[bus][cid].devtype = AAC_DEVTYPE_ARC_RAW;
3618 dev->hba_map[bus][cid].rmw_nexus = 0xffffffff;
3653 struct aac_dev *dev;
3665 dev = fibptr->dev;
3678 hba_resp_task_complete(dev, scsicmd, err);
3681 hba_resp_task_failure(dev, scsicmd, err);
3717 struct aac_dev* dev;
3720 dev = (struct aac_dev *)scsicmd->device->host->hostdata;
3721 if (scmd_id(scsicmd) >= dev->maximum_num_physicals ||
3731 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
3758 struct aac_dev *dev;
3761 dev = shost_priv(scsicmd->device->host);
3762 if (scmd_id(scsicmd) >= dev->maximum_num_physicals ||
3772 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);