|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] ioreq server regression
On 12/12/2016 11:36 AM, Andrew Cooper wrote:
> On 12/12/16 16:01, Boris Ostrovsky wrote:
>> Looks like commit e7dabe59c ("x86/hvm: don't unconditionally create a
>> default ioreq server") breaks restore for HVM guests.
>>
>> I see "qemu: hardware error: Invalid ioreq type 0x53" in qemu log.
>>
>> -boris
>>
> Does this help? The current creation_finished logic is wrong if a 2nd
> toolstack component performs a pause/unpause pair on the domain.
Yes, this seems to work.
-boris
>
> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index 3abaca9..6043f89 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -1004,13 +1004,6 @@ int domain_unpause_by_systemcontroller(struct
> domain *d)
> {
> int old, new, prev = d->controller_pause_count;
>
> - /*
> - * We record this information here for populate_physmap to figure out
> - * that the domain has finished being created. In fact, we're only
> - * allowed to set the MEMF_no_tlbflush flag during VM creation.
> - */
> - d->creation_finished = true;
> -
> do
> {
> old = prev;
> @@ -1022,6 +1015,14 @@ int domain_unpause_by_systemcontroller(struct
> domain *d)
> prev = cmpxchg(&d->controller_pause_count, old, new);
> } while ( prev != old );
>
> + /*
> + * We record this information here for populate_physmap to figure out
> + * that the domain has finished being created. In fact, we're only
> + * allowed to set the MEMF_no_tlbflush flag during VM creation.
> + */
> + if ( prev == 0 )
> + d->creation_finished = true;
> +
> domain_unpause(d);
>
> return 0;
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |