grub2/0005-i386-fix-TSC-calibration-using-PIT.patch

28 lines
1.1 KiB
Diff
Raw Normal View History

From a03c1034f6062e69075056c8f31b90e159ce5244 Mon Sep 17 00:00:00 2001
From: Michael Chang <mchang@suse.com>
Date: Tue, 1 Dec 2015 18:49:38 +0300
Subject: [PATCH] i386: fix TSC calibration using PIT
Condition was accidentally reversed, so PIT calibration always failed
when PIT was present and always succeeded when PIT was missing, but in
the latter case resulted in absurdly fast clock.
Reported and tested by Vitaly Kuznetsov <vkuznets@redhat.com>
---
grub-core/kern/i386/tsc_pit.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: grub-2.02~beta2/grub-core/kern/i386/tsc_pit.c
===================================================================
--- grub-2.02~beta2.orig/grub-core/kern/i386/tsc_pit.c
+++ grub-2.02~beta2/grub-core/kern/i386/tsc_pit.c
@@ -49,7 +49,7 @@ grub_pit_wait (void)
| GRUB_PIT_SPK_TMR2,
GRUB_PIT_SPEAKER_PORT);
- if ((grub_inb (GRUB_PIT_SPEAKER_PORT) & GRUB_PIT_SPK_TMR2_LATCH)) {
+ if ((grub_inb (GRUB_PIT_SPEAKER_PORT) & GRUB_PIT_SPK_TMR2_LATCH) == 0x00) {
ret = 1;
/* Wait. */
while ((grub_inb (GRUB_PIT_SPEAKER_PORT) & GRUB_PIT_SPK_TMR2_LATCH) == 0x00);