Warn user if the vga flag is passed but no vga device is created
A global boolean variable "vga_interface_created"(declared in softmmu/globals.c) has been used to track the creation of vga interface. If the vga flag is passed in the command line "default_vga"(declared in softmmu/vl.c) variable is set to 0. To warn user, the condition checks if vga_interface_created is false and default_vga is equal to 0. If "-vga none" is passed, this patch will not warn the user regarding the creation of VGA device. The warning "A -vga option was passed but this machine type does not use that option; no VGA device has been created" is logged if vga flag is passed but no vga device is created. This patch has been tested for x86_64, i386, sparc, sparc64 and arm boards. Signed-off-by: Gautam Agrawal <gautamnagrawal@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/581 Message-Id: <20220501122505.29202-1-gautamnagrawal@gmail.com> [thuth: Fix wrong warning with "-device" in some cases as reported by Paolo] Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
26f0ee7ddb
commit
f9bcb2d684
@ -265,6 +265,7 @@ static void machine_hppa_init(MachineState *machine)
|
||||
|
||||
/* Graphics setup. */
|
||||
if (machine->enable_graphics && vga_interface_type != VGA_NONE) {
|
||||
vga_interface_created = true;
|
||||
dev = qdev_new("artist");
|
||||
s = SYS_BUS_DEVICE(dev);
|
||||
sysbus_realize_and_unref(s, &error_fatal);
|
||||
|
@ -166,6 +166,7 @@ bool isa_realize_and_unref(ISADevice *dev, ISABus *bus, Error **errp)
|
||||
|
||||
ISADevice *isa_vga_init(ISABus *bus)
|
||||
{
|
||||
vga_interface_created = true;
|
||||
switch (vga_interface_type) {
|
||||
case VGA_CIRRUS:
|
||||
return isa_create_simple(bus, "isa-cirrus-vga");
|
||||
|
@ -320,6 +320,7 @@ static void mips_fuloong2e_init(MachineState *machine)
|
||||
|
||||
/* GPU */
|
||||
if (vga_interface_type != VGA_NONE) {
|
||||
vga_interface_created = true;
|
||||
pci_dev = pci_new(-1, "ati-vga");
|
||||
dev = DEVICE(pci_dev);
|
||||
qdev_prop_set_uint32(dev, "vgamem_mb", 16);
|
||||
|
@ -2037,6 +2037,7 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
|
||||
|
||||
PCIDevice *pci_vga_init(PCIBus *bus)
|
||||
{
|
||||
vga_interface_created = true;
|
||||
switch (vga_interface_type) {
|
||||
case VGA_CIRRUS:
|
||||
return pci_create_simple(bus, -1, "cirrus-vga");
|
||||
|
@ -1742,6 +1742,7 @@ static void spapr_rtc_create(SpaprMachineState *spapr)
|
||||
/* Returns whether we want to use VGA or not */
|
||||
static bool spapr_vga_init(PCIBus *pci_bus, Error **errp)
|
||||
{
|
||||
vga_interface_created = true;
|
||||
switch (vga_interface_type) {
|
||||
case VGA_NONE:
|
||||
return false;
|
||||
|
@ -920,6 +920,7 @@ static void sun4m_hw_init(MachineState *machine)
|
||||
/* sbus irq 5 */
|
||||
cg3_init(hwdef->tcx_base, slavio_irq[11], 0x00100000,
|
||||
graphic_width, graphic_height, graphic_depth);
|
||||
vga_interface_created = true;
|
||||
} else {
|
||||
/* If no display specified, default to TCX */
|
||||
if (graphic_depth != 8 && graphic_depth != 24) {
|
||||
@ -935,6 +936,7 @@ static void sun4m_hw_init(MachineState *machine)
|
||||
|
||||
tcx_init(hwdef->tcx_base, slavio_irq[11], 0x00100000,
|
||||
graphic_width, graphic_height, graphic_depth);
|
||||
vga_interface_created = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -632,6 +632,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
|
||||
switch (vga_interface_type) {
|
||||
case VGA_STD:
|
||||
pci_create_simple(pci_busA, PCI_DEVFN(2, 0), "VGA");
|
||||
vga_interface_created = true;
|
||||
break;
|
||||
case VGA_NONE:
|
||||
break;
|
||||
|
@ -63,6 +63,7 @@ static void xen_init_pv(MachineState *machine)
|
||||
if (vga_interface_type == VGA_XENFB) {
|
||||
xen_config_dev_vfb(0, "vnc");
|
||||
xen_config_dev_vkbd(0);
|
||||
vga_interface_created = true;
|
||||
}
|
||||
|
||||
/* configure disks */
|
||||
|
@ -34,6 +34,7 @@ typedef enum {
|
||||
} VGAInterfaceType;
|
||||
|
||||
extern int vga_interface_type;
|
||||
extern bool vga_interface_created;
|
||||
|
||||
extern int graphic_width;
|
||||
extern int graphic_height;
|
||||
|
@ -40,6 +40,7 @@ int nb_nics;
|
||||
NICInfo nd_table[MAX_NICS];
|
||||
int autostart = 1;
|
||||
int vga_interface_type = VGA_NONE;
|
||||
bool vga_interface_created;
|
||||
Chardev *parallel_hds[MAX_PARALLEL_PORTS];
|
||||
int win2k_install_hack;
|
||||
int singlestep;
|
||||
|
@ -1353,6 +1353,7 @@ static void qemu_disable_default_devices(void)
|
||||
|
||||
if (!vga_model && !default_vga) {
|
||||
vga_interface_type = VGA_DEVICE;
|
||||
vga_interface_created = true;
|
||||
}
|
||||
if (!has_defaults || machine_class->no_serial) {
|
||||
default_serial = 0;
|
||||
@ -2736,6 +2737,12 @@ static void qemu_machine_creation_done(void)
|
||||
if (foreach_device_config(DEV_GDB, gdbserver_start) < 0) {
|
||||
exit(1);
|
||||
}
|
||||
if (!vga_interface_created && !default_vga &&
|
||||
vga_interface_type != VGA_NONE) {
|
||||
warn_report("A -vga option was passed but this machine "
|
||||
"type does not use that option; "
|
||||
"No VGA device has been created");
|
||||
}
|
||||
}
|
||||
|
||||
void qmp_x_exit_preconfig(Error **errp)
|
||||
|
Loading…
Reference in New Issue
Block a user