diff --git a/util/nvramtool/coreboot_tables.h b/util/nvramtool/coreboot_tables.h
index 7c912be..afab7bc 100644
--- a/util/nvramtool/coreboot_tables.h
+++ b/util/nvramtool/coreboot_tables.h
@@ -146,6 +146,14 @@
         uint32_t size;
         uint8_t  string[0];
 };
+#define LB_TAG_SERIAL		0x000f
+#define LB_TAG_CONSOLE		0x0010
+#define LB_TAG_FORWARD		0x0011
+struct lb_forward {
+	uint32_t tag;
+	uint32_t size;
+	uint64_t forward;
+};
 
 /* The following structures are for the cmos definitions table */
 #define LB_TAG_CMOS_OPTION_TABLE 200
diff --git a/util/nvramtool/lbtable.c b/util/nvramtool/lbtable.c
index 05d70c2..f730314 100644
--- a/util/nvramtool/lbtable.c
+++ b/util/nvramtool/lbtable.c
@@ -149,6 +149,8 @@
 "%s: Item %s not found in coreboot table. Apparently, you are "
 "using coreboot v1.\n";
 
+int fd;
+
 /* This is the number of items from the coreboot table that may be displayed
  * using the -l option.
  */
@@ -240,6 +242,7 @@
  * /dev/mem.
  */
 static const void *low_phys_mem;
+static unsigned long low_phys_base = 0;
 
 /* Pointer to coreboot table. */
 static const struct lb_header *lbtable = NULL;
@@ -261,7 +264,7 @@
  * /dev/mem.  This macro converts 'vaddr' to a physical address.
  ****************************************************************************/
 #define vtophys(vaddr) (((unsigned long) vaddr) -       \
-                        ((unsigned long) low_phys_mem))
+                        ((unsigned long) low_phys_mem) + low_phys_base)
 
 /****************************************************************************
  * phystov
@@ -272,7 +275,7 @@
  * by calling mmap() on /dev/mem.
  ****************************************************************************/
 #define phystov(paddr) (((unsigned long) low_phys_mem) + \
-                        ((unsigned long) paddr))
+                        ((unsigned long) paddr) - low_phys_base)
 
 /****************************************************************************
  * get_lbtable
@@ -280,7 +283,7 @@
  * Find the coreboot table and set global variable lbtable to point to it.
  ****************************************************************************/
 void get_lbtable (void)
- { int fd, i, bad_header_count, bad_table_count, bad_headers, bad_tables;
+ { int i, bad_header_count, bad_table_count, bad_headers, bad_tables;
 
    if (lbtable != NULL)
       return;
@@ -494,6 +497,7 @@
                                               int *bad_table_count)
  { static const char signature[] = { 'L', 'B', 'I', 'O' };
    const struct lb_header *table;
+   const struct lb_forward *forward;
    const uint32_t *p;
    uint32_t sig;
 
@@ -534,6 +538,25 @@
        }
 
       /* checksums are ok: we found it! */
+      /* But it may just be a forwarding table, so look if there's a forwarder */
+      lbtable = table;
+      forward = (struct lb_forward *)find_lbrec(LB_TAG_FORWARD);
+      lbtable = NULL;
+
+      if (forward) {
+        uint64_t new_phys = forward->forward;
+
+	new_phys &= ~(getpagesize()-1);
+	
+        munmap((void *)low_phys_mem, BYTES_TO_MAP);
+        if ((low_phys_mem = mmap(NULL, BYTES_TO_MAP, PROT_READ, MAP_SHARED, fd, (off_t)new_phys)) == MAP_FAILED)
+        { fprintf(stderr, "%s: Failed to mmap /dev/mem: %s\n", prog_name,
+              strerror(errno));
+          exit(1);
+        }
+	low_phys_base = new_phys;
+	table = lbtable_scan(phystov(low_phys_base), phystov(low_phys_base + BYTES_TO_MAP), bad_header_count, bad_table_count);
+      }
       return table;
     }
 
@@ -865,6 +888,15 @@
       case LB_TAG_ASSEMBLER:
          return "ASSEMBLER";
 
+      case LB_TAG_SERIAL:
+         return "SERIAL";
+
+      case LB_TAG_CONSOLE:
+	 return "CONSOLE";
+
+      case LB_TAG_FORWARD:
+	 return "FORWARD";
+
       case LB_TAG_CMOS_OPTION_TABLE:
          return "CMOS_OPTION_TABLE";
 
