[IA64] stub for XENMEM_[gs]et_pod_target.
authorIsaku Yamahata <yamahata@valinux.co.jp>
Wed, 7 Jan 2009 05:28:33 +0000 (14:28 +0900)
committerIsaku Yamahata <yamahata@valinux.co.jp>
Wed, 7 Jan 2009 05:28:33 +0000 (14:28 +0900)
This patch adds the stub for XENMEM_[gs]et_pod_target.
Without this patch, domain builder aborts on the error.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen/arch/ia64/xen/mm.c

index 4772749d1b48671eb1821e078b8979a1272bf35c..66336182febff1bc98e953b63c004d4fad150725 100644 (file)
@@ -3437,6 +3437,45 @@ arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg)
         return 0;
     }
 
+    case XENMEM_get_pod_target:
+    case XENMEM_set_pod_target: {
+        /* XXX: PoD populate on demand isn't supported yet. */
+        xen_pod_target_t target;
+        struct domain *d;
+
+        /* Support DOMID_SELF? */
+        if ( !IS_PRIV(current->domain) )
+            return -EINVAL;
+
+        if ( copy_from_guest(&target, arg, 1) )
+            return -EFAULT;
+
+        rc = rcu_lock_target_domain_by_id(target.domid, &d);
+        if ( rc != 0 )
+            return rc;
+
+        if ( op == XENMEM_set_pod_target )
+        {
+            /* if -ENOSYS is returned,
+               domain builder aborts domain creation. */
+            /* rc = -ENOSYS; */
+        }
+
+        target.tot_pages       = d->tot_pages;
+        target.pod_cache_pages = 0;
+        target.pod_entries     = 0;
+
+        if ( copy_to_guest(arg, &target, 1) )
+        {
+            rc= -EFAULT;
+            goto pod_target_out_unlock;
+        }
+        
+    pod_target_out_unlock:
+        rcu_unlock_domain(d);
+        return rc;
+    }
+
     default:
         return -ENOSYS;
     }