To allow kernel to handle radically different hypervisors in the future, I thought a magic field in the start_info might be useful. I just chose "Xen-<major>.<minor>", but feel free to change it. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (authored) diff -r 94cee9a918de tools/libxc/xc_linux_build.c --- a/tools/libxc/xc_linux_build.c Sat Oct 22 07:35:03 2005 +++ b/tools/libxc/xc_linux_build.c Mon Oct 24 17:23:24 2005 @@ -350,6 +350,8 @@ start_info = xc_map_foreign_range( xc_handle, dom, PAGE_SIZE, PROT_READ|PROT_WRITE, page_array[0]); memset(start_info, 0, sizeof(*start_info)); + rc = xc_version(xc_handle, XENVER_version, NULL); + sprintf(start_info->magic, "Xen-%i.%i", rc >> 16, rc & (0xFFFF)); start_info->flags = flags; start_info->store_mfn = nr_pages - 2; start_info->store_evtchn = store_evtchn; @@ -624,6 +626,8 @@ xc_handle, dom, PAGE_SIZE, PROT_READ|PROT_WRITE, page_array[(vstartinfo_start-dsi.v_start)>>PAGE_SHIFT]); memset(start_info, 0, sizeof(*start_info)); + rc = xc_version(xc_handle, XENVER_version, NULL); + sprintf(start_info->magic, "Xen-%i.%i", rc >> 16, rc & (0xFFFF)); start_info->nr_pages = nr_pages; start_info->shared_info = shared_info_frame << PAGE_SHIFT; start_info->flags = flags; diff -r 94cee9a918de xen/arch/ia64/xen/domain.c --- a/xen/arch/ia64/xen/domain.c Sat Oct 22 07:35:03 2005 +++ b/xen/arch/ia64/xen/domain.c Mon Oct 24 17:23:24 2005 @@ -28,6 +28,7 @@ #include <xen/event.h> //#include <xen/shadow.h> #include <xen/console.h> +#include <xen/compile.h> #include <xen/elf.h> //#include <asm/page.h> @@ -930,6 +931,7 @@ si = (start_info_t *)alloc_xenheap_page(); memset(si, 0, PAGE_SIZE); d->shared_info->arch.start_info_pfn = __pa(si) >> PAGE_SHIFT; + sprintf(si->magic, "Xen-%i.%i", XEN_VERSION, XEN_SUBVERSION); #if 0 si->nr_pages = d->tot_pages; diff -r 94cee9a918de xen/arch/x86/domain_build.c --- a/xen/arch/x86/domain_build.c Sat Oct 22 07:35:03 2005 +++ b/xen/arch/x86/domain_build.c Mon Oct 24 17:23:24 2005 @@ -15,6 +15,7 @@ #include <xen/elf.h> #include <xen/kernel.h> #include <xen/domain.h> +#include <xen/compile.h> #include <asm/regs.h> #include <asm/system.h> #include <asm/io.h> @@ -602,6 +603,7 @@ si->pt_base = vpt_start; si->nr_pt_frames = nr_pt_pages; si->mfn_list = vphysmap_start; + sprintf(si->magic, "Xen-%i.%i", XEN_VERSION, XEN_SUBVERSION); /* Write the phys->machine and machine->phys table entries. */ for ( pfn = 0; pfn < d->tot_pages; pfn++ ) diff -r 94cee9a918de xen/include/public/xen.h --- a/xen/include/public/xen.h Sat Oct 22 07:35:03 2005 +++ b/xen/include/public/xen.h Mon Oct 24 17:23:24 2005 @@ -410,6 +410,7 @@ #define MAX_GUEST_CMDLINE 1024 typedef struct start_info { /* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME. */ + char magic[32]; /* "Xen-<version>.<subversion>". */ unsigned long nr_pages; /* Total pages allocated to this domain. */ unsigned long shared_info; /* MACHINE address of shared info struct. */ uint32_t flags; /* SIF_xxx flags. */ -- A bad analogy is like a leaky screwdriver -- Richard Braakman _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel