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] xensetup.c, domain.c, config.h, hypercall.c:

ChangeSet 1.1365, 2005/03/24 15:16:25-07:00, djm@xxxxxxxxxxxxxxx

        xensetup.c, domain.c, config.h, hypercall.c:
          Add (tmp) domain loading hypercalls



 arch/ia64/domain.c        |   52 ++++++++++++++++++++++++++++++++++++++--------
 arch/ia64/hypercall.c     |   13 +++++++++--
 arch/ia64/xensetup.c      |    3 ++
 include/asm-ia64/config.h |    1 
 4 files changed, 59 insertions(+), 10 deletions(-)


diff -Nru a/xen/arch/ia64/domain.c b/xen/arch/ia64/domain.c
--- a/xen/arch/ia64/domain.c    2005-03-25 19:05:55 -05:00
+++ b/xen/arch/ia64/domain.c    2005-03-25 19:05:55 -05:00
@@ -38,6 +38,12 @@
 unsigned long dom0_size = 512*1024*1024; //FIXME: Should be configurable
 //FIXME: alignment should be 256MB, lest Linux use a 256MB page size
 unsigned long dom0_align = 64*1024*1024;
+#ifdef DOMU_BUILD_STAGING
+unsigned long domU_staging_size = 32*1024*1024; //FIXME: Should be configurable
+unsigned long domU_staging_start;
+unsigned long domU_staging_align = 64*1024;
+unsigned long *domU_staging_area;
+#endif
 
 // initialized by arch/ia64/setup.c:find_initrd()
 unsigned long initrd_start = 0, initrd_end = 0;
@@ -542,6 +548,37 @@
 
 }
 
+#ifdef DOMU_BUILD_STAGING
+void alloc_domU_staging(void)
+{
+       domU_staging_size = 32*1024*1024; //FIXME: Should be configurable
+       printf("alloc_domU_staging: starting (initializing %d 
MB...)\n",domU_staging_size/(1024*1024));
+       domU_staging_start= 
alloc_boot_pages(domU_staging_size,domU_staging_align);
+       if (!domU_staging_size) {
+               printf("alloc_domU_staging: can't allocate, spinning...\n");
+               while(1);
+       }
+       else domU_staging_area = (unsigned long *)__va(domU_staging_start);
+       printf("alloc_domU_staging: 
domU_staging_start=%p\n",domU_staging_start);
+
+}
+
+unsigned long
+domU_staging_write_32(unsigned long at, unsigned long a, unsigned long b,
+       unsigned long c, unsigned long d)
+{
+       if (at + 32 > domU_staging_size) return -1;
+       if (at & 0x1f) return -1;
+       at >>= 5;
+       domU_staging_area[at++] = a;
+       domU_staging_area[at++] = b;
+       domU_staging_area[at++] = c;
+       domU_staging_area[at] = d;
+       return 0;
+       
+}
+#endif
+
 int construct_dom0(struct domain *d, 
                       unsigned long image_start, unsigned long image_len, 
                       unsigned long initrd_start, unsigned long initrd_len,
@@ -722,7 +759,7 @@
 }
 
 // FIXME: When dom0 can construct domains, this goes away (or is rewritten)
-int construct_domN(struct domain *d,
+int construct_domU(struct domain *d,
                   unsigned long image_start, unsigned long image_len,
                   unsigned long initrd_start, unsigned long initrd_len,
                   char *cmdline)
@@ -774,20 +811,19 @@
 }
 
 // FIXME: When dom0 can construct domains, this goes away (or is rewritten)
-int launch_domainN(unsigned long start, unsigned long len,
-                  unsigned long initrd_start, unsigned long initrd_len,
-                  char *cmdline)
+int launch_domainU(unsigned long size)
 {
        static int next = 100;  // FIXME
 
        struct domain *d = do_createdomain(next,0);
        if (!d) {
-               printf("launch_domainN: couldn't create\n");
+               printf("launch_domainU: couldn't create\n");
                return 1;
        }
-       if (construct_domN(d, start, len, 0, 0, 0)) {
-               printf("launch_domainN: couldn't construct(id=%d,%lx,%lx)\n",
-                       d->id,start,len);
+       else next++;
+       if (construct_domU(d, (unsigned long)domU_staging_area, size,0,0,0)) {
+               printf("launch_domainU: couldn't construct(id=%d,%lx,%lx)\n",
+                       d->id,domU_staging_area,size);
                return 2;
        }
        domain_unpause_by_systemcontroller(d);
diff -Nru a/xen/arch/ia64/hypercall.c b/xen/arch/ia64/hypercall.c
--- a/xen/arch/ia64/hypercall.c 2005-03-25 19:05:55 -05:00
+++ b/xen/arch/ia64/hypercall.c 2005-03-25 19:05:55 -05:00
@@ -89,10 +89,19 @@
                        vcpu_get_gr(ed,32),
                        vcpu_get_gr(ed,33));
                break;
+#ifdef DOMU_BUILD_STAGING
            case 0xfffd: // test dummy hypercall
-               regs->r8 = launch_domainN(
+               regs->r8 = launch_domainU(
+                       vcpu_get_gr(ed,32));
+               break;
+           case 0xfffc: // test dummy hypercall
+               regs->r8 = domU_staging_write_32(
                        vcpu_get_gr(ed,32),
-                       vcpu_get_gr(ed,33), 0, 0, 0);
+                       vcpu_get_gr(ed,33),
+                       vcpu_get_gr(ed,34),
+                       vcpu_get_gr(ed,35),
+                       vcpu_get_gr(ed,36));
                break;
+#endif
        }
 }
diff -Nru a/xen/arch/ia64/xensetup.c b/xen/arch/ia64/xensetup.c
--- a/xen/arch/ia64/xensetup.c  2005-03-25 19:05:55 -05:00
+++ b/xen/arch/ia64/xensetup.c  2005-03-25 19:05:55 -05:00
@@ -224,6 +224,9 @@
     init_frametable();
 
     alloc_dom0();
+#ifdef DOMU_BUILD_STAGING
+    alloc_domU_staging();
+#endif
 
     end_boot_allocator();
 
diff -Nru a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h     2005-03-25 19:05:55 -05:00
+++ b/xen/include/asm-ia64/config.h     2005-03-25 19:05:55 -05:00
@@ -1,6 +1,7 @@
 // control flags for turning on/off features under test
 #undef CLONE_DOMAIN0
 //#define CLONE_DOMAIN0 5
+#define DOMU_BUILD_STAGING
 
 // manufactured from component pieces
 


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] xensetup.c, domain.c, config.h, hypercall.c:, BitKeeper Bot <=