Direct callers of the p2m setting functions must hold the p2m lock.
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
ASSERT(p2m);
ASSERT(p2m->set_entry);
- rv = p2m->set_entry(p2m, L2_gpa >> PAGE_SHIFT,
+ p2m_lock(p2m);
+ rv = set_p2m_entry(p2m, L2_gpa >> PAGE_SHIFT,
page_to_mfn(maddr_to_page(L0_gpa)),
0 /*4K*/, p2mt, p2ma);
+ p2m_unlock(p2m);
+
if (rv == 0) {
gdprintk(XENLOG_ERR,
"failed to set entry for 0x%"PRIx64" -> 0x%"PRIx64"\n",
unsigned int order;
int rc = 1;
+ ASSERT(p2m_locked_by_me(p2m));
+
while ( todo )
{
if ( hap_enabled(d) )