Hi Steven,

On 2020/7/27 18:48, Steven Price wrote:
> On 21/07/2020 04:26, zhukeqian wrote:
>> Hi Steven,
> 
> Hi Keqian,
> 
>> On 2019/8/2 22:50, Steven Price wrote:
>>> This series add support for paravirtualized time for arm64 guests and
>>> KVM hosts following the specification in Arm's document DEN 0057A:
>>>
>>> https://developer.arm.com/docs/den0057/a
>>>
>>> It implements support for stolen time, allowing the guest to
>>> identify time when it is forcibly not executing.
>>>
>>> It doesn't implement support for Live Physical Time (LPT) as there are
>>> some concerns about the overheads and approach in the above
>> Do you plan to pick up LPT support? As there is demand of cross-frequency 
>> migration
>> (from older platform to newer platform).
> 
> I don't have any plans to pick up the LPT support at the moment - feel free 
> to pick it up! ;)
> 
>> I am not clear about the overheads and approach problem here, could you 
>> please
>> give some detail information? Maybe we can work together to solve these 
>> concerns. :-)
> 
> Fundamentally the issue here is that LPT only solves one small part of 
> migration between different hosts. To successfully migrate between hosts with 
> different CPU implementations it is also necessary to be able to virtualise 
> various ID registers (e.g. MIDR_EL1, REVIDR_EL1, AIDR_EL1) which we have no 
> support for currently.
> 
Yeah, currently we are trying to do both timer freq virtualization and CPU 
feature virtualization.

> The problem with just virtualising the registers is how you handle errata. 
> The guest will currently use those (and other) ID registers to decide whether 
> to enable specific errata workarounds. But what errata should be enabled for 
> a guest which might migrate to another host?
> 
Thanks for pointing this out.

I think the most important thing is that we should introduce a concept named 
CPU baseline which represents a standard platform.
If we bring up a guest with a specific CPU baseline, then this guest can only 
run on a platform that is compatible with this CPU baseline.
So "baseline" and "compatible" are the key point to promise successful 
cross-platform migration.


> What we ideally need is a mechanism to communicate to the guest what 
> workarounds are required to successfully run on any of the hosts that the 
> guest may be migrated to. You may also have the situation where the 
> workarounds required for two hosts are mutually incompatible - something 
> needs to understand this and do the "right thing" (most likely just reject 
> this situation, i.e. prevent the migration).
> 
> There are various options here: e.g. a para-virtualised interface to describe 
> the workarounds (but this is hard to do in an OS-agnostic way), or virtual-ID 
> registers describing an idealised environment where no workarounds are 
> required (and only hosts that have no errata affecting a guest would be able 
> to provide this).
> 
My idea is similar with the "idealised environment", but errata workaround 
still exists.
We do not provide para-virtualised interface, and migration is restricted 
between platforms that are compatible with baseline.

Baseline should has two aspects: CPU feature and errata. These platforms that 
are compatible with a specific baseline should have the corresponding CPU 
feature and errata.

> Given the above complexity and the fact that Armv8.6-A standardises the 
> frequency to 1GHz this didn't seem worth continuing with. So LPT was dropped 
> from the spec and patches to avoid holding up the stolen time support.
> 
> However, if you have a use case which doesn't require such a generic 
> migration (e.g. perhaps old and new platforms are based on the same IP) then 
> it might be worth looking at bring this back. But to make the problem 
> solvable it either needs to be restricted to platforms which are 
> substantially the same (so the errata list will be identical), or there's 
> work to be done in preparation to deal with migrating a guest successfully 
> between hosts with potentially different errata requirements.
> 
> Can you share more details about the hosts that you are interested in 
> migrating between?
Here we have new platform with 1GHz timer, and old platform is 100MHZ, so we 
want to solve the cross-platform migration firstly.

Thanks,
Keqian
> 
> Thanks,
> 
> Steve
> .
> 

Reply via email to