VT-d/qinval: make local variable used for communication with IOMMU "volatile" Without that there is - afaict - nothing preventing the compiler from putting the variable into a register for the duration of the wait loop. Signed-off-by: Jan Beulich --- a/xen/drivers/passthrough/vtd/qinval.c +++ b/xen/drivers/passthrough/vtd/qinval.c @@ -196,7 +196,7 @@ static int queue_invalidate_wait(struct u8 iflag, u8 sw, u8 fn) { s_time_t start_time; - u32 poll_slot = QINVAL_STAT_INIT; + volatile u32 poll_slot = QINVAL_STAT_INIT; int index = -1; int ret = -1; unsigned long flags;