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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.