aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2007-08-01 15:37:17 -0400
committerTony Luck <tony.luck@intel.com>2007-08-01 16:15:14 -0400
commit40d485753423b87239cc16b6c8141ef8792324d9 (patch)
treed2d4413d4520f6cde5908b966ab6f572069fc0c1
parent224685c0d1ca5970364c9f5d4f21ea1aa64c381e (diff)
[IA64] SN2: Fix up sn2_rtc clock
If the sn2_rtc clock is present then it is a must have since sn2_rtc provides a synchronized time source on Altix systems. So elevate the priority to 450. Otherwise the ITC would take precendence. Altix systems currently do not boot because the ITC clocksource is broken. It seems to assume that ITCs are synchronized and as a result nanosleep hangs (may be fixed in a different patch). While we are at it: Remove the sn2_mc definition. The sn2_rtc has a fixed address. No point in reading the address from memory. Removing it avoids touching one cacheline. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
-rw-r--r--arch/ia64/sn/kernel/sn2/timer.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/ia64/sn/kernel/sn2/timer.c b/arch/ia64/sn/kernel/sn2/timer.c
index 19e25d2b64fc..cf67fc562054 100644
--- a/arch/ia64/sn/kernel/sn2/timer.c
+++ b/arch/ia64/sn/kernel/sn2/timer.c
@@ -23,16 +23,14 @@
23 23
24extern unsigned long sn_rtc_cycles_per_second; 24extern unsigned long sn_rtc_cycles_per_second;
25 25
26static void __iomem *sn2_mc;
27
28static cycle_t read_sn2(void) 26static cycle_t read_sn2(void)
29{ 27{
30 return (cycle_t)readq(sn2_mc); 28 return (cycle_t)readq(RTC_COUNTER_ADDR);
31} 29}
32 30
33static struct clocksource clocksource_sn2 = { 31static struct clocksource clocksource_sn2 = {
34 .name = "sn2_rtc", 32 .name = "sn2_rtc",
35 .rating = 300, 33 .rating = 450,
36 .read = read_sn2, 34 .read = read_sn2,
37 .mask = (1LL << 55) - 1, 35 .mask = (1LL << 55) - 1,
38 .mult = 0, 36 .mult = 0,
@@ -58,7 +56,6 @@ ia64_sn_udelay (unsigned long usecs)
58 56
59void __init sn_timer_init(void) 57void __init sn_timer_init(void)
60{ 58{
61 sn2_mc = RTC_COUNTER_ADDR;
62 clocksource_sn2.fsys_mmio = RTC_COUNTER_ADDR; 59 clocksource_sn2.fsys_mmio = RTC_COUNTER_ADDR;
63 clocksource_sn2.mult = clocksource_hz2mult(sn_rtc_cycles_per_second, 60 clocksource_sn2.mult = clocksource_hz2mult(sn_rtc_cycles_per_second,
64 clocksource_sn2.shift); 61 clocksource_sn2.shift);