Re: [PATCH net-next v7] net/core: Introduce netdev_core_stats_inc()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2023/10/9 16:20, Eric Dumazet wrote:
On Mon, Oct 9, 2023 at 10:14 AM Yajun Deng <yajun.deng@xxxxxxxxx> wrote:

On 2023/10/9 15:53, Eric Dumazet wrote:
On Mon, Oct 9, 2023 at 5:07 AM Yajun Deng <yajun.deng@xxxxxxxxx> wrote:

'this_cpu_read + this_cpu_write' and 'pr_info + this_cpu_inc' will make
the trace work well.

They all have 'pop' instructions in them. This may be the key to making
the trace work well.

Hi all,

I need your help on percpu and ftrace.

I do not think you made sure netdev_core_stats_inc() was never inlined.

Adding more code in it is simply changing how the compiler decides to
inline or not.

Yes, you are right. It needs to add the 'noinline' prefix. The
disassembly code will have 'pop'

instruction.

The function was fine, you do not need anything like push or pop.

The only needed stuff was the call __fentry__.

The fact that the function was inlined for some invocations was the
issue, because the trace point
is only planted in the out of line function.


But somehow the following code isn't inline? They didn't need to add the 'noinline' prefix.

+		field = (unsigned long *)((void *)this_cpu_ptr(p) + offset);
+		WRITE_ONCE(*field, READ_ONCE(*field) + 1);

Or
+               (*(unsigned long *)((void *)this_cpu_ptr(p) + offset))++;





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux