All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@gmail.com>
To: Richard Henderson <richard.henderson@linaro.org>, kraxel@redhat.com
Cc: qemu-devel@nongnu.org, thuth@redhat.com,
	peter.maydell@linaro.org,
	Gautam Agrawal <gutamnagrawal@gmail.com>
Subject: Re: [PATCH v3] Warn user if the vga flag is passed but no vga device is created
Date: Fri, 6 May 2022 15:24:38 +0100	[thread overview]
Message-ID: <YnUvpsaM0hwUSZvM@stefanha-x1.localdomain> (raw)
In-Reply-To: <20220501122505.29202-1-gautamnagrawal@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7017 bytes --]

On Sun, May 01, 2022 at 05:55:05PM +0530, Gautam Agrawal wrote:
> 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>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/581
> ---
>  hw/hppa/machine.c         | 1 +
>  hw/isa/isa-bus.c          | 1 +
>  hw/mips/fuloong2e.c       | 1 +
>  hw/pci/pci.c              | 1 +
>  hw/ppc/spapr.c            | 1 +
>  hw/sparc/sun4m.c          | 2 ++
>  hw/sparc64/sun4u.c        | 1 +
>  hw/xenpv/xen_machine_pv.c | 1 +
>  include/sysemu/sysemu.h   | 1 +
>  softmmu/globals.c         | 1 +
>  softmmu/vl.c              | 6 ++++++
>  11 files changed, 17 insertions(+)

Gerd or Richard: do you want to merge this patch?

Thanks,
Stefan

> 
> diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
> index f7595c0857..2e37349347 100644
> --- a/hw/hppa/machine.c
> +++ b/hw/hppa/machine.c
> @@ -192,6 +192,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);
> diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
> index 0ad1c5fd65..cd5ad3687d 100644
> --- a/hw/isa/isa-bus.c
> +++ b/hw/isa/isa-bus.c
> @@ -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");
> diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
> index 7b13098f9b..5ee546f5f6 100644
> --- a/hw/mips/fuloong2e.c
> +++ b/hw/mips/fuloong2e.c
> @@ -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);
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index e99417e501..9c58f02853 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -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");
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 22569305d2..9df493cfe2 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -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;
> diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
> index fccaed1eb4..b693eea0e0 100644
> --- a/hw/sparc/sun4m.c
> +++ b/hw/sparc/sun4m.c
> @@ -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;
>          }
>      }
>  
> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
> index 6fd08e2298..7c461d194a 100644
> --- a/hw/sparc64/sun4u.c
> +++ b/hw/sparc64/sun4u.c
> @@ -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;
> diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
> index 8df575a457..20c9611d71 100644
> --- a/hw/xenpv/xen_machine_pv.c
> +++ b/hw/xenpv/xen_machine_pv.c
> @@ -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 */
> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
> index 10e283c170..360a408edf 100644
> --- a/include/sysemu/sysemu.h
> +++ b/include/sysemu/sysemu.h
> @@ -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;
> diff --git a/softmmu/globals.c b/softmmu/globals.c
> index 3ebd718e35..98b64e0492 100644
> --- a/softmmu/globals.c
> +++ b/softmmu/globals.c
> @@ -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;
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index 06a0e342fe..8411cb15af 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -2734,6 +2734,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)
> -- 
> 2.34.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  parent reply	other threads:[~2022-05-06 14:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-01 12:25 [PATCH v3] Warn user if the vga flag is passed but no vga device is created Gautam Agrawal
2022-05-05  8:54 ` Peter Maydell
2022-05-06 14:24 ` Stefan Hajnoczi [this message]
2022-05-06 14:31   ` Thomas Huth
2022-05-06 14:48     ` Peter Maydell
2022-05-06 15:43       ` Paolo Bonzini
2022-05-06 15:47         ` Peter Maydell
2022-05-06 16:10           ` Paolo Bonzini
2022-05-06 16:29             ` Peter Maydell
2022-05-09 10:04               ` Gerd Hoffmann
2022-05-09  6:09         ` Thomas Huth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YnUvpsaM0hwUSZvM@stefanha-x1.localdomain \
    --to=stefanha@gmail.com \
    --cc=gutamnagrawal@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.