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

Commit eda3d33c authored by James Hogan's avatar James Hogan Committed by Paolo Bonzini
Browse files

MIPS: KVM: Override guest kernel timer frequency directly



The KVM_HOST_FREQ Kconfig symbol was used by KVM guest kernels to
override the timer frequency calculation to a value based on the host
frequency. Now that the KVM timer emulation is implemented independent
of the host timer frequency and defaults to 100MHz, adjust the working
of CONFIG_KVM_HOST_FREQ to match.

The Kconfig symbol now specifies the guest timer frequency directly, and
has been renamed accordingly to KVM_GUEST_TIMER_FREQ. It now defaults to
100MHz too and the help text is updated to make it clear that a zero
value will allow the normal timer frequency calculation to take place
(based on the emulated RTC).

Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Gleb Natapov <gleb@kernel.org>
Cc: kvm@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: Sanjay Lal <sanjayl@kymasys.com>
Acked-by: default avatarRalf Baechle <ralf@linux-mips.org>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent e30492bb
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1756,14 +1756,14 @@ config KVM_GUEST
	help
	  Select this option if building a guest kernel for KVM (Trap & Emulate) mode

config KVM_HOST_FREQ
	int "KVM Host Processor Frequency (MHz)"
config KVM_GUEST_TIMER_FREQ
	int "Count/Compare Timer Frequency (MHz)"
	depends on KVM_GUEST
	default 500
	default 100
	help
	  Select this option if building a guest kernel for KVM to skip
	  RTC emulation when determining guest CPU Frequency.  Instead, the guest
	  processor frequency is automatically derived from the host frequency.
	  Set this to non-zero if building a guest kernel for KVM to skip RTC
	  emulation when determining guest CPU Frequency. Instead, the guest's
	  timer frequency is specified directly.

choice
	prompt "Kernel page size"
+2 −12
Original line number Diff line number Diff line
@@ -74,18 +74,8 @@ static void __init estimate_frequencies(void)
	unsigned int giccount = 0, gicstart = 0;
#endif

#if defined (CONFIG_KVM_GUEST) && defined (CONFIG_KVM_HOST_FREQ)
	unsigned int prid = read_c0_prid() & (PRID_COMP_MASK | PRID_IMP_MASK);

	/*
	 * XXXKYMA: hardwire the CPU frequency to Host Freq/4
	 */
	count = (CONFIG_KVM_HOST_FREQ * 1000000) >> 3;
	if ((prid != (PRID_COMP_MIPS | PRID_IMP_20KC)) &&
	    (prid != (PRID_COMP_MIPS | PRID_IMP_25KF)))
		count *= 2;

	mips_hpt_frequency = count;
#if defined(CONFIG_KVM_GUEST) && CONFIG_KVM_GUEST_TIMER_FREQ
	mips_hpt_frequency = CONFIG_KVM_GUEST_TIMER_FREQ * 1000000;
	return;
#endif