mirror of https://github.com/xqemu/xqemu.git
intel_iommu: allow migration
IOMMU needs to be migrated before all the PCI devices (in case there are devices that will request for address translation). So marking it with a priority higher than the default (which PCI devices and other belong). Migration framework handled the rest. Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
f37bc03623
commit
8cdcf3c1e5
|
@ -1996,7 +1996,27 @@ static void vtd_iommu_notify_flag_changed(MemoryRegion *iommu,
|
||||||
|
|
||||||
static const VMStateDescription vtd_vmstate = {
|
static const VMStateDescription vtd_vmstate = {
|
||||||
.name = "iommu-intel",
|
.name = "iommu-intel",
|
||||||
.unmigratable = 1,
|
.version_id = 1,
|
||||||
|
.minimum_version_id = 1,
|
||||||
|
.priority = MIG_PRI_IOMMU,
|
||||||
|
.fields = (VMStateField[]) {
|
||||||
|
VMSTATE_UINT64(root, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT64(intr_root, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT64(iq, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT32(intr_size, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT16(iq_head, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT16(iq_tail, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT16(iq_size, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT16(next_frcd_reg, IntelIOMMUState),
|
||||||
|
VMSTATE_UINT8_ARRAY(csr, IntelIOMMUState, DMAR_REG_SIZE),
|
||||||
|
VMSTATE_UINT8(iq_last_desc_type, IntelIOMMUState),
|
||||||
|
VMSTATE_BOOL(root_extended, IntelIOMMUState),
|
||||||
|
VMSTATE_BOOL(dmar_enabled, IntelIOMMUState),
|
||||||
|
VMSTATE_BOOL(qi_enabled, IntelIOMMUState),
|
||||||
|
VMSTATE_BOOL(intr_enabled, IntelIOMMUState),
|
||||||
|
VMSTATE_BOOL(intr_eime, IntelIOMMUState),
|
||||||
|
VMSTATE_END_OF_LIST()
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const MemoryRegionOps vtd_mem_ops = {
|
static const MemoryRegionOps vtd_mem_ops = {
|
||||||
|
|
|
@ -188,6 +188,7 @@ enum VMStateFlags {
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MIG_PRI_DEFAULT = 0,
|
MIG_PRI_DEFAULT = 0,
|
||||||
|
MIG_PRI_IOMMU, /* Must happen before PCI devices */
|
||||||
MIG_PRI_MAX,
|
MIG_PRI_MAX,
|
||||||
} MigrationPriority;
|
} MigrationPriority;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue