El 08/05/15 a les 10.40, Jan Beulich ha escrit:
On 08.05.15 at 10:28, wrote:
>> El 07/05/15 a les 17.48, Jan Beulich ha escrit:
>> On 07.05.15 at 16:29, wrote:
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -408,6 +408,51 @@ int paging_mfn_is_dirty(struct
>>> On 08.05.15 at 10:28, wrote:
> El 07/05/15 a les 17.48, Jan Beulich ha escrit:
> On 07.05.15 at 16:29, wrote:
>>> --- a/xen/arch/x86/mm/paging.c
>>> +++ b/xen/arch/x86/mm/paging.c
>>> @@ -408,6 +408,51 @@ int paging_mfn_is_dirty(struct domain *d, mfn_t gmfn)
>>> return rv;
>>> }
>>>
El 07/05/15 a les 17.48, Jan Beulich ha escrit:
On 07.05.15 at 16:29, wrote:
>> --- a/xen/arch/x86/mm/paging.c
>> +++ b/xen/arch/x86/mm/paging.c
>> @@ -408,6 +408,51 @@ int paging_mfn_is_dirty(struct domain *d, mfn_t gmfn)
>> return rv;
>> }
>>
>> +static inline void *map_dirty_bitmap
>>> On 07.05.15 at 16:29, wrote:
> --- a/xen/arch/x86/mm/paging.c
> +++ b/xen/arch/x86/mm/paging.c
> @@ -408,6 +408,51 @@ int paging_mfn_is_dirty(struct domain *d, mfn_t gmfn)
> return rv;
> }
>
> +static inline void *map_dirty_bitmap(XEN_GUEST_HANDLE_64(uint8) dirty_bitmap,
> +
When the caller of paging_log_dirty_op is a hvm guest Xen would choke when
trying to copy the dirty bitmap to the guest because the paging lock is
already held.
Fix this by independently mapping each page of the guest bitmap as needed
without the paging lock held.
Signed-off-by: Roger Pau Monné