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. */
|
/* Graphics setup. */
|
||||||
if (machine->enable_graphics && vga_interface_type != VGA_NONE) {
|
if (machine->enable_graphics && vga_interface_type != VGA_NONE) {
|
||||||
|
vga_interface_created = true;
|
||||||
dev = qdev_new("artist");
|
dev = qdev_new("artist");
|
||||||
s = SYS_BUS_DEVICE(dev);
|
s = SYS_BUS_DEVICE(dev);
|
||||||
sysbus_realize_and_unref(s, &error_fatal);
|
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)
|
ISADevice *isa_vga_init(ISABus *bus)
|
||||||
{
|
{
|
||||||
|
vga_interface_created = true;
|
||||||
switch (vga_interface_type) {
|
switch (vga_interface_type) {
|
||||||
case VGA_CIRRUS:
|
case VGA_CIRRUS:
|
||||||
return isa_create_simple(bus, "isa-cirrus-vga");
|
return isa_create_simple(bus, "isa-cirrus-vga");
|
||||||
|
@ -320,6 +320,7 @@ static void mips_fuloong2e_init(MachineState *machine)
|
|||||||
|
|
||||||
/* GPU */
|
/* GPU */
|
||||||
if (vga_interface_type != VGA_NONE) {
|
if (vga_interface_type != VGA_NONE) {
|
||||||
|
vga_interface_created = true;
|
||||||
pci_dev = pci_new(-1, "ati-vga");
|
pci_dev = pci_new(-1, "ati-vga");
|
||||||
dev = DEVICE(pci_dev);
|
dev = DEVICE(pci_dev);
|
||||||
qdev_prop_set_uint32(dev, "vgamem_mb", 16);
|
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)
|
PCIDevice *pci_vga_init(PCIBus *bus)
|
||||||
{
|
{
|
||||||
|
vga_interface_created = true;
|
||||||
switch (vga_interface_type) {
|
switch (vga_interface_type) {
|
||||||
case VGA_CIRRUS:
|
case VGA_CIRRUS:
|
||||||
return pci_create_simple(bus, -1, "cirrus-vga");
|
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 */
|
/* Returns whether we want to use VGA or not */
|
||||||
static bool spapr_vga_init(PCIBus *pci_bus, Error **errp)
|
static bool spapr_vga_init(PCIBus *pci_bus, Error **errp)
|
||||||
{
|
{
|
||||||
|
vga_interface_created = true;
|
||||||
switch (vga_interface_type) {
|
switch (vga_interface_type) {
|
||||||
case VGA_NONE:
|
case VGA_NONE:
|
||||||
return false;
|
return false;
|
||||||
|
@ -920,6 +920,7 @@ static void sun4m_hw_init(MachineState *machine)
|
|||||||
/* sbus irq 5 */
|
/* sbus irq 5 */
|
||||||
cg3_init(hwdef->tcx_base, slavio_irq[11], 0x00100000,
|
cg3_init(hwdef->tcx_base, slavio_irq[11], 0x00100000,
|
||||||
graphic_width, graphic_height, graphic_depth);
|
graphic_width, graphic_height, graphic_depth);
|
||||||
|
vga_interface_created = true;
|
||||||
} else {
|
} else {
|
||||||
/* If no display specified, default to TCX */
|
/* If no display specified, default to TCX */
|
||||||
if (graphic_depth != 8 && graphic_depth != 24) {
|
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,
|
tcx_init(hwdef->tcx_base, slavio_irq[11], 0x00100000,
|
||||||
graphic_width, graphic_height, graphic_depth);
|
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) {
|
switch (vga_interface_type) {
|
||||||
case VGA_STD:
|
case VGA_STD:
|
||||||
pci_create_simple(pci_busA, PCI_DEVFN(2, 0), "VGA");
|
pci_create_simple(pci_busA, PCI_DEVFN(2, 0), "VGA");
|
||||||
|
vga_interface_created = true;
|
||||||
break;
|
break;
|
||||||
case VGA_NONE:
|
case VGA_NONE:
|
||||||
break;
|
break;
|
||||||
|
@ -63,6 +63,7 @@ static void xen_init_pv(MachineState *machine)
|
|||||||
if (vga_interface_type == VGA_XENFB) {
|
if (vga_interface_type == VGA_XENFB) {
|
||||||
xen_config_dev_vfb(0, "vnc");
|
xen_config_dev_vfb(0, "vnc");
|
||||||
xen_config_dev_vkbd(0);
|
xen_config_dev_vkbd(0);
|
||||||
|
vga_interface_created = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* configure disks */
|
/* configure disks */
|
||||||
|
@ -34,6 +34,7 @@ typedef enum {
|
|||||||
} VGAInterfaceType;
|
} VGAInterfaceType;
|
||||||
|
|
||||||
extern int vga_interface_type;
|
extern int vga_interface_type;
|
||||||
|
extern bool vga_interface_created;
|
||||||
|
|
||||||
extern int graphic_width;
|
extern int graphic_width;
|
||||||
extern int graphic_height;
|
extern int graphic_height;
|
||||||
|
@ -40,6 +40,7 @@ int nb_nics;
|
|||||||
NICInfo nd_table[MAX_NICS];
|
NICInfo nd_table[MAX_NICS];
|
||||||
int autostart = 1;
|
int autostart = 1;
|
||||||
int vga_interface_type = VGA_NONE;
|
int vga_interface_type = VGA_NONE;
|
||||||
|
bool vga_interface_created;
|
||||||
Chardev *parallel_hds[MAX_PARALLEL_PORTS];
|
Chardev *parallel_hds[MAX_PARALLEL_PORTS];
|
||||||
int win2k_install_hack;
|
int win2k_install_hack;
|
||||||
int singlestep;
|
int singlestep;
|
||||||
|
@ -1353,6 +1353,7 @@ static void qemu_disable_default_devices(void)
|
|||||||
|
|
||||||
if (!vga_model && !default_vga) {
|
if (!vga_model && !default_vga) {
|
||||||
vga_interface_type = VGA_DEVICE;
|
vga_interface_type = VGA_DEVICE;
|
||||||
|
vga_interface_created = true;
|
||||||
}
|
}
|
||||||
if (!has_defaults || machine_class->no_serial) {
|
if (!has_defaults || machine_class->no_serial) {
|
||||||
default_serial = 0;
|
default_serial = 0;
|
||||||
@ -2736,6 +2737,12 @@ static void qemu_machine_creation_done(void)
|
|||||||
if (foreach_device_config(DEV_GDB, gdbserver_start) < 0) {
|
if (foreach_device_config(DEV_GDB, gdbserver_start) < 0) {
|
||||||
exit(1);
|
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)
|
void qmp_x_exit_preconfig(Error **errp)
|
||||||
|
Loading…
Reference in New Issue
Block a user