mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[HVM] Save/Restore: don't clobber page types in shadow code
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
This commit is contained in:
1 parent
60e7732ed8
commit
54ffbbd7f3
2 files changed
+4
-11
No files matched your search
@@ -2184,10 +2184,11 @@ int sh_remove_all_mappings(struct vcpu *v, mfn_t gmfn)
|
||||
expected_count = (page->count_info & PGC_allocated) ? 1 : 0;
|
||||
if ( (page->count_info & PGC_count_mask) != expected_count )
|
||||
{
|
||||
/* Don't complain if we're in HVM and there's one extra mapping:
|
||||
* The qemu helper process has an untyped mapping of this dom's RAM */
|
||||
/* Don't complain if we're in HVM and there are some extra mappings:
|
||||
* The qemu helper process has an untyped mapping of this dom's RAM
|
||||
* and the HVM restore program takes another. */
|
||||
if ( !(shadow_mode_external(v->domain)
|
||||
&& (page->count_info & PGC_count_mask) <= 3 /* vmx restore add one extra mapping*/
|
||||
&& (page->count_info & PGC_count_mask) <= 3
|
||||
&& (page->u.inuse.type_info & PGT_count_mask) == 0) )
|
||||
{
|
||||
SHADOW_ERROR("can't find all mappings of mfn %lx: "
|
||||
|
||||
@@ -1627,14 +1627,6 @@ sh_make_shadow(struct vcpu *v, mfn_t gmfn, u32 shadow_type)
|
||||
default: /* Do nothing */ break;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
struct page_info *page = mfn_to_page(gmfn);
|
||||
/* XXX: add it to emulate a touched page */
|
||||
if ((page->u.inuse.type_info & PGT_type_mask) == PGT_none){
|
||||
page->u.inuse.type_info |= (PGT_writable_page | PGT_validated);
|
||||
}
|
||||
}
|
||||
|
||||
shadow_promote(v, gmfn, shadow_type);
|
||||
set_shadow_status(v, gmfn, shadow_type, smfn);
|
||||
|
||||