[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 02/18] mini-os: remove unused alloc_contig_pages() function
Juergen Gross, on Fri 05 Aug 2016 19:35:46 +0200, wrote: > alloc_contig_pages() is never used anywhere in mini-os. Remove it. > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> > Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> Acked-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > --- > arch/x86/mm.c | 142 > ---------------------------------------------------------- > include/mm.h | 1 - > 2 files changed, 143 deletions(-) > > diff --git a/arch/x86/mm.c b/arch/x86/mm.c > index ae1036e..c59a5d3 100644 > --- a/arch/x86/mm.c > +++ b/arch/x86/mm.c > @@ -652,148 +652,6 @@ int unmap_frames(unsigned long va, unsigned long > num_frames) > } > > /* > - * Allocate pages which are contiguous in machine memory. > - * Returns a VA to where they are mapped or 0 on failure. > - * > - * addr_bits indicates if the region has restrictions on where it is > - * located. Typical values are 32 (if for example PCI devices can't access > - * 64bit memory) or 0 for no restrictions. > - * > - * Allocated pages can be freed using the page allocators free_pages() > - * function. > - * > - * based on Linux function xen_create_contiguous_region() > - */ > -#define MAX_CONTIG_ORDER 9 /* 2MB */ > -unsigned long alloc_contig_pages(int order, unsigned int addr_bits) > -{ > - unsigned long in_va, va; > - unsigned long in_frames[1UL << order], out_frames, mfn; > - multicall_entry_t call[1UL << order]; > - unsigned int i, num_pages = 1UL << order; > - int ret, exch_success; > - > - /* pass in num_pages 'extends' of size 1 and > - * request 1 extend of size 'order */ > - struct xen_memory_exchange exchange = { > - .in = { > - .nr_extents = num_pages, > - .extent_order = 0, > - .domid = DOMID_SELF > - }, > - .out = { > - .nr_extents = 1, > - .extent_order = order, > - .address_bits = addr_bits, > - .domid = DOMID_SELF > - }, > - .nr_exchanged = 0 > - }; > - > - if ( order > MAX_CONTIG_ORDER ) > - { > - printk("alloc_contig_pages: order too large 0x%x > 0x%x\n", > - order, MAX_CONTIG_ORDER); > - return 0; > - } > - > - /* Allocate some potentially discontiguous pages */ > - in_va = alloc_pages(order); > - if ( !in_va ) > - { > - printk("alloc_contig_pages: could not get enough pages > (order=0x%x\n", > - order); > - return 0; > - } > - > - /* set up arguments for exchange hyper call */ > - set_xen_guest_handle(exchange.in.extent_start, in_frames); > - set_xen_guest_handle(exchange.out.extent_start, &out_frames); > - > - /* unmap current frames, keep a list of MFNs */ > - for ( i = 0; i < num_pages; i++ ) > - { > - int arg = 0; > - > - va = in_va + (PAGE_SIZE * i); > - in_frames[i] = virt_to_mfn(va); > - > - /* update P2M mapping */ > - phys_to_machine_mapping[virt_to_pfn(va)] = INVALID_P2M_ENTRY; > - > - /* build multi call */ > - call[i].op = __HYPERVISOR_update_va_mapping; > - call[i].args[arg++] = va; > - call[i].args[arg++] = 0; > -#ifdef __i386__ > - call[i].args[arg++] = 0; > -#endif > - call[i].args[arg++] = UVMF_INVLPG; > - } > - > - ret = HYPERVISOR_multicall(call, i); > - if ( ret ) > - { > - printk("Odd, update_va_mapping hypercall failed with rc=%d.\n", ret); > - return 0; > - } > - > - /* try getting a contig range of MFNs */ > - out_frames = virt_to_pfn(in_va); /* PFNs to populate */ > - ret = HYPERVISOR_memory_op(XENMEM_exchange, &exchange); > - if ( ret ) { > - printk("mem exchanged order=0x%x failed with rc=%d, > nr_exchanged=%lu\n", > - order, ret, exchange.nr_exchanged); > - /* we still need to return the allocated pages above to the pool > - * ie. map them back into the 1:1 mapping etc. so we continue but > - * in the end return the pages to the page allocator and return 0. */ > - exch_success = 0; > - } > - else > - exch_success = 1; > - > - /* map frames into 1:1 and update p2m */ > - for ( i = 0; i < num_pages; i++ ) > - { > - int arg = 0; > - pte_t pte; > - > - va = in_va + (PAGE_SIZE * i); > - mfn = i < exchange.nr_exchanged ? (out_frames + i) : in_frames[i]; > - pte = __pte(mfn << PAGE_SHIFT | L1_PROT); > - > - /* update P2M mapping */ > - phys_to_machine_mapping[virt_to_pfn(va)] = mfn; > - > - /* build multi call */ > - call[i].op = __HYPERVISOR_update_va_mapping; > - call[i].args[arg++] = va; > -#ifdef __x86_64__ > - call[i].args[arg++] = (pgentry_t)pte.pte; > -#else > - call[i].args[arg++] = pte.pte_low; > - call[i].args[arg++] = pte.pte_high; > -#endif > - call[i].args[arg++] = UVMF_INVLPG; > - } > - ret = HYPERVISOR_multicall(call, i); > - if ( ret ) > - { > - printk("update_va_mapping hypercall no. 2 failed with rc=%d.\n", > ret); > - return 0; > - } > - > - if ( !exch_success ) > - { > - /* since the exchanged failed we just free the pages as well */ > - free_pages((void *) in_va, order); > - return 0; > - } > - > - return in_va; > -} > - > -/* > * Clear some of the bootstrap memory > */ > static void clear_bootstrap(void) > diff --git a/include/mm.h b/include/mm.h > index f57d8ab..a48f485 100644 > --- a/include/mm.h > +++ b/include/mm.h > @@ -71,7 +71,6 @@ void do_map_frames(unsigned long addr, > const unsigned long *f, unsigned long n, unsigned long stride, > unsigned long increment, domid_t id, int *err, unsigned long prot); > int unmap_frames(unsigned long va, unsigned long num_frames); > -unsigned long alloc_contig_pages(int order, unsigned int addr_bits); > #ifdef HAVE_LIBC > extern unsigned long heap, brk, heap_mapped, heap_end; > #endif > -- > 2.6.6 > -- Samuel <c> ya(ka|ma|to)* ca existe une fois sur 2 au japon, c'est facile ;-) -+- #ens-mim au japon -+- _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |