Lines Matching refs:sch

46     ccw_dev->sch->driver_data = dev;  in virtio_ccw_dev_post_load()
47 if (ccw_dev->sch->thinint_active) { in virtio_ccw_dev_post_load()
122 VirtIODevice *virtio_ccw_get_vdev(SubchDev *sch) in virtio_ccw_get_vdev() argument
125 VirtioCcwDevice *dev = sch->driver_data; in virtio_ccw_get_vdev()
155 SubchDev *sch = ccw_dev->sch; in virtio_ccw_ioeventfd_assign() local
156 uint32_t sch_id = (css_build_subchannel_id(sch) << 16) | sch->schid; in virtio_ccw_ioeventfd_assign()
202 static int virtio_ccw_set_vqs(SubchDev *sch, VqInfoBlock *info, in virtio_ccw_set_vqs() argument
205 VirtIODevice *vdev = virtio_ccw_get_vdev(sch); in virtio_ccw_set_vqs()
268 ccw_dev->sch->thinint_active = false; in virtio_ccw_reset_virtio()
271 static int virtio_ccw_handle_set_vq(SubchDev *sch, CCW1 ccw, bool check_len, in virtio_ccw_handle_set_vq() argument
291 ret = ccw_dstream_read(&sch->cds, linfo); in virtio_ccw_handle_set_vq()
299 ret = virtio_ccw_set_vqs(sch, NULL, &linfo); in virtio_ccw_handle_set_vq()
301 ret = ccw_dstream_read(&sch->cds, info); in virtio_ccw_handle_set_vq()
310 ret = virtio_ccw_set_vqs(sch, &info, NULL); in virtio_ccw_handle_set_vq()
312 sch->curr_status.scsw.count = 0; in virtio_ccw_handle_set_vq()
316 static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw) in virtio_ccw_cb() argument
324 VirtioCcwDevice *dev = sch->driver_data; in virtio_ccw_cb()
325 VirtIODevice *vdev = virtio_ccw_get_vdev(sch); in virtio_ccw_cb()
334 trace_virtio_ccw_interpret_ccw(sch->cssid, sch->ssid, sch->schid, in virtio_ccw_cb()
357 ret = virtio_ccw_handle_set_vq(sch, ccw, check_len, dev->revision < 1); in virtio_ccw_cb()
379 ccw_dstream_advance(&sch->cds, sizeof(features.features)); in virtio_ccw_cb()
380 ret = ccw_dstream_read(&sch->cds, features.index); in virtio_ccw_cb()
402 ccw_dstream_rewind(&sch->cds); in virtio_ccw_cb()
404 ret = ccw_dstream_write(&sch->cds, features.features); in virtio_ccw_cb()
406 sch->curr_status.scsw.count = ccw.count - sizeof(features); in virtio_ccw_cb()
424 ret = ccw_dstream_read(&sch->cds, features); in virtio_ccw_cb()
454 sch->curr_status.scsw.count = ccw.count - sizeof(features); in virtio_ccw_cb()
470 ret = ccw_dstream_write_buf(&sch->cds, vdev->config, len); in virtio_ccw_cb()
472 sch->curr_status.scsw.count = ccw.count - len; in virtio_ccw_cb()
487 ret = ccw_dstream_read_buf(&sch->cds, vdev->config, len); in virtio_ccw_cb()
490 sch->curr_status.scsw.count = ccw.count - len; in virtio_ccw_cb()
510 sch->curr_status.scsw.count = ccw.count - sizeof(vdev->status); in virtio_ccw_cb()
528 ret = ccw_dstream_read(&sch->cds, status); in virtio_ccw_cb()
542 sch->curr_status.scsw.count = ccw.count - sizeof(status); in virtio_ccw_cb()
561 if (sch->thinint_active) { in virtio_ccw_cb()
574 ret = ccw_dstream_read(&sch->cds, indicators); in virtio_ccw_cb()
580 sch->curr_status.scsw.count = ccw.count - sizeof(indicators); in virtio_ccw_cb()
598 ret = ccw_dstream_read(&sch->cds, indicators); in virtio_ccw_cb()
604 sch->curr_status.scsw.count = ccw.count - sizeof(indicators); in virtio_ccw_cb()
622 ret = ccw_dstream_read(&sch->cds, vq_config.index); in virtio_ccw_cb()
634 ret = ccw_dstream_write(&sch->cds, vq_config.num_max); in virtio_ccw_cb()
636 sch->curr_status.scsw.count = ccw.count - sizeof(vq_config); in virtio_ccw_cb()
653 } else if (dev->indicators && !sch->thinint_active) { in virtio_ccw_cb()
657 if (ccw_dstream_read(&sch->cds, thinint)) { in virtio_ccw_cb()
677 sch->thinint_active = ((dev->indicators != NULL) && in virtio_ccw_cb()
679 sch->curr_status.scsw.count = ccw.count - sizeof(thinint); in virtio_ccw_cb()
694 ret = ccw_dstream_read_buf(&sch->cds, &revinfo, 4); in virtio_ccw_cb()
725 static void virtio_sch_disable_cb(SubchDev *sch) in virtio_sch_disable_cb() argument
727 VirtioCcwDevice *dev = sch->driver_data; in virtio_sch_disable_cb()
737 SubchDev *sch; in virtio_ccw_device_realize() local
741 sch = css_create_sch(ccw_dev->devno, errp); in virtio_ccw_device_realize()
742 if (!sch) { in virtio_ccw_device_realize()
751 sch->driver_data = dev; in virtio_ccw_device_realize()
752 sch->ccw_cb = virtio_ccw_cb; in virtio_ccw_device_realize()
753 sch->disable_cb = virtio_sch_disable_cb; in virtio_ccw_device_realize()
754 sch->id.reserved = 0xff; in virtio_ccw_device_realize()
755 sch->id.cu_type = VIRTIO_CCW_CU_TYPE; in virtio_ccw_device_realize()
756 sch->do_subchannel_work = do_subchannel_work_virtual; in virtio_ccw_device_realize()
757 ccw_dev->sch = sch; in virtio_ccw_device_realize()
763 css_sch_build_virtual_schib(sch, 0, VIRTIO_CCW_CHPID_TYPE); in virtio_ccw_device_realize()
766 sch->cssid, sch->ssid, sch->schid, sch->devno, in virtio_ccw_device_realize()
789 css_subch_assign(sch->cssid, sch->ssid, sch->schid, sch->devno, NULL); in virtio_ccw_device_realize()
790 ccw_dev->sch = NULL; in virtio_ccw_device_realize()
791 g_free(sch); in virtio_ccw_device_realize()
798 SubchDev *sch = ccw_dev->sch; in virtio_ccw_device_unrealize() local
804 if (sch) { in virtio_ccw_device_unrealize()
805 css_subch_assign(sch->cssid, sch->ssid, sch->schid, sch->devno, NULL); in virtio_ccw_device_unrealize()
806 g_free(sch); in virtio_ccw_device_unrealize()
807 ccw_dev->sch = NULL; in virtio_ccw_device_unrealize()
825 static uint8_t virtio_set_ind_atomic(SubchDev *sch, uint64_t ind_loc, in virtio_set_ind_atomic() argument
836 __func__, sch->cssid, sch->ssid, sch->schid); in virtio_set_ind_atomic()
854 SubchDev *sch = ccw_dev->sch; in virtio_ccw_notify() local
871 if (sch->thinint_active) { in virtio_ccw_notify()
880 virtio_set_ind_atomic(sch, dev->indicators->addr + in virtio_ccw_notify()
883 if (!virtio_set_ind_atomic(sch, dev->summary_indicator->addr, in virtio_ccw_notify()
896 css_conditional_io_interrupt(sch); in virtio_ccw_notify()
909 css_conditional_io_interrupt(sch); in virtio_ccw_notify()
940 return !!(dev->sch->curr_status.pmcw.flags & PMCW_FLAGS_MASK_ENA); in virtio_ccw_query_guest_notifiers()
948 if (!ccw_dev->sch->thinint_active) { in virtio_ccw_get_mappings()
1071 bool with_irqfd = ccw_dev->sch->thinint_active && kvm_irqfds_enabled(); in virtio_ccw_set_guest_notifiers()
1155 SubchDev *sch = ccw_dev->sch; in virtio_ccw_device_plugged() local
1191 sch->id.cu_model = virtio_bus_get_vdev_id(&dev->bus); in virtio_ccw_device_plugged()
1194 css_generate_sch_crws(sch->cssid, sch->ssid, sch->schid, in virtio_ccw_device_plugged()