ftrace: Simplify the calculation of page number for ftrace_page->records

Based on the following two reasones, we could simplify the calculation:

  - If the number after roundup count is not power of 2, we would
    definitely have more than 1 empty page with a higher order.
  - get_count_order() just return current order, so one lower order
    could meet the requirement.

The calculation could be simplified by lower one order level when pages
are not power of 2.

Link: https://lkml.kernel.org/r/20200831031104.23322-5-richard.weiyang@linux.alibaba.com

Signed-off-by: Wei Yang <richard.weiyang@linux.alibaba.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
Wei Yang 2020-08-31 11:11:02 +08:00 коммит произвёл Steven Rostedt (VMware)
Родитель 02dae28f0b
Коммит b40c6eabfc
1 изменённых файлов: 4 добавлений и 3 удалений

Просмотреть файл

@ -3129,18 +3129,19 @@ static int ftrace_update_code(struct module *mod, struct ftrace_page *new_pgs)
static int ftrace_allocate_records(struct ftrace_page *pg, int count) static int ftrace_allocate_records(struct ftrace_page *pg, int count)
{ {
int order; int order;
int cnt; int pages, cnt;
if (WARN_ON(!count)) if (WARN_ON(!count))
return -EINVAL; return -EINVAL;
order = get_count_order(DIV_ROUND_UP(count, ENTRIES_PER_PAGE)); pages = DIV_ROUND_UP(count, ENTRIES_PER_PAGE);
order = get_count_order(pages);
/* /*
* We want to fill as much as possible. No more than a page * We want to fill as much as possible. No more than a page
* may be empty. * may be empty.
*/ */
while ((PAGE_SIZE << order) / ENTRY_SIZE >= count + ENTRIES_PER_PAGE) if (!is_power_of_2(pages))
order--; order--;
again: again: