lkml.org 
[lkml]   [2018]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 7/7] Documentation for Pmalloc
    From
    Date
    [...]

    On 2/26/18 7:39 AM, Igor Stoppa wrote:
    >
    > On 24/02/18 02:26, J Freyensee wrote:
    >>
    >> On 2/23/18 6:48 AM, Igor Stoppa wrote:
    > [...]
    >
    >>> +- Before destroying a pool, all the memory allocated from it must be
    >>> + released.
    >> Is that true?  pmalloc_destroy_pool() has:
    >>
    >> .
    >> .
    >> +    pmalloc_pool_set_protection(pool, false);
    >> +    gen_pool_for_each_chunk(pool, pmalloc_chunk_free, NULL);
    >> +    gen_pool_destroy(pool);
    >> +    kfree(data);
    >>
    >> which to me looks like is the opposite, the data (ie, "memory") is being
    >> released first, then the pool is destroyed.
    > well, this is embarrassing ... yes I had this prototype code, because I
    > was wondering if it wouldn't make more sense to tear down the pool as
    > fast as possible. It slipped in, apparently.
    >
    > I'm actually tempted to leave it in and fix the comment.

    Sure, one or the other.

    >
    > [...]
    >
    >>> +
    >>> +- pmalloc does not provide locking support with respect to allocating vs
    >>> + protecting an individual pool, for performance reasons.
    >> What is the recommendation to using locks then, as the computing
    >> real-world mainly operates in multi-threaded/process world?
    > How common are multi-threaded allocations of write-once memory?
    > Here we are talking exclusively about the part of the memory life-cycle
    > where it is allocated (from pmalloc).

    Yah, that's true, good point.

    >
    >> Maybe show
    >> an example of an issue that occur if locks aren't used and give a coding
    >> example.
    > An example of how to use a mutex to access a shared resource? :-O
    >
    > This part below, under your question, was supposed to be the answer :-(
    >
    >>> + It is recommended not to share the same pool between unrelated functions.
    >>> + Should sharing be a necessity, the user of the shared pool is expected
    >>> + to implement locking for that pool.

    My bad, I was suggesting a code sample, if there was a simple code
    sample to provide (like 5-10 lines?).  If it's a lot of code to write,
    no bother.

    > [...]
    >
    >>> +- pmalloc uses genalloc to optimize the use of the space it allocates
    >>> + through vmalloc. Some more TLB entries will be used, however less than
    >>> + in the case of using vmalloc directly. The exact number depends on the
    >>> + size of each allocation request and possible slack.
    >>> +
    >>> +- Considering that not much data is supposed to be dynamically allocated
    >>> + and then marked as read-only, it shouldn't be an issue that the address
    >>> + range for pmalloc is limited, on 32-bit systems.
    >> Why is 32-bit systems mentioned and not 64-bit?
    > Because, as written, on 32 bit system the vmalloc range is relatively
    > small, so one might wonder if there are enough addresses.
    >
    >>   Is there a problem with 64-bit here?
    > Quite the opposite.
    > I thought it was clear, but obviously it isn't, I'll reword this.

    Sounds good, thank you,
    Jay

    >
    > -igor
    >
    >

    \
     
     \ /
      Last update: 2018-02-26 19:33    [W:3.205 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site