[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 27/35] arm: acpi map mmio regions to dom0
On 5 February 2015 at 22:19, Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> wrote: > On Wed, 4 Feb 2015, parth.dixit@xxxxxxxxxx wrote: >> 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; >> +} > > I don't think that splitting the code in two functions is useful. Just > implement the remapping here. ok, will take care in next patchset. > >> /* >> * 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; > > Do they also need to described in the mini dtb for dom0? > If not, how is dom0 going to retrieve the list of mmio regions? I guess > via the acpi tables? right , dom0 retrieves it via acpi tables. > >> 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 |