[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/2] mini-os: support keeping start_info structure conditionally
grub stubdom needs the start_info structure. Keep a copy of it in pv mini-os if configured via "CONFIG_KEEP_STARTINFO". This should default to "n" in order to have it enabled only when really needed. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> --- Config.mk | 2 ++ arch/x86/setup.c | 12 ++++++++++++ include/hypervisor.h | 13 +++++++++++++ 3 files changed, 27 insertions(+) diff --git a/Config.mk b/Config.mk index aa36761..ae18ffd 100644 --- a/Config.mk +++ b/Config.mk @@ -175,6 +175,7 @@ CONFIG_XENBUS ?= y CONFIG_XC ?=y CONFIG_LWIP ?= $(lwip) CONFIG_BALLOON ?= n +CONFIG_KEEP_STARTINFO ?= n # Export config items as compiler directives DEFINES-$(CONFIG_PARAVIRT) += -DCONFIG_PARAVIRT @@ -192,6 +193,7 @@ DEFINES-$(CONFIG_FBFRONT) += -DCONFIG_FBFRONT DEFINES-$(CONFIG_CONSFRONT) += -DCONFIG_CONSFRONT DEFINES-$(CONFIG_XENBUS) += -DCONFIG_XENBUS DEFINES-$(CONFIG_BALLOON) += -DCONFIG_BALLOON +DEFINES-$(CONFIG_KEEP_STARTINFO) += -DCONFIG_KEEP_STARTINFO # Override settings for this OS PTHREAD_LIBS = diff --git a/arch/x86/setup.c b/arch/x86/setup.c index 86955cf..1761b81 100644 --- a/arch/x86/setup.c +++ b/arch/x86/setup.c @@ -33,6 +33,14 @@ #include <xen/arch-x86/cpuid.h> #include <xen/arch-x86/hvm/start_info.h> +#ifdef CONFIG_KEEP_STARTINFO +/* + * This structure contains start-of-day info, such as pagetable base pointer, + * address of the shared_info structure, and things like that. + */ +union start_info_union start_info_union; +#endif + /* * Shared page for communicating with the hypervisor. * Events flags go here, for example. @@ -189,6 +197,10 @@ arch_init(void *par) /* print out some useful information */ print_start_of_day(par); +#ifdef CONFIG_KEEP_STARTINFO + memcpy(&start_info, par, sizeof(start_info)); +#endif + start_kernel(); } diff --git a/include/hypervisor.h b/include/hypervisor.h index 3073a8a..5475867 100644 --- a/include/hypervisor.h +++ b/include/hypervisor.h @@ -27,6 +27,19 @@ #include <mini-os/traps.h> /* hypervisor.c */ +#ifdef CONFIG_KEEP_STARTINFO +/* + * a placeholder for the start of day information passed up from the hypervisor + */ +union start_info_union +{ + start_info_t start_info; + char padding[512]; +}; +extern union start_info_union start_info_union; +#define start_info (start_info_union.start_info) +#endif + #ifndef CONFIG_PARAVIRT int hvm_get_parameter(int idx, uint64_t *value); int hvm_set_parameter(int idx, uint64_t value); -- 2.6.6 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |