hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/s390/cio/device_fsm.c
....@@ -67,8 +67,10 @@
6767 sizeof(struct tcw), 0);
6868 } else {
6969 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)
7274 printk(KERN_WARNING "cio: last channel program "
7375 "(intern):\n");
7476 else
....@@ -143,18 +145,22 @@
143145 void ccw_device_update_sense_data(struct ccw_device *cdev)
144146 {
145147 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;
150152 }
151153
152154 int ccw_device_test_sense_data(struct ccw_device *cdev)
153155 {
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;
158164 }
159165
160166 /*
....@@ -342,7 +348,7 @@
342348 cio_disable_subchannel(sch);
343349
344350 /* Reset device status. */
345
- memset(&cdev->private->irb, 0, sizeof(struct irb));
351
+ memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb));
346352
347353 cdev->private->state = state;
348354
....@@ -509,13 +515,14 @@
509515 ccw_device_done(cdev, DEV_STATE_ONLINE);
510516 /* Deliver fake irb to device driver, if needed. */
511517 if (cdev->private->flags.fake_irb) {
512
- create_fake_irb(&cdev->private->irb,
518
+ create_fake_irb(&cdev->private->dma_area->irb,
513519 cdev->private->flags.fake_irb);
514520 cdev->private->flags.fake_irb = 0;
515521 if (cdev->handler)
516522 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));
519526 }
520527 ccw_device_report_path_events(cdev);
521528 ccw_device_handle_broken_paths(cdev);
....@@ -672,7 +679,8 @@
672679
673680 if (scsw_actl(&sch->schib.scsw) != 0 ||
674681 (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)) {
676684 /*
677685 * No final status yet or final status not yet delivered
678686 * to the device driver. Can't do path verification now,
....@@ -719,7 +727,7 @@
719727 * - fast notification was requested (primary status)
720728 * - unsolicited interrupts
721729 */
722
- stctl = scsw_stctl(&cdev->private->irb.scsw);
730
+ stctl = scsw_stctl(&cdev->private->dma_area->irb.scsw);
723731 ending_status = (stctl & SCSW_STCTL_SEC_STATUS) ||
724732 (stctl == (SCSW_STCTL_ALERT_STATUS | SCSW_STCTL_STATUS_PEND)) ||
725733 (stctl == SCSW_STCTL_STATUS_PEND);
....@@ -735,9 +743,9 @@
735743
736744 if (cdev->handler)
737745 cdev->handler(cdev, cdev->private->intparm,
738
- &cdev->private->irb);
746
+ &cdev->private->dma_area->irb);
739747
740
- memset(&cdev->private->irb, 0, sizeof(struct irb));
748
+ memset(&cdev->private->dma_area->irb, 0, sizeof(struct irb));
741749 return 1;
742750 }
743751
....@@ -759,7 +767,8 @@
759767 /* Unit check but no sense data. Need basic sense. */
760768 if (ccw_device_do_sense(cdev, irb) != 0)
761769 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));
763772 cdev->private->state = DEV_STATE_W4SENSE;
764773 cdev->private->intparm = 0;
765774 return;
....@@ -842,7 +851,7 @@
842851 if (scsw_fctl(&irb->scsw) &
843852 (SCSW_FCTL_CLEAR_FUNC | SCSW_FCTL_HALT_FUNC)) {
844853 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));
846855 ccw_device_accumulate_irb(cdev, irb);
847856 goto call_handler;
848857 }