[Spice-devel] bad primary surface and server crash after migration

Gerd Hoffmann kraxel at redhat.com
Mon Jul 4 02:23:28 PDT 2011


On 07/04/11 10:51, Yonit Halperin wrote:
> Hi Gerd,
> I encountered several problems after migration, maybe you can help:
>
> 1) on qxl_pre_load, sometimes the command ring is not empty and when
> handle_dev_destroy_surface (on hard reset), flush_all_qxl_commands is
> called. When attempting to process a command we receive
>
> id 0, group 0, virt start 0, virt end ffffffffffffffff, generation 0,
> delta 0
> validate_virt: panic: virtual address out of range
> virt=0x175f99c+0xbf slot_id=1 group_id=1
> slot=0x0-0x0 delta=0x0
>
> Is it valid that the command ring is not empty? Maybe we shouldn't
> process commands as long as worker->running is not set?

Yes, that should fix it, otherwise you'll try to process commands before 
qxl fully restored the state (especially memory slots and surfaces) 
which will not work.

> 2) immediately after migration, before processing any commands, it looks
> like the primary surface on the destination is not the most updated one
> (or alternatively was badly rendered). When I connect to the source
> server (the stopped one), the primary surface looks o.k (this made me
> think it is not a rendering problem).
> Maybe there is a problem with setting all the ram dirty? I also checked
> that the stopped server doesn't preform any processing commands after it
> has been stopped, and that the destination doesn't preform any commands
> before loadvm (when it doesn't crash on the previos problem I described).

Could be.  qxl_vm_change_state_handler() takes care to tag all vram 
dirty, the primary lives in devram though ...

cheers,
   Gerd



More information about the Spice-devel mailing list