On 10.09.2020 22:22, Oleksandr Tyshchenko wrote: > @@ -1325,7 +1327,7 @@ static int hvm_send_buffered_ioreq(struct > hvm_ioreq_server *s, ioreq_t *p) > > new.read_pointer = old.read_pointer - n * IOREQ_BUFFER_SLOT_NUM; > new.write_pointer = old.write_pointer - n * IOREQ_BUFFER_SLOT_NUM; > - cmpxchg(&pg->ptrs.full, old.full, new.full); > + guest_cmpxchg64(d, &pg->ptrs.full, old.full, new.full);
But the memory we're updating is shared with s->emulator, not with d, if I'm not mistaken. Jan