On Thu, 24 Dec 2020 10:17:20 -0800 Krish Sadhukhan <krish.sadhukhan@xxxxxxxxxx> wrote: > On 12/16/20 12:11 PM, Claudio Imbrenda wrote: > > Remove align_min from struct alloc_ops, since it is no longer used. > > > > Signed-off-by: Claudio Imbrenda<imbrenda@xxxxxxxxxxxxx> > > --- > > lib/alloc.h | 1 - > > lib/alloc_page.c | 1 - > > lib/alloc_phys.c | 9 +++++---- > > lib/vmalloc.c | 1 - > > 4 files changed, 5 insertions(+), 7 deletions(-) > > > > diff --git a/lib/alloc.h b/lib/alloc.h > > index 9b4b634..db90b01 100644 > > --- a/lib/alloc.h > > +++ b/lib/alloc.h > > @@ -25,7 +25,6 @@ > > struct alloc_ops { > > void *(*memalign)(size_t alignment, size_t size); > > void (*free)(void *ptr); > > - size_t align_min; > > }; > > > > extern struct alloc_ops *alloc_ops; > > diff --git a/lib/alloc_page.c b/lib/alloc_page.c > > index 8d2700d..b1cdf21 100644 > > --- a/lib/alloc_page.c > > +++ b/lib/alloc_page.c > > @@ -385,7 +385,6 @@ void *memalign_pages_area(unsigned int area, > > size_t alignment, size_t size) static struct alloc_ops > > page_alloc_ops = { .memalign = memalign_pages, > > .free = free_pages, > > - .align_min = PAGE_SIZE, > > }; > > > > /* > > diff --git a/lib/alloc_phys.c b/lib/alloc_phys.c > > index 72e20f7..a4d2bf2 100644 > > --- a/lib/alloc_phys.c > > +++ b/lib/alloc_phys.c > > @@ -29,8 +29,8 @@ static phys_addr_t base, top; > > static void *early_memalign(size_t alignment, size_t size); > > static struct alloc_ops early_alloc_ops = { > > .memalign = early_memalign, > > - .align_min = DEFAULT_MINIMUM_ALIGNMENT > > }; > > +static size_t align_min; > > > I don't see any caller of phys_alloc_set_minimum_alignment(). So when lib/arm/setup.c:150 lib/powerpc/setup.c:150 > you are comparing against this variable in phys_alloc_aligned_safe() > below, you are comparing against zero. Is that what you is intended > or should 'align_min' be set some default ? if the architecture specific code did not specify anything better, 0 is ok. > > > > struct alloc_ops *alloc_ops = &early_alloc_ops; > > > > @@ -39,8 +39,7 @@ void phys_alloc_show(void) > > int i; > > > > spin_lock(&lock); > > - printf("phys_alloc minimum alignment: %#" PRIx64 "\n", > > - (u64)early_alloc_ops.align_min); > > + printf("phys_alloc minimum alignment: %#" PRIx64 "\n", > > (u64)align_min); for (i = 0; i < nr_regions; ++i) > > printf("%016" PRIx64 "-%016" PRIx64 " [%s]\n", > > (u64)regions[i].base, > > @@ -64,7 +63,7 @@ void phys_alloc_set_minimum_alignment(phys_addr_t > > align) { > > assert(align && !(align & (align - 1))); > > spin_lock(&lock); > > - early_alloc_ops.align_min = align; > > + align_min = align; > > spin_unlock(&lock); > > } > > > > @@ -83,6 +82,8 @@ static phys_addr_t > > phys_alloc_aligned_safe(phys_addr_t size, top_safe = MIN(top_safe, > > 1ULL << 32); > > assert(base < top_safe); > > + if (align < align_min) > > + align = align_min; > > > > addr = ALIGN(base, align); > > size += addr - base; > > diff --git a/lib/vmalloc.c b/lib/vmalloc.c > > index 7a49adf..e146162 100644 > > --- a/lib/vmalloc.c > > +++ b/lib/vmalloc.c > > @@ -190,7 +190,6 @@ static void vm_free(void *mem) > > static struct alloc_ops vmalloc_ops = { > > .memalign = vm_memalign, > > .free = vm_free, > > - .align_min = PAGE_SIZE, > > }; > > > > void __attribute__((__weak__)) find_highmem(void)