hvm-stub for ia64: tools
RFC 1/3 hvm-stub for ia64: tools
tools/libxc/ia64/Makefile +1 -0
@@ -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
@@ -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
@@ -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
@@ -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,