Thread (52 messages) 52 messages, 4 authors, 2017-10-09

[PATCH v9 03/12] mm: deferred_init_memmap improvements

From: mhocko@kernel.org (Michal Hocko)
Date: 2017-10-04 08:48:22
Also in: linux-mm, linuxppc-dev, lkml, sparclinux

On Tue 03-10-17 12:01:08, Pasha Tatashin wrote:
Hi Michal,

Are you OK, if I replace DEFERRED_FREE() macro with a function like this:

/*
 * Helper for deferred_init_range, free the given range, and reset the
 * counters
 */
static inline unsigned long __def_free(unsigned long *nr_free,
                                       unsigned long *free_base_pfn,
                                       struct page **page)
{
        unsigned long nr = *nr_free;

        deferred_free_range(*free_base_pfn, nr);
        *free_base_pfn = 0;
        *nr_free = 0;
        *page = NULL;

        return nr;
}

Since it is inline, and we operate with non-volatile counters, compiler will
be smart enough to remove all the unnecessary de-references. As a plus, we
won't be adding any new branches, and the code is still going to stay
compact.
OK. It is a bit clunky but we are holding too much state there. I
haven't checked whether that can be simplified but this can be always
done later.
-- 
Michal Hocko
SUSE Labs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help