From: Cornelia Huck <cohuck@redhat.com>
To: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org,
kvm@vger.kernel.org, Heiko Carstens <heiko.carstens@de.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jon Masters <jcm@redhat.com>, Marcus Meissner <meissner@suse.de>,
Jiri Kosina <jkosina@suse.cz>
Subject: Re: [PATCH 0/6] s390: improve speculative execution handling
Date: Wed, 17 Jan 2018 13:00:38 +0100 [thread overview]
Message-ID: <20180117130038.4830f89b.cohuck@redhat.com> (raw)
In-Reply-To: <1516182519-10623-1-git-send-email-schwidefsky@de.ibm.com>
On Wed, 17 Jan 2018 10:48:33 +0100
Martin Schwidefsky <schwidefsky@de.ibm.com> wrote:
> This patch series implements multiple mitigations for the speculative
> execution findings:
> 1. The definition of the gmb() barrier as currently used by the
> distributions, we may have to find a better name for it
> 2. The architecture code for the nospec interfaces, the macros for
> nospec_ptr and nospec_load just use the gmb() barrier
> 3. The enablement for firmware features to switch between different
> branch prediction modes. It comes with a config option
> CONFIG_KERNEL_NOBP, two new kernel parameters "nobp=[0|1]" and
> "nospec", and a new system call s390_modify_bp.
> With CONFIG_KERNEL_NOBP=y the new branch prediction mode is active
> for the kernel code by default and can be switched off with "nospec"
> or "nobp=0". With CONFIG_KERNEL_NOBP=n the new mode is inactive for
> kernel code unless "nobp=1" is specified.
> User space code can use the trapdoor system call s390_modify_bp to
> set the new TIF_NOBP bit. This switches to the new branch prediction
> mode for the lifetime of the task, any children of the task will
> inherit this attribute.
> The vCPU of a KVM guest will run with the new branch prediction
> mode if either the associated qemu task has TIF_NOBP set or if the
> KVM kernel code sets TIF_NOBP_GUEST. The later will require a small
> update to KVM backend.
How does this interact with the facility bits? Bit 81 seems to indicate
function code f (gmb), while bit 82 seems to indicate function codes
c/d (branch prediction modes). Both seem to be in the range of bits
transparently passed through for kvm (although this still needs a qemu
update to the cpu models so the bits are not masked out as unknown.)
What happens if a certain branch prediction mode is set prior to
execution of SIE and the guest kernel is issuing PPA c/d itself?
> 4. Transport channel reduction by clearing registers on interrupts,
> system calls and KVM guest exits.
>
> We are working on an equivalent for retpoline, stay tuned.
>
> @Greg: I have started with the backports for the stable kernel releases,
> but unless the interface for gmp/nospec_ptr/nospec_load is cast in stone
> does it make sense to send them?
>
> Christian Borntraeger (1):
> KVM: s390: wire up seb feature
>
> Martin Schwidefsky (5):
> s390/alternative: use a copy of the facility bit mask
> s390: implement nospec_[load|ptr]
> s390: add options to change branch prediction behaviour for the kernel
> s390: add system call to run tasks with modified branch prediction
> s390: scrub registers on kernel entry and KVM exit
>
> arch/s390/Kconfig | 17 +++++
> arch/s390/include/asm/barrier.h | 38 ++++++++++
> arch/s390/include/asm/facility.h | 18 +++++
> arch/s390/include/asm/kvm_host.h | 3 +-
> arch/s390/include/asm/lowcore.h | 3 +-
> arch/s390/include/asm/processor.h | 1 +
> arch/s390/include/asm/thread_info.h | 4 ++
> arch/s390/include/uapi/asm/kvm.h | 4 +-
> arch/s390/include/uapi/asm/unistd.h | 3 +-
> arch/s390/kernel/alternative.c | 33 ++++++++-
> arch/s390/kernel/early.c | 5 ++
> arch/s390/kernel/entry.S | 134 +++++++++++++++++++++++++++++++++++-
> arch/s390/kernel/ipl.c | 1 +
> arch/s390/kernel/setup.c | 4 +-
> arch/s390/kernel/smp.c | 6 +-
> arch/s390/kernel/sys_s390.c | 8 +++
> arch/s390/kernel/syscalls.S | 1 +
> arch/s390/kvm/kvm-s390.c | 11 +++
> arch/s390/kvm/vsie.c | 8 +++
> include/uapi/linux/kvm.h | 1 +
> 20 files changed, 294 insertions(+), 9 deletions(-)
>
Something under Documentation/ to document the new knobs would be nice.
next prev parent reply other threads:[~2018-01-17 12:00 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-17 9:48 [PATCH 0/6] s390: improve speculative execution handling Martin Schwidefsky
2018-01-17 9:48 ` [PATCH 1/6] s390/alternative: use a copy of the facility bit mask Martin Schwidefsky
2018-01-17 13:54 ` David Hildenbrand
2018-01-17 14:24 ` Cornelia Huck
2018-01-17 9:48 ` [PATCH 2/6] s390: implement nospec_[load|ptr] Martin Schwidefsky
2018-01-17 12:41 ` Jiri Kosina
2018-01-17 14:52 ` Jon Masters
2018-01-17 13:58 ` David Hildenbrand
2018-01-17 14:04 ` Christian Borntraeger
2018-01-17 9:48 ` [PATCH 3/6] s390: add options to change branch prediction behaviour for the kernel Martin Schwidefsky
2018-01-18 9:52 ` Cornelia Huck
2018-01-19 4:53 ` QingFeng Hao
2018-01-17 9:48 ` [PATCH 4/6] s390: add system call to run tasks with modified branch prediction Martin Schwidefsky
2018-01-17 10:03 ` Florian Weimer
2018-01-17 10:05 ` Paolo Bonzini
2018-01-17 11:14 ` Christian Borntraeger
2018-01-17 11:50 ` Paolo Bonzini
2018-01-17 11:55 ` Martin Schwidefsky
2018-01-17 13:25 ` Heiko Carstens
2018-01-17 9:48 ` [PATCH 5/6] KVM: s390: wire up seb feature Martin Schwidefsky
2018-01-17 11:18 ` Christian Borntraeger
2018-01-17 11:22 ` Paolo Bonzini
2018-01-17 11:28 ` Christian Borntraeger
2018-01-17 11:29 ` Christian Borntraeger
2018-01-17 11:32 ` Paolo Bonzini
2018-01-17 11:33 ` David Hildenbrand
2018-01-17 11:39 ` Christian Borntraeger
2018-01-17 13:44 ` [PATCH v2] KVM: s390: wire up bpb feature Christian Borntraeger
2018-01-17 13:51 ` David Hildenbrand
2018-01-17 21:43 ` Christian Borntraeger
2018-01-18 6:27 ` Martin Schwidefsky
2018-01-18 9:59 ` Cornelia Huck
2018-01-18 10:09 ` Christian Borntraeger
2018-01-17 9:48 ` [PATCH 6/6] s390: scrub registers on kernel entry and KVM exit Martin Schwidefsky
2018-01-19 6:29 ` QingFeng Hao
2018-01-19 7:57 ` Christian Borntraeger
2018-01-19 8:27 ` QingFeng Hao
2018-01-17 12:00 ` Cornelia Huck [this message]
2018-01-17 12:05 ` [PATCH 0/6] s390: improve speculative execution handling Christian Borntraeger
2018-01-17 13:29 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180117130038.4830f89b.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=gregkh@linuxfoundation.org \
--cc=heiko.carstens@de.ibm.com \
--cc=jcm@redhat.com \
--cc=jkosina@suse.cz \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=meissner@suse.de \
--cc=pbonzini@redhat.com \
--cc=schwidefsky@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).