Lines Matching full:proxy
40 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_ioeventfd_enabled() local
42 return (proxy->flags & VIRTIO_IOMMIO_FLAG_USE_IOEVENTFD) != 0; in virtio_mmio_ioeventfd_enabled()
49 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_ioeventfd_assign() local
52 memory_region_add_eventfd(&proxy->iomem, VIRTIO_MMIO_QUEUE_NOTIFY, 4, in virtio_mmio_ioeventfd_assign()
55 memory_region_del_eventfd(&proxy->iomem, VIRTIO_MMIO_QUEUE_NOTIFY, 4, in virtio_mmio_ioeventfd_assign()
61 static void virtio_mmio_start_ioeventfd(VirtIOMMIOProxy *proxy) in virtio_mmio_start_ioeventfd() argument
63 virtio_bus_start_ioeventfd(&proxy->bus); in virtio_mmio_start_ioeventfd()
66 static void virtio_mmio_stop_ioeventfd(VirtIOMMIOProxy *proxy) in virtio_mmio_stop_ioeventfd() argument
68 virtio_bus_stop_ioeventfd(&proxy->bus); in virtio_mmio_stop_ioeventfd()
71 static void virtio_mmio_soft_reset(VirtIOMMIOProxy *proxy) in virtio_mmio_soft_reset() argument
75 virtio_bus_reset(&proxy->bus); in virtio_mmio_soft_reset()
77 if (!proxy->legacy) { in virtio_mmio_soft_reset()
79 proxy->vqs[i].enabled = 0; in virtio_mmio_soft_reset()
86 VirtIOMMIOProxy *proxy = (VirtIOMMIOProxy *)opaque; in virtio_mmio_read() local
87 VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); in virtio_mmio_read()
104 if (proxy->legacy) { in virtio_mmio_read()
118 if (proxy->legacy) { in virtio_mmio_read()
152 if (proxy->legacy) { in virtio_mmio_read()
162 if (proxy->legacy) { in virtio_mmio_read()
163 if (proxy->host_features_sel) { in virtio_mmio_read()
171 >> (32 * proxy->host_features_sel); in virtio_mmio_read()
179 if (!proxy->legacy) { in virtio_mmio_read()
187 >> proxy->guest_page_shift; in virtio_mmio_read()
189 if (proxy->legacy) { in virtio_mmio_read()
196 return proxy->vqs[vdev->queue_sel].enabled; in virtio_mmio_read()
202 if (proxy->legacy) { in virtio_mmio_read()
249 VirtIOMMIOProxy *proxy = (VirtIOMMIOProxy *)opaque; in virtio_mmio_write() local
250 VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); in virtio_mmio_write()
265 if (proxy->legacy) { in virtio_mmio_write()
306 proxy->host_features_sel = 1; in virtio_mmio_write()
308 proxy->host_features_sel = 0; in virtio_mmio_write()
312 if (proxy->legacy) { in virtio_mmio_write()
313 if (proxy->guest_features_sel) { in virtio_mmio_write()
322 proxy->guest_features[proxy->guest_features_sel] = value; in virtio_mmio_write()
327 proxy->guest_features_sel = 1; in virtio_mmio_write()
329 proxy->guest_features_sel = 0; in virtio_mmio_write()
333 if (!proxy->legacy) { in virtio_mmio_write()
340 proxy->guest_page_shift = ctz32(value); in virtio_mmio_write()
341 if (proxy->guest_page_shift > 31) { in virtio_mmio_write()
342 proxy->guest_page_shift = 0; in virtio_mmio_write()
344 trace_virtio_mmio_guest_page(value, proxy->guest_page_shift); in virtio_mmio_write()
355 if (proxy->legacy) { in virtio_mmio_write()
359 proxy->vqs[vdev->queue_sel].num = value; in virtio_mmio_write()
363 if (!proxy->legacy) { in virtio_mmio_write()
373 if (!proxy->legacy) { in virtio_mmio_write()
381 virtio_mmio_soft_reset(proxy); in virtio_mmio_write()
384 value << proxy->guest_page_shift); in virtio_mmio_write()
388 if (proxy->legacy) { in virtio_mmio_write()
397 proxy->vqs[vdev->queue_sel].num); in virtio_mmio_write()
399 ((uint64_t)proxy->vqs[vdev->queue_sel].desc[1]) << 32 | in virtio_mmio_write()
400 proxy->vqs[vdev->queue_sel].desc[0], in virtio_mmio_write()
401 ((uint64_t)proxy->vqs[vdev->queue_sel].avail[1]) << 32 | in virtio_mmio_write()
402 proxy->vqs[vdev->queue_sel].avail[0], in virtio_mmio_write()
403 ((uint64_t)proxy->vqs[vdev->queue_sel].used[1]) << 32 | in virtio_mmio_write()
404 proxy->vqs[vdev->queue_sel].used[0]); in virtio_mmio_write()
405 proxy->vqs[vdev->queue_sel].enabled = 1; in virtio_mmio_write()
407 proxy->vqs[vdev->queue_sel].enabled = 0; in virtio_mmio_write()
427 virtio_mmio_stop_ioeventfd(proxy); in virtio_mmio_write()
430 if (!proxy->legacy && (value & VIRTIO_CONFIG_S_FEATURES_OK)) { in virtio_mmio_write()
432 ((uint64_t)proxy->guest_features[1]) << 32 | in virtio_mmio_write()
433 proxy->guest_features[0]); in virtio_mmio_write()
439 virtio_mmio_start_ioeventfd(proxy); in virtio_mmio_write()
443 virtio_mmio_soft_reset(proxy); in virtio_mmio_write()
447 if (proxy->legacy) { in virtio_mmio_write()
454 proxy->vqs[vdev->queue_sel].desc[0] = value; in virtio_mmio_write()
457 if (proxy->legacy) { in virtio_mmio_write()
464 proxy->vqs[vdev->queue_sel].desc[1] = value; in virtio_mmio_write()
467 if (proxy->legacy) { in virtio_mmio_write()
474 proxy->vqs[vdev->queue_sel].avail[0] = value; in virtio_mmio_write()
477 if (proxy->legacy) { in virtio_mmio_write()
484 proxy->vqs[vdev->queue_sel].avail[1] = value; in virtio_mmio_write()
487 if (proxy->legacy) { in virtio_mmio_write()
494 proxy->vqs[vdev->queue_sel].used[0] = value; in virtio_mmio_write()
497 if (proxy->legacy) { in virtio_mmio_write()
504 proxy->vqs[vdev->queue_sel].used[1] = value; in virtio_mmio_write()
540 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(opaque); in virtio_mmio_update_irq() local
541 VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); in virtio_mmio_update_irq()
549 qemu_set_irq(proxy->irq, level); in virtio_mmio_update_irq()
554 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(opaque); in virtio_mmio_load_config() local
556 proxy->host_features_sel = qemu_get_be32(f); in virtio_mmio_load_config()
557 proxy->guest_features_sel = qemu_get_be32(f); in virtio_mmio_load_config()
558 proxy->guest_page_shift = qemu_get_be32(f); in virtio_mmio_load_config()
564 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(opaque); in virtio_mmio_save_config() local
566 qemu_put_be32(f, proxy->host_features_sel); in virtio_mmio_save_config()
567 qemu_put_be32(f, proxy->guest_features_sel); in virtio_mmio_save_config()
568 qemu_put_be32(f, proxy->guest_page_shift); in virtio_mmio_save_config()
613 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(opaque); in virtio_mmio_save_extra_state() local
615 vmstate_save_state(f, &vmstate_virtio_mmio, proxy, NULL); in virtio_mmio_save_extra_state()
620 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(opaque); in virtio_mmio_load_extra_state() local
622 return vmstate_load_state(f, &vmstate_virtio_mmio, proxy, 1); in virtio_mmio_load_extra_state()
627 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(opaque); in virtio_mmio_has_extra_state() local
629 return !proxy->legacy; in virtio_mmio_has_extra_state()
634 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_reset() local
637 virtio_mmio_soft_reset(proxy); in virtio_mmio_reset()
639 proxy->host_features_sel = 0; in virtio_mmio_reset()
640 proxy->guest_features_sel = 0; in virtio_mmio_reset()
641 proxy->guest_page_shift = 0; in virtio_mmio_reset()
643 if (!proxy->legacy) { in virtio_mmio_reset()
644 proxy->guest_features[0] = proxy->guest_features[1] = 0; in virtio_mmio_reset()
647 proxy->vqs[i].num = 0; in virtio_mmio_reset()
648 proxy->vqs[i].desc[0] = proxy->vqs[i].desc[1] = 0; in virtio_mmio_reset()
649 proxy->vqs[i].avail[0] = proxy->vqs[i].avail[1] = 0; in virtio_mmio_reset()
650 proxy->vqs[i].used[0] = proxy->vqs[i].used[1] = 0; in virtio_mmio_reset()
658 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_set_guest_notifier() local
659 VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); in virtio_mmio_set_guest_notifier()
684 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_set_config_guest_notifier() local
685 VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); in virtio_mmio_set_config_guest_notifier()
708 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_set_guest_notifiers() local
709 VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); in virtio_mmio_set_guest_notifiers()
744 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_pre_plugged() local
745 VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus); in virtio_mmio_pre_plugged()
747 if (!proxy->legacy) { in virtio_mmio_pre_plugged()
765 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_realizefn() local
768 qbus_init(&proxy->bus, sizeof(proxy->bus), TYPE_VIRTIO_MMIO_BUS, d, NULL); in virtio_mmio_realizefn()
769 sysbus_init_irq(sbd, &proxy->irq); in virtio_mmio_realizefn()
773 proxy->flags &= ~VIRTIO_IOMMIO_FLAG_USE_IOEVENTFD; in virtio_mmio_realizefn()
776 if (proxy->legacy) { in virtio_mmio_realizefn()
777 memory_region_init_io(&proxy->iomem, OBJECT(d), in virtio_mmio_realizefn()
778 &virtio_legacy_mem_ops, proxy, in virtio_mmio_realizefn()
781 memory_region_init_io(&proxy->iomem, OBJECT(d), in virtio_mmio_realizefn()
782 &virtio_mem_ops, proxy, in virtio_mmio_realizefn()
785 sysbus_init_mmio(sbd, &proxy->iomem); in virtio_mmio_realizefn()
822 * device on the virtio-mmio bus to the bus that the virtio-mmio proxy in virtio_mmio_bus_get_dev_path()
850 VirtIOMMIOProxy *proxy = VIRTIO_MMIO(d); in virtio_mmio_vmstate_change() local
853 virtio_mmio_start_ioeventfd(proxy); in virtio_mmio_vmstate_change()
855 virtio_mmio_stop_ioeventfd(proxy); in virtio_mmio_vmstate_change()