[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] qxl: Add set_client_capabilities() interface to
From: |
Alon Levy |
Subject: |
Re: [Qemu-devel] [PATCH] qxl: Add set_client_capabilities() interface to QXLInterface |
Date: |
Mon, 3 Sep 2012 14:21:27 -0400 (EDT) |
> From: Søren Sandmann Pedersen <address@hidden>
>
> This new interface lets spice server inform the guest whether
>
> (a) a client is connected
> (b) what capabilities the client has
>
> There is a fixed number (464) of bits reserved for capabilities, and
> when the capabilities bits change, the QXL_INTERRUPT_CLIENT interrupt
> is generated.
>
> Signed-off-by: Soren Sandmann <address@hidden>
> ---
> hw/qxl.c | 27 +++++++++++++++++++++++++++
> hw/qxl.h | 2 +-
> 2 files changed, 28 insertions(+), 1 deletions(-)
>
> diff --git a/hw/qxl.c b/hw/qxl.c
> index c2dd3b4..ffe1a76 100644
> --- a/hw/qxl.c
> +++ b/hw/qxl.c
> @@ -901,6 +901,26 @@ static void interface_async_complete(QXLInstance
> *sin, uint64_t cookie_token)
> }
> }
>
> +#if SPICE_SERVER_VERSION >= 0x000b04
> +
> +/* called from spice server thread context only */
> +static void interface_set_client_capabilities(QXLInstance *sin,
> + uint8_t client_present,
> + uint8_t caps[58])
> +{
> + PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
> +
> + qxl->shadow_rom.client_present = client_present;
> + memcpy(qxl->shadow_rom.client_capabilities, caps, sizeof(caps));
> + qxl->rom->client_present = client_present;
> + memcpy(qxl->rom->client_capabilities, caps, sizeof(caps));
> + qxl_rom_set_dirty(qxl);
> +
> + qxl_send_events(qxl, QXL_INTERRUPT_CLIENT);
> +}
> +
> +#endif
> +
> static const QXLInterface qxl_interface = {
> .base.type = SPICE_INTERFACE_QXL,
> .base.description = "qxl gpu",
> @@ -922,6 +942,9 @@ static const QXLInterface qxl_interface = {
> .flush_resources = interface_flush_resources,
> .async_complete = interface_async_complete,
> .update_area_complete = interface_update_area_complete,
> +#if SPICE_SERVER_VERSION >= 0x000b04
> + .set_client_capabilities = interface_set_client_capabilities,
> +#endif
> };
>
> static void qxl_enter_vga_mode(PCIQXLDevice *d)
> @@ -1785,6 +1808,10 @@ static int qxl_init_common(PCIQXLDevice *qxl)
> io_size = 16;
> break;
> case 3: /* qxl-3 */
> + pci_device_rev = QXL_REVISION_STABLE_V10;
> + io_size = msb_mask(QXL_IO_RANGE_SIZE * 2 - 1);
> + break;
> + case 4:
> default:
> pci_device_rev = QXL_DEFAULT_REVISION;
> io_size = msb_mask(QXL_IO_RANGE_SIZE * 2 - 1);
> diff --git a/hw/qxl.h b/hw/qxl.h
> index 172baf6..98d5a64 100644
> --- a/hw/qxl.h
> +++ b/hw/qxl.h
> @@ -128,7 +128,7 @@ typedef struct PCIQXLDevice {
> }
> \
> } while (0)
>
> -#define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V10
> +#define QXL_DEFAULT_REVISION QXL_REVISION_STABLE_V12
QXL_REVISION_STABLE_V12 is only defined in latest spice-protocol, too new for
the qemu required version.
Gerd, maybe it's a good idea to require spice-protocol 0.12.1, now that it's
released? this will remove a lot of cruft.
>
> /* qxl.c */
> void *qxl_phys2virt(PCIQXLDevice *qxl, QXLPHYSICAL phys, int
> group_id);
> --
> 1.7.4
>
>
>
- [Qemu-devel] [PATCH 1/5] client: Advertise A8_SURFACE capability, (continued)
- [Qemu-devel] [PATCH 1/5] client: Advertise A8_SURFACE capability, Søren Sandmann, 2012/09/03
- [Qemu-devel] [PATCH 2/5] Add new set_client_capabilities() interface to QXLInstance, Søren Sandmann, 2012/09/03
- [Qemu-devel] [PATCH 5/5] Bump spice.h version number to 0.11.4, Søren Sandmann, 2012/09/03
- [Qemu-devel] [PATCH 3/5] Process outstanding commands in the ring after changing capability bits, Søren Sandmann, 2012/09/03
- Re: [Qemu-devel] [Spice-devel] [PATCH 3/5] Process outstanding commands in the ring after changing capability bits, Alon Levy, 2012/09/03
- [Qemu-devel] [PATCH 4/5] Set a8 capability in the QXL device if supported by the client, Søren Sandmann, 2012/09/03
[Qemu-devel] [PATCH-v2 spice 2/2] Bump spice.h version number to 0.11.4, Søren Sandmann Pedersen, 2012/09/03
[Qemu-devel] [PATCH-v2 qemu] qxl: Add set_client_capabilities() interface to QXLInterface, Søren Sandmann Pedersen, 2012/09/03
Re: [Qemu-devel] [PATCH-v2 qemu] qxl: Add set_client_capabilities() interface to QXLInterface, Gerd Hoffmann, 2012/09/04
[Qemu-devel] [PATCH-v2 spice-protocol 2/2] Add new client_present and client capabilities fields to QXLRom, Søren Sandmann Pedersen, 2012/09/03