Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 662d9715 authored by Christoffer Dall's avatar Christoffer Dall
Browse files

arm/arm64: KVM: Kill CONFIG_KVM_ARM_{VGIC,TIMER}



We can definitely decide at run-time whether to use the GIC and timers
or not, and the extra code and data structures that we allocate space
for is really negligable with this config option, so I don't think it's
worth the extra complexity of always having to define stub static
inlines.  The !CONFIG_KVM_ARM_VGIC/TIMER case is pretty much an untested
code path anyway, so we're better off just getting rid of it.

Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent 69ff5c61
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -190,7 +190,6 @@ int main(void)
  DEFINE(VCPU_HxFAR,		offsetof(struct kvm_vcpu, arch.fault.hxfar));
  DEFINE(VCPU_HPFAR,		offsetof(struct kvm_vcpu, arch.fault.hpfar));
  DEFINE(VCPU_HYP_PC,		offsetof(struct kvm_vcpu, arch.fault.hyp_pc));
#ifdef CONFIG_KVM_ARM_VGIC
  DEFINE(VCPU_VGIC_CPU,		offsetof(struct kvm_vcpu, arch.vgic_cpu));
  DEFINE(VGIC_V2_CPU_HCR,	offsetof(struct vgic_cpu, vgic_v2.vgic_hcr));
  DEFINE(VGIC_V2_CPU_VMCR,	offsetof(struct vgic_cpu, vgic_v2.vgic_vmcr));
@@ -200,14 +199,11 @@ int main(void)
  DEFINE(VGIC_V2_CPU_APR,	offsetof(struct vgic_cpu, vgic_v2.vgic_apr));
  DEFINE(VGIC_V2_CPU_LR,	offsetof(struct vgic_cpu, vgic_v2.vgic_lr));
  DEFINE(VGIC_CPU_NR_LR,	offsetof(struct vgic_cpu, nr_lr));
#ifdef CONFIG_KVM_ARM_TIMER
  DEFINE(VCPU_TIMER_CNTV_CTL,	offsetof(struct kvm_vcpu, arch.timer_cpu.cntv_ctl));
  DEFINE(VCPU_TIMER_CNTV_CVAL,	offsetof(struct kvm_vcpu, arch.timer_cpu.cntv_cval));
  DEFINE(KVM_TIMER_CNTVOFF,	offsetof(struct kvm, arch.timer.cntvoff));
  DEFINE(KVM_TIMER_ENABLED,	offsetof(struct kvm, arch.timer.enabled));
#endif
  DEFINE(KVM_VGIC_VCTRL,	offsetof(struct kvm, arch.vgic.vctrl_base));
#endif
  DEFINE(KVM_VTTBR,		offsetof(struct kvm, arch.vttbr));
#endif
  return 0; 
+6 −23
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ if VIRTUALIZATION

config KVM
	bool "Kernel-based Virtual Machine (KVM) support"
	depends on MMU && OF
	select PREEMPT_NOTIFIERS
	select ANON_INODES
	select HAVE_KVM_CPU_RELAX_INTERCEPT
@@ -26,10 +27,11 @@ config KVM
	select KVM_ARM_HOST
	select KVM_GENERIC_DIRTYLOG_READ_PROTECT
	select SRCU
	depends on ARM_VIRT_EXT && ARM_LPAE
	select MMU_NOTIFIER
	select HAVE_KVM_IRQCHIP
	depends on ARM_VIRT_EXT && ARM_LPAE && ARM_ARCH_TIMER
	---help---
	  Support hosting virtualized guest machines. You will also
	  need to select one or more of the processor modules below.
	  Support hosting virtualized guest machines.

	  This module provides access to the hardware capabilities through
	  a character device node named /dev/kvm.
@@ -37,10 +39,7 @@ config KVM
	  If unsure, say N.

config KVM_ARM_HOST
	bool "KVM host support for ARM cpus."
	depends on KVM
	depends on MMU
	select	MMU_NOTIFIER
	bool
	---help---
	  Provides host support for ARM processors.

@@ -55,20 +54,4 @@ config KVM_ARM_MAX_VCPUS
	  large, so only choose a reasonable number that you expect to
	  actually use.

config KVM_ARM_VGIC
	bool "KVM support for Virtual GIC"
	depends on KVM_ARM_HOST && OF
	select HAVE_KVM_IRQCHIP
	default y
	---help---
	  Adds support for a hardware assisted, in-kernel GIC emulation.

config KVM_ARM_TIMER
	bool "KVM support for Architected Timers"
	depends on KVM_ARM_VGIC && ARM_ARCH_TIMER
	select HAVE_KVM_IRQCHIP
	default y
	---help---
	  Adds support for the Architected Timers in virtual machines

endif # VIRTUALIZATION
+4 −4
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ kvm-arm-y = $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o
obj-y += kvm-arm.o init.o interrupts.o
obj-y += arm.o handle_exit.o guest.o mmu.o emulate.o reset.o
obj-y += coproc.o coproc_a15.o coproc_a7.o mmio.o psci.o perf.o
obj-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic.o
obj-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic-v2.o
obj-$(CONFIG_KVM_ARM_VGIC) += $(KVM)/arm/vgic-v2-emul.o
obj-$(CONFIG_KVM_ARM_TIMER) += $(KVM)/arm/arch_timer.o
obj-y += $(KVM)/arm/vgic.o
obj-y += $(KVM)/arm/vgic-v2.o
obj-y += $(KVM)/arm/vgic-v2-emul.o
obj-y += $(KVM)/arm/arch_timer.o
+0 −6
Original line number Diff line number Diff line
@@ -170,9 +170,7 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
{
	int r;
	switch (ext) {
#ifdef CONFIG_KVM_ARM_VGIC
	case KVM_CAP_IRQCHIP:
#endif
	case KVM_CAP_DEVICE_CTRL:
	case KVM_CAP_USER_MEMORY:
	case KVM_CAP_SYNC_MMU:
@@ -829,8 +827,6 @@ static int kvm_vm_ioctl_set_device_addr(struct kvm *kvm,

	switch (dev_id) {
	case KVM_ARM_DEVICE_VGIC_V2:
		if (!IS_ENABLED(CONFIG_KVM_ARM_VGIC))
			return -ENXIO;
		return kvm_vgic_addr(kvm, type, &dev_addr->addr, true);
	default:
		return -ENODEV;
@@ -845,8 +841,6 @@ long kvm_arch_vm_ioctl(struct file *filp,

	switch (ioctl) {
	case KVM_CREATE_IRQCHIP: {
		if (!IS_ENABLED(CONFIG_KVM_ARM_VGIC))
			return -ENXIO;
		return kvm_vgic_create(kvm, KVM_DEV_TYPE_ARM_VGIC_V2);
	}
	case KVM_ARM_SET_DEVICE_ADDR: {
+0 −18
Original line number Diff line number Diff line
@@ -109,22 +109,6 @@ int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs)
	return -EINVAL;
}

#ifndef CONFIG_KVM_ARM_TIMER

#define NUM_TIMER_REGS 0

static int copy_timer_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
{
	return 0;
}

static bool is_timer_reg(u64 index)
{
	return false;
}

#else

#define NUM_TIMER_REGS 3

static bool is_timer_reg(u64 index)
@@ -152,8 +136,6 @@ static int copy_timer_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
	return 0;
}

#endif

static int set_timer_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
{
	void __user *uaddr = (void __user *)(long)reg->addr;
Loading