[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC XEN PATCH 02/16] x86_64/mm: explicitly specify the location to place the M2P table
On Mon, Oct 10, 2016 at 08:32:21AM +0800, Haozhong Zhang wrote: > A reserved area on each pmem region is used to place the M2P table. > However, it's not at the beginning of the pmem region, so we need to > specify the location explicitly when creating the M2P table. > > Signed-off-by: Haozhong Zhang <haozhong.zhang@xxxxxxxxx> > --- > Cc: Jan Beulich <jbeulich@xxxxxxxx> > Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > --- > xen/arch/x86/x86_64/mm.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c > index 33f226a..5c0f527 100644 > --- a/xen/arch/x86/x86_64/mm.c > +++ b/xen/arch/x86/x86_64/mm.c > @@ -317,7 +317,8 @@ void destroy_m2p_mapping(struct mem_hotadd_info *info) > * spfn/epfn: the pfn ranges to be setup > * free_s/free_e: the pfn ranges that is free still > */ > -static int setup_compat_m2p_table(struct mem_hotadd_info *info) > +static int setup_compat_m2p_table(struct mem_hotadd_info *info, > + struct mem_hotadd_info *alloc_info) > { > unsigned long i, va, smap, emap, rwva, epfn = info->epfn, mfn; > unsigned int n; > @@ -371,7 +372,7 @@ static int setup_compat_m2p_table(struct mem_hotadd_info > *info) > if ( n == CNT ) > continue; > > - mfn = alloc_hotadd_mfn(info); > + mfn = alloc_hotadd_mfn(alloc_info); > err = map_pages_to_xen(rwva, mfn, 1UL << PAGETABLE_ORDER, > PAGE_HYPERVISOR); > if ( err ) > @@ -391,7 +392,8 @@ static int setup_compat_m2p_table(struct mem_hotadd_info > *info) > * Allocate and map the machine-to-phys table. > * The L3 for RO/RWRW MPT and the L2 for compatible MPT should be setup > already > */ > -static int setup_m2p_table(struct mem_hotadd_info *info) > +static int setup_m2p_table(struct mem_hotadd_info *info, > + struct mem_hotadd_info *alloc_info) > { > unsigned long i, va, smap, emap; > unsigned int n; > @@ -440,7 +442,7 @@ static int setup_m2p_table(struct mem_hotadd_info *info) > break; > if ( n < CNT ) > { > - unsigned long mfn = alloc_hotadd_mfn(info); > + unsigned long mfn = alloc_hotadd_mfn(alloc_info); > > ret = map_pages_to_xen( > RDWR_MPT_VIRT_START + i * sizeof(unsigned long), > @@ -485,7 +487,7 @@ static int setup_m2p_table(struct mem_hotadd_info *info) > #undef CNT > #undef MFN > > - ret = setup_compat_m2p_table(info); > + ret = setup_compat_m2p_table(info, alloc_info); > error: > return ret; > } > @@ -1427,7 +1429,7 @@ int memory_add(unsigned long spfn, unsigned long epfn, > unsigned int pxm) > total_pages += epfn - spfn; > > set_pdx_range(spfn, epfn); > - ret = setup_m2p_table(&info); > + ret = setup_m2p_table(&info, &info); I am not sure I follow this logic. You are passing the same contents, it is just that 'alloc_info' and 'info' are aliased together? _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |