xen/p2m: Allocate p2m tracking pages on override

It is possible to add a p2m override on pages that are currently mapped
to INVALID_P2M_ENTRY; in particular, this will happen when using
ballooned pages in gntdev. This means that set_phys_to_machine must be
used instead of __set_phys_to_machine.

Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

authored by Daniel De Graaf and committed by Konrad Rzeszutek Wilk b254244d a93e20a8

+4 -2
+4 -2
arch/x86/xen/p2m.c
··· 671 671 page->private = mfn; 672 672 page->index = pfn_to_mfn(pfn); 673 673 674 - __set_phys_to_machine(pfn, FOREIGN_FRAME(mfn)); 674 + if (unlikely(!set_phys_to_machine(pfn, FOREIGN_FRAME(mfn)))) 675 + return -ENOMEM; 676 + 675 677 if (!PageHighMem(page)) 676 678 /* Just zap old mapping for now */ 677 679 pte_clear(&init_mm, address, ptep); ··· 711 709 spin_lock_irqsave(&m2p_override_lock, flags); 712 710 list_del(&page->lru); 713 711 spin_unlock_irqrestore(&m2p_override_lock, flags); 714 - __set_phys_to_machine(pfn, page->index); 712 + set_phys_to_machine(pfn, page->index); 715 713 716 714 if (!PageHighMem(page)) 717 715 set_pte_at(&init_mm, address, ptep,