linux-xiaomi-chiron/include/uapi/linux
Nathan Tempelman 54526d1fd5 KVM: x86: Support KVM VMs sharing SEV context
Add a capability for userspace to mirror SEV encryption context from
one vm to another. On our side, this is intended to support a
Migration Helper vCPU, but it can also be used generically to support
other in-guest workloads scheduled by the host. The intention is for
the primary guest and the mirror to have nearly identical memslots.

The primary benefits of this are that:
1) The VMs do not share KVM contexts (think APIC/MSRs/etc), so they
can't accidentally clobber each other.
2) The VMs can have different memory-views, which is necessary for post-copy
migration (the migration vCPUs on the target need to read and write to
pages, when the primary guest would VMEXIT).

This does not change the threat model for AMD SEV. Any memory involved
is still owned by the primary guest and its initial state is still
attested to through the normal SEV_LAUNCH_* flows. If userspace wanted
to circumvent SEV, they could achieve the same effect by simply attaching
a vCPU to the primary VM.
This patch deliberately leaves userspace in charge of the memslots for the
mirror, as it already has the power to mess with them in the primary guest.

This patch does not support SEV-ES (much less SNP), as it does not
handle handing off attested VMSAs to the mirror.

For additional context, we need a Migration Helper because SEV PSP
migration is far too slow for our live migration on its own. Using
an in-guest migrator lets us speed this up significantly.

Signed-off-by: Nathan Tempelman <natet@google.com>
Message-Id: <20210408223214.2582277-1-natet@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2021-04-21 12:20:02 -04:00
..
android
byteorder
caif
can
cifs
dvb
genwqe
hdlc
hsi
iio
isdn
misc bcm-vk: add bcm_vk UAPI 2021-01-25 18:44:44 +01:00
mmc
netfilter uapi: nfnetlink_cthelper.h: fix userspace compilation error 2021-02-28 00:24:41 +01:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
sched
spi spi: Add SPI_NO_TX/RX support 2020-12-28 14:21:31 +00:00
sunrpc
surface_aggregator platform/surface: Add Surface Aggregator user-space interface 2021-01-07 00:06:39 +01:00
tc_act
tc_ematch
usb usb: ch9: Add USB 3.2 SSP attributes 2021-01-18 18:38:47 +01:00
a.out.h
acct.h
acrn.h virt: acrn: Introduce irqfd 2021-02-09 10:58:19 +01:00
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
batadv_packet.h batman-adv: Drop publication years from copyright info 2021-02-06 09:22:10 +01:00
batman_adv.h batman-adv: Drop publication years from copyright info 2021-02-06 09:22:10 +01:00
baycom.h
bcache.h bcache: introduce BCH_FEATURE_INCOMPAT_LOG_LARGE_BUCKET_SIZE for large bucket 2021-01-09 09:21:03 -07:00
bcm933xx_hcs.h
bfs_fs.h
binfmts.h binfmt_misc: pass binfmt_misc flags to the interpreter 2021-02-15 18:28:30 +01:00
blkpg.h
blktrace_api.h
blkzoned.h
bpf.h bpf: Remove blank line in bpf helper description comment 2021-02-24 17:20:21 +01:00
bpf_common.h
bpf_perf_event.h
bpfilter.h
bpqether.h
bsg.h
bt-bmc.h
btf.h
btrfs.h
btrfs_tree.h
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
ccs.h media: v4l: uapi: ccs: Add CCS controls for shading correction 2021-01-12 17:31:14 +01:00
cdrom.h
cec-funcs.h
cec.h
cfm_bridge.h
cgroupstats.h
chio.h
close_range.h
cm4000_cs.h
cn_proc.h
coda.h
coff.h
connector.h
const.h
coresight-stm.h
cramfs_fs.h
cryptouser.h
cuda.h
cxl_mem.h cxl/mem: Add set of informational commands 2021-02-16 20:36:39 -08:00
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h devlink: Support get and set state of port function 2021-01-22 11:32:08 -08:00
dlm.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-ioctl.h dm: add support for passing through inline crypto support 2021-02-11 09:45:25 -05:00
dm-log-userspace.h
dma-buf.h
dma-heap.h
dn.h
dns_resolver.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h
errno.h
errqueue.h
erspan.h
ethtool.h
ethtool_netlink.h ethtool: Extend link modes settings uAPI with lanes 2021-02-03 18:37:28 -08:00
eventpoll.h
f2fs.h
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h
fiemap.h
filter.h
firewire-cdev.h include/linux: remove repeated words 2021-02-26 09:41:03 -08:00
firewire-constants.h
fou.h
fpga-dfl.h
fs.h
fscrypt.h
fsi.h
fsl_hypervisor.h
fsl_mc.h bus: fsl-mc: add fsl-mc userspace support 2021-01-27 15:13:52 +01:00
fsmap.h
fsverity.h fs-verity: support reading signature with ioctl 2021-02-07 14:51:19 -08:00
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h
gfs2_ondisk.h gfs2: Add trusted xattr support 2021-02-08 13:01:24 +01:00
gpio.h gpio: uapi: use the preferred SPDX license identifier 2021-02-15 11:43:33 +01:00
gsmmux.h
gtp.h Revert "GTP: add support for flow based tunneling API" 2021-02-04 09:29:57 -08:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
i2c-dev.h i2c: remove licence boilerplate from i2c-dev UAPI header 2021-01-22 09:58:57 +01:00
i2c.h i2c: uapi: add macro to describe support for all SMBus transfers 2021-01-22 09:59:00 +01:00
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
idxd.h
if.h
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h bonding: add a vlan+srcmac tx hashing option 2021-01-19 19:30:32 -08:00
if_bridge.h
if_cablemodem.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_hippi.h
if_infiniband.h
if_link.h Revert "GTP: add support for flow based tunneling API" 2021-02-04 09:29:57 -08:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h Revert "GTP: add support for flow based tunneling API" 2021-02-04 09:29:57 -08:00
if_vlan.h
if_x25.h
if_xdp.h
ife.h
igmp.h
ila.h
in.h
in6.h
in_route.h
inet_diag.h
inotify.h
input-event-codes.h
input.h include/linux: remove repeated words 2021-02-26 09:41:03 -08:00
io_uring.h io_uring: flag new native workers with IORING_FEAT_NATIVE_WORKERS 2021-02-23 20:32:11 -07:00
ioctl.h
iommu.h
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h
ipmi.h
ipmi_bmc.h
ipmi_msgdefs.h
ipsec.h
ipv6.h net: allow user to set metric on default route learned via Router Advertisement 2021-01-26 18:39:45 -08:00
ipv6_route.h
ipx.h
irqnr.h
iso_fs.h
isst_if.h
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h
kfd_ioctl.h
kvm.h KVM: x86: Support KVM VMs sharing SEV context 2021-04-21 12:20:02 -04:00
kvm_para.h
l2tp.h net: l2tp: reduce log level of messages in receive path, add counter instead 2021-03-03 16:55:02 -08:00
libc-compat.h
lightnvm.h
limits.h
lirc.h
llc.h
loop.h
lp.h
lwtunnel.h
magic.h
major.h
map_to_7segment.h uapi: map_to_7segment: Update example in documentation 2021-02-09 12:27:32 +01:00
matroxfb.h
max2175.h
mdio.h
media-bus-format.h
media.h media: uapi: Add an entity type for Image Signal Processors 2021-01-12 17:05:37 +01:00
mei.h
membarrier.h
memfd.h
mempolicy.h numa balancing: migrate on fault among multiple bound nodes 2021-02-24 13:38:34 -08:00
meye.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mount.h fs: introduce MOUNT_ATTR_IDMAP 2021-01-24 14:43:45 +01:00
mpls.h
mpls_iptunnel.h
mptcp.h mptcp: add local addr info in mptcp_info 2021-02-15 15:09:14 -08:00
mqueue.h
mroute.h
mroute6.h
mrp_bridge.h net: mrp: move struct definitions out of uapi 2021-01-23 12:38:42 -08:00
msdos_fs.h
msg.h
mtio.h
n_r3964.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h
neighbour.h
net.h
net_dropmon.h
net_namespace.h
net_tstamp.h
netconf.h
netdevice.h
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netlink_diag.h
netrom.h
nexthop.h
nfc.h
nfs.h
nfs2.h
nfs3.h NFSD: Update the SETATTR3args decoder to use struct xdr_stream 2021-01-25 09:36:25 -05:00
nfs4.h
nfs4_mount.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nitro_enclaves.h
nl80211.h nl80211: add documentation for HT/VHT/HE disable attributes 2021-02-12 11:00:07 +01:00
nsfs.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openat2.h fs: expose LOOKUP_CACHED through openat2() RESOLVE_CACHED 2021-01-04 11:42:26 -05:00
openvswitch.h
packet_diag.h
param.h
parport.h
patchkey.h
pci.h
pci_regs.h
pcitest.h
perf_event.h The performance event updates for v5.12 are: 2021-02-21 12:49:32 -08:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pidfd.h
pkt_cls.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-02-16 17:51:13 -08:00
pkt_sched.h sch_htb: Hierarchical QoS hardware offload 2021-01-22 20:41:29 -08:00
pktcdvd.h
pmu.h
poll.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
ppdev.h
ppp-comp.h
ppp-ioctl.h ppp: Fix PPPIOCUNBRIDGECHAN request number 2020-12-21 17:36:48 -08:00
ppp_defs.h
pps.h
pr.h
prctl.h entry: Use different define for selector variable in SUD 2021-02-06 00:21:42 +01:00
psample.h
psci.h
psp-sev.h
ptp_clock.h
ptrace.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
raw.h
rds.h
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
remoteproc_cdev.h
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
rkisp1-config.h media: rockchip: rkisp1: extend uapi array sizes 2021-01-28 11:31:43 +01:00
romfs_fs.h
rose.h
route.h
rpl.h uapi: fix big endian definition of ipv6_rpl_sr_hdr 2021-01-25 15:14:16 -08:00
rpl_iptunnel.h
rpmsg.h
rpmsg_types.h
rseq.h
rtc.h rtc: introduce features bitfield 2021-01-16 23:19:26 +01:00
rtnetlink.h rtnetlink: Add RTM_F_OFFLOAD_FAILED flag 2021-02-08 16:47:02 -08:00
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h
seccomp.h
securebits.h
sed-opal.h
seg6.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
selinux_netlink.h
sem.h
serial.h
serial_core.h tty: serial: Drop unused efm32 serial driver 2021-01-15 17:14:49 +01:00
serial_reg.h
serio.h
shm.h
signal.h
signalfd.h
smc.h
smc_diag.h
smiapp.h
snmp.h
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h
stm.h
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h net: allow user to set metric on default route learned via Router Advertisement 2021-01-26 18:39:45 -08:00
sysinfo.h
target_core_user.h
taskstats.h
tcp.h tcp: Sanitize CMSG flags and reserved args in tcp_zerocopy_receive. 2021-02-11 18:25:05 -08:00
tcp_metrics.h
tee.h tee: fix some comment typos in header files 2021-02-02 14:50:15 +01:00
termios.h tty: drop termiox user definitions 2021-01-07 16:17:32 +01:00
thermal.h
time.h
time_types.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
tipc_netlink.h
tipc_sockets_diag.h
tls.h
toshiba.h
tty.h
tty_flags.h
types.h
udf_fs_i.h
udmabuf.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
um_timetravel.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: v4l2-ctrl: Add base layer priority id control. 2021-01-14 13:54:00 +01:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h media: v4l2-subdev.h: BIT() is not available in userspace 2021-01-26 19:14:33 +01:00
vbox_err.h
vbox_vmmdev_types.h
vboxguest.h
vdpa.h vdpa: Enable user to query vdpa device info 2021-02-23 07:52:56 -05:00
veth.h
vfio.h vfio: interfaces to update vaddr 2021-02-01 13:20:06 -07:00
vfio_ccw.h
vfio_zdev.h
vhost.h
vhost_types.h
videodev2.h
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_crypto.h
virtio_fs.h
virtio_gpu.h
virtio_ids.h uapi: virtio_ids: add missing device type IDs from OASIS spec 2020-12-18 16:14:31 -05:00
virtio_input.h
virtio_iommu.h
virtio_mem.h
virtio_mmio.h
virtio_net.h
virtio_pci.h
virtio_pmem.h
virtio_ring.h
virtio_rng.h
virtio_scsi.h
virtio_types.h
virtio_vsock.h
vm_sockets.h
vm_sockets_diag.h
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
watch_queue.h
watchdog.h
wireguard.h
wireless.h
wmi.h
x25.h
xattr.h
xdp_diag.h
xfrm.h
xilinx-v4l2-controls.h
zorro.h
zorro_ids.h