On Sat, 07/30 17:59, Charls D. Chap wrote: > Hello List, > > I have these 3 different call graphs, they are somehow connected in > the Virtio-blk I/O path. Any help??
Help on what? I don't see a question to answer in your message. Please be specific. Fam > > "->" 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 <chapcha...@gmail.com> 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 >