Message ID | 20201002154420.292134-7-imbrenda@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Rewrite the allocators | expand |
On 02/10/20 17:44, Claudio Imbrenda wrote: > Remove align_min from struct alloc_ops. ... because? :) Paolo > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > --- > 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 046082a..3c6c4ee 100644 > --- a/lib/alloc_page.c > +++ b/lib/alloc_page.c > @@ -320,7 +320,6 @@ void *alloc_page() > 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; > > 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 986a34c..b28a390 100644 > --- a/lib/vmalloc.c > +++ b/lib/vmalloc.c > @@ -188,7 +188,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) >
On Fri, 6 Nov 2020 12:35:31 +0100 Paolo Bonzini <pbonzini@redhat.com> wrote: > On 02/10/20 17:44, Claudio Imbrenda wrote: > > Remove align_min from struct alloc_ops. > > ... because? :) because nobody is using it anymore at this point :) > Paolo > > > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > > --- > > 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 046082a..3c6c4ee 100644 > > --- a/lib/alloc_page.c > > +++ b/lib/alloc_page.c > > @@ -320,7 +320,6 @@ void *alloc_page() > > 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; > > > > 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 986a34c..b28a390 100644 > > --- a/lib/vmalloc.c > > +++ b/lib/vmalloc.c > > @@ -188,7 +188,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) > > >
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 046082a..3c6c4ee 100644 --- a/lib/alloc_page.c +++ b/lib/alloc_page.c @@ -320,7 +320,6 @@ void *alloc_page() 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; 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 986a34c..b28a390 100644 --- a/lib/vmalloc.c +++ b/lib/vmalloc.c @@ -188,7 +188,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)
Remove align_min from struct alloc_ops. Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> --- 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(-)