mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
0b0d81e3b7
objtool reports the following warnings: drivers/gpu/drm/vmwgfx/vmwgfx_msg.o: warning: objtool: vmw_send_msg()+0x107: duplicate frame pointer save drivers/gpu/drm/vmwgfx/vmwgfx_msg.o: warning: objtool: vmw_host_get_guestinfo()+0x252: duplicate frame pointer save To quote Linus: "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." Silence the warnings by telling objtool to ignore the two functions which use the VMW_PORT_HB_{IN,OUT} macros. Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: DRI <dri-devel@lists.freedesktop.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/20160526184343.fdtjjjg67smmeekt@treble Signed-off-by: Ingo Molnar <mingo@kernel.org> |
||
---|---|---|
.. | ||
device_include | ||
Kconfig | ||
Makefile | ||
vmwgfx_binding.c | ||
vmwgfx_binding.h | ||
vmwgfx_buffer.c | ||
vmwgfx_cmdbuf_res.c | ||
vmwgfx_cmdbuf.c | ||
vmwgfx_context.c | ||
vmwgfx_cotable.c | ||
vmwgfx_dmabuf.c | ||
vmwgfx_drv.c | ||
vmwgfx_drv.h | ||
vmwgfx_execbuf.c | ||
vmwgfx_fb.c | ||
vmwgfx_fence.c | ||
vmwgfx_fence.h | ||
vmwgfx_fifo.c | ||
vmwgfx_gmr.c | ||
vmwgfx_gmrid_manager.c | ||
vmwgfx_ioctl.c | ||
vmwgfx_irq.c | ||
vmwgfx_kms.c | ||
vmwgfx_kms.h | ||
vmwgfx_ldu.c | ||
vmwgfx_marker.c | ||
vmwgfx_mob.c | ||
vmwgfx_msg.c | ||
vmwgfx_msg.h | ||
vmwgfx_overlay.c | ||
vmwgfx_prime.c | ||
vmwgfx_reg.h | ||
vmwgfx_resource_priv.h | ||
vmwgfx_resource.c | ||
vmwgfx_scrn.c | ||
vmwgfx_shader.c | ||
vmwgfx_so.c | ||
vmwgfx_so.h | ||
vmwgfx_stdu.c | ||
vmwgfx_surface.c | ||
vmwgfx_ttm_glue.c |