diff --git a/dmidecode-2.11-smbios-271.patch b/dmidecode-2.11-smbios-271.patch
new file mode 100644
index 0000000..a8d26f4
--- /dev/null
+++ b/dmidecode-2.11-smbios-271.patch
@@ -0,0 +1,119 @@
+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
new file mode 100644
index 0000000..04d7fe9
--- /dev/null
+++ b/dmidecode-2.11-type16-fix.patch
@@ -0,0 +1,30 @@
+ 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 76209ee..4a220b6 100644
--- a/dmidecode.spec
+++ b/dmidecode.spec
@@ -1,12 +1,14 @@
 Summary:        Tool to analyse BIOS DMI data
 Name:           dmidecode
 Version:        2.11
-Release:        3%{?dist}
+Release:        4%{?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
 Buildroot:      %{_tmppath}/%{name}-%{version}-root
 BuildRequires:  automake autoconf
 ExclusiveArch:  %{ix86} x86_64 ia64
@@ -24,6 +26,8 @@ I/O ports (e.g. serial, parallel, USB).
 
 %prep
 %setup -q
+%patch0 -p1 -b .type16_fix
+%patch1 -p1 -b .smbios271
 
 %build
 make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
@@ -47,6 +51,10 @@ rm -rf ${buildroot}
 %{_mandir}/man8/*
 
 %changelog
+* Tue May 03 2011 Anton Arapov <anton@redhat.com> - 1:2.11-4
+- update to SMBIOS 2.7.1
+- fix the boundaries check in type16
+
 * Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:2.11-3
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild