Re: [REPOST PATCH] arm/arm64: KVM: Add PSCI version selection API

From: Marc Zyngier
Date: Tue Mar 06 2018 - 04:50:17 EST


On 05/03/18 20:37, Auger Eric wrote:
> Hi Peter,
>
> On 05/03/18 17:31, Peter Maydell wrote:
>> On 2 March 2018 at 12:26, Auger Eric <eric.auger@xxxxxxxxxx> wrote:
>>> Hi Marc,
>>> On 02/03/18 12:11, Marc Zyngier wrote:
>>>> On Fri, 02 Mar 2018 10:44:48 +0000,
>>>> Auger Eric wrote:
>>>>> I understand the get/set is called as part of the migration process.
>>>>> So my understanding is the benefit of this series is migration fails in
>>>>> those cases:
>>>>>
>>>>>> =0.2 source -> 0.1 destination
>>>>> 0.1 source -> >=0.2 destination
>>>>
>>>> It also fails in the case where you migrate a 1.0 guest to something
>>>> that cannot support it.
>>>
>>> That's because on the destination, the number of regs is less than on
>>> source, right?
>>
>> I think it fails because the KVM_REG_ARM_PSCI_VERSION register will be
>> in the migration state but not in the destination's list of registers:
>> the code in QEMU's target/arm/machine.c:cpu_post_load() function that
>> checks "register in their list but not ours: fail migration" will
>> catch this.
>
> Thank you for the pointer. Yes at the time I reviewed the patch and just
> focusing on the kernel code, this was not immediate to me.
>
>>
>> That also means that we will fail migration from a new kernel where
>> we've specifically asked for PSCI 0.2 to an old PSCI-0.2-only kernel
>> (because the KVM_REG_ARM_PSCI_VERSION reg will appear in the migration
>> stream even if its value is the one value that matches the old kernel
>> behaviour). I don't know if we care about that.
>
> Do you know when are we likely to force PSCI 0.2 on a new kernel? At
> which layer is the decision supposed to be made and on which criteria?

No decent SW should need this. But if you've written a guest that cannot
work if it doesn't get "2" as response to PSCI_VERSION, you can override it.

M.
--
Jazz is not dead. It just smells funny...