[Pull Request][Kinetic linux-azure] Azure: Add PCI pass-thru support to Hyper-V Confidential VMs

Tim Gardner tim.gardner at canonical.com
Fri May 5 11:41:09 UTC 2023


BugLink: https://bugs.launchpad.net/bugs/2015369

SRU Justification

[Impact]

Microsoft has requested the inclusion of this patch set:

https://lore.kernel.org/linux-hyperv/1679838727-87310-1-git-send-email-mikelley@microsoft.com/T/

[Regression Potential]

Private memory mappings could be incorrect.

[Test Plan]

Microsoft tested:
Hi Tim, I finished the backport and pushed the patches to my github branch:
https://github.com/dcui/tdx/commits/decui/kinetic-azure-Add-PCI-pass-thru-to-cvm-lp2015369/2023-0504

With the branch, I'm able to start a TDX VM and a SNP VM with a NVMe 
device assigned, and the NVMe device works in both the VMs.

[Other Info]

SF: #00355859

--------------------------------------------------------------------

The following changes since commit a70f4dfe3bda868700187ab3073a566fa9a4135b:

   UBUNTU: Ubuntu-azure-5.19.0-1026.29 (2023-04-24 07:35:21 -0600)

are available in the Git repository at:

   git://git.launchpad.net/~timg-tpi/ubuntu/+source/linux/+git/kinetic 
kinetic-azure-Add-PCI-pass-thru-to-cvm-lp2015369

for you to fetch changes up to 73eb0bf020e6d05f9389f235b974f1845c73840b:

   PCI: hv: Replace retarget_msi_interrupt_params with 
hyperv_pcpu_input_arg (2023-05-05 04:21:17 -0600)

----------------------------------------------------------------
Dexuan Cui (5):
       UBUNTU: SAUCE: Drivers: hv: vmbus: Revert Dexuan's changes to 
hv_ringbuffer_init()
       UBUNTU: SAUCE: Drivers: hv: vmbus: Hardcode MMIO resources in 
vmbus_walk_resources() when necessary
       UBUNTU: SAUCE: x86/hyperv: Support hypercalls for TDX guests (part 2)
       Drivers: hv: vmbus: Remove the per-CPU post_msg_page
       PCI: hv: Replace retarget_msi_interrupt_params with 
hyperv_pcpu_input_arg

Jinank Jain (4):
       x86/hyperv: Add support for detecting nested hypervisor
       Drivers: hv: Setup synic registers in case of nested root partition
       x86/hyperv: Add an interface to do nested hypercalls
       Drivers: hv: Enable vmbus driver for nested root partition

Michael Kelley (13):
       x86/ioremap: Add hypervisor callback for private MMIO mapping in 
coco VM
       x86/hyperv: Reorder code to facilitate future work
       Drivers: hv: Explicitly request decrypted in vmap_pfn() calls
       x86/mm: Handle decryption/re-encryption of bss_decrypted consistently
       init: Call mem_encrypt_init() after Hyper-V hypercall init is done
       x86/hyperv: Change vTOM handling to use standard coco mechanisms
       UBUNTU: SAUCE: swiotlb: Remove bounce buffer remapping for Hyper-V
       UBUNTU: SAUCE: Drivers: hv: vmbus: Remove second mapping of VMBus 
monitor pages
       Drivers: hv: vmbus: Remove second way of mapping ring buffers
       hv_netvsc: Remove second mapping of send and recv buffers
       x86/hyperv: Block root partition functionality in a Confidential VM
       Drivers: hv: Don't remap addresses that are above shared_gpa_boundary
       PCI: hv: Enable PCI pass-thru devices in Confidential VMs

  arch/x86/coco/core.c                |  40 +++++++++++++-----
  arch/x86/hyperv/hv_init.c           |  21 +++-------
  arch/x86/hyperv/ivm.c               | 153 
++++++++++++++++++++++++++++++++++++++------------------------------
  arch/x86/include/asm/coco.h         |   1 -
  arch/x86/include/asm/hyperv-tlfs.h  |  20 ++++++++-
  arch/x86/include/asm/mem_encrypt.h  |   1 +
  arch/x86/include/asm/mshyperv.h     |  88 
++++++++++++++++++++++++---------------
  arch/x86/include/asm/x86_init.h     |   4 ++
  arch/x86/kernel/apic/io_apic.c      |  10 ++++-
  arch/x86/kernel/cpu/mshyperv.c      | 110 
+++++++++++++++++++++++++++++++++++++++----------
  arch/x86/kernel/x86_init.c          |   2 +
  arch/x86/mm/ioremap.c               |   5 +++
  arch/x86/mm/mem_encrypt_amd.c       |  10 +++--
  arch/x86/mm/pat/set_memory.c        |   3 --
  drivers/hv/Kconfig                  |   1 -
  drivers/hv/channel_mgmt.c           |   2 +-
  drivers/hv/connection.c             | 115 
+++++++++++++--------------------------------------
  drivers/hv/hv.c                     |  76 
+++++++++++++---------------------
  drivers/hv/hv_common.c              |  44 +++++++++++++-------
  drivers/hv/hyperv_vmbus.h           |   6 ---
  drivers/hv/ring_buffer.c            |  66 +++++++++--------------------
  drivers/hv/vmbus_drv.c              |  14 ++++++-
  drivers/net/hyperv/hyperv_net.h     |   2 -
  drivers/net/hyperv/netvsc.c         |  48 +---------------------
  drivers/pci/controller/pci-hyperv.c | 280 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------
  include/asm-generic/hyperv-tlfs.h   |  23 +++++++++++
  include/asm-generic/mshyperv.h      |   5 ++-
  include/linux/swiotlb.h             |   2 -
  init/main.c                         |  19 +++++----
  kernel/dma/swiotlb.c                |  47 +--------------------
  30 files changed, 643 insertions(+), 575 deletions(-)
-- 
-----------
Tim Gardner
Canonical, Inc



More information about the kernel-team mailing list