Re: [PATCH v4 1/5] mm: cma: add trace events to debug physically-contiguous memory allocations

From: Steven Rostedt
Date: Thu Mar 19 2015 - 16:34:21 EST


On Thu, 19 Mar 2015 23:18:18 +0300
Stefan Strogin <s.strogin@xxxxxxxxxxxxxxxxxxx> wrote:

> Thank you for the reply, Steven.
> I supposed that page_to_pfn() cannot change after mem_map
> initialization, can it? I'm not sure about such things as memory hotplug
> though...
> Also cma_alloc() calls alloc_contig_range() which returns pfn, then it's
> converted to struct page * and cma_alloc() returns struct page *, and
> vice versa in cma_release() (receives struct page * and passes pfn to
> free_contig_rage()).
> Do you mean that printing pfn (or struct page *) in trace event is
> redundant?

I'm concerned about the time TP_printk() is executed and when
TP_fast_assign() is. That is, when the tracepoint is called,
TP_fast_assign() is executed, but TP_printk() is called when someone
reads the trace files, which can happen seconds, hours, days, weeks,
months later.

As long as the result of page_to_pfn() and pfn_to_page() stay the same
throughout the life of the boot, things will be fine. But if they could
ever change, due to hotplug memory or whatever. The data in the trace
buffer will become stale, and report the wrong information.

-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/