EPT specific P2M support for new paging types.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 17 Dec 2009 06:27:55 +0000 (06:27 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 17 Dec 2009 06:27:55 +0000 (06:27 +0000)
Signed-off-by: Patrick Colp <Patrick.Colp@citrix.com>
xen/arch/x86/mm/hap/p2m-ept.c

index 35c81c6b5ba073880fa317b61dd4c9a2c22e20d8..f8bffff1c3b29b577f0d37a1a00bbf86c9e5ef12 100644 (file)
@@ -58,6 +58,10 @@ static void ept_p2m_type_to_flags(ept_entry_t *entry, p2m_type_t type)
         case p2m_invalid:
         case p2m_mmio_dm:
         case p2m_populate_on_demand:
+        case p2m_ram_paging_out:
+        case p2m_ram_paged:
+        case p2m_ram_paging_in:
+        case p2m_ram_paging_in_start:
         default:
             entry->r = entry->w = entry->x = 0;
             return;
@@ -219,7 +223,8 @@ ept_set_entry(struct domain *d, unsigned long gfn, mfn_t mfn,
     if ( i == walk_level )
     {
         /* We reached the level we're looking for */
-        if ( mfn_valid(mfn_x(mfn)) || direct_mmio )
+        if ( mfn_valid(mfn_x(mfn)) || direct_mmio || p2m_is_paged(p2mt) ||
+             (p2mt == p2m_ram_paging_in_start) )
         {
             ept_entry->emt = epte_get_entry_emt(d, gfn, mfn, &igmt,
                                                 direct_mmio);