diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2013-01-23 09:07:29 -0600 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2013-01-23 09:07:29 -0600 |
commit | a29a6b73c4f17db6f82fd8d2094e824c04b29fee (patch) | |
tree | ef3145810cdd8d9cbd6c8cde667105e2431e38d8 /hw | |
parent | 1356b98d3e95a85071e6bf9a99e8799e1ae1bbee (diff) | |
parent | 038c1879a00153b14bce113315b693e8c2944fa9 (diff) | |
download | qemu-a29a6b73c4f17db6f82fd8d2094e824c04b29fee.zip qemu-a29a6b73c4f17db6f82fd8d2094e824c04b29fee.tar.gz qemu-a29a6b73c4f17db6f82fd8d2094e824c04b29fee.tar.bz2 |
Merge remote-tracking branch 'spice/spice.v68' into staging
# By Alon Levy
# Via Gerd Hoffmann
* spice/spice.v68:
qxl: change rom size to 8192
qxl: stop using non revision 4 rom fields for revision < 4
Diffstat (limited to 'hw')
-rw-r--r-- | hw/qxl.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -80,9 +80,7 @@ #define QXL_MODE_EX(x_res, y_res) \ QXL_MODE_16_32(x_res, y_res, 0), \ - QXL_MODE_16_32(y_res, x_res, 1), \ - QXL_MODE_16_32(x_res, y_res, 2), \ - QXL_MODE_16_32(y_res, x_res, 3) + QXL_MODE_16_32(x_res, y_res, 1) static QXLMode qxl_modes[] = { QXL_MODE_EX(640, 480), @@ -306,10 +304,13 @@ static inline uint32_t msb_mask(uint32_t val) static ram_addr_t qxl_rom_size(void) { - uint32_t rom_size = sizeof(QXLRom) + sizeof(QXLModes) + sizeof(qxl_modes); + uint32_t required_rom_size = sizeof(QXLRom) + sizeof(QXLModes) + + sizeof(qxl_modes); + uint32_t rom_size = 8192; /* two pages */ - rom_size = MAX(rom_size, TARGET_PAGE_SIZE); - rom_size = msb_mask(rom_size * 2 - 1); + required_rom_size = MAX(required_rom_size, TARGET_PAGE_SIZE); + required_rom_size = msb_mask(required_rom_size * 2 - 1); + assert(required_rom_size <= rom_size); return rom_size; } @@ -945,6 +946,12 @@ static void interface_set_client_capabilities(QXLInstance *sin, { PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl); + if (qxl->revision < 4) { + trace_qxl_set_client_capabilities_unsupported_by_revision(qxl->id, + qxl->revision); + return; + } + if (runstate_check(RUN_STATE_INMIGRATE) || runstate_check(RUN_STATE_POSTMIGRATE)) { return; @@ -979,6 +986,11 @@ static int interface_client_monitors_config(QXLInstance *sin, QXLRom *rom = memory_region_get_ram_ptr(&qxl->rom_bar); int i; + if (qxl->revision < 4) { + trace_qxl_client_monitors_config_unsupported_by_device(qxl->id, + qxl->revision); + return 0; + } /* * Older windows drivers set int_mask to 0 when their ISR is called, * then later set it to ~0. So it doesn't relate to the actual interrupts |