[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [PATCH V1 14/16] xen/ioreq: Use guest_cmpxchg64() instead of cmpxchg()



> -----Original Message-----
> From: Julien Grall <julien@xxxxxxx>
> Sent: 16 September 2020 10:07
> To: Jan Beulich <jbeulich@xxxxxxxx>; Oleksandr Tyshchenko 
> <olekstysh@xxxxxxxxx>
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx; Oleksandr Tyshchenko 
> <oleksandr_tyshchenko@xxxxxxxx>; Paul Durrant
> <paul@xxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>; Julien Grall 
> <jgrall@xxxxxxxxxx>
> Subject: Re: [PATCH V1 14/16] xen/ioreq: Use guest_cmpxchg64() instead of 
> cmpxchg()
> 
> 
> 
> On 16/09/2020 10:04, Jan Beulich wrote:
> > 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.
> 
> It is unfortunately shared with both s->emulator and d when using the
> legacy interface.

When using magic pages they should be punched out of the P2M by the time the 
code gets here, so the memory should not be guest-visible.

  Paul

> 
> For Arm, there is no plan to support the legacy interface, so we should
> s->emulator and we should be fully protected.
> 
> Cheers,
> 
> --
> Julien Grall




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.