mirror of https://gitee.com/openkylin/linux.git
xen/balloon: pre-allocate p2m entries for ballooned pages
Pages returned by alloc_xenballooned_pages() will be used for grant mapping which will call set_phys_to_machine() (in PV guests). Ballooned pages are set as INVALID_P2M_ENTRY in the p2m and thus may be using the (shared) missing tables and a subsequent set_phys_to_machine() will need to allocate new tables. Since the grant mapping may be done from a context that cannot sleep, the p2m entries must already be allocated. Signed-off-by: David Vrabel <david.vrabel@citrix.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
8edfcf882e
commit
4a69c909de
|
@ -602,6 +602,11 @@ int alloc_xenballooned_pages(int nr_pages, struct page **pages)
|
|||
page = balloon_retrieve(true);
|
||||
if (page) {
|
||||
pages[pgno++] = page;
|
||||
#ifdef CONFIG_XEN_HAVE_PVMMU
|
||||
ret = xen_alloc_p2m_entry(page_to_pfn(page));
|
||||
if (ret < 0)
|
||||
goto out_undo;
|
||||
#endif
|
||||
} else {
|
||||
ret = add_ballooned_pages(nr_pages - pgno);
|
||||
if (ret < 0)
|
||||
|
|
Loading…
Reference in New Issue