[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH RFCv2 14/15] xen/arm: mm: Rework setup_xenheap_mappings()



Hi,

On 15/05/2021 00:51, Stefano Stabellini wrote:
On Sun, 25 Apr 2021, Julien Grall wrote:
From: Julien Grall <julien.grall@xxxxxxx>

A few issues have been reported with setup_xenheap_mappings() over the
last couple of years. The main ones are:
     - It will break on platform supporting more than 512GB of RAM
       because the memory allocated by the boot allocator is not yet
       mapped.
     - Aligning all the regions to 1GB may lead to unexpected result
       because we may alias non-cacheable region (such as device or reserved
       regions).

map_pages_to_xen() was recently reworked to allow superpage mappings and
deal with the use of page-tables before they are mapped.

Most of the code in setup_xenheap_mappings() is now replaced with a
single call to map_pages_to_xen().

This also require to re-order the steps setup_mm() so the regions are
given to the boot allocator first and then we setup the xenheap
mappings.
I know this is paranoia but doesn't this introduce a requirement on the
size of the first bank in bootinfo.mem.bank[] ?

It should be at least 8KB?
AFAIK, the current requirement is 4KB because of the 1GB mapping. Long 
term, it would be 8KB.
I know it is unlikely but it is theoretically possible to have a first
bank of just 1KB.
All the page allocators are working at the page granularity level. I am 
not entirely sure whether the current Xen would ignore the region or break.
Note that setup_xenheap_mappings() is taking a base MFN and a number of 
pages to map. So this doesn't look to be a new problem here.
For the 8KB requirement, we can look at first all the pages to the boot 
allocator and then do the mapping.
I think we should write the requirement down with an in-code comment?
Or better maybe we should write a message about it in the panic below?
I can write an in-code comment but I think writing down in the panic() 
would be wrong because there is no promise this is going to be the only 
reason it fails (imagine there is a bug in the code...).
Cheers,

--
Julien Grall



 


Rackspace

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