]> xenbits.xen.org Git - xenclient/xen-pq.git/commitdiff
Unified SMBIOS patch.
authorRoss Philipson <ross.philipson@citrix.com>
Wed, 12 Aug 2009 08:16:18 +0000 (04:16 -0400)
committerRoss Philipson <ross.philipson@citrix.com>
Wed, 12 Aug 2009 08:16:18 +0000 (04:16 -0400)
 Changes to be committed:
deleted:    master/rm-oem-smbios-files.patch
modified:   master/series
modified:   master/smbios
deleted:    master/smbios-table2.patch

master/rm-oem-smbios-files.patch [deleted file]
master/series
master/smbios
master/smbios-table2.patch [deleted file]

diff --git a/master/rm-oem-smbios-files.patch b/master/rm-oem-smbios-files.patch
deleted file mode 100644 (file)
index 272eabc..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-diff --git a/oem/dell-960-optiplex-smbios.patch b/oem/dell-960-optiplex-smbios.patch
-deleted file mode 100644
-index bd5613e..0000000
---- a/oem/dell-960-optiplex-smbios.patch
-+++ /dev/null
-@@ -1,49 +0,0 @@
--diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
----- a/tools/firmware/hvmloader/markers.h      2008-11-25 12:47:54.000000000 -0500
--+++ b/tools/firmware/hvmloader/markers.h      2008-11-25 12:53:27.000000000 -0500
--@@ -17,22 +17,22 @@
-- struct bios_vendor_struct {
--     char marker[65];
--     char value[65];
---} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
--+} bios_vendor = {BIOS_VENDOR_MARKER, "Dell Inc."};
-- 
-- struct bios_version_struct {
--     char marker[65];
--     char value[65];
---} bios_version = {BIOS_VERSION_MARKER, ""};
--+} bios_version = {BIOS_VERSION_MARKER, "X20"};
-- 
-- struct sys_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
--+} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Dell Inc."};
-- 
-- struct sys_product_name_struct {
--     char marker[65];
--     char value[65];
---} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
--+} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "OptiPlex 960"};
-- 
-- struct sys_product_version_struct {
--     char marker[65];
--@@ -57,15 +57,15 @@
-- struct sys_enclosure_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
--+} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Dell Inc."};
-- 
-- struct sys_enclosure_serial_struct {
--     char marker[65];
--     char value[65];
-- } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-- 
---const char *oem_strings_array[1] = {
---    NULL
--+const char *oem_strings_array[2] = {
--+    "www.dell.com", NULL
-- };
-- 
-- #endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/oem/dell-e6500-latitude-smbios.patch b/oem/dell-e6500-latitude-smbios.patch
-deleted file mode 100644
-index b949c7c..0000000
---- a/oem/dell-e6500-latitude-smbios.patch
-+++ /dev/null
-@@ -1,49 +0,0 @@
--diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
----- a/tools/firmware/hvmloader/markers.h      2008-12-15 14:44:08.000000000 -0500
--+++ b/tools/firmware/hvmloader/markers.h      2008-12-15 14:56:51.000000000 -0500
--@@ -17,22 +17,22 @@
-- struct bios_vendor_struct {
--     char marker[65];
--     char value[65];
---} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
--+} bios_vendor = {BIOS_VENDOR_MARKER, "Dell Inc."};
-- 
-- struct bios_version_struct {
--     char marker[65];
--     char value[65];
---} bios_version = {BIOS_VERSION_MARKER, ""};
--+} bios_version = {BIOS_VERSION_MARKER, "A09"};
-- 
-- struct sys_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
--+} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Dell Inc."};
-- 
-- struct sys_product_name_struct {
--     char marker[65];
--     char value[65];
---} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
--+} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "Latitude E6500"};
-- 
-- struct sys_product_version_struct {
--     char marker[65];
--@@ -57,15 +57,15 @@
-- struct sys_enclosure_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
--+} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Dell Inc."};
-- 
-- struct sys_enclosure_serial_struct {
--     char marker[65];
--     char value[65];
-- } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-- 
---const char *oem_strings_array[1] = {
---    NULL
--+const char *oem_strings_array[4] = {
--+    "Dell System", "5[0031]", "13[PP04X]", NULL
-- };
-- 
-- #endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/oem/hp-6930p-elitebook-smbios.patch b/oem/hp-6930p-elitebook-smbios.patch
-deleted file mode 100644
-index 8441b2a..0000000
---- a/oem/hp-6930p-elitebook-smbios.patch
-+++ /dev/null
-@@ -1,67 +0,0 @@
--diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
----- a/tools/firmware/hvmloader/markers.h      2008-11-25 12:47:54.000000000 -0500
--+++ b/tools/firmware/hvmloader/markers.h      2008-11-25 12:46:41.000000000 -0500
--@@ -17,27 +17,27 @@
-- struct bios_vendor_struct {
--     char marker[65];
--     char value[65];
---} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
--+} bios_vendor = {BIOS_VENDOR_MARKER, "Hewlett-Packard"};
-- 
-- struct bios_version_struct {
--     char marker[65];
--     char value[65];
---} bios_version = {BIOS_VERSION_MARKER, ""};
--+} bios_version = {BIOS_VERSION_MARKER, "68PCU Ver. F.0B"};
-- 
-- struct sys_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
--+} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Hewlett-Packard"};
-- 
-- struct sys_product_name_struct {
--     char marker[65];
--     char value[65];
---} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
--+} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HP EliteBook 6930p"};
-- 
-- struct sys_product_version_struct {
--     char marker[65];
--     char value[65];
---} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, ""};
--+} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, "F.0B"};
-- 
-- struct sys_product_serial_struct {
--     char marker[65];
--@@ -47,25 +47,25 @@
-- struct sys_product_sku_struct {
--     char marker[65];
--     char value[65];
---} sys_product_sku = {SYS_PRODUCT_SKU_MARKER, ""};
--+} sys_product_sku = {SYS_PRODUCT_SKU_MARKER, "GB996EA#ABU"};
-- 
-- struct sys_product_family_struct {
--     char marker[65];
--     char value[65];
---} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
--+} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, "103C_5336AN"};
-- 
-- struct sys_enclosure_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
--+} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Hewlett-Packard"};
-- 
-- struct sys_enclosure_serial_struct {
--     char marker[65];
--     char value[65];
-- } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-- 
---const char *oem_strings_array[1] = {
---    NULL
--+const char *oem_strings_array[4] = {
--+    "ABS 70/71 79 7A 7B 7C", "CSM v01.24", "www.hp.com", NULL
-- };
-- 
-- #endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/oem/lenovo-x200-thinkpad-smbios.patch b/oem/lenovo-x200-thinkpad-smbios.patch
-deleted file mode 100644
-index 26d1f09..0000000
---- a/oem/lenovo-x200-thinkpad-smbios.patch
-+++ /dev/null
-@@ -1,61 +0,0 @@
--diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
----- a/tools/firmware/hvmloader/markers.h      2008-12-15 14:44:08.000000000 -0500
--+++ b/tools/firmware/hvmloader/markers.h      2008-12-16 10:09:53.000000000 -0500
--@@ -17,27 +17,27 @@
-- struct bios_vendor_struct {
--     char marker[65];
--     char value[65];
---} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
--+} bios_vendor = {BIOS_VENDOR_MARKER, "LENOVO"};
-- 
-- struct bios_version_struct {
--     char marker[65];
--     char value[65];
---} bios_version = {BIOS_VERSION_MARKER, ""};
--+} bios_version = {BIOS_VERSION_MARKER, "6DET33WW (1.10 )"};
-- 
-- struct sys_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
--+} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "LENOVO"};
-- 
-- struct sys_product_name_struct {
--     char marker[65];
--     char value[65];
---} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
--+} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "74542NU"};
-- 
-- struct sys_product_version_struct {
--     char marker[65];
--     char value[65];
---} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, ""};
--+} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, "ThinkPad X200"};
-- 
-- struct sys_product_serial_struct {
--     char marker[65];
--@@ -52,20 +52,20 @@
-- struct sys_product_family_struct {
--     char marker[65];
--     char value[65];
---} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
--+} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, "ThinkPad X200"};
-- 
-- struct sys_enclosure_manufacturer_struct {
--     char marker[65];
--     char value[65];
---} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
--+} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "LENOVO"};
-- 
-- struct sys_enclosure_serial_struct {
--     char marker[65];
--     char value[65];
-- } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-- 
---const char *oem_strings_array[1] = {
---    NULL
--+const char *oem_strings_array[2] = {
--+    "IBM ThinkPad Embedded Controller -[7XHT21WW-1.03    ]-", NULL
-- };
-- 
-- #endif /* __HVMLOADER_MARKERS_H__ */
index 70f8e75adf1d6c1dc1d605f89c5944375ed28a21..c027f7b68d66fa6d78b5ef84418d65e5488e4817 100644 (file)
@@ -18,5 +18,3 @@ tools-hvm-info
 default-iommu-inclusive-mapping
 igd-cmd-reg-change-for-reboot
 xblanker
-rm-oem-smbios-files.patch
-smbios-table2.patch
index 092326163e47725b2c2a5455044382c7b86d59cd..d53ea937d29c1e2f20fc79c7f7c5ef78f58975bf 100644 (file)
@@ -1,260 +1,7 @@
-diff
-diff --git a/oem/dell-960-optiplex-smbios.patch b/oem/dell-960-optiplex-smbios.patch
-new file mode 100644
-index 0000000..bd5613e
---- /dev/null
-+++ b/oem/dell-960-optiplex-smbios.patch
-@@ -0,0 +1,49 @@
-+diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
-+--- a/tools/firmware/hvmloader/markers.h      2008-11-25 12:47:54.000000000 -0500
-++++ b/tools/firmware/hvmloader/markers.h      2008-11-25 12:53:27.000000000 -0500
-+@@ -17,22 +17,22 @@
-+ struct bios_vendor_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
-++} bios_vendor = {BIOS_VENDOR_MARKER, "Dell Inc."};
-+ 
-+ struct bios_version_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_version = {BIOS_VERSION_MARKER, ""};
-++} bios_version = {BIOS_VERSION_MARKER, "X20"};
-+ 
-+ struct sys_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
-++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Dell Inc."};
-+ 
-+ struct sys_product_name_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
-++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "OptiPlex 960"};
-+ 
-+ struct sys_product_version_struct {
-+     char marker[65];
-+@@ -57,15 +57,15 @@
-+ struct sys_enclosure_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
-++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Dell Inc."};
-+ 
-+ struct sys_enclosure_serial_struct {
-+     char marker[65];
-+     char value[65];
-+ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-+ 
-+-const char *oem_strings_array[1] = {
-+-    NULL
-++const char *oem_strings_array[2] = {
-++    "www.dell.com", NULL
-+ };
-+ 
-+ #endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/oem/dell-e6500-latitude-smbios.patch b/oem/dell-e6500-latitude-smbios.patch
-new file mode 100644
-index 0000000..b949c7c
---- /dev/null
-+++ b/oem/dell-e6500-latitude-smbios.patch
-@@ -0,0 +1,49 @@
-+diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
-+--- a/tools/firmware/hvmloader/markers.h      2008-12-15 14:44:08.000000000 -0500
-++++ b/tools/firmware/hvmloader/markers.h      2008-12-15 14:56:51.000000000 -0500
-+@@ -17,22 +17,22 @@
-+ struct bios_vendor_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
-++} bios_vendor = {BIOS_VENDOR_MARKER, "Dell Inc."};
-+ 
-+ struct bios_version_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_version = {BIOS_VERSION_MARKER, ""};
-++} bios_version = {BIOS_VERSION_MARKER, "A09"};
-+ 
-+ struct sys_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
-++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Dell Inc."};
-+ 
-+ struct sys_product_name_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
-++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "Latitude E6500"};
-+ 
-+ struct sys_product_version_struct {
-+     char marker[65];
-+@@ -57,15 +57,15 @@
-+ struct sys_enclosure_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
-++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Dell Inc."};
-+ 
-+ struct sys_enclosure_serial_struct {
-+     char marker[65];
-+     char value[65];
-+ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-+ 
-+-const char *oem_strings_array[1] = {
-+-    NULL
-++const char *oem_strings_array[4] = {
-++    "Dell System", "5[0031]", "13[PP04X]", NULL
-+ };
-+ 
-+ #endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/oem/hp-6930p-elitebook-smbios.patch b/oem/hp-6930p-elitebook-smbios.patch
-new file mode 100644
-index 0000000..8441b2a
---- /dev/null
-+++ b/oem/hp-6930p-elitebook-smbios.patch
-@@ -0,0 +1,67 @@
-+diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
-+--- a/tools/firmware/hvmloader/markers.h      2008-11-25 12:47:54.000000000 -0500
-++++ b/tools/firmware/hvmloader/markers.h      2008-11-25 12:46:41.000000000 -0500
-+@@ -17,27 +17,27 @@
-+ struct bios_vendor_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
-++} bios_vendor = {BIOS_VENDOR_MARKER, "Hewlett-Packard"};
-+ 
-+ struct bios_version_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_version = {BIOS_VERSION_MARKER, ""};
-++} bios_version = {BIOS_VERSION_MARKER, "68PCU Ver. F.0B"};
-+ 
-+ struct sys_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
-++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Hewlett-Packard"};
-+ 
-+ struct sys_product_name_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
-++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HP EliteBook 6930p"};
-+ 
-+ struct sys_product_version_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, ""};
-++} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, "F.0B"};
-+ 
-+ struct sys_product_serial_struct {
-+     char marker[65];
-+@@ -47,25 +47,25 @@
-+ struct sys_product_sku_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_sku = {SYS_PRODUCT_SKU_MARKER, ""};
-++} sys_product_sku = {SYS_PRODUCT_SKU_MARKER, "GB996EA#ABU"};
-+ 
-+ struct sys_product_family_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
-++} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, "103C_5336AN"};
-+ 
-+ struct sys_enclosure_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
-++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Hewlett-Packard"};
-+ 
-+ struct sys_enclosure_serial_struct {
-+     char marker[65];
-+     char value[65];
-+ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-+ 
-+-const char *oem_strings_array[1] = {
-+-    NULL
-++const char *oem_strings_array[4] = {
-++    "ABS 70/71 79 7A 7B 7C", "CSM v01.24", "www.hp.com", NULL
-+ };
-+ 
-+ #endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/oem/lenovo-x200-thinkpad-smbios.patch b/oem/lenovo-x200-thinkpad-smbios.patch
-new file mode 100644
-index 0000000..26d1f09
---- /dev/null
-+++ b/oem/lenovo-x200-thinkpad-smbios.patch
-@@ -0,0 +1,61 @@
-+diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
-+--- a/tools/firmware/hvmloader/markers.h      2008-12-15 14:44:08.000000000 -0500
-++++ b/tools/firmware/hvmloader/markers.h      2008-12-16 10:09:53.000000000 -0500
-+@@ -17,27 +17,27 @@
-+ struct bios_vendor_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
-++} bios_vendor = {BIOS_VENDOR_MARKER, "LENOVO"};
-+ 
-+ struct bios_version_struct {
-+     char marker[65];
-+     char value[65];
-+-} bios_version = {BIOS_VERSION_MARKER, ""};
-++} bios_version = {BIOS_VERSION_MARKER, "6DET33WW (1.10 )"};
-+ 
-+ struct sys_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
-++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "LENOVO"};
-+ 
-+ struct sys_product_name_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
-++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "74542NU"};
-+ 
-+ struct sys_product_version_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, ""};
-++} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, "ThinkPad X200"};
-+ 
-+ struct sys_product_serial_struct {
-+     char marker[65];
-+@@ -52,20 +52,20 @@
-+ struct sys_product_family_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
-++} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, "ThinkPad X200"};
-+ 
-+ struct sys_enclosure_manufacturer_struct {
-+     char marker[65];
-+     char value[65];
-+-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
-++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "LENOVO"};
-+ 
-+ struct sys_enclosure_serial_struct {
-+     char marker[65];
-+     char value[65];
-+ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
-+ 
-+-const char *oem_strings_array[1] = {
-+-    NULL
-++const char *oem_strings_array[2] = {
-++    "IBM ThinkPad Embedded Controller -[7XHT21WW-1.03    ]-", NULL
-+ };
-+ 
-+ #endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
-new file mode 100644
-index 0000000..7673d22
---- /dev/null
-+++ b/tools/firmware/hvmloader/markers.h
-@@ -0,0 +1,71 @@
+diff -r 13fe7f07df15 tools/firmware/hvmloader/markers.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/tools/firmware/hvmloader/markers.h       Mon Aug 10 08:13:40 2009 -0400
+@@ -0,0 +1,90 @@
 +#ifndef __HVMLOADER_MARKERS_H__
 +#define __HVMLOADER_MARKERS_H__
 +
@@ -268,6 +15,10 @@ index 0000000..7673d22
 +#define SYS_PRODUCT_SKU_MARKER "##########################################SYS_PRODUCT_SKU_MARKER"
 +#define SYS_PRODUCT_FAMILY_MARKER "#######################################SYS_PRODUCT_FAMILY_MARKER"
 +
++#define SYS_BOARD_MANUFACTURER_MARKER "###################################SYS_BOARD_MANUFACTURER_MARKER"
++#define SYS_BOARD_PRODUCT_NAME_MARKER "###################################SYS_BOARD_PRODUCT_NAME_MARKER"
++#define SYS_BOARD_SERIAL_MARKER "#########################################SYS_BOARD_SERIAL_MARKER"
++
 +#define SYS_ENCLOSURE_MANUFACTURER_MARKER "###############################SYS_ENCLOSURE_MANUFACTURER_MARKER"
 +#define SYS_ENCLOSURE_SERIAL_MARKER "#####################################SYS_ENCLOSURE_SERIAL_MARKER"
 +
@@ -311,6 +62,21 @@ index 0000000..7673d22
 +    char value[65];
 +} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
 +
++struct sys_board_manufacturer_struct {
++    char marker[65];
++    char value[65];
++} sys_board_manufacturer = {SYS_BOARD_MANUFACTURER_MARKER, "Xen"};
++
++struct sys_board_product_name_struct {
++    char marker[65];
++    char value[65];
++} sys_board_product_name = {SYS_BOARD_PRODUCT_NAME_MARKER, "HVM domU"};
++
++struct sys_board_serial_struct {
++    char marker[65];
++    char value[65];
++} sys_board_serial = {SYS_BOARD_SERIAL_MARKER, ""};
++
 +struct sys_enclosure_manufacturer_struct {
 +    char marker[65];
 +    char value[65];
@@ -326,10 +92,9 @@ index 0000000..7673d22
 +};
 +
 +#endif /* __HVMLOADER_MARKERS_H__ */
-diff --git a/tools/firmware/hvmloader/smbios.c b/tools/firmware/hvmloader/smbios.c
-index 64fa799..c6024c4 100644
---- a/tools/firmware/hvmloader/smbios.c
-+++ b/tools/firmware/hvmloader/smbios.c
+diff -r 13fe7f07df15 tools/firmware/hvmloader/smbios.c
+--- a/tools/firmware/hvmloader/smbios.c        Thu Aug 06 13:27:53 2009 +0100
++++ b/tools/firmware/hvmloader/smbios.c        Mon Aug 10 08:13:40 2009 -0400
 @@ -27,6 +27,7 @@
  #include "util.h"
  #include "hypercall.h"
@@ -338,7 +103,14 @@ index 64fa799..c6024c4 100644
  
  static int
  write_smbios_tables(void *start,
-@@ -54,6 +55,10 @@ static void *
+@@ -49,11 +50,17 @@
+ smbios_type_1_init(void *start, const char *xen_version, 
+                    uint8_t uuid[16]);
+ static void *
++smbios_type_2_init(void *start);
++static void *
+ smbios_type_3_init(void *start);
+ static void *
  smbios_type_4_init(void *start, unsigned int cpu_number,
                     char *cpu_manufacturer);
  static void *
@@ -349,7 +121,7 @@ index 64fa799..c6024c4 100644
  smbios_type_16_init(void *start, uint32_t memory_size_mb, int nr_mem_devs);
  static void *
  smbios_type_17_init(void *start, uint32_t memory_size_mb, int instance);
-@@ -62,9 +67,13 @@ smbios_type_19_init(void *start, uint32_t memory_size_mb, int instance);
+@@ -62,9 +69,13 @@
  static void *
  smbios_type_20_init(void *start, uint32_t memory_size_mb, int instance);
  static void *
@@ -363,7 +135,7 @@ index 64fa799..c6024c4 100644
  
  static void
  get_cpu_manufacturer(char *buf, int len)
-@@ -93,6 +102,10 @@ write_smbios_tables(void *start,
+@@ -93,6 +104,10 @@
      char *p, *q;
      char cpu_manufacturer[15];
      int i, nr_mem_devs;
@@ -374,7 +146,11 @@ index 64fa799..c6024c4 100644
  
      get_cpu_manufacturer(cpu_manufacturer, 15);
  
-@@ -112,6 +125,8 @@ write_smbios_tables(void *start,
+@@ -109,9 +124,12 @@
+     do_struct(smbios_type_0_init(p, xen_version, xen_major_version,
+                                  xen_minor_version));
+     do_struct(smbios_type_1_init(p, xen_version, uuid));
++    do_struct(smbios_type_2_init(p));
      do_struct(smbios_type_3_init(p));
      for ( cpu_num = 1; cpu_num <= vcpus; cpu_num++ )
          do_struct(smbios_type_4_init(p, cpu_num, cpu_manufacturer));
@@ -383,7 +159,7 @@ index 64fa799..c6024c4 100644
  
      /* Each 'memory device' covers up to 16GB of address space. */
      nr_mem_devs = (memsize + 0x3fff) >> 14;
-@@ -126,7 +141,26 @@ write_smbios_tables(void *start,
+@@ -126,7 +144,26 @@
          do_struct(smbios_type_20_init(p, dev_memsize, i));
      }
  
@@ -410,16 +186,16 @@ index 64fa799..c6024c4 100644
      do_struct(smbios_type_127_init(p));
  
  #undef do_struct
-@@ -280,9 +314,33 @@ static void *
+@@ -281,9 +318,33 @@
  smbios_type_0_init(void *start, const char *xen_version,
                     uint32_t xen_major_version, uint32_t xen_minor_version)
  {
--    struct smbios_type_0 *p = (struct smbios_type_0 *)start;
-     static const char *smbios_release_date = __SMBIOS_DATE__;
-+    struct smbios_type_0 *p = (struct smbios_type_0 *)start;
++    static const char *smbios_release_date = __SMBIOS_DATE__;
+     struct smbios_type_0 *p = (struct smbios_type_0 *)start;
+-    static const char *smbios_release_date = __SMBIOS_DATE__;
 +    struct hvm_sminfo_table *pa_sm;
 +    struct hvm_smtable_header *header;
-+
 +    /* if passed a struct, use it */
 +    pa_sm = get_hvm_sminfo_table();
 +    while (pa_sm != NULL) {
@@ -440,12 +216,12 @@ index 64fa799..c6024c4 100644
 +
 +        return (start + header->sm_length);
 +    }
++
 +    /* fall back to building our own */
      memset(p, 0, sizeof(*p));
  
      p->header.type = 0;
-@@ -295,6 +353,7 @@ smbios_type_0_init(void *start, const char *xen_version,
+@@ -296,6 +357,7 @@
      p->release_date_str = 3;
      p->rom_size = 0;
  
@@ -453,7 +229,7 @@ index 64fa799..c6024c4 100644
      /* BIOS Characteristics. */
      p->characteristics[0] = 0x80; /* PCI is supported */
      p->characteristics[2] = 0x08; /* EDD is supported */
-@@ -308,10 +367,16 @@ smbios_type_0_init(void *start, const char *xen_version,
+@@ -309,10 +371,16 @@
      p->embedded_controller_minor = 0xff;
  
      start += sizeof(struct smbios_type_0);
@@ -474,14 +250,14 @@ index 64fa799..c6024c4 100644
      strcpy((char *)start, smbios_release_date);
      start += strlen(smbios_release_date) + 1;
  
-@@ -326,7 +391,27 @@ smbios_type_1_init(void *start, const char *xen_version,
+@@ -327,7 +395,27 @@
  {
      char uuid_str[37];
      struct smbios_type_1 *p = (struct smbios_type_1 *)start;
 +    int next = 5;
 +    struct hvm_sminfo_table *pa_sm;
 +    struct hvm_smtable_header *header;
-+
 +    /* if passed a struct, use it */
 +    pa_sm = get_hvm_sminfo_table();
 +    while (pa_sm != NULL) {
@@ -497,12 +273,12 @@ index 64fa799..c6024c4 100644
 +
 +        return (start + header->sm_length);
 +    }
++
 +    /* fall back to building our own */
      memset(p, 0, sizeof(*p));
  
      p->header.type = 1;
-@@ -341,20 +426,46 @@ smbios_type_1_init(void *start, const char *xen_version,
+@@ -342,31 +430,138 @@
      memcpy(p->uuid, uuid, 16);
  
      p->wake_up_type = 0x06; /* power switch */
@@ -560,7 +336,72 @@ index 64fa799..c6024c4 100644
      *((uint8_t *)start) = 0;
      
      return start+1; 
-@@ -365,7 +476,26 @@ static void *
+ }
++/* Type 2 -- System Board */
++static void *
++smbios_type_2_init(void *start)
++{
++    struct smbios_type_2 *p = (struct smbios_type_2 *)start;
++    struct hvm_sminfo_table *pa_sm;
++    struct hvm_smtable_header *header;
++    uint8_t *bptr;
++
++    /* if passed a struct, use it */
++    pa_sm = get_hvm_sminfo_table();
++    while (pa_sm != NULL) {
++        header = get_sminfo_by_type(pa_sm, 2, NULL);
++        if (header == NULL)
++            break;
++        if (header->sm_length < sizeof(struct smbios_type_2))
++            break;
++        memcpy(start, ((uint8_t*)header + sizeof(struct hvm_smtable_header)), header->sm_length);
++
++        /* fix up some bits */
++        p->header.handle = 0x200;
++        /* NOTE: if this code is enhanced to allow multiple instances of some tables like
++           this one, chassis info, etc. then work will have to be done to match these handles */
++        if (header->sm_length >= 13) {
++            bptr = ((uint8_t*)start) + 11;
++            if (*((uint16_t*)bptr) != 0)
++                *((uint16_t*)bptr) = 0x300; /* current chassis handle */
++        }
++        return (start + header->sm_length);
++    }
++
++    /* fall back to building our own */
++    memset(p, 0, sizeof(*p));
++
++    p->header.type = 2;
++    p->header.length = sizeof(struct smbios_type_2);
++    p->header.handle = 0x200;
++
++    p->manufacturer_str = 1;
++    p->product_name_str = 2;
++    p->version_str = 0;
++    p->serial_number_str = 0;
++
++    start += sizeof(struct smbios_type_2);
++    
++    strcpy((char *)start, sys_board_manufacturer.value);
++    start += strlen(sys_board_manufacturer.value) + 1;
++
++    strcpy((char *)start, sys_board_product_name.value);
++    start += strlen(sys_board_product_name.value) + 1;
++
++    /* no internal defaults for this if the value is not set */
++    if ( strlen(sys_board_serial.value) != 0 ) {
++        strcpy((char *)start, sys_board_serial.value);
++        start += strlen(sys_board_serial.value) + 1;
++        p->serial_number_str = 3;
++    }
++
++    *((uint8_t *)start) = 0;
++    return start+1;
++}
++
+ /* Type 3 -- System Enclosure */
+ static void *
  smbios_type_3_init(void *start)
  {
      struct smbios_type_3 *p = (struct smbios_type_3 *)start;
@@ -588,7 +429,7 @@ index 64fa799..c6024c4 100644
      memset(p, 0, sizeof(*p));
  
      p->header.type = 3;
-@@ -384,8 +514,18 @@ smbios_type_3_init(void *start)
+@@ -385,8 +580,16 @@
  
      start += sizeof(struct smbios_type_3);
      
@@ -603,13 +444,11 @@ index 64fa799..c6024c4 100644
 +        start += strlen(sys_enclosure_serial.value) + 1;
 +        p->serial_number_str = 2;
 +    }
-+    else
-+        p->serial_number_str = 0;
 +
      *((uint8_t *)start) = 0;
      return start+1;
  }
-@@ -440,6 +580,85 @@ smbios_type_4_init(
+@@ -441,6 +644,85 @@
      return start+1;
  }
  
@@ -695,7 +534,7 @@ index 64fa799..c6024c4 100644
  /* Type 16 -- Physical Memory Array */
  static void *
  smbios_type_16_init(void *start, uint32_t memsize, int nr_mem_devs)
-@@ -548,6 +767,54 @@ smbios_type_20_init(void *start, uint32_t memory_size_mb, int instance)
+@@ -549,6 +831,54 @@
      return start+2;
  }
  
@@ -750,7 +589,7 @@ index 64fa799..c6024c4 100644
  /* Type 32 -- System Boot Information */
  static void *
  smbios_type_32_init(void *start)
-@@ -584,6 +851,17 @@ smbios_type_127_init(void *start)
+@@ -585,6 +915,17 @@
      return start + 2;
  }
  
@@ -768,11 +607,26 @@ index 64fa799..c6024c4 100644
  /*
   * Local variables:
   * mode: C
-diff --git a/tools/firmware/hvmloader/smbios_types.h b/tools/firmware/hvmloader/smbios_types.h
-index 273db4a..a867657 100644
---- a/tools/firmware/hvmloader/smbios_types.h
-+++ b/tools/firmware/hvmloader/smbios_types.h
-@@ -115,6 +115,27 @@ struct smbios_type_4 {
+diff -r 13fe7f07df15 tools/firmware/hvmloader/smbios_types.h
+--- a/tools/firmware/hvmloader/smbios_types.h  Thu Aug 06 13:27:53 2009 +0100
++++ b/tools/firmware/hvmloader/smbios_types.h  Mon Aug 10 08:13:40 2009 -0400
+@@ -84,6 +84,15 @@
+       uint8_t family_str;
+ } __attribute__ ((packed));
++/* SMBIOS type 2 - Base Board Information */
++struct smbios_type_2 {
++      struct smbios_structure_header header;
++      uint8_t manufacturer_str;
++      uint8_t product_name_str;
++      uint8_t version_str;
++      uint8_t serial_number_str;
++} __attribute__ ((packed));
++
+ /* SMBIOS type 3 - System Enclosure */
+ struct smbios_type_3 {
+       struct smbios_structure_header header;
+@@ -115,6 +124,27 @@
        uint8_t upgrade;
  } __attribute__ ((packed));
  
@@ -800,38 +654,37 @@ index 273db4a..a867657 100644
  /* SMBIOS type 16 - Physical Memory Array
   *   Associated with one type 17 (Memory Device).
   */
-@@ -167,6 +188,26 @@ struct smbios_type_20 {
+@@ -167,6 +197,26 @@
        uint8_t interleaved_data_depth;
  } __attribute__ ((packed));
  
 +/* SMBIOS type 22 - Portable battery */
 +struct smbios_type_22 {
-+        struct smbios_structure_header header;
-+        uint8_t location_str;
-+        uint8_t manufacturer_str;
-+        uint8_t manufacturer_date_str;
-+        uint8_t serial_number_str;
-+        uint8_t device_name_str;
-+        uint8_t device_chemistry;
-+        uint16_t device_capacity;
-+        uint16_t device_voltage;
-+        uint8_t sbds_version_number;
-+        uint8_t max_error;
-+        uint16_t sbds_serial_number;
-+        uint16_t sbds_manufacturer_date;
-+        uint8_t sbds_device_chemistry;
-+        uint8_t design_capacity_multiplier;
-+        uint32_t oem_specific;
++      struct smbios_structure_header header;
++      uint8_t location_str;
++      uint8_t manufacturer_str;
++      uint8_t manufacturer_date_str;
++      uint8_t serial_number_str;
++      uint8_t device_name_str;
++      uint8_t device_chemistry;
++      uint16_t device_capacity;
++      uint16_t device_voltage;
++      uint8_t sbds_version_number;
++      uint8_t max_error;
++      uint16_t sbds_serial_number;
++      uint16_t sbds_manufacturer_date;
++      uint8_t sbds_device_chemistry;
++      uint8_t design_capacity_multiplier;
++      uint32_t oem_specific;
 +} __attribute__ ((packed));
 +
  /* SMBIOS type 32 - System Boot Information */
  struct smbios_type_32 {
        struct smbios_structure_header header;
-diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
-index ccf9bf9..530897c 100644
---- a/tools/firmware/hvmloader/util.c
-+++ b/tools/firmware/hvmloader/util.c
-@@ -542,32 +542,32 @@ void __bug(char *file, int line)
+diff -r 13fe7f07df15 tools/firmware/hvmloader/util.c
+--- a/tools/firmware/hvmloader/util.c  Thu Aug 06 13:27:53 2009 +0100
++++ b/tools/firmware/hvmloader/util.c  Mon Aug 10 08:13:40 2009 -0400
+@@ -542,32 +542,32 @@
          asm volatile ( "ud2" );
  }
  
@@ -880,7 +733,7 @@ index ccf9bf9..530897c 100644
  }
  
  struct hvm_info_table *get_hvm_info_table(void)
-@@ -580,7 +580,11 @@ struct hvm_info_table *get_hvm_info_table(void)
+@@ -580,7 +580,11 @@
  
      t = (struct hvm_info_table *)HVM_INFO_PADDR;
  
@@ -893,7 +746,7 @@ index ccf9bf9..530897c 100644
  
      table = t;
  
-@@ -650,6 +654,107 @@ int hpet_exists(unsigned long hpet_base)
+@@ -650,6 +654,107 @@
      return ((hpet_id >> 16) == 0x8086);
  }
  
@@ -1001,11 +854,10 @@ index ccf9bf9..530897c 100644
  /*
   * Local variables:
   * mode: C
-diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/util.h
-index e9e0dfd..9eac225 100644
---- a/tools/firmware/hvmloader/util.h
-+++ b/tools/firmware/hvmloader/util.h
-@@ -111,6 +111,12 @@ static inline void cpu_relax(void)
+diff -r 13fe7f07df15 tools/firmware/hvmloader/util.h
+--- a/tools/firmware/hvmloader/util.h  Thu Aug 06 13:27:53 2009 +0100
++++ b/tools/firmware/hvmloader/util.h  Mon Aug 10 08:13:40 2009 -0400
+@@ -111,6 +111,12 @@
  struct hvm_info_table *get_hvm_info_table(void);
  #define hvm_info (get_hvm_info_table())
  
@@ -1018,10 +870,9 @@ index e9e0dfd..9eac225 100644
  /* String and memory functions */
  int strcmp(const char *cs, const char *ct);
  int strncmp(const char *s1, const char *s2, uint32_t n);
-diff --git a/xen/include/public/hvm/hvm_info_table.h b/xen/include/public/hvm/hvm_info_table.h
-index b898455..3388479 100644
---- a/xen/include/public/hvm/hvm_info_table.h
-+++ b/xen/include/public/hvm/hvm_info_table.h
+diff -r 13fe7f07df15 xen/include/public/hvm/hvm_info_table.h
+--- a/xen/include/public/hvm/hvm_info_table.h  Thu Aug 06 13:27:53 2009 +0100
++++ b/xen/include/public/hvm/hvm_info_table.h  Mon Aug 10 08:13:40 2009 -0400
 @@ -28,6 +28,12 @@
  #define HVM_INFO_PFN         0x09F
  #define HVM_INFO_OFFSET      0x800
@@ -1035,7 +886,7 @@ index b898455..3388479 100644
  
  struct hvm_info_table {
      char        signature[8]; /* "HVM INFO" */
-@@ -66,4 +72,19 @@ struct hvm_info_table {
+@@ -66,4 +72,19 @@
      uint32_t    high_mem_pgend;
  };
  
diff --git a/master/smbios-table2.patch b/master/smbios-table2.patch
deleted file mode 100644 (file)
index 766bb65..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-diff --git a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
-index 7673d22..48cbd49 100644
---- a/tools/firmware/hvmloader/markers.h
-+++ b/tools/firmware/hvmloader/markers.h
-@@ -11,6 +11,10 @@
- #define SYS_PRODUCT_SKU_MARKER "##########################################SYS_PRODUCT_SKU_MARKER"
- #define SYS_PRODUCT_FAMILY_MARKER "#######################################SYS_PRODUCT_FAMILY_MARKER"
-+#define SYS_BOARD_MANUFACTURER_MARKER "###################################SYS_BOARD_MANUFACTURER_MARKER"
-+#define SYS_BOARD_PRODUCT_NAME_MARKER "###################################SYS_BOARD_PRODUCT_NAME_MARKER"
-+#define SYS_BOARD_SERIAL_MARKER "#########################################SYS_BOARD_SERIAL_MARKER"
-+
- #define SYS_ENCLOSURE_MANUFACTURER_MARKER "###############################SYS_ENCLOSURE_MANUFACTURER_MARKER"
- #define SYS_ENCLOSURE_SERIAL_MARKER "#####################################SYS_ENCLOSURE_SERIAL_MARKER"
-@@ -54,6 +58,21 @@ struct sys_product_family_struct {
-     char value[65];
- } sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
-+struct sys_board_manufacturer_struct {
-+    char marker[65];
-+    char value[65];
-+} sys_board_manufacturer = {SYS_BOARD_MANUFACTURER_MARKER, "Xen"};
-+
-+struct sys_board_product_name_struct {
-+    char marker[65];
-+    char value[65];
-+} sys_board_product_name = {SYS_BOARD_PRODUCT_NAME_MARKER, "HVM domU"};
-+
-+struct sys_board_serial_struct {
-+    char marker[65];
-+    char value[65];
-+} sys_board_serial = {SYS_BOARD_SERIAL_MARKER, ""};
-+
- struct sys_enclosure_manufacturer_struct {
-     char marker[65];
-     char value[65];
-diff --git a/tools/firmware/hvmloader/smbios.c b/tools/firmware/hvmloader/smbios.c
-index c6024c4..2337321 100644
---- a/tools/firmware/hvmloader/smbios.c
-+++ b/tools/firmware/hvmloader/smbios.c
-@@ -50,6 +50,8 @@ static void *
- smbios_type_1_init(void *start, const char *xen_version, 
-                    uint8_t uuid[16]);
- static void *
-+smbios_type_2_init(void *start);
-+static void *
- smbios_type_3_init(void *start);
- static void *
- smbios_type_4_init(void *start, unsigned int cpu_number,
-@@ -122,6 +124,7 @@ write_smbios_tables(void *start,
-     do_struct(smbios_type_0_init(p, xen_version, xen_major_version,
-                                  xen_minor_version));
-     do_struct(smbios_type_1_init(p, xen_version, uuid));
-+    do_struct(smbios_type_2_init(p));
-     do_struct(smbios_type_3_init(p));
-     for ( cpu_num = 1; cpu_num <= vcpus; cpu_num++ )
-         do_struct(smbios_type_4_init(p, cpu_num, cpu_manufacturer));
-@@ -471,6 +474,68 @@ smbios_type_1_init(void *start, const char *xen_version,
-     return start+1; 
- }
-+/* Type 2 -- System Board */
-+static void *
-+smbios_type_2_init(void *start)
-+{
-+    struct smbios_type_2 *p = (struct smbios_type_2 *)start;
-+    struct hvm_sminfo_table *pa_sm;
-+    struct hvm_smtable_header *header;
-+    uint8_t *bptr;
-+
-+    /* if passed a struct, use it */
-+    pa_sm = get_hvm_sminfo_table();
-+    while (pa_sm != NULL) {
-+        header = get_sminfo_by_type(pa_sm, 2, NULL);
-+        if (header == NULL)
-+            break;
-+        if (header->sm_length < sizeof(struct smbios_type_2))
-+            break;
-+        memcpy(start, ((uint8_t*)header + sizeof(struct hvm_smtable_header)), header->sm_length);
-+
-+        /* fix up some bits */
-+        p->header.handle = 0x200;
-+        /* NOTE: if this code is enhanced to allow multiple instances of some tables like
-+           this one, chassis info, etc. then work will have to be done to match these handles */
-+        if (header->sm_length >= 13) {
-+            bptr = ((uint8_t*)start) + 11;
-+            if (*((uint16_t*)bptr) != 0)
-+                *((uint16_t*)bptr) = 0x300; /* current chassis handle */
-+        }
-+        return (start + header->sm_length);
-+    }
-+
-+    /* fall back to building our own */
-+    memset(p, 0, sizeof(*p));
-+
-+    p->header.type = 2;
-+    p->header.length = sizeof(struct smbios_type_2);
-+    p->header.handle = 0x200;
-+
-+    p->manufacturer_str = 1;
-+    p->product_name_str = 2;
-+    p->version_str = 0;
-+    p->serial_number_str = 0;
-+
-+    start += sizeof(struct smbios_type_2);
-+    
-+    strcpy((char *)start, sys_board_manufacturer.value);
-+    start += strlen(sys_board_manufacturer.value) + 1;
-+
-+    strcpy((char *)start, sys_board_product_name.value);
-+    start += strlen(sys_board_product_name.value) + 1;
-+
-+    /* no internal defaults for this if the value is not set */
-+    if ( strlen(sys_board_serial.value) != 0 ) {
-+        strcpy((char *)start, sys_board_serial.value);
-+        start += strlen(sys_board_serial.value) + 1;
-+        p->serial_number_str = 3;
-+    }
-+
-+    *((uint8_t *)start) = 0;
-+    return start+1;
-+}
-+
- /* Type 3 -- System Enclosure */
- static void *
- smbios_type_3_init(void *start)
-@@ -523,8 +588,6 @@ smbios_type_3_init(void *start)
-         start += strlen(sys_enclosure_serial.value) + 1;
-         p->serial_number_str = 2;
-     }
--    else
--        p->serial_number_str = 0;
-     *((uint8_t *)start) = 0;
-     return start+1;
-diff --git a/tools/firmware/hvmloader/smbios_types.h b/tools/firmware/hvmloader/smbios_types.h
-index a867657..76c177e 100644
---- a/tools/firmware/hvmloader/smbios_types.h
-+++ b/tools/firmware/hvmloader/smbios_types.h
-@@ -84,6 +84,15 @@ struct smbios_type_1 {
-       uint8_t family_str;
- } __attribute__ ((packed));
-+/* SMBIOS type 2 - Base Board Information */
-+struct smbios_type_2 {
-+      struct smbios_structure_header header;
-+      uint8_t manufacturer_str;
-+      uint8_t product_name_str;
-+      uint8_t version_str;
-+      uint8_t serial_number_str;
-+} __attribute__ ((packed));
-+
- /* SMBIOS type 3 - System Enclosure */
- struct smbios_type_3 {
-       struct smbios_structure_header header;