qemu-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-discuss] virtio guest->host notify, host->guest notify


From: Fam Zheng
Subject: Re: [Qemu-discuss] virtio guest->host notify, host->guest notify
Date: Mon, 1 Aug 2016 09:44:03 +0800
User-agent: Mutt/1.6.1 (2016-04-27)

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 <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
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]