lkml.org 
[lkml]   [2018]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/3] vmalloc: Add __vmalloc_node_try_addr function
    From
    Date
    On 06/20/2018 03:09 PM, Rick Edgecombe wrote:
    > Create __vmalloc_node_try_addr function that tries to allocate at a specific
    > address. The implementation relies on __vmalloc_node_range for the bulk of the
    > work. To keep this function from spamming the logs when an allocation failure
    > is fails, __vmalloc_node_range is changed to only warn when __GFP_NOWARN is not
    > set. This behavior is consistent with this flags interpretation in
    > alloc_vmap_area.
    >
    > Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com>
    > ---
    > include/linux/vmalloc.h | 3 +++
    > mm/vmalloc.c | 41 +++++++++++++++++++++++++++++++++++++++--
    > 2 files changed, 42 insertions(+), 2 deletions(-)
    >
    > diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
    > index 398e9c9..6eaa896 100644
    > --- a/include/linux/vmalloc.h
    > +++ b/include/linux/vmalloc.h
    > @@ -82,6 +82,9 @@ extern void *__vmalloc_node_range(unsigned long size, unsigned long align,
    > unsigned long start, unsigned long end, gfp_t gfp_mask,
    > pgprot_t prot, unsigned long vm_flags, int node,
    > const void *caller);
    > +extern void *__vmalloc_node_try_addr(unsigned long addr, unsigned long size,
    > + gfp_t gfp_mask, pgprot_t prot, unsigned long vm_flags,
    > + int node, const void *caller);
    > #ifndef CONFIG_MMU
    > extern void *__vmalloc_node_flags(unsigned long size, int node, gfp_t flags);
    > static inline void *__vmalloc_node_flags_caller(unsigned long size, int node,

    > diff --git a/mm/vmalloc.c b/mm/vmalloc.c
    > index cfea25b..9e0820c9 100644
    > --- a/mm/vmalloc.c
    > +++ b/mm/vmalloc.c
    > @@ -1710,6 +1710,42 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
    > }
    >
    > /**
    > + * __vmalloc_try_addr - try to alloc at a specific address

    * __vmalloc_node_try_addr - try to allocate at a specific address

    > + * @addr: address to try
    > + * @size: size to try
    > + * @gfp_mask: flags for the page level allocator
    > + * @prot: protection mask for the allocated pages
    > + * @vm_flags: additional vm area flags (e.g. %VM_NO_GUARD)
    > + * @node: node to use for allocation or NUMA_NO_NODE
    > + * @caller: caller's return address
    > + *
    > + * Try to allocate at the specific address. If it succeeds the address is
    > + * returned. If it fails NULL is returned. It may trigger TLB flushes.
    > + */
    > +void *__vmalloc_node_try_addr(unsigned long addr, unsigned long size,
    > + gfp_t gfp_mask, pgprot_t prot, unsigned long vm_flags,
    > + int node, const void *caller)
    > +{

    so this isn't optional, eh? You are going to force it on people because?

    thanks,
    --
    ~Randy

    \
     
     \ /
      Last update: 2018-06-21 00:17    [W:7.180 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site