[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.