On 29.09.14 14:21, Paolo Bonzini wrote: > Il 29/09/2014 13:53, Alexander Graf ha scritto: >> >> cpu_handle_ioreq() >> { >> ... >> >> if (req->type == IOPORT_REGISTERS_SYNCHRONIZED) { >> cpu->xen_vcpu_dirty = true; >> synchronize_xen_to_env(xenptr, cpu); >> } >> >> handle_ioreq(); >> >> if (req->type == IOPORT_REGISTERS_SYNCHRONIZED) { >> cpu->xen_vcpu_dirty = false; >> synchronize_env_to_xen(xenptr, cpu); >> } >> >> ... >> } >> >> void xen_cpu_synchronize_state(CPUState *cpu) >> { >> assert(cpu->xen_vcpu_dirty); >> } >> >> Then no changes to the vmport code would be necessary and this problems >> where some code path wants to do direct access to registers >> automatically tells us that things are broken. > > Yeah, that would be possible. You do not even need synchronize_state, > it seems to me that it introduces more complication for little gain.
Well, it makes all accels behave the same and keep information always at a single entity (the env struct). I don't think the vmport code should have knowledge of a xen env struct. Alex