mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 22:44:27 +08:00
8e3f5fc104
This starts the process of adding the code to support nested HV-style virtualization. It defines a new H_SET_PARTITION_TABLE hypercall which a nested hypervisor can use to set the base address and size of a partition table in its memory (analogous to the PTCR register). On the host (level 0 hypervisor) side, the H_SET_PARTITION_TABLE hypercall from the guest is handled by code that saves the virtual PTCR value for the guest. This also adds code for creating and destroying nested guests and for reading the partition table entry for a nested guest from L1 memory. Each nested guest has its own shadow LPID value, different in general from the LPID value used by the nested hypervisor to refer to it. The shadow LPID value is allocated at nested guest creation time. Nested hypervisor functionality is only available for a radix guest, which therefore means a radix host on a POWER9 (or later) processor. Signed-off-by: Paul Mackerras <paulus@ozlabs.org> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
143 lines
3.2 KiB
Makefile
143 lines
3.2 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for Kernel-based Virtual Machine module
|
|
#
|
|
|
|
subdir-ccflags-$(CONFIG_PPC_WERROR) := -Werror
|
|
|
|
ccflags-y := -Ivirt/kvm -Iarch/powerpc/kvm
|
|
KVM := ../../../virt/kvm
|
|
|
|
common-objs-y = $(KVM)/kvm_main.o $(KVM)/eventfd.o
|
|
common-objs-$(CONFIG_KVM_VFIO) += $(KVM)/vfio.o
|
|
common-objs-$(CONFIG_KVM_MMIO) += $(KVM)/coalesced_mmio.o
|
|
|
|
CFLAGS_e500_mmu.o := -I.
|
|
CFLAGS_e500_mmu_host.o := -I.
|
|
CFLAGS_emulate.o := -I.
|
|
CFLAGS_emulate_loadstore.o := -I.
|
|
|
|
common-objs-y += powerpc.o emulate_loadstore.o
|
|
obj-$(CONFIG_KVM_EXIT_TIMING) += timing.o
|
|
obj-$(CONFIG_KVM_BOOK3S_HANDLER) += book3s_exports.o
|
|
|
|
AFLAGS_booke_interrupts.o := -I$(objtree)/$(obj)
|
|
|
|
kvm-e500-objs := \
|
|
$(common-objs-y) \
|
|
emulate.o \
|
|
booke.o \
|
|
booke_emulate.o \
|
|
booke_interrupts.o \
|
|
e500.o \
|
|
e500_mmu.o \
|
|
e500_mmu_host.o \
|
|
e500_emulate.o
|
|
kvm-objs-$(CONFIG_KVM_E500V2) := $(kvm-e500-objs)
|
|
|
|
kvm-e500mc-objs := \
|
|
$(common-objs-y) \
|
|
emulate.o \
|
|
booke.o \
|
|
booke_emulate.o \
|
|
bookehv_interrupts.o \
|
|
e500mc.o \
|
|
e500_mmu.o \
|
|
e500_mmu_host.o \
|
|
e500_emulate.o
|
|
kvm-objs-$(CONFIG_KVM_E500MC) := $(kvm-e500mc-objs)
|
|
|
|
kvm-book3s_64-builtin-objs-$(CONFIG_SPAPR_TCE_IOMMU) := \
|
|
book3s_64_vio_hv.o
|
|
|
|
kvm-pr-y := \
|
|
fpu.o \
|
|
emulate.o \
|
|
book3s_paired_singles.o \
|
|
book3s_pr.o \
|
|
book3s_pr_papr.o \
|
|
book3s_emulate.o \
|
|
book3s_interrupts.o \
|
|
book3s_mmu_hpte.o \
|
|
book3s_64_mmu_host.o \
|
|
book3s_64_mmu.o \
|
|
book3s_32_mmu.o
|
|
|
|
kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) += \
|
|
tm.o
|
|
|
|
ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
|
|
kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) += \
|
|
book3s_rmhandlers.o
|
|
endif
|
|
|
|
kvm-hv-y += \
|
|
book3s_hv.o \
|
|
book3s_hv_interrupts.o \
|
|
book3s_64_mmu_hv.o \
|
|
book3s_64_mmu_radix.o \
|
|
book3s_hv_nested.o
|
|
|
|
kvm-hv-$(CONFIG_PPC_TRANSACTIONAL_MEM) += \
|
|
book3s_hv_tm.o
|
|
|
|
kvm-book3s_64-builtin-xics-objs-$(CONFIG_KVM_XICS) := \
|
|
book3s_hv_rm_xics.o book3s_hv_rm_xive.o
|
|
|
|
kvm-book3s_64-builtin-tm-objs-$(CONFIG_PPC_TRANSACTIONAL_MEM) += \
|
|
book3s_hv_tm_builtin.o
|
|
|
|
ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
|
|
kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) += \
|
|
book3s_hv_hmi.o \
|
|
book3s_hv_rmhandlers.o \
|
|
book3s_hv_rm_mmu.o \
|
|
book3s_hv_ras.o \
|
|
book3s_hv_builtin.o \
|
|
$(kvm-book3s_64-builtin-tm-objs-y) \
|
|
$(kvm-book3s_64-builtin-xics-objs-y)
|
|
endif
|
|
|
|
kvm-book3s_64-objs-$(CONFIG_KVM_XICS) += \
|
|
book3s_xics.o
|
|
|
|
kvm-book3s_64-objs-$(CONFIG_KVM_XIVE) += book3s_xive.o
|
|
kvm-book3s_64-objs-$(CONFIG_SPAPR_TCE_IOMMU) += book3s_64_vio.o
|
|
|
|
kvm-book3s_64-module-objs := \
|
|
$(common-objs-y) \
|
|
book3s.o \
|
|
book3s_rtas.o \
|
|
$(kvm-book3s_64-objs-y)
|
|
|
|
kvm-objs-$(CONFIG_KVM_BOOK3S_64) := $(kvm-book3s_64-module-objs)
|
|
|
|
kvm-book3s_32-objs := \
|
|
$(common-objs-y) \
|
|
emulate.o \
|
|
fpu.o \
|
|
book3s_paired_singles.o \
|
|
book3s.o \
|
|
book3s_pr.o \
|
|
book3s_emulate.o \
|
|
book3s_interrupts.o \
|
|
book3s_mmu_hpte.o \
|
|
book3s_32_mmu_host.o \
|
|
book3s_32_mmu.o
|
|
kvm-objs-$(CONFIG_KVM_BOOK3S_32) := $(kvm-book3s_32-objs)
|
|
|
|
kvm-objs-$(CONFIG_KVM_MPIC) += mpic.o
|
|
kvm-objs-$(CONFIG_HAVE_KVM_IRQ_ROUTING) += $(KVM)/irqchip.o
|
|
|
|
kvm-objs := $(kvm-objs-m) $(kvm-objs-y)
|
|
|
|
obj-$(CONFIG_KVM_E500V2) += kvm.o
|
|
obj-$(CONFIG_KVM_E500MC) += kvm.o
|
|
obj-$(CONFIG_KVM_BOOK3S_64) += kvm.o
|
|
obj-$(CONFIG_KVM_BOOK3S_32) += kvm.o
|
|
|
|
obj-$(CONFIG_KVM_BOOK3S_64_PR) += kvm-pr.o
|
|
obj-$(CONFIG_KVM_BOOK3S_64_HV) += kvm-hv.o
|
|
|
|
obj-y += $(kvm-book3s_64-builtin-objs-y)
|