Lines Matching refs:device

107 	struct dasd_device *device;  member
119 struct dasd_device *device; member
213 struct dasd_device *device) in check_XRC() argument
218 private = (struct dasd_eckd_private *) device->private; in check_XRC()
238 unsigned int totrk, int cmd, struct dasd_device *device) in define_extent() argument
245 private = (struct dasd_eckd_private *) device->private; in define_extent()
272 rc = check_XRC (ccw, data, device); in define_extent()
277 rc = check_XRC (ccw, data, device); in define_extent()
285 rc = check_XRC (ccw, data, device); in define_extent()
288 dev_err(&device->cdev->dev, in define_extent()
323 struct dasd_device *device) in check_XRC_on_prefix() argument
328 private = (struct dasd_eckd_private *) device->private; in check_XRC_on_prefix()
346 struct dasd_device *device, unsigned int reclen, in fill_LRE_data() argument
353 private = (struct dasd_eckd_private *) device->private; in fill_LRE_data()
466 DBF_DEV_EVENT(DBF_ERR, device, in fill_LRE_data()
632 struct dasd_device * device, int reclen) in locate_record() argument
638 private = (struct dasd_eckd_private *) device->private; in locate_record()
640 DBF_DEV_EVENT(DBF_INFO, device, in locate_record()
722 DBF_DEV_EVENT(DBF_ERR, device, "unknown locate record " in locate_record()
801 static int dasd_eckd_generate_uid(struct dasd_device *device) in dasd_eckd_generate_uid() argument
806 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_generate_uid()
811 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_generate_uid()
813 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_generate_uid()
817 static int dasd_eckd_get_uid(struct dasd_device *device, struct dasd_uid *uid) in dasd_eckd_get_uid() argument
822 if (device->private) { in dasd_eckd_get_uid()
823 private = (struct dasd_eckd_private *)device->private; in dasd_eckd_get_uid()
824 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_get_uid()
826 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_get_uid()
836 static int dasd_eckd_compare_path_uid(struct dasd_device *device, in dasd_eckd_compare_path_uid() argument
842 dasd_eckd_get_uid(device, &device_uid); in dasd_eckd_compare_path_uid()
847 static void dasd_eckd_fill_rcd_cqr(struct dasd_device *device, in dasd_eckd_fill_rcd_cqr() argument
869 cqr->startdev = device; in dasd_eckd_fill_rcd_cqr()
870 cqr->memdev = device; in dasd_eckd_fill_rcd_cqr()
904 static int dasd_eckd_read_conf_immediately(struct dasd_device *device, in dasd_eckd_read_conf_immediately() argument
915 ciw = ccw_device_get_ciw(device->cdev, CIW_TYPE_RCD); in dasd_eckd_read_conf_immediately()
919 dasd_eckd_fill_rcd_cqr(device, cqr, rcd_buffer, lpm); in dasd_eckd_read_conf_immediately()
928 static int dasd_eckd_read_conf_lpm(struct dasd_device *device, in dasd_eckd_read_conf_lpm() argument
941 ciw = ccw_device_get_ciw(device->cdev, CIW_TYPE_RCD); in dasd_eckd_read_conf_lpm()
953 device); in dasd_eckd_read_conf_lpm()
955 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_eckd_read_conf_lpm()
960 dasd_eckd_fill_rcd_cqr(device, cqr, rcd_buf, lpm); in dasd_eckd_read_conf_lpm()
1035 static void dasd_eckd_clear_conf_data(struct dasd_device *device) in dasd_eckd_clear_conf_data() argument
1040 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_clear_conf_data()
1050 static int dasd_eckd_read_conf(struct dasd_device *device) in dasd_eckd_read_conf() argument
1061 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_read_conf()
1062 path_data = &device->path_data; in dasd_eckd_read_conf()
1063 opm = ccw_device_get_path_mask(device->cdev); in dasd_eckd_read_conf()
1070 rc = dasd_eckd_read_conf_lpm(device, &conf_data, in dasd_eckd_read_conf()
1073 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, in dasd_eckd_read_conf()
1079 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", in dasd_eckd_read_conf()
1089 dasd_eckd_clear_conf_data(device); in dasd_eckd_read_conf()
1106 dasd_eckd_generate_uid(device); in dasd_eckd_read_conf()
1119 device, &path_private)) { in dasd_eckd_read_conf()
1150 dev_err(&device->cdev->dev, in dasd_eckd_read_conf()
1176 dasd_generic_path_operational(device); in dasd_eckd_read_conf()
1192 static int verify_fcx_max_data(struct dasd_device *device, __u8 lpm) in verify_fcx_max_data() argument
1198 private = (struct dasd_eckd_private *) device->private; in verify_fcx_max_data()
1200 mdc = ccw_device_get_mdc(device->cdev, lpm); in verify_fcx_max_data()
1202 dev_warn(&device->cdev->dev, in verify_fcx_max_data()
1210 dev_warn(&device->cdev->dev, in verify_fcx_max_data()
1221 static int rebuild_device_uid(struct dasd_device *device, in rebuild_device_uid() argument
1230 private = (struct dasd_eckd_private *) device->private; in rebuild_device_uid()
1231 path_data = &device->path_data; in rebuild_device_uid()
1232 opm = device->path_data.opm; in rebuild_device_uid()
1240 rc = dasd_eckd_read_conf_immediately(device, &data->cqr, in rebuild_device_uid()
1247 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, in rebuild_device_uid()
1261 rc = dasd_eckd_generate_uid(device); in rebuild_device_uid()
1269 struct dasd_device *device; in do_path_verification_work() local
1279 device = data->device; in do_path_verification_work()
1282 if (test_bit(DASD_FLAG_SUSPENDED, &device->flags)) { in do_path_verification_work()
1287 if (test_and_set_bit(DASD_FLAG_PATH_VERIFY, &device->flags)) { in do_path_verification_work()
1304 rc = dasd_eckd_read_conf_immediately(device, &data->cqr, in do_path_verification_work()
1320 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", in do_path_verification_work()
1325 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", in do_path_verification_work()
1330 dev_warn(&device->cdev->dev, in do_path_verification_work()
1335 if (verify_fcx_max_data(device, lpm)) { in do_path_verification_work()
1364 if (device->path_data.opm && in do_path_verification_work()
1365 dasd_eckd_compare_path_uid(device, &path_private)) { in do_path_verification_work()
1377 if (rebuild_device_uid(device, data) || in do_path_verification_work()
1379 device, &path_private)) { in do_path_verification_work()
1393 dev_err(&device->cdev->dev, in do_path_verification_work()
1413 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in do_path_verification_work()
1414 if (!device->path_data.opm && opm) { in do_path_verification_work()
1415 device->path_data.opm = opm; in do_path_verification_work()
1416 device->path_data.cablepm &= ~opm; in do_path_verification_work()
1417 device->path_data.cuirpm &= ~opm; in do_path_verification_work()
1418 device->path_data.hpfpm &= ~opm; in do_path_verification_work()
1419 dasd_generic_path_operational(device); in do_path_verification_work()
1421 device->path_data.opm |= opm; in do_path_verification_work()
1422 device->path_data.cablepm &= ~opm; in do_path_verification_work()
1423 device->path_data.cuirpm &= ~opm; in do_path_verification_work()
1424 device->path_data.hpfpm &= ~opm; in do_path_verification_work()
1426 device->path_data.npm |= npm; in do_path_verification_work()
1427 device->path_data.ppm |= ppm; in do_path_verification_work()
1428 device->path_data.tbvpm |= epm; in do_path_verification_work()
1429 device->path_data.cablepm |= cablepm; in do_path_verification_work()
1430 device->path_data.hpfpm |= hpfpm; in do_path_verification_work()
1431 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in do_path_verification_work()
1433 clear_bit(DASD_FLAG_PATH_VERIFY, &device->flags); in do_path_verification_work()
1434 dasd_put_device(device); in do_path_verification_work()
1441 static int dasd_eckd_verify_path(struct dasd_device *device, __u8 lpm) in dasd_eckd_verify_path() argument
1457 dasd_get_device(device); in dasd_eckd_verify_path()
1458 data->device = device; in dasd_eckd_verify_path()
1464 static int dasd_eckd_read_features(struct dasd_device *device) in dasd_eckd_read_features() argument
1473 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_read_features()
1478 device); in dasd_eckd_read_features()
1480 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", "Could not " in dasd_eckd_read_features()
1484 cqr->startdev = device; in dasd_eckd_read_features()
1485 cqr->memdev = device; in dasd_eckd_read_features()
1521 dev_warn(&device->cdev->dev, "Reading device feature codes" in dasd_eckd_read_features()
1531 static struct dasd_ccw_req *dasd_eckd_build_psf_ssc(struct dasd_device *device, in dasd_eckd_build_psf_ssc() argument
1540 device); in dasd_eckd_build_psf_ssc()
1543 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_eckd_build_psf_ssc()
1559 cqr->startdev = device; in dasd_eckd_build_psf_ssc()
1560 cqr->memdev = device; in dasd_eckd_build_psf_ssc()
1575 dasd_eckd_psf_ssc(struct dasd_device *device, int enable_pav, in dasd_eckd_psf_ssc() argument
1581 cqr = dasd_eckd_build_psf_ssc(device, enable_pav); in dasd_eckd_psf_ssc()
1605 static int dasd_eckd_validate_server(struct dasd_device *device, in dasd_eckd_validate_server() argument
1612 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_validate_server()
1620 rc = dasd_eckd_psf_ssc(device, enable_pav, flags); in dasd_eckd_validate_server()
1624 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "PSF-SSC for SSID %04x " in dasd_eckd_validate_server()
1634 struct dasd_device *device = container_of(work, struct dasd_device, in dasd_eckd_do_validate_server() local
1639 if (dasd_eckd_validate_server(device, flags) in dasd_eckd_do_validate_server()
1642 schedule_work(&device->kick_validate); in dasd_eckd_do_validate_server()
1646 dasd_put_device(device); in dasd_eckd_do_validate_server()
1649 static void dasd_eckd_kick_validate_server(struct dasd_device *device) in dasd_eckd_kick_validate_server() argument
1651 dasd_get_device(device); in dasd_eckd_kick_validate_server()
1653 if (test_bit(DASD_FLAG_OFFLINE, &device->flags) || in dasd_eckd_kick_validate_server()
1654 device->state < DASD_STATE_ONLINE) { in dasd_eckd_kick_validate_server()
1655 dasd_put_device(device); in dasd_eckd_kick_validate_server()
1659 if (!schedule_work(&device->kick_validate)) in dasd_eckd_kick_validate_server()
1660 dasd_put_device(device); in dasd_eckd_kick_validate_server()
1663 static u32 get_fcx_max_data(struct dasd_device *device) in get_fcx_max_data() argument
1672 private = (struct dasd_eckd_private *) device->private; in get_fcx_max_data()
1681 mdc = ccw_device_get_mdc(device->cdev, 0); in get_fcx_max_data()
1683 dev_warn(&device->cdev->dev, "Detecting the maximum supported" in get_fcx_max_data()
1695 dasd_eckd_check_characteristics(struct dasd_device *device) in dasd_eckd_check_characteristics() argument
1705 INIT_WORK(&device->kick_validate, dasd_eckd_do_validate_server); in dasd_eckd_check_characteristics()
1707 if (!ccw_device_is_pathgroup(device->cdev)) { in dasd_eckd_check_characteristics()
1708 dev_warn(&device->cdev->dev, in dasd_eckd_check_characteristics()
1712 if (!ccw_device_is_multipath(device->cdev)) { in dasd_eckd_check_characteristics()
1713 dev_info(&device->cdev->dev, in dasd_eckd_check_characteristics()
1716 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_check_characteristics()
1720 dev_warn(&device->cdev->dev, in dasd_eckd_check_characteristics()
1725 device->private = (void *) private; in dasd_eckd_check_characteristics()
1736 rc = dasd_eckd_read_conf(device); in dasd_eckd_check_characteristics()
1741 device->default_expires = DASD_EXPIRES; in dasd_eckd_check_characteristics()
1743 device->default_retries = DASD_RETRIES; in dasd_eckd_check_characteristics()
1752 device->default_expires = value; in dasd_eckd_check_characteristics()
1755 dasd_eckd_get_uid(device, &temp_uid); in dasd_eckd_check_characteristics()
1759 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", in dasd_eckd_check_characteristics()
1765 device->block = block; in dasd_eckd_check_characteristics()
1766 block->base = device; in dasd_eckd_check_characteristics()
1770 rc = dasd_alias_make_device_known_to_lcu(device); in dasd_eckd_check_characteristics()
1774 dasd_eckd_validate_server(device, 0); in dasd_eckd_check_characteristics()
1777 rc = dasd_eckd_read_conf(device); in dasd_eckd_check_characteristics()
1782 dasd_eckd_read_features(device); in dasd_eckd_check_characteristics()
1785 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC, in dasd_eckd_check_characteristics()
1788 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, in dasd_eckd_check_characteristics()
1793 if ((device->features & DASD_FEATURE_USERAW) && in dasd_eckd_check_characteristics()
1795 dev_err(&device->cdev->dev, "The storage server does not " in dasd_eckd_check_characteristics()
1808 private->fcx_max_data = get_fcx_max_data(device); in dasd_eckd_check_characteristics()
1810 readonly = dasd_device_is_ro(device); in dasd_eckd_check_characteristics()
1812 set_bit(DASD_FLAG_DEVICE_RO, &device->flags); in dasd_eckd_check_characteristics()
1814 dev_info(&device->cdev->dev, "New DASD %04X/%02X (CU %04X/%02X) " in dasd_eckd_check_characteristics()
1827 dasd_alias_disconnect_device_from_lcu(device); in dasd_eckd_check_characteristics()
1829 dasd_free_block(device->block); in dasd_eckd_check_characteristics()
1830 device->block = NULL; in dasd_eckd_check_characteristics()
1833 kfree(device->private); in dasd_eckd_check_characteristics()
1834 device->private = NULL; in dasd_eckd_check_characteristics()
1838 static void dasd_eckd_uncheck_device(struct dasd_device *device) in dasd_eckd_uncheck_device() argument
1843 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_uncheck_device()
1844 dasd_alias_disconnect_device_from_lcu(device); in dasd_eckd_uncheck_device()
1864 dasd_eckd_analysis_ccw(struct dasd_device *device) in dasd_eckd_analysis_ccw() argument
1874 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_analysis_ccw()
1878 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, cplength, datasize, device); in dasd_eckd_analysis_ccw()
1884 DASD_ECKD_CCW_READ_COUNT, device); in dasd_eckd_analysis_ccw()
1889 DASD_ECKD_CCW_READ_COUNT, device, 0); in dasd_eckd_analysis_ccw()
1905 DASD_ECKD_CCW_READ_COUNT, device, 0); in dasd_eckd_analysis_ccw()
1914 cqr->startdev = device; in dasd_eckd_analysis_ccw()
1915 cqr->memdev = device; in dasd_eckd_analysis_ccw()
1950 struct dasd_device *device; in dasd_eckd_analysis_callback() local
1952 device = init_cqr->startdev; in dasd_eckd_analysis_callback()
1953 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_analysis_callback()
1955 dasd_sfree_request(init_cqr, device); in dasd_eckd_analysis_callback()
1956 dasd_kick_device(device); in dasd_eckd_analysis_callback()
1980 struct dasd_device *device; in dasd_eckd_end_analysis() local
1987 device = block->base; in dasd_eckd_end_analysis()
1988 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_end_analysis()
1993 init_cqr = dasd_eckd_analysis_ccw(device); in dasd_eckd_end_analysis()
1996 dasd_sfree_request(init_cqr, device); in dasd_eckd_end_analysis()
1999 if (device->features & DASD_FEATURE_USERAW) { in dasd_eckd_end_analysis()
2007 dev_warn(&device->cdev->dev, "The DASD is not formatted\n"); in dasd_eckd_end_analysis()
2010 dev_err(&device->cdev->dev, in dasd_eckd_end_analysis()
2046 dev_warn(&device->cdev->dev, in dasd_eckd_end_analysis()
2056 dev_warn(&device->cdev->dev, in dasd_eckd_end_analysis()
2071 dev_info(&device->cdev->dev, in dasd_eckd_end_analysis()
2095 static int dasd_eckd_basic_to_ready(struct dasd_device *device) in dasd_eckd_basic_to_ready() argument
2097 return dasd_alias_add_device(device); in dasd_eckd_basic_to_ready()
2100 static int dasd_eckd_online_to_ready(struct dasd_device *device) in dasd_eckd_online_to_ready() argument
2102 cancel_work_sync(&device->reload_device); in dasd_eckd_online_to_ready()
2103 cancel_work_sync(&device->kick_validate); in dasd_eckd_online_to_ready()
2107 static int dasd_eckd_basic_to_known(struct dasd_device *device) in dasd_eckd_basic_to_known() argument
2109 return dasd_alias_remove_device(device); in dasd_eckd_basic_to_known()
2398 struct dasd_device *device; in dasd_eckd_format_device() local
2479 device = cqr->startdev; in dasd_eckd_format_device()
2480 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_format_device()
2484 dasd_sfree_request(cqr, device); in dasd_eckd_format_device()
2518 struct dasd_device *device = (struct dasd_device *) cqr->startdev; in dasd_eckd_erp_action() local
2519 struct ccw_device *cdev = device->cdev; in dasd_eckd_erp_action()
2540 static void dasd_eckd_check_for_device_change(struct dasd_device *device, in dasd_eckd_check_for_device_change() argument
2548 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_check_for_device_change()
2556 if (!device->block && private->lcu && in dasd_eckd_check_for_device_change()
2557 device->state == DASD_STATE_ONLINE && in dasd_eckd_check_for_device_change()
2558 !test_bit(DASD_FLAG_OFFLINE, &device->flags) && in dasd_eckd_check_for_device_change()
2559 !test_bit(DASD_FLAG_SUSPENDED, &device->flags)) { in dasd_eckd_check_for_device_change()
2566 dasd_alias_remove_device(device); in dasd_eckd_check_for_device_change()
2569 dasd_reload_device(device); in dasd_eckd_check_for_device_change()
2571 dasd_generic_handle_state_change(device); in dasd_eckd_check_for_device_change()
2582 dasd_alias_handle_summary_unit_check(device, irb); in dasd_eckd_check_for_device_change()
2589 dasd_3990_erp_handle_sim(device, sense); in dasd_eckd_check_for_device_change()
2596 if (device->block && (sense[27] & DASD_SENSE_BIT_0) && in dasd_eckd_check_for_device_change()
2599 test_bit(DASD_FLAG_IS_RESERVED, &device->flags)) { in dasd_eckd_check_for_device_change()
2600 if (device->features & DASD_FEATURE_FAILONSLCK) in dasd_eckd_check_for_device_change()
2601 set_bit(DASD_FLAG_LOCK_STOLEN, &device->flags); in dasd_eckd_check_for_device_change()
2602 clear_bit(DASD_FLAG_IS_RESERVED, &device->flags); in dasd_eckd_check_for_device_change()
2603 dev_err(&device->cdev->dev, in dasd_eckd_check_for_device_change()
3620 dasd_eckd_fill_info(struct dasd_device * device, in dasd_eckd_fill_info() argument
3625 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_fill_info()
3649 dasd_eckd_release(struct dasd_device *device) in dasd_eckd_release() argument
3660 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, 32, device); in dasd_eckd_release()
3677 cqr->startdev = device; in dasd_eckd_release()
3678 cqr->memdev = device; in dasd_eckd_release()
3688 clear_bit(DASD_FLAG_IS_RESERVED, &device->flags); in dasd_eckd_release()
3704 dasd_eckd_reserve(struct dasd_device *device) in dasd_eckd_reserve() argument
3715 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, 32, device); in dasd_eckd_reserve()
3732 cqr->startdev = device; in dasd_eckd_reserve()
3733 cqr->memdev = device; in dasd_eckd_reserve()
3743 set_bit(DASD_FLAG_IS_RESERVED, &device->flags); in dasd_eckd_reserve()
3758 dasd_eckd_steal_lock(struct dasd_device *device) in dasd_eckd_steal_lock() argument
3769 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 1, 32, device); in dasd_eckd_steal_lock()
3786 cqr->startdev = device; in dasd_eckd_steal_lock()
3787 cqr->memdev = device; in dasd_eckd_steal_lock()
3797 set_bit(DASD_FLAG_IS_RESERVED, &device->flags); in dasd_eckd_steal_lock()
3812 static int dasd_eckd_snid(struct dasd_device *device, in dasd_eckd_snid() argument
3829 sizeof(struct dasd_snid_data), device); in dasd_eckd_snid()
3846 cqr->startdev = device; in dasd_eckd_snid()
3847 cqr->memdev = device; in dasd_eckd_snid()
3878 dasd_eckd_performance(struct dasd_device *device, void __user *argp) in dasd_eckd_performance() argument
3889 device); in dasd_eckd_performance()
3891 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_eckd_performance()
3895 cqr->startdev = device; in dasd_eckd_performance()
3896 cqr->memdev = device; in dasd_eckd_performance()
3942 dasd_eckd_get_attrib(struct dasd_device *device, void __user *argp) in dasd_eckd_get_attrib() argument
3945 (struct dasd_eckd_private *)device->private; in dasd_eckd_get_attrib()
3967 dasd_eckd_set_attrib(struct dasd_device *device, void __user *argp) in dasd_eckd_set_attrib() argument
3970 (struct dasd_eckd_private *)device->private; in dasd_eckd_set_attrib()
3982 dev_info(&device->cdev->dev, in dasd_eckd_set_attrib()
3992 static int dasd_symm_io(struct dasd_device *device, void __user *argp) in dasd_symm_io() argument
4037 cqr = dasd_smalloc_request(DASD_ECKD_MAGIC, 2 , 0, device); in dasd_symm_io()
4039 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_symm_io()
4045 cqr->startdev = device; in dasd_symm_io()
4046 cqr->memdev = device; in dasd_symm_io()
4085 DBF_DEV_EVENT(DBF_WARNING, device, in dasd_symm_io()
4094 struct dasd_device *device = block->base; in dasd_eckd_ioctl() local
4098 return dasd_eckd_get_attrib(device, argp); in dasd_eckd_ioctl()
4100 return dasd_eckd_set_attrib(device, argp); in dasd_eckd_ioctl()
4102 return dasd_eckd_performance(device, argp); in dasd_eckd_ioctl()
4104 return dasd_eckd_release(device); in dasd_eckd_ioctl()
4106 return dasd_eckd_reserve(device); in dasd_eckd_ioctl()
4108 return dasd_eckd_steal_lock(device); in dasd_eckd_ioctl()
4110 return dasd_eckd_snid(device, argp); in dasd_eckd_ioctl()
4112 return dasd_symm_io(device, argp); in dasd_eckd_ioctl()
4153 dasd_eckd_dump_sense_dbf(struct dasd_device *device, struct irb *irb, in dasd_eckd_dump_sense_dbf() argument
4162 DBF_DEV_EVENT(DBF_EMERG, device, "%s: %016llx %08x : " in dasd_eckd_dump_sense_dbf()
4167 DBF_DEV_EVENT(DBF_EMERG, device, "%s: %016llx %08x : %s", in dasd_eckd_dump_sense_dbf()
4177 static void dasd_eckd_dump_sense_ccw(struct dasd_device *device, in dasd_eckd_dump_sense_ccw() argument
4186 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_eckd_dump_sense_ccw()
4193 dev_name(&device->cdev->dev)); in dasd_eckd_dump_sense_ccw()
4203 dev_name(&device->cdev->dev), in dasd_eckd_dump_sense_ccw()
4280 static void dasd_eckd_dump_sense_tcw(struct dasd_device *device, in dasd_eckd_dump_sense_tcw() argument
4290 DBF_DEV_EVENT(DBF_WARNING, device, " %s", in dasd_eckd_dump_sense_tcw()
4297 dev_name(&device->cdev->dev)); in dasd_eckd_dump_sense_tcw()
4308 dev_name(&device->cdev->dev), in dasd_eckd_dump_sense_tcw()
4409 static void dasd_eckd_dump_sense(struct dasd_device *device, in dasd_eckd_dump_sense() argument
4413 dasd_eckd_dump_sense_tcw(device, req, irb); in dasd_eckd_dump_sense()
4415 dasd_eckd_dump_sense_ccw(device, req, irb); in dasd_eckd_dump_sense()
4418 static int dasd_eckd_pm_freeze(struct dasd_device *device) in dasd_eckd_pm_freeze() argument
4425 dasd_alias_remove_device(device); in dasd_eckd_pm_freeze()
4426 dasd_alias_disconnect_device_from_lcu(device); in dasd_eckd_pm_freeze()
4431 static int dasd_eckd_restore_device(struct dasd_device *device) in dasd_eckd_restore_device() argument
4440 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_restore_device()
4443 rc = dasd_eckd_read_conf(device); in dasd_eckd_restore_device()
4445 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, in dasd_eckd_restore_device()
4450 dasd_eckd_get_uid(device, &temp_uid); in dasd_eckd_restore_device()
4452 rc = dasd_eckd_generate_uid(device); in dasd_eckd_restore_device()
4453 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_restore_device()
4455 dev_err(&device->cdev->dev, "The UID of the DASD has " in dasd_eckd_restore_device()
4457 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_restore_device()
4462 rc = dasd_alias_make_device_known_to_lcu(device); in dasd_eckd_restore_device()
4467 dasd_eckd_validate_server(device, cqr_flags); in dasd_eckd_restore_device()
4470 rc = dasd_eckd_read_conf(device); in dasd_eckd_restore_device()
4472 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, in dasd_eckd_restore_device()
4478 dasd_eckd_read_features(device); in dasd_eckd_restore_device()
4481 rc = dasd_generic_read_dev_chars(device, DASD_ECKD_MAGIC, in dasd_eckd_restore_device()
4484 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, in dasd_eckd_restore_device()
4488 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_restore_device()
4490 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_restore_device()
4493 dasd_alias_add_device(device); in dasd_eckd_restore_device()
4498 dasd_alias_disconnect_device_from_lcu(device); in dasd_eckd_restore_device()
4503 static int dasd_eckd_reload_device(struct dasd_device *device) in dasd_eckd_reload_device() argument
4511 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_reload_device()
4513 spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_reload_device()
4515 spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags); in dasd_eckd_reload_device()
4518 rc = dasd_eckd_read_conf(device); in dasd_eckd_reload_device()
4522 rc = dasd_eckd_generate_uid(device); in dasd_eckd_reload_device()
4529 dasd_alias_update_add_device(device); in dasd_eckd_reload_device()
4531 dasd_eckd_get_uid(device, &uid); in dasd_eckd_reload_device()
4543 dev_info(&device->cdev->dev, in dasd_eckd_reload_device()
4553 static int dasd_eckd_read_message_buffer(struct dasd_device *device, in dasd_eckd_read_message_buffer() argument
4564 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_read_message_buffer()
4568 device); in dasd_eckd_read_message_buffer()
4570 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, "%s", in dasd_eckd_read_message_buffer()
4575 cqr->startdev = device; in dasd_eckd_read_message_buffer()
4576 cqr->memdev = device; in dasd_eckd_read_message_buffer()
4620 DBF_EVENT_DEVID(DBF_WARNING, device->cdev, in dasd_eckd_read_message_buffer()
4631 dasd_eckd_psf_cuir_response(struct dasd_device *device, int response, in dasd_eckd_psf_cuir_response() argument
4643 device); in dasd_eckd_psf_cuir_response()
4646 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_eckd_psf_cuir_response()
4665 cqr->startdev = device; in dasd_eckd_psf_cuir_response()
4666 cqr->memdev = device; in dasd_eckd_psf_cuir_response()
4685 static struct dasd_conf_data *dasd_eckd_get_ref_conf(struct dasd_device *device, in dasd_eckd_get_ref_conf() argument
4693 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_get_ref_conf()
4715 static int dasd_eckd_cuir_scope(struct dasd_device *device, __u8 lpum, in dasd_eckd_cuir_scope() argument
4733 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_cuir_scope()
4735 ref_conf_data = dasd_eckd_get_ref_conf(device, lpum, cuir); in dasd_eckd_cuir_scope()
4775 static void dasd_eckd_cuir_notify_user(struct dasd_device *device, in dasd_eckd_cuir_notify_user() argument
4786 desc = ccw_device_get_chp_desc(device->cdev, 7 - pos); in dasd_eckd_cuir_notify_user()
4800 static int dasd_eckd_cuir_remove_path(struct dasd_device *device, __u8 lpum, in dasd_eckd_cuir_remove_path() argument
4805 tbcpm = dasd_eckd_cuir_scope(device, lpum, cuir); in dasd_eckd_cuir_remove_path()
4807 if (!(device->path_data.opm & tbcpm)) in dasd_eckd_cuir_remove_path()
4809 if (!(device->path_data.opm & ~tbcpm)) { in dasd_eckd_cuir_remove_path()
4815 device->path_data.opm &= ~tbcpm; in dasd_eckd_cuir_remove_path()
4816 device->path_data.cuirpm |= tbcpm; in dasd_eckd_cuir_remove_path()
4828 static int dasd_eckd_cuir_quiesce(struct dasd_device *device, __u8 lpum, in dasd_eckd_cuir_quiesce() argument
4839 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_cuir_quiesce()
4885 dasd_eckd_cuir_notify_user(device, paths, sch_id, CUIR_QUIESCE); in dasd_eckd_cuir_quiesce()
4891 static int dasd_eckd_cuir_resume(struct dasd_device *device, __u8 lpum, in dasd_eckd_cuir_resume() argument
4901 private = (struct dasd_eckd_private *) device->private; in dasd_eckd_cuir_resume()
4952 dasd_eckd_cuir_notify_user(device, paths, sch_id, CUIR_RESUME); in dasd_eckd_cuir_resume()
4956 static void dasd_eckd_handle_cuir(struct dasd_device *device, void *messages, in dasd_eckd_handle_cuir() argument
4964 DBF_DEV_EVENT(DBF_WARNING, device, in dasd_eckd_handle_cuir()
4968 ccw_device_get_schid(device->cdev, &sch_id); in dasd_eckd_handle_cuir()
4970 desc = ccw_device_get_chp_desc(device->cdev, pos); in dasd_eckd_handle_cuir()
4974 if (dasd_eckd_cuir_quiesce(device, lpum, sch_id, cuir)) in dasd_eckd_handle_cuir()
4980 dasd_eckd_cuir_resume(device, lpum, sch_id, cuir); in dasd_eckd_handle_cuir()
4985 dasd_eckd_psf_cuir_response(device, response, in dasd_eckd_handle_cuir()
4987 DBF_DEV_EVENT(DBF_WARNING, device, in dasd_eckd_handle_cuir()
4993 device->discipline->check_attention(device, lpum); in dasd_eckd_handle_cuir()
5000 struct dasd_device *device; in dasd_eckd_check_attention_work() local
5004 device = data->device; in dasd_eckd_check_attention_work()
5007 DBF_DEV_EVENT(DBF_WARNING, device, "%s", in dasd_eckd_check_attention_work()
5011 rc = dasd_eckd_read_message_buffer(device, messages, data->lpum); in dasd_eckd_check_attention_work()
5016 dasd_eckd_handle_cuir(device, messages, data->lpum); in dasd_eckd_check_attention_work()
5018 dasd_put_device(device); in dasd_eckd_check_attention_work()
5023 static int dasd_eckd_check_attention(struct dasd_device *device, __u8 lpum) in dasd_eckd_check_attention() argument
5031 dasd_get_device(device); in dasd_eckd_check_attention()
5032 data->device = device; in dasd_eckd_check_attention()