lcu 70 drivers/s390/block/dasd_alias.c list_for_each_entry(pos, &server->lculist, lcu) { lcu 77 drivers/s390/block/dasd_alias.c static struct alias_pav_group *_find_group(struct alias_lcu *lcu, lcu 84 drivers/s390/block/dasd_alias.c if (lcu->pav == HYPER_PAV) { lcu 85 drivers/s390/block/dasd_alias.c if (list_empty(&lcu->grouplist)) lcu 88 drivers/s390/block/dasd_alias.c return list_first_entry(&lcu->grouplist, lcu 97 drivers/s390/block/dasd_alias.c list_for_each_entry(pos, &lcu->grouplist, group) { lcu 126 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu; lcu 128 drivers/s390/block/dasd_alias.c lcu = kzalloc(sizeof(*lcu), GFP_KERNEL); lcu 129 drivers/s390/block/dasd_alias.c if (!lcu) lcu 131 drivers/s390/block/dasd_alias.c lcu->uac = kzalloc(sizeof(*(lcu->uac)), GFP_KERNEL | GFP_DMA); lcu 132 drivers/s390/block/dasd_alias.c if (!lcu->uac) lcu 134 drivers/s390/block/dasd_alias.c lcu->rsu_cqr = kzalloc(sizeof(*lcu->rsu_cqr), GFP_KERNEL | GFP_DMA); lcu 135 drivers/s390/block/dasd_alias.c if (!lcu->rsu_cqr) lcu 137 drivers/s390/block/dasd_alias.c lcu->rsu_cqr->cpaddr = kzalloc(sizeof(struct ccw1), lcu 139 drivers/s390/block/dasd_alias.c if (!lcu->rsu_cqr->cpaddr) lcu 141 drivers/s390/block/dasd_alias.c lcu->rsu_cqr->data = kzalloc(16, GFP_KERNEL | GFP_DMA); lcu 142 drivers/s390/block/dasd_alias.c if (!lcu->rsu_cqr->data) lcu 145 drivers/s390/block/dasd_alias.c memcpy(lcu->uid.vendor, uid->vendor, sizeof(uid->vendor)); lcu 146 drivers/s390/block/dasd_alias.c memcpy(lcu->uid.serial, uid->serial, sizeof(uid->serial)); lcu 147 drivers/s390/block/dasd_alias.c lcu->uid.ssid = uid->ssid; lcu 148 drivers/s390/block/dasd_alias.c lcu->pav = NO_PAV; lcu 149 drivers/s390/block/dasd_alias.c lcu->flags = NEED_UAC_UPDATE | UPDATE_PENDING; lcu 150 drivers/s390/block/dasd_alias.c INIT_LIST_HEAD(&lcu->lcu); lcu 151 drivers/s390/block/dasd_alias.c INIT_LIST_HEAD(&lcu->inactive_devices); lcu 152 drivers/s390/block/dasd_alias.c INIT_LIST_HEAD(&lcu->active_devices); lcu 153 drivers/s390/block/dasd_alias.c INIT_LIST_HEAD(&lcu->grouplist); lcu 154 drivers/s390/block/dasd_alias.c INIT_WORK(&lcu->suc_data.worker, summary_unit_check_handling_work); lcu 155 drivers/s390/block/dasd_alias.c INIT_DELAYED_WORK(&lcu->ruac_data.dwork, lcu_update_work); lcu 156 drivers/s390/block/dasd_alias.c spin_lock_init(&lcu->lock); lcu 157 drivers/s390/block/dasd_alias.c init_completion(&lcu->lcu_setup); lcu 158 drivers/s390/block/dasd_alias.c return lcu; lcu 161 drivers/s390/block/dasd_alias.c kfree(lcu->rsu_cqr->cpaddr); lcu 163 drivers/s390/block/dasd_alias.c kfree(lcu->rsu_cqr); lcu 165 drivers/s390/block/dasd_alias.c kfree(lcu->uac); lcu 167 drivers/s390/block/dasd_alias.c kfree(lcu); lcu 171 drivers/s390/block/dasd_alias.c static void _free_lcu(struct alias_lcu *lcu) lcu 173 drivers/s390/block/dasd_alias.c kfree(lcu->rsu_cqr->data); lcu 174 drivers/s390/block/dasd_alias.c kfree(lcu->rsu_cqr->cpaddr); lcu 175 drivers/s390/block/dasd_alias.c kfree(lcu->rsu_cqr); lcu 176 drivers/s390/block/dasd_alias.c kfree(lcu->uac); lcu 177 drivers/s390/block/dasd_alias.c kfree(lcu); lcu 192 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu, *newlcu; lcu 214 drivers/s390/block/dasd_alias.c lcu = _find_lcu(server, &uid); lcu 215 drivers/s390/block/dasd_alias.c if (!lcu) { lcu 221 drivers/s390/block/dasd_alias.c lcu = _find_lcu(server, &uid); lcu 222 drivers/s390/block/dasd_alias.c if (!lcu) { lcu 223 drivers/s390/block/dasd_alias.c list_add(&newlcu->lcu, &server->lculist); lcu 224 drivers/s390/block/dasd_alias.c lcu = newlcu; lcu 230 drivers/s390/block/dasd_alias.c spin_lock(&lcu->lock); lcu 231 drivers/s390/block/dasd_alias.c list_add(&device->alias_list, &lcu->inactive_devices); lcu 232 drivers/s390/block/dasd_alias.c private->lcu = lcu; lcu 233 drivers/s390/block/dasd_alias.c spin_unlock(&lcu->lock); lcu 248 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu; lcu 253 drivers/s390/block/dasd_alias.c lcu = private->lcu; lcu 255 drivers/s390/block/dasd_alias.c if (!lcu) lcu 258 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 261 drivers/s390/block/dasd_alias.c if (device == lcu->suc_data.device) { lcu 262 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 263 drivers/s390/block/dasd_alias.c cancel_work_sync(&lcu->suc_data.worker); lcu 264 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 265 drivers/s390/block/dasd_alias.c if (device == lcu->suc_data.device) { lcu 267 drivers/s390/block/dasd_alias.c lcu->suc_data.device = NULL; lcu 271 drivers/s390/block/dasd_alias.c if (device == lcu->ruac_data.device) { lcu 272 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 274 drivers/s390/block/dasd_alias.c cancel_delayed_work_sync(&lcu->ruac_data.dwork); lcu 275 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 276 drivers/s390/block/dasd_alias.c if (device == lcu->ruac_data.device) { lcu 278 drivers/s390/block/dasd_alias.c lcu->ruac_data.device = NULL; lcu 281 drivers/s390/block/dasd_alias.c private->lcu = NULL; lcu 282 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 285 drivers/s390/block/dasd_alias.c spin_lock(&lcu->lock); lcu 286 drivers/s390/block/dasd_alias.c if (list_empty(&lcu->grouplist) && lcu 287 drivers/s390/block/dasd_alias.c list_empty(&lcu->active_devices) && lcu 288 drivers/s390/block/dasd_alias.c list_empty(&lcu->inactive_devices)) { lcu 289 drivers/s390/block/dasd_alias.c list_del(&lcu->lcu); lcu 290 drivers/s390/block/dasd_alias.c spin_unlock(&lcu->lock); lcu 291 drivers/s390/block/dasd_alias.c _free_lcu(lcu); lcu 292 drivers/s390/block/dasd_alias.c lcu = NULL; lcu 295 drivers/s390/block/dasd_alias.c _schedule_lcu_update(lcu, NULL); lcu 296 drivers/s390/block/dasd_alias.c spin_unlock(&lcu->lock); lcu 312 drivers/s390/block/dasd_alias.c static int _add_device_to_lcu(struct alias_lcu *lcu, lcu 322 drivers/s390/block/dasd_alias.c private->uid.type = lcu->uac->unit[private->uid.real_unit_addr].ua_type; lcu 324 drivers/s390/block/dasd_alias.c lcu->uac->unit[private->uid.real_unit_addr].base_ua; lcu 328 drivers/s390/block/dasd_alias.c if (lcu->pav == NO_PAV) { lcu 329 drivers/s390/block/dasd_alias.c list_move(&device->alias_list, &lcu->active_devices); lcu 332 drivers/s390/block/dasd_alias.c group = _find_group(lcu, &uid); lcu 348 drivers/s390/block/dasd_alias.c list_add(&group->group, &lcu->grouplist); lcu 358 drivers/s390/block/dasd_alias.c static void _remove_device_from_lcu(struct alias_lcu *lcu, lcu 364 drivers/s390/block/dasd_alias.c list_move(&device->alias_list, &lcu->inactive_devices); lcu 416 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu) lcu 449 drivers/s390/block/dasd_alias.c memset(lcu->uac, 0, sizeof(*(lcu->uac))); lcu 453 drivers/s390/block/dasd_alias.c ccw->count = sizeof(*(lcu->uac)); lcu 454 drivers/s390/block/dasd_alias.c ccw->cda = (__u32)(addr_t) lcu->uac; lcu 460 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 461 drivers/s390/block/dasd_alias.c lcu->flags &= ~NEED_UAC_UPDATE; lcu 462 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 466 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 467 drivers/s390/block/dasd_alias.c lcu->flags |= NEED_UAC_UPDATE; lcu 468 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 474 drivers/s390/block/dasd_alias.c static int _lcu_update(struct dasd_device *refdev, struct alias_lcu *lcu) lcu 482 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 483 drivers/s390/block/dasd_alias.c list_for_each_entry_safe(pavgroup, tempgroup, &lcu->grouplist, group) { lcu 486 drivers/s390/block/dasd_alias.c list_move(&device->alias_list, &lcu->active_devices); lcu 492 drivers/s390/block/dasd_alias.c list_move(&device->alias_list, &lcu->active_devices); lcu 499 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 501 drivers/s390/block/dasd_alias.c rc = read_unit_address_configuration(refdev, lcu); lcu 505 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 506 drivers/s390/block/dasd_alias.c lcu->pav = NO_PAV; lcu 508 drivers/s390/block/dasd_alias.c switch (lcu->uac->unit[i].ua_type) { lcu 510 drivers/s390/block/dasd_alias.c lcu->pav = BASE_PAV; lcu 513 drivers/s390/block/dasd_alias.c lcu->pav = HYPER_PAV; lcu 516 drivers/s390/block/dasd_alias.c if (lcu->pav != NO_PAV) lcu 520 drivers/s390/block/dasd_alias.c list_for_each_entry_safe(device, tempdev, &lcu->active_devices, lcu 522 drivers/s390/block/dasd_alias.c _add_device_to_lcu(lcu, device, refdev); lcu 524 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 530 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu; lcu 537 drivers/s390/block/dasd_alias.c lcu = container_of(ruac_data, struct alias_lcu, ruac_data); lcu 539 drivers/s390/block/dasd_alias.c rc = _lcu_update(device, lcu); lcu 545 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 546 drivers/s390/block/dasd_alias.c if ((rc && (rc != -EOPNOTSUPP)) || (lcu->flags & NEED_UAC_UPDATE)) { lcu 549 drivers/s390/block/dasd_alias.c if (!schedule_delayed_work(&lcu->ruac_data.dwork, 30*HZ)) lcu 553 drivers/s390/block/dasd_alias.c lcu->ruac_data.device = NULL; lcu 554 drivers/s390/block/dasd_alias.c lcu->flags &= ~UPDATE_PENDING; lcu 556 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 559 drivers/s390/block/dasd_alias.c static int _schedule_lcu_update(struct alias_lcu *lcu, lcu 565 drivers/s390/block/dasd_alias.c lcu->flags |= NEED_UAC_UPDATE; lcu 566 drivers/s390/block/dasd_alias.c if (lcu->ruac_data.device) { lcu 573 drivers/s390/block/dasd_alias.c if (!usedev && !list_empty(&lcu->grouplist)) { lcu 574 drivers/s390/block/dasd_alias.c group = list_first_entry(&lcu->grouplist, lcu 585 drivers/s390/block/dasd_alias.c if (!usedev && !list_empty(&lcu->active_devices)) { lcu 586 drivers/s390/block/dasd_alias.c usedev = list_first_entry(&lcu->active_devices, lcu 596 drivers/s390/block/dasd_alias.c lcu->ruac_data.device = usedev; lcu 597 drivers/s390/block/dasd_alias.c if (!schedule_delayed_work(&lcu->ruac_data.dwork, 0)) lcu 606 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu = private->lcu; lcu 611 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 616 drivers/s390/block/dasd_alias.c if (private->uid.type != lcu->uac->unit[uaddr].ua_type) { lcu 617 drivers/s390/block/dasd_alias.c lcu->flags |= UPDATE_PENDING; lcu 621 drivers/s390/block/dasd_alias.c if (!(lcu->flags & UPDATE_PENDING)) { lcu 622 drivers/s390/block/dasd_alias.c rc = _add_device_to_lcu(lcu, device, device); lcu 624 drivers/s390/block/dasd_alias.c lcu->flags |= UPDATE_PENDING; lcu 626 drivers/s390/block/dasd_alias.c if (lcu->flags & UPDATE_PENDING) { lcu 627 drivers/s390/block/dasd_alias.c list_move(&device->alias_list, &lcu->active_devices); lcu 628 drivers/s390/block/dasd_alias.c _schedule_lcu_update(lcu, device); lcu 630 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 638 drivers/s390/block/dasd_alias.c private->lcu->flags |= UPDATE_PENDING; lcu 645 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu = private->lcu; lcu 649 drivers/s390/block/dasd_alias.c if (!lcu) lcu 651 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 652 drivers/s390/block/dasd_alias.c _remove_device_from_lcu(lcu, device); lcu 653 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 661 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu = private->lcu; lcu 665 drivers/s390/block/dasd_alias.c if (!group || !lcu) lcu 667 drivers/s390/block/dasd_alias.c if (lcu->pav == NO_PAV || lcu 668 drivers/s390/block/dasd_alias.c lcu->flags & (NEED_UAC_UPDATE | UPDATE_PENDING)) lcu 681 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 685 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 699 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 712 drivers/s390/block/dasd_alias.c static int reset_summary_unit_check(struct alias_lcu *lcu, lcu 720 drivers/s390/block/dasd_alias.c cqr = lcu->rsu_cqr; lcu 743 drivers/s390/block/dasd_alias.c static void _restart_all_base_devices_on_lcu(struct alias_lcu *lcu) lcu 750 drivers/s390/block/dasd_alias.c list_for_each_entry(device, &lcu->active_devices, alias_list) { lcu 757 drivers/s390/block/dasd_alias.c list_for_each_entry(device, &lcu->inactive_devices, alias_list) { lcu 764 drivers/s390/block/dasd_alias.c list_for_each_entry(pavgroup, &lcu->grouplist, group) { lcu 772 drivers/s390/block/dasd_alias.c static void flush_all_alias_devices_on_lcu(struct alias_lcu *lcu) lcu 791 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 792 drivers/s390/block/dasd_alias.c list_for_each_entry_safe(device, temp, &lcu->active_devices, lcu 800 drivers/s390/block/dasd_alias.c list_for_each_entry(pavgroup, &lcu->grouplist, group) { lcu 806 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 808 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 815 drivers/s390/block/dasd_alias.c list_move(&device->alias_list, &lcu->active_devices); lcu 820 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 823 drivers/s390/block/dasd_alias.c static void _stop_all_devices_on_lcu(struct alias_lcu *lcu) lcu 828 drivers/s390/block/dasd_alias.c list_for_each_entry(device, &lcu->active_devices, alias_list) { lcu 833 drivers/s390/block/dasd_alias.c list_for_each_entry(device, &lcu->inactive_devices, alias_list) { lcu 838 drivers/s390/block/dasd_alias.c list_for_each_entry(pavgroup, &lcu->grouplist, group) { lcu 852 drivers/s390/block/dasd_alias.c static void _unstop_all_devices_on_lcu(struct alias_lcu *lcu) lcu 857 drivers/s390/block/dasd_alias.c list_for_each_entry(device, &lcu->active_devices, alias_list) { lcu 862 drivers/s390/block/dasd_alias.c list_for_each_entry(device, &lcu->inactive_devices, alias_list) { lcu 867 drivers/s390/block/dasd_alias.c list_for_each_entry(pavgroup, &lcu->grouplist, group) { lcu 883 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu; lcu 890 drivers/s390/block/dasd_alias.c lcu = container_of(suc_data, struct alias_lcu, suc_data); lcu 894 drivers/s390/block/dasd_alias.c flush_all_alias_devices_on_lcu(lcu); lcu 901 drivers/s390/block/dasd_alias.c reset_summary_unit_check(lcu, device, suc_data->reason); lcu 903 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 904 drivers/s390/block/dasd_alias.c _unstop_all_devices_on_lcu(lcu); lcu 905 drivers/s390/block/dasd_alias.c _restart_all_base_devices_on_lcu(lcu); lcu 907 drivers/s390/block/dasd_alias.c _schedule_lcu_update(lcu, device); lcu 908 drivers/s390/block/dasd_alias.c lcu->suc_data.device = NULL; lcu 910 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 918 drivers/s390/block/dasd_alias.c struct alias_lcu *lcu; lcu 921 drivers/s390/block/dasd_alias.c lcu = private->lcu; lcu 922 drivers/s390/block/dasd_alias.c if (!lcu) { lcu 928 drivers/s390/block/dasd_alias.c spin_lock_irqsave(&lcu->lock, flags); lcu 938 drivers/s390/block/dasd_alias.c if (lcu->suc_data.device) { lcu 945 drivers/s390/block/dasd_alias.c _stop_all_devices_on_lcu(lcu); lcu 947 drivers/s390/block/dasd_alias.c lcu->flags |= NEED_UAC_UPDATE | UPDATE_PENDING; lcu 948 drivers/s390/block/dasd_alias.c lcu->suc_data.reason = private->suc_reason; lcu 949 drivers/s390/block/dasd_alias.c lcu->suc_data.device = device; lcu 951 drivers/s390/block/dasd_alias.c if (!schedule_work(&lcu->suc_data.worker)) lcu 954 drivers/s390/block/dasd_alias.c spin_unlock_irqrestore(&lcu->lock, flags); lcu 3499 drivers/s390/block/dasd_eckd.c if (!device->block && private->lcu && lcu 5955 drivers/s390/block/dasd_eckd.c if (!device->block && private->lcu->pav == HYPER_PAV) lcu 6309 drivers/s390/block/dasd_eckd.c list_for_each_entry_safe(dev, n, &private->lcu->active_devices, lcu 6319 drivers/s390/block/dasd_eckd.c list_for_each_entry_safe(dev, n, &private->lcu->inactive_devices, lcu 6330 drivers/s390/block/dasd_eckd.c &private->lcu->grouplist, group) { lcu 6373 drivers/s390/block/dasd_eckd.c &private->lcu->active_devices, lcu 6383 drivers/s390/block/dasd_eckd.c &private->lcu->inactive_devices, lcu 6394 drivers/s390/block/dasd_eckd.c &private->lcu->grouplist, lcu 6462 drivers/s390/block/dasd_eckd.c spin_lock_irqsave(&private->lcu->lock, flags); lcu 6463 drivers/s390/block/dasd_eckd.c list_for_each_entry_safe(dev, n, &private->lcu->active_devices, lcu 6468 drivers/s390/block/dasd_eckd.c list_for_each_entry_safe(dev, n, &private->lcu->inactive_devices, lcu 6475 drivers/s390/block/dasd_eckd.c &private->lcu->grouplist, lcu 6488 drivers/s390/block/dasd_eckd.c spin_unlock_irqrestore(&private->lcu->lock, flags); lcu 629 drivers/s390/block/dasd_eckd.h struct list_head lcu; lcu 647 drivers/s390/block/dasd_eckd.h struct alias_lcu *lcu; lcu 682 drivers/s390/block/dasd_eckd.h struct alias_lcu *lcu;