| .. | .. |
|---|
| 67 | 67 | sizeof(struct tcw), 0); |
|---|
| 68 | 68 | } else { |
|---|
| 69 | 69 | printk(KERN_WARNING "cio: orb indicates command mode\n"); |
|---|
| 70 | | - if ((void *)(addr_t)orb->cmd.cpa == &private->sense_ccw || |
|---|
| 71 | | - (void *)(addr_t)orb->cmd.cpa == cdev->private->iccws) |
|---|
| 70 | + if ((void *)(addr_t)orb->cmd.cpa == |
|---|
| 71 | + &private->dma_area->sense_ccw || |
|---|
| 72 | + (void *)(addr_t)orb->cmd.cpa == |
|---|
| 73 | + cdev->private->dma_area->iccws) |
|---|
| 72 | 74 | printk(KERN_WARNING "cio: last channel program " |
|---|
| 73 | 75 | "(intern):\n"); |
|---|
| 74 | 76 | else |
|---|
| .. | .. |
|---|
| 143 | 145 | void ccw_device_update_sense_data(struct ccw_device *cdev) |
|---|
| 144 | 146 | { |
|---|
| 145 | 147 | memset(&cdev->id, 0, sizeof(cdev->id)); |
|---|
| 146 | | - cdev->id.cu_type = cdev->private->senseid.cu_type; |
|---|
| 147 | | - cdev->id.cu_model = cdev->private->senseid.cu_model; |
|---|
| 148 | | - cdev->id.dev_type = cdev->private->senseid.dev_type; |
|---|
| 149 | | - cdev->id.dev_model = cdev->private->senseid.dev_model; |
|---|
| 148 | + cdev->id.cu_type = cdev->private->dma_area->senseid.cu_type; |
|---|
| 149 | + cdev->id.cu_model = cdev->private->dma_area->senseid.cu_model; |
|---|
| 150 | + cdev->id.dev_type = cdev->private->dma_area->senseid.dev_type; |
|---|
| 151 | + cdev->id.dev_model = cdev->private->dma_area->senseid.dev_model; |
|---|
| 150 | 152 | } |
|---|
| 151 | 153 | |
|---|
| 152 | 154 | int ccw_device_test_sense_data(struct ccw_device *cdev) |
|---|
| 153 | 155 | { |
|---|
| 154 | | - return cdev->id.cu_type == cdev->private->senseid.cu_type && |
|---|
| 155 | | - cdev->id.cu_model == cdev->private->senseid.cu_model && |
|---|
| 156 | | - cdev->id.dev_type == cdev->private->senseid.dev_type && |
|---|
| 157 | | - cdev->id.dev_model == cdev->private->senseid.dev_model; |
|---|
| 156 | + return cdev->id.cu_type == |
|---|
| 157 | + cdev->private->dma_area->senseid.cu_type && |
|---|
| 158 | + cdev->id.cu_model == |
|---|
| 159 | + cdev->private->dma_area->senseid.cu_model && |
|---|
| 160 | + cdev->id.dev_type == |
|---|
| 161 | + cdev->private->dma_area->senseid.dev_type && |
|---|
| 162 | + cdev->id.dev_model == |
|---|
| 163 | + cdev->private->dma_area->senseid.dev_model; |
|---|
| 158 | 164 | } |
|---|
| 159 | 165 | |
|---|
| 160 | 166 | /* |
|---|
| .. | .. |
|---|
| 342 | 348 | cio_disable_subchannel(sch); |
|---|
| 343 | 349 | |
|---|
| 344 | 350 | /* Reset device status. */ |
|---|
| 345 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
|---|
| 351 | + memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); |
|---|
| 346 | 352 | |
|---|
| 347 | 353 | cdev->private->state = state; |
|---|
| 348 | 354 | |
|---|
| .. | .. |
|---|
| 509 | 515 | ccw_device_done(cdev, DEV_STATE_ONLINE); |
|---|
| 510 | 516 | /* Deliver fake irb to device driver, if needed. */ |
|---|
| 511 | 517 | if (cdev->private->flags.fake_irb) { |
|---|
| 512 | | - create_fake_irb(&cdev->private->irb, |
|---|
| 518 | + create_fake_irb(&cdev->private->dma_area->irb, |
|---|
| 513 | 519 | cdev->private->flags.fake_irb); |
|---|
| 514 | 520 | cdev->private->flags.fake_irb = 0; |
|---|
| 515 | 521 | if (cdev->handler) |
|---|
| 516 | 522 | cdev->handler(cdev, cdev->private->intparm, |
|---|
| 517 | | - &cdev->private->irb); |
|---|
| 518 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
|---|
| 523 | + &cdev->private->dma_area->irb); |
|---|
| 524 | + memset(&cdev->private->dma_area->irb, 0, |
|---|
| 525 | + sizeof(struct irb)); |
|---|
| 519 | 526 | } |
|---|
| 520 | 527 | ccw_device_report_path_events(cdev); |
|---|
| 521 | 528 | ccw_device_handle_broken_paths(cdev); |
|---|
| .. | .. |
|---|
| 672 | 679 | |
|---|
| 673 | 680 | if (scsw_actl(&sch->schib.scsw) != 0 || |
|---|
| 674 | 681 | (scsw_stctl(&sch->schib.scsw) & SCSW_STCTL_STATUS_PEND) || |
|---|
| 675 | | - (scsw_stctl(&cdev->private->irb.scsw) & SCSW_STCTL_STATUS_PEND)) { |
|---|
| 682 | + (scsw_stctl(&cdev->private->dma_area->irb.scsw) & |
|---|
| 683 | + SCSW_STCTL_STATUS_PEND)) { |
|---|
| 676 | 684 | /* |
|---|
| 677 | 685 | * No final status yet or final status not yet delivered |
|---|
| 678 | 686 | * to the device driver. Can't do path verification now, |
|---|
| .. | .. |
|---|
| 719 | 727 | * - fast notification was requested (primary status) |
|---|
| 720 | 728 | * - unsolicited interrupts |
|---|
| 721 | 729 | */ |
|---|
| 722 | | - stctl = scsw_stctl(&cdev->private->irb.scsw); |
|---|
| 730 | + stctl = scsw_stctl(&cdev->private->dma_area->irb.scsw); |
|---|
| 723 | 731 | ending_status = (stctl & SCSW_STCTL_SEC_STATUS) || |
|---|
| 724 | 732 | (stctl == (SCSW_STCTL_ALERT_STATUS | SCSW_STCTL_STATUS_PEND)) || |
|---|
| 725 | 733 | (stctl == SCSW_STCTL_STATUS_PEND); |
|---|
| .. | .. |
|---|
| 735 | 743 | |
|---|
| 736 | 744 | if (cdev->handler) |
|---|
| 737 | 745 | cdev->handler(cdev, cdev->private->intparm, |
|---|
| 738 | | - &cdev->private->irb); |
|---|
| 746 | + &cdev->private->dma_area->irb); |
|---|
| 739 | 747 | |
|---|
| 740 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
|---|
| 748 | + memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); |
|---|
| 741 | 749 | return 1; |
|---|
| 742 | 750 | } |
|---|
| 743 | 751 | |
|---|
| .. | .. |
|---|
| 759 | 767 | /* Unit check but no sense data. Need basic sense. */ |
|---|
| 760 | 768 | if (ccw_device_do_sense(cdev, irb) != 0) |
|---|
| 761 | 769 | goto call_handler_unsol; |
|---|
| 762 | | - memcpy(&cdev->private->irb, irb, sizeof(struct irb)); |
|---|
| 770 | + memcpy(&cdev->private->dma_area->irb, irb, |
|---|
| 771 | + sizeof(struct irb)); |
|---|
| 763 | 772 | cdev->private->state = DEV_STATE_W4SENSE; |
|---|
| 764 | 773 | cdev->private->intparm = 0; |
|---|
| 765 | 774 | return; |
|---|
| .. | .. |
|---|
| 842 | 851 | if (scsw_fctl(&irb->scsw) & |
|---|
| 843 | 852 | (SCSW_FCTL_CLEAR_FUNC | SCSW_FCTL_HALT_FUNC)) { |
|---|
| 844 | 853 | cdev->private->flags.dosense = 0; |
|---|
| 845 | | - memset(&cdev->private->irb, 0, sizeof(struct irb)); |
|---|
| 854 | + memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb)); |
|---|
| 846 | 855 | ccw_device_accumulate_irb(cdev, irb); |
|---|
| 847 | 856 | goto call_handler; |
|---|
| 848 | 857 | } |
|---|