diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-10-19 10:50:46 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-10-19 10:50:46 +0100 |
commit | 88cc4a0fc546e7a5bb3abd71fd99485b6bf698ab (patch) | |
tree | 38c78c7675bb4331ebf5babafaa383e1c397c780 /xen/include/xen/hvm | |
parent | 70829c3d48270689fdea6ec8808a232d88483d65 (diff) | |
download | xen-88cc4a0fc546e7a5bb3abd71fd99485b6bf698ab.tar.gz xen-88cc4a0fc546e7a5bb3abd71fd99485b6bf698ab.tar.bz2 xen-88cc4a0fc546e7a5bb3abd71fd99485b6bf698ab.zip |
x86: vMSI: Fix msi irq affinity issue for hvm guest.
There is a race between guest setting new vector and doing EOI on old
vector. Once guest sets new vector before its doing EOI on vector,
when guest does eoi, hypervisor may fail to find the related pirq, and
hypervisor may miss to EOI real vector and leads to system hang. We
may need to add a timer for each pirq interrupt source to avoid host
hang, but this is another topic, and will be addressed later.
Signed-off-by: Xiantao Zhang <xiantao.zhang@intel.com>
Diffstat (limited to 'xen/include/xen/hvm')
-rw-r--r-- | xen/include/xen/hvm/irq.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/xen/include/xen/hvm/irq.h b/xen/include/xen/hvm/irq.h index c1747ed73c..9e2eedbf6a 100644 --- a/xen/include/xen/hvm/irq.h +++ b/xen/include/xen/hvm/irq.h @@ -58,8 +58,10 @@ struct dev_intx_gsi_link { #define GLFAGS_SHIFT_TRG_MODE 15 struct hvm_gmsi_info { - uint32_t gvec; + uint16_t gvec; + uint16_t old_gvec; uint32_t gflags; + uint32_t old_gflags; int dest_vcpu_id; /* -1 :multi-dest, non-negative: dest_vcpu_id */ }; |