int i, j, e820_warn = 0, bytes = 0;
bool acpi_boot_table_init_done = false, relocated = false;
int ret;
+ bool running_on_hypervisor;
struct ns16550_defaults ns16550 = {
.data_bits = 8,
.parity = 'n',
* allocing any xenheap structures wanted in lower memory. */
kexec_early_calculations();
- hypervisor_probe();
+ running_on_hypervisor = hypervisor_probe();
parse_video_info();
printk("Xen image load base address: %#lx\n", xen_phys_start);
+ if ( running_on_hypervisor )
+ printk("Running on %s\n", hypervisor_name());
+
#ifdef CONFIG_VIDEO
printk("Video information:\n");
void hypervisor_setup(void);
void hypervisor_ap_setup(void);
void hypervisor_resume(void);
+const char *hypervisor_name(void);
#else
+#include <xen/lib.h>
#include <xen/types.h>
static inline bool hypervisor_probe(void) { return false; }
static inline void hypervisor_setup(void) {}
static inline void hypervisor_ap_setup(void) {}
static inline void hypervisor_resume(void) {}
+static inline const char *hypervisor_name(void) { ASSERT_UNREACHABLE(); return NULL; }
#endif /* CONFIG_GUEST */