diff -r 7fe15a0ee3d8 xen/drivers/passthrough/vtd/iommu.h --- a/xen/drivers/passthrough/vtd/iommu.h Tue Feb 17 11:20:18 2009 +0000 +++ b/xen/drivers/passthrough/vtd/iommu.h Tue Feb 17 18:18:31 2009 -0800 @@ -397,8 +397,8 @@ struct poll_info { u32 udata; }; -#define MAX_QINVAL_PAGES 8 #define NUM_QINVAL_PAGES 1 +#define IQA_REG_QS 0 // derived from NUM_QINVAL_PAGES per VT-d spec. #define QINVAL_ENTRY_NR (PAGE_SIZE_4K*NUM_QINVAL_PAGES/sizeof(struct qinval_entry)) #define qinval_present(v) ((v).lo & 1) #define qinval_fault_disable(v) (((v).lo >> 1) & 1) diff -r 7fe15a0ee3d8 xen/drivers/passthrough/vtd/qinval.c --- a/xen/drivers/passthrough/vtd/qinval.c Tue Feb 17 11:20:18 2009 +0000 +++ b/xen/drivers/passthrough/vtd/qinval.c Tue Feb 17 18:05:25 2009 -0800 @@ -445,8 +445,7 @@ int qinval_setup(struct iommu *iommu) * registers are automatically reset to 0 with write * to IQA register. */ - if ( NUM_QINVAL_PAGES <= MAX_QINVAL_PAGES ) - qi_ctrl->qinval_maddr |= NUM_QINVAL_PAGES - 1; + qi_ctrl->qinval_maddr |= IQA_REG_QS; dmar_writeq(iommu->reg, DMAR_IQA_REG, qi_ctrl->qinval_maddr); /* enable queued invalidation hardware */