[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] ix86: don't even register bogus clock sources


  • To: xen-changelog@xxxxxxxxxxxxxxxxxxx
  • From: Xen patchbot-linux-2.6.18-xen <patchbot@xxxxxxx>
  • Date: Thu, 13 Nov 2014 14:22:02 +0000
  • Delivery-date: Thu, 13 Nov 2014 14:22:10 +0000
  • List-id: "Change log for Mercurial \(receive only\)" <xen-changelog.lists.xen.org>

# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxx>
# Date 1415888232 -3600
# Node ID 49e06ed72c53a183378ec6efc97caf26846678e7
# Parent  78e400792c76811445c6a80dfebdbded116f1aad
ix86: don't even register bogus clock sources

Neither the raw TSC nor the PIT are suitable clock sources under Xen -
don't even build the respective source files. The few things we need
from them can be put in time-xen.c.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
---


diff -r 78e400792c76 -r 49e06ed72c53 arch/i386/kernel/Makefile
--- a/arch/i386/kernel/Makefile Thu Nov 13 14:55:41 2014 +0100
+++ b/arch/i386/kernel/Makefile Thu Nov 13 15:17:12 2014 +0100
@@ -84,5 +84,5 @@ SYSCFLAGS_vsyscall-syms.o = -r
 early_printk-y            += ../../x86_64/kernel/early_printk.o
 k8-y                      += ../../x86_64/kernel/k8.o
 
-disabled-obj-$(CONFIG_XEN) := i8237.o i8259.o reboot.o smpboot.o
+disabled-obj-$(CONFIG_XEN) := i8237.o i8253.o i8259.o reboot.o smpboot.o tsc.o
 %/head.o %/head.s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :=
diff -r 78e400792c76 -r 49e06ed72c53 arch/i386/kernel/time-xen.c
--- a/arch/i386/kernel/time-xen.c       Thu Nov 13 14:55:41 2014 +0100
+++ b/arch/i386/kernel/time-xen.c       Thu Nov 13 15:17:12 2014 +0100
@@ -75,6 +75,9 @@
 
 #if defined (__i386__)
 #include <asm/i8259.h>
+#include <asm/i8253.h>
+DEFINE_SPINLOCK(i8253_lock);
+EXPORT_SYMBOL(i8253_lock);
 #endif
 
 int pit_latch_buggy;              /* extern */
@@ -552,11 +555,15 @@ static int set_rtc_mmss(unsigned long no
        return retval;
 }
 
+#ifdef CONFIG_X86_64
 /* monotonic_clock(): returns # of nanoseconds passed since time_init()
  *             Note: This function is required to return accurate
  *             time even in the absence of multiple timer ticks.
  */
 unsigned long long monotonic_clock(void)
+#else
+unsigned long long sched_clock(void)
+#endif
 {
        unsigned int cpu = get_cpu();
        struct shadow_time_info *shadow = &per_cpu(shadow_time, cpu);
@@ -576,9 +583,9 @@ unsigned long long monotonic_clock(void)
 
        return time;
 }
+#ifdef CONFIG_X86_64
 EXPORT_SYMBOL(monotonic_clock);
 
-#ifdef __x86_64__
 unsigned long long sched_clock(void)
 {
        return monotonic_clock();
@@ -751,6 +758,27 @@ irqreturn_t timer_interrupt(int irq, voi
        return IRQ_HANDLED;
 }
 
+#ifndef CONFIG_X86_64
+
+void __init tsc_init(void)
+{
+       init_cpu_khz();
+       printk(KERN_INFO "Xen reported: %u.%03u MHz processor.\n",
+              cpu_khz / 1000, cpu_khz % 1000);
+
+       use_tsc_delay();
+}
+
+void mark_tsc_unstable(void)
+{
+#ifndef CONFIG_XEN /* XXX Should tell the hypervisor about this fact. */
+       tsc_unstable = 1;
+#endif
+}
+EXPORT_SYMBOL_GPL(mark_tsc_unstable);
+
+#endif
+
 static void init_missing_ticks_accounting(unsigned int cpu)
 {
        struct vcpu_register_runstate_memory_area area;
@@ -939,11 +967,11 @@ void __init time_init(void)
 
        update_wallclock();
 
+#ifdef CONFIG_X86_64
        init_cpu_khz();
        printk(KERN_INFO "Xen reported: %u.%03u MHz processor.\n",
               cpu_khz / 1000, cpu_khz % 1000);
 
-#if defined(__x86_64__)
        vxtime.mode = VXTIME_TSC;
        vxtime.quot = (1000000L << 32) / vxtime_hz;
        vxtime.tsc_quot = (1000L << 32) / cpu_khz;
diff -r 78e400792c76 -r 49e06ed72c53 include/asm-i386/mach-xen/asm/processor.h
--- a/include/asm-i386/mach-xen/asm/processor.h Thu Nov 13 14:55:41 2014 +0100
+++ b/include/asm-i386/mach-xen/asm/processor.h Thu Nov 13 15:17:12 2014 +0100
@@ -23,7 +23,7 @@
 #include <xen/interface/physdev.h>
 
 /* flag for disabling the tsc */
-extern int tsc_disable;
+#define tsc_disable 0
 
 struct desc_struct {
        unsigned long a,b;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.