MIPS: KVM: Override guest kernel timer frequency directly
authorJames Hogan <james.hogan@imgtec.com>
Thu, 29 May 2014 09:16:36 +0000 (10:16 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 30 May 2014 11:02:23 +0000 (13:02 +0200)
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: James 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: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/mips/Kconfig
arch/mips/mti-malta/malta-time.c

index 5cd695f905a1c424b02fed524a9169eaaa5d63f3..5e0014e864f355d7c27cfa9d6ccad07dd4fd8e1b 100644 (file)
@@ -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"
index 319009912142414c72862a04adf083136f1cdd45..3778a359f3ad98279fe32f952b725ea521eb6e0a 100644 (file)
@@ -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