Re: [PATCH 4/6] x86/mm/kaiser: Support PCID without INVPCID

From: Peter Zijlstra
Date: Wed Nov 29 2017 - 08:39:08 EST


On Wed, Nov 29, 2017 at 01:31:58PM +0100, Peter Zijlstra wrote:
> On Wed, Nov 29, 2017 at 11:33:05AM +0100, Peter Zijlstra wrote:
> > @@ -220,7 +215,27 @@ For 32-bit we have the following convent
> > .macro SWITCH_TO_USER_CR3 scratch_reg:req
> > STATIC_JUMP_IF_FALSE .Lend_\@, kaiser_enabled_key, def=1
> > mov %cr3, \scratch_reg
> > - ADJUST_USER_CR3 \scratch_reg
> > +
> > + /*
> > + * Test if the ASID needs a flush.
> > + */
> > + push \scratch_reg /* preserve CR3 */
>
> So I was just staring at disasm of a few functions and I noticed this
> one reads like push, while others read like pushq.
>
> So does the stupid assembler thing really do a 32bit push if you provide
> it with a 64bit register?

N/m, I just really cannot read straight today. The pushq's were a mem64,
not a r64 argument to push.