aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-05-30 18:29:21 +0100
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-05-30 18:29:21 +0100
commit29edaf88e2c851f4240a8bc995686dc158db5edd (patch)
treeea3ed72e0d0aba90d5fd2cf1e4b83f8aecd3c11f
parentdc059c5b4927f773b47bc61b50cd43eb75188bd8 (diff)
downloadxen-29edaf88e2c851f4240a8bc995686dc158db5edd.tar.gz
xen-29edaf88e2c851f4240a8bc995686dc158db5edd.tar.bz2
xen-29edaf88e2c851f4240a8bc995686dc158db5edd.zip
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>
-rw-r--r--xen/arch/x86/time.c37
1 files changed, 24 insertions, 13 deletions
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 4ba868f3fe..b4ff7520d9 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -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(void)
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();
}