]> git.dujemihanovic.xyz Git - linux.git/commit
PCI: hv: Enable PCI pass-thru devices in Confidential VMs
authorMichael Kelley <mikelley@microsoft.com>
Sun, 26 Mar 2023 13:52:07 +0000 (06:52 -0700)
committerWei Liu <wei.liu@kernel.org>
Mon, 17 Apr 2023 19:19:04 +0000 (19:19 +0000)
commit2c6ba4216844ca7918289b49ed5f3f7138ee2402
treeddb51ac3aee357de90cc236adec1efacea267b57
parent6afd9dc1a4b158456c072580f0851b4dbaaa02f1
PCI: hv: Enable PCI pass-thru devices in Confidential VMs

For PCI pass-thru devices in a Confidential VM, Hyper-V requires
that PCI config space be accessed via hypercalls.  In normal VMs,
config space accesses are trapped to the Hyper-V host and emulated.
But in a confidential VM, the host can't access guest memory to
decode the instruction for emulation, so an explicit hypercall must
be used.

Add functions to make the new MMIO read and MMIO write hypercalls.
Update the PCI config space access functions to use the hypercalls
when such use is indicated by Hyper-V flags.  Also, set the flag to
allow the Hyper-V PCI driver to be loaded and used in a Confidential
VM (a.k.a., "Isolation VM").  The driver has previously been hardened
against a malicious Hyper-V host[1].

[1] https://lore.kernel.org/all/20220511223207.3386-2-parri.andrea@gmail.com/

Co-developed-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Link: https://lore.kernel.org/r/1679838727-87310-13-git-send-email-mikelley@microsoft.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
arch/x86/include/asm/hyperv-tlfs.h
drivers/hv/channel_mgmt.c
drivers/pci/controller/pci-hyperv.c
include/asm-generic/hyperv-tlfs.h