+++ /dev/null
-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__ */
-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__
+
+#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"
+
+ 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];
+};
+
+#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"
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 *
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 *
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;
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));
/* 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));
}
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) {
+
+ 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;
/* 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);
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) {
+
+ 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 */
*((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;
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);
+ 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;
}
/* 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;
}
/* 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;
}
/*
* 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));
/* 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" );
}
}
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;
table = t;
-@@ -650,6 +654,107 @@ int hpet_exists(unsigned long hpet_base)
+@@ -650,6 +654,107 @@
return ((hpet_id >> 16) == 0x8086);
}
/*
* 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())
/* 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
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;
};
+++ /dev/null
-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;