On Sat, Jan 10, 2015 at 12:14 PM, Denys Vlasenko <[email protected]> wrote: > On Sat, Jan 10, 2015 at 3:23 PM, Borislav Petkov <[email protected]> wrote: >> Bah, I see it. This nasty '$' gets forgotten a lot, maybe we should have >> a check for that in some scripts :-) >> >> Here's the fix: >> >> --- >> Index: b/arch/x86/lib/thunk_64.S >> =================================================================== >> --- a/arch/x86/lib/thunk_64.S 2015-01-10 15:18:04.418737613 +0100 >> +++ b/arch/x86/lib/thunk_64.S 2015-01-10 15:17:18.882736556 +0100 >> @@ -67,7 +67,7 @@ restore: >> movq_cfi_restore 6*8, rdx >> movq_cfi_restore 7*8, rsi >> movq_cfi_restore 8*8, rdi >> - addq 9*8, %rsp >> + addq $9*8, %rsp >> CFI_ADJUST_CFA_OFFSET -9*8 >> ret > > Thanks! > > After I've seen the disassembly I myself posted, I can't help but wonder > why we use 5-byte instructions to store and load regs on stack when > pushes and pops are 1 or 2-byte long. >
I asked this once, and someone told me that push/pop has lower throughput. I find this surprising. --Andy > Especially that 32-bit code *does* use push/pops. > > Can you test the attached patch with your kvm guest testcase? Tt could be worth adding a macro along the lines of pushq_cfi_save that does the pushq_cfi and the CFI_REL_OFFSET. --Andy -- Andy Lutomirski AMA Capital Management, LLC -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

