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: Fixes after changes to grant table

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] ia64: Fixes after changes to grant table code.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 19 Feb 2007 17:20:10 -0800
Delivery-date: Mon, 19 Feb 2007 17:20:21 -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 kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1171901163 0
# Node ID 01476c7804b2ec8577be537f8868e9690bbab7d5
# Parent  184db7a674d93d92d0d963a7b3c80f1889983a9e
ia64: Fixes after changes to grant table code.
Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/arch/ia64/xen/domain.c         |   10 +++++++++
 xen/include/asm-ia64/grant_table.h |   41 ++++++++++++++++++++++---------------
 2 files changed, 35 insertions(+), 16 deletions(-)

diff -r 184db7a674d9 -r 01476c7804b2 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Mon Feb 19 16:05:34 2007 +0000
+++ b/xen/arch/ia64/xen/domain.c        Mon Feb 19 16:06:03 2007 +0000
@@ -521,6 +521,16 @@ int arch_domain_create(struct domain *d)
        if ((d->arch.mm.pgd = pgd_alloc(&d->arch.mm)) == NULL)
            goto fail_nomem;
 
+       /*
+        * grant_table_create() can't fully initialize grant table for domain
+        * because it is called before arch_domain_create().
+        * Here we complete the initialization which requires p2m table.
+        */
+       spin_lock(&d->grant_table->lock);
+       for (i = 0; i < nr_grant_frames(d->grant_table); i++)
+               ia64_gnttab_create_shared_page(d, d->grant_table, i);
+       spin_unlock(&d->grant_table->lock);
+
        d->arch.ioport_caps = rangeset_new(d, "I/O Ports",
                                           RANGESETF_prettyprint_hex);
 
diff -r 184db7a674d9 -r 01476c7804b2 xen/include/asm-ia64/grant_table.h
--- a/xen/include/asm-ia64/grant_table.h        Mon Feb 19 16:05:34 2007 +0000
+++ b/xen/include/asm-ia64/grant_table.h        Mon Feb 19 16:06:03 2007 +0000
@@ -13,15 +13,6 @@ int destroy_grant_host_mapping(unsigned 
 
 // for grant transfer
 void guest_physmap_add_page(struct domain *d, unsigned long gpfn, unsigned 
long mfn);
-
-// for grant table shared page
-#define gnttab_create_shared_page(d, t, i)                              \
-    do {                                                                \
-        share_xen_page_with_guest(                                      \
-            virt_to_page((char *)(t)->shared + ((i) << PAGE_SHIFT)),    \
-            (d), XENSHARE_writable);                                    \
-    } while (0)
-
 
 /* XXX
  * somewhere appropriate
@@ -39,14 +30,32 @@ void guest_physmap_add_page(struct domai
 /* Guest physical address of the grant table.  */
 #define IA64_GRANT_TABLE_PADDR  IA64_XMAPPEDREGS_PADDR(NR_CPUS)
 
-#define gnttab_shared_maddr(d, t, i)                        \
-    virt_to_maddr((char*)(t)->shared + ((i) << PAGE_SHIFT))
+#define gnttab_shared_maddr(t, i)       (virt_to_maddr((t)->shared[(i)]))
+#define gnttab_shared_page(t, i)        (virt_to_page((t)->shared[(i)]))
 
-# define gnttab_shared_gmfn(d, t, i)                                    \
-    ({ assign_domain_page((d),                                          \
-                          IA64_GRANT_TABLE_PADDR + ((i) << PAGE_SHIFT), \
-                          gnttab_shared_maddr((d), (t), (i)));          \
-        (IA64_GRANT_TABLE_PADDR >> PAGE_SHIFT) + (i);})
+#define ia64_gnttab_create_shared_page(d, t, i)                         \
+    do {                                                                \
+        BUG_ON((d)->arch.mm.pgd == NULL);                               \
+        assign_domain_page((d),                                         \
+                           IA64_GRANT_TABLE_PADDR + ((i) << PAGE_SHIFT), \
+                           gnttab_shared_maddr((t), (i)));              \
+    } while (0)
+
+/*
+ * for grant table shared page
+ * grant_table_create() might call this macro before allocating the p2m table.
+ * In such case, arch_domain_create() completes the initialization.
+ */
+#define gnttab_create_shared_page(d, t, i)                      \
+    do {                                                        \
+        share_xen_page_with_guest(gnttab_shared_page((t), (i)), \
+                                  (d), XENSHARE_writable);      \
+        if ((d)->arch.mm.pgd)                                   \
+            ia64_gnttab_create_shared_page((d), (t), (i));      \
+    } while (0)
+
+#define gnttab_shared_gmfn(d, t, i)                 \
+    ((IA64_GRANT_TABLE_PADDR >> PAGE_SHIFT) + (i))
 
 #define gnttab_mark_dirty(d, f) ((void)f)
 

_______________________________________________
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: Fixes after changes to grant table code., Xen patchbot-unstable <=