mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
intel-iommu: add supports for queued invalidation interface
Add supports for queued invalidation interface, an expended invalidation interface with extended capabilities. Signed-off-by: Le Tan <tamlokveer@gmail.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
ac40aa1540
commit
ed7b8fbcfb
2 changed files with 393 additions and 7 deletions
|
@ -255,12 +255,27 @@ typedef enum VTDFaultReason {
|
|||
VTD_FR_MAX, /* Guard */
|
||||
} VTDFaultReason;
|
||||
|
||||
/* Masks for Queued Invalidation Descriptor */
|
||||
#define VTD_INV_DESC_TYPE 0xf
|
||||
#define VTD_INV_DESC_CC 0x1 /* Context-cache Invalidate Desc */
|
||||
#define VTD_INV_DESC_IOTLB 0x2
|
||||
#define VTD_INV_DESC_WAIT 0x5 /* Invalidation Wait Descriptor */
|
||||
#define VTD_INV_DESC_NONE 0 /* Not an Invalidate Descriptor */
|
||||
/* Queued Invalidation Descriptor */
|
||||
struct VTDInvDesc {
|
||||
uint64_t lo;
|
||||
uint64_t hi;
|
||||
};
|
||||
typedef struct VTDInvDesc VTDInvDesc;
|
||||
|
||||
/* Masks for struct VTDInvDesc */
|
||||
#define VTD_INV_DESC_TYPE 0xf
|
||||
#define VTD_INV_DESC_CC 0x1 /* Context-cache Invalidate Desc */
|
||||
#define VTD_INV_DESC_IOTLB 0x2
|
||||
#define VTD_INV_DESC_WAIT 0x5 /* Invalidation Wait Descriptor */
|
||||
#define VTD_INV_DESC_NONE 0 /* Not an Invalidate Descriptor */
|
||||
|
||||
/* Masks for Invalidation Wait Descriptor*/
|
||||
#define VTD_INV_DESC_WAIT_SW (1ULL << 5)
|
||||
#define VTD_INV_DESC_WAIT_IF (1ULL << 4)
|
||||
#define VTD_INV_DESC_WAIT_FN (1ULL << 6)
|
||||
#define VTD_INV_DESC_WAIT_DATA_SHIFT 32
|
||||
#define VTD_INV_DESC_WAIT_RSVD_LO 0Xffffff80ULL
|
||||
#define VTD_INV_DESC_WAIT_RSVD_HI 3ULL
|
||||
|
||||
/* Pagesize of VTD paging structures, including root and context tables */
|
||||
#define VTD_PAGE_SHIFT 12
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue