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

[Xen-devel] about the interrupt

hi, all
what I figure out the function flow about handling interrupt  is as below, is it true?

(1)when Interrupt come, guest will trap into xen. do_IRQ() will handle the interupt
(2)if the interrupt is for guest, then __do_IRQ_guest() will handle it
(3)__do_IRQ_guest() will call send_guest_pirq() or hvm_do_IRQ_dpci() 
(4)send_guest_pirq() will call evtchn_set_pending()
(5)evtchn_set_pending() will call vcpu_mark_events_pending()
(6)if it is hvm, it will call hvm_assert_evtchn_irq() to deliver irq to vioapic.
(8)guest will handle the interrupt, it will trap into the xen again.
(9)In vmx_vmexit_handler(), hvm_maybe_deassert_evtchn_irq() will be called to deassert the irq.

In evtchn_bind_pirq(), the evtchn is from get_free_port(), which means it is allocated randomly.
I want to who will call  evtchn_bind_pirq() ? 

Do you have any other doc, manual, url, wiki page about how xen handle interrupt ?

Best Regards,

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.