# HG changeset patch
# User smh22@xxxxxxxxxxxxxxxxxxxx
# Node ID 43a1f899e302b813616b2467380537fecc92a3a7
# Parent 5d8a5e7187d56964b3916a368fbecb8773bdd6b6
More fixes for live migrate on PAE and 64-bit.
Signed-off-by: Jun Nakajima <jun.nakajima@xxxxxxxxx>
Signed-off-by: Steven Hand <steven@xxxxxxxxxxxxx>
diff -r 5d8a5e7187d5 -r 43a1f899e302 xen/arch/x86/shadow.c
--- a/xen/arch/x86/shadow.c Fri Dec 2 01:04:09 2005
+++ b/xen/arch/x86/shadow.c Fri Dec 2 08:54:09 2005
@@ -2750,10 +2750,10 @@
g2mfn, g2mfn);
BUG(); /* XXX Deal gracefully with failure. */
}
-
- if (!get_shadow_ref(s2mfn))
- BUG();
}
+
+ if (!get_shadow_ref(s2mfn))
+ BUG();
/* Map shadow L2 into shadow L3 */
spl3e[L3_PAGETABLE_ENTRIES - 1] = l3e_from_pfn(s2mfn, _PAGE_PRESENT);
@@ -3526,10 +3526,11 @@
shadow_lock(d);
+ __shadow_sync_va(v, va);
+
if ( __shadow_get_l1e(v, va, &old_sl1e) )
if ( l1e_get_flags(old_sl1e) & _PAGE_PRESENT )
- put_page_from_l1e(old_sl1e, d);
-
+ shadow_put_page_from_l1e(old_sl1e, d);
sl1e = l1e_empty();
__shadow_set_l1e(v, va, &sl1e);
diff -r 5d8a5e7187d5 -r 43a1f899e302 xen/arch/x86/shadow_public.c
--- a/xen/arch/x86/shadow_public.c Fri Dec 2 01:04:09 2005
+++ b/xen/arch/x86/shadow_public.c Fri Dec 2 08:54:09 2005
@@ -1425,7 +1425,7 @@
void shadow_l1_normal_pt_update(
struct domain *d,
- unsigned long pa, l1_pgentry_t gpte,
+ physaddr_t pa, l1_pgentry_t gpte,
struct domain_mmap_cache *cache)
{
unsigned long sl1mfn;
@@ -1450,7 +1450,7 @@
void shadow_l2_normal_pt_update(
struct domain *d,
- unsigned long pa, l2_pgentry_t gpde,
+ physaddr_t pa, l2_pgentry_t gpde,
struct domain_mmap_cache *cache)
{
unsigned long sl2mfn;
@@ -1475,7 +1475,7 @@
#if CONFIG_PAGING_LEVELS >= 3
void shadow_l3_normal_pt_update(
struct domain *d,
- unsigned long pa, l3_pgentry_t l3e,
+ physaddr_t pa, l3_pgentry_t l3e,
struct domain_mmap_cache *cache)
{
unsigned long sl3mfn;
@@ -1502,7 +1502,7 @@
#if CONFIG_PAGING_LEVELS >= 4
void shadow_l4_normal_pt_update(
struct domain *d,
- unsigned long pa, l4_pgentry_t l4e,
+ physaddr_t pa, l4_pgentry_t l4e,
struct domain_mmap_cache *cache)
{
unsigned long sl4mfn;
diff -r 5d8a5e7187d5 -r 43a1f899e302 xen/include/asm-x86/shadow.h
--- a/xen/include/asm-x86/shadow.h Fri Dec 2 01:04:09 2005
+++ b/xen/include/asm-x86/shadow.h Fri Dec 2 08:54:09 2005
@@ -131,10 +131,10 @@
extern void remove_shadow(struct domain *d, unsigned long gpfn, u32 stype);
extern void shadow_l1_normal_pt_update(struct domain *d,
- unsigned long pa, l1_pgentry_t l1e,
+ physaddr_t pa, l1_pgentry_t l1e,
struct domain_mmap_cache *cache);
extern void shadow_l2_normal_pt_update(struct domain *d,
- unsigned long pa, l2_pgentry_t l2e,
+ physaddr_t pa, l2_pgentry_t l2e,
struct domain_mmap_cache *cache);
#if CONFIG_PAGING_LEVELS >= 3
#include <asm/page-guest32.h>
@@ -148,12 +148,12 @@
extern unsigned long gva_to_gpa(unsigned long gva);
extern void shadow_l3_normal_pt_update(struct domain *d,
- unsigned long pa, l3_pgentry_t l3e,
+ physaddr_t pa, l3_pgentry_t l3e,
struct domain_mmap_cache *cache);
#endif
#if CONFIG_PAGING_LEVELS >= 4
extern void shadow_l4_normal_pt_update(struct domain *d,
- unsigned long pa, l4_pgentry_t l4e,
+ physaddr_t pa, l4_pgentry_t l4e,
struct domain_mmap_cache *cache);
#endif
extern int shadow_do_update_va_mapping(unsigned long va,
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|