|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 27/35] arm: acpi map mmio regions to dom0
From: Parth Dixit <parth.dixit@xxxxxxxxxx>
map mmio regions described in uefi tables to dom0 address space
Signed-off-by: Parth Dixit <parth.dixit@xxxxxxxxxx>
---
xen/arch/arm/domain_build.c | 54 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index d781c63..49eb52a 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1235,6 +1235,56 @@ static int make_chosen_node(const struct domain *d,
const struct kernel_info *ki
return res;
}
+static int acpi_map_mmio(struct domain *d)
+{
+ int i,res;
+ u64 addr,size;
+
+ for( i = 0; i < acpi_mmio.nr_banks; i++ )
+ {
+ addr = acpi_mmio.bank[i].start;
+ size = acpi_mmio.bank[i].size;
+
+ res = iomem_permit_access(d, paddr_to_pfn(addr & PAGE_MASK),
+ paddr_to_pfn(PAGE_ALIGN(addr + size - 1)));
+ if ( res )
+ {
+ printk(XENLOG_ERR "Unable to permit to dom%d access to"
+ " 0x%"PRIx64" - 0x%"PRIx64"\n",
+ d->domain_id,
+ addr & PAGE_MASK, PAGE_ALIGN(addr + size) - 1);
+ return res;
+ }
+
+ res = map_mmio_regions(d,
+ paddr_to_pfn(addr & PAGE_MASK),
+ DIV_ROUND_UP(size, PAGE_SIZE),
+ paddr_to_pfn(addr & PAGE_MASK));
+ if ( res )
+ {
+ printk(XENLOG_ERR "Unable to map 0x%"PRIx64
+ " - 0x%"PRIx64" in domain %d\n",
+ addr & PAGE_MASK, PAGE_ALIGN(addr + size) - 1,
+ d->domain_id);
+ return res;
+ }
+
+ }
+
+ return 0;
+}
+
+static int map_acpi_regions(struct domain *d)
+{
+ int res;
+
+ res = acpi_map_mmio(d);
+ if ( res )
+ return res;
+
+ return 0;
+}
+
/*
* Prepare a minimal DTB for DOM0 which contains
* bootargs, memory information,
@@ -1264,6 +1314,10 @@ static int prepare_dtb_acpi(struct domain *d, struct
kernel_info *kinfo)
if ( ret < 0 )
goto err;
+ ret = map_acpi_regions(d);
+ if ( ret < 0 )
+ goto err;
+
ret = fdt_begin_node(kinfo->fdt, "/");
if ( ret < 0 )
goto err;
--
1.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |