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:
Родитель
02dae28f0b
Коммит
b40c6eabfc
|
@ -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:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче