On 07/08/2019 13:07, Elnikety, Eslam wrote:
>> On 7. Aug 2019, at 13:40, Andrew Cooper <andrew.coop...@citrix.com> wrote:
>>
>> On 07/08/2019 12:20, Eslam Elnikety wrote:
>>> Adding support for FIFO event channel ABI was first introduced in Xen 4.4
>>> (see 88910061ec6). Make this support tunable, since the choice of which
>>> event channel ABI has implications for hibernation. Consider resuming a
>>> pre Xen 4.4 hibernated Linux guest. The guest boot kernel defaults to FIFO
>>> ABI, whereas the resume kernel assumes 2L. This, in turn, results in Xen
>>> and the resumed kernel talking past each other (due to different protocols
>>> FIFO vs 2L).
>> I'm afraid I don't follow.
>>
>> We have a Linux kernel which knows about FIFO, which was first booted on
>> Xen < 4.4, so configured 2L mode.
>>
>> It is then suspended, and resumed on a newer Xen >= 4.4.  The guest now
>> has a choice between 2L mode, and FIFO mode.
>>
>> What is the problem?
>>
>> When resuming, the guest in question should continue to use 2L mode,
>> because that is what it was using previously.
>>
>> ~Andrew
>
> After resuming (i.e., Linux's software_resume), the guest will indeed 
> continue to use 2L. However, Xen has already done evtchn_fifo_init_control as 
> part of the boot kernel init (before the guest's software_resume). Then, we 
> reach the point where guest assumes 2L and Xen assumes FIFO.

With Davids explanation, I now understand the problem.  However for
clarity, it is probably worth making a correction here.

It isn't Xen which does evtchn_fifo_init_control().  It is the "boot"
kernel issuing EVTCHNOP_init_control hypercall which switches the domain
from 2L mode into FIFO mode.

Xen is doing exactly as it was instructed.  The underlying bug is a
mismatch in behaviour between the "boot" kernel and the on-disk
kernel/state.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to