Hi,
On 09/11/2012 04:35 PM, Alon Levy wrote:
So far we have used the agent to notify the guest of a request to change
the monitors configurations (heads) on the qxl device. This patch introduces
a new interrupt and new fields in the qxl rom to notify the guest about
a new request, similarly to how physical hardware notifies the driver.
To avoid overwriting the rom while the guest is reading it there is a
client_monitors_config_updating field in ROM. The update protocol is:
qemu:
(1) set QXLRom::client_monitors_config_updating
(2) fill QXLRom::client_monitors_config
(3) raise QXL_INTERRUPT_CLIENT_MONITORS_CONFIG
(4) clear QXLRom::client_monitors_config_updating
guest:
(1) clear QXL_INTERRUPT_CLIENT_MONITORS_CONFIG bit in irq status
(2) wait until QXLRom::client_monitors_config_updating is clear
(3) parse QXLRom::client_monitors_config
(4) check that QXLRom::client_monitors_Config_updating is clear
(a) when set, goto (1)
(5) check QXL_INTERRUPT_CLIENT_MONITORS_CONFIG bit in irq status
(a) when set, goto (1)
(b) when clear we are done
This seems very complicated how about:
qemu:
(1) fill QXLRom::client_monitors_config, including a crc32 of the data
(2) raise QXL_INTERRUPT_CLIENT_MONITORS_CONFIG
guest on interrupt:
(1) clear QXL_INTERRUPT_CLIENT_MONITORS_CONFIG bit in irq status
(2) read QXLRom::client_monitors_config
(3) (verify-crc)? done : goto 2
That seems more straight-forward to me.
Regards,
Hans
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel