|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/4 RFC] x86/p2m: use large pages for MMIO mappings
>>> On 17.09.15 at 18:37, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 15/09/15 08:34, Jan Beulich wrote:
>> @@ -2044,22 +2078,45 @@ int map_mmio_regions(struct domain *d,
>> {
>> int ret = 0;
>> unsigned long i;
>> + unsigned int iter, order;
>>
>> if ( !paging_mode_translate(d) )
>> return 0;
>>
>> - for ( i = 0; !ret && i < nr; i++ )
>> + for ( iter = i = 0; i < nr && iter < MAP_MMIO_MAX_ITER;
>> + i += 1UL << order, ++iter )
>> {
>> - ret = set_mmio_p2m_entry(d, start_gfn + i, _mfn(mfn + i),
>> - p2m_get_hostp2m(d)->default_access);
>> - if ( ret )
>> + for ( order = mmio_order(d, (start_gfn + i) | (mfn + i), nr - i); ;
>> + order = ret - 1 )
>
> It is hard to reason as to whether this loop will terminate. All it
> would take is a bug in set_mmio_p2m_entry() which causes it to
> unilaterally return 1 and this loop would never terminate.
>
> Is there any other condition which can be used as a safety check?
I'm adding ASSERT()s as a minimal measure.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |