On 06/03/18 08:58, Jan Beulich wrote:
>>>> On 06.03.18 at 08:01, <jgr...@suse.com> wrote:
>> On 05/03/18 17:43, Jan Beulich wrote:
>>>>>> On 02.03.18 at 09:13, <jgr...@suse.com> wrote:
>>>> --- a/xen/arch/x86/mm.c
>>>> +++ b/xen/arch/x86/mm.c
>>>> @@ -509,6 +509,8 @@ void make_cr3(struct vcpu *v, mfn_t mfn)
>>>> void write_ptbase(struct vcpu *v)
>>>> + get_cpu_info()->root_pgt_changed = this_cpu(root_pgt) &&
>>>> is_pv_vcpu(v) &&
>>>> + !is_pv_32bit_vcpu(v);
>>> Why is_pv_vcpu() when you already check is_pv_32bit_vcpu()?
>> I check !is_pv_32bit_vcpu() to catch 64-bit pv-domains only.
> Oh, I'm sorry - For whatever reason I've ignored the ! there.
>>> And don't you need to disallow updating L4s of running guests now
>>> (which is a bad idea anyway)?
>> Yes, I should do that.
> But please do this as a separate change, as strictly speaking this is
> a behavioral change that we can't allow. But I think we simply need
> to accept this (and perhaps uniformly for all page table levels).
Hmm, thinking more about it: wouldn't it be enough to do the change and
then sending a FLUSH_ROOT_PGTBL to the vcpu(s) the affected guest is
running on? This would cause a cycle through the hypervisor resulting in
an updated root page table of that guest.
Xen-devel mailing list