Re: [RFC PATCH v2 05/18] sched: add task flag for preempt IRQ tracking
From: Jiri Kosina <jikos@kernel.org>
Date: 2016-05-02 20:00:53
Also in:
linux-s390, lkml
From: Jiri Kosina <jikos@kernel.org>
Date: 2016-05-02 20:00:53
Also in:
linux-s390, lkml
On Mon, 2 May 2016, Jiri Kosina wrote:
quoted
FWIW, I just tried this: static bool is_entry_text(unsigned long addr) { return addr >= (unsigned long)__entry_text_start && addr < (unsigned long)__entry_text_end; } it works. So the entry code is already annotated reasonably well :) I just hacked it up here: https://git.kernel.org/cgit/linux/kernel/git/luto/linux.git/commit/?h=stack&id=085eacfe0edfc18768e48340084415dba9a6bd21 and it seems to work, at least for page faults. A better implementation would print out the entire contents of pt_regs so that people reading the stack trace will know the registers at the time of the exception, which might be helpful.Sorry for being dense, but how do you distinguish here between a "real" kernel entry, that pushes pt_regs, and any "non-entry" function call that passes pt_regs around?
Umm, actually, the more tricky part is the other way around -- how do you make sure that whenever you are calling out from a code between __entry_text_start and __entry_text_end, pt_regs will be at the place you're looking for it? How's that guaranteed? Thanks, -- Jiri Kosina SUSE Labs