[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86/p2m: Stop other vcpus using a nested p2m before clearing it



On 08/02/17 13:13, Jan Beulich wrote:
>>>> On 07.02.17 at 19:48, <andrew.cooper3@xxxxxxxxxx> wrote:
>> Until the IPI has completed, other processors might be running on this nested
>> p2m object.  clear_domain_page() does not guarantee to make 8-byte atomic
>> updates, which means that a pagewalk on a remote processor might encounter a
>> partial update.
>>
>> This is currently safe as other issues prevents a nested p2m ever being 
>> shared
>> between two cpus (although this is contrary to the original plan).
>>
>> Setting p2m->np2m_base to P2M_BASE_EADDR before the IPI ensures that the 
>> IPI'd
>> processors won't continue to use the flushed mappings.
>>
>> While modifying this function, remove all the trailing whitespace and tweak
>> style in the affected areas.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
> but ...
>
>> @@ -1633,19 +1635,21 @@ p2m_flush_table(struct p2m_domain *p2m)
>>  
>>      /* This is no longer a valid nested p2m for any address space */
>>      p2m->np2m_base = P2M_BASE_EADDR;
>> -    
>> -    /* Zap the top level of the trie */
>> -    mfn = pagetable_get_mfn(p2m_get_pagetable(p2m));
>> -    clear_domain_page(mfn);
>>  
>>      /* Make sure nobody else is using this p2m table */
>>      nestedhvm_vmcx_flushtlb(p2m);
>>  
>> +    /* Zap the top level of the trie */
> s/trie/tree/ here, as you touch it anyway?

Trie here refers to the datastructure https://en.wikipedia.org/wiki/Trie
which is the structure implemented by processor pagetables.  It is more
specific than just calling them trees.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.