On 9/9/21 2:32 AM, Christian Borntraeger wrote:


On 09.09.21 00:58, Tom Lendacky wrote:
This patch series provides a generic helper function, cc_platform_has(),
to replace the sme_active(), sev_active(), sev_es_active() and
mem_encrypt_active() functions.

It is expected that as new confidential computing technologies are
added to the kernel, they can all be covered by a single function call
instead of a collection of specific function calls all called from the
same locations.

The powerpc and s390 patches have been compile tested only. Can the
folks copied on this series verify that nothing breaks for them.

Is there a tree somewhere?

I pushed it up to github:

https://github.com/AMDESE/linux/tree/prot-guest-has-v3

Thanks,
Tom


  Also,
a new file, arch/powerpc/platforms/pseries/cc_platform.c, has been
created for powerpc to hold the out of line function.

Cc: Andi Kleen <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Baoquan He <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Christian Borntraeger <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Dave Young <[email protected]>
Cc: David Airlie <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Joerg Roedel <[email protected]>
Cc: Maarten Lankhorst <[email protected]>
Cc: Maxime Ripard <[email protected]>
Cc: Michael Ellerman <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Thomas Zimmermann <[email protected]>
Cc: Vasily Gorbik <[email protected]>
Cc: VMware Graphics <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Christoph Hellwig <[email protected]>

---

Patches based on:
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git&amp;data=04%7C01%7Cthomas.lendacky%40amd.com%7C5cd71ef2c2ce4b90060708d973640358%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637667695657121432%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=FVngrPSxCCRKutAaIMtU2Nk8WArFQB1dEE2wN7v8RgA%3D&amp;reserved=0 master    4b93c544e90e ("thunderbolt: test: split up test cases in tb_test_credit_alloc_all")

Changes since v2:
- Changed the name from prot_guest_has() to cc_platform_has()
- Took the cc_platform_has() function out of line. Created two new files,
   cc_platform.c, in both x86 and ppc to implment the function. As a
   result, also changed the attribute defines into enums.
- Removed any received Reviewed-by's and Acked-by's given changes in this
   version.
- Added removal of new instances of mem_encrypt_active() usage in powerpc
   arch.
- Based on latest Linux tree to pick up powerpc changes related to the
   mem_encrypt_active() function.

Changes since v1:
- Moved some arch ioremap functions within #ifdef CONFIG_AMD_MEM_ENCRYPT
   in prep for use of prot_guest_has() by TDX.
- Added type includes to the the protected_guest.h header file to prevent
   build errors outside of x86.
- Made amd_prot_guest_has() EXPORT_SYMBOL_GPL
- Used amd_prot_guest_has() in place of checking sme_me_mask in the
   arch/x86/mm/mem_encrypt.c file.

Tom Lendacky (8):
   x86/ioremap: Selectively build arch override encryption functions
   mm: Introduce a function to check for confidential computing features
   x86/sev: Add an x86 version of cc_platform_has()
   powerpc/pseries/svm: Add a powerpc version of cc_platform_has()
   x86/sme: Replace occurrences of sme_active() with cc_platform_has()
   x86/sev: Replace occurrences of sev_active() with cc_platform_has()
   x86/sev: Replace occurrences of sev_es_active() with cc_platform_has()
   treewide: Replace the use of mem_encrypt_active() with
     cc_platform_has()

  arch/Kconfig                                 |  3 +
  arch/powerpc/include/asm/mem_encrypt.h       |  5 --
  arch/powerpc/platforms/pseries/Kconfig       |  1 +
  arch/powerpc/platforms/pseries/Makefile      |  2 +
  arch/powerpc/platforms/pseries/cc_platform.c | 26 ++++++
  arch/powerpc/platforms/pseries/svm.c         |  5 +-
  arch/s390/include/asm/mem_encrypt.h          |  2 -
  arch/x86/Kconfig                             |  1 +
  arch/x86/include/asm/io.h                    |  8 ++
  arch/x86/include/asm/kexec.h                 |  2 +-
  arch/x86/include/asm/mem_encrypt.h           | 14 +---
  arch/x86/kernel/Makefile                     |  3 +
  arch/x86/kernel/cc_platform.c                | 21 +++++
  arch/x86/kernel/crash_dump_64.c              |  4 +-
  arch/x86/kernel/head64.c                     |  4 +-
  arch/x86/kernel/kvm.c                        |  3 +-
  arch/x86/kernel/kvmclock.c                   |  4 +-
  arch/x86/kernel/machine_kexec_64.c           | 19 +++--
  arch/x86/kernel/pci-swiotlb.c                |  9 +-
  arch/x86/kernel/relocate_kernel_64.S         |  2 +-
  arch/x86/kernel/sev.c                        |  6 +-
  arch/x86/kvm/svm/svm.c                       |  3 +-
  arch/x86/mm/ioremap.c                        | 18 ++--
  arch/x86/mm/mem_encrypt.c                    | 57 +++++++------
  arch/x86/mm/mem_encrypt_identity.c           |  3 +-
  arch/x86/mm/pat/set_memory.c                 |  3 +-
  arch/x86/platform/efi/efi_64.c               |  9 +-
  arch/x86/realmode/init.c                     |  8 +-
  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c      |  4 +-
  drivers/gpu/drm/drm_cache.c                  |  4 +-
  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c          |  4 +-
  drivers/gpu/drm/vmwgfx/vmwgfx_msg.c          |  6 +-
  drivers/iommu/amd/init.c                     |  7 +-
  drivers/iommu/amd/iommu.c                    |  3 +-
  drivers/iommu/amd/iommu_v2.c                 |  3 +-
  drivers/iommu/iommu.c                        |  3 +-
  fs/proc/vmcore.c                             |  6 +-
  include/linux/cc_platform.h                  | 88 ++++++++++++++++++++
  include/linux/mem_encrypt.h                  |  4 -
  kernel/dma/swiotlb.c                         |  4 +-
  40 files changed, 267 insertions(+), 114 deletions(-)
  create mode 100644 arch/powerpc/platforms/pseries/cc_platform.c
  create mode 100644 arch/x86/kernel/cc_platform.c
  create mode 100644 include/linux/cc_platform.h


base-commit: 4b93c544e90e2b28326182d31ee008eb80e02074

Reply via email to