diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped
index b07adcb..c319a79 100644
--- a/util/sconfig/sconfig.tab.c_shipped
+++ b/util/sconfig/sconfig.tab.c_shipped
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.7.6.  */
+/* A Bison parser, made by GNU Bison 3.8.1.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
@@ -46,10 +46,10 @@
    USER NAME SPACE" below.  */
 
 /* Identify Bison output, and Bison version.  */
-#define YYBISON 30706
+#define YYBISON 30801
 
 /* Bison version string.  */
-#define YYBISON_VERSION "3.7.6"
+#define YYBISON_VERSION "3.8.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -138,54 +138,56 @@
   YYSYMBOL_IRQ = 25,                       /* IRQ  */
   YYSYMBOL_DRQ = 26,                       /* DRQ  */
   YYSYMBOL_SLOT_DESC = 27,                 /* SLOT_DESC  */
-  YYSYMBOL_IO = 28,                        /* IO  */
-  YYSYMBOL_NUMBER = 29,                    /* NUMBER  */
-  YYSYMBOL_SUBSYSTEMID = 30,               /* SUBSYSTEMID  */
-  YYSYMBOL_INHERIT = 31,                   /* INHERIT  */
-  YYSYMBOL_IOAPIC_IRQ = 32,                /* IOAPIC_IRQ  */
-  YYSYMBOL_IOAPIC = 33,                    /* IOAPIC  */
-  YYSYMBOL_PCIINT = 34,                    /* PCIINT  */
-  YYSYMBOL_GENERIC = 35,                   /* GENERIC  */
-  YYSYMBOL_SPI = 36,                       /* SPI  */
-  YYSYMBOL_USB = 37,                       /* USB  */
-  YYSYMBOL_MMIO = 38,                      /* MMIO  */
-  YYSYMBOL_GPIO = 39,                      /* GPIO  */
-  YYSYMBOL_FW_CONFIG_TABLE = 40,           /* FW_CONFIG_TABLE  */
-  YYSYMBOL_FW_CONFIG_FIELD = 41,           /* FW_CONFIG_FIELD  */
-  YYSYMBOL_FW_CONFIG_OPTION = 42,          /* FW_CONFIG_OPTION  */
-  YYSYMBOL_FW_CONFIG_PROBE = 43,           /* FW_CONFIG_PROBE  */
-  YYSYMBOL_PIPE = 44,                      /* PIPE  */
-  YYSYMBOL_YYACCEPT = 45,                  /* $accept  */
-  YYSYMBOL_devtree = 46,                   /* devtree  */
-  YYSYMBOL_chipchild_nondev = 47,          /* chipchild_nondev  */
-  YYSYMBOL_chipchild = 48,                 /* chipchild  */
-  YYSYMBOL_chipchildren = 49,              /* chipchildren  */
-  YYSYMBOL_chipchildren_dev = 50,          /* chipchildren_dev  */
-  YYSYMBOL_devicechildren = 51,            /* devicechildren  */
-  YYSYMBOL_chip = 52,                      /* chip  */
-  YYSYMBOL_53_1 = 53,                      /* @1  */
-  YYSYMBOL_device = 54,                    /* device  */
-  YYSYMBOL_55_2 = 55,                      /* @2  */
-  YYSYMBOL_56_3 = 56,                      /* @3  */
-  YYSYMBOL_alias = 57,                     /* alias  */
-  YYSYMBOL_status = 58,                    /* status  */
-  YYSYMBOL_resource = 59,                  /* resource  */
-  YYSYMBOL_reference = 60,                 /* reference  */
-  YYSYMBOL_registers = 61,                 /* registers  */
-  YYSYMBOL_subsystemid = 62,               /* subsystemid  */
-  YYSYMBOL_ioapic_irq = 63,                /* ioapic_irq  */
-  YYSYMBOL_smbios_slot_desc = 64,          /* smbios_slot_desc  */
-  YYSYMBOL_fw_config_table = 65,           /* fw_config_table  */
-  YYSYMBOL_fw_config_table_children = 66,  /* fw_config_table_children  */
-  YYSYMBOL_fw_config_field_children = 67,  /* fw_config_field_children  */
-  YYSYMBOL_fw_config_field_bits = 68,      /* fw_config_field_bits  */
-  YYSYMBOL_fw_config_field_bits_repeating = 69, /* fw_config_field_bits_repeating  */
-  YYSYMBOL_fw_config_field = 70,           /* fw_config_field  */
-  YYSYMBOL_71_4 = 71,                      /* $@4  */
-  YYSYMBOL_72_5 = 72,                      /* $@5  */
-  YYSYMBOL_73_6 = 73,                      /* $@6  */
-  YYSYMBOL_fw_config_option = 74,          /* fw_config_option  */
-  YYSYMBOL_fw_config_probe = 75            /* fw_config_probe  */
+  YYSYMBOL_SMBIOS_DEV_INFO = 28,           /* SMBIOS_DEV_INFO  */
+  YYSYMBOL_IO = 29,                        /* IO  */
+  YYSYMBOL_NUMBER = 30,                    /* NUMBER  */
+  YYSYMBOL_SUBSYSTEMID = 31,               /* SUBSYSTEMID  */
+  YYSYMBOL_INHERIT = 32,                   /* INHERIT  */
+  YYSYMBOL_IOAPIC_IRQ = 33,                /* IOAPIC_IRQ  */
+  YYSYMBOL_IOAPIC = 34,                    /* IOAPIC  */
+  YYSYMBOL_PCIINT = 35,                    /* PCIINT  */
+  YYSYMBOL_GENERIC = 36,                   /* GENERIC  */
+  YYSYMBOL_SPI = 37,                       /* SPI  */
+  YYSYMBOL_USB = 38,                       /* USB  */
+  YYSYMBOL_MMIO = 39,                      /* MMIO  */
+  YYSYMBOL_GPIO = 40,                      /* GPIO  */
+  YYSYMBOL_FW_CONFIG_TABLE = 41,           /* FW_CONFIG_TABLE  */
+  YYSYMBOL_FW_CONFIG_FIELD = 42,           /* FW_CONFIG_FIELD  */
+  YYSYMBOL_FW_CONFIG_OPTION = 43,          /* FW_CONFIG_OPTION  */
+  YYSYMBOL_FW_CONFIG_PROBE = 44,           /* FW_CONFIG_PROBE  */
+  YYSYMBOL_PIPE = 45,                      /* PIPE  */
+  YYSYMBOL_YYACCEPT = 46,                  /* $accept  */
+  YYSYMBOL_devtree = 47,                   /* devtree  */
+  YYSYMBOL_chipchild_nondev = 48,          /* chipchild_nondev  */
+  YYSYMBOL_chipchild = 49,                 /* chipchild  */
+  YYSYMBOL_chipchildren = 50,              /* chipchildren  */
+  YYSYMBOL_chipchildren_dev = 51,          /* chipchildren_dev  */
+  YYSYMBOL_devicechildren = 52,            /* devicechildren  */
+  YYSYMBOL_chip = 53,                      /* chip  */
+  YYSYMBOL_54_1 = 54,                      /* @1  */
+  YYSYMBOL_device = 55,                    /* device  */
+  YYSYMBOL_56_2 = 56,                      /* @2  */
+  YYSYMBOL_57_3 = 57,                      /* @3  */
+  YYSYMBOL_alias = 58,                     /* alias  */
+  YYSYMBOL_status = 59,                    /* status  */
+  YYSYMBOL_resource = 60,                  /* resource  */
+  YYSYMBOL_reference = 61,                 /* reference  */
+  YYSYMBOL_registers = 62,                 /* registers  */
+  YYSYMBOL_subsystemid = 63,               /* subsystemid  */
+  YYSYMBOL_ioapic_irq = 64,                /* ioapic_irq  */
+  YYSYMBOL_smbios_slot_desc = 65,          /* smbios_slot_desc  */
+  YYSYMBOL_smbios_dev_info = 66,           /* smbios_dev_info  */
+  YYSYMBOL_fw_config_table = 67,           /* fw_config_table  */
+  YYSYMBOL_fw_config_table_children = 68,  /* fw_config_table_children  */
+  YYSYMBOL_fw_config_field_children = 69,  /* fw_config_field_children  */
+  YYSYMBOL_fw_config_field_bits = 70,      /* fw_config_field_bits  */
+  YYSYMBOL_fw_config_field_bits_repeating = 71, /* fw_config_field_bits_repeating  */
+  YYSYMBOL_fw_config_field = 72,           /* fw_config_field  */
+  YYSYMBOL_73_4 = 73,                      /* $@4  */
+  YYSYMBOL_74_5 = 74,                      /* $@5  */
+  YYSYMBOL_75_6 = 75,                      /* $@6  */
+  YYSYMBOL_fw_config_option = 76,          /* fw_config_option  */
+  YYSYMBOL_fw_config_probe = 77            /* fw_config_probe  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -343,12 +345,18 @@
 # define YY_USE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
+# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
+#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
+# else
+#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
     _Pragma ("GCC diagnostic push")                                     \
     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# endif
 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     _Pragma ("GCC diagnostic pop")
 #else
@@ -507,19 +515,19 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   90
+#define YYLAST   98
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  45
+#define YYNTOKENS  46
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  31
+#define YYNNTS  32
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  57
+#define YYNRULES  60
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  101
+#define YYNSTATES  105
 
 /* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   299
+#define YYMAXUTOK   300
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -562,19 +570,21 @@
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45
 };
 
 #if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint8 yyrline[] =
 {
        0,    26,    26,    26,    26,    29,    29,    29,    30,    30,
       31,    31,    32,    32,    34,    34,    34,    34,    34,    34,
-      34,    34,    34,    36,    36,    45,    45,    53,    53,    61,
-      63,    67,    67,    69,    72,    75,    78,    81,    84,    87,
-      90,    93,    97,   100,   100,   103,   103,   106,   112,   112,
-     115,   114,   119,   119,   127,   127,   133,   137
+      34,    34,    34,    34,    36,    36,    45,    45,    53,    53,
+      61,    63,    67,    67,    69,    72,    75,    78,    81,    84,
+      87,    90,    93,    96,    99,   103,   106,   106,   109,   109,
+     112,   118,   118,   121,   120,   125,   125,   133,   133,   139,
+     143
 };
 #endif
 
@@ -594,17 +604,18 @@
   "REGISTER", "ALIAS", "REFERENCE", "ASSOCIATION", "BOOL", "STATUS",
   "MANDATORY", "BUS", "RESOURCE", "END", "EQUALS", "HEX", "STRING", "PCI",
   "PNP", "I2C", "APIC", "CPU_CLUSTER", "CPU", "DOMAIN", "IRQ", "DRQ",
-  "SLOT_DESC", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT", "IOAPIC_IRQ",
-  "IOAPIC", "PCIINT", "GENERIC", "SPI", "USB", "MMIO", "GPIO",
-  "FW_CONFIG_TABLE", "FW_CONFIG_FIELD", "FW_CONFIG_OPTION",
+  "SLOT_DESC", "SMBIOS_DEV_INFO", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT",
+  "IOAPIC_IRQ", "IOAPIC", "PCIINT", "GENERIC", "SPI", "USB", "MMIO",
+  "GPIO", "FW_CONFIG_TABLE", "FW_CONFIG_FIELD", "FW_CONFIG_OPTION",
   "FW_CONFIG_PROBE", "PIPE", "$accept", "devtree", "chipchild_nondev",
   "chipchild", "chipchildren", "chipchildren_dev", "devicechildren",
   "chip", "@1", "device", "@2", "@3", "alias", "status", "resource",
   "reference", "registers", "subsystemid", "ioapic_irq",
-  "smbios_slot_desc", "fw_config_table", "fw_config_table_children",
-  "fw_config_field_children", "fw_config_field_bits",
-  "fw_config_field_bits_repeating", "fw_config_field", "$@4", "$@5", "$@6",
-  "fw_config_option", "fw_config_probe", YY_NULLPTR
+  "smbios_slot_desc", "smbios_dev_info", "fw_config_table",
+  "fw_config_table_children", "fw_config_field_children",
+  "fw_config_field_bits", "fw_config_field_bits_repeating",
+  "fw_config_field", "$@4", "$@5", "$@6", "fw_config_option",
+  "fw_config_probe", YY_NULLPTR
 };
 
 static const char *
@@ -614,20 +625,7 @@
 }
 #endif
 
-#ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_int16 yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299
-};
-#endif
-
-#define YYPACT_NINF (-61)
+#define YYPACT_NINF (-45)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -637,127 +635,129 @@
 #define yytable_value_is_error(Yyn) \
   0
 
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
 static const yytype_int8 yypact[] =
 {
-     -61,    12,   -61,    -7,   -61,   -61,   -61,   -61,   -12,    46,
-     -61,     8,   -61,    14,    11,    18,    46,    23,   -61,   -61,
-     -61,   -61,    16,    24,    17,    25,    34,   -61,   -61,    46,
-      26,    10,   -61,    13,    51,    41,    42,   -61,   -61,   -61,
-     -61,   -61,    31,   -61,    -3,   -61,   -61,   -61,    44,    13,
-     -61,   -61,     2,    26,    10,   -61,   -61,    45,   -61,   -61,
-     -61,   -61,   -61,   -61,     6,    35,     0,   -61,   -61,   -61,
-      37,   -61,    50,    39,    40,    53,   -61,   -61,   -61,   -61,
-     -61,   -61,   -61,   -61,     4,    48,    54,    43,    47,    56,
-     -61,    49,    57,    55,    58,   -61,   -61,    59,   -61,   -61,
-     -61
+     -45,     6,   -45,     4,   -45,   -45,   -45,   -45,   -12,    45,
+     -45,    15,   -45,    11,    17,    18,    45,    -3,   -45,   -45,
+     -45,   -45,    16,    34,    23,    14,    46,   -45,   -45,    45,
+      25,    19,   -45,    10,    51,    42,    43,   -45,   -45,   -45,
+     -45,   -45,    31,   -45,    -7,   -45,   -45,   -45,    49,    10,
+     -45,   -45,    -6,    25,    19,   -45,   -45,    50,   -45,   -45,
+     -45,   -45,   -45,   -45,    -2,    32,     0,   -45,   -45,   -45,
+      33,   -45,    52,    38,    40,    41,    55,   -45,   -45,   -45,
+     -45,   -45,   -45,   -45,   -45,   -45,    12,    58,    57,    59,
+      47,    44,    61,   -45,    53,    63,   -45,    54,    60,   -45,
+     -45,    64,   -45,   -45,   -45
 };
 
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
+/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE does not specify something else to do.  Zero
+   means the default is an error.  */
 static const yytype_int8 yydefact[] =
 {
-       2,     0,     1,     0,    44,     3,     4,    23,     0,     0,
-      42,     0,    43,     0,     0,     0,     0,     0,     5,    11,
-       7,     6,    54,     0,     0,     0,     0,    13,    24,    12,
-      52,    49,    46,     0,    29,     0,     0,     9,    10,     8,
-      47,    46,     0,    50,     0,    31,    32,    27,     0,     0,
-      35,    34,     0,     0,    49,    46,    55,     0,    45,    22,
-      30,    25,    53,    48,     0,     0,     0,    22,    51,    56,
-       0,    28,     0,     0,     0,     0,    15,    14,    16,    20,
-      17,    18,    19,    21,     0,     0,     0,     0,     0,     0,
-      26,     0,    41,    36,     0,    57,    33,    40,    37,    38,
-      39
+       2,     0,     1,     0,    47,     3,     4,    24,     0,     0,
+      45,     0,    46,     0,     0,     0,     0,     0,     5,    11,
+       7,     6,    57,     0,     0,     0,     0,    13,    25,    12,
+      55,    52,    49,     0,    30,     0,     0,     9,    10,     8,
+      50,    49,     0,    53,     0,    32,    33,    28,     0,     0,
+      36,    35,     0,     0,    52,    49,    58,     0,    48,    23,
+      31,    26,    56,    51,     0,     0,     0,    23,    54,    59,
+       0,    29,     0,     0,     0,     0,     0,    15,    14,    16,
+      21,    17,    18,    19,    20,    22,     0,     0,     0,    44,
+       0,     0,     0,    27,     0,    42,    43,    37,     0,    60,
+      34,    41,    38,    39,    40
 };
 
-  /* YYPGOTO[NTERM-NUM].  */
+/* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -61,   -61,    60,   -61,   -61,    61,    15,    -1,   -61,   -28,
-     -61,   -61,   -61,    30,   -61,   -61,   -60,   -61,   -61,   -61,
-     -61,   -61,   -22,    33,    36,   -61,   -61,   -61,   -61,   -61,
-     -61
+     -45,   -45,    62,   -45,   -45,    66,     8,    -1,   -45,   -28,
+     -45,   -45,   -45,    35,   -45,   -45,   -44,   -45,   -45,   -45,
+     -45,   -45,   -45,   -31,    56,    39,   -45,   -45,   -45,   -45,
+     -45,   -45
 };
 
-  /* YYDEFGOTO[NTERM-NUM].  */
+/* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
        0,     1,    16,    38,    29,    17,    66,    18,     9,    19,
-      67,    59,    49,    47,    78,    20,    21,    80,    81,    82,
-       6,     8,    44,    31,    43,    12,    55,    41,    32,    58,
-      83
+      67,    59,    49,    47,    79,    20,    21,    81,    82,    83,
+      84,     6,     8,    44,    31,    43,    12,    55,    41,    32,
+      58,    85
 };
 
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
+/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule whose
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int8 yytable[] =
 {
-       5,    39,    10,     3,    13,    14,    79,     3,    13,    14,
-       7,    56,     2,    70,    71,     3,    62,    70,    90,    52,
-      68,    23,    45,    46,    79,    22,    24,    72,    25,    11,
-      73,    72,    74,    64,    73,    26,    74,    28,    77,    57,
-      35,    33,    36,    75,    57,    30,    34,    75,    57,     3,
-      13,    14,     4,    15,    42,    40,    77,    48,    50,    51,
-      53,    60,    65,    91,    69,    76,    85,    86,    87,    88,
-      89,    92,    93,    95,    97,    54,   100,    27,    96,    61,
-       0,    94,    84,    76,     0,     0,    98,    99,     0,    37,
-      63
+       5,    39,    10,     3,    13,    14,     2,    56,    62,     3,
+      52,    28,    68,    70,    71,     3,    13,    14,    23,    45,
+      46,     7,    80,    24,    64,    70,    93,    72,    73,    35,
+      11,    74,    22,    75,    25,    26,    57,    57,    78,    72,
+      73,    57,    80,    74,    76,    75,    30,     4,     3,    13,
+      14,    33,    15,    34,    36,    40,    76,    48,    78,    50,
+      51,    53,    69,    87,    42,    77,    60,    65,    89,    88,
+      90,    91,    92,    94,    95,    86,    96,    97,    99,    98,
+     101,   104,    27,   100,    61,    77,   102,     0,     0,     0,
+     103,    37,     0,    63,     0,     0,     0,     0,    54
 };
 
 static const yytype_int8 yycheck[] =
 {
-       1,    29,    14,     3,     4,     5,    66,     3,     4,     5,
-      17,    14,     0,    13,    14,     3,    14,    13,    14,    41,
-      14,     7,     9,    10,    84,    17,    12,    27,    17,    41,
-      30,    27,    32,    55,    30,    17,    32,    14,    66,    42,
-      15,    17,     8,    43,    42,    29,    29,    43,    42,     3,
-       4,     5,    40,     7,    44,    29,    84,     6,    17,    17,
-      29,    17,    17,    15,    29,    66,    29,    17,    29,    29,
-      17,    17,    29,    17,    17,    42,    17,    16,    29,    49,
-      -1,    34,    67,    84,    -1,    -1,    31,    29,    -1,    29,
-      54
+       1,    29,    14,     3,     4,     5,     0,    14,    14,     3,
+      41,    14,    14,    13,    14,     3,     4,     5,     7,     9,
+      10,    17,    66,    12,    55,    13,    14,    27,    28,    15,
+      42,    31,    17,    33,    17,    17,    43,    43,    66,    27,
+      28,    43,    86,    31,    44,    33,    30,    41,     3,     4,
+       5,    17,     7,    30,     8,    30,    44,     6,    86,    17,
+      17,    30,    30,    30,    45,    66,    17,    17,    30,    17,
+      30,    30,    17,    15,    17,    67,    17,    30,    17,    35,
+      17,    17,    16,    30,    49,    86,    32,    -1,    -1,    -1,
+      30,    29,    -1,    54,    -1,    -1,    -1,    -1,    42
 };
 
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
+/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
+   state STATE-NUM.  */
 static const yytype_int8 yystos[] =
 {
-       0,    46,     0,     3,    40,    52,    65,    17,    66,    53,
-      14,    41,    70,     4,     5,     7,    47,    50,    52,    54,
-      60,    61,    17,     7,    12,    17,    17,    50,    14,    49,
-      29,    68,    73,    17,    29,    15,     8,    47,    48,    54,
-      29,    72,    44,    69,    67,     9,    10,    58,     6,    57,
-      17,    17,    67,    29,    68,    71,    14,    42,    74,    56,
-      17,    58,    14,    69,    67,    17,    51,    55,    14,    29,
-      13,    14,    27,    30,    32,    43,    52,    54,    59,    61,
-      62,    63,    64,    75,    51,    29,    17,    29,    29,    17,
-      14,    15,    17,    29,    34,    17,    29,    17,    31,    29,
-      17
+       0,    47,     0,     3,    41,    53,    67,    17,    68,    54,
+      14,    42,    72,     4,     5,     7,    48,    51,    53,    55,
+      61,    62,    17,     7,    12,    17,    17,    51,    14,    50,
+      30,    70,    75,    17,    30,    15,     8,    48,    49,    55,
+      30,    74,    45,    71,    69,     9,    10,    59,     6,    58,
+      17,    17,    69,    30,    70,    73,    14,    43,    76,    57,
+      17,    59,    14,    71,    69,    17,    52,    56,    14,    30,
+      13,    14,    27,    28,    31,    33,    44,    53,    55,    60,
+      62,    63,    64,    65,    66,    77,    52,    30,    17,    30,
+      30,    30,    17,    14,    15,    17,    17,    30,    35,    17,
+      30,    17,    32,    30,    17
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
 static const yytype_int8 yyr1[] =
 {
-       0,    45,    46,    46,    46,    47,    47,    47,    48,    48,
-      49,    49,    50,    50,    51,    51,    51,    51,    51,    51,
-      51,    51,    51,    53,    52,    55,    54,    56,    54,    57,
-      57,    58,    58,    59,    60,    61,    62,    62,    63,    64,
-      64,    64,    65,    66,    66,    67,    67,    68,    69,    69,
-      71,    70,    72,    70,    73,    70,    74,    75
+       0,    46,    47,    47,    47,    48,    48,    48,    49,    49,
+      50,    50,    51,    51,    52,    52,    52,    52,    52,    52,
+      52,    52,    52,    52,    54,    53,    56,    55,    57,    55,
+      58,    58,    59,    59,    60,    61,    62,    63,    63,    64,
+      65,    65,    65,    66,    66,    67,    68,    68,    69,    69,
+      70,    71,    71,    73,    72,    74,    72,    75,    72,    76,
+      77
 };
 
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
 static const yytype_int8 yyr2[] =
 {
        0,     2,     0,     2,     2,     1,     1,     1,     1,     1,
        2,     0,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     0,     0,     5,     0,     8,     0,     7,     0,
-       2,     1,     1,     4,     4,     4,     3,     4,     4,     5,
-       4,     3,     3,     2,     0,     2,     0,     2,     3,     0,
-       0,     7,     0,     6,     0,     5,     3,     3
+       2,     2,     2,     0,     0,     5,     0,     8,     0,     7,
+       0,     2,     1,     1,     4,     4,     4,     3,     4,     4,
+       5,     4,     3,     3,     2,     3,     2,     0,     2,     0,
+       2,     3,     0,     0,     7,     0,     6,     0,     5,     3,
+       3
 };
 
 
@@ -769,6 +769,7 @@
 #define YYACCEPT        goto yyacceptlab
 #define YYABORT         goto yyabortlab
 #define YYERROR         goto yyerrorlab
+#define YYNOMEM         goto yyexhaustedlab
 
 
 #define YYRECOVERING()  (!!yyerrstatus)
@@ -809,10 +810,7 @@
     YYFPRINTF Args;                             \
 } while (0)
 
-/* This macro is provided for backward compatibility. */
-# ifndef YY_LOCATION_PRINT
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+
 
 
 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
@@ -839,10 +837,6 @@
   YY_USE (yyoutput);
   if (!yyvaluep)
     return;
-# ifdef YYPRINT
-  if (yykind < YYNTOKENS)
-    YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
-# endif
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   YY_USE (yykind);
   YY_IGNORE_MAYBE_UNINITIALIZED_END
@@ -1027,6 +1021,7 @@
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yychar = YYEMPTY; /* Cause a token to be read.  */
+
   goto yysetstate;
 
 
@@ -1052,7 +1047,7 @@
 
   if (yyss + yystacksize - 1 <= yyssp)
 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
-    goto yyexhaustedlab;
+    YYNOMEM;
 #else
     {
       /* Get the current used size of the three stacks, in elements.  */
@@ -1080,7 +1075,7 @@
 # else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
+        YYNOMEM;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
         yystacksize = YYMAXDEPTH;
@@ -1091,7 +1086,7 @@
           YY_CAST (union yyalloc *,
                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
         if (! yyptr)
-          goto yyexhaustedlab;
+          YYNOMEM;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
@@ -1113,6 +1108,7 @@
     }
 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
+
   if (yystate == YYFINAL)
     YYACCEPT;
 
@@ -1228,7 +1224,7 @@
          { cur_parent = root_parent; }
     break;
 
-  case 23: /* @1: %empty  */
+  case 24: /* @1: %empty  */
                                 {
 	(yyval.chip_instance) = new_chip_instance((yyvsp[0].string));
 	chip_enqueue_tail(cur_chip_instance);
@@ -1236,105 +1232,113 @@
 }
     break;
 
-  case 24: /* chip: CHIP STRING @1 chipchildren_dev END  */
+  case 25: /* chip: CHIP STRING @1 chipchildren_dev END  */
                              {
 	cur_chip_instance = chip_dequeue_tail();
 }
     break;
 
-  case 25: /* @2: %empty  */
+  case 26: /* @2: %empty  */
                                                        {
 	(yyval.dev) = new_device_raw(cur_parent, cur_chip_instance, (yyvsp[-3].number), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].number));
 	cur_parent = (yyval.dev)->last_bus;
 }
     break;
 
-  case 26: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END  */
+  case 27: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END  */
                            {
 	cur_parent = (yyvsp[-2].dev)->parent;
 }
     break;
 
-  case 27: /* @3: %empty  */
+  case 28: /* @3: %empty  */
                                        {
 	(yyval.dev) = new_device_reference(cur_parent, cur_chip_instance, (yyvsp[-1].string), (yyvsp[0].number));
 	cur_parent = (yyval.dev)->last_bus;
 }
     break;
 
-  case 28: /* device: DEVICE REFERENCE STRING status @3 devicechildren END  */
+  case 29: /* device: DEVICE REFERENCE STRING status @3 devicechildren END  */
                            {
 	cur_parent = (yyvsp[-2].dev)->parent;
 }
     break;
 
-  case 29: /* alias: %empty  */
+  case 30: /* alias: %empty  */
                    {
 	(yyval.string) = NULL;
 }
     break;
 
-  case 30: /* alias: ALIAS STRING  */
+  case 31: /* alias: ALIAS STRING  */
                  {
 	(yyval.string) = (yyvsp[0].string);
 }
     break;
 
-  case 33: /* resource: RESOURCE NUMBER EQUALS NUMBER  */
+  case 34: /* resource: RESOURCE NUMBER EQUALS NUMBER  */
         { add_resource(cur_parent, (yyvsp[-3].number), strtol((yyvsp[-2].string), NULL, 0), strtol((yyvsp[0].string), NULL, 0)); }
     break;
 
-  case 34: /* reference: REFERENCE STRING ASSOCIATION STRING  */
+  case 35: /* reference: REFERENCE STRING ASSOCIATION STRING  */
         { add_reference(cur_chip_instance, (yyvsp[0].string), (yyvsp[-2].string)); }
     break;
 
-  case 35: /* registers: REGISTER STRING EQUALS STRING  */
+  case 36: /* registers: REGISTER STRING EQUALS STRING  */
         { add_register(cur_chip_instance, (yyvsp[-2].string), (yyvsp[0].string)); }
     break;
 
-  case 36: /* subsystemid: SUBSYSTEMID NUMBER NUMBER  */
+  case 37: /* subsystemid: SUBSYSTEMID NUMBER NUMBER  */
         { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-1].string), NULL, 16), strtol((yyvsp[0].string), NULL, 16), 0); }
     break;
 
-  case 37: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT  */
+  case 38: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT  */
         { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-2].string), NULL, 16), strtol((yyvsp[-1].string), NULL, 16), 1); }
     break;
 
-  case 38: /* ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER  */
+  case 39: /* ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER  */
         { add_ioapic_info(cur_parent, strtol((yyvsp[-2].string), NULL, 16), (yyvsp[-1].string), strtol((yyvsp[0].string), NULL, 16)); }
     break;
 
-  case 39: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING  */
+  case 40: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING  */
         { add_slot_desc(cur_parent, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string)); }
     break;
 
-  case 40: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING  */
+  case 41: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING  */
         { add_slot_desc(cur_parent, (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL); }
     break;
 
-  case 41: /* smbios_slot_desc: SLOT_DESC STRING STRING  */
+  case 42: /* smbios_slot_desc: SLOT_DESC STRING STRING  */
         { add_slot_desc(cur_parent, (yyvsp[-1].string), (yyvsp[0].string), NULL, NULL); }
     break;
 
-  case 42: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END  */
+  case 43: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER STRING  */
+        { add_smbios_dev_info(cur_parent, strtol((yyvsp[-1].string), NULL, 0), (yyvsp[0].string)); }
+    break;
+
+  case 44: /* smbios_dev_info: SMBIOS_DEV_INFO NUMBER  */
+        { add_smbios_dev_info(cur_parent, strtol((yyvsp[0].string), NULL, 0), NULL); }
+    break;
+
+  case 45: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END  */
                                                               { }
     break;
 
-  case 47: /* fw_config_field_bits: NUMBER NUMBER  */
+  case 50: /* fw_config_field_bits: NUMBER NUMBER  */
 {
 	append_fw_config_bits(&cur_bits, strtoul((yyvsp[-1].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
 }
     break;
 
-  case 50: /* $@4: %empty  */
+  case 53: /* $@4: %empty  */
         { cur_field = new_fw_config_field((yyvsp[-2].string), cur_bits); }
     break;
 
-  case 51: /* fw_config_field: FW_CONFIG_FIELD STRING fw_config_field_bits fw_config_field_bits_repeating $@4 fw_config_field_children END  */
+  case 54: /* fw_config_field: FW_CONFIG_FIELD STRING fw_config_field_bits fw_config_field_bits_repeating $@4 fw_config_field_children END  */
                                      { cur_bits = NULL; }
     break;
 
-  case 52: /* $@5: %empty  */
+  case 55: /* $@5: %empty  */
                                                             {
 	cur_bits = NULL;
 	append_fw_config_bits(&cur_bits, strtoul((yyvsp[0].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
@@ -1342,25 +1346,25 @@
 }
     break;
 
-  case 53: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END  */
+  case 56: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END  */
                                      { cur_bits = NULL; }
     break;
 
-  case 54: /* $@6: %empty  */
+  case 57: /* $@6: %empty  */
                                         {
 	cur_field = get_fw_config_field((yyvsp[0].string));
 }
     break;
 
-  case 55: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END  */
+  case 58: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END  */
                                      { cur_bits = NULL; }
     break;
 
-  case 56: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER  */
+  case 59: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER  */
         { add_fw_config_option(cur_field, (yyvsp[-1].string), strtoull((yyvsp[0].string), NULL, 0)); }
     break;
 
-  case 57: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING  */
+  case 60: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING  */
         { add_fw_config_probe(cur_parent, (yyvsp[-1].string), (yyvsp[0].string)); }
     break;
 
@@ -1446,6 +1450,7 @@
      label yyerrorlab therefore never appears in user code.  */
   if (0)
     YYERROR;
+  ++yynerrs;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -1506,7 +1511,7 @@
 `-------------------------------------*/
 yyacceptlab:
   yyresult = 0;
-  goto yyreturn;
+  goto yyreturnlab;
 
 
 /*-----------------------------------.
@@ -1514,24 +1519,22 @@
 `-----------------------------------*/
 yyabortlab:
   yyresult = 1;
-  goto yyreturn;
+  goto yyreturnlab;
 
 
-#if !defined yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
+/*-----------------------------------------------------------.
+| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
+`-----------------------------------------------------------*/
 yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  goto yyreturn;
-#endif
+  goto yyreturnlab;
 
 
-/*-------------------------------------------------------.
-| yyreturn -- parsing is finished, clean up and return.  |
-`-------------------------------------------------------*/
-yyreturn:
+/*----------------------------------------------------------.
+| yyreturnlab -- parsing is finished, clean up and return.  |
+`----------------------------------------------------------*/
+yyreturnlab:
   if (yychar != YYEMPTY)
     {
       /* Make sure we have latest lookahead translation.  See comments at
