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] vti save-restore: save/restore opt

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [IA64] vti save-restore: save/restore opt_feature status
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 22 Nov 2007 12:00:52 -0800
Delivery-date: Thu, 22 Nov 2007 12:03:52 -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 1195575687 25200
# Node ID e6acebec04a2be339254bb44979fcc4b07c487a8
# Parent  6fc79cb7934d9ad98ae163108e10f3fe6080dd9c
[IA64] vti save-restore: save/restore opt_feature status

Make hvm domain save/restore support opt_feature.

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
---
 xen/arch/ia64/vmx/mmio.c                |   72 ++++++++++++++++++++++++++++++++
 xen/include/public/arch-ia64/hvm/save.h |   40 +++++++++++------
 2 files changed, 97 insertions(+), 15 deletions(-)

diff -r 6fc79cb7934d -r e6acebec04a2 xen/arch/ia64/vmx/mmio.c
--- a/xen/arch/ia64/vmx/mmio.c  Tue Nov 20 09:14:43 2007 -0700
+++ b/xen/arch/ia64/vmx/mmio.c  Tue Nov 20 09:21:27 2007 -0700
@@ -37,6 +37,8 @@
 #include <asm/viosapic.h>
 #include <asm/vlsapic.h>
 #include <asm/hvm/vacpi.h>
+#include <asm/hvm/support.h>
+#include <public/hvm/save.h>
 
 #define HVM_BUFFERED_IO_RANGE_NR 1
 
@@ -261,6 +263,76 @@ static inline void set_os_type(VCPU *v, 
     }
 }
 
+static void __vmx_identity_mapping_save(int on,
+        const struct identity_mapping* im,
+        struct hvm_hw_ia64_identity_mapping *im_save)
+{
+    im_save->on = !!on;
+    if (!on) {
+        im_save->pgprot = 0;
+        im_save->key    = 0;
+    } else {
+        im_save->pgprot = im->pgprot;
+        im_save->key    = im->key;
+    }
+}
+
+static int vmx_identity_mappings_save(struct domain *d,
+                                      hvm_domain_context_t *h)
+{
+    const struct opt_feature *optf = &d->arch.opt_feature;
+    struct hvm_hw_ia64_identity_mappings im_save;
+
+    __vmx_identity_mapping_save(optf->mask & XEN_IA64_OPTF_IDENT_MAP_REG4,
+                                &optf->im_reg4, &im_save.im_reg4);
+    __vmx_identity_mapping_save(optf->mask & XEN_IA64_OPTF_IDENT_MAP_REG5,
+                                &optf->im_reg5, &im_save.im_reg5);
+    __vmx_identity_mapping_save(optf->mask & XEN_IA64_OPTF_IDENT_MAP_REG7,
+                                &optf->im_reg7, &im_save.im_reg7);
+
+    return hvm_save_entry(OPT_FEATURE_IDENTITY_MAPPINGS, 0, h, &im_save);
+}
+
+static int __vmx_identity_mapping_load(struct domain *d, unsigned long cmd,
+        const struct hvm_hw_ia64_identity_mapping *im_load)
+{
+    struct xen_ia64_opt_feature optf;
+
+    optf.cmd    = cmd;
+    optf.on     = im_load->on;
+    optf.pgprot = im_load->pgprot;
+    optf.key    = im_load->key;
+
+    return domain_opt_feature(d, &optf);
+}
+
+static int vmx_identity_mappings_load(struct domain *d,
+                                      hvm_domain_context_t *h)
+{
+    struct hvm_hw_ia64_identity_mappings im_load;
+    int rc;
+
+    if (hvm_load_entry(OPT_FEATURE_IDENTITY_MAPPINGS, h, &im_load))
+        return -EINVAL;
+
+    rc = __vmx_identity_mapping_load(d, XEN_IA64_OPTF_IDENT_MAP_REG4,
+                                     &im_load.im_reg4);
+    if (rc)
+        return rc;
+    rc = __vmx_identity_mapping_load(d, XEN_IA64_OPTF_IDENT_MAP_REG5,
+                                     &im_load.im_reg5);
+    if (rc)
+        return rc;
+    rc = __vmx_identity_mapping_load(d, XEN_IA64_OPTF_IDENT_MAP_REG7,
+                                     &im_load.im_reg7);
+
+    return rc;
+}
+
+HVM_REGISTER_SAVE_RESTORE(OPT_FEATURE_IDENTITY_MAPPINGS, 
+                          vmx_identity_mappings_save,
+                          vmx_identity_mappings_load,
+                          1, HVMSR_PER_DOM);
 
 static void legacy_io_access(VCPU *vcpu, u64 pa, u64 *val, size_t s, int dir)
 {
diff -r 6fc79cb7934d -r e6acebec04a2 xen/include/public/arch-ia64/hvm/save.h
--- a/xen/include/public/arch-ia64/hvm/save.h   Tue Nov 20 09:14:43 2007 -0700
+++ b/xen/include/public/arch-ia64/hvm/save.h   Tue Nov 20 09:21:27 2007 -0700
@@ -162,25 +162,35 @@ struct hvm_hw_ia64_vacpi {
 };
 DECLARE_HVM_SAVE_TYPE(VACPI, 7, struct hvm_hw_ia64_vacpi);
 // update last_gtime and setup timer of struct vacpi
-#endif
-
-#if 0
-/*
- * guest os type
- * XXX Xen guest os specific optimization
- *     This isn't hvm specific so this should be addressed genericly
- *     including paravirtualized domain.
- */
-struct hvm_hw_ia64_gos {
-    uint64_t   gos_type;
-};
-DECLARE_HVM_SAVE_TYPE(GOS_TYPE, 8, struct hvm_hw_ia64_gos);
-#endif
+
+/*
+ * opt_feature: identity mapping of region 4, 5 and 7.
+ * With the c/s 16396:d2935f9c217f of xen-ia64-devel.hg,
+ * opt_feature hypercall supports only region 4,5,7 identity mappings.
+ * structure hvm_hw_ia64_identity_mappings only supports them.
+ * The new structure, struct hvm_hw_ia64_identity_mappings, is created to
+ * avoid to keep up with change of the xen/ia64 internal structure, struct
+ * opt_feature.
+ *
+ * If it is enhanced in the future, new structure will be created.
+ */
+struct hvm_hw_ia64_identity_mapping {
+    uint64_t on;        /* on/off */
+    uint64_t pgprot;    /* The page protection bit mask of the pte. */
+    uint64_t key;       /* A protection key. */
+};
+
+struct hvm_hw_ia64_identity_mappings {
+    struct hvm_hw_ia64_identity_mapping im_reg4;/* Region 4 identity mapping */
+    struct hvm_hw_ia64_identity_mapping im_reg5;/* Region 5 identity mapping */
+    struct hvm_hw_ia64_identity_mapping im_reg7;/* Region 7 identity mapping */
+};
+DECLARE_HVM_SAVE_TYPE(OPT_FEATURE_IDENTITY_MAPPINGS, 8, struct 
hvm_hw_ia64_identity_mappings);
 
 /* 
  * Largest type-code in use
  */
-#define HVM_SAVE_CODE_MAX       7
+#define HVM_SAVE_CODE_MAX       8
 
 #endif /* __XEN_PUBLIC_HVM_SAVE_IA64_H__ */
 

_______________________________________________
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] vti save-restore: save/restore opt_feature status, Xen patchbot-unstable <=