|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/altp2m: propagate ept.ad changes to all active altp2ms
On 9/28/18 6:55 PM, Jan Beulich wrote:
>>>> On 28.09.18 at 17:25, <rcojocaru@xxxxxxxxxxxxxxx> wrote:
>> On 9/28/18 5:52 PM, Jan Beulich wrote:
>>>>>> On 28.09.18 at 13:55, <rcojocaru@xxxxxxxxxxxxxxx> wrote:
>>>> @@ -1218,34 +1219,67 @@ static void ept_tlb_flush(struct p2m_domain *p2m)
>>>> ept_sync_domain_mask(p2m, p2m->domain->dirty_cpumask);
>>>> }
>>>>
>>>> +static void ept_set_ad_sync(struct p2m_domain *p2m, int value)
>>>> +{
>>>> + struct domain *d = p2m->domain;
>>>> + unsigned int i;
>>>> +
>>>> + if ( likely(!altp2m_active(d)) )
>>>> + {
>>>> + p2m_lock(p2m);
>>>> + p2m->ept.ad = value;
>>>> + p2m_unlock(p2m);
>>>> +
>>>> + return;
>>>> + }
>>>
>>> Why would you want to skip updating the host p2m's flag when
>>> altp2m is active?
>>
>> It's not really skipped if I understand the altp2m code correctly: in
>> that case the hostp2m is d->arch.altp2m_p2m[0], which is take care of in
>> the loop below the code you've quoted.
>
> p2m_init_altp2m() (and other code in p2m.c) suggests otherwise to me.
That's interesting, p2m_set_mem_access() is treating altp2m index 0 as
the hostp2m:
360 /*
361 * Set access type for a region of gfns.
362 * If gfn == INVALID_GFN, sets the default access type.
363 */
364 long p2m_set_mem_access(struct domain *d, gfn_t gfn, uint32_t nr,
365 uint32_t start, uint32_t mask,
xenmem_access_t access,
366 unsigned int altp2m_idx)
367 {
368 struct p2m_domain *p2m = p2m_get_hostp2m(d), *ap2m = NULL;
369 p2m_access_t a;
370 unsigned long gfn_l;
371 long rc = 0;
372
373 /* altp2m view 0 is treated as the hostp2m */
374 #ifdef CONFIG_HVM
375 if ( altp2m_idx )
376 {
377 if ( altp2m_idx >= MAX_ALTP2M ||
378 d->arch.altp2m_eptp[altp2m_idx] == mfn_x(INVALID_MFN) )
379 return -EINVAL;
380
381 ap2m = d->arch.altp2m_p2m[altp2m_idx];
382 }
383 #else
384 ASSERT(!altp2m_idx);
385 #endif
which would seem to imply that either we should be able to treat
d->arch.altp2m_p2m[0] and hostp2m interchangeably, or we are currently
wasting an altp2m array slot.
Thanks,
Razvan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |