[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()





On 16/09/2020 10:09, Paul Durrant wrote:
-----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.

Can you point me to the code that doing this?

Cheers,

--
Julien Grall



 


Rackspace

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