mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86/time: minor adjustments to init_pit()
For one, "using_pit" shouldn't be set ahead of the function's last (for now: only) error path. Otherwise "clocksource=pit" on the command line can lead to misbehavior when actually taking that error path. And then make an implicit assumption explicit: CALIBRATE_FRAC cannot, for example, simply be changed to 10. The way init_pit() works, the upper bound on the calibration period is about 54ms. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
8593782ace
commit
5e73b2594c
1 file changed
+3
-2
+3
-2
@@ -333,8 +333,6 @@ static s64 __init init_pit(struct platform_timesource *pts)
|
||||
u64 start, end;
|
||||
unsigned long count;
|
||||
|
||||
using_pit = true;
|
||||
|
||||
/* Set the Gate high, disable speaker. */
|
||||
outb((portb & ~0x02) | 0x01, 0x61);
|
||||
|
||||
@@ -344,6 +342,7 @@ static s64 __init init_pit(struct platform_timesource *pts)
|
||||
* (LSB and MSB) to begin countdown.
|
||||
*/
|
||||
#define CALIBRATE_LATCH CALIBRATE_VALUE(CLOCK_TICK_RATE)
|
||||
BUILD_BUG_ON(CALIBRATE_LATCH >> 16);
|
||||
outb(0xb0, PIT_MODE); /* binary, mode 0, LSB/MSB, Ch 2 */
|
||||
outb(CALIBRATE_LATCH & 0xff, PIT_CH2); /* LSB of count */
|
||||
outb(CALIBRATE_LATCH >> 8, PIT_CH2); /* MSB of count */
|
||||
@@ -361,6 +360,8 @@ static s64 __init init_pit(struct platform_timesource *pts)
|
||||
if ( count == 0 )
|
||||
return 0;
|
||||
|
||||
using_pit = true;
|
||||
|
||||
return (end - start) * CALIBRATE_FRAC;
|
||||
}
|
||||
|
||||
|
||||