We recently faced a problem with the mapcache object in the ARM port from Samsung (xen-arm), in the context of embeddedXEN.
The mapcache is actually used during the guest operation on the page table entry manipulations. The hypervisor performs updates in the mapcache (via the mmu_update hypercall) to avoid modifying the *real* physical page containing the entry to be modified. It makes sense and this is also done in the x86 version of xen. However, we didn't succeed in figuring out how the real page is finally modified (i.e. flushed from the mapcache).
We noticed this issue during the dom0 bootstrap: the mmu_update hypercall is called (for instance during the pmd_clear() operation), but the pmd entry is not really modified.
I sent out this mail to the xen-arm mailing list as well in order to get Samsung's feedback concerning this issue. In the meanwhile, as workaround, we have used the map_domain_page_with_guest_va_space() function with the right addresses to perform the modification on the *real* entry, and it works.
Thanks in advance for any comment/feedback.