|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/3] x86/p2m-pt: pass level instead of page type to p2m_next_level()
>>> On 27.07.17 at 18:50, <George.Dunlap@xxxxxxxxxxxxx> wrote:
> On Wed, Jul 5, 2017 at 11:06 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>> This in turn calls for p2m_alloc_ptp() also being passed the numeric
>> level.
>>
>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>> ---
>> v2: New.
>> ---
>> Question is whether passing the level to p2m_alloc_ptp() is really all
>> that useful: p2m-ept.c's only use passes zero anyway, and p2m.c's
>> uniform passing of 4 doesn't necessarily match reality afaict.
>
> I agree that we should either fix it properly (so that it reflects
> reality), or make it always be the same value.
>
> Well the original reason for keeping track of the different paging
> levels in type_info was for PV pagetables, right? I can't off the top
> of my head think of a reason that it's important to keep track of the
> different levels for p2m tables.
>
> It probably *is* good to prevent such a page from winding up in a
> writeable entry of a PV guest; so maybe following p2m.c's lead and
> always setting it to PGT_l4_page_table?
Yeah, probably that's the safest we can do.
> Other than that...
>
>
>> new_entry = l1e_from_pfn(mfn_x(mfn), P2M_BASE_FLAGS | _PAGE_RW);
>>
>> - switch ( type ) {
>> - case PGT_l3_page_table:
>> - p2m_add_iommu_flags(&new_entry, 3,
>> IOMMUF_readable|IOMMUF_writable);
>> - p2m->write_p2m_entry(p2m, gfn, p2m_entry, new_entry, 4);
>> - break;
>> - case PGT_l2_page_table:
>> - p2m_add_iommu_flags(&new_entry, 2,
>> IOMMUF_readable|IOMMUF_writable);
>> - p2m->write_p2m_entry(p2m, gfn, p2m_entry, new_entry, 3);
>> - break;
>> - case PGT_l1_page_table:
>> - p2m_add_iommu_flags(&new_entry, 1,
>> IOMMUF_readable|IOMMUF_writable);
>> - p2m->write_p2m_entry(p2m, gfn, p2m_entry, new_entry, 2);
>> - break;
>> - default:
>> - BUG();
>> - break;
>> - }
>> + p2m_add_iommu_flags(&new_entry, level,
>> IOMMUF_readable|IOMMUF_writable);
>> + p2m->write_p2m_entry(p2m, gfn, p2m_entry, new_entry, level + 1);
>
> ...this looks *much better*, thanks!
>
> Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxxx>
Thanks!
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |