From a88ae0d44b6b5830b752641b2198735272f13eaf Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Mon, 28 Sep 2015 17:01:23 -0300 Subject: pc: Require xen when initializing xenfv machine Without this check, the xen-platform device will crash on reset if using the accel option with anything other than xen (e.g. "-machine xenfv,accel=kvm"). Signed-off-by: Eduardo Habkost Reviewed-by: Stefano Stabellini Signed-off-by: Stefano Stabellini --- hw/i386/pc_piix.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'hw') diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index ae7bbeb..a91cc3d 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -434,6 +434,11 @@ static void pc_xen_hvm_init(MachineState *machine) { PCIBus *bus; + if (!xen_enabled()) { + error_report("xenfv machine requires the xen accelerator"); + exit(1); + } + pc_xen_hvm_init_pci(machine); bus = pci_find_primary_bus(); -- cgit v1.1 From dbb7405d8caad0814ceddd568cb49f163a847561 Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Mon, 28 Sep 2015 17:01:24 -0300 Subject: xen-platform: Ensure xen is enabled when initializing The xen-platform code crashes on reset if the xen backend is not initialized, because it calls xc_hvm_set_mem_type(). Ensure xen-platform won't be created without initializing the xen backend. The assert can't be triggered by the user because the device is not hotpluggable, and the only code creating it (at pc_xen_hvm_init()) already checks xen_enabled(). Signed-off-by: Eduardo Habkost Reviewed-by: Stefano Stabellini Signed-off-by: Stefano Stabellini --- hw/i386/xen/xen_platform.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'hw') diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c index ee45f03..8682c42 100644 --- a/hw/i386/xen/xen_platform.c +++ b/hw/i386/xen/xen_platform.c @@ -387,6 +387,9 @@ static int xen_platform_initfn(PCIDevice *dev) PCIXenPlatformState *d = XEN_PLATFORM(dev); uint8_t *pci_conf; + /* Device will crash on reset if xen is not initialized */ + assert(xen_enabled()); + pci_conf = dev->config; pci_set_word(pci_conf + PCI_COMMAND, PCI_COMMAND_IO | PCI_COMMAND_MEMORY); -- cgit v1.1