All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frediano Ziglio <fziglio@redhat.com>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: qemu-devel@nongnu.org, spice-devel@lists.freedesktop.org
Subject: Re: [Qemu-devel] [PULL 1/2] qxl: store channel id in qxl->id
Date: Fri, 2 Nov 2018 05:10:13 -0400 (EDT)	[thread overview]
Message-ID: <317924534.39835893.1541149813210.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20181029124703.11123-2-kraxel@redhat.com>

> 
> See qemu_spice_add_display_interface(), the console index is also used
> as channel id.  So put that into the qxl->id field too.
> 
> In typical use cases (one primary qxl-vga device, optionally one or more
> secondary qxl devices, no non-qxl display devices) this doesn't change
> anything.
> 
> With this in place the qxl->id can not be used any more to figure
> whenever a given device is primary (with vga compat mode) or secondary.
> So add a bool to track this.
> 
> Cc: spice-devel@lists.freedesktop.org
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Message-id: 20181012114540.27829-1-kraxel@redhat.com
> ---
>  hw/display/qxl.h |  1 +
>  hw/display/qxl.c | 19 ++++++++++++-------
>  2 files changed, 13 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/display/qxl.h b/hw/display/qxl.h
> index dd9c0522b7..6f9d1f21fa 100644
> --- a/hw/display/qxl.h
> +++ b/hw/display/qxl.h
> @@ -34,6 +34,7 @@ typedef struct PCIQXLDevice {
>      PortioList         vga_port_list;
>      SimpleSpiceDisplay ssd;
>      int                id;
> +    bool               have_vga;
>      uint32_t           debug;
>      uint32_t           guestdebug;
>      uint32_t           cmdlog;
> diff --git a/hw/display/qxl.c b/hw/display/qxl.c
> index f608abc769..9087db5dee 100644
> --- a/hw/display/qxl.c
> +++ b/hw/display/qxl.c
> @@ -848,7 +848,7 @@ static int interface_get_cursor_command(QXLInstance *sin,
> struct QXLCommandExt *
>          qxl->guest_primary.commands++;
>          qxl_track_command(qxl, ext);
>          qxl_log_command(qxl, "csr", ext);
> -        if (qxl->id == 0) {
> +        if (qxl->have_vga) {
>              qxl_render_cursor(qxl, ext);
>          }
>          trace_qxl_ring_cursor_get(qxl->id, qxl_mode_to_string(qxl->mode));
> @@ -1255,7 +1255,7 @@ static void qxl_soft_reset(PCIQXLDevice *d)
>      d->current_async = QXL_UNDEFINED_IO;
>      qemu_mutex_unlock(&d->async_lock);
>  
> -    if (d->id == 0) {
> +    if (d->have_vga) {
>          qxl_enter_vga_mode(d);
>      } else {
>          d->mode = QXL_MODE_UNDEFINED;
> @@ -2139,7 +2139,7 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Error
> **errp)
>  
>      memory_region_init_io(&qxl->io_bar, OBJECT(qxl), &qxl_io_ops, qxl,
>                            "qxl-ioports", io_size);
> -    if (qxl->id == 0) {
> +    if (qxl->have_vga) {
>          vga_dirty_log_start(&qxl->vga);
>      }
>      memory_region_set_flush_coalesced(&qxl->io_bar);
> @@ -2171,7 +2171,7 @@ static void qxl_realize_common(PCIQXLDevice *qxl, Error
> **errp)
>  
>      /* print pci bar details */
>      dprint(qxl, 1, "ram/%s: %" PRId64 " MB [region 0]\n",
> -           qxl->id == 0 ? "pri" : "sec", qxl->vga.vram_size / MiB);
> +           qxl->have_vga ? "pri" : "sec", qxl->vga.vram_size / MiB);
>      dprint(qxl, 1, "vram/32: %" PRIx64 " MB [region 1]\n",
>             qxl->vram32_size / MiB);
>      dprint(qxl, 1, "vram/64: %" PRIx64 " MB %s\n",
> @@ -2199,7 +2199,6 @@ static void qxl_realize_primary(PCIDevice *dev, Error
> **errp)
>      VGACommonState *vga = &qxl->vga;
>      Error *local_err = NULL;
>  
> -    qxl->id = 0;
>      qxl_init_ramsize(qxl);
>      vga->vbe_size = qxl->vgamem_size;
>      vga->vram_size_mb = qxl->vga.vram_size / MiB;
> @@ -2210,8 +2209,15 @@ static void qxl_realize_primary(PCIDevice *dev, Error
> **errp)
>                       vga, "vga");
>      portio_list_set_flush_coalesced(&qxl->vga_port_list);
>      portio_list_add(&qxl->vga_port_list, pci_address_space_io(dev), 0x3b0);
> +    qxl->have_vga = true;
>  
>      vga->con = graphic_console_init(DEVICE(dev), 0, &qxl_ops, qxl);
> +    qxl->id = qemu_console_get_index(vga->con); /* == channel_id */
> +    if (qxl->id != 0) {
> +        error_setg(errp, "primary qxl-vga device must be console 0 "
> +                   "(first display device on the command line)");
> +        return;
> +    }

In the comment this seems no more required so why testing it?

>  
>      qxl_realize_common(qxl, &local_err);
>      if (local_err) {
> @@ -2226,15 +2232,14 @@ static void qxl_realize_primary(PCIDevice *dev, Error
> **errp)
>  
>  static void qxl_realize_secondary(PCIDevice *dev, Error **errp)
>  {
> -    static int device_id = 1;
>      PCIQXLDevice *qxl = PCI_QXL(dev);
>  
> -    qxl->id = device_id++;
>      qxl_init_ramsize(qxl);
>      memory_region_init_ram(&qxl->vga.vram, OBJECT(dev), "qxl.vgavram",
>                             qxl->vga.vram_size, &error_fatal);
>      qxl->vga.vram_ptr = memory_region_get_ram_ptr(&qxl->vga.vram);
>      qxl->vga.con = graphic_console_init(DEVICE(dev), 0, &qxl_ops, qxl);
> +    qxl->id = qemu_console_get_index(qxl->vga.con); /* == channel_id */
>  

As these IDs must be contiguous this means that there must be the requirement
that if there is a qxl interface only qxl interfaces are used and no other
console which seems to me wrong.

>      qxl_realize_common(qxl, errp);
>  }

Frediano

  reply	other threads:[~2018-11-02  9:10 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-29 12:47 [Qemu-devel] [PULL 0/2] Vga 20181029 patches Gerd Hoffmann
2018-10-29 12:47 ` [Qemu-devel] [PULL 1/2] qxl: store channel id in qxl->id Gerd Hoffmann
2018-11-02  9:10   ` Frediano Ziglio [this message]
2018-11-05  8:43     ` Gerd Hoffmann
2018-11-05  8:48       ` Frediano Ziglio
2018-11-05 10:10       ` Frediano Ziglio
2018-10-29 12:47 ` [Qemu-devel] [PULL 2/2] vga_int: remove unused function protype Gerd Hoffmann
2018-10-29 15:14 ` [Qemu-devel] [PULL 0/2] Vga 20181029 patches Peter Maydell

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=317924534.39835893.1541149813210.JavaMail.zimbra@redhat.com \
    --to=fziglio@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=spice-devel@lists.freedesktop.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.