|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v9 10/13] x86/smpboot: switch clone_mapping() to new APIs
On 06.04.2021 13:05, Hongyan Xia wrote:
> @@ -742,51 +742,58 @@ static int clone_mapping(const void *ptr,
> root_pgentry_t *rpt)
> }
> }
>
> + UNMAP_DOMAIN_PAGE(pl1e);
> + UNMAP_DOMAIN_PAGE(pl2e);
> + UNMAP_DOMAIN_PAGE(pl3e);
Just one minor remark: A pedantic(?) compiler might warn about the
setting to NULL of pl3e here, when
> if ( !(root_get_flags(rpt[root_table_offset(linear)]) & _PAGE_PRESENT) )
> {
> - pl3e = alloc_xen_pagetable();
> + mfn_t l3mfn;
> +
> + pl3e = alloc_map_clear_xen_pt(&l3mfn);
> rc = -ENOMEM;
> if ( !pl3e )
> goto out;
> - clear_page(pl3e);
> l4e_write(&rpt[root_table_offset(linear)],
> - l4e_from_paddr(__pa(pl3e), __PAGE_HYPERVISOR));
> + l4e_from_mfn(l3mfn, __PAGE_HYPERVISOR));
> }
> else
> - pl3e = l4e_to_l3e(rpt[root_table_offset(linear)]);
> + pl3e = map_l3t_from_l4e(rpt[root_table_offset(linear)]);
... it is guaranteed to get initialized again before any further
consumption. IOW strictly speaking the last of those three would
want to be unmap_domain_page(), just like you have ...
> @@ -802,6 +809,9 @@ static int clone_mapping(const void *ptr, root_pgentry_t
> *rpt)
>
> rc = 0;
> out:
> + unmap_domain_page(pl1e);
> + unmap_domain_page(pl2e);
> + unmap_domain_page(pl3e);
> return rc;
> }
... here.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |