vtd: fix Dom0 S3 when VT-d is enabled.
Now if VT-d is enabled, when Dom0 does S3, Xen doesn't suspend/resume the IOMMU states. The patch adds the missing invocations of iommu_suspend()/iommu_resume() and makes some nesessary fixes: 1) In iommu_set_root_entry(), we should not re-allocate the root-entry when Xen returns from S3; 2) Define the array iommu_state correctly (u8 -> u32); 3) Only save/restore the necessary IOMMU registers. The patch was tested on Weybridge. NOTE: if we have some HVM guests which have assigned devices, and we want to do Dom S3, we MUST do HVM S3 for each HVM guest first. Namely, the steps are: 1) Use HVM S3 in guest to suspend the guest (for example, in Linux HVM guest, this is "echo mem > /sys/power/state"); 2) Use Dom0 S3 to suspend Dom0: "echo mem > /sys/power/state"; 3) At some point, Dom0 resumes from S3 (for example, by pressing the power button or using the acpi alarm); 4) Use "xm trigger HVM_DOM_ID s3resume" to resume every HVM guest which were suspended previously. Signed-off-by: Dexuan Cui <firstname.lastname@example.org>
Showing with 36 additions and 41 deletions
Please register or sign in to comment