From: Frediano Ziglio <fziglio@redhat.com>
To: kraxel@redhat.com, spice-devel@lists.freedesktop.org,
berrange@redhat.com
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v3] qxl: allow to specify head limit to qxl driver
Date: Mon, 13 Jul 2015 07:32:50 -0400 (EDT) [thread overview]
Message-ID: <719636739.29546882.1436787170682.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <1436165798-635-1-git-send-email-fziglio@redhat.com>
Ping
----- Original Message -----
> From: "Frediano Ziglio" <fziglio@redhat.com>
> To: kraxel@redhat.com, spice-devel@lists.freedesktop.org, berrange@redhat.com
> Cc: qemu-devel@nongnu.org, "Frediano Ziglio" <fziglio@redhat.com>
> Sent: Monday, July 6, 2015 7:56:38 AM
> Subject: [Qemu-devel] [PATCH v3] qxl: allow to specify head limit to qxl driver
>
> This patch allow to limit number of heads using qxl driver. By default
> qxl driver is not limited on any kind on head use so can decide to use
> as much heads.
>
> libvirt has this as a video card parameter (actually set to 1 but not
> used). This parameter will allow to limit setting a use can do (which
> could be confusing).
>
> This patch rely on some change in spice-protocol which are not still
> accepted. See
> http://lists.freedesktop.org/archives/spice-devel/2015-June/020221.html.
>
> Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
> ---
> hw/display/qxl.c | 26 +++++++++++++++++++++-----
> hw/display/qxl.h | 3 +++
> 2 files changed, 24 insertions(+), 5 deletions(-)
>
> Changes from v2:
> - removed the RPC after spice-server upstream
> - rebased
>
> diff --git a/hw/display/qxl.c b/hw/display/qxl.c
> index f87a5ee..4e5ff69 100644
> --- a/hw/display/qxl.c
> +++ b/hw/display/qxl.c
> @@ -271,6 +271,12 @@ static void qxl_spice_monitors_config_async(PCIQXLDevice
> *qxl, int replay)
> QXL_COOKIE_TYPE_POST_LOAD_MONITORS_CONFIG,
> 0));
> } else {
> +#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
> + if (qxl->max_outputs) {
> + spice_qxl_set_monitors_config_limit(&qxl->ssd.qxl,
> + qxl->max_outputs);
> + }
> +#endif
> qxl->guest_monitors_config = qxl->ram->monitors_config;
> spice_qxl_monitors_config_async(&qxl->ssd.qxl,
> qxl->ram->monitors_config,
> @@ -991,6 +997,7 @@ static int interface_client_monitors_config(QXLInstance
> *sin,
> PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
> QXLRom *rom = memory_region_get_ram_ptr(&qxl->rom_bar);
> int i;
> + unsigned max_outputs = ARRAY_SIZE(rom->client_monitors_config.heads);
>
> if (qxl->revision < 4) {
> trace_qxl_client_monitors_config_unsupported_by_device(qxl->id,
> @@ -1013,17 +1020,23 @@ static int
> interface_client_monitors_config(QXLInstance *sin,
> if (!monitors_config) {
> return 1;
> }
> +
> +#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
> + /* limit number of outputs based on setting limit */
> + if (qxl->max_outputs && qxl->max_outputs <= max_outputs) {
> + max_outputs = qxl->max_outputs;
> + }
> +#endif
> +
> memset(&rom->client_monitors_config, 0,
> sizeof(rom->client_monitors_config));
> rom->client_monitors_config.count = monitors_config->num_of_monitors;
> /* monitors_config->flags ignored */
> - if (rom->client_monitors_config.count >=
> - ARRAY_SIZE(rom->client_monitors_config.heads)) {
> + if (rom->client_monitors_config.count >= max_outputs) {
> trace_qxl_client_monitors_config_capped(qxl->id,
> monitors_config->num_of_monitors,
> -
> ARRAY_SIZE(rom->client_monitors_config.heads));
> - rom->client_monitors_config.count =
> - ARRAY_SIZE(rom->client_monitors_config.heads);
> + max_outputs);
> + rom->client_monitors_config.count = max_outputs;
> }
> for (i = 0 ; i < rom->client_monitors_config.count ; ++i) {
> VDAgentMonConfig *monitor = &monitors_config->monitors[i];
> @@ -2274,6 +2287,9 @@ static Property qxl_properties[] = {
> DEFINE_PROP_UINT32("vram64_size_mb", PCIQXLDevice, vram_size_mb,
> -1),
> DEFINE_PROP_UINT32("vgamem_mb", PCIQXLDevice, vgamem_size_mb, 16),
> DEFINE_PROP_INT32("surfaces", PCIQXLDevice, ssd.num_surfaces, 1024),
> +#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
> + DEFINE_PROP_UINT16("max_outputs", PCIQXLDevice, max_outputs, 0),
> +#endif
> DEFINE_PROP_END_OF_LIST(),
> };
>
> diff --git a/hw/display/qxl.h b/hw/display/qxl.h
> index deddd54..2ddf065 100644
> --- a/hw/display/qxl.h
> +++ b/hw/display/qxl.h
> @@ -99,6 +99,9 @@ typedef struct PCIQXLDevice {
> QXLModes *modes;
> uint32_t rom_size;
> MemoryRegion rom_bar;
> +#if SPICE_SERVER_VERSION >= 0x000c06 /* release 0.12.6 */
> + uint16_t max_outputs;
> +#endif
>
> /* vram pci bar */
> uint32_t vram_size;
> --
> 2.1.0
>
>
>
next prev parent reply other threads:[~2015-07-13 11:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-06 6:56 [Qemu-devel] [PATCH v3] qxl: allow to specify head limit to qxl driver Frediano Ziglio
2015-07-13 11:32 ` Frediano Ziglio [this message]
2015-07-14 13:41 ` Gerd Hoffmann
2015-07-14 14:13 ` Frediano Ziglio
2015-07-19 15:01 ` [Qemu-devel] [Spice-devel] " Pavel Grunt
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=719636739.29546882.1436787170682.JavaMail.zimbra@redhat.com \
--to=fziglio@redhat.com \
--cc=berrange@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).