Messages in this thread | | | Date | Wed, 4 Oct 2017 10:48:16 +0200 | From | Michal Hocko <> | Subject | Re: [PATCH v9 03/12] mm: deferred_init_memmap improvements |
| |
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
| |