Hi Shannon,
On 22/03/16 13:18, Shannon Zhao wrote:
On 2016年03月22日 08:42, Julien Grall wrote:
Hi Shannon,
On 17/03/2016 09:40, Shannon Zhao wrote:
From: Shannon Zhao <shannon.z...@linaro.org>
Map the UEFI and ACPI tables which we created to non-RAM space in Dom0.
Signed-off-by: Shannon Zhao <shannon.z...@linaro.org>
Reviewed-by: Stefano Stabellini <stefano.stabell...@eu.citrix.com>
---
xen/arch/arm/domain_build.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 008fc76..e036887 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1691,6 +1691,21 @@ static int prepare_acpi(struct domain *d,
struct kernel_info *kinfo)
acpi_create_efi_mmap_table(d->arch.efi_acpi_gpa,
d->arch.efi_acpi_len,
d->arch.efi_acpi_table, &kinfo->mem,
tbl_add);
+ /* Map the EFI and ACPI tables to Dom0 */
+ rc = map_regions_rw(d,
+ paddr_to_pfn(d->arch.efi_acpi_gpa),
+ PFN_UP(d->arch.efi_acpi_len),
+
paddr_to_pfn(virt_to_maddr(d->arch.efi_acpi_table)));
The ACPI/EFI tables could potentially have data in the cache but are not
written into the memory (because Xen is mapping the RAM with caching
enabled). However, DOM0 may decide to map it with cache disabled.
Therefore it would be possible for the domain to see wrong data.
So I think you need to clean the cache for this region.
Oh, that would be good. Is there any existing function I can use?
You could reuse p2m_cache_flush. However this function will only flush
cache for p2m_ram_* entries.
I think the best way would be to extend the CACHEFLUSH operations and
maybe p2m_cache_flush (?).
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel