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

Re: [Xen-devel] [Xenhackthon] Virtualized APIC registers - virtual interrupt delivery.

>>> On 22.05.13 at 18:21, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote:
> Which means that if this is set to be higher than the hypervisor timer
> or IPI callback the guest can run unbounded. Also it would seem that
> this value has to be often reset when migrating a guest between the pCPUs.
> And it would appear that this value is static. Meaning the guest only
> sets these vectors once and the hypervisor is responsible for managing
> the priority of that guest and other guests (say dom0) on the CPU.
> For example, we have a guest with a 10gB NIC and the guest has decided
> to use vector 0x80 for it (assume a UP guest). Dom0 has an SAS controller
> and is using event number 30, 31, 32, and 33 (there are only 4 PCPUS).
> The hypervisor maps them to be 0x58, 0x68, 0x78 and 0x88 and spreads those
> vectors on each pCPU. The guest is running on pCPU1 and there are two
> vectors - 0x80 and 0x58. The one assigned to the guest wins and dom0
> SAS controller is preempted.
> The solution for that seems to have some interaction with the
> guest when it allocates the vectors so that they are always below
> the dom0 priority vectors. Or hypervisor has to dynamically shuffle its
> own vectors to be higher priority.
> Or is there an guest vector <-> hypervisor vector lookup table that
> the CPU can use? So the hypervisor can say: the vector 0x80 in the
> guest actually maps to vector 0x48 in the hypervisor?

It is my understanding that the vector spaces are separate, and
hence guest interrupts can't block host ones (like the timer). Iirc
there's some sort of flag bit in the IRTE to tell whether an interrupt
should get delivered directly to the guest, or to the hypervisor.



Xen-devel mailing list



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