All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: kvm-ppc@vger.kernel.org
Cc: David Gibson <dwg@au1.ibm.com>,
	qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [PATCH] spapr: Add support for -vga option
Date: Fri, 23 Dec 2011 05:36:10 +0000	[thread overview]
Message-ID: <1324618570.6632.14.camel@pasglop> (raw)
In-Reply-To: <1323854540.7671.16.camel@pasglop>

On Wed, 2011-12-14 at 20:22 +1100, Benjamin Herrenschmidt wrote:
> The -vga option is a handy "high level" option for instanciating things
> automatically. This adds support for it to the spapr (aka pseries)
> machine.
> 
> Also instanciate the USB keyboard and mouse when that option is used
> (you can still use -device to create individual devices without all
> the defaults)
> 
> The default remains no VGA and no USB, and of course you can use -device
> to manually instanciate individual devices.
> 
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---

BTW. Don't apply this just yet. New version coming soon.

Cheers,
Ben.

>  Makefile.target |    2 +-
>  hw/spapr.c      |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 47 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile.target b/Makefile.target
> index 03e3c55..c78fc25 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -243,7 +243,7 @@ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
>  
>  # shared objects
>  obj-ppc-y = ppc.o ppc_booke.o
> -obj-ppc-y += vga.o
> +obj-ppc-y += vga.o cirrus_vga.o
>  # PREP target
>  obj-ppc-y += mc146818rtc.o
>  obj-ppc-y += ppc_prep.o
> diff --git a/hw/spapr.c b/hw/spapr.c
> index c5353fb..3b9e576 100644
> --- a/hw/spapr.c
> +++ b/hw/spapr.c
> @@ -49,6 +49,7 @@
>  #include "pci.h"
>  #include "usb.h"
>  #include "usb-ohci.h"
> +#include "pc.h"
>  
>  #include "exec-memory.h"
>  
> @@ -76,6 +77,7 @@
>  #define PHANDLE_XICP            0x00001111
>  
>  sPAPREnvironment *spapr;
> +static int spapr_has_graphics;
>  
>  qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num)
>  {
> @@ -318,6 +320,9 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
>      _FDT((fdt_property(fdt, "linux,initrd-end",
>                         &end_prop, sizeof(end_prop))));
>      _FDT((fdt_property_string(fdt, "qemu,boot-device", boot_device)));
> +    _FDT((fdt_property_cell(fdt, "qemu,graphic-width", graphic_width)));
> +    _FDT((fdt_property_cell(fdt, "qemu,graphic-height", graphic_height)));
> +    _FDT((fdt_property_cell(fdt, "qemu,graphic-depth", graphic_depth)));
>  
>      _FDT((fdt_end_node(fdt)));
>  
> @@ -563,7 +568,9 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr,
>          }
>      }
>  
> -    spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
> +    if (!spapr_has_graphics) {
> +	spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
> +    }
>  
>      _FDT((fdt_pack(fdt)));
>  
> @@ -603,6 +610,26 @@ static void spapr_reset(void *opaque)
>  
>  }
>  
> +static int spapr_vga_init(PCIBus *pci_bus)
> +{
> +    /* Default is nothing */
> +    if (cirrus_vga_enabled) {
> +        pci_cirrus_vga_init(pci_bus);
> +    } else if (vmsvga_enabled) {
> +	fprintf(stderr, "Warning: vmware_vga not available,"
> +		" using standard VGA instead\n");
> +	pci_vga_init(pci_bus);
> +#ifdef CONFIG_SPICE
> +    } else if (qxl_enabled) {
> +        pci_create_simple(pci_bus, -1, "qxl-vga");
> +#endif
> +    } else if (std_vga_enabled) {
> +        pci_vga_init(pci_bus);
> +    } else
> +       return 0;
> +    return 1;
> +}
> +
>  /* pSeries LPAR / sPAPR hardware init */
>  static void ppc_spapr_init(ram_addr_t ram_size,
>                             const char *boot_device,
> @@ -746,9 +773,27 @@ static void ppc_spapr_init(ram_addr_t ram_size,
>          spapr_vscsi_create(spapr->vio_bus, 0x2000 + i);
>      }
>  
> +    /* Graphics */
> +    if (spapr_vga_init(QLIST_FIRST(&spapr->phbs)->host_state.bus)) {
> +	spapr_has_graphics = 1;
> +	usb_enabled = 1;
> +    }
> +
> +    /* Default depth is 15 which is bad, SLOF only supports 8 so it should
> +     * be the default (while we should still allow to specify 16 or 32)
> +     * so I'm cheating and converting 15 to 8 here. Ideally we should have
> +     * a way to set the defaults per machine.
> +     */
> +    if (graphic_depth = 15)
> +        graphic_depth = 8;
> +
>      /* USB */
>      if (usb_enabled) {
>          usb_ohci_init_pci(QLIST_FIRST(&spapr->phbs)->host_state.bus, -1);
> +	if (spapr_has_graphics) {
> +	    usbdevice_create("keyboard");
> +	    usbdevice_create("mouse");
> +	}
>      }
>  
>      if (kernel_filename) {
> 



WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: kvm-ppc@vger.kernel.org
Cc: David Gibson <dwg@au1.ibm.com>,
	qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH] spapr: Add support for -vga option
Date: Fri, 23 Dec 2011 16:36:10 +1100	[thread overview]
Message-ID: <1324618570.6632.14.camel@pasglop> (raw)
In-Reply-To: <1323854540.7671.16.camel@pasglop>

On Wed, 2011-12-14 at 20:22 +1100, Benjamin Herrenschmidt wrote:
> The -vga option is a handy "high level" option for instanciating things
> automatically. This adds support for it to the spapr (aka pseries)
> machine.
> 
> Also instanciate the USB keyboard and mouse when that option is used
> (you can still use -device to create individual devices without all
> the defaults)
> 
> The default remains no VGA and no USB, and of course you can use -device
> to manually instanciate individual devices.
> 
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> ---

BTW. Don't apply this just yet. New version coming soon.

Cheers,
Ben.

>  Makefile.target |    2 +-
>  hw/spapr.c      |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
>  2 files changed, 47 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile.target b/Makefile.target
> index 03e3c55..c78fc25 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -243,7 +243,7 @@ obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
>  
>  # shared objects
>  obj-ppc-y = ppc.o ppc_booke.o
> -obj-ppc-y += vga.o
> +obj-ppc-y += vga.o cirrus_vga.o
>  # PREP target
>  obj-ppc-y += mc146818rtc.o
>  obj-ppc-y += ppc_prep.o
> diff --git a/hw/spapr.c b/hw/spapr.c
> index c5353fb..3b9e576 100644
> --- a/hw/spapr.c
> +++ b/hw/spapr.c
> @@ -49,6 +49,7 @@
>  #include "pci.h"
>  #include "usb.h"
>  #include "usb-ohci.h"
> +#include "pc.h"
>  
>  #include "exec-memory.h"
>  
> @@ -76,6 +77,7 @@
>  #define PHANDLE_XICP            0x00001111
>  
>  sPAPREnvironment *spapr;
> +static int spapr_has_graphics;
>  
>  qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num)
>  {
> @@ -318,6 +320,9 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
>      _FDT((fdt_property(fdt, "linux,initrd-end",
>                         &end_prop, sizeof(end_prop))));
>      _FDT((fdt_property_string(fdt, "qemu,boot-device", boot_device)));
> +    _FDT((fdt_property_cell(fdt, "qemu,graphic-width", graphic_width)));
> +    _FDT((fdt_property_cell(fdt, "qemu,graphic-height", graphic_height)));
> +    _FDT((fdt_property_cell(fdt, "qemu,graphic-depth", graphic_depth)));
>  
>      _FDT((fdt_end_node(fdt)));
>  
> @@ -563,7 +568,9 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr,
>          }
>      }
>  
> -    spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
> +    if (!spapr_has_graphics) {
> +	spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
> +    }
>  
>      _FDT((fdt_pack(fdt)));
>  
> @@ -603,6 +610,26 @@ static void spapr_reset(void *opaque)
>  
>  }
>  
> +static int spapr_vga_init(PCIBus *pci_bus)
> +{
> +    /* Default is nothing */
> +    if (cirrus_vga_enabled) {
> +        pci_cirrus_vga_init(pci_bus);
> +    } else if (vmsvga_enabled) {
> +	fprintf(stderr, "Warning: vmware_vga not available,"
> +		" using standard VGA instead\n");
> +	pci_vga_init(pci_bus);
> +#ifdef CONFIG_SPICE
> +    } else if (qxl_enabled) {
> +        pci_create_simple(pci_bus, -1, "qxl-vga");
> +#endif
> +    } else if (std_vga_enabled) {
> +        pci_vga_init(pci_bus);
> +    } else
> +       return 0;
> +    return 1;
> +}
> +
>  /* pSeries LPAR / sPAPR hardware init */
>  static void ppc_spapr_init(ram_addr_t ram_size,
>                             const char *boot_device,
> @@ -746,9 +773,27 @@ static void ppc_spapr_init(ram_addr_t ram_size,
>          spapr_vscsi_create(spapr->vio_bus, 0x2000 + i);
>      }
>  
> +    /* Graphics */
> +    if (spapr_vga_init(QLIST_FIRST(&spapr->phbs)->host_state.bus)) {
> +	spapr_has_graphics = 1;
> +	usb_enabled = 1;
> +    }
> +
> +    /* Default depth is 15 which is bad, SLOF only supports 8 so it should
> +     * be the default (while we should still allow to specify 16 or 32)
> +     * so I'm cheating and converting 15 to 8 here. Ideally we should have
> +     * a way to set the defaults per machine.
> +     */
> +    if (graphic_depth == 15)
> +        graphic_depth = 8;
> +
>      /* USB */
>      if (usb_enabled) {
>          usb_ohci_init_pci(QLIST_FIRST(&spapr->phbs)->host_state.bus, -1);
> +	if (spapr_has_graphics) {
> +	    usbdevice_create("keyboard");
> +	    usbdevice_create("mouse");
> +	}
>      }
>  
>      if (kernel_filename) {
> 

  parent reply	other threads:[~2011-12-23  5:36 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-14  9:22 [PATCH] spapr: Add support for -vga option Benjamin Herrenschmidt
2011-12-14  9:22 ` [Qemu-devel] " Benjamin Herrenschmidt
2011-12-14 15:30 ` Paolo Bonzini
2011-12-14 15:30   ` [Qemu-devel] " Paolo Bonzini
2011-12-14 20:04   ` Benjamin Herrenschmidt
2011-12-14 20:04     ` [Qemu-devel] " Benjamin Herrenschmidt
2011-12-14 21:48 ` Anthony Liguori
2011-12-14 21:48   ` Anthony Liguori
2011-12-15  0:00   ` Benjamin Herrenschmidt
2011-12-15  0:00     ` Benjamin Herrenschmidt
2011-12-15  0:10     ` Anthony Liguori
2011-12-15  0:10       ` Anthony Liguori
2011-12-23  5:36 ` Benjamin Herrenschmidt [this message]
2011-12-23  5:36   ` Benjamin Herrenschmidt

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=1324618570.6632.14.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=agraf@suse.de \
    --cc=dwg@au1.ibm.com \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    /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.