75 lines
2.4 KiB
Diff
75 lines
2.4 KiB
Diff
# HG changeset 15190 patch
|
|
# User kfraser@localhost.localdomain
|
|
# Node ID c9d66baad22b6f4cfd644b1272a8506372bb2947
|
|
# Parent 2d7d33ac982a0720408d841b13c3b97a2190eae4
|
|
Remove 'hpet_force' option. Replace with 'clocksource' option to allow
|
|
forced selection of platform clocksource, overriding the default
|
|
priority ordering.
|
|
|
|
Usage: clocksource={pit,hpet,cyclone,acpi}
|
|
|
|
Signed-off-by: Keir Fraser <keir@xensource.com>
|
|
|
|
Index: 2007-05-14/xen/arch/x86/time.c
|
|
===================================================================
|
|
--- 2007-05-14.orig/xen/arch/x86/time.c 2007-07-02 10:47:59.000000000 +0200
|
|
+++ 2007-05-14/xen/arch/x86/time.c 2007-07-02 10:48:03.000000000 +0200
|
|
@@ -31,10 +31,9 @@
|
|
#include <asm/hpet.h>
|
|
#include <io_ports.h>
|
|
|
|
-/* opt_hpet_force: If true, force HPET configuration via PCI space. */
|
|
-/* NB. This is a gross hack. Mainly useful for HPET testing. */
|
|
-static int opt_hpet_force = 0;
|
|
-boolean_param("hpet_force", opt_hpet_force);
|
|
+/* opt_clocksource: Force clocksource to one of: pit, hpet, cyclone, acpi. */
|
|
+static char opt_clocksource[10];
|
|
+string_param("clocksource", opt_clocksource);
|
|
|
|
#define EPOCH MILLISECS(1000)
|
|
|
|
@@ -357,15 +356,6 @@ static int init_hpet(void)
|
|
u32 hpet_id, hpet_period, cfg;
|
|
int i;
|
|
|
|
- if ( (hpet_address == 0) && opt_hpet_force )
|
|
- {
|
|
- outl(0x800038a0, 0xcf8);
|
|
- outl(0xff000001, 0xcfc);
|
|
- outl(0x800038a0, 0xcf8);
|
|
- hpet_address = inl(0xcfc) & 0xfffffffe;
|
|
- printk("WARNING: Forcibly enabled HPET at %#lx.\n", hpet_address);
|
|
- }
|
|
-
|
|
if ( hpet_address == 0 )
|
|
return 0;
|
|
|
|
@@ -603,6 +593,27 @@ static void platform_time_calibration(vo
|
|
|
|
static void init_platform_timer(void)
|
|
{
|
|
+ if ( opt_clocksource[0] != '\0' )
|
|
+ {
|
|
+ int rc = -1;
|
|
+
|
|
+ if ( !strcmp(opt_clocksource, "pit") )
|
|
+ rc = (init_pit(), 1);
|
|
+ else if ( !strcmp(opt_clocksource, "hpet") )
|
|
+ rc = init_hpet();
|
|
+ else if ( !strcmp(opt_clocksource, "cyclone") )
|
|
+ rc = init_cyclone();
|
|
+ else if ( !strcmp(opt_clocksource, "acpi") )
|
|
+ rc = init_pmtimer();
|
|
+
|
|
+ if ( rc == 1 )
|
|
+ return;
|
|
+
|
|
+ printk("WARNING: %s clocksource '%s'.\n",
|
|
+ (rc == 0) ? "Could not initialise" : "Unrecognised",
|
|
+ opt_clocksource);
|
|
+ }
|
|
+
|
|
if ( !init_cyclone() && !init_hpet() && !init_pmtimer() )
|
|
init_pit();
|
|
}
|