diff --git a/.gitignore b/.gitignore
index 5e46cfb..eb860fb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 /dmidecode-2.11.tar.bz2
+/dmidecode-2.12.tar.bz2
diff --git a/dmidecode-2.11-chassis_fix.patch b/dmidecode-2.11-chassis_fix.patch
deleted file mode 100644
index f6a1063..0000000
--- a/dmidecode-2.11-chassis_fix.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -up dmidecode-2.11/AUTHORS.chassis_fix dmidecode-2.11/AUTHORS
---- dmidecode-2.11/AUTHORS.chassis_fix	2010-11-24 10:29:09.000000000 +0100
-+++ dmidecode-2.11/AUTHORS	2011-11-14 14:56:08.000000000 +0100
-@@ -81,3 +81,5 @@ Murlin Wenzel
- Harald Mueller-Ney
- Lars Mueller
- Thomas Mingarelli
-+Andrey Matveyev
-+Stefan Tauner
-diff -up dmidecode-2.11/CHANGELOG.chassis_fix dmidecode-2.11/CHANGELOG
---- dmidecode-2.11/CHANGELOG.chassis_fix	2011-11-14 14:56:39.804855909 +0100
-+++ dmidecode-2.11/CHANGELOG	2011-11-14 14:56:15.000000000 +0100
-@@ -1,3 +1,8 @@
-+2011-11-14  Anton Arapov  <anton@redhat.com>
-+
-+	* dmidecode.c: Make dmi_chassis_type aware of the lock bit.
-+	  Patch from Stefan Tauner.
-+
- 2011-04-20  Jean Delvare  <khali@linux-fr.org>
- 
- 	Update to support SMBIOS specification version 2.7.1.
-diff -up dmidecode-2.11/dmidecode.c.chassis_fix dmidecode-2.11/dmidecode.c
---- dmidecode-2.11/dmidecode.c.chassis_fix	2011-11-14 14:56:39.805855910 +0100
-+++ dmidecode-2.11/dmidecode.c	2011-11-14 14:55:12.000000000 +0100
-@@ -532,6 +532,8 @@ static const char *dmi_chassis_type(u8 c
- 		"Blade Enclosing" /* 0x1D */
- 	};
- 
-+	code &= 0x7F; /* bits 6:0 are chassis type, 7th bit is the lock bit */
-+
- 	if (code >= 0x01 && code <= 0x1D)
- 		return type[code - 0x01];
- 	return out_of_spec;
-@@ -3237,7 +3239,7 @@ static void dmi_decode(const struct dmi_
- 			printf("\tManufacturer: %s\n",
- 				dmi_string(h, data[0x04]));
- 			printf("\tType: %s\n",
--				dmi_chassis_type(data[0x05] & 0x7F));
-+				dmi_chassis_type(data[0x05]));
- 			printf("\tLock: %s\n",
- 				dmi_chassis_lock(data[0x05] >> 7));
- 			printf("\tVersion: %s\n",
diff --git a/dmidecode-2.11-dmidecode_fix.patch b/dmidecode-2.11-dmidecode_fix.patch
deleted file mode 100644
index 163f9c9..0000000
--- a/dmidecode-2.11-dmidecode_fix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -up dmidecode-2.11/CHANGELOG.dmidecode_fix dmidecode-2.11/CHANGELOG
---- dmidecode-2.11/CHANGELOG.dmidecode_fix	2012-03-12 10:25:01.980020072 +0100
-+++ dmidecode-2.11/CHANGELOG	2012-03-12 10:25:20.123020332 +0100
-@@ -1,3 +1,8 @@
-+2011-11-18  Jean Delvare  <khali@linux-fr.org>
-+
-+	* dmidecode.c: Properly print the hexadecimal value of invalid
-+	  string characters.
-+
- 2011-11-14  Anton Arapov  <anton@redhat.com>
- 
- 	* dmidecode.c: Make dmi_chassis_type aware of the lock bit.
-diff -up dmidecode-2.11/dmidecode.c.dmidecode_fix dmidecode-2.11/dmidecode.c
---- dmidecode-2.11/dmidecode.c.dmidecode_fix	2012-03-12 10:25:11.261020199 +0100
-+++ dmidecode-2.11/dmidecode.c	2012-03-12 10:25:20.124020332 +0100
-@@ -197,7 +197,7 @@ static void dmi_dump(const struct dmi_he
- 					printf("%s\t", prefix);
- 					for (j = 0; j < 16 && j < l - (row << 4); j++)
- 						printf("%s%02X", j ? " " : "",
--						       s[(row << 4) + j]);
-+						       (unsigned char)s[(row << 4) + j]);
- 					printf("\n");
- 				}
- 				/* String isn't filtered yet so do it now */
diff --git a/dmidecode-2.11-dmioem_hp_fix.patch b/dmidecode-2.11-dmioem_hp_fix.patch
deleted file mode 100644
index afeb490..0000000
--- a/dmidecode-2.11-dmioem_hp_fix.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -up dmidecode-2.11/AUTHORS.dmioem_hp_fix dmidecode-2.11/AUTHORS
---- dmidecode-2.11/AUTHORS.dmioem_hp_fix	2012-03-12 10:26:58.166021817 +0100
-+++ dmidecode-2.11/AUTHORS	2012-03-12 10:27:18.818022115 +0100
-@@ -83,3 +83,4 @@ Lars Mueller
- Thomas Mingarelli
- Andrey Matveyev
- Stefan Tauner
-+Naga Chumbalkar
-diff -up dmidecode-2.11/CHANGELOG.dmioem_hp_fix dmidecode-2.11/CHANGELOG
---- dmidecode-2.11/CHANGELOG.dmioem_hp_fix	2012-03-12 10:27:05.076021906 +0100
-+++ dmidecode-2.11/CHANGELOG	2012-03-12 10:27:18.818022115 +0100
-@@ -1,3 +1,8 @@
-+2012-03-12  Anton Arapov  <anton@redhat.com>
-+
-+	* dmioem.c: Add "PXE" to the HP OEM Type 209 output so it is similar to
-+	  the "iSCSI" description in HP OEM Type 221. Patch from Naga Chumbalkar.
-+
- 2011-11-18  Jean Delvare  <khali@linux-fr.org>
- 
- 	* dmidecode.c: Properly print the hexadecimal value of invalid
-diff -up dmidecode-2.11/dmioem.c.dmioem_hp_fix dmidecode-2.11/dmioem.c
---- dmidecode-2.11/dmioem.c.dmioem_hp_fix	2012-03-12 10:27:13.108022027 +0100
-+++ dmidecode-2.11/dmioem.c	2012-03-12 10:27:18.819022112 +0100
-@@ -83,7 +83,7 @@ static int dmi_decode_hp(const struct dm
- 			 */
- 			printf(h->type == 221 ?
- 				"HP BIOS iSCSI NIC PCI and MAC Information\n" :
--				"HP BIOS NIC PCI and MAC Information\n");
-+				"HP BIOS PXE NIC PCI and MAC Information\n");
- 			nic = 1;
- 			ptr = 4;
- 			while (h->length >= ptr + 8)
diff --git a/dmidecode-2.11-manpage_update.patch b/dmidecode-2.11-manpage_update.patch
deleted file mode 100644
index 42ed2ec..0000000
--- a/dmidecode-2.11-manpage_update.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff -up dmidecode-2.11/CHANGELOG.manpage_update dmidecode-2.11/CHANGELOG
---- dmidecode-2.11/CHANGELOG.manpage_update	2012-03-26 12:55:08.415579519 +0200
-+++ dmidecode-2.11/CHANGELOG	2012-03-26 12:56:48.657586111 +0200
-@@ -1,3 +1,9 @@
-+2012-03-26  Anton Arapov  <anton@redhat.com>
-+
-+	* man/dmidecode.8: Add missing DMI type introduced with SMBIOS 2.7+, and
-+	  include the information about the extra output when dmidecode is run
-+	  on a hardware that has non-supported SMBIOS version.
-+
- 2012-03-12  Anton Arapov  <anton@redhat.com>
- 
- 	* dmioem.c: Add "PXE" to the HP OEM Type 209 output so it is similar to
-diff -up dmidecode-2.11/man/dmidecode.8.manpage_update dmidecode-2.11/man/dmidecode.8
---- dmidecode-2.11/man/dmidecode.8.manpage_update	2012-03-26 12:53:10.185571745 +0200
-+++ dmidecode-2.11/man/dmidecode.8	2012-03-26 12:34:54.000000000 +0200
-@@ -1,4 +1,4 @@
--.TH DMIDECODE 8 "November 2008" "dmidecode"
-+.TH DMIDECODE 8 "March 2012" "dmidecode"
- .SH NAME
- dmidecode \- \s-1DMI\s0 table decoder
- .SH SYNOPSIS
-@@ -127,6 +127,13 @@ Display the version and exit
- .P
- Options --string, --type and --dump-bin
- determine the output format and are mutually exclusive.
-+.P
-+Please note in case of
-+.B dmidecode
-+is run on a system with BIOS that boasts new SMBIOS specification, which
-+is not supported by the tool yet, it will print out relevant message in
-+addition to requested data on the very top of the output. Thus informs the
-+output data is not reliable.
- 
- .SH "DMI TYPES"
- The \s-1SMBIOS\s0 specification defines the following \s-1DMI\s0 types:
-@@ -138,7 +145,7 @@ r l.
- Type	Information
- 0	BIOS
- 1	System
--2	Base Board
-+2	Baseboard
- 3	Chassis
- 4	Processor
- 5	Memory Controller
-@@ -177,7 +184,8 @@ Type	Information
- 38	IPMI Device
- 39	Power Supply
- 40	Additional Information
--41	Onboard Device
-+41	Onboard Devices Extended Information
-+42	Management Controller Host Interface
- .TE
- 
- Additionally, type 126 is used for disabled entries and type 127 is an
diff --git a/dmidecode-2.11-smbios-271.patch b/dmidecode-2.11-smbios-271.patch
deleted file mode 100644
index a8d26f4..0000000
--- a/dmidecode-2.11-smbios-271.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-commit 799a9d8b31f10d7d3d4db1365df409221a5ff413
-Author: Anton Arapov <aarapov@redhat.com>
-Date:   Tue May 3 14:43:42 2011 +0200
-
-    update to smbios 2.7.1
----
- CHANGELOG   |    9 +++++++++
- dmidecode.c |   38 +++++++++++++++++++++++++++++++-------
- 2 files changed, 40 insertions(+), 7 deletions(-)
-
-diff --git a/CHANGELOG b/CHANGELOG
-index de3d7e8..c10f5f4 100644
---- a/CHANGELOG
-+++ b/CHANGELOG
-@@ -1,3 +1,12 @@
-+2011-04-20  Jean Delvare  <khali@linux-fr.org>
-+
-+	Update to support SMBIOS specification version 2.7.1.
-+
-+	* dmidecode.c: Add 6 AMD processor families (DMI type 4).
-+	* dmidecode.c: Add cache associativity value
-+	  "20-way Set-associative" (DMI type 7).
-+	* dmidecode.c: Add PCI Express 3 slot types (DMI type 9).
-+
- 2011-01-25  Jean Delvare  <khali@linux-fr.org>
- 
- 	* dmidecode.c: Fix boundary checks of memory array location codes
-diff --git a/dmidecode.c b/dmidecode.c
-index 7b081f9..f7b23c1 100644
---- a/dmidecode.c
-+++ b/dmidecode.c
-@@ -707,6 +707,8 @@ static const char *dmi_processor_family(const struct dmi_header *h, u16 ver)
- 		{ 0x3A, "Athlon II Dual-Core M" },
- 		{ 0x3B, "Opteron 6100" },
- 		{ 0x3C, "Opteron 4100" },
-+		{ 0x3D, "Opteron 6200" },
-+		{ 0x3E, "Opteron 4200" },
- 
- 		{ 0x40, "MIPS" },
- 		{ 0x41, "MIPS R4000" },
-@@ -714,6 +716,10 @@ static const char *dmi_processor_family(const struct dmi_header *h, u16 ver)
- 		{ 0x43, "MIPS R4400" },
- 		{ 0x44, "MIPS R4600" },
- 		{ 0x45, "MIPS R10000" },
-+		{ 0x46, "C-Series" },
-+		{ 0x47, "E-Series" },
-+		{ 0x48, "S-Series" },
-+		{ 0x49, "G-Series" },
- 
- 		{ 0x50, "SPARC" },
- 		{ 0x51, "SuperSPARC" },
-@@ -997,7 +1003,8 @@ static void dmi_processor_id(u8 type, const u8 *p, const char *version, const ch
- 		sig = 1;
- 	else if ((type >= 0x18 && type <= 0x1D) /* AMD */
- 	      || type == 0x1F /* AMD */
--	      || (type >= 0x38 && type <= 0x3C) /* AMD */
-+	      || (type >= 0x38 && type <= 0x3E) /* AMD */
-+	      || (type >= 0x46 && type <= 0x49) /* AMD */
- 	      || (type >= 0x83 && type <= 0x8F) /* AMD */
- 	      || (type >= 0xB6 && type <= 0xB7) /* AMD */
- 	      || (type >= 0xE6 && type <= 0xEF)) /* AMD */
-@@ -1143,10 +1150,20 @@ static const char *dmi_processor_upgrade(u8 code)
- 		"Socket LGA1156",
- 		"Socket LGA1567",
- 		"Socket PGA988A",
--		"Socket BGA1288" /* 0x20 */
-+		"Socket BGA1288",
-+		"Socket rPGA988B",
-+		"Socket BGA1023",
-+		"Socket BGA1024",
-+		"Socket BGA1155",
-+		"Socket LGA1356",
-+		"Socket LGA2011",
-+		"Socket FS1",
-+		"Socket FS2",
-+		"Socket FM1",
-+		"Socket FM2" /* 0x2A */
- 	};
- 
--	if (code >= 0x01 && code <= 0x20)
-+	if (code >= 0x01 && code <= 0x2A)
- 		return upgrade[code - 0x01];
- 	return out_of_spec;
- }
-@@ -1493,10 +1510,11 @@ static const char *dmi_cache_associativity(u8 code)
- 		"24-way Set-associative",
- 		"32-way Set-associative",
- 		"48-way Set-associative",
--		"64-way Set-associative" /* 0x0D */
-+		"64-way Set-associative",
-+		"20-way Set-associative" /* 0x0E */
- 	};
- 
--	if (code >= 0x01 && code <= 0x0D)
-+	if (code >= 0x01 && code <= 0x0E)
- 		return type[code - 0x01];
- 	return out_of_spec;
- }
-@@ -1660,12 +1678,18 @@ static const char *dmi_slot_type(u8 code)
- 		"PCI Express 2 x2",
- 		"PCI Express 2 x4",
- 		"PCI Express 2 x8",
--		"PCI Express 2 x16", /* 0xB0 */
-+		"PCI Express 2 x16",
-+		"PCI Express 3",
-+		"PCI Express 3 x1",
-+		"PCI Express 3 x2",
-+		"PCI Express 3 x4",
-+		"PCI Express 3 x8",
-+		"PCI Express 3 x16" /* 0xB6 */
- 	};
- 
- 	if (code >= 0x01 && code <= 0x13)
- 		return type[code - 0x01];
--	if (code >= 0xA0 && code <= 0xB0)
-+	if (code >= 0xA0 && code <= 0xB6)
- 		return type_0xA0[code - 0xA0];
- 	return out_of_spec;
- }
diff --git a/dmidecode-2.11-type16-fix.patch b/dmidecode-2.11-type16-fix.patch
deleted file mode 100644
index 04d7fe9..0000000
--- a/dmidecode-2.11-type16-fix.patch
+++ /dev/null
@@ -1,30 +0,0 @@
- CHANGELOG   |    5 +++++
- dmidecode.c |    2 +-
- 2 files changed, 6 insertions(+), 1 deletions(-)
-
-diff --git a/CHANGELOG b/CHANGELOG
-index 0545f8a..de3d7e8 100644
---- a/CHANGELOG
-+++ b/CHANGELOG
-@@ -1,3 +1,8 @@
-+2011-01-25  Jean Delvare  <khali@linux-fr.org>
-+
-+	* dmidecode.c: Fix boundary checks of memory array location codes
-+	  (DMI type 16). Reported by Andrey Matveyev.
-+
- 2010-11-24  Jean Delvare  <khali@linux-fr.org>
- 
- 	* dmidecode.c: Assume that the max power capacity is expressed in
-diff --git a/dmidecode.c b/dmidecode.c
-index 5c7ad0e..7b081f9 100644
---- a/dmidecode.c
-+++ b/dmidecode.c
-@@ -2100,7 +2100,7 @@ static const char *dmi_memory_array_location(u8 code)
- 
- 	if (code >= 0x01 && code <= 0x0A)
- 		return location[code - 0x01];
--	if (code >= 0xA0 && code <= 0xA4)
-+	if (code >= 0xA0 && code <= 0xA3)
- 		return location_0xA0[code - 0xA0];
- 	return out_of_spec;
- }
diff --git a/dmidecode.spec b/dmidecode.spec
index 57de8d9..1b17d5c 100644
--- a/dmidecode.spec
+++ b/dmidecode.spec
@@ -1,18 +1,12 @@
 Summary:        Tool to analyse BIOS DMI data
 Name:           dmidecode
-Version:        2.11
-Release:        10%{?dist}
+Version:        2.12
+Release:        1%{?dist}
 Epoch:          1
 Group:          System Environment/Base
 License:        GPLv2+
 Source0:        %{name}-%{version}.tar.bz2
 URL:            http://www.nongnu.org/dmidecode/
-Patch0:         dmidecode-2.11-type16-fix.patch
-Patch1:         dmidecode-2.11-smbios-271.patch
-Patch2:         dmidecode-2.11-chassis_fix.patch
-Patch3:         dmidecode-2.11-dmidecode_fix.patch
-Patch4:         dmidecode-2.11-dmioem_hp_fix.patch
-Patch5:         dmidecode-2.11-manpage_update.patch
 Buildroot:      %{_tmppath}/%{name}-%{version}-root
 BuildRequires:  automake autoconf
 ExclusiveArch:  %{ix86} x86_64 ia64
@@ -30,12 +24,6 @@ I/O ports (e.g. serial, parallel, USB).
 
 %prep
 %setup -q
-%patch0 -p1 -b .type16_fix
-%patch1 -p1 -b .smbios271
-%patch2 -p1 -b .chassis_fix
-%patch3 -p1 -b .dmidecode_fix
-%patch4 -p1 -b .dmioem_hp_fix
-%patch5 -p1 -b .manpage_update
 
 %build
 make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
@@ -59,6 +47,9 @@ rm -rf ${buildroot}
 %{_mandir}/man8/*
 
 %changelog
+* Wed Apr 17 2013 Anton Arapov <anton@redhat.com> - 1:2:12-1
+- Update to upstream 2.12 release.
+
 * Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:2.11-10
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
 
diff --git a/sources b/sources
index 306bdeb..94ff13b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-535487cc041f2db746587cf40a2059f0  dmidecode-2.11.tar.bz2
+a406f3cbb27736491698697beeddb781  dmidecode-2.12.tar.bz2