Older AMD CPUs that do not support IBRS need an lfence after ret
authorbluhm <bluhm@openbsd.org>
Wed, 1 Sep 2021 09:50:21 +0000 (09:50 +0000)
committerbluhm <bluhm@openbsd.org>
Wed, 1 Sep 2021 09:50:21 +0000 (09:50 +0000)
commit52ac272a18b2bad8b378d56d4caa93222c6f33a1
tree957863b8f2a3fc407c32387e1a0d867bdf66f2f8
parent0345af144f1d9b37bda449efae4f9cd700194f6a
Older AMD CPUs that do not support IBRS need an lfence after ret
to stop speculation.  This seems to be necessary when the branch
predictor hits the ret for the first time.  In their white paper
to mitigate speculation attacks, AMD's retpoline example has an
explicit lfence.  Adjust our retpoline assembly macro in the kernel.
OK guenther@ mortimer@ deraadt@
sys/arch/amd64/include/asm.h