Skip to contentSkip to conversation

hvm-stub for ia64: tools

RFC In review [email protected] 1 participant 1 message Nov 22, 2007 Arm/actions semi architecture

lore
Share & tools
lore
#0 lore raw

RFC 1/3 hvm-stub for ia64: tools

tools/libxc/ia64/Makefile +1 -0
diff -r 092232fa1fbd tools/libxc/ia64/Makefile
@@ -1,6 +1,7 @@ CTRL_SRCS-y += ia64/xc_ia64_stubs.c
 CTRL_SRCS-y += ia64/xc_ia64_stubs.c
 
 GUEST_SRCS-y += ia64/xc_ia64_hvm_build.c
+GUEST_SRCS-y += ia64/xc_ia64_hvmstub_build.c
 GUEST_SRCS-y += ia64/xc_ia64_linux_save.c
 GUEST_SRCS-y += ia64/xc_ia64_linux_restore.c
 
tools/libxc/ia64/xc_ia64_hvmstub_build.c new file +239 -0

239 lines not on this page · raw message

tools/libxc/xenguest.h +9 -0
diff -r 092232fa1fbd tools/libxc/xenguest.h
@@ -136,6 +136,15 @@ int xc_hvm_build_mem(int xc_handle,
                      const char *image_buffer,
                      unsigned long image_size);
 
+int xc_hvmstub_build(int xc_handle,
+		     uint32_t domid,
+		     unsigned int mem_mb,
+		     const char *image_name,
+		     unsigned int store_evtchn,
+		     unsigned long *store_mfn,
+		     unsigned int console_evtchn,
+		     unsigned long *console_mfn);
+
 /* PowerPC specific. */
 int xc_prose_build(int xc_handle,
                    uint32_t domid,
tools/libxc/xg_private.c +15 -0
diff -r 092232fa1fbd tools/libxc/xg_private.c
@@ -197,6 +197,21 @@ __attribute__((weak))
     errno = ENOSYS;
     return -1;
 }
+
+__attribute__((weak)) 
+     int xc_hvmstub_build(int xc_handle,
+                          uint32_t domid,
+                          unsigned int mem_mb,
+                          const char *image_name,
+                          unsigned int store_evtchn,
+                          unsigned long *store_mfn,
+                          unsigned int console_evtchn,
+                          unsigned long *console_mfn)
+{
+    errno = ENOSYS;
+    return -1;
+}
+    
 
 /*
  * Local variables:
tools/python/xen/lowlevel/xc/xc.c +41 -0

53 lines not on this page · raw message

tools/python/xen/xend/image.py +40 -0
diff -r 092232fa1fbd tools/python/xen/xend/image.py
@@ -570,6 +570,45 @@ class IA64_Linux_ImageHandler(LinuxImage
         self.vhpt = int(vmConfig['platform'].get('vhpt',  0))
 
 
+class IA64_HVMStub_ImageHandler(ImageHandler):
+
+    ostype = "hvmstub"
+
+    def getRequiredAvailableMemory(self, mem_kb):
+        page_kb = 16
+        # ROM size for guest firmware, io page, xenstore page
+        # buffer io page, buffer pio page and memmap info page
+        extra_pages = 1024 + 5
+        return mem_kb + extra_pages * page_kb
+
+    def getRequiredInitialReservation(self):
+        return self.vm.getMemoryTarget()
+
+    def getRequiredShadowMemory(self, shadow_mem_kb, maxmem_kb):
+        # Explicit shadow memory is not a concept 
+        return 0
+
+    def buildDomain(self):
+        store_evtchn = self.vm.getStorePort()
+        console_evtchn = self.vm.getConsolePort()
+
+        mem_mb = self.getRequiredInitialReservation() / 1024
+
+        log.debug("domid          = %d", self.vm.getDomid())
+        log.debug("memsize        = %d", mem_mb)
+        log.debug("image          = %s", self.kernel)
+        log.debug("store_evtchn   = %d", store_evtchn)
+        log.debug("console_evtchn = %d", console_evtchn)
+        log.debug("features       = %s", self.vm.getFeatures())
+
+        return xc.hvmstub_build(domid          = self.vm.getDomid(),
+                                memsize        = mem_mb,
+                                image          = self.kernel,
+                                store_evtchn   = store_evtchn,
+                                console_evtchn = console_evtchn,
+                                features       = self.vm.getFeatures())
+
+
 class X86_HVM_ImageHandler(HVMImageHandler):
 
     def configure(self, vmConfig):
@@ -616,6 +655,7 @@ _handlers = {
     "ia64": {
         "linux": IA64_Linux_ImageHandler,
         "hvm": IA64_HVM_ImageHandler,
+        "hvmstub": IA64_HVMStub_ImageHandler,
     },
     "x86": {
         "linux": X86_Linux_ImageHandler,