Lines Matching defs:vsc
172 struct virtio_softc *vsc = (struct virtio_softc *)parent;
177 vsc->sc_vqs = &sc->sc_vq[0];
178 vsc->sc_nvqs = 1;
179 if (vsc->sc_child)
181 vsc->sc_child = self;
182 vsc->sc_ipl = IPL_BIO;
183 sc->sc_virtio = vsc;
184 vsc->sc_driver_features = VIRTIO_BLK_F_RO | VIRTIO_F_NOTIFY_ON_EMPTY |
187 if (virtio_negotiate_features(vsc, vioblk_feature_names) != 0)
190 if (virtio_has_feature(vsc, VIRTIO_BLK_F_SIZE_MAX)) {
191 uint32_t size_max = virtio_read_device_config_4(vsc,
199 if (virtio_has_feature(vsc, VIRTIO_BLK_F_SEG_MAX)) {
200 uint32_t seg_max = virtio_read_device_config_4(vsc,
209 sc->sc_capacity = virtio_read_device_config_8(vsc,
212 if (virtio_alloc_vq(vsc, &sc->sc_vq[0], 0, ALLOC_SEGS, "I/O request")
220 if (virtio_has_feature(vsc, VIRTIO_F_NOTIFY_ON_EMPTY)) {
221 virtio_stop_vq_intr(vsc, &sc->sc_vq[0]);
249 if (virtio_has_feature(vsc, VIRTIO_BLK_F_RO))
256 if (virtio_attach_finish(vsc, va) != 0)
262 vsc->sc_child = VIRTIO_CHILD_ERROR;
316 struct virtio_softc *vsc = vq->vq_owner;
317 struct vioblk_softc *sc = (struct vioblk_softc *)vsc->sc_child;
323 virtio_stop_vq_intr(vsc, vq);
325 if (virtio_dequeue(vsc, vq, &slot, NULL) != 0) {
328 virtio_start_vq_intr(vsc, vq);
329 if (virtio_dequeue(vsc, vq, &slot, NULL) != 0)
333 vioblk_vq_done1(sc, vsc, vq, qe->qe_vr_index);
340 vioblk_vq_done1(struct vioblk_softc *sc, struct virtio_softc *vsc,
346 bus_dmamap_sync(vsc->sc_dmat, vr->vr_cmdsts, 0,
349 bus_dmamap_sync(vsc->sc_dmat, vr->vr_payload, 0, vr->vr_len,
352 bus_dmamap_unload(vsc->sc_dmat, vr->vr_payload);
354 bus_dmamap_sync(vsc->sc_dmat, vr->vr_cmdsts,
401 struct virtio_softc *vsc = sc->sc_virtio;
430 if (!virtio_has_feature(vsc, VIRTIO_BLK_F_FLUSH)) {
489 ret = bus_dmamap_load(vsc->sc_dmat, vr->vr_payload,
517 bus_dmamap_sync(vsc->sc_dmat, vr->vr_cmdsts,
521 bus_dmamap_sync(vsc->sc_dmat, vr->vr_payload, 0, len,
524 bus_dmamap_sync(vsc->sc_dmat, vr->vr_cmdsts,
534 virtio_enqueue_commit(vsc, vq, slot, 1);
547 if (virtio_poll_intr(vsc) && vr->vr_len == VIOBLK_DONE)
555 virtio_reinit_start(vsc);
556 virtio_reinit_end(vsc);