Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752669AbZCPWDo (ORCPT ); Mon, 16 Mar 2009 18:03:44 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751918AbZCPWDe (ORCPT ); Mon, 16 Mar 2009 18:03:34 -0400 Received: from gw.goop.org ([64.81.55.164]:40417 "EHLO mail.goop.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750821AbZCPWDd (ORCPT ); Mon, 16 Mar 2009 18:03:33 -0400 Message-ID: <49BECCB0.4010804@goop.org> Date: Mon, 16 Mar 2009 15:03:28 -0700 From: Jeremy Fitzhardinge User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: Steven Rostedt CC: Peter Zijlstra , akataria@vmware.com, the arch/x86 maintainers , LKML Subject: Re: VMI broken on tip/master... References: <1236966968.14680.15.camel@alok-dev1> <1237072800.8939.813.camel@laptop> In-Reply-To: X-Enigmail-Version: 0.95.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1832 Lines: 49 Steven Rostedt wrote: > On Sun, 15 Mar 2009, Peter Zijlstra wrote: > >> Looking at arch/x86/include/asm/paravirt.h (god I wish paravirt would go >> away, not only does it screw over ctags, it also hurts my brain), it >> appears its playing icky games with primitives like >> raw_local_irq_disable(): >> >> static inline void raw_local_irq_disable(void) >> { >> asm volatile(paravirt_alt(PARAVIRT_CALL) >> : >> : paravirt_type(pv_irq_ops.irq_disable), >> paravirt_clobber(CLBR_EAX) >> : "memory", "eax", "cc"); >> } >> >> So what was supposed to be a simple op, now gets expanded into god knows >> what, and might lead to tracer recursion or something. >> > > It should only blow up if a guest is using tracing, and the code to call > the hypervisor is also being traced. > > >> Maybe a simple notrace annotation somewhere in that paravirt code is all >> it takes, who knows. >> >> Steve, you've been known to work on virt stuff too, happen to have a >> bright idea? :-) >> > > I have noticed that some paravirt ops calls (like this > raw_local_irq_disable) does not get inlined. It sometimes gets made into a > function. This would cause raw_local_irq_disable to actually be traced! > > One answer is to use "always_inline" or I can dig out a patch that makes > inline also include "notrace". Yes, these should probably be always_inline and notrace (just in case gcc gets it into its head that it might be a good idea to put mcount calls into inlined functions). J -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/