All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] x86: Fix SEV guest regression
@ 2018-08-29 18:23 Brijesh Singh
  2018-08-29 18:23 ` [PATCH v3 1/4] x86/mm: Restructure sme_encrypt_kernel() Brijesh Singh
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Brijesh Singh @ 2018-08-29 18:23 UTC (permalink / raw)
  To: x86, linux-kernel, kvm
  Cc: Brijesh Singh, Tom Lendacky, Thomas Gleixner, Borislav Petkov,
	Paolo Bonzini, Sean Christopherson, Radim Krčmář

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>

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 (4):
  x86/mm: Restructure sme_encrypt_kernel()
  x86/mm: fix sme_populate_pgd() to update page flags
  x86/mm: add .data..decrypted section to hold shared variables
  x86/kvm: use __decrypted attribute in shared variables

 arch/x86/include/asm/mem_encrypt.h |   6 +
 arch/x86/kernel/head64.c           |  11 ++
 arch/x86/kernel/kvmclock.c         |  30 ++++-
 arch/x86/kernel/vmlinux.lds.S      |  17 +++
 arch/x86/mm/mem_encrypt_identity.c | 232 +++++++++++++++++++++++++++----------
 5 files changed, 229 insertions(+), 67 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-08-30 14:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-29 18:23 [PATCH v3 0/4] x86: Fix SEV guest regression Brijesh Singh
2018-08-29 18:23 ` [PATCH v3 1/4] x86/mm: Restructure sme_encrypt_kernel() Brijesh Singh
2018-08-29 18:23 ` [PATCH v3 2/4] x86/mm: fix sme_populate_pgd() to update page flags Brijesh Singh
2018-08-29 18:23 ` [PATCH v3 3/4] x86/mm: add .data..decrypted section to hold shared variables Brijesh Singh
2018-08-29 18:24 ` [PATCH v3 4/4] x86/kvm: use __decrypted attribute in " Brijesh Singh
2018-08-29 19:56   ` Sean Christopherson
2018-08-30 14:10     ` Brijesh Singh
2018-08-29 19:06 ` [PATCH v3 0/4] x86: Fix SEV guest regression Tom Lendacky

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.