Re: perf_arch_fetch_caller_regs...

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

 



From: Frederic Weisbecker <fweisbec@xxxxxxxxx>
Date: Fri, 19 Mar 2010 05:24:16 +0100

> On Thu, Mar 18, 2010 at 09:02:41PM -0700, David Miller wrote:
>> 
>> Can we please remove the CALLER_ADDR0 et al. evaluations at the top
>> level in perf_fetch_caller_regs()?
>> 
>> I take great pains to avoid having to flush the register windows on
>> sparc64 even when fetching callchains et al and any
>> __builtin_return_address() with an argument greater than zero is going
>> to force a register window flush to get emitted by gcc undoing all of
>> my hard work :-)
> 
> 
> Ah. But does that really cause bad things? I mean you don't need
> to save all the ix/ox/lx registers, only the instruction pointer,
> frame pointer, flags, and something that can help user_mode() to
> return 0.
> 
> I don't know deeply this area, but the frame pointer is
> part of the window in the ix things, right? And the CALLER
> thing screws up the frame pointer and makes it hard to rewind
> precisely?

It causes bad things, as in performance is rediculiously bad if
GCC emits that register window flush.  That's the whole point of
my mail, it undoes all of the hard work I do to avoid the register
window flushes.

I fix the performance problems by doing it by hand, walking up the
unflushed register windows and storing only the frame pointer and
return PC into the stack frame.

> Yeah, ok if this is that a burden/useless for archs then I'm going to
> remove it.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux