From: Brijesh Singh <brijesh.singh@amd.com>
To: x86@kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Cc: "Brijesh Singh" <brijesh.singh@amd.com>,
"Tom Lendacky" <thomas.lendacky@amd.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Borislav Petkov" <bp@suse.de>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Sean Christopherson" <sean.j.christopherson@intel.com>,
"Radim Krčmář" <rkrcmar@redhat.com>
Subject: [PATCH v8 0/2] x86: Fix SEV guest regression
Date: Thu, 13 Sep 2018 16:51:09 -0500 [thread overview]
Message-ID: <1536875471-17391-1-git-send-email-brijesh.singh@amd.com> (raw)
The following commit
"
x86/kvmclock: Remove memblock dependency
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=368a540e0232ad446931f5a4e8a5e06f69f21343
"
introduced SEV guest regression.
The guest physical address holding the wall_clock and hv_clock_boot
are shared with the hypervisor must be mapped with C=0 when SEV
is active. To clear the C-bit we use kernel_physical_mapping_init() to
split the large pages. The above commit moved the kvmclock initialization
very early and kernel_physical_mapping_init() fails to allocate memory
while spliting the large page.
To solve it, we add a special .data..decrypted section, this section can be
used to hold the shared variables. Early boot code maps this section with
C=0. The section is pmd aligned and sized to avoid the need to split the pages.
Caller can use __decrypted attribute to add the variables in .data..decrypted
section.
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Borislav Petkov <bp@suse.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>
Cc: "Radim Krčmář" <rkrcmar@redhat.com>
NOTE: Since there was some design changes based on Thomas G suggestion hence I
dropped Acked and R-b from Tom, Paolo and Boris.
Changes since v7:
- As per Thomas Gleixner suggestion move the decrypted data in .bss..decrypted section
- remove the second auxiliary array from SEV case
- allocate memory for pvclock data pointer early and map with C=0 for SEV case
Changes since v6:
- improve commit messages
- rename free_decrypted_mem -> mem_encrypt_free_decrypted_mem
Changes since v5:
- rename hvclock_boot_dec -> hvclock_boot_aux.
- rename section from .data..decrypted_aux -> .data..decrypted.aux.
- use NR_CPUS instead of random number elements in hv_clock_aux variable.
Changes since v4:
- define few static pages in .data..decrypted which can be used
for cpus > HVC_BOOT_ARRAY_SIZE when SEV is active.
Changes since v3:
- commit message improvements (based on Sean's feedback)
Changes since v2:
- commit message and code comment improvements (based on Boris feedback)
- move sme_populate_pgd fixes in new patch.
- drop stable Cc - will submit to stable after patch is upstreamed.
Changes since v1:
- move the logic to re-arrange mapping in new patch
- move the definition of __start_data_* in mem_encrypt.h
- map the workarea buffer as encrypted when SEV is enabled
- enhance the sme_populate_pgd to update the pte/pmd flags when mapping exist
Brijesh Singh (2):
x86/mm: add .bss..decrypted section to hold shared variables
x86/kvm: use __bss_decrypted attribute in shared variables
arch/x86/include/asm/mem_encrypt.h | 7 +++++++
arch/x86/kernel/head64.c | 16 +++++++++++++++
arch/x86/kernel/kvmclock.c | 42 +++++++++++++++++++++++++++++++++++---
arch/x86/kernel/vmlinux.lds.S | 19 +++++++++++++++++
arch/x86/mm/init.c | 4 ++++
arch/x86/mm/mem_encrypt.c | 10 +++++++++
6 files changed, 95 insertions(+), 3 deletions(-)
--
2.7.4
next reply other threads:[~2018-09-13 21:51 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-13 21:51 Brijesh Singh [this message]
2018-09-13 21:51 ` [PATCH v8 1/2] x86/mm: add .bss..decrypted section to hold shared variables Brijesh Singh
2018-09-13 23:24 ` Thomas Gleixner
2018-09-14 2:14 ` Brijesh Singh
2018-09-14 7:10 ` Borislav Petkov
2018-09-14 11:58 ` Brijesh Singh
2018-09-14 12:17 ` Thomas Gleixner
2018-09-14 14:12 ` Borislav Petkov
2018-09-14 14:27 ` Brijesh Singh
2018-09-14 14:45 ` Borislav Petkov
2018-09-14 14:50 ` Tom Lendacky
2018-09-14 14:55 ` Thomas Gleixner
2018-09-13 21:51 ` [PATCH v8 2/2] x86/kvm: use __bss_decrypted attribute in " Brijesh Singh
2018-09-13 23:31 ` Thomas Gleixner
2018-09-14 0:25 ` kbuild test robot
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=1536875471-17391-1-git-send-email-brijesh.singh@amd.com \
--to=brijesh.singh@amd.com \
--cc=bp@suse.de \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=sean.j.christopherson@intel.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=x86@kernel.org \
/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.