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

[Xen-devel] map_domain_emuirq_pirq() imbalance with unmap_domain_pirq_emuirq()?



Hi Stefano,

in your patch to introduce pIRQ interrupt remapping for HVM guests,
you have physdev_map_pirq() call unmap_domain_pirq_emuirq()
unconditionally in the HVM case, yet physdev_hvm_map_pirq() call
map_domain_emuirq_pirq() only if no machine_gsi was found. I'm
suspecting this to be the reason for pass-through device hot unplug
resource leaks (leading eventually to hot plug failure on repeated
attempts), as in this case it is my understanding that
unmap_domain_pirq_emuirq() can only be expected to fail (for there
not being an established mapping), leading to physdev_unmap_pirq()
bailing out early.

As it's not immediately clear whether using the same lookup approach
that physdev_hvm_map_pirq() uses would be valid in the unmap path,
I'm hoping for your advice how to address this problem. Is there
perhaps a map_domain_emuirq_pirq(..., IRQ_PT) call missing?

Besides that, in 23806:4226ea1785b5 you move a call to
map_domain_emuirq_pirq() from xen/arch/x86/physdev.c to
xen/common/event_channel.c, but neither before nor after the patch
the function's return value gets checked, yet the function has various
ways to fail. Is failure here really benign?

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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