|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 2/4] xen/shadow: fix shadow_track_dirty_vram to work on hvm guests
El 08/05/15 a les 17.34, Andrew Cooper ha escrit:
> On 08/05/15 16:28, Jan Beulich wrote:
>>>>> On 08.05.15 at 16:34, <roger.pau@xxxxxxxxxx> wrote:
>>> @@ -3668,21 +3671,19 @@ int shadow_track_dirty_vram(struct domain *d,
>>> if ( map_sl1p )
>>> sh_unmap_domain_page(map_sl1p);
>>>
>>> - rc = -EFAULT;
>>> - if ( copy_to_guest(dirty_bitmap, dirty_vram->dirty_bitmap,
>>> dirty_size) == 0 ) {
>>> - memset(dirty_vram->dirty_bitmap, 0, dirty_size);
>>> - if (dirty_vram->last_dirty + SECONDS(2) < NOW())
>>> + memcpy(dirty_bitmap, dirty_vram->dirty_bitmap, dirty_size);
>>> + memset(dirty_vram->dirty_bitmap, 0, dirty_size);
>> This is certainly a behavioral change; I'm only uncertain whether it's
>> acceptable. Previously the memset() was done only when the copying
>> to guest memory succeeded, while now it happens unconditionally.
>
> On the one hand, if the toolstack logdirty buffer suffers an EFAULT,
> most bets are probably off.
>
> However, it would better if Xen didn't then clobber the dirty bitmap, in
> case the toolstack's kernel is doing some particularly funky memory
> management which would succeed on a retry.
A possible workaround to this would be to do acquire the paging_lock
again if copy_to_guest fails and set the dirty_bitmap to 0xff, although
it's not very elegant. Or do an OR of dirty_bitmap and
dirty_vram->dirty_bitmap.
Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |