WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [IA64] domheap: Fix current->domain->arch

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [IA64] domheap: Fix current->domain->arch.shadow_bitmap reference
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 23 Jan 2008 01:11:11 -0800
Delivery-date: Wed, 23 Jan 2008 01:15:33 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1200596743 25200
# Node ID 6a7fa7dbde5662618ab710d320479c575ae8a769
# Parent  d0216f9e87c1d9b99563c5a5381915d8c2cda47f
[IA64] domheap: Fix current->domain->arch.shadow_bitmap reference

Don't reference current->domain->arch.shadow_bitmap in dirty_bit fault handler.
Instead copy it to arch_vcpu.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/arch/ia64/asm-offsets.c   |    3 +--
 xen/arch/ia64/xen/domain.c    |    9 ++++++++-
 xen/arch/ia64/xen/ivt.S       |    6 +-----
 xen/include/asm-ia64/domain.h |    1 +
 4 files changed, 11 insertions(+), 8 deletions(-)

diff -r d0216f9e87c1 -r 6a7fa7dbde56 xen/arch/ia64/asm-offsets.c
--- a/xen/arch/ia64/asm-offsets.c       Thu Jan 17 12:05:43 2008 -0700
+++ b/xen/arch/ia64/asm-offsets.c       Thu Jan 17 12:05:43 2008 -0700
@@ -56,7 +56,6 @@ void foo(void)
        DEFINE(IA64_TASK_THREAD_KSP_OFFSET, offsetof (struct vcpu, 
arch._thread.ksp));
        DEFINE(IA64_TASK_THREAD_ON_USTACK_OFFSET, offsetof (struct vcpu, 
arch._thread.on_ustack));
 
-       DEFINE(IA64_VCPU_DOMAIN_OFFSET, offsetof (struct vcpu, domain));
        DEFINE(IA64_VCPU_HYPERCALL_CONTINUATION_OFS, offsetof (struct vcpu, 
arch.hypercall_continuation));
        DEFINE(IA64_VCPU_FP_PSR_OFFSET, offsetof (struct vcpu, arch.fp_psr));
        DEFINE(IA64_VCPU_META_RID_DT_OFFSET, offsetof (struct vcpu, 
arch.metaphysical_rid_dt));
@@ -79,7 +78,7 @@ void foo(void)
 
        BLANK();
 
-       DEFINE(IA64_DOMAIN_SHADOW_BITMAP_OFFSET, offsetof (struct domain, 
arch.shadow_bitmap));
+       DEFINE(IA64_VCPU_SHADOW_BITMAP_OFFSET, offsetof (struct vcpu, 
arch.shadow_bitmap));
 
        BLANK();
 
diff -r d0216f9e87c1 -r 6a7fa7dbde56 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Thu Jan 17 12:05:43 2008 -0700
+++ b/xen/arch/ia64/xen/domain.c        Thu Jan 17 12:05:43 2008 -0700
@@ -1745,6 +1745,10 @@ int shadow_mode_control(struct domain *d
        case XEN_DOMCTL_SHADOW_OP_OFF:
                if (shadow_mode_enabled (d)) {
                        u64 *bm = d->arch.shadow_bitmap;
+                       struct vcpu *v;
+
+                       for_each_vcpu(d, v)
+                               v->arch.shadow_bitmap = NULL;
 
                        /* Flush vhpt and tlb to restore dirty bit usage.  */
                        domain_flush_tlb_vhpt(d);
@@ -1780,9 +1784,12 @@ int shadow_mode_control(struct domain *d
                        rc = -ENOMEM;
                }
                else {
+                       struct vcpu *v;
                        memset(d->arch.shadow_bitmap, 0, 
                               d->arch.shadow_bitmap_size / 8);
-                       
+
+                       for_each_vcpu(d, v)
+                               v->arch.shadow_bitmap = d->arch.shadow_bitmap;
                        /* Flush vhtp and tlb to enable dirty bit
                           virtualization.  */
                        domain_flush_tlb_vhpt(d);
diff -r d0216f9e87c1 -r 6a7fa7dbde56 xen/arch/ia64/xen/ivt.S
--- a/xen/arch/ia64/xen/ivt.S   Thu Jan 17 12:05:43 2008 -0700
+++ b/xen/arch/ia64/xen/ivt.S   Thu Jan 17 12:05:43 2008 -0700
@@ -394,11 +394,7 @@ ENTRY(dirty_bit)
        ;;
        ld8 r22=[r22]
        ;;
-       add r22=IA64_VCPU_DOMAIN_OFFSET,r22
-       ;;
-       ld8 r22=[r22]                   // read domain
-       ;;
-       add r22=IA64_DOMAIN_SHADOW_BITMAP_OFFSET,r22
+       add r22=IA64_VCPU_SHADOW_BITMAP_OFFSET,r22
        ;;
        ld8 r22=[r22]
        ;;
diff -r d0216f9e87c1 -r 6a7fa7dbde56 xen/include/asm-ia64/domain.h
--- a/xen/include/asm-ia64/domain.h     Thu Jan 17 12:05:43 2008 -0700
+++ b/xen/include/asm-ia64/domain.h     Thu Jan 17 12:05:43 2008 -0700
@@ -259,6 +259,7 @@ struct arch_vcpu {
     unsigned long metaphysical_saved_rr0;      // from arch_domain (so is 
pinned)
     unsigned long metaphysical_saved_rr4;      // from arch_domain (so is 
pinned)
     unsigned long fp_psr;       // used for lazy float register
+    u64 *shadow_bitmap;         // from arch_domain (so is pinned)
     int breakimm;                      // from arch_domain (so is pinned)
     int starting_rid;          /* first RID assigned to domain */
     int ending_rid;            /* one beyond highest RID assigned to domain */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [IA64] domheap: Fix current->domain->arch.shadow_bitmap reference, Xen patchbot-unstable <=