From: Jeremy Fitzhardinge Date: Thu, 03 Jan 2008 19:18:19 +0000 Subject: Re: [RFC PATCH 01/11] Add basic support for gcc profiler instrumentation Message-Id: <477D34FB.6070601@goop.org> List-Id: References: <20080103071609.478486470@goodmis.org> <20080103072226.776141236@goodmis.org> <20080103092104.GE10813@elte.hu> <20080103181651.GC3627@sequoia.sous-sol.org> In-Reply-To: <20080103181651.GC3627@sequoia.sous-sol.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Chris Wright Cc: Steven Rostedt , Chris Wright , Mathieu Desnoyers , Peter Zijlstra , Gregory Haskins , LKML , virtualization@lists.linux-foundation.org, Christoph Hellwig , Steven Rostedt , Arnaldo Carvalho de Melo , "William L. Irwin" , Ingo Molnar , Linus Torvalds , Andrew Morton Chris Wright wrote: > * Steven Rostedt (rostedt@goodmis.org) wrote: > >> Hmm, I know paravirt-ops had an issue with mcount in the RT tree. I can't >> remember the exact issues, but it did have something to do with the way >> parameters were passed in. >> >> Chris, do you remember what the issues were? >> > > Yes, paravirt ops have a well-specified calling convention (register > based). There was a cleanup that Andi did that caused the problem > because it removed all the "fastcall" annotations since -mregparm=3 > is now always on for i386. Since MCOUNT disables REGPARM the calling > convention changes (caller pushes to stack, callee expects register) > chaos ensues. I sent a patch to fix that quite some months back, but > it went stale and I neglected to update it. Would you like me to dig > it up refresh and resend? Ingo/Andrew have been accepting patches to systematically remove all the fastcall annotations from the kernel, so adding them back isn't going to help. Ingo and I discussed whether we need to reannotate paravirt.h (either with fastcall or something else indicating a register-only calling convention), specifically because of the -pg issue, but I think the conclusion was that whatever problem existed no longer does, and there's no incompatibility between -pg and regparm. J