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

From: Stefan Strogin
Date: Thu Mar 19 2015 - 16:18:31 EST



On 17/03/15 02:47, Steven Rostedt wrote:
>>> +TRACE_EVENT(cma_alloc,
>>> +
>>> + TP_PROTO(struct cma *cma, struct page *page, int count),
>>> +
>>> + TP_ARGS(cma, page, count),
>>> +
>>> + TP_STRUCT__entry(
>>> + __field(struct page *, page)
>>> + __field(unsigned long, count)
>>> + ),
>>> +
>>> + TP_fast_assign(
>>> + __entry->page = page;
>>> + __entry->count = count;
>>> + ),
>>> +
>>> + TP_printk("page=%p pfn=%lu count=%lu",
>>> + __entry->page,
>>> + __entry->page ? page_to_pfn(__entry->page) : 0,
>
> Can page_to_pfn(value) ever be different throughout the life of the
> boot? That is, can it return a different result given the same value
> (vmalloc area comes to mind).
>
>>> + TP_printk("pfn=%lu page=%p count=%lu",
>>> + __entry->pfn,
>>> + pfn_to_page(__entry->pfn),
>
> Same here. Can pfn_to_page(value) ever return a different result with
> the same value in a single boot?
>

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?
--
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/