• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/usr.sbin/bhyve/

Lines Matching refs:vs

59 #define	DEV_SOFTC(vs) ((void *)(vs))
66 vi_softc_linkup(struct virtio_softc *vs, struct virtio_consts *vc,
72 /* vs and dev_softc addresses must match */
73 assert((void *)vs == dev_softc);
74 vs->vs_vc = vc;
75 vs->vs_pi = pi;
76 pi->pi_arg = vs;
78 vs->vs_queues = queues;
80 queues[i].vq_vs = vs;
95 vi_reset_dev(struct virtio_softc *vs)
100 if (vs->vs_mtx)
101 assert(pthread_mutex_isowned_np(vs->vs_mtx));
103 nvq = vs->vs_vc->vc_nvq;
104 for (vq = vs->vs_queues, i = 0; i < nvq; vq++, i++) {
112 vs->vs_negotiated_caps = 0;
113 vs->vs_curq = 0;
114 /* vs->vs_status = 0; -- redundant */
115 if (vs->vs_isr)
116 pci_lintr_deassert(vs->vs_pi);
117 vs->vs_isr = 0;
118 vs->vs_msix_cfg_idx = VIRTIO_MSI_NO_VECTOR;
125 vi_set_io_bar(struct virtio_softc *vs, int barnum)
133 size = VTCFG_R_CFG1 + vs->vs_vc->vc_cfgsize;
134 pci_emul_alloc_bar(vs->vs_pi, barnum, PCIBAR_IO, size);
145 vi_intr_init(struct virtio_softc *vs, int barnum, int use_msix)
150 vs->vs_flags |= VIRTIO_USE_MSIX;
151 VS_LOCK(vs);
152 vi_reset_dev(vs); /* set all vectors to NO_VECTOR */
153 VS_UNLOCK(vs);
154 nvec = vs->vs_vc->vc_nvq + 1;
155 if (pci_emul_add_msixcap(vs->vs_pi, nvec, barnum))
158 vs->vs_flags &= ~VIRTIO_USE_MSIX;
161 pci_emul_add_msicap(vs->vs_pi, 1);
164 pci_lintr_request(vs->vs_pi);
170 * Initialize the currently-selected virtio queue (vs->vs_curq).
175 vi_vq_init(struct virtio_softc *vs, uint32_t pfn)
182 vq = &vs->vs_queues[vs->vs_curq];
186 base = paddr_guest2host(vs->vs_pi->pi_vmctx, phys, size);
242 * at vs->vs_pi) so that it can find indirect descriptors.
274 struct virtio_softc *vs;
277 vs = vq->vq_vs;
278 name = vs->vs_vc->vc_name;
313 ctx = vs->vs_pi->pi_vmctx;
328 } else if ((vs->vs_vc->vc_hv_caps &
469 struct virtio_softc *vs;
482 vs = vq->vq_vs;
493 (vs->vs_negotiated_caps & VIRTIO_F_NOTIFY_ON_EMPTY))
495 else if (vs->vs_negotiated_caps & VIRTIO_RING_F_EVENT_IDX) {
508 vq_interrupt(vs, vq);
560 struct virtio_softc *vs = pi->pi_arg;
569 if (vs->vs_flags & VIRTIO_USE_MSIX) {
579 if (vs->vs_mtx)
580 pthread_mutex_lock(vs->vs_mtx);
582 vc = vs->vs_vc;
604 error = (*vc->vc_cfgread)(DEV_SOFTC(vs), newoff, size, &value);
630 value = vs->vs_negotiated_caps;
633 if (vs->vs_curq < vc->vc_nvq)
634 value = vs->vs_queues[vs->vs_curq].vq_pfn;
637 value = vs->vs_curq < vc->vc_nvq ?
638 vs->vs_queues[vs->vs_curq].vq_qsize : 0;
641 value = vs->vs_curq;
647 value = vs->vs_status;
650 value = vs->vs_isr;
651 vs->vs_isr = 0; /* a read clears this flag */
656 value = vs->vs_msix_cfg_idx;
659 value = vs->vs_curq < vc->vc_nvq ?
660 vs->vs_queues[vs->vs_curq].vq_msix_idx :
665 if (vs->vs_mtx)
666 pthread_mutex_unlock(vs->vs_mtx);
680 struct virtio_softc *vs = pi->pi_arg;
689 if (vs->vs_flags & VIRTIO_USE_MSIX) {
700 if (vs->vs_mtx)
701 pthread_mutex_lock(vs->vs_mtx);
703 vc = vs->vs_vc;
723 error = (*vc->vc_cfgwrite)(DEV_SOFTC(vs), newoff, size, value);
751 vs->vs_negotiated_caps = value & vc->vc_hv_caps;
753 (*vc->vc_apply_features)(DEV_SOFTC(vs),
754 vs->vs_negotiated_caps);
757 if (vs->vs_curq >= vc->vc_nvq)
759 vi_vq_init(vs, value);
767 vs->vs_curq = value;
775 vq = &vs->vs_queues[value];
777 (*vq->vq_notify)(DEV_SOFTC(vs), vq);
779 (*vc->vc_qnotify)(DEV_SOFTC(vs), vq);
786 vs->vs_status = value;
788 (*vc->vc_reset)(DEV_SOFTC(vs));
791 vs->vs_msix_cfg_idx = value;
794 if (vs->vs_curq >= vc->vc_nvq)
796 vq = &vs->vs_queues[vs->vs_curq];
805 name, cr->cr_name, vs->vs_curq, vc->vc_nvq);
807 if (vs->vs_mtx)
808 pthread_mutex_unlock(vs->vs_mtx);
815 struct virtio_softc *vs;
818 vs = pi->pi_arg;
819 vc = vs->vs_vc;
821 vc = vs->vs_vc;
823 (*vc->vc_pause)(DEV_SOFTC(vs));
831 struct virtio_softc *vs;
834 vs = pi->pi_arg;
835 vc = vs->vs_vc;
837 vc = vs->vs_vc;
839 (*vc->vc_resume)(DEV_SOFTC(vs));
845 vi_pci_snapshot_softc(struct virtio_softc *vs, struct vm_snapshot_meta *meta)
849 SNAPSHOT_VAR_OR_LEAVE(vs->vs_flags, meta, ret, done);
850 SNAPSHOT_VAR_OR_LEAVE(vs->vs_negotiated_caps, meta, ret, done);
851 SNAPSHOT_VAR_OR_LEAVE(vs->vs_curq, meta, ret, done);
852 SNAPSHOT_VAR_OR_LEAVE(vs->vs_status, meta, ret, done);
853 SNAPSHOT_VAR_OR_LEAVE(vs->vs_isr, meta, ret, done);
854 SNAPSHOT_VAR_OR_LEAVE(vs->vs_msix_cfg_idx, meta, ret, done);
874 vi_pci_snapshot_queues(struct virtio_softc *vs, struct vm_snapshot_meta *meta)
882 vc = vs->vs_vc;
886 vq = &vs->vs_queues[i];
924 struct virtio_softc *vs;
928 vs = pi->pi_arg;
929 vc = vs->vs_vc;
932 ret = vi_pci_snapshot_softc(vs, meta);
942 ret = vi_pci_snapshot_queues(vs, meta);
948 ret = (*vc->vc_snapshot)(DEV_SOFTC(vs), meta);