diff --git a/dmidecode-2.12-smbios_fix.patch b/dmidecode-2.12-smbios_fix.patch
index ea590ec..f39205d 100644
--- a/dmidecode-2.12-smbios_fix.patch
+++ b/dmidecode-2.12-smbios_fix.patch
@@ -1,6 +1,20 @@
+diff -up dmidecode-2.12/CHANGELOG.smbios_fix dmidecode-2.12/CHANGELOG
+--- dmidecode-2.12/CHANGELOG.smbios_fix	2013-05-09 09:44:35.668592078 +0200
++++ dmidecode-2.12/CHANGELOG	2013-05-09 09:44:44.742610559 +0200
+@@ -1,3 +1,10 @@
++2013-04-24  Jean Delvare  <khali@linux-fr.org>
++
++	* dmidecode.c: Strip trailig zeroes from memory voltage values
++	  (DMI type 17).
++	* dmidecode.c: Fix support for new processor upgrade types (DMI
++	  type 4) and new memory device type (DMI type 17.)
++
+ 2013-04-17  Anton Arapov  <anton@redhat.com>
+ 
+ 	Update to support SMBIOS specification version 2.8.0.
 diff -up dmidecode-2.12/dmidecode.c.smbios_fix dmidecode-2.12/dmidecode.c
---- dmidecode-2.12/dmidecode.c.smbios_fix	2013-05-09 09:09:08.000000000 +0200
-+++ dmidecode-2.12/dmidecode.c	2013-05-09 09:13:17.059517709 +0200
+--- dmidecode-2.12/dmidecode.c.smbios_fix	2013-05-09 09:44:26.404573273 +0200
++++ dmidecode-2.12/dmidecode.c	2013-05-09 09:44:44.745610565 +0200
 @@ -69,7 +69,7 @@
  #define out_of_spec "<OUT OF SPEC>"
  static const char *bad_index = "<BAD INDEX>";
@@ -10,43 +24,23 @@ diff -up dmidecode-2.12/dmidecode.c.smbios_fix dmidecode-2.12/dmidecode.c
  
  /*
   * Type-independant Stuff
-@@ -711,8 +711,12 @@ static const char *dmi_processor_family(
- 		{ 0x3C, "Opteron 4100" },
+@@ -712,7 +712,6 @@ static const char *dmi_processor_family(
  		{ 0x3D, "Opteron 6200" },
  		{ 0x3E, "Opteron 4200" },
-+<<<<<<< dmidecode.c
  		{ 0x3F, "FX" },
- 
-+=======
-+		{ 0x3F, "FX" },
-+>>>>>>> 1.176
+-
  		{ 0x40, "MIPS" },
  		{ 0x41, "MIPS R4000" },
  		{ 0x42, "MIPS R4200" },
-@@ -723,6 +727,7 @@ static const char *dmi_processor_family(
- 		{ 0x47, "E-Series" },
- 		{ 0x48, "A-Series" },
- 		{ 0x49, "G-Series" },
-+<<<<<<< dmidecode.c
- 		{ 0x4A, "Z-Series" },
- 		{ 0x4B, "R-Series" },
- 		{ 0x4C, "Opteron 4300" },
-@@ -730,6 +735,14 @@ static const char *dmi_processor_family(
+@@ -729,7 +728,6 @@ static const char *dmi_processor_family(
+ 		{ 0x4D, "Opteron 6300" },
  		{ 0x4E, "Opteron 3300" },
  		{ 0x4F, "FirePro" },
- 
-+=======
-+		{ 0x4A, "Z-Series" },
-+		{ 0x4B, "R-Series" },
-+		{ 0x4C, "Opteron 4300" },
-+		{ 0x4D, "Opteron 6300" },
-+		{ 0x4E, "Opteron 3300" },
-+		{ 0x4F, "FirePro" },
-+>>>>>>> 1.176
+-
  		{ 0x50, "SPARC" },
  		{ 0x51, "SuperSPARC" },
  		{ 0x52, "MicroSPARC II" },
-@@ -1176,7 +1189,7 @@ static const char *dmi_processor_upgrade
+@@ -1176,7 +1174,7 @@ static const char *dmi_processor_upgrade
  		"Socket LGA1356-3" /* 0x2C */
  	};
  
@@ -55,32 +49,16 @@ diff -up dmidecode-2.12/dmidecode.c.smbios_fix dmidecode-2.12/dmidecode.c
  		return upgrade[code - 0x01];
  	return out_of_spec;
  }
-@@ -2231,6 +2244,7 @@ static void dmi_memory_device_extended_s
- 		printf(" %lu TB", (unsigned long)code >> 20);
- }
- 
-+<<<<<<< dmidecode.c
- static void dmi_memory_voltage_value(u16 code)
- {
+@@ -2236,7 +2234,7 @@ static void dmi_memory_voltage_value(u16
  	if (code == 0)
-@@ -2239,6 +2253,16 @@ static void dmi_memory_voltage_value(u16
- 		printf(" %.3f V", (float)(i16)code / 1000);
+ 		printf(" Unknown");
+ 	else
+-		printf(" %.3f V", (float)(i16)code / 1000);
++		printf(code % 100 ? " %g V" : " %.1f V", (float)code / 1000);
  }
  
-+=======
-+static void dmi_memory_voltage_value(u16 code)
-+{
-+	if (code == 0)
-+		printf(" Unknown");
-+	else
-+		printf(code % 100 ? " %g V" : " %.1f V", (float)code / 1000);
-+}
-+
-+>>>>>>> 1.176
  static const char *dmi_memory_device_form_factor(u8 code)
- {
- 	/* 7.18.1 */
-@@ -2338,7 +2362,7 @@ static void dmi_memory_device_type_detai
+@@ -2338,7 +2336,7 @@ static void dmi_memory_device_type_detai
  	{
  		int i;
  
@@ -89,31 +67,20 @@ diff -up dmidecode-2.12/dmidecode.c.smbios_fix dmidecode-2.12/dmidecode.c
  			if (code & (1 << i))
  				printf(" %s", detail[i - 1]);
  	}
-@@ -3656,6 +3680,7 @@ static void dmi_decode(const struct dmi_
- 			printf("\tConfigured Clock Speed:");
+@@ -3657,13 +3655,13 @@ static void dmi_decode(const struct dmi_
  			dmi_memory_device_speed(WORD(data + 0x20));
  			printf("\n");
-+<<<<<<< dmidecode.c
  			if (h->length < 0x28) break;
- 			printf("\tMinimum voltage: ");
+-			printf("\tMinimum voltage: ");
++			printf("\tMinimum Voltage: ");
  			dmi_memory_voltage_value(WORD(data + 0x22));
-@@ -3666,6 +3691,18 @@ static void dmi_decode(const struct dmi_
- 			printf("\tConfigured voltage: ");
- 			dmi_memory_voltage_value(WORD(data + 0x26));
  			printf("\n");
-+=======
-+			if (h->length < 0x28) break;
-+			printf("\tMinimum Voltage: ");
-+			dmi_memory_voltage_value(WORD(data + 0x22));
-+			printf("\n");
+-			printf("\tMaximum voltage: ");
 +			printf("\tMaximum Voltage: ");
-+			dmi_memory_voltage_value(WORD(data + 0x24));
-+			printf("\n");
+ 			dmi_memory_voltage_value(WORD(data + 0x24));
+ 			printf("\n");
+-			printf("\tConfigured voltage: ");
 +			printf("\tConfigured Voltage: ");
-+			dmi_memory_voltage_value(WORD(data + 0x26));
-+			printf("\n");
-+>>>>>>> 1.176
+ 			dmi_memory_voltage_value(WORD(data + 0x26));
+ 			printf("\n");
  			break;
- 
- 		case 18: /* 7.19 32-bit Memory Error Information */
-diff -up dmidecode-2.12/README.smbios_fix dmidecode-2.12/README