On 10.10.2014 23:23, Colin Watson wrote:
> On Fri, Oct 10, 2014 at 04:44:39PM +0000, Rigoberto Corujo wrote:
>> I attached a patch to bug #42944 and would like to know how I would go about 
>> getting it committed to the source tree?
>> https://savannah.gnu.org/bugs/?42944
> 
> I'd suggest attaching the patch to a mail here (not encased in a zip
> file).  It's usually easier to get public review that way.
> 
I don't like to use EFI timers if we can avoid them, they've been known
to hang. Attached is a patch to use pmtimer for calibration
=== modified file 'grub-core/Makefile.am'
--- grub-core/Makefile.am	2012-06-11 18:44:38 +0000
+++ grub-core/Makefile.am	2012-06-14 18:52:24 +0000
@@ -88,29 +88,33 @@
 KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
 KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/pxe.h
 KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/int.h
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
 endif
 
 if COND_i386_efi
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
 endif
 
 if COND_i386_coreboot
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
 KERNEL_HEADER_FILES += $(top_builddir)/include/grub/i386/pc/int.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
 endif
 
 if COND_i386_multiboot
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
 KERNEL_HEADER_FILES += $(top_builddir)/include/grub/i386/pc/int.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
 endif
 
 if COND_i386_qemu
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
 endif
 
 if COND_i386_ieee1275
@@ -118,19 +122,21 @@
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
 endif
 
 if COND_x86_64_efi
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
-KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/tsc.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/pci.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
 endif
 
 if COND_ia64_efi
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/acpi.h
 endif
 
 if COND_mips

=== modified file 'grub-core/Makefile.core.def'
--- grub-core/Makefile.core.def	2012-06-11 18:44:38 +0000
+++ grub-core/Makefile.core.def	2012-06-14 18:53:29 +0000
@@ -127,18 +127,26 @@
   i386_pc = term/i386/vga_common.c;
 
   x86 = kern/i386/pit.c;
+  x86 = kern/i386/tsc.c;
+
+  efi = kern/acpi.c;
+  i386_coreboot = kern/acpi.c;
+  i386_multiboot = kern/acpi.c;
+  i386_pc = kern/acpi.c;
+  i386_pc = kern/i386/pc/acpi.c;
+  i386_coreboot = kern/i386/pc/acpi.c;
+  i386_multiboot = kern/i386/pc/acpi.c;
 
   efi = disk/efi/efidisk.c;
   efi = kern/efi/efi.c;
   efi = kern/efi/init.c;
   efi = kern/efi/mm.c;
   efi = term/efi/console.c;
+  efi = kern/efi/acpi.c;
 
-  i386_efi = kern/i386/tsc.c;
   i386_efi = kern/i386/efi/init.c;
   i386_efi = bus/pci.c;
 
-  x86_64_efi = kern/i386/tsc.c;
   x86_64_efi = kern/x86_64/dl.c;
   x86_64_efi = kern/x86_64/efi/callwrap.S;
   x86_64_efi = kern/i386/efi/init.c;
@@ -151,19 +159,15 @@
 
   i386_pc = kern/i386/pc/init.c;
   i386_pc = kern/i386/pc/mmap.c;
-  i386_pc = kern/i386/tsc.c;
   i386_pc = term/i386/pc/console.c;
 
   i386_qemu = bus/pci.c;
   i386_qemu = kern/vga_init.c;
   i386_qemu = kern/i386/qemu/mmap.c;
-  i386_qemu = kern/i386/tsc.c;
 
   i386_coreboot = kern/i386/coreboot/mmap.c;
-  i386_coreboot = kern/i386/tsc.c;
 
   i386_multiboot = kern/i386/multiboot_mmap.c;
-  i386_multiboot = kern/i386/tsc.c;
 
   mips = kern/mips/cache.S;
   mips = kern/mips/dl.c;
@@ -526,10 +530,6 @@
   name = acpi;
 
   common = commands/acpi.c;
-  efi = commands/efi/acpi.c;
-  i386_pc = commands/i386/pc/acpi.c;
-  i386_coreboot = commands/i386/pc/acpi.c;
-  i386_multiboot = commands/i386/pc/acpi.c;
 
   enable = efi;
   enable = i386_pc;

=== modified file 'grub-core/commands/acpi.c'
--- grub-core/commands/acpi.c	2012-03-06 14:03:33 +0000
+++ grub-core/commands/acpi.c	2012-06-14 19:10:26 +0000
@@ -61,18 +61,6 @@
   {0, 0, 0, 0, 0, 0}
 };
 
-/* Simple checksum by summing all bytes. Used by ACPI and SMBIOS. */
-grub_uint8_t
-grub_byte_checksum (void *base, grub_size_t size)
-{
-  grub_uint8_t *ptr;
-  grub_uint8_t ret = 0;
-  for (ptr = (grub_uint8_t *) base; ptr < ((grub_uint8_t *) base) + size;
-       ptr++)
-    ret += *ptr;
-  return ret;
-}
-
 /* rev1 is 1 if ACPIv1 is to be generated, 0 otherwise.
    rev2 contains the revision of ACPIv2+ to generate or 0 if none. */
 static int rev1, rev2;

=== modified file 'grub-core/commands/acpihalt.c'
--- grub-core/commands/acpihalt.c	2012-03-03 11:59:28 +0000
+++ grub-core/commands/acpihalt.c	2012-06-14 19:00:14 +0000
@@ -302,56 +302,35 @@
 void
 grub_acpi_halt (void)
 {
-  struct grub_acpi_rsdp_v20 *rsdp2;
-  struct grub_acpi_rsdp_v10 *rsdp1;
-      struct grub_acpi_table_header *rsdt;
-      grub_uint32_t *entry_ptr;
-
-  rsdp2 = grub_acpi_get_rsdpv2 ();
-  if (rsdp2)
-    rsdp1 = &(rsdp2->rsdpv1);
-  else
-    rsdp1 = grub_acpi_get_rsdpv1 ();
-  grub_dprintf ("acpi", "rsdp1=%p\n", rsdp1);
-  if (!rsdp1)
-    return;
-
-  rsdt = (struct grub_acpi_table_header *) (grub_addr_t) rsdp1->rsdt_addr;
-  for (entry_ptr = (grub_uint32_t *) (rsdt + 1);
-       entry_ptr < (grub_uint32_t *) (((grub_uint8_t *) rsdt)
-				      + rsdt->length);
-       entry_ptr++)
-    {
-      if (grub_memcmp ((void *) (grub_addr_t) *entry_ptr, "FACP", 4) == 0)
-	{
-	  grub_uint32_t port;
-	  struct grub_acpi_fadt *fadt
-	    = ((struct grub_acpi_fadt *) (grub_addr_t) *entry_ptr);
-	  struct grub_acpi_table_header *dsdt
-	    = (struct grub_acpi_table_header *) (grub_addr_t) fadt->dsdt_addr;
-	  int sleep_type = -1;
-
-	  port = fadt->pm1a;
-
-	  grub_dprintf ("acpi", "PM1a port=%x\n", port);
-
-	  if (grub_memcmp (dsdt->signature, "DSDT",
-			   sizeof (dsdt->signature)) != 0)
-	    break;
-
-	  sleep_type = get_sleep_type ((grub_uint8_t *) dsdt,
-				       (grub_uint8_t *) dsdt + dsdt->length);
-
-	  if (sleep_type < 0 || sleep_type >= 8)
-	    break;
-
-	  grub_dprintf ("acpi", "SLP_TYP = %d, port = 0x%x\n",
-			sleep_type, port);
-
-	  grub_outw (GRUB_ACPI_SLP_EN
-	  	     | (sleep_type << GRUB_ACPI_SLP_TYP_OFFSET), port & 0xffff);
-	}
-    }
+  struct grub_acpi_fadt *fadt;
+  grub_uint32_t port;
+  struct grub_acpi_table_header *dsdt;
+  int sleep_type = -1;
+
+  fadt = grub_acpi_find_fadt ();
+  if (!fadt)
+    return;
+
+  dsdt = (struct grub_acpi_table_header *) (grub_addr_t) fadt->dsdt_addr;
+  port = fadt->pm1a;
+
+  grub_dprintf ("acpi", "PM1a port=%x\n", port);
+
+  if (grub_memcmp (dsdt->signature, "DSDT",
+		   sizeof (dsdt->signature)) != 0)
+    return;
+
+  sleep_type = get_sleep_type ((grub_uint8_t *) dsdt,
+			       (grub_uint8_t *) dsdt + dsdt->length);
+
+  if (sleep_type < 0 || sleep_type >= 8)
+    return;
+
+  grub_dprintf ("acpi", "SLP_TYP = %d, port = 0x%x\n",
+		sleep_type, port);
+
+  grub_outw (GRUB_ACPI_SLP_EN
+	     | (sleep_type << GRUB_ACPI_SLP_TYP_OFFSET), port & 0xffff);
 
   grub_millisleep (1500);
 

=== added file 'grub-core/kern/acpi.c'
--- grub-core/kern/acpi.c	1970-01-01 00:00:00 +0000
+++ grub-core/kern/acpi.c	2012-06-14 19:10:31 +0000
@@ -0,0 +1,119 @@
+/* 
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2012  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/types.h>
+#include <grub/time.h>
+#include <grub/misc.h>
+#include <grub/acpi.h>
+
+static void *
+grub_acpi_rsdt_find_table (struct grub_acpi_table_header *rsdt, const char *sig)
+{
+  grub_size_t s;
+  grub_uint32_t *ptr;
+
+  if (!rsdt)
+    return 0;
+
+  if (grub_memcmp (rsdt->signature, "RSDT", 4) != 0)
+    return 0;
+
+  ptr = (grub_uint32_t *) (rsdt + 1);
+  s = (rsdt->length - sizeof (*rsdt)) / sizeof (grub_uint32_t);
+  for (; s; s--, ptr++)
+    {
+      struct grub_acpi_table_header *tbl;
+      tbl = (struct grub_acpi_table_header *) (grub_addr_t) *ptr;
+      if (grub_memcmp (tbl->signature, sig, 4) == 0)
+	return tbl;
+    }
+  return 0;
+}
+
+static void *
+grub_acpi_xsdt_find_table (struct grub_acpi_table_header *xsdt, const char *sig)
+{
+  grub_size_t s;
+  grub_uint64_t *ptr;
+
+  if (!xsdt)
+    return 0;
+
+  if (grub_memcmp (xsdt->signature, "XSDT", 4) != 0)
+    return 0;
+
+  ptr = (grub_uint64_t *) (xsdt + 1);
+  s = (xsdt->length - sizeof (*xsdt)) / sizeof (grub_uint32_t);
+  for (; s; s--, ptr++)
+    {
+      struct grub_acpi_table_header *tbl;
+#if GRUB_CPU_SIZEOF_VOID_P != 8
+      if (*ptr >> 32)
+	continue;
+#endif
+      tbl = (struct grub_acpi_table_header *) (grub_addr_t) *ptr;
+      if (grub_memcmp (tbl->signature, sig, 4) == 0)
+	return tbl;
+    }
+  return 0;
+}
+
+struct grub_acpi_fadt *
+grub_acpi_find_fadt (void)
+{
+  struct grub_acpi_fadt *fadt = 0;
+  struct grub_acpi_rsdp_v10 *rsdpv1;
+  struct grub_acpi_rsdp_v20 *rsdpv2;
+  rsdpv1 = grub_machine_acpi_get_rsdpv1 ();
+  if (rsdpv1)
+    fadt = grub_acpi_rsdt_find_table ((struct grub_acpi_table_header *)
+				      (grub_addr_t) rsdpv1->rsdt_addr,
+				      GRUB_ACPI_FADT_SIGNATURE);
+  if (fadt)
+    return fadt;
+  rsdpv2 = grub_machine_acpi_get_rsdpv2 ();
+  if (rsdpv2)
+    fadt = grub_acpi_rsdt_find_table ((struct grub_acpi_table_header *)
+				      (grub_addr_t) rsdpv2->rsdpv1.rsdt_addr,
+				      GRUB_ACPI_FADT_SIGNATURE);
+  if (fadt)
+    return fadt;
+  if (rsdpv2
+#if GRUB_CPU_SIZEOF_VOID_P != 8
+      && !(rsdpv2->xsdt_addr >> 32)
+#endif
+      )
+    fadt = grub_acpi_xsdt_find_table ((struct grub_acpi_table_header *)
+				      (grub_addr_t) rsdpv2->xsdt_addr,
+				      GRUB_ACPI_FADT_SIGNATURE);
+  if (fadt)
+    return fadt;
+  return 0;
+}
+
+/* Simple checksum by summing all bytes. Used by ACPI and SMBIOS. */
+grub_uint8_t
+grub_byte_checksum (void *base, grub_size_t size)
+{
+  grub_uint8_t *ptr;
+  grub_uint8_t ret = 0;
+  for (ptr = (grub_uint8_t *) base; ptr < ((grub_uint8_t *) base) + size;
+       ptr++)
+    ret += *ptr;
+  return ret;
+}

=== renamed file 'grub-core/commands/efi/acpi.c' => 'grub-core/kern/efi/acpi.c'
=== renamed file 'grub-core/commands/i386/pc/acpi.c' => 'grub-core/kern/i386/pc/acpi.c'
=== modified file 'grub-core/kern/i386/tsc.c'
--- grub-core/kern/i386/tsc.c	2012-06-11 18:44:38 +0000
+++ grub-core/kern/i386/tsc.c	2012-06-14 22:56:04 +0000
@@ -1,6 +1,6 @@
 /* kern/i386/tsc.c - x86 TSC time source implementation
  * Requires Pentium or better x86 CPU that supports the RDTSC instruction.
- * This module uses the RTC (via grub_get_rtc()) to calibrate the TSC to
+ * This module uses the PIT to calibrate the TSC to
  * real time.
  *
  *  GRUB  --  GRand Unified Bootloader
@@ -25,23 +25,60 @@
 #include <grub/misc.h>
 #include <grub/i386/tsc.h>
 #include <grub/i386/pit.h>
+#include <grub/i386/io.h>
+#include <grub/acpi.h>
 
 /* This defines the value TSC had at the epoch (that is, when we calibrated it). */
 static grub_uint64_t tsc_boot_time;
 
 /* Calibrated TSC rate.  (In TSC ticks per millisecond.) */
-static grub_uint64_t tsc_ticks_per_ms;
-
-
-grub_uint64_t
+grub_uint64_t grub_tsc_ticks_per_ms;
+
+
+static grub_uint64_t
 grub_tsc_get_time_ms (void)
 {
-  return tsc_boot_time + grub_divmod64 (grub_get_tsc (), tsc_ticks_per_ms, 0);
-}
-
-
-/* How many RTC ticks to use for calibration loop. (>= 1) */
-#define CALIBRATION_TICKS 2
+  return grub_divmod64 (grub_get_tsc () - tsc_boot_time,
+			grub_tsc_ticks_per_ms, 0);
+}
+
+static int
+grub_pmtimer_tsc_calibrate (void)
+{
+  grub_uint32_t start;
+  grub_uint32_t last;
+  grub_uint32_t cur, end;
+  struct grub_acpi_fadt *fadt;
+  grub_port_t p;
+  grub_uint64_t start_tsc;
+  grub_uint64_t end_tsc;
+
+  fadt = grub_acpi_find_fadt ();
+  if (!fadt)
+    return 0;
+  p = fadt->pmtimer;
+  if (!p)
+    return 0;
+
+  start = grub_inl (p) & 0xffffff;
+  last = start;
+  /* It's 3.579545 MHz clock. Wait 1 ms.  */
+  end = start + 3580;
+  start_tsc = grub_get_tsc ();
+  while (1)
+    {
+      cur = grub_inl (p) & 0xffffff;
+      if (cur < last)
+	cur |= 0x1000000;
+      if (cur >= end)
+	{
+	  end_tsc = grub_get_tsc ();
+	  grub_tsc_ticks_per_ms = end_tsc - start_tsc;
+	  grub_printf ("synced on PM\n");
+	  return 1;
+	}
+    }
+}
 
 /* Calibrate the TSC based on the RTC.  */
 static void
@@ -51,11 +88,14 @@
   grub_uint64_t start_tsc;
   grub_uint64_t end_tsc;
 
+  if (grub_pmtimer_tsc_calibrate ())
+    return;
+
   start_tsc = grub_get_tsc ();
   grub_pit_wait (0xffff);
   end_tsc = grub_get_tsc ();
 
-  tsc_ticks_per_ms = grub_divmod64 (end_tsc - start_tsc, 55, 0);
+  grub_tsc_ticks_per_ms = grub_divmod64 (end_tsc - start_tsc, 55, 0);
 }
 
 void

=== modified file 'grub-core/kern/ieee1275/init.c'
--- grub-core/kern/ieee1275/init.c	2012-06-11 18:44:38 +0000
+++ grub-core/kern/ieee1275/init.c	2012-06-14 18:00:27 +0000
@@ -32,12 +32,17 @@
 #include <grub/ieee1275/ofdisk.h>
 #include <grub/ieee1275/ieee1275.h>
 #include <grub/net.h>
+#include <grub/loader.h>
 #include <grub/offsets.h>
 #include <grub/memory.h>
 #ifdef __sparc__
 #include <grub/machine/kernel.h>
 #endif
 
+#ifdef __i386__
+#include <grub/i386/tsc.h>
+#endif
+
 /* The minimal heap size we can live with. */
 #define HEAP_MIN_SIZE		(unsigned long) (2 * 1024 * 1024)
 
@@ -254,8 +259,6 @@
     }
 }
 
-static grub_uint64_t ieee1275_get_time_ms (void);
-
 grub_addr_t grub_modbase;
 
 void
@@ -273,7 +276,7 @@
 
   grub_parse_cmdline ();
 
-  grub_install_get_time_ms (ieee1275_get_time_ms);
+  grub_install_get_time_ms (grub_rtc_get_time_ms);
 }
 
 void
@@ -283,8 +286,8 @@
   grub_console_fini ();
 }
 
-static grub_uint64_t
-ieee1275_get_time_ms (void)
+grub_uint64_t
+grub_rtc_get_time_ms (void)
 {
   grub_uint32_t msecs = 0;
 

=== modified file 'grub-core/loader/i386/xnu.c'
--- grub-core/loader/i386/xnu.c	2012-05-28 15:49:18 +0000
+++ grub-core/loader/i386/xnu.c	2012-06-14 18:00:27 +0000
@@ -24,9 +24,8 @@
 #include <grub/mm.h>
 #include <grub/loader.h>
 #include <grub/autoefi.h>
+#include <grub/efi/api.h>
 #include <grub/i386/tsc.h>
-#include <grub/efi/api.h>
-#include <grub/i386/pit.h>
 #include <grub/misc.h>
 #include <grub/charset.h>
 #include <grub/term.h>
@@ -125,11 +124,8 @@
 {
   const grub_uint64_t sane_value = 100000000;
   grub_uint32_t manufacturer[3], max_cpuid, capabilities, msrlow;
-  grub_uint64_t start_tsc;
-  grub_uint64_t end_tsc;
-  grub_uint64_t tsc_ticks_per_ms;
 
-  if (! grub_cpu_is_cpuid_supported ())
+  if (!grub_tsc_ticks_per_ms)
     return sane_value;
 
 #ifdef __APPLE__
@@ -192,14 +188,6 @@
   if (! (capabilities & (1 << 7)))
     return sane_value;
 
-  /* Calibrate the TSC rate. */
-
-  start_tsc = grub_get_tsc ();
-  grub_pit_wait (0xffff);
-  end_tsc = grub_get_tsc ();
-
-  tsc_ticks_per_ms = grub_divmod64 (end_tsc - start_tsc, 55, 0);
-
   /* Read the multiplier. */
   asm volatile ("movl $0x198, %%ecx\n"
 		"rdmsr"
@@ -207,7 +195,7 @@
 		:
 		: "%ecx", "%eax");
 
-  return grub_divmod64 (2000 * tsc_ticks_per_ms,
+  return grub_divmod64 (2000 * grub_tsc_ticks_per_ms,
 			((msrlow >> 7) & 0x3e) + ((msrlow >> 14) & 1), 0);
 }
 

=== modified file 'include/grub/acpi.h'
--- include/grub/acpi.h	2012-02-22 15:02:03 +0000
+++ include/grub/acpi.h	2012-06-14 19:10:11 +0000
@@ -60,16 +60,34 @@
 struct grub_acpi_fadt
 {
   struct grub_acpi_table_header hdr;
+  /* 36 */
   grub_uint32_t facs_addr;
   grub_uint32_t dsdt_addr;
+  /* 44 */
   grub_uint8_t somefields1[20];
+  /* 64 */
   grub_uint32_t pm1a;
-  grub_uint8_t somefields2[64];
+  /* 68 */
+  grub_uint8_t somefields2[8];
+  /* 76 */
+  grub_uint32_t pmtimer;
+  /* 80 */
+  grub_uint8_t somefields3[32];
+  /* 112 */
+  grub_uint32_t flags;
+  /* 116 */
+  grub_uint8_t somefields4[16];
+  /* 132 */
   grub_uint64_t facs_xaddr;
   grub_uint64_t dsdt_xaddr;
-  grub_uint8_t somefields3[96];
+  grub_uint8_t somefields5[96];
 } __attribute__ ((packed));
 
+enum
+  {
+    GRUB_ACPI_FADT_FLAGS_LONG_PMTIMER = (1 << 8)
+  };
+
 #define GRUB_ACPI_MADT_SIGNATURE "APIC"
 
 struct grub_acpi_madt_entry_header
@@ -144,9 +162,9 @@
 #ifndef GRUB_DSDT_TEST
 struct grub_acpi_rsdp_v10 *grub_acpi_get_rsdpv1 (void);
 struct grub_acpi_rsdp_v20 *grub_acpi_get_rsdpv2 (void);
-struct grub_acpi_rsdp_v10 *grub_machine_acpi_get_rsdpv1 (void);
-struct grub_acpi_rsdp_v20 *grub_machine_acpi_get_rsdpv2 (void);
-grub_uint8_t grub_byte_checksum (void *base, grub_size_t size);
+struct grub_acpi_rsdp_v10 *EXPORT_FUNC(grub_machine_acpi_get_rsdpv1) (void);
+struct grub_acpi_rsdp_v20 *EXPORT_FUNC(grub_machine_acpi_get_rsdpv2) (void);
+grub_uint8_t EXPORT_FUNC(grub_byte_checksum) (void *base, grub_size_t size);
 
 grub_err_t grub_acpi_create_ebda (void);
 
@@ -179,4 +197,7 @@
     GRUB_ACPI_EXTOPCODE_INDEX_FIELD_OP = 0x86,
   };
 
+struct grub_acpi_fadt *
+EXPORT_FUNC(grub_acpi_find_fadt) (void);
+
 #endif /* ! GRUB_ACPI_HEADER */

=== modified file 'include/grub/i386/pit.h'
--- include/grub/i386/pit.h	2009-05-02 23:19:20 +0000
+++ include/grub/i386/pit.h	2012-06-14 18:04:16 +0000
@@ -22,6 +22,6 @@
 #include <grub/types.h>
 #include <grub/err.h>
 
-void EXPORT_FUNC(grub_pit_wait) (grub_uint16_t tics);
+void grub_pit_wait (grub_uint16_t tics);
 
 #endif /* ! KERNEL_CPU_PIT_HEADER */

=== modified file 'include/grub/i386/tsc.h'
--- include/grub/i386/tsc.h	2012-05-28 15:49:18 +0000
+++ include/grub/i386/tsc.h	2012-06-14 18:00:27 +0000
@@ -136,6 +136,7 @@
 }
 
 void grub_tsc_init (void);
-grub_uint64_t grub_tsc_get_time_ms (void);
+
+extern grub_uint64_t EXPORT_VAR(grub_tsc_ticks_per_ms);
 
 #endif /* ! KERNEL_CPU_TSC_HEADER */

=== modified file 'po/POTFILES.in'
--- po/POTFILES.in	2012-03-08 17:47:51 +0000
+++ po/POTFILES.in	2012-06-14 19:13:30 +0000
@@ -29,7 +29,6 @@
 ./grub-core/commands/configfile.c
 ./grub-core/commands/date.c
 ./grub-core/commands/echo.c
-./grub-core/commands/efi/acpi.c
 ./grub-core/commands/efi/fixvideo.c
 ./grub-core/commands/efi/loadbios.c
 ./grub-core/commands/efi/lsefimmap.c
@@ -44,7 +43,6 @@
 ./grub-core/commands/hexdump.c
 ./grub-core/commands/i386/cmostest.c
 ./grub-core/commands/i386/cpuid.c
-./grub-core/commands/i386/pc/acpi.c
 ./grub-core/commands/i386/pc/drivemap.c
 ./grub-core/commands/i386/pc/halt.c
 ./grub-core/commands/i386/pc/lsapm.c
@@ -106,6 +104,7 @@
 ./grub-core/disk/luks.c
 ./grub-core/disk/lvm.c
 ./grub-core/disk/mdraid1x_linux.c
+./grub-core/disk/mdraid_linux_be.c
 ./grub-core/disk/mdraid_linux.c
 ./grub-core/disk/memdisk.c
 ./grub-core/disk/pata.c
@@ -147,8 +146,11 @@
 ./grub-core/fs/hfsplus.c
 ./grub-core/fs/iso9660.c
 ./grub-core/fs/jfs.c
+./grub-core/fs/minix2_be.c
 ./grub-core/fs/minix2.c
+./grub-core/fs/minix3_be.c
 ./grub-core/fs/minix3.c
+./grub-core/fs/minix_be.c
 ./grub-core/fs/minix.c
 ./grub-core/fs/newc.c
 ./grub-core/fs/nilfs2.c
@@ -290,11 +292,13 @@
 ./grub-core/io/gzio.c
 ./grub-core/io/lzopio.c
 ./grub-core/io/xzio.c
+./grub-core/kern/acpi.c
 ./grub-core/kern/command.c
 ./grub-core/kern/corecmd.c
 ./grub-core/kern/device.c
 ./grub-core/kern/disk.c
 ./grub-core/kern/dl.c
+./grub-core/kern/efi/acpi.c
 ./grub-core/kern/efi/efi.c
 ./grub-core/kern/efi/init.c
 ./grub-core/kern/efi/mm.c
@@ -320,6 +324,7 @@
 ./grub-core/kern/i386/dl.c
 ./grub-core/kern/i386/efi/init.c
 ./grub-core/kern/i386/multiboot_mmap.c
+./grub-core/kern/i386/pc/acpi.c
 ./grub-core/kern/i386/pc/init.c
 ./grub-core/kern/i386/pc/mmap.c
 ./grub-core/kern/i386/pit.c
@@ -557,6 +562,7 @@
 ./grub-core/term/i386/pc/vga_text.c
 ./grub-core/term/i386/vga_common.c
 ./grub-core/term/ieee1275/console.c
+./grub-core/term/ieee1275/escc.c
 ./grub-core/term/ieee1275/serial.c
 ./grub-core/term/ns8250.c
 ./grub-core/term/serial.c
@@ -567,6 +573,7 @@
 ./grub-core/tests/lib/functional_test.c
 ./grub-core/tests/lib/test.c
 ./grub-core/tests/test_blockarg.c
+./grub-core/unidata.c
 ./grub-core/video/bitmap.c
 ./grub-core/video/bitmap_scale.c
 ./grub-core/video/bochs.c
@@ -631,7 +638,6 @@
 ./include/grub/efi/memory.h
 ./include/grub/efi/pci.h
 ./include/grub/efi/pe32.h
-./include/grub/efi/time.h
 ./include/grub/efi/uga_draw.h
 ./include/grub/elf.h
 ./include/grub/elfload.h
@@ -676,7 +682,6 @@
 ./include/grub/i386/efiemu.h
 ./include/grub/i386/efi/memory.h
 ./include/grub/i386/efi/serial.h
-./include/grub/i386/efi/time.h
 ./include/grub/i386/floppy.h
 ./include/grub/i386/freebsd_linker.h
 ./include/grub/i386/freebsd_reboot.h
@@ -684,7 +689,6 @@
 ./include/grub/i386/ieee1275/ieee1275.h
 ./include/grub/i386/ieee1275/memory.h
 ./include/grub/i386/ieee1275/serial.h
-./include/grub/i386/ieee1275/time.h
 ./include/grub/i386/io.h
 ./include/grub/i386/linux.h
 ./include/grub/i386/macho.h
@@ -820,7 +824,6 @@
 ./include/grub/pci.h
 ./include/grub/pciutils.h
 ./include/grub/powerpc/ieee1275/ieee1275.h
-./include/grub/powerpc/ieee1275/time.h
 ./include/grub/powerpc/kernel.h
 ./include/grub/powerpc/memory.h
 ./include/grub/powerpc/relocator.h
@@ -843,7 +846,6 @@
 ./include/grub/sparc64/ieee1275/boot.h
 ./include/grub/sparc64/ieee1275/ieee1275.h
 ./include/grub/sparc64/ieee1275/kernel.h
-./include/grub/sparc64/ieee1275/time.h
 ./include/grub/sparc64/setjmp.h
 ./include/grub/sparc64/time.h
 ./include/grub/sparc64/types.h
@@ -874,7 +876,6 @@
 ./include/grub/x86_64/efi/loader.h
 ./include/grub/x86_64/efi/memory.h
 ./include/grub/x86_64/efi/serial.h
-./include/grub/x86_64/efi/time.h
 ./include/grub/x86_64/io.h
 ./include/grub/x86_64/linux.h
 ./include/grub/x86_64/macho.h
@@ -906,6 +907,7 @@
 ./include/grub/zfs/zio.h
 ./include/multiboot2.h
 ./include/multiboot.h
+./tests/cmp_unit_test.c
 ./tests/example_unit_test.c
 ./tests/lib/unit_test.c
 ./tests/printf_unit_test.c

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to