[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] [IA64] Support grant_table v2 for XENMAPSPACE_grant_table



Hi,

This patch is ia64 counter part of 20281:95ea2052b41b.
This fixes the issue that HVM domains with PV-on-HVM drivers panic.

Signed-off-by: KUWAMURA Shin'ya <kuwa@xxxxxxxxxxxxxx>
-- 
  KUWAMURA Shin'ya
# HG changeset patch
# User KUWAMURA Shin'ya <kuwa@xxxxxxxxxxxxxx>
# Date 1266821680 -32400
# Node ID 29ae377cd6bc38562586658c62e9e6c238f9668d
# Parent  077089e37ac90d9aba7fc72e16a6b8523b294db1
[IA64] Support grant_table v2 for XENMAPSPACE_grant_table

This patch is ia64 counter part of 20281:95ea2052b41b.
This fixes the issue that HVM domains with PV-on-HVM drivers panic.

Signed-off-by: KUWAMURA Shin'ya <kuwa@xxxxxxxxxxxxxx>

diff -r 077089e37ac9 -r 29ae377cd6bc xen/arch/ia64/xen/mm.c
--- a/xen/arch/ia64/xen/mm.c    Wed Feb 17 15:54:40 2010 +0000
+++ b/xen/arch/ia64/xen/mm.c    Mon Feb 22 15:54:40 2010 +0900
@@ -3338,12 +3338,25 @@ arch_memory_op(int op, XEN_GUEST_HANDLE(
         case XENMAPSPACE_grant_table:
             spin_lock(&d->grant_table->lock);
 
-            if ((xatp.idx >= nr_grant_frames(d->grant_table)) &&
-                (xatp.idx < max_nr_grant_frames))
-                gnttab_grow_table(d, xatp.idx + 1);
+            if (d->grant_table->gt_version == 0)
+                d->grant_table->gt_version = 1;
 
-            if (xatp.idx < nr_grant_frames(d->grant_table))
-                mfn = virt_to_mfn(d->grant_table->shared_raw[xatp.idx]);
+            if (d->grant_table->gt_version == 2 &&
+                (xatp.idx & XENMAPIDX_grant_table_status))
+            {
+                xatp.idx &= ~XENMAPIDX_grant_table_status;
+                if (xatp.idx < nr_status_frames(d->grant_table))
+                    mfn = virt_to_mfn(d->grant_table->status[xatp.idx]);
+            }
+            else
+            {
+                if ((xatp.idx >= nr_grant_frames(d->grant_table)) &&
+                    (xatp.idx < max_nr_grant_frames))
+                    gnttab_grow_table(d, xatp.idx + 1);
+
+                if (xatp.idx < nr_grant_frames(d->grant_table))
+                    mfn = virt_to_mfn(d->grant_table->shared_raw[xatp.idx]);
+            }
 
             spin_unlock(&d->grant_table->lock);
             break;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.