Lines Matching refs:sch
47 ccw_dev->sch->driver_data = dev; in virtio_ccw_dev_post_load()
48 if (ccw_dev->sch->thinint_active) { in virtio_ccw_dev_post_load()
123 VirtIODevice *virtio_ccw_get_vdev(SubchDev *sch) in virtio_ccw_get_vdev() argument
126 VirtioCcwDevice *dev = sch->driver_data; in virtio_ccw_get_vdev()
156 SubchDev *sch = ccw_dev->sch; in virtio_ccw_ioeventfd_assign() local
157 uint32_t sch_id = (css_build_subchannel_id(sch) << 16) | sch->schid; in virtio_ccw_ioeventfd_assign()
203 static int virtio_ccw_set_vqs(SubchDev *sch, VqInfoBlock *info, in virtio_ccw_set_vqs() argument
206 VirtIODevice *vdev = virtio_ccw_get_vdev(sch); in virtio_ccw_set_vqs()
269 ccw_dev->sch->thinint_active = false; in virtio_ccw_reset_virtio()
272 static int virtio_ccw_handle_set_vq(SubchDev *sch, CCW1 ccw, bool check_len, in virtio_ccw_handle_set_vq() argument
292 ret = ccw_dstream_read(&sch->cds, linfo); in virtio_ccw_handle_set_vq()
300 ret = virtio_ccw_set_vqs(sch, NULL, &linfo); in virtio_ccw_handle_set_vq()
302 ret = ccw_dstream_read(&sch->cds, info); in virtio_ccw_handle_set_vq()
311 ret = virtio_ccw_set_vqs(sch, &info, NULL); in virtio_ccw_handle_set_vq()
313 sch->curr_status.scsw.count = 0; in virtio_ccw_handle_set_vq()
317 static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw) in virtio_ccw_cb() argument
325 VirtioCcwDevice *dev = sch->driver_data; in virtio_ccw_cb()
326 VirtIODevice *vdev = virtio_ccw_get_vdev(sch); in virtio_ccw_cb()
335 trace_virtio_ccw_interpret_ccw(sch->cssid, sch->ssid, sch->schid, in virtio_ccw_cb()
358 ret = virtio_ccw_handle_set_vq(sch, ccw, check_len, dev->revision < 1); in virtio_ccw_cb()
380 ccw_dstream_advance(&sch->cds, sizeof(features.features)); in virtio_ccw_cb()
381 ret = ccw_dstream_read(&sch->cds, features.index); in virtio_ccw_cb()
403 ccw_dstream_rewind(&sch->cds); in virtio_ccw_cb()
405 ret = ccw_dstream_write(&sch->cds, features.features); in virtio_ccw_cb()
407 sch->curr_status.scsw.count = ccw.count - sizeof(features); in virtio_ccw_cb()
425 ret = ccw_dstream_read(&sch->cds, features); in virtio_ccw_cb()
455 sch->curr_status.scsw.count = ccw.count - sizeof(features); in virtio_ccw_cb()
471 ret = ccw_dstream_write_buf(&sch->cds, vdev->config, len); in virtio_ccw_cb()
473 sch->curr_status.scsw.count = ccw.count - len; in virtio_ccw_cb()
488 ret = ccw_dstream_read_buf(&sch->cds, vdev->config, len); in virtio_ccw_cb()
491 sch->curr_status.scsw.count = ccw.count - len; in virtio_ccw_cb()
511 sch->curr_status.scsw.count = ccw.count - sizeof(vdev->status); in virtio_ccw_cb()
529 ret = ccw_dstream_read(&sch->cds, status); in virtio_ccw_cb()
543 sch->curr_status.scsw.count = ccw.count - sizeof(status); in virtio_ccw_cb()
562 if (sch->thinint_active) { in virtio_ccw_cb()
575 ret = ccw_dstream_read(&sch->cds, indicators); in virtio_ccw_cb()
581 sch->curr_status.scsw.count = ccw.count - sizeof(indicators); in virtio_ccw_cb()
599 ret = ccw_dstream_read(&sch->cds, indicators); in virtio_ccw_cb()
605 sch->curr_status.scsw.count = ccw.count - sizeof(indicators); in virtio_ccw_cb()
623 ret = ccw_dstream_read(&sch->cds, vq_config.index); in virtio_ccw_cb()
635 ret = ccw_dstream_write(&sch->cds, vq_config.num_max); in virtio_ccw_cb()
637 sch->curr_status.scsw.count = ccw.count - sizeof(vq_config); in virtio_ccw_cb()
654 } else if (dev->indicators && !sch->thinint_active) { in virtio_ccw_cb()
658 if (ccw_dstream_read(&sch->cds, thinint)) { in virtio_ccw_cb()
678 sch->thinint_active = ((dev->indicators != NULL) && in virtio_ccw_cb()
680 sch->curr_status.scsw.count = ccw.count - sizeof(thinint); in virtio_ccw_cb()
695 ret = ccw_dstream_read_buf(&sch->cds, &revinfo, 4); in virtio_ccw_cb()
726 static void virtio_sch_disable_cb(SubchDev *sch) in virtio_sch_disable_cb() argument
728 VirtioCcwDevice *dev = sch->driver_data; in virtio_sch_disable_cb()
738 SubchDev *sch; in virtio_ccw_device_realize() local
742 sch = css_create_sch(ccw_dev->devno, errp); in virtio_ccw_device_realize()
743 if (!sch) { in virtio_ccw_device_realize()
752 sch->driver_data = dev; in virtio_ccw_device_realize()
753 sch->ccw_cb = virtio_ccw_cb; in virtio_ccw_device_realize()
754 sch->disable_cb = virtio_sch_disable_cb; in virtio_ccw_device_realize()
755 sch->id.reserved = 0xff; in virtio_ccw_device_realize()
756 sch->id.cu_type = VIRTIO_CCW_CU_TYPE; in virtio_ccw_device_realize()
757 sch->do_subchannel_work = do_subchannel_work_virtual; in virtio_ccw_device_realize()
758 sch->irb_cb = build_irb_virtual; in virtio_ccw_device_realize()
759 ccw_dev->sch = sch; in virtio_ccw_device_realize()
765 css_sch_build_virtual_schib(sch, 0, VIRTIO_CCW_CHPID_TYPE); in virtio_ccw_device_realize()
768 sch->cssid, sch->ssid, sch->schid, sch->devno, in virtio_ccw_device_realize()
792 css_subch_assign(sch->cssid, sch->ssid, sch->schid, sch->devno, NULL); in virtio_ccw_device_realize()
793 ccw_dev->sch = NULL; in virtio_ccw_device_realize()
794 g_free(sch); in virtio_ccw_device_realize()
801 SubchDev *sch = ccw_dev->sch; in virtio_ccw_device_unrealize() local
807 if (sch) { in virtio_ccw_device_unrealize()
808 css_subch_assign(sch->cssid, sch->ssid, sch->schid, sch->devno, NULL); in virtio_ccw_device_unrealize()
809 g_free(sch); in virtio_ccw_device_unrealize()
810 ccw_dev->sch = NULL; in virtio_ccw_device_unrealize()
828 static uint8_t virtio_set_ind_atomic(SubchDev *sch, uint64_t ind_loc, in virtio_set_ind_atomic() argument
839 __func__, sch->cssid, sch->ssid, sch->schid); in virtio_set_ind_atomic()
857 SubchDev *sch = ccw_dev->sch; in virtio_ccw_notify() local
874 if (sch->thinint_active) { in virtio_ccw_notify()
883 virtio_set_ind_atomic(sch, dev->indicators->addr + in virtio_ccw_notify()
886 if (!virtio_set_ind_atomic(sch, dev->summary_indicator->addr, in virtio_ccw_notify()
899 css_conditional_io_interrupt(sch); in virtio_ccw_notify()
912 css_conditional_io_interrupt(sch); in virtio_ccw_notify()
943 return !!(dev->sch->curr_status.pmcw.flags & PMCW_FLAGS_MASK_ENA); in virtio_ccw_query_guest_notifiers()
951 if (!ccw_dev->sch->thinint_active) { in virtio_ccw_get_mappings()
1074 bool with_irqfd = ccw_dev->sch->thinint_active && kvm_irqfds_enabled(); in virtio_ccw_set_guest_notifiers()
1158 SubchDev *sch = ccw_dev->sch; in virtio_ccw_device_plugged() local
1193 sch->id.cu_model = virtio_bus_get_vdev_id(&dev->bus); in virtio_ccw_device_plugged()
1196 css_generate_sch_crws(sch->cssid, sch->ssid, sch->schid, in virtio_ccw_device_plugged()