[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-discuss] virtio guest->host notify, host->guest notify
From: |
Charls D. Chap |
Subject: |
[Qemu-discuss] virtio guest->host notify, host->guest notify |
Date: |
Sat, 30 Jul 2016 17:59:44 +0300 |
Hello List,
I have these 3 different call graphs, they are somehow connected in
the Virtio-blk I/O path. Any help??
"->" means "invokes"
virtio_blk_device_realize -> virtio_blk_complete_request ->
virtqueue_push, virtqueue_notify, virtio_notify_vector -> pci_set_irq ->
pci_irq_handler -> pci_change_irq_level
chain 2)
virtio_blk_device_realize -> virtio_blk_handle_output ->
virtio_blk_submit_multireq -> submit_requests _>
blk_aio_writev -> virtio_blk_rw_complete -> virtio_blk_req_complete ->
complete_request_vring -> qemu_bh_schedule -> aio_notify ->
event_notifier_set(EventNotifier *e)
do {
ret = write(e->wfd, &value, sizeof(value));
} w
chain 3)
virtio_pci_config_write -> virtio_ioport_write -> virtio_queue_notify ->
virtio_queue_notify_vq ->
VIRTIO_PCI_QUEUE_NOTIFY:
/**
* Notify hypervisor about queue update
*/
void virtio_queue_notify(struct virtio_device *dev, int queue)
{
if (dev->type == VIRTIO_TYPE_PCI) {
ci_write_16(dev->base+VIRTIOHDR_QUEUE_NOTIFY, cpu_to_le16(queue));
}
}
Thanks in advance
On Sat, Jul 30, 2016 at 4:38 PM, Charls D. Chap <address@hidden> wrote:
> Hello List,
>
> I have these 3 different call graphs, they are somehow connected in
> the Virtio-blk I/O path. Any help??
>
> "->" means "invokes"
>
> virtio_blk_device_realize -> virtio_blk_complete_request ->
> virtqueue_push, virtqueue_notify, virtio_notify_vector -> pci_set_irq ->
> pci_irq_handler -> pci_change_irq_level
>
>
> chain 2)
> virtio_blk_device_realize -> virtio_blk_handle_output ->
> virtio_blk_submit_multireq -> submit_requests _>
> blk_aio_writev -> virtio_blk_rw_complete -> virtio_blk_req_complete ->
> complete_request_vring -> qemu_bh_schedule -> aio_notify ->
> event_notifier_set(EventNotifier *e)
> do {
> ret = write(e->wfd, &value, sizeof(value));
> } w
>
>
> chain 3)
> virtio_pci_config_write -> virtio_ioport_write -> virtio_queue_notify ->
> virtio_queue_notify_vq ->
>
> VIRTIO_PCI_QUEUE_NOTIFY:
> /**
> * Notify hypervisor about queue update
> */
> void virtio_queue_notify(struct virtio_device *dev, int queue)
> {
> if (dev->type == VIRTIO_TYPE_PCI) {
> ci_write_16(dev->base+VIRTIOHDR_QUEUE_NOTIFY, cpu_to_le16(queue));
> }
> }
>
> Thanks in advance
- [Qemu-discuss] virtio guest->host notify, host->guest notify,
Charls D. Chap <=