From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932746AbcEYR4e (ORCPT ); Wed, 25 May 2016 13:56:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53846 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754293AbcEYR4c (ORCPT ); Wed, 25 May 2016 13:56:32 -0400 Date: Wed, 25 May 2016 12:56:31 -0500 From: Josh Poimboeuf To: Linus Torvalds Cc: Ingo Molnar , Linux Kernel Mailing List , DRI Subject: Re: objtool warning: "duplicate frame pointer save" Message-ID: <20160525175631.44xgcylo24ysftss@treble> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Wed, 25 May 2016 17:56:32 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 25, 2016 at 10:14:24AM -0700, Linus Torvalds wrote: > Josh, > my current git version (with gcc 5.3.1) makes objtool warn about > "duplicate frame pointer save" in drivers/gpu/drm/vmwgfx/vmwgfx_msg.c > for both vmw_send_msg() and vmw_host_get_guestinfo(). > > The reason is that VMW_PORT_HB_OUT() uses a magic instruction sequence > (a "rep outsb") to communicate with the hypervisor (it's a virtual GPU > driver for vmware), and %rbp is part of the communication. So the > inline asm does a save-and-restore of the frame pointer around the > instruction sequence. > > I actually find the objtool warning to be quite reasonable, so it's > not exactly a false positive, since in this case it actually does > point out that the frame pointer won't be reliable over that > instruction sequence. > > But in this particular case it just ends up being the wrong thing - > the code is what it is, and %rbp just can't have the frame information > due to annoying magic calling conventions. > > Is there some way to override objtool for this situation? I hate > seeing warnings that I need to ignore, it has just too often caused me > to mistakenly ignore warnings I *should* have reacted to. > > I guess a STACK_FRAME_NON_STANDARD will shut objtool up (or just > disabling it entirely for the whole file), but I was wondering about > something more targeted that could be marked in the inline asm itself > (rather than have to mark the functions that use it) I used to have a STACKTOOL_IGNORE_INSN macro that would tell the tool to skip warnings for specific instructions in inline asm: Here's an example of it how it was used: https://lkml.kernel.org/r/c0c1a92df921961cae5cce208247bb8d8a975d6d.1450442274.git.jpoimboe@redhat.com And here's the implementation of the macro: https://lkml.kernel.org/r/cd7778181d2a5251c3dc21811fdbcaa2c16c98c3.1450442274.git.jpoimboe@redhat.com As it turns out, we didn't need the macro, so I removed it. But I can easily add something like that again to get rid of the warnings. There were objections to having "OBJTOOL" in the names of macros, so I guess I'll call it STACK_INSN_NON_STANDARD, unless anybody has a better idea. -- Josh